grumpytoad / Canvas/NME (http://flashsandy.org/haxe)
A re-implementation of NME for use with the HTML5 canvas element on the javascript target. Currently implemented against Neash. This project is no longer actively maintained against the current neash version.
$ hg clone http://bitbucket.org/grumpytoad/canvas-nme/
| commit 1: | 101bf7319a53 |
| parent 0: | 5a5ae1522633 |
| branch: | default |
Changed (Δ10.1 KB):
canvas/FontHandle.hx (49 lines added, 0 lines removed)
canvas/KeyCode.hx (257 lines added, 0 lines removed)
canvas/Manager.hx (5 lines added, 1 lines removed)
canvas/display/Graphics.hx (7 lines added, 4 lines removed)
Up to file-list canvas/FontHandle.hx:
1 |
package canvas; |
|
2 |
import Type; |
|
3 |
||
4 |
||
5 |
typedef FontMetrics = |
|
6 |
{ |
|
7 |
var height:Int; |
|
8 |
var ascent:Int; |
|
9 |
var descent:Int; |
|
10 |
var max_x_advance:Int; |
|
11 |
} |
|
12 |
||
13 |
typedef GlyphMetrics = |
|
14 |
{ |
|
15 |
var min_x: Int; |
|
16 |
var max_x: Int; |
|
17 |
var width: Int; |
|
18 |
var height : Int; |
|
19 |
var x_advance: Int; |
|
20 |
} |
|
21 |
||
22 |
||
23 |
class FontHandle |
|
24 |
{ |
|
25 |
public var handle(get_handle,null):Dynamic; |
|
26 |
var mHandle:Dynamic; |
|
27 |
||
28 |
public function new(inName:String, inSize:Int) |
|
29 |
{ |
|
30 |
throw "Not implemented. new Fonthandle."; |
|
31 |
} |
|
32 |
||
33 |
public function GetGlyphMetrics(inChar:Dynamic) : GlyphMetrics |
|
34 |
{ |
|
35 |
var c : Int = Type.typeof(inChar) == ValueType.TInt ? inChar : |
|
36 |
inChar.charCodeAt(0) ; |
|
37 |
throw "Not implemented. GetGlyphMetrics."; |
|
38 |
return null; |
|
39 |
} |
|
40 |
||
41 |
public function GetFontMetrics() : FontMetrics |
|
42 |
{ |
|
43 |
throw "Not implemented. GetFontMetrics."; |
|
44 |
return null; |
|
45 |
} |
|
46 |
||
47 |
public function get_handle() : Dynamic { return mHandle; } |
|
48 |
||
49 |
} |
Up to file-list canvas/KeyCode.hx:
1 |
package canvas; |
|
2 |
||
3 |
class KeyCode |
|
4 |
{ |
|
5 |
/* The keyboard syms have been cleverly chosen to map to ASCII */ |
|
6 |
public static var UNKNOWN = 0; |
|
7 |
public static var FIRST = 0; |
|
8 |
public static var BACKSPACE = 8; |
|
9 |
public static var TAB = 9; |
|
10 |
public static var CLEAR = 12; |
|
11 |
public static var RETURN = 13; |
|
12 |
public static var PAUSE = 19; |
|
13 |
public static var ESCAPE = 27; |
|
14 |
public static var SPACE = 32; |
|
15 |
public static var EXCLAIM = 33; |
|
16 |
public static var QUOTEDBL = 34; |
|
17 |
public static var HASH = 35; |
|
18 |
public static var DOLLAR = 36; |
|
19 |
public static var AMPERSAND = 38; |
|
20 |
public static var QUOTE = 39; |
|
21 |
public static var LEFTPAREN = 40; |
|
22 |
public static var RIGHTPAREN = 41; |
|
23 |
public static var ASTERISK = 42; |
|
24 |
public static var PLUS = 43; |
|
25 |
public static var COMMA = 44; |
|
26 |
public static var MINUS = 45; |
|
27 |
public static var PERIOD = 46; |
|
28 |
public static var SLASH = 47; |
|
29 |
public static var KEY_0 = 48; |
|
30 |
public static var KEY_1 = 49; |
|
31 |
public static var KEY_2 = 50; |
|
32 |
public static var KEY_3 = 51; |
|
33 |
public static var KEY_4 = 52; |
|
34 |
public static var KEY_5 = 53; |
|
35 |
public static var KEY_6 = 54; |
|
36 |
public static var KEY_7 = 55; |
|
37 |
public static var KEY_8 = 56; |
|
38 |
public static var KEY_9 = 57; |
|
39 |
public static var COLON = 58; |
|
40 |
public static var SEMICOLON = 59; |
|
41 |
public static var LESS = 60; |
|
42 |
public static var EQUALS = 61; |
|
43 |
public static var GREATER = 62; |
|
44 |
public static var QUESTION = 63; |
|
45 |
public static var AT = 64; |
|
46 |
/* |
|
47 |
Skip uppercase letters |
|
48 |
*/ |
|
49 |
public static var LEFTBRACKET = 91; |
|
50 |
public static var BACKSLASH = 92; |
|
51 |
public static var RIGHTBRACKET = 93; |
|
52 |
public static var CARET = 94; |
|
53 |
public static var UNDERSCORE = 95; |
|
54 |
public static var BACKQUOTE = 96; |
|
55 |
public static var a = 97; |
|
56 |
public static var b = 98; |
|
57 |
public static var c = 99; |
|
58 |
public static var d = 100; |
|
59 |
public static var e = 101; |
|
60 |
public static var f = 102; |
|
61 |
public static var g = 103; |
|
62 |
public static var h = 104; |
|
63 |
public static var i = 105; |
|
64 |
public static var j = 106; |
|
65 |
public static var k = 107; |
|
66 |
public static var l = 108; |
|
67 |
public static var m = 109; |
|
68 |
public static var n = 110; |
|
69 |
public static var o = 111; |
|
70 |
public static var p = 112; |
|
71 |
public static var q = 113; |
|
72 |
public static var r = 114; |
|
73 |
public static var s = 115; |
|
74 |
public static var t = 116; |
|
75 |
public static var u = 117; |
|
76 |
public static var v = 118; |
|
77 |
public static var w = 119; |
|
78 |
public static var x = 120; |
|
79 |
public static var y = 121; |
|
80 |
public static var z = 122; |
|
81 |
public static var DELETE = 127; |
|
82 |
/* End of ASCII mapped keysyms */ |
|
83 |
||
84 |
/* International keyboard syms */ |
|
85 |
public static var WORLD_0 = 160; /* 0xA0 */ |
|
86 |
public static var WORLD_1 = 161; |
|
87 |
public static var WORLD_2 = 162; |
|
88 |
public static var WORLD_3 = 163; |
|
89 |
public static var WORLD_4 = 164; |
|
90 |
public static var WORLD_5 = 165; |
|
91 |
public static var WORLD_6 = 166; |
|
92 |
public static var WORLD_7 = 167; |
|
93 |
public static var WORLD_8 = 168; |
|
94 |
public static var WORLD_9 = 169; |
|
95 |
public static var WORLD_10 = 170; |
|
96 |
public static var WORLD_11 = 171; |
|
97 |
public static var WORLD_12 = 172; |
|
98 |
public static var WORLD_13 = 173; |
|
99 |
public static var WORLD_14 = 174; |
|
100 |
public static var WORLD_15 = 175; |
|
101 |
public static var WORLD_16 = 176; |
|
102 |
public static var WORLD_17 = 177; |
|
103 |
public static var WORLD_18 = 178; |
|
104 |
public static var WORLD_19 = 179; |
|
105 |
public static var WORLD_20 = 180; |
|
106 |
public static var WORLD_21 = 181; |
|
107 |
public static var WORLD_22 = 182; |
|
108 |
public static var WORLD_23 = 183; |
|
109 |
public static var WORLD_24 = 184; |
|
110 |
public static var WORLD_25 = 185; |
|
111 |
public static var WORLD_26 = 186; |
|
112 |
public static var WORLD_27 = 187; |
|
113 |
public static var WORLD_28 = 188; |
|
114 |
public static var WORLD_29 = 189; |
|
115 |
public static var WORLD_30 = 190; |
|
116 |
public static var WORLD_31 = 191; |
|
117 |
public static var WORLD_32 = 192; |
|
118 |
public static var WORLD_33 = 193; |
|
119 |
public static var WORLD_34 = 194; |
|
120 |
public static var WORLD_35 = 195; |
|
121 |
public static var WORLD_36 = 196; |
|
122 |
public static var WORLD_37 = 197; |
|
123 |
public static var WORLD_38 = 198; |
|
124 |
public static var WORLD_39 = 199; |
|
125 |
public static var WORLD_40 = 200; |
|
126 |
public static var WORLD_41 = 201; |
|
127 |
public static var WORLD_42 = 202; |
|
128 |
public static var WORLD_43 = 203; |
|
129 |
public static var WORLD_44 = 204; |
|
130 |
public static var WORLD_45 = 205; |
|
131 |
public static var WORLD_46 = 206; |
|
132 |
public static var WORLD_47 = 207; |
|
133 |
public static var WORLD_48 = 208; |
|
134 |
public static var WORLD_49 = 209; |
|
135 |
public static var WORLD_50 = 210; |
|
136 |
public static var WORLD_51 = 211; |
|
137 |
public static var WORLD_52 = 212; |
|
138 |
public static var WORLD_53 = 213; |
|
139 |
public static var WORLD_54 = 214; |
|
140 |
public static var WORLD_55 = 215; |
|
141 |
public static var WORLD_56 = 216; |
|
142 |
public static var WORLD_57 = 217; |
|
143 |
public static var WORLD_58 = 218; |
|
144 |
public static var WORLD_59 = 219; |
|
145 |
public static var WORLD_60 = 220; |
|
146 |
public static var WORLD_61 = 221; |
|
147 |
public static var WORLD_62 = 222; |
|
148 |
public static var WORLD_63 = 223; |
|
149 |
public static var WORLD_64 = 224; |
|
150 |
public static var WORLD_65 = 225; |
|
151 |
public static var WORLD_66 = 226; |
|
152 |
public static var WORLD_67 = 227; |
|
153 |
public static var WORLD_68 = 228; |
|
154 |
public static var WORLD_69 = 229; |
|
155 |
public static var WORLD_70 = 230; |
|
156 |
public static var WORLD_71 = 231; |
|
157 |
public static var WORLD_72 = 232; |
|
158 |
public static var WORLD_73 = 233; |
|
159 |
public static var WORLD_74 = 234; |
|
160 |
public static var WORLD_75 = 235; |
|
161 |
public static var WORLD_76 = 236; |
|
162 |
public static var WORLD_77 = 237; |
|
163 |
public static var WORLD_78 = 238; |
|
164 |
public static var WORLD_79 = 239; |
|
165 |
public static var WORLD_80 = 240; |
|
166 |
public static var WORLD_81 = 241; |
|
167 |
public static var WORLD_82 = 242; |
|
168 |
public static var WORLD_83 = 243; |
|
169 |
public static var WORLD_84 = 244; |
|
170 |
public static var WORLD_85 = 245; |
|
171 |
public static var WORLD_86 = 246; |
|
172 |
public static var WORLD_87 = 247; |
|
173 |
public static var WORLD_88 = 248; |
|
174 |
public static var WORLD_89 = 249; |
|
175 |
public static var WORLD_90 = 250; |
|
176 |
public static var WORLD_91 = 251; |
|
177 |
public static var WORLD_92 = 252; |
|
178 |
public static var WORLD_93 = 253; |
|
179 |
public static var WORLD_94 = 254; |
|
180 |
public static var WORLD_95 = 255; /* 0xFF */ |
|
181 |
||
182 |
/* Numeric keypad */ |
|
183 |
public static var KP0 = 256; |
|
184 |
public static var KP1 = 257; |
|
185 |
public static var KP2 = 258; |
|
186 |
public static var KP3 = 259; |
|
187 |
public static var KP4 = 260; |
|
188 |
public static var KP5 = 261; |
|
189 |
public static var KP6 = 262; |
|
190 |
public static var KP7 = 263; |
|
191 |
public static var KP8 = 264; |
|
192 |
public static var KP9 = 265; |
|
193 |
public static var KP_PERIOD = 266; |
|
194 |
public static var KP_DIVIDE = 267; |
|
195 |
public static var KP_MULTIPLY = 268; |
|
196 |
public static var KP_MINUS = 269; |
|
197 |
public static var KP_PLUS = 270; |
|
198 |
public static var KP_ENTER = 271; |
|
199 |
public static var KP_EQUALS = 272; |
|
200 |
||
201 |
/* Arrows + Home/End pad */ |
|
202 |
public static var UP = 273; |
|
203 |
public static var DOWN = 274; |
|
204 |
public static var RIGHT = 275; |
|
205 |
public static var LEFT = 276; |
|
206 |
public static var INSERT = 277; |
|
207 |
public static var HOME = 278; |
|
208 |
public static var END = 279; |
|
209 |
public static var PAGEUP = 280; |
|
210 |
public static var PAGEDOWN = 281; |
|
211 |
||
212 |
/* Function keys */ |
|
213 |
public static var F1 = 282; |
|
214 |
public static var F2 = 283; |
|
215 |
public static var F3 = 284; |
|
216 |
public static var F4 = 285; |
|
217 |
public static var F5 = 286; |
|
218 |
public static var F6 = 287; |
|
219 |
public static var F7 = 288; |
|
220 |
public static var F8 = 289; |
|
221 |
public static var F9 = 290; |
|
222 |
public static var F10 = 291; |
|
223 |
public static var F11 = 292; |
|
224 |
public static var F12 = 293; |
|
225 |
public static var F13 = 294; |
|
226 |
public static var F14 = 295; |
|
227 |
public static var F15 = 296; |
|
228 |
||
229 |
/* Key state modifier keys */ |
|
230 |
public static var NUMLOCK = 300; |
|
231 |
public static var CAPSLOCK = 301; |
|
232 |
public static var SCROLLOCK = 302; |
|
233 |
public static var RSHIFT = 303; |
|
234 |
public static var LSHIFT = 304; |
|
235 |
public static var RCTRL = 305; |
|
236 |
public static var LCTRL = 306; |
|
237 |
public static var RALT = 307; |
|
238 |
public static var LALT = 308; |
|
239 |
public static var RMETA = 309; |
|
240 |
public static var LMETA = 310; |
|
241 |
public static var LSUPER = 311; /* Left "Windows" key */ |
|
242 |
public static var RSUPER = 312; /* Right "Windows" key */ |
|
243 |
public static var MODE = 313; /* "Alt Gr" key */ |
|
244 |
public static var COMPOSE = 314; /* Multi-key compose key */ |
|
245 |
||
246 |
/* Miscellaneous function keys */ |
|
247 |
public static var HELP = 315; |
|
248 |
public static var PRINT = 316; |
|
249 |
public static var SYSREQ = 317; |
|
250 |
public static var BREAK = 318; |
|
251 |
public static var MENU = 319; |
|
252 |
public static var POWER = 320; /* Power Macintosh power key */ |
|
253 |
public static var EURO = 321; /* Some european keyboards */ |
|
254 |
public static var UNDO = 322; /* Atari keyboard has Undo */ |
|
255 |
||
256 |
} |
|
257 |
Up to file-list canvas/Manager.hx:
| … | … | @@ -166,7 +166,11 @@ class Manager |
166 |
166 |
|
167 |
167 |
public static function SetCursor(inCursor:Int) |
168 |
168 |
{ |
169 |
|
|
169 |
if ( inCursor == 0 ) { |
|
170 |
__scr.style.cursor = 'url("blank.cur"), pointer'; |
|
171 |
} else { |
|
172 |
__scr.style.cursor = 'auto'; |
|
173 |
} |
|
170 |
174 |
} |
171 |
175 |
|
172 |
176 |
static public function GetMouse() : canvas.geom.Point |
Up to file-list canvas/display/Graphics.hx:
| … | … | @@ -224,8 +224,8 @@ class Graphics |
224 |
224 |
var ctx = Manager.getScreen(); |
225 |
225 |
|
226 |
226 |
ctx.translate( inMatrix.tx, inMatrix.ty ); |
227 |
//ctx.setTransform( inMatrix.a, inMatrix.b, inMatrix.c, inMatrix.d, inMatrix.tx, inMatrix.ty ); |
|
228 |
227 |
for ( d in mDrawList ) { |
228 |
ctx.save(); |
|
229 |
229 |
ctx.beginPath(); |
230 |
230 |
for ( p in d.points ) { |
231 |
231 |
switch (p.type) { |
| … | … | @@ -250,6 +250,8 @@ class Graphics |
250 |
250 |
ctx.fillStyle = '#' + StringTools.hex( fillColour, 6 ); |
251 |
251 |
ctx.fill(); |
252 |
252 |
} |
253 |
ctx.restore(); |
|
254 |
||
253 |
255 |
var bitmap = d.bitmap; |
254 |
256 |
if ( bitmap != null ) { |
255 |
257 |
ctx.save(); |
| … | … | @@ -261,7 +263,8 @@ class Graphics |
261 |
263 |
// other browsers do not and must decompose the drawing matrix |
262 |
264 |
|
263 |
265 |
try { |
264 |
ctx. |
|
266 |
ctx.transform( matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty ); |
|
267 |
//ctx.setTransform( matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty ); |
|
265 |
268 |
} catch (e:Dynamic) { |
266 |
269 |
|
267 |
270 |
var svd = Decompose.singularValueDecomposition( matrix ); |
| … | … | @@ -616,7 +619,7 @@ class Graphics |
616 |
619 |
} |
617 |
620 |
} |
618 |
621 |
|
619 |
|
|
622 |
//var origin:Dynamic; |
|
620 |
623 |
public function lineTo(inX:Float,inY:Float) |
621 |
624 |
{ |
622 |
625 |
var pid = mPoints.length; |
| … | … | @@ -630,7 +633,7 @@ class Graphics |
630 |
633 |
mPenY = inY; |
631 |
634 |
mPoints.push( new GfxPoint( mPenX, mPenY, 0.0, 0.0, LINE ) ); |
632 |
635 |
|
633 |
|
|
636 |
//if ( !mFilling && inX == origin.x && inY == origin.y ) ClosePolygon(false); |
|
634 |
637 |
|
635 |
638 |
} |
636 |
639 |
