AnimalScript
Definition
Hinweise zur Notation
Diese Dokumentation nutzt die folgende Notation auf Basis der erweiterten
Backus-Naur-Form:
- <wort>: -- Hypertext Anker für die Definition des Elements
wort
|
-- trennt Alternativen. So steht X | Y
für "entweder X
oder Y
, aber nicht beide".
- [ ... ] -- Elemente in diesen Klammern sind optional und können vom
Nutzer weggelassen werden.
- { ... } -- Elemente in geschweiften Klammern (falls diese nicht
{} fett gesetzt sind) können beliebig oft auftreten. Ein
Beispiel ist die Angabe der IDs von zu animierenden Objekten: es kann auf einem,
zwei, drei, ... Objekten gleichzeitig gearbeitet werden.
- <wort> -- ein Verweis auf die
Definition des Elements wort. Durch Anklicken des Hyperlinks kommen
Sie zur Definition.
- X -- Fettschrift wird eingesetzt, um Worte und Zeichen
zu markieren, die genau so einzugeben sind (hier also als X).
Das betrifft auch Elemente wie geschweifte Klammern, runde Klammern, Kommas und
Anführungszeichen.
- kursiv -- überwiegend innerhalb von doppelten Anfü:hrungszeichen
genutzt, um darauf hinzuweisen, dass dieser Text vom Benutzer zu ersetzen ist. So
muss etwa der kursive Text objectID durch die konkrete ID des gewählten
Objekts ersetzt werden..
AnimalScript-Dateien haben genau
einen Befehl pro Zeile (oder einen Kommentar, der mit #
beginnt und
bis ans Zeilenende reicht). Dateien fangen immer mit dem vorgegebenen
Dateikopf an, gefolgt von einer beliebigen Abfolge
von Deklarationen grafischer Objekte und von
Transformationen.
- <animalScriptFile>:
- <fileHeader>
{ <command> \n}
- <fileHeader>:
- %Animal
<double>
[<nat>*<nat>]
[\n <titleInfo>]
[\n <authorInfo>]
- <titleInfo>:
- title "title as a string"
- <authorInfo>:
- author
"author with email address"
- <command>:
- <objectPrimitives>
| <operations>
| {
| }
| <languageSupport>
| <extensionCommand>
- <objectPrimitives>
- <arcTypes>
| <array>
| <arrayMarker>
| <codeTypes>
| <listelement>
| <point>
| <polygonTypes>
| <polyline>
| <text>
- <arcTypes>:
- <arc>
| <circle>
| <circleSeg>
| <ellipse>
- <arc>:
- <arcName> "ID"
<nodeDefinition>
radius <nodeDefinition>
[angle <int>]
[starts <int>]
[clockwise | counterclockwise]
[color <color>]
[depth <nat>]
[<closedOptions>
[<fillOptions>]
| <arrowOptions>]
[<displayOptions>]
- <arcName>:
- arc
| ellipseseg
| ellipsesegment
- <circleSeg>:
- <circleSegName>
"ID"
<nodeDefinition>
radius <int>
[angle <int>]
[starts <int>]
[clockwise | counterclockwise]
[color <color>]
[depth <nat>]
[<closedOptions>
[<fillOptions>]
| <arrowOptions>]
[<displayOptions>]
- <circleSegName>:
- circleseg
| circlesegment
- <ellipse>:
- ellipse "ID"
<nodeDefinition>
radius <nodeDefinition>
[color <color>]
[depth <int>]
[<fillOptions>]
[<displayOptions>]
- <circle>:
- circle "ID)"
<nodeDefinition>
radius <int>
[color <color>]
[depth <nat>]
[<fillOptions>]
[<displayOptions>]
- <array>:
- <arrayKey>
"arrayID"
[at] <nodeDefinition>
[color <color>]
[fillColor <color>]
[elementColor <color>]
[elemHighlight <color>]
[cellHighlight <color>]
[horizontal | vertical]
length <nat+>
{ <intText> }
[depth <nat>]
[<timeOffset>]
[cascaded [within <nat+>
ticks | ms ]]
<font>
- <arrayKey>:
- array | field
- <arrayMarker>:
- <markKey>
"indexID"
on "arrayID"
atIndex <nat>
[label <intText>]
[color <color>]
[depth <nat>]
<font>
[<displayOptions>]
- <markKey>:
- arrayMarker
| arrayPointer
| arrayIndex
- <codeTypes>:
- <codeGroup>
| <codeLine>
| <codeElem>
- <codeGroup>:
- codegroup
"groupID"
[at] <nodeDefinition>
[color <color>]
[highlightColor <color>]
[contextColor <color>]
<font>
[depth <nat>]
[<timeOffset>]
- <codeLine>:
- addCodeLine "code"
[name "ID"]
to "codeGroupID"
[indentation <nat>]
[<timeOffset>]
- <codeElem>:
- addCodeElem "code"
[name "ID"]
to "codeGroupID"
[row <nat>]
[indentation <nat>]
[<timeOffset>]
- <listelement>:
- listelement "ID"
<nodeDefinition>
[text <intText>]
pointers <nat>
[position <pointerPos>]
[ { <ptrLocation> } ]
[prev "prevID"]
[color <color>]
[boxFillColor <color>]
[pointerAreaColor <color>]
[pointerAreaFillColor <color>]
[textColor <color>]
[depth <nat>]
[<displayOptions>]
- <pointerPos>:
- top
| left
| right
| bottom
| none
- <ptrLocation>:
- ptr<nat>
<nodeDefinition>
| ptr<nat>
to "targetID"
- <point>:
- point "pointID"
<nodeDefinition>
[color <color>]
[depth <nat>]
[<displayOptions>]#
- <polygonTypes>:
- <square>
| <rect>
| <triangle>
| <polygon>
- <square>:
- square "ID"
<nodeDefinition>
<nat+>>
[color <color>]
[depth <nat>]
[<fillOptions>]
[<displayOptions>]
- <rect>:
- <absoluteRectangle>
| <relativeRectangle>
- <absoluteRectangle>:
- rectangle "ID"
<nodeDefinition>
<nodeDefinition>
[color <color>]
[depth <nat>]
[<fillOptions>]
[<displayOptions>]
- <relativeRectangle>:
- <relRectName>
"ID"
<nodeDefinition>
<nodeDefinition>
[color <color>]
[depth <nat>]
[<fillOptions>]
[<displayOptions>]
- <relRectName>:
- relrect
| relrectangle
- <triangle>:
- triangle "ID"
<nodeDefinition>
<nodeDefinition>
<nodeDefinition>
[color <color>]
[depth <nat>]
[<fillOptions>]
[<displayOptions>]
- <polygon>:
- polygon "ID"
<nodeDefinition>
<nodeDefinition>
{ <nodeDefinition> }
[color <color>]
[depth <nat>]
[<fillOptions>]
[<displayOptions>]
- <polyline>:
- <lineTag>
"lineID"
<nodeDefinition>
{ <nodeDefinition> }
[color <color>]
[depth <nat>]
[<arrowOptions>]
[<displayOptions>]
- <lineTag>:
- polyline
| line
- <text>:
- text "ID"
<intText>
[at] <nodeDefinition>
[centered | right]
[color <color>]
[depth <nat>]
<font>
[boxed]
[<displayOptions>]
- <operations>:
- <arrayOp>
| <clone>
| <colorChangeTypes>
| <delay>
| <echo>
| <label>
| <link>
| <location>
| <merge>
| <move>
| <rotate>
| <setFont>
| <setText>
| <showTypes>
| <swap>
- <arrayOp>:
- <arrayPut>
| <arraySwap>
| <moveArrayMarker>
| <highlightArrayCell>
| <highlightArrayElem>
- <arrayPut>:
- arrayPut "value"
on "arrayID"
position <nat>
[<timing>]
- <arraySwap>:
- arraySwap
on "arrayName"
position <nat>
with <nat>
[<timing>]
- <moveArrayMarker>:
- <moveMarkerKeyword>
"markerID" to
[position <nat>
| arrayEnd | outside]
[<timing>]
- <moveMarkerKeyword>:
- moveArrayIndex
| moveArrayMarker
| moveArrayPointer
| moveIndex
| moveMarker
| movePointer
| jumpArrayIndex
| jumpArrayMarker
| jumpArrayPointer
| jumpIndex
| jumpMarker
| jumpPointer
- <<highlightArrayCell>:
- <hlACellKeyword>
on "arrayID"
<aHighlightRange>
<timing>
- <hlACellKeyword>:
- highlightArrayCell
| unhighlightArrayCell
- <aHighlightRange>:
- position <nat>
| [from <nat>]
[to <nat>]
- <hilightArrayElem>:
- <hlAElemKeyword>
on "arrayID"
<aHighlightRange>
<timing>
- <hlAElemKeyword>:
- highlightArrayElem
| unhighlightArrayElem
- <<clone>:
-
clone "originalID"
as "cloneID"
[at] <nodeDefinition>
[<displayOptions>]
- <colorChangeTypes>:
- <colorChange>
| <codeColorChange>
- <colorChange>:
- color <oids>
[type <colorType>]
<color>
[<timing>]
- <colorType>:
- "color"
| "fillColor"
| "textColor"
| "colorSetting"
- <codeColorChange>:
-
<codeColorType>
on "baseCodeGroup"
line <nat>
[row <nat>]
[context | region]
[<timing>]
- <codeColorType>:
- highlightCode
| unhighlightCode
- <delay>:
- delay <nat>
[ms]
- <echo>:
- echo location:
<nodeDefinition>
| echo <boundsKeyword>
{ <oids> }
| echo text:
"text"
| echo value:
{ "ID" }
| echo ids: { <oids> }
| echo visible
| echo rule: "keyword"
| echo unquotedText
- <boundsKeyword>:
- boundingBox
| bounds
- <label>:
- label "labelEntry"
- <link>:
- setLink "elemID"
[link <nat>]
to "targetID"
[<timing>]
| setLink "elemID"
[link <nat>]
<nodeDefinition>
[<timing>]
| clearLink "elemID"
[link <nat>]
[<timing>]
- <location>:
- <locationKeyword>
"locationID"
[at] <nodeDefinition>
- <locationKeyword>:
- location
| defineLocation
| defLocation
- <merge>:
- <mergeKeyWord>
"targetID"
{ "ID" }
- <mergeKeyWord>:
- group
| merge
| set
| ungroup
| remove
- <move>:
- <moveVia>
| <moveAlong>
| <moveTo>
- <moveKeyword>:
- move
| translate
- <moveVia>:
- <moveKeyword>
<oids>
[<corner>]
[<methodSpec>]
via "oid"
[<timing>]
- <moveAlong>:
- <moveAlongPolyline>
| <moveAlongArc>
- <moveAlongPolyline>:
- <moveKeyword>
<oids>
[<corner>]
[<methodSpec>]
along <lineTag>
<nodeDefinition>
{ <nodeDefinition> }
[<timing>]
- <moveAlongArc>:
- <moveAlongArcType>
| <moveAlongCircleType>
- <moveAlongArcType>:
- <moveKeyword>
<oids>
[<corner>]
[<methodSpec>]
along <arcType>
<nodeDefinition>
<int>
<int>
<int>
<int>
[<timing>]
- <moveAlongCircleType>:
- <moveKeyword>
<oids>
[<corner>]
[<methodSpec>]
along <circleType>
<nodeDefinition>
<int>
<int>
<int>
[<timing>]
- <moveTo>:
- <moveKeyword>
<oids>
[<corner>]
[<methodSpec>]
to <nodeDefinition>
[<timing>]
- <methodSpec>:
- type "typeName"
- <corner>:
- corner <direction>
- <arcType>:
- <arcName>
| ellipse
- <circleType>:
- circle
| <circleSegName>
- <rotate>:
- rotate <oids>
around "id"
[degrees <int>]
[<timing>]
| rotate <oids>
center <nodeDefinition>
[degrees <int>]
[<timing>]
- <showTypes>:
- <simpleShow>
| <codeHide>
| <selectiveHide>
- <simpleShow>:
- <showMode>
<oids>
[<timing>]
- <codeHide>:
- hideCode
"codeID"
[<timeOffset>]
- <selectiveHide>:
- hideAll [<timing>]
| hideAllBut { <oids> }
[<timing>]
- <showMode>:
- show
| hide
- <setFont>:
- setFont [of] "oid" [to]
<font> [<timing>]
- <setText>:
-
setText [of] "oid" [to]
<intText> [<timing>]
- <swap>:
- <swapKeyword>
"oid1"
"oid2"
- <swapKeyword>:
- swap
| exchange
- <languageSupport>:
- supports { "languageKey" }
[\n
<resourceKey>
"fileNameWithoutExtension"]
- <resourceKey>:
- resource
| bundle
| resourceBundle
- <intText>:
- "text"
| key: "textResourceKey"
| ( { key:
"text" } )
- <color>:
- black
| blue
| blue2
| blue3
| blue4
| brown2
| brown3
| brown4
| cyan
| cyan2
| cyan3
| cyan4
| dark Gray
| gold
| green
| green2
| green3
| green4
| light Gray
| light_blue
| magenta
| magenta2
| magenta3
| magenta4
| orange
| pink
| pink2
| pink3
| pink4
| red
| red2
| red3
| red4
| white
| yellow
| ( <nat> ,
<nat> ,
<nat> )
- <displayOptions>:
- hidden
| <timeOffset>
- <timeOffset>:
- after <nat>
[ticks | ms]
- <timing>:
- [<timeOffset>]
[within <nat>
[ticks | ms]]
- <fontName>:
- Serif
| SansSerif
| Monospaced
- <nodeDefinition>:
- ( <int>,
<int> )
| <offset>
| move (<int>
, <int> )
- <offset>:
- offset (<int> ,
<int>)
from "referenceID"
node <nat+>
| offset ( <int> ,
<int>) from "referenceID"
<direction>
| offset (<int> ,
<int>)
from "locationID"
| offset (<int> ,
<int>) from "referenceID"
baseline [start | end]
- <direction>:
- NW
| N
| NE
| W
| C
| E
| SW
| S
| SE
| Northwest
| North
| Northeast
| West
| Middle
| Center
| East
| Southwest
| South
| Southeast
- <arrowOptions>:
- [fwArrow] [bwArrow]
- <closedOptions>:
- closed
- <fillOptions>:
- filled
[fillColor <color>]
- <font>:
- [font <fontNames>]
[size <nat+>]
[bold]
[italic]
- <oids>:
- { "targetOID" }
- <nat>:
- 0
| <nat+>
- <nat+>:
- 1
| ...
- <int>:
- <nat>
| - <nat>
| ( <double>
<operator>
<double>
)
| "objectID"
<objectPosition>
- <operator>:
- +
| -
| *
| :
- <objectPosition>:
- x
| y
| width
| height
- <extensionCommand>:
-