Changeset 20829
- Timestamp:
- 06/29/16 12:10:32 (9 years ago)
- Location:
- issm/trunk-jpl/src/m/plot
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/plot/applyoptions.js
r20790 r20829 18 18 var colorbarorientiation = options.getfieldvalue('colorbarorientation','vertical'); 19 19 var colorbarinnerlabels = options.getfieldvalue('colorbarinnerlabels','off'); 20 var cheightoffset = options.getfieldvalue('colorbarfontsize',18); 21 var cwidthoffset = options.getfieldvalue('colorbarfontsize',18)*3; 22 var cwidthscale = 0.5; //Default size of actual colorbar width, relative to canvas width (range [0,1]) 23 var cheightscale = 0.875; //Default size of actual colorbar height, relative to canvas height (range [0,1]) 24 var ccontext,ccanvas,ccanvasid,ccanvashtml,cheight,cwidth,color,y,x,cgradient,cmap,colorbar,textAlign,a,b,c,d,e,f,g,h; 25 //}}} 26 //Set colorbar lables {{{ 20 var cheightoffset = options.getfieldvalue('colorbarfontsize',18)*options.getfieldvalue('colorbarheight',1); 21 var ccanvasid,ctitleid,clabelsid,ccanvas,ctitle,clabels,ccontext,cmap,colorbar,cwidth,cheight,cgradient,color,y,x; 22 //}}} 23 //Create colorbar labels {{{ 27 24 var labels = []; 28 25 var cdivisions = options.getfieldvalue('colorbarnticks',6); 29 26 var caxisdelta = caxis[1] - caxis[0]; 30 var clabelitem;31 27 var precision = options.getfieldvalue('colorbarprecision',3); 32 28 if (options.getfieldvalue('log','off')!='off') { … … 40 36 } 41 37 } //}}} 42 ccanvasid = options.getfieldvalue('colorbarid',options.getfieldvalue('canvasid')+'_colorbar'); 43 ccanvashtml = document.getElementById(ccanvasid); 44 ccanvas = $('#'+ccanvasid); 45 ccontext = ccanvas[0].getContext('2d'); 46 ccontext.clearRect(0,0, ccanvashtml.width, ccanvashtml.height); 38 //Initialize colorbar canvas {{{ 39 40 ccanvasid = options.getfieldvalue('colorbarid',options.getfieldvalue('canvasid')+'-colorbar'); 41 ccanvas = $('#'+ccanvasid)[0]; 42 cwidth = ccanvas.width*options.getfieldvalue('colorbarwidth',1); 43 cheight = ccanvas.height*options.getfieldvalue('colorbarheight',1); 44 ccanvas.width = cwidth; 45 ccanvas.height = cheight; 46 ccontext = ccanvas.getContext('2d'); 47 ccontext.clearRect(0,0, cwidth, cheight); 47 48 ccontext.beginPath(); 48 49 cmap = options.getfieldvalue('colormap','jet'); 49 50 colorbar = colorbars[cmap]; 50 //Handle orientation {{{ 51 if (colorbarorientiation=='vertical') { 52 cwidth = ccanvashtml.width*cwidthscale*options.getfieldvalue('colorbarwidth',1); 53 cheight = ccanvashtml.height*cheightscale*options.getfieldvalue('colorbarheight',1); 54 cgradient = ccontext.createLinearGradient(0,cheightoffset/2,0,cheight); 55 textAlign = 'left'; 56 a = 0; 57 b = cheightoffset*3/2; 58 c = 0; 59 } 60 else { 61 cwidth = ccanvashtml.width*0.7*options.getfieldvalue('colorbarwidth',1); 62 cheight = ccanvashtml.height*0.4*options.getfieldvalue('colorbarheight',1); 63 cgradient = ccontext.createLinearGradient(cwidth+cwidthoffset,0,cwidthoffset,0); 64 textAlign = 'center'; 65 a = cwidthoffset; 66 b = cheightoffset; 67 c = cwidth/2+cwidthoffset; 68 } //}}} 69 //Handle internal labels {{{ 70 if (colorbarinnerlabels=='on') { 71 textAlign = 'center'; 72 d = (cdivisions/(cdivisions+1.0)); 73 e = (1.0/(cdivisions+1.0)); 74 f = 2; 75 g = 1; 76 h = cwidth/2; 77 } 78 else { 79 d = 1; 80 e = 0; 81 f = 1; 82 g = 0; 83 h = cwidth+0.2*cwidth; 84 } //}}} 85 51 cgradient = ccontext.createLinearGradient(0,cheightoffset/2,0,cheight); 52 //}}} 53 //Draw colorbar gradient {{{ 86 54 for (var i=0; i < colorbar.length; i++) { 87 55 color = colorbar[colorbar.length-i-1]; 88 56 color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)]; 89 cgradient.addColorStop(i/colorbar.length* d+e,'rgba('+color.toString()+',1.0)');57 cgradient.addColorStop(i/colorbar.length*(cdivisions/(cdivisions+1.0))+(1.0/(cdivisions+1.0)),'rgba('+color.toString()+',1.0)'); 90 58 } 91 59 ccontext.fillStyle=cgradient; 92 ccontext.fillRect( a,b,cwidth,cheight);93 94 //Draw colorbar border 60 ccontext.fillRect(0,0,cwidth,cheight); 61 //}}} 62 //Draw colorbar border {{{ 95 63 ccontext.beginPath(); 96 64 ccontext.lineWidth='1'; 97 65 ccontext.strokeStyle=options.getfieldvalue('colorbarfontcolor','black'); 98 ccontext.rect( a,b,cwidth,cheight);66 ccontext.rect(0,0,cwidth,cheight); 99 67 ccontext.stroke(); 100 101 if (colorbarorientiation=='vertical') { //{{{ 102 for (var i=0; i <= cdivisions; i++) { 103 y = i/(cdivisions+g)*cheight+cheightoffset/2; 104 x = 0.2*cwidth; 105 ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif'; 106 ccontext.fillStyle=options.getfieldvalue('colorbarfontcolor','black'); 107 ccontext.textAlign=textAlign; 108 ccontext.textBaseline='top'; 109 ccontext.fillText(labels[i],h,y+cheightoffset*(g+0.5)); 110 ccontext.beginPath(); 111 ccontext.moveTo(0,y+cheightoffset*f); 112 ccontext.lineTo(x,y+cheightoffset*f); 113 ccontext.moveTo(cwidth-x,y+cheightoffset*f); 114 ccontext.lineTo(cwidth,y+cheightoffset*f); 115 ccontext.stroke(); 116 } 68 //}}} 69 //Draw colorbar labels {{{ 70 clabelsid = options.getfieldvalue('colorbarid',options.getfieldvalue('canvasid')+'-colorbar')+'-labels'; 71 clabels = $('#'+clabelsid); 72 clabels.height(cheight); 73 clabels.css({'color':options.getfieldvalue('colorbarfontcolor','black'), 'font-size':options.getfieldvalue('colorbarfontsize',18)+'px'}); 74 if (colorbarinnerlabels=='on') { 75 clabels.removeClass('sim-colorbar-labels-outer'); 76 clabels.addClass('sim-colorbar-labels-inner'); 117 77 } 118 78 else { 119 for (var i=0; i <= cdivisions; i++) { 120 y = 0.2*cheight; 121 x = i/cdivisions*cwidth; 122 ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif'; 123 ccontext.fillStyle=options.getfieldvalue('colorbarfontcolor','black'); 124 ccontext.textAlign=textAlign; 125 ccontext.fillText(labels[cdivisions-i],x+cwidthoffset,cheight+cheightoffset*2); 126 ccontext.beginPath(); 127 ccontext.moveTo(x+cwidthoffset,cheightoffset); 128 ccontext.lineTo(x+cwidthoffset,y+cheightoffset); 129 ccontext.moveTo(x+cwidthoffset,cheight-y+cheightoffset); 130 ccontext.lineTo(x+cwidthoffset,cheight+cheightoffset); 131 ccontext.stroke(); 132 } 133 } 79 clabels.removeClass('sim-colorbar-labels-inner'); 80 clabels.addClass('sim-colorbar-labels-outer'); 81 } 82 var clabelstring = ''; 83 for (var i=0; i <= cdivisions; i++) { 84 y = i/(cdivisions+1)*cheight; 85 x = 0.2*cwidth; 86 clabelstring += '<li><span>'+labels[i]+'</span></li>'; 87 ccontext.beginPath(); 88 ccontext.moveTo(0,y+cheightoffset*1); 89 ccontext.lineTo(x,y+cheightoffset*1); 90 ccontext.moveTo(cwidth-x,y+cheightoffset*1); 91 ccontext.lineTo(cwidth,y+cheightoffset*1); 92 ccontext.stroke(); 93 } 94 clabels.append(clabelstring); 95 //}}} 96 //Draw colorbar title {{{ 97 ctitleid = options.getfieldvalue('colorbarid',options.getfieldvalue('canvasid')+'-colorbar')+'-title'; 98 ctitle = $('#'+ctitleid); 99 ctitle.width(cwidth); 134 100 if (options.exist('colorbartitle')) { 135 ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif'; 136 ccontext.fillStyle=options.getfieldvalue('colorbarfontcolor','black'); 137 ccontext.textAlign='left'; 138 ccontext.textBaseline='bottom'; 139 ccontext.fillText(options.getfieldvalue('colorbartitle'),c,cheightoffset); 101 ctitle.html(options.getfieldvalue('colorbartitle')); 102 ctitle.css({'color':options.getfieldvalue('colorbarfontcolor','black'), 'font-size':options.getfieldvalue('colorbarfontsize',18)+'px'}); 140 103 } //}}} 141 //}}}142 104 } 143 } 144 //}}} 105 } //}}} 145 106 //texture canvas //{{{ 146 107 var tcontext,tcanvas,tcanvasid,tcanvashtml,tURL,tgradient; -
issm/trunk-jpl/src/m/plot/plotdoc.js
r20790 r20829 23 23 console.log(' "colorbarnticks": number of colorbar ticks (default 6, ex: 2, 10)'); 24 24 console.log(' "colorbarprecision": colorbar label digit precision (default 3, ex: 1, 4)'); 25 console.log(' "colorbarorientation": oreintation of colorbar (default "vertical", ex: "horizontal")');26 25 console.log(' "colorbarinnerlabels": choose whether labels are inside colorbar (default "off", ex: "on", "off")'); 27 26 console.log(' "colorbarfontsize": specify colorbar font size (default 1, ex: 14, 22)');
Note:
See TracChangeset
for help on using the changeset viewer.