diff options
Diffstat (limited to 'js/lib/geom/line.js')
-rwxr-xr-x | js/lib/geom/line.js | 914 |
1 files changed, 456 insertions, 458 deletions
diff --git a/js/lib/geom/line.js b/js/lib/geom/line.js index bb198d83..3c811698 100755 --- a/js/lib/geom/line.js +++ b/js/lib/geom/line.js | |||
@@ -12,500 +12,498 @@ var MaterialsModel = require("js/models/materials-model").MaterialsModel; | |||
12 | // GL representation of a line. | 12 | // GL representation of a line. |
13 | // Derived from class GeomObj | 13 | // Derived from class GeomObj |
14 | /////////////////////////////////////////////////////////////////////// | 14 | /////////////////////////////////////////////////////////////////////// |
15 | var Line = function GLLine( world, xOffset, yOffset, width, height, slope, strokeSize, strokeColor, strokeMaterial, strokeStyle, xAdj, yAdj) { | 15 | exports.Line = Object.create(GeomObj, { |
16 | /////////////////////////////////////////////////////////////////////// | 16 | /////////////////////////////////////////////////////////////////////// |
17 | // Instance variables | 17 | // Instance variables |
18 | /////////////////////////////////////////////////////////////////////// | 18 | /////////////////////////////////////////////////////////////////////// |
19 | this._width = 2.0; | 19 | _width: { value : 2.0, writable: true }, |
20 | this._height = 2.0; | 20 | _height: { value : 2.0, writable: true }, |
21 | this._xOffset = 0; | 21 | _xOffset: { value : 0, writable: true }, |
22 | this._yOffset = 0; | 22 | _yOffset: { value : 0, writable: true }, |
23 | 23 | ||
24 | // If line doesn't fit in canvas world, we had to grow the canvas by this much on either side | 24 | // If line doesn't fit in canvas world, we had to grow the canvas by this much on either side |
25 | this._xAdj = 0; | 25 | _xAdj: { value : 0, writable: true }, |
26 | this._yAdj = 0; | 26 | _yAdj: { value : 0, writable: true }, |
27 | |||
28 | this._slope = 0; | ||
29 | 27 | ||
30 | this._strokeWidth = 0.25; | 28 | _slope: { value : 0, writable: true }, |
31 | 29 | ||
32 | this._strokeStyle = "Solid"; | 30 | _strokeWidth: { value : 0.25, writable: true }, |
33 | this._scaleX = 1.0; | 31 | _strokeStyle: { value : "Solid", writable: true }, |
34 | this._scaleY = 1.0; | ||
35 | 32 | ||
36 | this.canFill = false; | 33 | _scaleX: { value : 1.0, writable: true }, |
34 | _scaleY: { value : 1.0, writable: true }, | ||
37 | 35 | ||
38 | if (arguments.length > 0) { | 36 | canFill: { value : false, writable: false }, |
39 | this._width = width; | ||
40 | this._height = height; | ||
41 | this._xOffset = xOffset; | ||
42 | this._yOffset = yOffset; | ||
43 | 37 | ||
44 | this._xAdj = xAdj; | 38 | init: { |
45 | this._yAdj = yAdj; | 39 | value: function(world, xOffset, yOffset, width, height, slope, strokeSize, strokeColor, strokeMaterial, strokeStyle, xAdj, yAdj) { |
40 | if (arguments.length > 0) { | ||
41 | this._width = width; | ||
42 | this._height = height; | ||
43 | this._xOffset = xOffset; | ||
44 | this._yOffset = yOffset; | ||
46 | 45 | ||
47 | this._slope = slope; | 46 | this._xAdj = xAdj; |
48 | this._strokeWidth = strokeSize; | 47 | this._yAdj = yAdj; |
49 | this._strokeColor = strokeColor; | ||
50 | 48 | ||
51 | this._strokeStyle = strokeStyle; | 49 | this._slope = slope; |
52 | this._scaleX = (world.getViewportWidth())/(world.getViewportHeight()); | 50 | this._strokeWidth = strokeSize; |
53 | } | 51 | this._strokeColor = strokeColor; |
54 | 52 | ||
55 | this._strokeVerticesLen = 0; | 53 | this._strokeStyle = strokeStyle; |
54 | this._scaleX = (world.getViewportWidth())/(world.getViewportHeight()); | ||
55 | } | ||
56 | 56 | ||
57 | this.m_world = world; | 57 | this._strokeVerticesLen = 0; |
58 | 58 | ||
59 | this._materialAmbient = [0.2, 0.2, 0.2, 1.0]; | 59 | this.m_world = world; |
60 | this._materialDiffuse = [0.4, 0.4, 0.4, 1.0]; | ||
61 | this._materialSpecular = [0.4, 0.4, 0.4, 1.0]; | ||
62 | 60 | ||
63 | if(strokeMaterial) { | 61 | this._materialAmbient = [0.2, 0.2, 0.2, 1.0]; |
64 | this._strokeMaterial = strokeMaterial; | 62 | this._materialDiffuse = [0.4, 0.4, 0.4, 1.0]; |
65 | } | 63 | this._materialSpecular = [0.4, 0.4, 0.4, 1.0]; |
66 | 64 | ||
67 | /////////////////////////////////////////////////////////////////////// | 65 | if(strokeMaterial) { |
68 | // Property Accessors | 66 | this._strokeMaterial = strokeMaterial; |
69 | /////////////////////////////////////////////////////////////////////// | 67 | } |
70 | this.getStrokeWidth = function() { return this._strokeWidth; } | 68 | } |
71 | this.setStrokeWidth = function(w) { this._strokeWidth = w; } | 69 | }, |
70 | |||
71 | //////////////////////////////////////////////////////////////////////// | ||
72 | // Property Accessors | ||
73 | /////////////////////////////////////////////////////////////////////// | ||
74 | // TODO - Use getters/setters in the future | ||
75 | getStrokeWidth: { | ||
76 | value: function() { | ||
77 | return this._strokeWidth; | ||
78 | } | ||
79 | }, | ||
80 | |||
81 | setStrokeWidth: { | ||
82 | value: function(w) { | ||
83 | this._strokeWidth = w; | ||
84 | } | ||
85 | }, | ||
86 | |||
87 | getStrokeMaterial: { | ||
88 | value: function() { | ||
89 | return this._strokeMaterial; | ||
90 | } | ||
91 | }, | ||
92 | |||
93 | setStrokeMaterial: { | ||
94 | value: function(m) { | ||
95 | this._strokeMaterial = m; | ||
96 | } | ||
97 | }, | ||
72 | 98 | ||
73 | this.getStrokeMaterial = function() { return this._strokeMaterial; } | 99 | getFillMaterial: { |
74 | this.setStrokeMaterial = function(m) { this._strokeMaterial = m; } | 100 | value: function() { |
101 | return null; | ||
102 | } | ||
103 | }, | ||
75 | 104 | ||
76 | this.getStrokeColor = function() { return this._strokeColor; } | 105 | getStrokeColor: { |
77 | //this.setStrokeColor = function(c) { this._strokeColor = c; } | 106 | value: function() { |
107 | return this._strokeColor; | ||
108 | } | ||
109 | }, | ||
78 | 110 | ||
79 | this.getStrokeStyle = function() { return this._strokeStyle; } | 111 | // setStrokeColor: { |
80 | this.setStrokeStyle = function(s) { this._strokeStyle = s; } | 112 | // value: function(c) { |
113 | // this._strokeColor = c; | ||
114 | // } | ||
115 | // }, | ||
81 | 116 | ||
82 | this.getFillMaterial = function() { return null; } | 117 | getStrokeStyle: { |
83 | 118 | value: function() { | |
84 | this.setStrokeMaterial = function(m) { this._strokeMaterial = m; } | 119 | return this._strokeStyle; |
85 | this.getStrokeMaterial = function() { return this._strokeMaterial; } | 120 | } |
121 | }, | ||
86 | 122 | ||
87 | this.getWidth = function() { return this._width; } | 123 | setStrokeStyle: { |
88 | this.setWidth = function(w) { this._width = w; } | 124 | value: function(s) { |
125 | this._strokeStyle = s; | ||
126 | } | ||
127 | }, | ||
89 | 128 | ||
90 | this.getHeight = function() { return this._height; } | 129 | getWidth: { |
91 | this.setHeight = function(h) { this._height = h; } | 130 | value: function() { |
131 | return this._width; | ||
132 | } | ||
133 | }, | ||
134 | |||
135 | setWidth: { | ||
136 | value: function(w) { | ||
137 | this._width = w; | ||
138 | } | ||
139 | }, | ||
92 | 140 | ||
93 | this.getXAdj = function() { return this._xAdj; } | 141 | getHeight: { |
94 | this.setXAdj = function(x) { this._xAdj = x; } | 142 | value: function() { |
143 | return this._height; | ||
144 | } | ||
145 | }, | ||
95 | 146 | ||
96 | this.getYAdj = function() { return this._yAdj; } | 147 | setHeight: { |
97 | this.setYAdj = function(y) { this._yAdj = y; } | 148 | value: function(h) { |
149 | this._height = h; | ||
150 | } | ||
151 | }, | ||
98 | 152 | ||
99 | this.getSlope = function() { return this._slope; } | 153 | getXAdj: { |
100 | this.setSlope = function(m) { this._slope = m; } | 154 | value: function() { |
155 | return this._xAdj; | ||
156 | } | ||
157 | }, | ||
101 | 158 | ||
102 | this.geomType = function() { return this.GEOM_TYPE_LINE; } | 159 | setXAdj: { |
160 | value: function(x) { | ||
161 | this._xAdj = x; | ||
162 | } | ||
163 | }, | ||
103 | 164 | ||
104 | /////////////////////////////////////////////////////////////////////// | 165 | getYAdj: { |
105 | // Methods | 166 | value: function() { |
106 | /////////////////////////////////////////////////////////////////////// | 167 | return this._yAdj; |
107 | this.exportJSON = function() | ||
108 | { | ||
109 | var jObj = | ||
110 | { | ||
111 | 'type' : this.geomType(), | ||
112 | 'xoff' : this._xOffset, | ||
113 | 'yoff' : this._yOffset, | ||
114 | 'width' : this._width, | ||
115 | 'height' : this._height, | ||
116 | 'xAdj' : this._xAdj, | ||
117 | 'yAdj' : this._yAdj, | ||
118 | 'slope' : this._slope, | ||
119 | 'strokeWidth' : this._strokeWidth, | ||
120 | 'strokeColor' : this._strokeColor, | ||
121 | 'strokeStyle' : this._strokeStyle, | ||
122 | 'strokeMat' : this._strokeMaterial ? this._strokeMaterial.getName() : MaterialsModel.getDefaultMaterialName(), | ||
123 | 'materials' : this.exportMaterialsJSON() | ||
124 | }; | ||
125 | |||
126 | return jObj; | ||
127 | }; | ||
128 | |||
129 | this.importJSON = function( jObj ) | ||
130 | { | ||
131 | this._xOffset = jObj.xoff; | ||
132 | this._yOffset = jObj.yoff; | ||