diff options
| author | Code WvS <code-wvs@quantentunnel.de> | 2015-03-25 10:36:30 +0100 |
|---|---|---|
| committer | Code WvS <code-wvs@quantentunnel.de> | 2015-03-25 10:36:30 +0100 |
| commit | 2e32c1c93bbe40a2ddd57099a9f914418f96f926 (patch) | |
| tree | d563a8a13c53db96253a0707ab3e9eada9803a9f | |
| parent | 1a264f231c92a8dfa86c8586d4e03e8c13d9fd6c (diff) | |
| download | snap-yow-2e32c1c93bbe40a2ddd57099a9f914418f96f926.tar.gz snap-yow-2e32c1c93bbe40a2ddd57099a9f914418f96f926.zip | |
move shape size calculation to core
| -rw-r--r-- | blocks.js | 1 | ||||
| -rw-r--r-- | objects.js | 16 | ||||
| -rw-r--r-- | overpass.xml | 2 | ||||
| -rw-r--r-- | threads.js | 2 |
4 files changed, 20 insertions, 1 deletions
@@ -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'], @@ -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: %'lon' Breitengrad: %'lat'" 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: %'lon' Breitengrad: %'lat'" 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 %'SpriteName' 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;
for (j = 0; j < sprites.length; j++) {
 if (sprites[j].name == spriteName) {
 sprite = sprites[j];
 break;
 }
}
if (!sprite) {
 return 0;
}
for (j = 0; j < layers.length; j++) {
 if (layers[j].options.color == sprite.color) {
 size += LGeo.area(layers[j]);
 }
}
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: %'lon' Breitengrad: %'lat'" 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;
if (arr.length == 0) return new List([0, 0]);
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: %'lon' Breitengrad: %'lat'" 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: %'lon' Breitengrad: %'lat'" 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: %'lon' Breitengrad: %'lat'" 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;
if (arr.length == 0) return new List([0, 0]);
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 @@ -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': |
