Components and interfaces (containers)

Components

Common

#

Axiom provider [AxiomProvider]

Provides a symbol property called Axiom which serves as an initial string of symbols of an L-system.

Configuration access names
  • AxiomProvider
  • Malsys.Processing.Components.Common.AxiomProvider
Base components↑ Axiom provider
[SymbolProvider]
Assignable to interfaces↑ Axiom provider
[IComponent] [IProcessComponent] [ISymbolProvider]
Settable symbol properties↑ Axiom provider
  • axiom
    • Initial string of symbols. The value is provided to the connected component.
  • Symbols
    • Symbol string which is provided.
#

Symbol provider [SymbolProvider]

Standard implementation of ISymbolProvider interface. It provides all symbols set to the Symbols property regardless of the state of processing.

Configuration access names
  • SymbolProvider
  • Malsys.Processing.Components.Common.SymbolProvider
Derived components↑ Symbol provider
[AxiomProvider]
Assignable to interfaces↑ Symbol provider
[IComponent] [IProcessComponent] [ISymbolProvider]
Settable symbol properties↑ Symbol provider
  • Symbols
    • Symbol string which is provided.

General

#

Random generator provider [RandomGeneratorProvider]

This component offers both, random and pseudo-random generators. It provides a callable function called random which can be called even in the L-system definition (not only at run-time). The pseudo-random number generator is used by default. If no random seed is set it will be generated randomly and a message with its value will be sent to the user to be possible to reproduce generated result. Truly-random generation should be used only by experienced users because other components will not be able to measure a generated model and results may be strange.

Configuration access names
  • RandomGeneratorProvider
  • Malsys.Processing.Components.Common.RandomGeneratorProvider
Assignable to interfaces↑ Random generator provider
[IComponent]
Gettable properties↑ Random generator provider
  • trueRandom{run-time only} (returns constant)
    • If set to true, as internal random generator will be used true-random (cryptographic random) generator. For this random generator can not be set any seed and numbers are always unpredictably random. This will cause that measuring and process pass will not be the same and can cause unexpected behavior. Default random generator is pseudo-random generator.
  • randomSeed (returns constant)
    • Random seed for pseudo-random generator to be able to reproduce random L-systems. Do not work if TrueRandom property is set.
Settable properties↑ Random generator provider
  • trueRandom (accepts constant)
    • If set to true, as internal random generator will be used true-random (cryptographic random) generator. For this random generator can not be set any seed and numbers are always unpredictably random. This will cause that measuring and process pass will not be the same and can cause unexpected behavior. Default random generator is pseudo-random generator.
    • Expected value: true or false
    • Default value: false
  • randomSeed (accepts constant)
    • Random seed for pseudo-random generator to be able to reproduce random L-systems. Do not work if TrueRandom property is set.
    • Expected value: Non-negative integer.
    • Default value: random
Callable functions↑ Random generator provider
  • random (returns constant)
    • Returns random value from 0.0 (inclusive) to 1.0 (exclusive).
    • Parameters: 0
  • random (returns constant)
    • Returns random value within specified range.
    • Parameters: 2
      1. The inclusive lower bound of the random number returned.
      2. The exclusive upper bound of the random number returned.
#

Symbols saver [SymbolsSaver]

Prints all processed symbols (with their parameters) as the text. Symbols are delimited with a space.

Configuration access names
  • SymbolsSaver
  • Malsys.Processing.Components.Common.SymbolsSaver
Assignable to interfaces↑ Symbols saver
[IComponent] [IProcessComponent] [ISymbolProcessor]

Interpreters

#

Hexagonal ASCII interpreter [HexaAsciiInterpreter]

Hexagonal ASCII interpreter interprets symbols as lines on hexagonal grid rendering them as text (ASCII art).

Configuration access names
  • HexaAsciiInterpreter
  • Malsys.Processing.Components.Interpreters.HexaAsciiInterpreter
Assignable to interfaces↑ Hexagonal ASCII interpreter
[IComponent] [IInterpreter] [IProcessComponent]
Settable properties↑ Hexagonal ASCII interpreter
  • scale (accepts constant)
    • Scale of result ASCII art. Value representing number of characters to draw per line.
    • Expected value: Positive number.
    • Default value: 1
  • horizontalScaleMultiplier (accepts constant)
    • Horizontal scale multiplier is used to multiply number of characters per horizontal line. Default value is 2 because ordinary characters are 2 times taller than wider.
    • Expected value: Positive number.
    • Default value: 2
  • rightAngleSlashMode (accepts constant)
    • If set to true, renderer will draw right angles using slashes only.
    • Expected value: true or false
    • Default value: false
Connectable properties↑ Hexagonal ASCII interpreter
  • Renderer [IRenderer]
    • Render for rendering of ASCII art. Connected renderer must implement ITextRenderer interface.
Interpretation methods↑ Hexagonal ASCII interpreter
  • Nothing
    • Symbol is ignored.
    • Parameters: 0
  • MoveForward
    • Moves forward (without drawing) by one tile in current direction.
    • Parameters: 0
  • DrawLine
    • Draws line (from characters) in current direction.
    • Parameters: 0
  • TurnLeft
    • Turns left by 60 degrees.
    • Parameters: 0
  • TurnRight
    • Turns right by 60 degrees.
    • Parameters: 0
  • TurnAround
    • Turns by 180 degrees.
    • Parameters: 0
  • StartBranch
    • Saves current state (on stack).
    • Parameters: 0
  • EndBranch
    • Loads previously saved state (returns to last saved position).
    • Parameters: 0
#

Interpreter caller [InterpreterCaller]

Process symbols by calling interpretation methods on connected interpreter. For conversion are used defined interpretation rules in current L-system.

Configuration access names
  • InterpreterCaller
  • Malsys.Processing.Components.Interpreters.InterpreterCaller
Assignable to interfaces↑ Interpreter caller
[IComponent] [IInterpreterCaller] [IProcessComponent] [ISymbolProcessor]
Settable properties↑ Interpreter caller
  • debugInterpretation (accepts constant)
    • True if print debug information about interpretation converting.
    • Expected value: true or false
    • Default value: false
  • interpretWhileDebug (accepts constant)
    • If true, interpreter will interpret symbols while debugging.
    • Expected value: true or false
    • Default value: false
Connectable properties↑ Interpreter caller
#

Turtle interpreter [TurtleInterpreter]

Turtle interpreter interprets symbols as basic 2D or 3D graphics primitives. Interpreting is always in 3D but if it is connected 2D renderer (component with interface IRenderer2D) the Z coordinate is omitted.

Configuration access names
  • TurtleInterpreter
  • Malsys.Processing.Components.Interpreters.TurtleInterpreter
Assignable to interfaces↑ Turtle interpreter
[IComponent] [IInterpreter] [IInterpreter2D] [IInterpreter3D] [IProcessComponent]
Gettable properties↑ Turtle interpreter
  • origin (returns array)
    • Origin (start position) of "turtle".
  • forwardVector (returns array)
    • Forward vector of "turtle".
  • upVector (returns array)
    • Up vector of "turtle".
Settable properties↑ Turtle interpreter
  • origin (accepts array)
    • Origin (start position) of "turtle".
    • Expected value: Array of 2 or 3 numbers representing x, y and optionally z coordinate.
    • Default value: {0, 0, 0}
  • forwardVector (accepts array)
    • Forward vector of "turtle".
    • Expected value: Array of 3 numbers representing x, y and z coordinate.
    • Default value: {1, 0, 0}
  • upVector (accepts array)
    • Up vector of "turtle".
    • Expected value: Array of 3 constants representing x, y and z coordinate.
    • Default value: {0, 1, 0}
  • rotationQuaternion (accepts array)
    • Initial rotation of turtle. Only for experienced users.
    • Expected value: Array of 4 constants representing a quaternion.
    • Default value: {1, 0, 0, 0}
  • initialAngle (accepts constant)
    • Initial angle (in degrees) in 2D mode (angle in plane given by forward and up vectors).
    • Expected value: Number representing initial angle in degrees.
    • Default value: 0
  • initialLineWidth (accepts constant)
    • Initial width of drawn line.
    • Expected value: Number representing initial width. Unit of value depends on used renderer.
    • Default value: 2
  • initialColor (accepts constant or array)
    • Initial color of drawn line.
    • Expected value: Number representing ARGB color (in range from 0 to 2^32 - 1) or array of numbers (in range from 0.0 to 1.0) of length of 3 (RGB) or 4 (ARGB).
    • Default value: 0 (black)
  • continuousColoring (accepts constant or array)
    • Continuous coloring gradient. If enabled all colors will be ignored and given gradient (or default gradient of rainbow) will be used to continuously color all objects.
    • Expected value: Boolean false disables continuous coloring, true uses default rainbow gradient to continuous coloring. Array representing color gradient can be also set (see documentation or examples for syntax).
    • Default value: false
  • continuousColoringRepeat (accepts constant)
    • How many times to repeat the gradient through entire L-system.
    • Expected value: Positive number.
    • Default value: 1
  • reversePolygonOrder (accepts constant)
    • Reverses order of drawn polygons from first-opened last-drawn to first-opened first-drawn. This in only valid when 2D renderer is attached (in 3D is order insignificant).
    • Expected value: true or false
    • Default value: false
  • tropismVector (accepts array)
    • Tropism vector affects drawn or moved lines to derive to tropism vector.
    • Expected value: Array of 3 constants representing x, y and z coordinate.
    • Default value: {0, 1, 0}
  • tropismCoefficient (accepts constant)
    • Tropism coefficient affects speed of derivation to tropism vector.
    • Expected value: Number.
    • Default value: 0
Connectable properties↑ Turtle interpreter
  • Renderer [IRenderer]
    • All render events will be called on connected renderer. Both IRenderer2D or IRenderer3D can be connected.
Interpretation methods↑ Turtle interpreter
  • Nothing
    • Symbol is ignored.
    • Parameters: 0
  • GoTo
    • Moves turtle to given position. Rotation (orientation) is not changed. This method can be called both with coordinates as separate arguments or with array containing coordinates.
    • Parameters: 3
      1. {mandatory} X coordinate or array of two (three) numbers representing vector of x, y (and optionally z coordinate).
      2. Y coordinate (optional, default 0).
      3. Z coordinate (optional, default 0).
  • MoveForward
    • Moves forward in current direction (without drawing) by distance equal to value of the first parameter.
    • Parameters: 1
      1. {mandatory} Moved distance.
  • DrawForward
    • Draws line in current direction with length equal to value of first parameter.
    • Parameters: 4
      1. {mandatory} Length of line.
      2. Width of line.
      3. Color of line. Can be ARGB number in range from 0 to 2^32 - 1 or array with 3 (RGB) or 4 (ARGB) items in range from 0.0 to 1.0.
      4. Quality of rendered line in 3D.
  • DrawCircle
    • Draws circle with center in current position and radius equal to value of the first parameter.
    • Parameters: 2
      1. {mandatory} Radius of circle.
      2. Color of circle.
  • DrawSphere
    • Draws sphere with center in current position and radius equal to value of the first parameter.
    • Parameters: 3
      1. {mandatory} Radius of sphere.
      2. Color of sphere.
      3. Quality of sphere (number of triangles).
  • TurnLeft
    • Turns left by value of the first parameter (in degrees) (in X-Y plane, around axis Z).
    • Parameters: 1
      1. Angle in degrees.
  • Yaw
    • Turns left around up vector axis (default Y axis [0, 1, 0]) by value given in the first parameter (in degrees).
    • Parameters: 1
      1. Angle in degrees.
  • Pitch
    • Turns up around right-hand vector axis (default Z axis [0, 0, 1]) by value given in the first parameter (in degrees).
    • Parameters: 1
      1. Angle in degrees.
  • Roll
    • Rolls clock-wise around forward vector axis (default X axis [1, 0, 0]) by value given in the first parameter (in degrees).
    • Parameters: 1
      1. Angle in degrees.
  • StartBranch
    • Saves current state (on stack).
    • Parameters: 0
  • EndBranch
    • Loads previously saved state (returns to last saved position).
    • Parameters: 0
  • StartPolygon
    • Starts to record polygon vertices (do not saves current position as first vertex). If another polygon is opened, its state is saved and will be restored after closing of current polygon.
    • Parameters: 3
      1. Color of polygon.
      2. Stroke width.
      3. Stroke color.
  • RecordPolygonVertex
    • Records current position to opened polygon.
    • Parameters: 0
  • EndPolygon
    • Ends current polygon (do not saves current position as last vertex).
    • Parameters: 0

Iterators

#

Inner L-system iterator [InnerLsystemIterator]

Specialized iterator for iterating inner L-systems. Axiom is directly in iterator as property to optimize number of components. AxiomProvider property is ignored.

Configuration access names
  • InnerLsystemIterator
  • Malsys.Processing.Components.RewriterIterators.InnerLsystemIterator
Base components↑ Inner L-system iterator
[MemoryBufferedIterator]
Assignable to interfaces↑ Inner L-system iterator
[IComponent] [IIterator] [IProcessComponent] [IProcessStarter] [ISymbolProvider]
Gettable properties↑ Inner L-system iterator
  • currentIteration{run-time only} (returns constant)
    • Number of current iteration. Zero is axiom (no iteration was done), first iteration have number 1 and last is equal to number of all iterations specified by Iterations property.
  • iterations, i{run-time only} (returns constant)
    • Number of iterations to do with current L-system.
Settable properties↑ Inner L-system iterator
  • iterations, i (accepts constant)
    • Number of iterations to do with current L-system.
    • Expected value: Non-negative number representing number of iterations.
    • Default value: 0
  • interpretEveryIteration (accepts constant)
    • If set to true iterator will send symbols from all iterations to connected interpret. Otherwise only result of last iteration is interpreted.
    • Expected value: true or false
    • Default value: false
  • interpretEveryIterationFrom (accepts constant)
    • Sets interprets all iteration from given number.
    • Expected value: positive number (lower than total number of iterations)
    • Default value: none
  • interpretFollowingIterations (accepts array)
    • Array with numbers of iterations which will be interpreted.
    • Expected value: array of numbers
    • Default value: {} (empty array)
  • skipFollowingIterations (accepts array)
    • Array with numbers of iterations which will be skipped (not interpreted). This field have priority over properties which are saying what iterations to interpret.
    • Expected value: array of numbers
    • Default value: {} (empty array)
Settable symbol properties↑ Inner L-system iterator
  • axiom{mandatory}
    • Axiom is directly in iterator to optimize number of components.
Connectable properties↑ Inner L-system iterator
  • AxiomProvider [ISymbolProvider] {optional}
    • To allow not connecting AxiomProvider component.
  • SymbolProvider [ISymbolProvider] {optional}
    • Iterator iterates symbols by reading all symbols from SymbolProvider every iteration. Rewriter should be connected as SymbolProvider and rewriters's SymbolProvider should be this Iterator. This setup creates loop and iterator rewrites string of symbols every iteration. When number of iterations is set to 0 (of left default as 0) only axiom is used and this that case this property can be left unconnected.
  • OutputProcessor [ISymbolProcessor]
    • Result string of symbols is sent to connected output processor. It should be InterpretrCaller who calls Interpreter and interprets symbols.
  • RandomGeneratorProvider [RandomGeneratorProvider] {optional}
    • Connected RandomGeneratorProvider's random generator is rested after each iteration if iterator is configured to do that (ResetRandomAfterEachIteration property is set to true).
#

Memory-buffered iterator [MemoryBufferedIterator]

Iterates L-system from connected symbol provider with connected rewriter. Buffers symbols from rewriter in the memory.

Configuration access names
  • MemoryBufferedIterator
  • Malsys.Processing.Components.RewriterIterators.MemoryBufferedIterator
Derived components↑ Memory-buffered iterator
[InnerLsystemIterator]
Assignable to interfaces↑ Memory-buffered iterator
[IComponent] [IIterator] [IProcessComponent] [IProcessStarter] [ISymbolProvider]
Gettable properties↑ Memory-buffered iterator
  • currentIteration{run-time only} (returns constant)
    • Number of current iteration. Zero is axiom (no iteration was done), first iteration have number 1 and last is equal to number of all iterations specified by Iterations property.
  • iterations, i{run-time only} (returns constant)
    • Number of iterations to do with current L-system.
Settable properties↑ Memory-buffered iterator
  • iterations, i (accepts constant)
    • Number of iterations to do with current L-system.
    • Expected value: Non-negative number representing number of iterations.
    • Default value: 0
  • interpretEveryIteration (accepts constant)
    • If set to true iterator will send symbols from all iterations to connected interpret. Otherwise only result of last iteration is interpreted.
    • Expected value: true or false
    • Default value: false
  • interpretEveryIterationFrom (accepts constant)
    • Sets interprets all iteration from given number.
    • Expected value: positive number (lower than total number of iterations)
    • Default value: none
  • interpretFollowingIterations (accepts array)
    • Array with numbers of iterations which will be interpreted.
    • Expected value: array of numbers
    • Default value: {} (empty array)
  • skipFollowingIterations (accepts array)
    • Array with numbers of iterations which will be skipped (not interpreted). This field have priority over properties which are saying what iterations to interpret.
    • Expected value: array of numbers
    • Default value: {} (empty array)
Connectable properties↑ Memory-buffered iterator
  • SymbolProvider [ISymbolProvider] {optional}
    • Iterator iterates symbols by reading all symbols from SymbolProvider every iteration. Rewriter should be connected as SymbolProvider and rewriters's SymbolProvider should be this Iterator. This setup creates loop and iterator rewrites string of symbols every iteration. When number of iterations is set to 0 (of left default as 0) only axiom is used and this that case this property can be left unconnected.
  • AxiomProvider [ISymbolProvider]
    • Axiom provider component provides initial string of symbols. All symbols are read at begin of processing.
  • OutputProcessor [ISymbolProcessor]
    • Result string of symbols is sent to connected output processor. It should be InterpretrCaller who calls Interpreter and interprets symbols.
  • RandomGeneratorProvider [RandomGeneratorProvider] {optional}
    • Connected RandomGeneratorProvider's random generator is rested after each iteration if iterator is configured to do that (ResetRandomAfterEachIteration property is set to true).

Other

#

EmptyRenderer [EmptyRenderer]

Renderer which does nothing.

Configuration access names
  • EmptyRenderer
  • Malsys.Processing.Components.Renderers.EmptyRenderer
Assignable to interfaces↑ EmptyRenderer
[IComponent] [IProcessComponent] [IRenderer] [IRenderer2D] [IRenderer3D]
#

SimpleEnvironmentModule [SimpleEnvironmentModule]

Configuration access names
  • SimpleEnvironmentModule
  • ExamplePlugin.Components.SimpleEnvironmentModule
Assignable to interfaces↑ SimpleEnvironmentModule
[IComponent] [IProcessComponent] [ISymbolProvider]
Settable properties↑ SimpleEnvironmentModule
  • envScale (accepts constant)
    • Scale of environment.
    • Expected value: Positive number.
    • Default value: 1
Connectable properties↑ SimpleEnvironmentModule
Callable functions↑ SimpleEnvironmentModule
  • canLive{run-time only} (returns constant)
    • Parameters: 0
  • getEnvValue{run-time only} (returns constant)
    • Parameters: 0
  • getEnvPosition{run-time only} (returns array)
    • Parameters: 0

Plugin

#

Symbol filter [SymbolFilter]

Filters symbol stream.

Configuration access names
  • SymbolFilter
  • ExamplePlugin.Components.SymbolFilter
Assignable to interfaces↑ Symbol filter
[IComponent] [IProcessComponent] [ISymbolProcessor]
Settable symbol properties↑ Symbol filter
  • ignore
    • List of ignored symbols.
Connectable properties↑ Symbol filter

Renderers

#

2D renderer base [BaseRenderer2D] {abstract}

Provides implementation of common functionality of all 2D renderers.

Configuration access names
  • BaseRenderer2D
  • Malsys.Processing.Components.Renderers.BaseRenderer2D
Derived components↑ 2D renderer base
[GdiBitmapRenderer] [PngAnimationRenderer] [SvgRenderer2D]
Derived interfaces↑ 2D renderer base
[IComponent] [IProcessComponent] [IRenderer] [IRenderer2D]
#

2D renderer debugger [DebugRenderer2D]

Prints called commands instead of creating some 2D output. This is handy if 2D renderer is debugged.

Configuration access names
  • DebugRenderer2D
  • Malsys.Processing.Components.Renderers.DebugRenderer2D
Base components↑ 2D renderer debugger
[DebugRendererBase]
Assignable to interfaces↑ 2D renderer debugger
[IComponent] [IProcessComponent] [IRenderer] [IRenderer2D]
#

2D SVG renderer [SvgRenderer2D]

Provides commands for rendering 2D image. Result is vector image in SVG (Scalable Vector Graphics, plain text XML). Result is by default compressed by GZip (svgz).

Configuration access names
  • SvgRenderer2D
  • Malsys.Processing.Components.Renderers.SvgRenderer2D
Base components↑ 2D SVG renderer
[BaseRenderer2D]
Assignable to interfaces↑ 2D SVG renderer
[IComponent] [IProcessComponent] [IRenderer] [IRenderer2D]
Settable properties↑ 2D SVG renderer
  • margin (accepts constant or array)
    • Margin of result image. Margin is not applied if canvas size is specified.
    • Expected value: One number (or array with one number) for size of all (top, right, bottom and left) margins, array of two numbers for vertical and horizontal margins, or array of four numbers as top, right, bottom and left margin respectively.
    • Default value: 2
  • canvasOriginSize (accepts array)
    • When set it overrides measured dimensions of image and uses given values. Setting this value can significantly improve performance because this component will not need measure pass before rendering. However some other component in the system may need the measure pass as well so performance may not be improved.
    • Expected value: Four numbers representing x, y, width and height of canvas.
    • Default value: none
  • scaleOutputToFit (accepts array)
    • When set the output is scaled to fit given rectangle (width and height).
    • Expected value: Array of two numbers representing maximum width and height of the output.
    • Default value: none
  • compressSvg (accepts constant)
    • If set to true result SVG image is compressed by GZip (resulting in SVGZ). GZipped SVG images are standard and all programs supporting SVG should be able to open it. GZipping SVG significantly reduces its size.
    • Expected value: true or false
    • Default value: true
  • optimizeSvg (accepts constant)
    • If set to true, renderer will try to optimize result SVG markup to be as smallest as possible. Optimized and un-optimized SVGs might be rendered slightly differently.
    • Expected value: true or false
    • Default value: true
  • overoptimizeSvg (accepts constant)
    • If set to true, renderer will try to group elements to save as much characters as possible. This will change z-order of rendered shapes and it is likely that over-optimized SVG will be rendered differently than non-optimized.
    • Expected value: true or false
    • Default value: false
  • scale (accepts constant)
    • Scale of result image.
    • Expected value: Positive number.
    • Default value: 1
  • lineCap (accepts constant)
    • Cap of each rendered line.
    • Expected value: 0 for no caps, 1 for square caps, 2 for round caps
    • Default value: 2 (round caps)
  • outputSignificantDigitsCount (accepts constant)
    • Number of significant digits in of printed coordinates.
    • Expected value: Positive integer.
    • Default value: 4
  • bgColor (accepts constant or array)
    • Background color of rendered image.
    • Expected value: Number representing ARGB color (in range from 0 to 2^32 - 1) or array of numbers (in range from 0.0 to 1.0) of length of 3 (RGB) or 4 (ARGB).
    • Default value: transparent
#

3D renderer base [BaseRenderer3D] {abstract}

Provides implementation of common functionality of all 3D renderers.

Configuration access names
  • BaseRenderer3D
  • Malsys.Processing.Components.Renderers.BaseRenderer3D
Derived components↑ 3D renderer base
[ObjExporter3D]
Derived interfaces↑ 3D renderer base
[IComponent] [IProcessComponent] [IRenderer] [IRenderer3D]
#

3D renderer debugger [DebugRenderer3D]

Prints called commands instead of creating some 3D output. This is handy if 3D scene renderer is debugged.

Configuration access names
  • DebugRenderer3D
  • Malsys.Processing.Components.Renderers.DebugRenderer3D
Base components↑ 3D renderer debugger
[DebugRendererBase]
Assignable to interfaces↑ 3D renderer debugger
[IComponent] [IProcessComponent] [IRenderer] [IRenderer3D]
#

GDI Bitmap renderer [GdiBitmapRenderer]

Provides commands for rendering 2D image. Result is bitmap image in png, jpg or gif format (user settable).

Configuration access names
  • GdiBitmapRenderer
  • Malsys.BitmapRenderers.Components.GdiBitmapRenderer
Base components↑ GDI Bitmap renderer
[BaseRenderer2D]
Derived components↑ GDI Bitmap renderer
[PngAnimationRenderer]
Assignable to interfaces↑ GDI Bitmap renderer
[IComponent] [IProcessComponent] [IRenderer] [IRenderer2D]
Settable properties↑ GDI Bitmap renderer
  • margin (accepts constant or array)
    • Margin of result image. Margin is not applied if canvas size is specified, however, it is used as margin for trimmed images (if AutoTrim is true).
    • Expected value: One number (or array with one number) for size of all (top, right, bottom and left) margins, array of two numbers for vertical and horizontal margins, or array of four numbers as top, right, bottom and left margin respectively.
    • Default value: 2
  • canvasOriginSize (accepts array)
    • When set it overrides measured dimensions of image and uses given values. Setting this value can significantly improve performance because this component will not need measure pass before rendering. However some other component in the system may need the measure pass as well so performance may not be improved.
    • Expected value: Array of four numbers representing x, y, width and height of canvas.
    • Default value: none
  • scaleOutputToFit (accepts array)
    • When set the output is scaled to fit given rectangle (width and height).
    • Expected value: Array of two numbers representing maximum width and height of the output.
    • Default value: none
  • scale (accepts constant)
    • Scale of result image.
    • Expected value: Positive number.
    • Default value: 1
  • lineCap (accepts constant)
    • Cap of each rendered line.
    • Expected value: 0 for no caps, 1 for square caps, 2 for round caps
    • Default value: 2 (round caps)
  • bgColor (accepts constant or array)
    • Background color of rendered image. Some output formats may not support transparent backgrounds.
    • Expected value: Number representing ARGB color (in range from 0 to 2^32 - 1) or array of numbers (in range from 0.0 to 1.0) of length of 3 (RGB) or 4 (ARGB).
    • Default value: #FFFFFF (white)
  • outputBitmapType (accepts constant)
    • Type of output bitmap.
    • Expected value: 0 for png, 1 for jpeg, 2 for gif
    • Default value: 0 (png)
  • autoTrim (accepts constant)
    • Trims empty areas of the image. This option works only if canvas size and origin is explicitly set (otherwise result image is "trimmed" automatically). Moreover, metadata about original position in non-trimmed image are saved to allow reconstruct original image.
    • Expected value: boolean (true of false)
    • Default value: false
  • antiAlias (accepts constant)
    • If set to false rendering will not be "anti-aliased (image may seem to be less detailed). However some images are "blurry" with anti-aliased rendering and also turning off anti-aliasing may improve performance and output size may be significantly smaller.
    • Expected value: boolean (true of false)
    • Default value: true
#

OBJ exporter [ObjExporter3D]

Provides commands for rendering 3D scene. Returns a 3D model in OBJ format together with MTL material description for colors.

Configuration access names
  • ObjExporter3D
  • Malsys.Processing.Components.Renderers.ObjExporter3D
Base components↑ OBJ exporter
[BaseRenderer3D]
Assignable to interfaces↑ OBJ exporter
[IComponent] [IProcessComponent] [IRenderer] [IRenderer3D]
Settable properties↑ OBJ exporter
  • polygonTriangulationStrategy (accepts constant)
    • Polygon triangulation strategy.
    • Expected value: 0 for "fan from first point", 1 triangles with minimal angle are prioritized, 2 triangles with maximal angle are prioritized, 3 triangles with maximal distance from all other points are prioritized, 4 triangles with maximal distance from not-yet-triangulated points are prioritized
    • Default value: 2
  • addSuffixToFileNames (accepts constant)
  • detectPlanarPloygons (accepts constant)
    • Set to false to turn off (crappy) detection of planar polygons and potentially speedup processing.
    • Expected value: Number.
    • Default value: true
  • cameraPosition (accepts array)
    • Camera position. If not set it is counted automatically.
    • Expected value: Array 3 numbers representing x, y and z coordinate of camera position.
    • Default value: counted dynamically
  • cameraUpVector (accepts array)
    • Camera up vector.
    • Expected value: Array 3 numbers representing x, y and z up vector of camera.
    • Default value: {0, 1, 0}
  • cameraTarget (accepts array)
    • Camera target. If not set it is counted automatically.
    • Expected value: Array 3 numbers representing x, y and z coordinate of camera target.
    • Default value: counted dynamically
  • bgColor (accepts constant or array)
    • Background color of rendered image. Some output formats may not support transparent backgrounds.
    • Expected value: Number representing ARGB color (in range from 0 to 2^32 - 1) or array of numbers (in range from 0.0 to 1.0) of length of 3 (RGB) or 4 (ARGB).
    • Default value: #FFFFFF (white)
#

Png animation renderer [PngAnimationRenderer]

Crates animation from PNG images.

Configuration access names
  • PngAnimationRenderer
  • Malsys.BitmapRenderers.Components.PngAnimationRenderer
Base components↑ Png animation renderer
[GdiBitmapRenderer]
Assignable to interfaces↑ Png animation renderer
[IComponent] [IProcessComponent] [IRenderer] [IRenderer2D]
Settable properties↑ Png animation renderer
  • frameDelay (accepts constant)
    • Delay between frames in seconds.
    • Expected value: Positive number.
    • Default value: 0.5
  • margin (accepts constant or array)
    • Margin of result image. Margin is not applied if canvas size is specified, however, it is used as margin for trimmed images (if AutoTrim is true).
    • Expected value: One number (or array with one number) for size of all (top, right, bottom and left) margins, array of two numbers for vertical and horizontal margins, or array of four numbers as top, right, bottom and left margin respectively.
    • Default value: 2
  • canvasOriginSize (accepts array)
    • When set it overrides measured dimensions of image and uses given values. Setting this value can significantly improve performance because this component will not need measure pass before rendering. However some other component in the system may need the measure pass as well so performance may not be improved.
    • Expected value: Array of four numbers representing x, y, width and height of canvas.
    • Default value: none
  • scaleOutputToFit (accepts array)
    • When set the output is scaled to fit given rectangle (width and height).
    • Expected value: Array of two numbers representing maximum width and height of the output.
    • Default value: none
  • scale (accepts constant)
    • Scale of result image.
    • Expected value: Positive number.
    • Default value: 1
  • lineCap (accepts constant)
    • Cap of each rendered line.
    • Expected value: 0 for no caps, 1 for square caps, 2 for round caps
    • Default value: 2 (round caps)
  • bgColor (accepts constant or array)
    • Background color of rendered image. Some output formats may not support transparent backgrounds.
    • Expected value: Number representing ARGB color (in range from 0 to 2^32 - 1) or array of numbers (in range from 0.0 to 1.0) of length of 3 (RGB) or 4 (ARGB).
    • Default value: #FFFFFF (white)
  • outputBitmapType (accepts constant)
    • Type of output bitmap.
    • Expected value: 0 for png, 1 for jpeg, 2 for gif
    • Default value: 0 (png)
  • autoTrim (accepts constant)
    • Trims empty areas of the image. This option works only if canvas size and origin is explicitly set (otherwise result image is "trimmed" automatically). Moreover, metadata about original position in non-trimmed image are saved to allow reconstruct original image.
    • Expected value: boolean (true of false)
    • Default value: false
  • antiAlias (accepts constant)
    • If set to false rendering will not be "anti-aliased (image may seem to be less detailed). However some images are "blurry" with anti-aliased rendering and also turning off anti-aliasing may improve performance and output size may be significantly smaller.
    • Expected value: boolean (true of false)
    • Default value: true
#

Renderer debugger base [DebugRendererBase] {abstract}

Provides common functionality for renderer debuggers.

Configuration access names
  • DebugRendererBase
  • Malsys.Processing.Components.Renderers.DebugRendererBase
Derived components↑ Renderer debugger base
[DebugRenderer2D] [DebugRenderer3D]
Derived interfaces↑ Renderer debugger base
[IComponent] [IProcessComponent] [IRenderer]
#

Text renderer [TextRenderer]

Provides commands for rendering plain text ASCII art.

Configuration access names
  • TextRenderer
  • Malsys.Processing.Components.Renderers.TextRenderer
Assignable to interfaces↑ Text renderer
[IComponent] [IProcessComponent] [IRenderer] [ITextRenderer]

Rewriters

#

Symbol rewriter [SymbolRewriter]

Full featured symbol rewriter which rewrites symbols based on defined rewrite rules in the L-system. It is capable to rewrite symbol based all criteria of Malsys' rewrite rules. Rewriting is initiated by symbol request (by enumerator). Then rewriter takes as many symbols from connected symbol provider as is needed for rewriting the symbol. If contexts (or branches) are long it may load many symbols before returning single one.

Configuration access names
  • SymbolRewriter
  • Malsys.Processing.Components.Rewriters.SymbolRewriter
Assignable to interfaces↑ Symbol rewriter
[IComponent] [IProcessComponent] [IRewriter] [ISymbolProvider]
Settable properties↑ Symbol rewriter
  • reportStatistics (accepts constant)
    • Set to true to report statistics.
    • Expected value: Boolean.
    • Default value: false
Settable symbol properties↑ Symbol rewriter
  • contextIgnore
    • List of symbols which are ignored in context checking.
  • startBranchSymbols
    • List of symbols which are indicating start of branch. This symbols should be identical to symbols which are interpreted as start branch.
  • endBranchSymbols
    • List of symbols which are indicating end of branch. This symbols should be identical to symbols which are interpreted as end branch.
Connectable properties↑ Symbol rewriter

Special

#

Constants dumper [ConstantsDumper]

Prints all defined constants from the global scope. To be able to use this component you will need to process some L-system with it. It is possible to define an empty L-system or you can use the Constants L-system from the standard library. The process statement may look like this: process Constants with ConstantDumper;

Configuration access names
  • ConstantsDumper
  • Malsys.Processing.Components.Common.ConstantsDumper
Assignable to interfaces↑ Constants dumper
[IComponent] [IProcessStarter]
Settable properties↑ Constants dumper
  • DumpAllConstants (accepts constant)
    • Default behavior is to print only constants in main input. If this is set to true all constants will be printed.
    • Expected value: true or false
    • Default value: false
#

Inner L-system processor [LsystemInLsystemProcessor]

This is special component for interpreting an L-system symbol as another L-system. The symbol is processed by newly created component system but interpretation calls are processed with all the components in the original system.

Configuration access names
  • LsystemInLsystemProcessor
  • Malsys.Processing.Components.Common.LsystemInLsystemProcessor
Assignable to interfaces↑ Inner L-system processor
[ILsystemInLsystemProcessor] [IComponent]
#

Symbols memory buffer [SymbolsMemoryBuffer]

Saves all processed symbols to the memory buffer. This component is used especially in the unit tests where printing of processed symbols is not desired. If the user do not have access to the instance of this component there is no way how to get saved symbols.

Configuration access names
  • SymbolsMemoryBuffer
  • Malsys.Processing.Components.Common.SymbolsMemoryBuffer
Assignable to interfaces↑ Symbols memory buffer
[IComponent] [IProcessComponent] [ISymbolProcessor]

Interfaces (containers)

Common

#

Starter component interface [IProcessStarter]

Process starters are specialized components that starts processing. This type of component can by only one per process configuration.

Configuration access names
  • IProcessStarter
  • Malsys.Processing.Components.IProcessStarter
Derived components↑ Starter component interface
[ConstantsDumper] [InnerLsystemIterator] [MemoryBufferedIterator]
Derived interfaces↑ Starter component interface
[IComponent]
Derived interfaces↑ Starter component interface
[IIterator]
#

Symbol processor component interface [ISymbolProcessor]

Symbol processors are components that are called to process symbols. Processing is passive, their work is initiated by sending L-system symbols to them.

Configuration access names
  • ISymbolProcessor
  • Malsys.Processing.Components.ISymbolProcessor
Derived components↑ Symbol processor component interface
[SymbolFilter] [SymbolsMemoryBuffer] [SymbolsSaver] [InterpreterCaller]
Derived interfaces↑ Symbol processor component interface
[IComponent] [IProcessComponent]
Derived interfaces↑ Symbol processor component interface
[IInterpreterCaller]
#

Symbol provider component interface [ISymbolProvider]

Symbol providers are components that are called to receive symbols. Processing is passive, their work is initiated by asking for L-system symbols.

Configuration access names
  • ISymbolProvider
  • Malsys.Processing.Components.ISymbolProvider
Derived components↑ Symbol provider component interface
[SimpleEnvironmentModule] [AxiomProvider] [SymbolProvider] [InnerLsystemIterator] [MemoryBufferedIterator] [SymbolRewriter]
Derived interfaces↑ Symbol provider component interface
[IComponent] [IProcessComponent]
Derived interfaces↑ Symbol provider component interface
[IIterator] [IRewriter]

Interpreters

#

2D interpreter interface [IInterpreter2D]

2D interpreters interprets L-system symbols as image on 2D canvas.

Configuration access names
  • IInterpreter2D
  • Malsys.Processing.Components.Interpreters.IInterpreter2D
Derived components↑ 2D interpreter interface
[TurtleInterpreter]
Derived interfaces↑ 2D interpreter interface
[IComponent] [IInterpreter] [IProcessComponent]
Interpretation methods↑ 2D interpreter interface
  • Nothing
    • Symbol is ignored.
    • Parameters: 0
  • MoveForward
    • Moves forward in current direction (without drawing).
    • Parameters: 0
  • DrawForward
    • Draws line in current direction.
    • Parameters: 0
  • DrawCircle
    • Draws circle with center in current position.
    • Parameters: 0
  • TurnLeft
    • Turns left.
    • Parameters: 0
  • StartBranch
    • Saves current state (on stack).
    • Parameters: 0
  • EndBranch
    • Loads previously saved state (returns to last saved position).
    • Parameters: 0
  • StartPolygon
    • Starts to record polygon vertices.
    • Parameters: 0
  • RecordPolygonVertex
    • Records current position to opened polygon.
    • Parameters: 0
  • EndPolygon
    • Ends current polygon.
    • Parameters: 0
#

3D interpreter interface [IInterpreter3D]

3D interpreters interprets L-system symbols as scene in 3D space.

Configuration access names
  • IInterpreter3D
  • Malsys.Processing.Components.Interpreters.IInterpreter3D
Derived components↑ 3D interpreter interface
[TurtleInterpreter]
Derived interfaces↑ 3D interpreter interface
[IComponent] [IInterpreter] [IProcessComponent]
Interpretation methods↑ 3D interpreter interface
  • Nothing
    • Symbol is ignored.
    • Parameters: 0
  • MoveForward
    • Moves forward in current direction (without drawing).
    • Parameters: 0
  • DrawForward
    • Draws line in current direction.
    • Parameters: 0
  • DrawSphere
    • Draws sphere with center in current position.
    • Parameters: 0
  • Yaw
    • Turns left around up vector axis.
    • Parameters: 0
  • Pitch
    • Turns up around right-hand vector axis.
    • Parameters: 0
  • Roll
    • Rolls clock-wise around forward vector axis.
    • Parameters: 0
  • StartBranch
    • Saves current state (on stack).
    • Parameters: 0
  • EndBranch
    • Loads previously saved state (returns to last saved position).
    • Parameters: 0
  • StartPolygon
    • Starts to record polygon vertices.
    • Parameters: 0
  • RecordPolygonVertex
    • Records current position to opened polygon.
    • Parameters: 0
  • EndPolygon
    • Ends current polygon.
    • Parameters: 0
#

Interpreter caller interface [IInterpreterCaller]

Interpreter callers are responsible for converting symbols for calls of interpreter methods.

Configuration access names
  • IInterpreterCaller
  • Malsys.Processing.Components.IInterpreterCaller
Derived components↑ Interpreter caller interface
[InterpreterCaller]
Derived interfaces↑ Interpreter caller interface
[IComponent] [IProcessComponent] [ISymbolProcessor]
#

Interpreter interface [IInterpreter]

Interpreters are responsible for interpreting symbols of L-system.

Configuration access names
  • IInterpreter
  • Malsys.Processing.Components.IInterpreter
Derived components↑ Interpreter interface
[HexaAsciiInterpreter] [TurtleInterpreter]
Derived interfaces↑ Interpreter interface
[IComponent] [IProcessComponent]
Derived interfaces↑ Interpreter interface
[IInterpreter2D] [IInterpreter3D]

Iterators

#

Iterator interface [IIterator]

Iterators are responsible for iterating L-system to desired number of iterations.

Configuration access names
  • IIterator
  • Malsys.Processing.Components.IIterator
Derived components↑ Iterator interface
[InnerLsystemIterator] [MemoryBufferedIterator]
Derived interfaces↑ Iterator interface
[IComponent] [IProcessComponent] [IProcessStarter] [ISymbolProvider]
Settable properties↑ Iterator interface
  • Iterations (accepts constant)
    • Number of iterations to do with current L-system.
Connectable properties↑ Iterator interface
  • SymbolProvider [ISymbolProvider]
    • Iterator iterates symbols by reading all symbols from SymbolProvider every iteration. Usually Rewriter is connected as SymbolProvider and rewriters's SymbolProvider is Iterator. This setup creates loop and iterator rewrites string of symbols every iteration.
  • AxiomProvider [ISymbolProvider]
    • Axiom provider component provides initial string of symbols.
  • OutputProcessor [ISymbolProcessor]
    • Result string of symbols is sent to connected output processor. Usually it is InterpretrCaller who calls Interpreter and interprets symbols.

Renderers

#

2D renderer interface [IRenderer2D]

Provides commands for rendering of 2D image.

Configuration access names
  • IRenderer2D
  • Malsys.Processing.Components.Renderers.IRenderer2D
Derived components↑ 2D renderer interface
[GdiBitmapRenderer] [PngAnimationRenderer] [BaseRenderer2D] [DebugRenderer2D] [EmptyRenderer] [SvgRenderer2D]
Derived interfaces↑ 2D renderer interface
[IComponent] [IProcessComponent] [IRenderer]
#

3D renderer interface [IRenderer3D]

Provides commands for rendering of 3D scene.

Configuration access names
  • IRenderer3D
  • Malsys.Processing.Components.Renderers.IRenderer3D
Derived components↑ 3D renderer interface
[BaseRenderer3D] [DebugRenderer3D] [EmptyRenderer] [ObjExporter3D]
Derived interfaces↑ 3D renderer interface
[IComponent] [IProcessComponent] [IRenderer]
#

Renderer component interface [IRenderer]

Renderer components are usually connected to interpreters and they produce actual output.

Configuration access names
  • IRenderer
  • Malsys.Processing.Components.IRenderer
Derived components↑ Renderer component interface
[GdiBitmapRenderer] [PngAnimationRenderer] [BaseRenderer2D] [BaseRenderer3D] [DebugRenderer2D] [DebugRenderer3D] [DebugRendererBase] [EmptyRenderer] [ObjExporter3D] [SvgRenderer2D] [TextRenderer]
Derived interfaces↑ Renderer component interface
[IComponent] [IProcessComponent]
Derived interfaces↑ Renderer component interface
[IRenderer2D] [IRenderer3D] [ITextRenderer]
#

Text renderer interface [ITextRenderer]

Provides commands for rendering plain text.

Configuration access names
  • ITextRenderer
  • Malsys.Processing.Components.Renderers.ITextRenderer
Derived components↑ Text renderer interface
[TextRenderer]
Derived interfaces↑ Text renderer interface
[IComponent] [IProcessComponent] [IRenderer]

Rewriters

#

Symbol rewriter interface [IRewriter]

Rewriters are responsible for rewriting L-system symbols by defined rewrite rules.

Configuration access names
  • IRewriter
  • Malsys.Processing.Components.IRewriter
Derived components↑ Symbol rewriter interface
[SymbolRewriter]
Derived interfaces↑ Symbol rewriter interface
[IComponent] [IProcessComponent] [ISymbolProvider]

Special

#

Inner L-system processor interface [ILsystemInLsystemProcessor]

This is special interface component for interpreting L-system symbol as another L-system.

Configuration access names
  • ILsystemInLsystemProcessor
  • Malsys.Processing.Components.Common.ILsystemInLsystemProcessor
Derived components↑ Inner L-system processor interface
[LsystemInLsystemProcessor]
Derived interfaces↑ Inner L-system processor interface
[IComponent]