summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCode WvS <code-wvs@quantentunnel.de>2015-03-25 10:36:30 +0100
committerCode WvS <code-wvs@quantentunnel.de>2015-03-25 10:36:30 +0100
commit2e32c1c93bbe40a2ddd57099a9f914418f96f926 (patch)
treed563a8a13c53db96253a0707ab3e9eada9803a9f
parent1a264f231c92a8dfa86c8586d4e03e8c13d9fd6c (diff)
downloadsnap-yow-2e32c1c93bbe40a2ddd57099a9f914418f96f926.tar.gz
snap-yow-2e32c1c93bbe40a2ddd57099a9f914418f96f926.zip
move shape size calculation to core
-rw-r--r--blocks.js1
-rw-r--r--objects.js16
-rw-r--r--overpass.xml2
-rw-r--r--threads.js2
4 files changed, 20 insertions, 1 deletions
diff --git a/blocks.js b/blocks.js
index 0437ff2..6f3ed28 100644
--- a/blocks.js
+++ b/blocks.js
@@ -6769,6 +6769,7 @@ InputSlotMorph.prototype.attributesMenu = function () {
}
if (obj instanceof SpriteMorph) {
dict = {
+ 'shape size' : ['shape size'],
'longitude' : ['x position'],
'latitude' : ['y position'],
'direction' : ['direction'],
diff --git a/objects.js b/objects.js
index 771318e..d4f5cb0 100644
--- a/objects.js
+++ b/objects.js
@@ -598,6 +598,12 @@ SpriteMorph.prototype.initBlocks = function () {
spec: 'set pen size to %n',
defaults: [1]
},
+ shapeSize: {
+ only: SpriteMorph,
+ type: 'reporter',
+ category: 'pen',
+ spec: 'size of drawn shapes in m²'
+ },
doStamp: {
only: SpriteMorph,
type: 'command',
@@ -1970,6 +1976,8 @@ SpriteMorph.prototype.blockTemplates = function (category) {
blocks.push('-');
blocks.push(block('changeSize'));
blocks.push(block('setSize'));
+ blocks.push('-');
+ blocks.push(block('shapeSize'));
//blocks.push('-');
//blocks.push(block('doStamp'));
@@ -3111,6 +3119,14 @@ SpriteMorph.prototype.changeSize = function (delta) {
this.setSize(this.size + (+delta || 0));
};
+SpriteMorph.prototype.shapeSize = function () {
+ var size = 0;
+ this.penShapes.eachLayer(function (layer) {
+ size += LGeo.area(layer);
+ });
+ return size;
+};
+
// SpriteMorph scale
SpriteMorph.prototype.getScale = function () {
diff --git a/overpass.xml b/overpass.xml
index ed3b2a8..f1c6485 100644
--- a/overpass.xml
+++ b/overpass.xml
@@ -1 +1 @@
-<blocks app="Snap! 4.0, http://snap.berkeley.edu" version="1"><block-definition s="ist eine Straße nahe Längengrad: %&apos;lon&apos; Breitengrad: %&apos;lat&apos;" type="predicate" category="sensing"><header></header><code></code><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportGreaterThan"><block s="reportListLength"><block s="overpassQuery"><block s="reportJoinWords"><list><l>way(around:7,</l><block var="lat"/><l>,</l><block var="lon"/><l>)[highway];out ids;</l></list></block></block></block><l>0</l></block></block></script></block-definition><block-definition s="ist ein Gebäude nahe Längengrad: %&apos;lon&apos; Breitengrad: %&apos;lat&apos;" type="predicate" category="sensing"><header></header><code></code><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportGreaterThan"><block s="reportListLength"><block s="overpassQuery"><block s="reportJoinWords"><list><l>way(around:5,</l><block var="lat"/><l>,</l><block var="lon"/><l>)[building];out ids;</l></list></block></block></block><l>0</l></block></block></script></block-definition><block-definition s="Größe des von mit %&apos;SpriteName&apos; s Farbe markierten Feldes" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%txt">Sprite</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>spriteName</l></list><l>var size = 0, layers = window.penShapes.getLayers(), sprites = world.children[0].sprites.asArray(), sprite;&#xD;for (j = 0; j &lt; sprites.length; j++) {&#xD; if (sprites[j].name == spriteName) {&#xD; sprite = sprites[j];&#xD; break;&#xD; }&#xD;}&#xD;if (!sprite) {&#xD; return 0;&#xD;}&#xD;for (j = 0; j &lt; layers.length; j++) {&#xD; if (layers[j].options.color == sprite.color) {&#xD; size += LGeo.area(layers[j]);&#xD; }&#xD;}&#xD;return size;</l></block><list><block var="SpriteName"/></list></block></block></script></block-definition><block-definition s="Position des nächsten Denkmals um Längengrad: %&apos;lon&apos; Breitengrad: %&apos;lat&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l></list><l>var arr = list.contents;&#xD;if (arr.length == 0) return new List([0, 0]);&#xD;return new List([arr[0].lon, arr[0].lat]);</l></block><list><block s="overpassQuery"><block s="reportJoinWords"><list><l>node(around:2000,</l><block var="lat"/><l>,</l><block var="lon"/><l>)[historic];out skel qt 1;</l></list></block></block></list></block></block></script></block-definition></blocks> \ No newline at end of file
+<blocks app="Snap! 4.0, http://snap.berkeley.edu" version="1"><block-definition s="ist eine Straße nahe Längengrad: %&apos;lon&apos; Breitengrad: %&apos;lat&apos;" type="predicate" category="sensing"><header></header><code></code><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportGreaterThan"><block s="reportListLength"><block s="overpassQuery"><block s="reportJoinWords"><list><l>way(around:7,</l><block var="lat"/><l>,</l><block var="lon"/><l>)[highway];out ids;</l></list></block></block></block><l>0</l></block></block></script></block-definition><block-definition s="ist ein Gebäude nahe Längengrad: %&apos;lon&apos; Breitengrad: %&apos;lat&apos;" type="predicate" category="sensing"><header></header><code></code><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportGreaterThan"><block s="reportListLength"><block s="overpassQuery"><block s="reportJoinWords"><list><l>way(around:5,</l><block var="lat"/><l>,</l><block var="lon"/><l>)[building];out ids;</l></list></block></block></block><l>0</l></block></block></script></block-definition><block-definition s="Position des nächsten Denkmals um Längengrad: %&apos;lon&apos; Breitengrad: %&apos;lat&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l></list><l>var arr = list.contents;&#xD;if (arr.length == 0) return new List([0, 0]);&#xD;return new List([arr[0].lon, arr[0].lat]);</l></block><list><block s="overpassQuery"><block s="reportJoinWords"><list><l>node(around:2000,</l><block var="lat"/><l>,</l><block var="lon"/><l>)[historic];out skel qt 1;</l></list></block></block></list></block></block></script></block-definition></blocks> \ No newline at end of file
diff --git a/threads.js b/threads.js
index 2817144..4aaf7b5 100644
--- a/threads.js
+++ b/threads.js
@@ -2535,6 +2535,8 @@ Process.prototype.reportAttributeOf = function (attribute, name) {
return thatObj.variables.getVar(attribute);
}
switch (this.inputOption(attribute)) {
+ case 'shape size':
+ return thatObj.shapeSize();
case 'x position':
return thatObj.xPosition ? thatObj.xPosition() : '';
case 'y position':