| OLD | NEW |
| 1 var sunflower = dart.defineLibrary(sunflower, {}); | 1 var sunflower = dart.defineLibrary(sunflower, {}); |
| 2 var math = dart.import(math); | 2 var math = dart.import(math); |
| 3 var dom = dart.import(dom); | 3 var dom = dart.import(dom); |
| 4 var core = dart.import(core); | 4 var core = dart.import(core); |
| 5 (function(exports, math, dom, core) { | 5 (function(exports, math, dom, core) { |
| 6 'use strict'; | 6 'use strict'; |
| 7 let ORANGE = "orange"; | 7 let ORANGE = "orange"; |
| 8 let SEED_RADIUS = 2; | 8 let SEED_RADIUS = 2; |
| 9 let SCALE_FACTOR = 4; | 9 let SCALE_FACTOR = 4; |
| 10 let TAU = dart.notNull(math.PI) * 2; | 10 let TAU = dart.notNull(math.PI) * 2; |
| 11 let MAX_D = 300; | 11 let MAX_D = 300; |
| 12 let centerX = dart.notNull(MAX_D) / 2; | 12 let centerX = dart.notNull(MAX_D) / 2; |
| 13 let centerY = centerX; | 13 let centerY = centerX; |
| 14 // Function querySelector: (String) → Element | |
| 15 function querySelector(selector) { | 14 function querySelector(selector) { |
| 16 return dom.document.querySelector(selector); | 15 return dom.document.querySelector(selector); |
| 17 } | 16 } |
| 17 dart.fn(querySelector, dom.Element, [core.String]); |
| 18 exports.seeds = 0; | 18 exports.seeds = 0; |
| 19 dart.defineLazyProperties(exports, { | 19 dart.defineLazyProperties(exports, { |
| 20 get slider() { | 20 get slider() { |
| 21 return dart.as(querySelector("#slider"), dom.InputElement); | 21 return dart.as(querySelector("#slider"), dom.InputElement); |
| 22 }, | 22 }, |
| 23 get notes() { | 23 get notes() { |
| 24 return querySelector("#notes"); | 24 return querySelector("#notes"); |
| 25 }, | 25 }, |
| 26 get PHI() { | 26 get PHI() { |
| 27 return (dart.notNull(math.sqrt(5)) + 1) / 2; | 27 return (dart.notNull(math.sqrt(5)) + 1) / 2; |
| 28 }, | 28 }, |
| 29 get context() { | 29 get context() { |
| 30 return dart.as(dart.as(querySelector("#canvas"), dom.CanvasElement).getCon
text('2d'), dom.CanvasRenderingContext2D); | 30 return dart.as(dart.as(querySelector("#canvas"), dom.CanvasElement).getCon
text('2d'), dom.CanvasRenderingContext2D); |
| 31 } | 31 } |
| 32 }); | 32 }); |
| 33 // Function main: () → void | |
| 34 function main() { | 33 function main() { |
| 35 exports.slider.addEventListener('change', e => draw()); | 34 exports.slider.addEventListener('change', dart.fn(e => draw(), dart.void, [d
art.dynamic])); |
| 36 draw(); | 35 draw(); |
| 37 } | 36 } |
| 38 // Function draw: () → void | 37 dart.fn(main, dart.void, []); |
| 39 function draw() { | 38 function draw() { |
| 40 exports.seeds = core.int.parse(exports.slider.value); | 39 exports.seeds = core.int.parse(exports.slider.value); |
| 41 exports.context.clearRect(0, 0, MAX_D, MAX_D); | 40 exports.context.clearRect(0, 0, MAX_D, MAX_D); |
| 42 for (let i = 0; dart.notNull(i) < dart.notNull(exports.seeds); i = dart.notN
ull(i) + 1) { | 41 for (let i = 0; dart.notNull(i) < dart.notNull(exports.seeds); i = dart.notN
ull(i) + 1) { |
| 43 let theta = dart.notNull(i) * dart.notNull(TAU) / dart.notNull(exports.PHI
); | 42 let theta = dart.notNull(i) * dart.notNull(TAU) / dart.notNull(exports.PHI
); |
| 44 let r = dart.notNull(math.sqrt(i)) * dart.notNull(SCALE_FACTOR); | 43 let r = dart.notNull(math.sqrt(i)) * dart.notNull(SCALE_FACTOR); |
| 45 let x = dart.notNull(centerX) + dart.notNull(r) * dart.notNull(math.cos(th
eta)); | 44 let x = dart.notNull(centerX) + dart.notNull(r) * dart.notNull(math.cos(th
eta)); |
| 46 let y = dart.notNull(centerY) - dart.notNull(r) * dart.notNull(math.sin(th
eta)); | 45 let y = dart.notNull(centerY) - dart.notNull(r) * dart.notNull(math.sin(th
eta)); |
| 47 new SunflowerSeed(x, y, SEED_RADIUS).draw(); | 46 new SunflowerSeed(x, y, SEED_RADIUS).draw(); |
| 48 } | 47 } |
| 49 exports.notes.textContent = `${exports.seeds} seeds`; | 48 exports.notes.textContent = `${exports.seeds} seeds`; |
| 50 } | 49 } |
| 50 dart.fn(draw, dart.void, []); |
| 51 class Circle extends core.Object { | 51 class Circle extends core.Object { |
| 52 Circle(x, y, radius) { | 52 Circle(x, y, radius) { |
| 53 this.x = x; | 53 this.x = x; |
| 54 this.y = y; | 54 this.y = y; |
| 55 this.radius = radius; | 55 this.radius = radius; |
| 56 } | 56 } |
| 57 } | 57 } |
| 58 dart.setSignature(Circle, {}); |
| 58 class CirclePainter extends core.Object { | 59 class CirclePainter extends core.Object { |
| 59 CirclePainter() { | 60 CirclePainter() { |
| 60 this.color = ORANGE; | 61 this.color = ORANGE; |
| 61 } | 62 } |
| 62 draw() { | 63 draw() { |
| 63 exports.context.beginPath(); | 64 exports.context.beginPath(); |
| 64 exports.context.lineWidth = 2; | 65 exports.context.lineWidth = 2; |
| 65 exports.context.fillStyle = this.color; | 66 exports.context.fillStyle = this.color; |
| 66 exports.context.strokeStyle = this.color; | 67 exports.context.strokeStyle = this.color; |
| 67 exports.context.arc(this.x, this.y, this.radius, 0, TAU, false); | 68 exports.context.arc(this.x, this.y, this.radius, 0, TAU, false); |
| 68 exports.context.fill(); | 69 exports.context.fill(); |
| 69 exports.context.closePath(); | 70 exports.context.closePath(); |
| 70 exports.context.stroke(); | 71 exports.context.stroke(); |
| 71 } | 72 } |
| 72 } | 73 } |
| 73 CirclePainter[dart.implements] = () => [Circle]; | 74 CirclePainter[dart.implements] = () => [Circle]; |
| 75 dart.setSignature(CirclePainter, { |
| 76 methods: () => ({draw: dart.functionType(dart.void, [])}) |
| 77 }); |
| 74 class SunflowerSeed extends dart.mixin(Circle, CirclePainter) { | 78 class SunflowerSeed extends dart.mixin(Circle, CirclePainter) { |
| 75 SunflowerSeed(x, y, radius, color) { | 79 SunflowerSeed(x, y, radius, color) { |
| 76 if (color === void 0) | 80 if (color === void 0) |
| 77 color = null; | 81 color = null; |
| 78 super.Circle(x, y, radius); | 82 super.Circle(x, y, radius); |
| 79 if (color != null) | 83 if (color != null) |
| 80 this.color = color; | 84 this.color = color; |
| 81 } | 85 } |
| 82 } | 86 } |
| 87 dart.setSignature(SunflowerSeed, {}); |
| 83 // Exports: | 88 // Exports: |
| 84 exports.ORANGE = ORANGE; | 89 exports.ORANGE = ORANGE; |
| 85 exports.SEED_RADIUS = SEED_RADIUS; | 90 exports.SEED_RADIUS = SEED_RADIUS; |
| 86 exports.SCALE_FACTOR = SCALE_FACTOR; | 91 exports.SCALE_FACTOR = SCALE_FACTOR; |
| 87 exports.TAU = TAU; | 92 exports.TAU = TAU; |
| 88 exports.MAX_D = MAX_D; | 93 exports.MAX_D = MAX_D; |
| 89 exports.centerX = centerX; | 94 exports.centerX = centerX; |
| 90 exports.centerY = centerY; | 95 exports.centerY = centerY; |
| 91 exports.querySelector = querySelector; | 96 exports.querySelector = querySelector; |
| 92 exports.main = main; | 97 exports.main = main; |
| 93 exports.draw = draw; | 98 exports.draw = draw; |
| 94 exports.Circle = Circle; | 99 exports.Circle = Circle; |
| 95 exports.CirclePainter = CirclePainter; | 100 exports.CirclePainter = CirclePainter; |
| 96 exports.SunflowerSeed = SunflowerSeed; | 101 exports.SunflowerSeed = SunflowerSeed; |
| 97 })(sunflower, math, dom, core); | 102 })(sunflower, math, dom, core); |
| OLD | NEW |