From 8dac5d8a3f2d860a3638f875dd256e3231a46645 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 15:40:57 +0200 Subject: [PATCH] add missing symbols (moved symbols there) --- stitchcode/symbols.js | 338 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 338 insertions(+) create mode 100644 stitchcode/symbols.js diff --git a/stitchcode/symbols.js b/stitchcode/symbols.js new file mode 100644 index 00000000..dad34569 --- /dev/null +++ b/stitchcode/symbols.js @@ -0,0 +1,338 @@ +SymbolMorph.prototype.names.push('largeStage'); +SymbolMorph.prototype.names.push('zoomToFit'); + +/* +SymbolMorph.prototype.originalSymbolCanvasColored = SymbolMorph.prototype.symbolCanvasColored; +SymbolMorph.prototype.symbolCanvasColored = function (aColor) { + if (this.name == 'largeStage') { + return this.drawSymbolLargeStage(newCanvas(new Point(this.symbolWidth(), this.size)), aColor); + } else if (this.name == 'zoomToFit') { + return this.drawSymbolZoomToFit(newCanvas(new Point(this.symbolWidth(), this.size)), aColor); + } else if (this.name == 'turtle') { + return this.drawSymbolTurtle(newCanvas(new Point(this.symbolWidth(), this.size)), aColor); + } else { + return this.originalSymbolCanvasColored(aColor) + } +} +*/ + +SymbolMorph.prototype.originalSymbolWidth = SymbolMorph.prototype.symbolWidth; +SymbolMorph.prototype.symbolWidth = function () { + switch (this.name) { + // case 'gears': + // case 'file': + // return this.originalSymbolWidth() * 0.8; + case 'turtle': + return this.originalSymbolWidth() * 0.8; + default: + return this.originalSymbolWidth(); + } +}; + + + + +SymbolMorph.prototype.origRenderShape = SymbolMorph.prototype.renderShape; +SymbolMorph.prototype.renderShape = function (ctx, aColor) { + switch (this.name) { + case 'zoomToFit': + this.renderSymbolZoomToFit(ctx, aColor); + break; + default: + this.origRenderShape(ctx, aColor); + } +} + +SymbolMorph.prototype.renderSymbolZoomToFit = function(ctx, color) { + var c = this.symbolWidth() / 2, + h = this.size, + w = this.symbolWidth() / 5; + + ctx.fillStyle = color.toString(); + ctx.beginPath(); + + ctx.moveTo(0, 0); + ctx.lineTo(w, 0); + ctx.stroke(); + ctx.moveTo(0, 0); + ctx.lineTo(0, w); + ctx.stroke(); + + ctx.moveTo(0, h); + ctx.lineTo(0, h - w); + ctx.stroke(); + ctx.moveTo(0, h); + ctx.lineTo(w, h); + ctx.stroke(); + + ctx.moveTo(h, 0); + ctx.lineTo(h - w, 0); + ctx.stroke(); + ctx.moveTo(h, 0); + ctx.lineTo(h, w); + ctx.stroke(); + + ctx.moveTo(h, h); + ctx.lineTo(h - w, h); + ctx.stroke(); + ctx.moveTo(h, h); + ctx.lineTo(h, h - w); + ctx.stroke(); + +} + + + +SymbolMorph.prototype.renderSymbolTurtle = function (ctx, color) { + // this.renderTexture('stitchcode/assets/turtles16.png', ctx); + // draw a circle + // draw a solid circle + var w = this.symbolWidth(); + var r = w / 2.5; + + ctx.fillStyle = color.toString(); + ctx.beginPath(); + ctx.scale(1, 0.7); + ctx.arc(w / 2 - 1, w / (2 * 0.7), r, radians(0), radians(360), true); + ctx.fill(); + ctx.beginPath(); + ctx.arc(w / 2 - 1 + r, w / (2 * 0.7), r/2, radians(0), radians(360), true); + ctx.fill(); + ctx.beginPath(); + ctx.scale(1,1); + ctx.arc(w / 2 - 1 - r/1.5, w / 2 - r/2, r/2.5, radians(0), radians(360), true); + ctx.fill(); + ctx.beginPath(); + ctx.arc(w / 2 - 1 + r/1.5, w / 2 - r/2, r/2.5, radians(0), radians(360), true); + ctx.fill(); + ctx.beginPath(); + ctx.arc(w / 2 - 1 - r/1.5, w / 2 + (r*1.5), r/2.5, radians(0), radians(360), true); + ctx.fill(); + ctx.beginPath(); + ctx.arc(w / 2 - 1 + r/1.5, w / 2.0 + r*1.5, r/2.5, radians(0), radians(360), true); + ctx.fill(); +} + +SymbolMorph.prototype.renderSymbolTurtle2 = function (ctx, color) { + + this.texture = "data:image/png;base64,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"; + + + this.render = function (ctx) { + if (this.cachedTexture) { + this.renderCachedTexture(ctx); + } else if (this.texture) { + this.renderTexture(this.texture, ctx); + } + this.changed(); + }; + + this.renderCachedTexture = function (ctx) { + ctx.drawImage( + this.cachedTexture, + 0, + 16 + ); + this.changed(); + }; + + this.render() + this.fixLayout() +}; + +/* +SymbolMorph.prototype.drawSymbolFullScreen = function (canvas, color) { + // answer a canvas showing two arrows pointing diagonally outwards + var ctx = canvas.getContext('2d'), + h = canvas.height, + c = canvas.width / 2, + off = canvas.width / 10, + w = canvas.width / 2; + + ctx.strokeStyle = color.toString(); + ctx.lineWidth = 1.5; + ctx.moveTo(c - off, c + off); + ctx.lineTo(0, h); + ctx.stroke(); + + ctx.moveTo(c + off, c - off); + ctx.lineTo(h, 0); + ctx.stroke(); + + ctx.moveTo(0, h); + ctx.lineTo(0, h - w); + ctx.stroke(); + ctx.moveTo(0, h); + ctx.lineTo(w, h); + ctx.stroke(); + + ctx.moveTo(h, 0); + ctx.lineTo(h - w, 0); + ctx.stroke(); + ctx.moveTo(h, 0); + ctx.lineTo(h, w); + ctx.stroke(); + + return canvas; +}; + +SymbolMorph.prototype.drawSymbolZoomToFit = function (canvas, color) { + // answer a canvas showing two arrows pointing diagonally outwards + var ctx = canvas.getContext('2d'), + h = canvas.height, + c = canvas.width / 2, + off = canvas.width / 10, + w = canvas.width / 4; + + ctx.strokeStyle = color.toString(); + ctx.lineWidth = 1.5; + + + ctx.moveTo(0, 0); + ctx.lineTo(w, 0); + ctx.stroke(); + ctx.moveTo(0, 0); + ctx.lineTo(0, w); + ctx.stroke(); + + ctx.moveTo(0, h); + ctx.lineTo(0, h - w); + ctx.stroke(); + ctx.moveTo(0, h); + ctx.lineTo(w, h); + ctx.stroke(); + + ctx.moveTo(h, 0); + ctx.lineTo(h - w, 0); + ctx.stroke(); + ctx.moveTo(h, 0); + ctx.lineTo(h, w); + ctx.stroke(); + + ctx.moveTo(h, h); + ctx.lineTo(h - w, h); + ctx.stroke(); + ctx.moveTo(h, h); + ctx.lineTo(h, h - w); + ctx.stroke(); + + return canvas; +}; + + + +SymbolMorph.prototype.drawSymbolFile= function (canvas, color) { + // answer a canvas showing a page symbol + var ctx = canvas.getContext('2d'), + w = Math.min(canvas.width, canvas.height) / 2; + + //ctx.fillStyle = color.toString(); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(w, 0); + ctx.lineTo(w, w); + ctx.lineTo(canvas.width, w); + ctx.lineTo(canvas.width, canvas.height); + ctx.lineTo(0, canvas.height); + ctx.stroke(); + //ctx.fill(); + + //ctx.fillStyle = color.darker(25).toString(); + ctx.beginPath(); + ctx.moveTo(w, 0); + ctx.lineTo(canvas.width, w); + ctx.lineTo(w, w); + ctx.lineTo(w, 0); + ctx.stroke(); + //ctx.fill(); + + return canvas; +}; + +SymbolMorph.prototype.drawSymbolNormalScreen = function (canvas, color) { + // answer a canvas showing two arrows pointing diagonally outwards + var ctx = canvas.getContext('2d'), + h = canvas.height, + c = canvas.width / 2, + off = canvas.width / 10, + w = canvas.width / 2; + + ctx.strokeStyle = color.toString(); + ctx.lineWidth = 1.5; + ctx.moveTo(c - off, c + off); + ctx.lineTo(0, h); + ctx.stroke(); + + ctx.moveTo(c + off, c - off); + ctx.lineTo(h, 0); + ctx.stroke(); + + ctx.moveTo(0, h); + ctx.lineTo(0, h - w); + ctx.stroke(); + ctx.moveTo(0, h); + ctx.lineTo(w, h); + ctx.stroke(); + + ctx.moveTo(h, 0); + ctx.lineTo(h - w, 0); + ctx.stroke(); + ctx.moveTo(h, 0); + ctx.lineTo(h, w); + ctx.stroke(); + + return canvas; +}; + + +SymbolMorph.prototype.drawSymbolLargeStage = function (canvas, color) { + var ctx = canvas.getContext('2d'), + w = canvas.width, + h = canvas.height, + w2 = w * 1 / 3, + h2 = h * 2 / 3; + + ctx.strokeStyle = color.toString(); + ctx.lineWidth = 2; + ctx.rect(0, 0, w, h); + ctx.stroke(); + ctx.rect(w2, 0, w, h2); + ctx.stroke(); + + return canvas; +}; + +SymbolMorph.prototype.drawSymbolNormalStage = function (canvas, color) { + var ctx = canvas.getContext('2d'), + w = canvas.width, + h = canvas.height, + w2 = w / 2, + h2 = h / 2; + + ctx.strokeStyle = color.toString(); + ctx.lineWidth = 2; + ctx.rect(0, 0, w, h); + ctx.stroke(); + ctx.rect(w2, 0, w2, h2); + ctx.stroke(); + + return canvas; +}; + +SymbolMorph.prototype.drawSymbolSmallStage = function (canvas, color) { + var ctx = canvas.getContext('2d'), + w = canvas.width, + h = canvas.height, + w2 = w * 2 / 3, + h2 = h * 1 / 3; + + ctx.strokeStyle = color.toString(); + ctx.lineWidth = 2; + ctx.rect(0, 0, w, h); + ctx.stroke(); + ctx.rect(w2, 0, w2, h2); + ctx.stroke(); + + return canvas; +}; +*/