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