diff options
Diffstat (limited to 'js/lib')
-rwxr-xr-x | js/lib/geom/brush-stroke.js | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/js/lib/geom/brush-stroke.js b/js/lib/geom/brush-stroke.js index 574cead1..a1746d95 100755 --- a/js/lib/geom/brush-stroke.js +++ b/js/lib/geom/brush-stroke.js | |||
@@ -637,7 +637,7 @@ var BrushStroke = function GLBrushStroke() { | |||
637 | //build the stamp for the brush stroke | 637 | //build the stamp for the brush stroke |
638 | var t=0; | 638 | var t=0; |
639 | var numTraces = this._strokeWidth; | 639 | var numTraces = this._strokeWidth; |
640 | var halfNumTraces = numTraces/2; | 640 | var halfNumTraces = numTraces*0.5; |
641 | var opaqueRegionHalfWidth = 0.5*this._strokeHardness*numTraces*0.01; //the 0.01 is to convert the strokeHardness from [0,100] to [0,1] | 641 | var opaqueRegionHalfWidth = 0.5*this._strokeHardness*numTraces*0.01; //the 0.01 is to convert the strokeHardness from [0,100] to [0,1] |
642 | var maxTransparentRegionHalfWidth = halfNumTraces-opaqueRegionHalfWidth; | 642 | var maxTransparentRegionHalfWidth = halfNumTraces-opaqueRegionHalfWidth; |
643 | 643 | ||
@@ -658,21 +658,21 @@ var BrushStroke = function GLBrushStroke() { | |||
658 | ctx.globalCompositeOperation = 'source-over'; | 658 | ctx.globalCompositeOperation = 'source-over'; |
659 | ctx.globalAlpha = this._strokeColor[3]; | 659 | ctx.globalAlpha = this._strokeColor[3]; |
660 | 660 | ||
661 | |||
662 | for (t=0;t<numTraces;t++){ | 661 | for (t=0;t<numTraces;t++){ |
663 | var disp = [brushStamp[t][0], brushStamp[t][1]]; | 662 | var disp = [brushStamp[t][0], brushStamp[t][1]]; |
664 | var alphaVal = 1.0; | 663 | var alphaVal = 1.0; |
665 | var distFromOpaqueRegion = Math.abs(t-halfNumTraces) - opaqueRegionHalfWidth; | 664 | var distFromOpaqueRegion = Math.abs(t-halfNumTraces) - opaqueRegionHalfWidth; |
666 | if (distFromOpaqueRegion>0) { | 665 | if (distFromOpaqueRegion>0) { |
667 | alphaVal = 1.0 - distFromOpaqueRegion/maxTransparentRegionHalfWidth; | 666 | var transparencyFactor = distFromOpaqueRegion/maxTransparentRegionHalfWidth; |
668 | alphaVal *= 1.0/ctx.lineWidth; //factor that accounts for lineWidth !== 1 | 667 | alphaVal = 1.0 - transparencyFactor;//(transparencyFactor*transparencyFactor);//the square term produces nonlinearly varying alpha values |
669 | } | 668 | } |
670 | ctx.save(); | 669 | ctx.save(); |
671 | if (t === (numTraces-1)){ | 670 | if (t === (numTraces-1) || t === 0){ |
672 | ctx.lineWidth = 1; | 671 | ctx.lineWidth = 1; |
673 | } else { | 672 | } else { |
674 | //todo figure out the correct formula for the line width | 673 | //todo figure out the correct formula for the line width |
675 | ctx.lineWidth=2; | 674 | ctx.lineWidth=2; |
675 | alphaVal *= 0.5; //factor that accounts for lineWidth == 2 | ||
676 | } | 676 | } |
677 | ctx.strokeStyle="rgba("+parseInt(255*this._strokeColor[0])+","+parseInt(255*this._strokeColor[1])+","+parseInt(255*this._strokeColor[2])+","+alphaVal+")"; | 677 | ctx.strokeStyle="rgba("+parseInt(255*this._strokeColor[0])+","+parseInt(255*this._strokeColor[1])+","+parseInt(255*this._strokeColor[2])+","+alphaVal+")"; |
678 | //linearly interpolate between the two stroke colors | 678 | //linearly interpolate between the two stroke colors |