Porównaj commity

...

5 Commity

Autor SHA1 Wiadomość Data
Michael 4322638c4b Merge branch 'master' of github.com:backface/turtlestitch into snap8 2022-12-06 11:38:10 +01:00
Michael 3f3a056e8b version bump 2022-12-06 10:43:37 +01:00
Michael 98ef82161c update cors-proxy 2022-12-06 10:42:19 +01:00
Michael 0dc6670e7e Merge branch 'master' of github.com:backface/turtlestitch into snap8 2022-12-01 18:38:03 +01:00
Michael c345cc0050 catch infinity and throw errors 2022-12-01 18:36:13 +01:00
3 zmienionych plików z 168 dodań i 60 usunięć

Wyświetl plik

@ -45,8 +45,8 @@
<script type="text/javascript" src="stitchcode/morphic.js?version=2021-12-14"></script>
<script type="text/javascript" src="stitchcode/symbols.js?version=2021-12-14"></script>
<script type="text/javascript" src="stitchcode/blocks.js?version=2021-12-14"></script>
<script type="text/javascript" src="stitchcode/threads.js?version=2022-10-05"></script>
<script type="text/javascript" src="stitchcode/objects.js?version=2022-10-05"></script>
<script type="text/javascript" src="stitchcode/threads.js?version=2022-12-05"></script>
<script type="text/javascript" src="stitchcode/objects.js?version=2022-12-05"></script>
<script type="text/javascript" src="stitchcode/turtlecloud.js?version=2022-10-05"></script>
<script type="text/javascript" src="stitchcode/gui.js?version=2022-10-31"></script>
<script type="text/javascript" src="stitchcode/store.js?version=2022-06-14"></script>

Wyświetl plik

@ -294,6 +294,9 @@ SpriteMorph.prototype.stopRunning = function () {
}
SpriteMorph.prototype.runningStitch = function (length, autoadjust=true) {
if (!isFinite(length)) {
throw new Error('length must not be Infinity');
}
if (length > 0) {
this.isRunning = true;
this.stitchoptions = {
@ -302,12 +305,14 @@ SpriteMorph.prototype.runningStitch = function (length, autoadjust=true) {
}
this.stitchtype = 0;
} else {
this.stitchtype = 0;
this.stitchoptions = {};
throw new Error('length must be larger than zero');
}
}
SpriteMorph.prototype.beanStitch = function (length, autoadjust=true) {
if (!isFinite(length)) {
throw new Error('length must not be Infinity');
}
if (length > 0) {
this.stitchtype = "bean";
this.isRunning = true;
@ -316,12 +321,17 @@ SpriteMorph.prototype.beanStitch = function (length, autoadjust=true) {
autoadjust: autoadjust
}
} else {
this.stitchtype = 0;
this.stitchoptions = {};
throw new Error('length must be larger than zero');
}
}
SpriteMorph.prototype.crossStitch = function (length, width=10, center=true, autoadjust=true) {
if (!isFinite(length)) {
throw new Error('length must not be Infinity');
}
if (!isFinite(width)) {
throw new Error('width must not be Infinity');
}
if (length > 0 && width > 0) {
this.stitchtype = "cross";
this.isRunning = true;
@ -331,10 +341,18 @@ SpriteMorph.prototype.crossStitch = function (length, width=10, center=true, aut
width: width,
center: center,
}
}
} else {
throw new Error('length and width must be larger than zero');
}
}
SpriteMorph.prototype.zigzagStitch = function (density, width=10, center=true, autoadjust=true) {
if (!isFinite(density)) {
throw new Error('length must not be Infinity');
}
if (!isFinite(width)) {
throw new Error('width must not be Infinity');
}
if (density > 0 && width > 0) {
this.stitchtype = "zigzag";
this.isRunning = true;
@ -344,10 +362,18 @@ SpriteMorph.prototype.zigzagStitch = function (density, width=10, center=true, a
width: width,
length: density,
}
}
} else {
throw new Error('density and width must be larger than zero');
}
}
SpriteMorph.prototype.ZStitch = function (density, width=10, center=true, autoadjust=true) {
if (!isFinite(density)) {
throw new Error('length must not be Infinity');
}
if (!isFinite(width)) {
throw new Error('width must not be Infinity');
}
if (density > 0 && width > 0) {
this.stitchtype = "Z";
this.isRunning = true;
@ -357,11 +383,15 @@ SpriteMorph.prototype.ZStitch = function (density, width=10, center=true, autoad
width: width,
length: density,
}
}
} else {
throw new Error('density and width must be larger than zero');
}
}
SpriteMorph.prototype.satinStitch = function (width=10, center=true, autoadjust=true) {
if (!isFinite(width)) {
throw new Error('width must not be Infinity');
}
if (width > 0) {
this.stitchtype = "zigzag";
this.isRunning = true;
@ -371,10 +401,21 @@ SpriteMorph.prototype.satinStitch = function (width=10, center=true, autoadjust=
length: 2,
center: center,
}
}
} else {
throw new Error('width must be larger than zero');
}
}
SpriteMorph.prototype.tatamiStitch = function (width=100, interval=30, center=false, offset=0) {
if (!isFinite(width)) {
throw new Error('width must not be Infinity');
}
if (!isFinite(interval)) {
throw new Error('interval must not be Infinity');
}
if (!isFinite(offset)) {
throw new Error('offset must not be Infinity');
}
if (width > 0) {
this.stitchtype = "tatami";
this.isRunning = true;
@ -383,11 +424,13 @@ SpriteMorph.prototype.tatamiStitch = function (width=100, interval=30, center=fa
width: width,
length: 4,
center: center,
interval: Math.max(10,interval),
interval: Math.max(10, interval),
offset: Math.min(offset,interval),
segment_count: 0,
}
}
} else {
throw new Error('width must be larger than zero');
}
}
SpriteMorph.prototype.trimStitch = function (on = true) {
@ -437,6 +480,9 @@ SpriteMorph.prototype.tieStitch = function () {
SpriteMorph.prototype.origForward = SpriteMorph.prototype.forward;
SpriteMorph.prototype.forward = function (steps) {
if (!isFinite(steps)) {
throw new Error('can\'t move to Infinity');
}
var dest,
dist = steps; //* this.parent.scale || 0;
stage = this.parentThatIsA(StageMorph);
@ -493,6 +539,13 @@ SpriteMorph.prototype.forwardBy = function (totalsteps, stepsize) {
SpriteMorph.prototype.arcRight = function (radius, degrees) {
//radius = !isFinite(+radius) ? 0 : radius;
if (!isFinite(degrees)) {
throw new Error('degrees must not be Infinity');
}
if (!isFinite(radius)) {
throw new Error('radius must not be Infinity');
}
if (degrees > 0) {
for (let n=0; n < Math.floor(degrees / 10.0); n++) {
this.turn(5);
@ -506,13 +559,18 @@ SpriteMorph.prototype.arcRight = function (radius, degrees) {
}
} else if (degrees < 0) {
this.arcLeft(radius, Math.abs(degrees))
} else {
throw new Error('degrees must not be zero');
}
};
SpriteMorph.prototype.arcLeft = function (radius, degrees) {
//radius = !isFinite(+radius) ? 0 : radius;
if (!isFinite(degrees)) {
throw new Error('degrees must not be Infinity');
}
if (!isFinite(radius)) {
throw new Error('radius must not be Infinity');
}
if (degrees > 0) {
for (let n=0; n < Math.floor(degrees / 10.0); n++) {
this.turn(-5);
@ -526,8 +584,6 @@ SpriteMorph.prototype.arcLeft = function (radius, degrees) {
}
} else if (degrees < 0) {
this.arcRight(radius, Math.abs(degrees))
} else {
throw new Error('degrees must not be zero');
}
};
@ -557,8 +613,6 @@ SpriteMorph.prototype.forwardSegemensWithEndCheck = function(steps, stepsize) {
}
}
SpriteMorph.prototype.beanStitchForward = function (steps) {
this.doMoveForward(steps*this.sign);
this.doMoveForward(-steps*this.sign);
@ -817,8 +871,14 @@ SpriteMorph.prototype.gotoXY = function (x, y, justMe, noShadow) {
if (!stage) {return; }
x = !isFinite(+x) ? 0 : +x;
y = !isFinite(+y) ? 0 : +y;
if (!isFinite(x)) {
throw new Error('x must not by Infinity');
}
if (!isFinite(y)) {
throw new Error('y must not by Infinity');
}
//x = !isFinite(+x) ? 0 : +x;
//y = !isFinite(+y) ? 0 : +y;
var dest = new Point(x, y).subtract(new Point(this.xPosition(), this.yPosition()));
var a = (x - this.xPosition());
@ -925,8 +985,14 @@ SpriteMorph.prototype.gotoXYIn = function (x, y, steps) {
if (!stage) {return; }
x = !isFinite(+x) ? 0 : +x;
y = !isFinite(+y) ? 0 : +y;
if (!isFinite(x)) {
throw new Error('x must not by Infinity');
}
if (!isFinite(y)) {
throw new Error('y must not by Infinity');
}
//x = !isFinite(+x) ? 0 : +x;
//y = !isFinite(+y) ? 0 : +y;
var dest = new Point(x, y).subtract(
new Point(this.xPosition(), this.yPosition()));
@ -955,14 +1021,19 @@ SpriteMorph.prototype.gotoXYIn = function (x, y, steps) {
SpriteMorph.prototype.pointTowards = function (x, y) {
var stage = this.parentThatIsA(StageMorph);
var dest;
var stage = this.parentThatIsA(StageMorph);
var dest;
if (!stage) {return; }
x = !isFinite(+x) ? 0 : +x;
y = !isFinite(+y) ? 0 : +y;
if (!stage) {return; }
if (!isFinite(x)) {
throw new Error('x must not by Infinity');
}
if (!isFinite(y)) {
throw new Error('y must not by Infinity');
}
//x = !isFinite(+x) ? 0 : +x;
//y = !isFinite(+y) ? 0 : +y;
var deltaX = (x - this.xPosition()) * this.parent.scale;
var deltaY = (y - this.yPosition()) * this.parent.scale;
@ -975,11 +1046,17 @@ SpriteMorph.prototype.pointTowards = function (x, y) {
};
SpriteMorph.prototype.drawText = function (text, size) {
if (!isFinite(size)) {
throw new Error('size must not by Infinity');
}
size = Math.max(21, size);
return this.drawTextScale(text, size/21.0, false);
}
SpriteMorph.prototype.drawTextDev = function (text, size, trim) {
if (!isFinite(size)) {
throw new Error('size must not by Infinity');
}
size = Math.max(21, size);
return this.drawTextScale(text, size/21.0, trim);
}
@ -990,6 +1067,9 @@ SpriteMorph.prototype.drawTextScale = function (text, scale, trim) {
var myself = this;
if (!stage) {return; }
if (!isFinite(scale)) {
throw new Error('scale must not by Infinity');
}
function doAJump(x, y) {
var penState = myself.isDown;
@ -1096,18 +1176,17 @@ SpriteMorph.prototype.drawTextScale = function (text, scale, trim) {
}
};
SpriteMorph.prototype.getTextLength = function (text, size) {
SpriteMorph.prototype.getTextLength = function (text, size) {
if (!isFinite(size)) {
throw new Error('size must not by Infinity');
}
scale = size/21.0;
var stage = this.parentThatIsA(StageMorph);
var dest;
var myself = this;
if (!stage) {return; }
if (stage.fonts) {
var x = 0;
@ -1153,9 +1232,12 @@ SpriteMorph.prototype.drawTextScale = function (text, scale, trim) {
SpriteMorph.prototype.origSetHeading = SpriteMorph.prototype.setHeading;
SpriteMorph.prototype.setHeading = function (degrees) {
var stage = this.parentThatIsA(StageMorph);
this.origSetHeading(degrees);
stage.rotateTurtle(this.heading);
if (!isFinite(degrees)) {
throw new Error('degrees must not by Infinity');
}
var stage = this.parentThatIsA(StageMorph);
this.origSetHeading(degrees);
stage.rotateTurtle(this.heading);
};
@ -1172,6 +1254,9 @@ SpriteMorph.prototype.setColor = function (aColor) {
SpriteMorph.prototype.setColorRGB = function (r,g,b) {
if (!isFinite(a) || !isFinite(b) || !isFinite(c)) {
throw new Error('value must not by Infinity');
}
var a = this.color.a;
r = Math.max(Math.min(r, 255), 0);
b = Math.max(Math.min(b, 255), 0);
@ -1180,6 +1265,9 @@ SpriteMorph.prototype.setColorRGB = function (r,g,b) {
};
SpriteMorph.prototype.setColorHSV = function (h, s, v) {
if (!isFinite(a) || !isFinite(b) || !isFinite(c)) {
throw new Error('value must not by Infinity');
}
var col = new Color();
h = Math.max(Math.min(h, 1), 0);
s = Math.max(Math.min(s, 1), 0);
@ -1198,17 +1286,23 @@ SpriteMorph.prototype.getHue = function () {
};
SpriteMorph.prototype.setHue = function (num) {
var hsv = this.color.hsv(),
n = +num;
if (n < 0 || n > 360) { // wrap the hue
n = (n < 0 ? 360 : 0) + n % 360;
}
hsv[0] = n / 360;
this.setColorHSV(hsv[0],hsv[1],hsv[2]);
if (!isFinite(num)) {
throw new Error('value must not by Infinity');
}
var hsv = this.color.hsv(),
n = +num;
if (n < 0 || n > 360) { // wrap the hue
n = (n < 0 ? 360 : 0) + n % 360;
}
hsv[0] = n / 360;
this.setColorHSV(hsv[0],hsv[1],hsv[2]);
};
SpriteMorph.prototype.changeHue = function (delta) {
this.setHue(this.getHue() + (+delta || 0));
if (!isFinite(delta)) {
throw new Error('value must not by Infinity');
}
this.setHue(this.getHue() + (+delta || 0));
};
SpriteMorph.prototype.getBrightness = function () {
@ -1216,10 +1310,12 @@ SpriteMorph.prototype.getBrightness = function () {
};
SpriteMorph.prototype.setBrightness = function (num) {
var hsv = this.color.hsv();
hsv[2] = Math.max(Math.min(+num || 0, 100), 0) / 100; // shade doesn't wrap
this.setColorHSV(hsv[0],hsv[1],hsv[2]);
if (!isFinite(num)) {
throw new Error('value must not by Infinity');
}
var hsv = this.color.hsv();
hsv[2] = Math.max(Math.min(+num || 0, 100), 0) / 100; // shade doesn't wrap
this.setColorHSV(hsv[0],hsv[1],hsv[2]);
};
SpriteMorph.prototype.changeBrightness = function (delta) {
@ -1227,9 +1323,12 @@ SpriteMorph.prototype.changeBrightness = function (delta) {
};
SpriteMorph.prototype.setSaturation = function (num) {
var hsv = this.color.hsv();
hsv[1] = Math.max(Math.min(+num || 0, 100), 0) / 100; // shade doesn't wrap
this.setColorHSV(hsv[0],hsv[1],hsv[2]);
if (!isFinite(num)) {
throw new Error('value must not by Infinity');
}
var hsv = this.color.hsv();
hsv[1] = Math.max(Math.min(+num || 0, 100), 0) / 100; // shade doesn't wrap
this.setColorHSV(hsv[0],hsv[1],hsv[2]);
};
SpriteMorph.prototype.getSaturation = function () {
@ -1274,6 +1373,9 @@ SpriteMorph.prototype.changeHSB = function (channel, value) {
};
SpriteMorph.prototype.setOpacity = function (value) {
if (!isFinite(value)) {
throw new Error('value must not by Infinity');
}
value = Math.max(Math.min(value, 100), 0);
this.color.a = value / 100;
this.setColor(this.color);
@ -1284,7 +1386,10 @@ SpriteMorph.prototype.getOpacity = function (value) {
};
SpriteMorph.prototype.changeOpacity= function (delta) {
this.setOpacity(this.getOpacity() + (+delta || 0));
if (!isFinite(delta)) {
throw new Error('value must not by Infinity');
}
this.setOpacity(this.getOpacity() + (+delta || 0));
};
SpriteMorph.prototype.setColorHex = function (hex) {
@ -1332,12 +1437,15 @@ SpriteMorph.prototype.getPenSize = function (){
}
SpriteMorph.prototype.setSize = function (size) {
var stage = this.parentThatIsA(StageMorph);
if (!isNaN(size)) {
this.size = Math.min(Math.max(+size, 0.0001), 1000);
}
stage.setPenSize(this.size);
stage.turtleShepherd.setPenSize(this.size);
if (!isFinite(size)) {
throw new Error('value must not by Infinity');
}
var stage = this.parentThatIsA(StageMorph);
if (!isNaN(size)) {
this.size = Math.min(Math.max(+size, 0.0001), 1000);
}
stage.setPenSize(this.size);
stage.turtleShepherd.setPenSize(this.size);
};

Wyświetl plik

@ -1,5 +1,5 @@
Process.prototype.proxy = 'https://turtlestitch.org:8080';
Process.prototype.proxy = 'https://cors-proxy.turtlestitch.org';
Process.prototype.enableJS = true;
Process.prototype.reportMouseX = function () {