OLD | NEW |
1 dart_library.library('sunflower/sunflower', null, /* Imports */[ | 1 dart_library.library('sunflower', null, /* Imports */[ |
2 'dart/_runtime', | 2 'dart_sdk' |
3 'sunflower/dom', | 3 ], function(exports, dart_sdk) { |
4 'dart/core', | |
5 'dart/math', | |
6 'sunflower/painter', | |
7 'sunflower/circle' | |
8 ], /* Lazy imports */[ | |
9 ], function(exports, dart, dom, core, math, painter, circle) { | |
10 'use strict'; | 4 'use strict'; |
11 let dartx = dart.dartx; | 5 const core = dart_sdk.core; |
12 const SEED_RADIUS = 2; | 6 const html = dart_sdk.html; |
13 const SCALE_FACTOR = 4; | 7 const math = dart_sdk.math; |
14 const MAX_D = 300; | 8 const dart = dart_sdk.dart; |
15 const centerX = dart.notNull(MAX_D) / 2; | 9 const dartx = dart_sdk.dartx; |
16 const centerY = centerX; | 10 const sunflower = Object.create(null); |
17 function querySelector(selector) { | 11 const circle = Object.create(null); |
18 return dom.document.querySelector(selector); | 12 const painter = Object.create(null); |
19 } | 13 sunflower.SEED_RADIUS = 2; |
20 dart.fn(querySelector, dom.Element, [core.String]); | 14 sunflower.SCALE_FACTOR = 4; |
21 dart.defineLazyProperties(exports, { | 15 sunflower.MAX_D = 300; |
| 16 sunflower.centerX = dart.notNull(sunflower.MAX_D) / 2; |
| 17 sunflower.centerY = sunflower.centerX; |
| 18 sunflower.querySelector = function(selector) { |
| 19 return html.document[dartx.querySelector](selector); |
| 20 }; |
| 21 dart.fn(sunflower.querySelector, html.Element, [core.String]); |
| 22 dart.defineLazy(sunflower, { |
22 get canvas() { | 23 get canvas() { |
23 return dart.as(querySelector("#canvas"), dom.CanvasElement); | 24 return dart.as(sunflower.querySelector("#canvas"), html.CanvasElement); |
24 } | 25 } |
25 }); | 26 }); |
26 dart.defineLazyProperties(exports, { | 27 dart.defineLazy(sunflower, { |
27 get context() { | 28 get context() { |
28 return dart.as(exports.canvas.getContext('2d'), dom.CanvasRenderingContext
2D); | 29 return dart.as(sunflower.canvas[dartx.getContext]('2d'), html.CanvasRender
ingContext2D); |
29 } | 30 } |
30 }); | 31 }); |
31 dart.defineLazyProperties(exports, { | 32 dart.defineLazy(sunflower, { |
32 get slider() { | 33 get slider() { |
33 return dart.as(querySelector("#slider"), dom.InputElement); | 34 return dart.as(sunflower.querySelector("#slider"), html.InputElement); |
34 } | 35 } |
35 }); | 36 }); |
36 dart.defineLazyProperties(exports, { | 37 dart.defineLazy(sunflower, { |
37 get notes() { | 38 get notes() { |
38 return querySelector("#notes"); | 39 return sunflower.querySelector("#notes"); |
39 } | 40 } |
40 }); | 41 }); |
41 dart.defineLazyProperties(exports, { | 42 dart.defineLazy(sunflower, { |
42 get PHI() { | 43 get PHI() { |
43 return (dart.notNull(math.sqrt(5)) + 1) / 2; | 44 return (dart.notNull(math.sqrt(5)) + 1) / 2; |
44 } | 45 } |
45 }); | 46 }); |
46 exports.seeds = 0; | 47 sunflower.seeds = 0; |
47 function main() { | 48 sunflower.main = function() { |
48 exports.slider.addEventListener('change', dart.fn(e => draw(), dart.void, [d
om.Event])); | 49 sunflower.slider[dartx.addEventListener]('change', dart.fn(e => sunflower.dr
aw(), dart.void, [html.Event])); |
49 draw(); | 50 sunflower.draw(); |
50 } | 51 }; |
51 dart.fn(main, dart.void, []); | 52 dart.fn(sunflower.main, dart.void, []); |
52 function draw() { | 53 sunflower.draw = function() { |
53 exports.seeds = core.int.parse(exports.slider.value); | 54 sunflower.seeds = core.int.parse(sunflower.slider[dartx.value]); |
54 exports.context.clearRect(0, 0, MAX_D, MAX_D); | 55 sunflower.context[dartx.clearRect](0, 0, sunflower.MAX_D, sunflower.MAX_D); |
55 for (let i = 0; i < dart.notNull(exports.seeds); i++) { | 56 for (let i = 0; i < dart.notNull(sunflower.seeds); i++) { |
56 let theta = i * dart.notNull(painter.TAU) / dart.notNull(exports.PHI); | 57 let theta = i * dart.notNull(painter.TAU) / dart.notNull(sunflower.PHI); |
57 let r = dart.notNull(math.sqrt(i)) * dart.notNull(SCALE_FACTOR); | 58 let r = dart.notNull(math.sqrt(i)) * dart.notNull(sunflower.SCALE_FACTOR); |
58 let x = dart.notNull(centerX) + r * dart.notNull(math.cos(theta)); | 59 let x = dart.notNull(sunflower.centerX) + r * dart.notNull(math.cos(theta)
); |
59 let y = dart.notNull(centerY) - r * dart.notNull(math.sin(theta)); | 60 let y = dart.notNull(sunflower.centerY) - r * dart.notNull(math.sin(theta)
); |
60 new SunflowerSeed(x, y, SEED_RADIUS).draw(exports.context); | 61 new sunflower.SunflowerSeed(x, y, sunflower.SEED_RADIUS).draw(sunflower.co
ntext); |
61 } | 62 } |
62 exports.notes.textContent = `${exports.seeds} seeds`; | 63 sunflower.notes[dartx.text] = `${sunflower.seeds} seeds`; |
63 } | 64 }; |
64 dart.fn(draw, dart.void, []); | 65 dart.fn(sunflower.draw, dart.void, []); |
65 class SunflowerSeed extends dart.mixin(circle.Circle, painter.CirclePainter) { | 66 circle.Circle = class Circle extends core.Object { |
| 67 Circle(x, y, radius) { |
| 68 this.x = x; |
| 69 this.y = y; |
| 70 this.radius = radius; |
| 71 } |
| 72 }; |
| 73 dart.setSignature(circle.Circle, { |
| 74 constructors: () => ({Circle: [circle.Circle, [core.num, core.num, core.num]
]}) |
| 75 }); |
| 76 painter.CirclePainter = class CirclePainter extends core.Object { |
| 77 CirclePainter() { |
| 78 this.color = painter.ORANGE; |
| 79 } |
| 80 draw(context) { |
| 81 context[dartx.beginPath](); |
| 82 context[dartx.lineWidth] = 2; |
| 83 context[dartx.fillStyle] = this.color; |
| 84 context[dartx.strokeStyle] = this.color; |
| 85 context[dartx.arc](this.x, this.y, this.radius, 0, painter.TAU, false); |
| 86 context[dartx.fill](); |
| 87 context[dartx.closePath](); |
| 88 context[dartx.stroke](); |
| 89 } |
| 90 }; |
| 91 painter.CirclePainter[dart.implements] = () => [circle.Circle]; |
| 92 dart.setSignature(painter.CirclePainter, { |
| 93 methods: () => ({draw: [dart.void, [html.CanvasRenderingContext2D]]}) |
| 94 }); |
| 95 sunflower.SunflowerSeed = class SunflowerSeed extends dart.mixin(circle.Circle
, painter.CirclePainter) { |
66 SunflowerSeed(x, y, radius, color) { | 96 SunflowerSeed(x, y, radius, color) { |
67 if (color === void 0) color = null; | 97 if (color === void 0) color = null; |
68 super.Circle(x, y, radius); | 98 super.Circle(x, y, radius); |
69 if (color != null) this.color = color; | 99 if (color != null) this.color = color; |
70 } | 100 } |
71 } | 101 }; |
72 dart.setSignature(SunflowerSeed, { | 102 dart.setSignature(sunflower.SunflowerSeed, { |
73 constructors: () => ({SunflowerSeed: [SunflowerSeed, [core.num, core.num, co
re.num], [core.String]]}) | 103 constructors: () => ({SunflowerSeed: [sunflower.SunflowerSeed, [core.num, co
re.num, core.num], [core.String]]}) |
| 104 }); |
| 105 painter.ORANGE = "orange"; |
| 106 painter.RED = "red"; |
| 107 painter.BLUE = "blue"; |
| 108 painter.TAU = dart.notNull(math.PI) * 2; |
| 109 painter.querySelector = function(selector) { |
| 110 return html.document[dartx.querySelector](selector); |
| 111 }; |
| 112 dart.fn(painter.querySelector, html.Element, [core.String]); |
| 113 dart.defineLazy(painter, { |
| 114 get canvas() { |
| 115 return dart.as(painter.querySelector("#canvas"), html.CanvasElement); |
| 116 } |
| 117 }); |
| 118 dart.defineLazy(painter, { |
| 119 get context() { |
| 120 return dart.as(painter.canvas[dartx.getContext]('2d'), html.CanvasRenderin
gContext2D); |
| 121 } |
74 }); | 122 }); |
75 // Exports: | 123 // Exports: |
76 exports.SEED_RADIUS = SEED_RADIUS; | 124 exports.sunflower = sunflower; |
77 exports.SCALE_FACTOR = SCALE_FACTOR; | 125 exports.circle = circle; |
78 exports.MAX_D = MAX_D; | 126 exports.painter = painter; |
79 exports.centerX = centerX; | |
80 exports.centerY = centerY; | |
81 exports.querySelector = querySelector; | |
82 exports.main = main; | |
83 exports.draw = draw; | |
84 exports.SunflowerSeed = SunflowerSeed; | |
85 }); | 127 }); |
| 128 |
| 129 //# sourceMappingURL=sunflower.js.map |
OLD | NEW |