diff options
Diffstat (limited to 'assets')
-rw-r--r-- | assets/canvas-runtime.js | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/assets/canvas-runtime.js b/assets/canvas-runtime.js index 5ea2a85f..87aac71f 100644 --- a/assets/canvas-runtime.js +++ b/assets/canvas-runtime.js | |||
@@ -830,6 +830,103 @@ function RuntimeRectangle() | |||
830 | } | 830 | } |
831 | 831 | ||
832 | /////////////////////////////////////////////////////////////////////// | 832 | /////////////////////////////////////////////////////////////////////// |
833 | // Class RuntimeLine | ||
834 | /////////////////////////////////////////////////////////////////////// | ||
835 | function RuntimeLine() | ||
836 | { | ||
837 | this.inheritedFrom = RuntimeGeomObj; | ||
838 | this.inheritedFrom(); | ||
839 | |||
840 | this.import = function( jObj ) | ||
841 | { | ||
842 | this._xOffset = jObj.xoff; | ||
843 | this._yOffset = jObj.yoff; | ||
844 | this._width = jObj.width; | ||
845 | this._height = jObj.height; | ||
846 | this._xAdj = jObj.xAdj; | ||
847 | this._yAdj = jObj.yAdj; | ||
848 | this._strokeWidth = jObj.strokeWidth; | ||
849 | this._slope = jObj.slope; | ||
850 | this._strokeStyle = jObj.strokeStyle; | ||
851 | this._strokeColor = jObj.strokeColor; | ||
852 | var strokeMaterialName = jObj.strokeMat; | ||
853 | this.importMaterials( jObj.materials ); | ||
854 | } | ||
855 | |||
856 | this.render = function() | ||
857 | { | ||
858 | // get the world | ||
859 | var world = this.getWorld(); | ||
860 | if (!world) throw( "null world in buildBuffers" ); | ||
861 | |||
862 | // get the context | ||
863 | var ctx = world.get2DContext(); | ||
864 | if (!ctx) return; | ||
865 | |||
866 | // set up the stroke style | ||
867 | var lineWidth = this._strokeWidth, | ||
868 | w = this._width, | ||
869 | h = this._height; | ||
870 | |||
871 | var c, | ||
872 | gradient, | ||
873 | colors, | ||
874 | len, | ||
875 | n, | ||
876 | position, | ||
877 | cs; | ||
878 | |||
879 | ctx.beginPath(); | ||
880 | ctx.lineWidth = lineWidth; | ||
881 | if (this._strokeColor) { | ||
882 | if(this._strokeColor.gradientMode) { | ||
883 | if(this._strokeColor.gradientMode === "radial") { | ||
884 | gradient = ctx.createRadialGradient(w/2, h/2, 0, w/2, h/2, Math.max(w/2, h/2)); | ||
885 | } else { | ||
886 | gradient = ctx.createLinearGradient(0, h/2, w, h/2); | ||
887 | } | ||
888 | colors = this._strokeColor.color; | ||
889 | |||
890 | len = colors.length; | ||
891 | |||
892 | for(n=0; n<len; n++) { | ||
893 | position = colors[n].position/100; | ||
894 | cs = colors[n].value; | ||
895 | gradient.addColorStop(position, "rgba(" + cs.r + "," + cs.g + "," + cs.b + "," + cs.a + ")"); | ||
896 | } | ||
897 | |||
898 | ctx.strokeStyle = gradient; | ||
899 | |||
900 | } else { | ||
901 | c = "rgba(" + 255*this._strokeColor[0] + "," + 255*this._strokeColor[1] + "," + 255*this._strokeColor[2] + "," + this._strokeColor[3] + ")"; | ||
902 | ctx.strokeStyle = c; | ||
903 | } | ||
904 | |||
905 | // get the points | ||
906 | var p0, p1; | ||
907 | if(this._slope === "vertical") { | ||
908 | p0 = [0.5*w, 0]; | ||
909 | p1 = [0.5*w, h]; | ||
910 | } else if(this._slope === "horizontal") { | ||
911 | p0 = [0, 0.5*h]; | ||
912 | p1 = [w, 0.5*h]; | ||
913 | } else if(this._slope > 0) { | ||
914 | p0 = [this._xAdj, this._yAdj]; | ||
915 | p1 = [w - this._xAdj, h - this._yAdj]; | ||
916 | } else { | ||
917 | p0 = [this._xAdj, h - this._yAdj]; | ||
918 | p1 = [w - this._xAdj, this._yAdj]; | ||
919 | } | ||
920 | |||
921 | // draw the line | ||
922 | ctx.moveTo( p0[0], p0[1] ); | ||
923 | ctx.lineTo( p1[0], p1[1] ); | ||
924 | ctx.stroke(); | ||
925 | } | ||
926 | } | ||
927 | } | ||
928 | |||
929 | /////////////////////////////////////////////////////////////////////// | ||
833 | // Class RuntimeOval | 930 | // Class RuntimeOval |
834 | /////////////////////////////////////////////////////////////////////// | 931 | /////////////////////////////////////////////////////////////////////// |
835 | function RuntimeOval() | 932 | function RuntimeOval() |