[
  {
    "path": "LICENSE",
    "content": "# nimgame2\n# Copyright (c) 2016-2020 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\n"
  },
  {
    "path": "README.md",
    "content": "Nimgame 2\n=========\n\nA simple 2D game engine for Nim language.\n\nFor more information check [home page](https://vladar4.github.io/nimgame2/).\n\n[Coding style guide](STYLE.md) for the contributors.\n\nAll pull requests should be done into the **devel** branch.\n\nStatus: v0.6.2 alpha\n--------------------\n\n\nRequires:\n---------\n\n* [sdl2_nim](https://github.com/Vladar4/sdl2_nim) package (v2.0.14.2 or newer).\n* Runtime libraries for:\n  * SDL 2.0.12 or newer\n  * SDL_gfx 1.0.1\n  * SDL_image 2.0.2\n  * SDL_mixer 2.0.2\n  * SDL_ttf 2.0.14\n(see [SDL2 links](https://github.com/Vladar4/sdl2_nim/blob/master/LINKS.md))\n\n\nOptional dependencies:\n----------------------\n\n* For plugin/mpeggraphic\n  * mpg123 runtime library (dll is distributed within SDL_)\n* For plugin/tar:\n  * [zip](https://github.com/nim-lang/zip)\n  * zlib runtime library (dll is distributed within SDL2_image builds)\n* For plugin/zzip:\n  * [zip](https://github.com/nim-lang/zip)\n  * zlib runtime library (dll is distributed within SDL2_image builds)\n  * zzip runtime library\n\n\nInstallation through [Nimble](https://github.com/nim-lang/nimble):\n------------------------------------------------------------------\n\n* stable version: `nimble install nimgame2@#head`\n* development version: `nimble install nimgame2@#devel`\n\n\nRecommended compilation flags:\n------------------------------\n`--multimethods:on -d:release --opt:speed`\n\n\nLinks:\n------\n\n* [home page](https://vladar4.github.io/nimgame2/)\n* [demos](demos)\n* [tutorials](https://vladar4.github.io/nimgame2/tutorials)\n* [documentation](https://vladar4.github.io/nimgame2/docs.html)\n* [ng2planetoids](https://github.com/Vladar4/ng2planetoids) - first demo game.\n* [ng2gggrotto](https://github.com/Vladar4/ng2gggrotto) - Linux Game Jam 2017 entry.\n\n\nChangelog:\n----------\n\n### v0.6.2 alpha (2021-08-20)\n* Maintenance release to keep up with the current versions of Nim and sdl2_nim until v0.7 is ready\n\n### v0.6.1 alpha (2019-06-15)\n* Nim v0.20.0 transition\n\n### v0.6 alpha (2019-01-21)\n* new modules: typewriter\n* new plugins: mpeggraphic (+demo22), tar, zzip\n* new utils procedures: textureFormat, textureFormats, toSeq, neg, new rand procedures\n* color constants\n* audio: playing template\n* emitter: emission areas, procedure argument for emit\n* entity: animation callback, blinking, scale parameters, dim template (by [CodeDoes](https://github.com/CodeDoes))\n* input: mouse wheel events (by [CodeDoes](https://github.com/CodeDoes))\n* icon surface init option\n* RW loading procedures\n* simplified time counters\n* demo23 (transform) (by [CodeDoes](https://github.com/CodeDoes))\n* various minor changes and upgrades, code refactoring\n* Nim v0.19.0 transition\n\n\n### v0.5 alpha (2017-08-01)\n* changed physics and logic systems\n* platformer physics\n* CoordInt type\n* now collider module is autmatically included into the entity module\n* group collider\n* huge Tilemap optimizations\n* various utility Tilemap procedures\n* TextureGraphic.drawTiled\n* GUI:\n  * GUIProgressBar\n  * widget actions\n* various minor changes and upgrades\n* Nim v0.17.0 transition\n* documentation, snippets, and demos update\n* [second tutorial](https://vladar4.github.io/nimgame2/tut102_platformer.html)\n\n### v0.4 alpha (2017-05-04)\n* GUI:\n  * RadioGroup\n  * RadioButton\n* IndexedImage\n* PerspectiveImage\n* TextureAtlas\n* joysticks support\n* window management procedures\n* 4 new demos\n* [first tutorial](https://vladar4.github.io/nimgame2/tut101_bounce.html)\n\n\n### v0.3 alpha (2017-03-10)\n* camera property (Scene)\n* new collision procedures\n* reworked input\n* Mosaic\n* parallax property (Entity)\n* TextField\n* GUI:\n  * Widget\n  * Button\n  * TextInput\n* 3 new demos\n* home page, snippets, and documentation\n\n### v0.2 alpha (2017-01-31)\n* collider optimizations\n* music playlists\n* random procedures\n* tilemaps\n* tweens\n* emitters\n* various fixes\n* 4 new demos\n\n### v0.1 alpha (2017-01-16)\n* base scene/entity system\n* assets manager\n* basic sound and music\n* colliders (point, box, circle, line, and polygon)\n* fonts (bitmap and TrueType) and text output\n* keyboard and mouse input\n* vector drawing procedures\n\n"
  },
  {
    "path": "STYLE.md",
    "content": "Nimgame 2 code formatting style\n===============================\n\nIn general, follow [NEP1](https://nim-lang.org/docs/nep1.html) if it doesn't contradict this document.\n\n\nLine Spacing\n------------\n* two empty lines before and one empty line after the header-comment;\n* two empty lines between blocks (such as `const`, `type`, `proc`, etc.);\n* one empty line to separate segments inside these blocks if needed;\n* one empty line at the end of files.\n\n\nComments\n--------\n\n* if there is more than one type declared in one module, their procedures should be separated with header-comments:\n  ```\n  #==========#\n  # SomeType #\n  #==========#\n  ```\n* documentation comments are always offset by one indentation level inside their procedures, have two spaces before their text, and one empty comment line to separate it from the code below.\n  ```\n  proc someProc() =\n    ##  Documentation comment.\n    ##\n    var someVar\n    ...\n  ```\n\n\nNaming\n------\n* types and constants in PascalCase;\n* all other identifiers in camelCase;\n* if an object is a first argument of a procedure, generally it should be named after its type, e.g.:\n  ```\n  proc foo(bar: Bar, val: int): int =\n  ```\n\n\nObjects\n-------\n* private and public fields should be separated with comments if possible;\n* `ref object` types should have the following initialization scheme:\n  ```\n  type SomeType = ref object of SomeParent\n    someValue*: int\n\n\n  proc initSomeType*(someType: SomeType) =\n    someType.initSomeParent() # don't forget the parent initialization\n    SomeType.someValue = 0\n    ...\n\n\n  proc newSomeType*(): SomeType =\n    result = new SomeType\n    result.initSomeType()\n  ```\n* types that are inherited from the `Entity` type should follow the following update scheme:\n  ```\n  type\n    SomeEntity = ref object of Entity\n\n\n  proc updateSomeEntity*(someEntity: SomeEntiy, elapsed: float) =\n    someEntity.updateEntity(elapsed) # don't forget the parent update\n    ...\n\n\n  method update*(someEntity: SomeEntiy, elapsed: float) =\n    updateSomeEntity(someEntity, elapsed)\n  ```\n\n\nCode\n----\n* don't forget proper spaces between elements;\n* procedural arguments are separated by commas, e.g.:\n  ```\n  proc someProc(arg1: int, arg2, arg3: float): float =\n  ```\n* if there are a lot of arguments, they could be brought to a new line and indented by two levels for the sake of readability, e.g.:\n  ```\n  proc someLongAndComplexProcedure(\n      arg1, arg2, arg3, arg4: int\n      arg5, arg6, arg7, arg8: float) =\n    ## Documentation\n    ##\n    ...\n  ```\n\n\nExample\n-------\n  ```\n  # Header\n\n  type\n    SomeType1 = object\n      # Private\n      fHidden: int\n      # Public\n      value*: int\n\n    SomeType2 = object\n      a, b*: float\n\n\n  const\n    SomeConst1 = 42\n\n\n  proc someProc*(arg1: int): int =\n    ...\n\n\n  #===========#\n  # SomeType1 #\n  #===========#\n\n  proc someProc1*(someType1: SomeType1, a, b: int) =\n    ...\n\n\n  #===========#\n  # SomeType2 #\n  #===========#\n\n  ...\n\n  ```\n\n"
  },
  {
    "path": "demos/README.md",
    "content": "Nimgame 2 Demos\n===============\n\n* [demo1](demo1) Performance\n\n* [demo2](demo2) Graphic\n\n* [demo3](demo3) Input\n\n* [demo4](demo4) Sprite\n\n* [demo5](demo5) Colliders\n\n* [demo6](demo6) Grouping\n\n* [demo7](demo7) Text\n\n* [demo8](demo8) ProcGraphic\n\n* [demo9](demo9) Audio\n\n* [demo10](demo10) Layers\n\n* [demo11](demo11) Tweens\n\n* [demo12](demo12) Emitters\n\n* [demo13](demo13) TileMaps\n\n* [demo14](demo14) TileMaps, Tweens, Emitters\n\n* [demo15](demo15) Camera\n\n* [demo16](demo16) Parallax\n\n* [demo17](demo17) GUI (Button, TextField)\n\n* [demo18](demo18) IndexedImage\n\n* [demo19](demo19) PerspectiveImage\n\n* [demo20](demo20) TextureAtlas\n\n* [demo21](demo21) Joysticks\n\n* [demo22](demo22) MpegGraphic\n\n* [demo23](demo23) Transform\n\n"
  },
  {
    "path": "demos/assets/csv/atlas.csv",
    "content": "spaceman, 12, 33, 42, 66\ngradient, 65, 9, 16, 90\nbutton, 82, 26, 48, 72\nsprite, 132, 0, 68, 100\n"
  },
  {
    "path": "demos/assets/csv/map0.csv",
    "content": "0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\n3,3,3,1,1,1,3,1,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,3\n3,1,1,1,1,1,1,1,1,1,3,1,1,1,3,3,3,3,1,1,1,3,1,2,1,3\n3,1,3,1,1,1,3,3,1,3,3,3,3,3,3,1,1,3,1,3,3,3,1,1,1,3\n3,1,3,3,1,3,3,1,1,1,1,1,1,1,1,1,1,3,1,3,0,3,3,1,3,3\n3,1,3,1,1,1,3,3,3,3,3,1,1,3,3,1,1,3,1,3,0,0,3,1,3,0\n3,1,1,1,1,1,1,1,1,1,3,3,1,3,3,3,1,3,1,3,3,3,3,1,3,0\n3,3,3,1,1,1,3,1,1,1,3,1,1,1,3,3,1,1,1,3,1,1,1,1,3,0\n0,0,3,3,1,3,3,1,1,1,3,1,1,1,3,3,3,3,3,3,3,3,3,1,3,0\n3,3,3,1,1,1,3,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,3,0\n3,1,1,1,1,1,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,0\n3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3\n3,1,3,3,3,3,3,3,3,1,3,3,3,3,3,3,1,3,1,1,1,1,1,1,1,3\n3,1,1,1,1,1,1,1,3,1,3,3,1,1,1,3,1,3,1,3,3,3,3,3,1,3\n3,3,3,1,3,1,1,1,3,1,3,3,1,1,1,3,1,3,1,3,1,1,1,3,1,3\n0,0,3,1,3,1,3,3,3,1,3,3,1,1,1,1,1,3,1,3,1,1,1,1,1,3\n3,3,3,3,3,1,3,3,1,1,1,3,3,3,3,3,1,3,1,3,1,1,1,3,1,3\n3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,1,3\n3,1,1,3,3,3,3,3,1,1,1,3,3,3,3,3,3,3,1,1,1,1,1,1,1,3\n3,3,3,3,0,0,0,3,3,3,3,3,0,0,0,0,0,3,3,3,3,3,3,3,3,3\n"
  },
  {
    "path": "demos/assets/csv/map_camera_test.csv",
    "content": "1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,1\n3,2,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,2,3\n1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3\n1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3,1,3,1,1,3,1,3,3\n1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1,1,3,3,3,3,1,1,1\n1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1\n3,2,3,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,3,2,3\n1,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1,1,3,1\n"
  },
  {
    "path": "demos/demo1/README.md",
    "content": "Nimgame 2: Demo 1\n=================\n\nPerformance demo.\n\n![Screenshot](demo1.png)\n\n"
  },
  {
    "path": "demos/demo1/demo1.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 1 (Performance)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo1/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  spaceman\n\n\nconst\n  NumMin = 100\n  NumMax = 50_000\n  NumStep = 100\n  NumStart = 500\n\n\ntype\n  MainScene = ref object of Scene\n    spacemanG: TextureGraphic\n    num: int\n\n\nproc spacemanPhysics*(entity: Entity, elapsed: float) =\n  defaultPhysics(entity, elapsed)\n\n  # Screen collision\n  if entity.pos.x < 0:\n    entity.vel.x *= -1\n  if entity.pos.y < 0:\n    entity.vel.y *= -1\n  if entity.pos.x >= game.size.w.float:\n    entity.vel.x *= -1\n  if entity.pos.y >= game.size.h.float:\n    entity.vel.y *= -1\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  scene.spacemanG = newTextureGraphic()\n  discard scene.spacemanG.load(\"../assets/gfx/spaceman.png\")\n  scene.num = NumStart\n  for i in 1..scene.num:\n    scene.add(newSpaceman(scene, scene.spacemanG, spacemanPhysics))\n\n\nproc free*(scene: MainScene) =\n  scene.spacemanG.free\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Up:\n      if scene.num < NumMax:\n        scene.num += NumStep\n        for i in scene.count..scene.num-1:\n          scene.add(newSpaceman(scene, scene.spacemanG, spacemanPhysics))\n    of K_Down:\n      if scene.num > NumMin:\n        scene.num -= NumStep\n        for i in scene.num..(scene.count - 1):\n          discard scene.pop()\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (260, 84), 0x000000CC'u32)\n  discard string(\n    (8, 64), \"Arrow Up - more entities\", 0xFF0000FF'u32)\n  discard string(\n    (8, 72), \"Arrow Down - less entities\", 0xFF0000FF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n\n"
  },
  {
    "path": "demos/demo1/spaceman.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/graphic,\n  nimgame2/scene,\n  nimgame2/types,\n  nimgame2/utils\n\ntype\n  Spaceman* = ref object of Entity\n    scene*: Scene\n\n\nproc init*(entity: Spaceman, s: Scene, g: Graphic, p: PhysicsProc) =\n  entity.initEntity()\n  entity.scene = s\n  entity.graphic = g\n  entity.physics = p\n  entity.pos.x = rand(game.size.w).float\n  entity.pos.y = rand(game.size.h).float\n  entity.vel.x = rand(10.0..100.0) * randSign().float\n  entity.vel.y = rand(10.0..100.0) * randSign().float\n  entity.centrify()\n  entity.rot = rand(360.0)\n  entity.rotVel = rand(10.0..60.0) * randSign().float\n\n\nproc newSpaceman*(s: Scene, g: Graphic, p: PhysicsProc): Spaceman =\n  result = new Spaceman\n  result.init(s, g, p)\n\n"
  },
  {
    "path": "demos/demo10/README.md",
    "content": "Nimgame 2: Demo 10\n==================\n\nLayers demo. Demonstrates entity layering.\n\n![Screenshot](demo10.png)\n\n"
  },
  {
    "path": "demos/demo10/demo10.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 10 (Layers)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo10/earth.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Earth* = ref object of Entity\n\n\nproc init*(entity: Earth) =\n  entity.initEntity()\n  entity.pos.x = 128.0\n  entity.pos.y = 96.0\n\n\nproc newEarth*(): Earth =\n  result = new Earth\n  result.init()\n\n"
  },
  {
    "path": "demos/demo10/mainscene.nim",
    "content": "import\n  math,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  earth, spaceman\n\n\ntype\n  MainScene = ref object of Scene\n    earthG, spacemanG: TextureGraphic\n    e: Earth\n    s: Spaceman\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  # Earth\n  scene.e = newEarth()\n  scene.earthG = newTextureGraphic()\n  discard scene.earthG.load(\"../assets/gfx/earth.png\")\n  scene.e.graphic = scene.earthG\n  # Spaceman\n  scene.s = newSpaceman()\n  scene.spacemanG = newTextureGraphic()\n  discard scene.spacemanG.load(\"../assets/gfx/spaceman.png\")\n  scene.s.graphic = scene.spacemanG\n\n  # add to scene\n  scene.add(scene.s)\n  scene.add(scene.e)\n\n\nproc free*(scene: MainScene) =\n  scene.earthG.free\n  scene.spacemanG.free\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (220, 76), 0x000000CC'u32)\n  discard string(\n    (8, 64), \"1/2 - Change layer\", 0xFF0000FF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  if Scancode1.down: scene.s.layer = -1\n  if Scancode2.down: scene.s.layer = 1\n\n"
  },
  {
    "path": "demos/demo10/spaceman.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Spaceman* = ref object of Entity\n\n\nproc init*(entity: Spaceman) =\n  entity.initEntity()\n  entity.pos.x = 200.0\n  entity.pos.y = 64.0\n\n\nproc newSpaceman*(): Spaceman =\n  result = new Spaceman\n  result.init()\n\n"
  },
  {
    "path": "demos/demo11/README.md",
    "content": "Nimgame 2: Demo 11\n==================\n\nTweens demo. Demonstrates tweening procedures.\n\n![Screenshot](demo11.png)\n\n"
  },
  {
    "path": "demos/demo11/demo11.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 1280, h = 720, title = \"Nimgame 2: Demo 11 (Tweens)\"):\n  #showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo11/earth.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/types\n\ntype\n  Earth* = ref object of Entity\n\n\nproc init*(entity: Earth, pos: Coord) =\n  entity.initEntity()\n  entity.pos = pos\n\n\nproc newEarth*(pos: Coord): Earth =\n  result = new Earth\n  result.init(pos)\n\n"
  },
  {
    "path": "demos/demo11/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/bitmapfont,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/textgraphic,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/tween,\n  nimgame2/types,\n  earth\n\n\ntype\n  MainScene = ref object of Scene\n    earthG: TextureGraphic\n    font: BitmapFont\n    tweens: seq[Tween[Entity,Coord]]\n\n\nproc addEntity*(scene: MainScene,\n                name: string,\n                pos: Coord,\n                procedure: TweenProcedure[Coord]) =\n  # Name\n  let n = newTextGraphic()\n  n.font = scene.font\n  n.lines = [name]\n  let ne = newEntity()\n  ne.graphic = n\n  ne.pos = pos - (98.0, 8.0)\n  scene.add(ne)\n\n  # Entity\n  let e = newEarth(pos)\n  e.graphic = scene.earthG\n  e.centrify()\n  scene.add(e)\n\n  # Tween\n  let t = newTween[Entity,Coord](\n    e,\n    proc(t: Entity): Coord = t.pos,\n    proc(t: Entity, val: Coord) = t.pos = val)\n  t.procedure = procedure\n  scene.tweens.add(t)\n  t.setup(e.pos, e.pos + (150.0, 0.0), 3.0, -1)\n  t.play()\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  scene.tweens = @[]\n\n  # Earth graphic\n  scene.earthG = newTextureGraphic()\n  discard scene.earthG.load(\"../assets/gfx/earth32.png\")\n\n  # Font\n  scene.font = newBitmapFont()\n  discard scene.font.load(\"../assets/fnt/default8x16.png\", (8, 16))\n\n  # Column 1\n  scene.addEntity(\"linear\", (100.0, 35.0), linear)\n  scene.addEntity(\"inQuad\", (100.0, 85.0), inQuad)\n  scene.addEntity(\"outQuad\", (100.0, 135.0), outQuad)\n  scene.addEntity(\"inOutQuad\", (100.0, 185.0), inOutQuad)\n\n  scene.addEntity(\"inCubic\", (100.0, 285.0), inCubic)\n  scene.addEntity(\"outCubic\", (100.0, 335.0), outCubic)\n  scene.addEntity(\"inOutCubic\", (100.0, 385.0), inOutCubic)\n  scene.addEntity(\"outInCubic\", (100.0, 435.0), outInCubic)\n\n  scene.addEntity(\"inQuart\", (100.0, 535.0), inQuart)\n  scene.addEntity(\"outQuart\", (100.0, 585.0), outQuart)\n  scene.addEntity(\"inOutQuart\", (100.0, 635.0), inOutQuart)\n  scene.addEntity(\"outInQuart\", (100.0, 685.0), outInQuart)\n\n  # Column 2\n  scene.addEntity(\"inQuint\", (400.0, 35.0), inQuint)\n  scene.addEntity(\"outQuint\", (400.0, 85.0), outQuint)\n  scene.addEntity(\"inOutQuint\", (400.0, 135.0), inOutQuint)\n  scene.addEntity(\"outInQuint\", (400.0, 185.0), outInQuint)\n\n  scene.addEntity(\"inSine\", (400.0, 285.0), inSine)\n  scene.addEntity(\"outSine\", (400.0, 335.0), outSine)\n  scene.addEntity(\"inOutSine\", (400.0, 385.0), inOutSine)\n  scene.addEntity(\"outInSine\", (400.0, 435.0), outInSine)\n\n  # Column 3\n  scene.addEntity(\"inExpo\", (700.0, 35.0), inExpo)\n  scene.addEntity(\"outExpo\", (700.0, 85.0), outExpo)\n  scene.addEntity(\"inOutExpo\", (700.0, 135.0), inOutExpo)\n  scene.addEntity(\"outInExpo\", (700.0, 185.0), outInExpo)\n\n  scene.addEntity(\"inCirc\", (700.0, 285.0), inCirc)\n  scene.addEntity(\"outCirc\", (700.0, 335.0), outCirc)\n  scene.addEntity(\"inOutCirc\", (700.0, 385.0), inOutCirc)\n  scene.addEntity(\"outInCirc\", (700.0, 435.0), outInCirc)\n\n  # Column 4\n  scene.addEntity(\"inBounce\", (1000.0, 35.0), inBounce)\n  scene.addEntity(\"outBounce\", (1000.0, 85.0), outBounce)\n  scene.addEntity(\"inOutBounce\", (1000.0, 135.0), inOutBounce)\n  scene.addEntity(\"outInBounce\", (1000.0, 185.0), outInBounce)\n\n  scene.addEntity(\"inElastic\", (1000.0, 285.0), inElastic)\n  scene.addEntity(\"outElastic\", (1000.0, 335.0), outElastic)\n  scene.addEntity(\"inOutElastic\", (1000.0, 385.0), inOutElastic)\n  scene.addEntity(\"outInElastic\", (1000.0, 435.0), outInElastic)\n\n  scene.addEntity(\"inBack\", (1000.0, 535.0), inBack)\n  scene.addEntity(\"outBack\", (1000.0, 585.0), outBack)\n  scene.addEntity(\"inOutBack\", (1000.0, 635.0), inOutBack)\n  scene.addEntity(\"outInBack\", (1000.0, 685.0), outInBack)\n\n\nproc free*(scene: MainScene) =\n  scene.earthG.free\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  for tween in scene.tweens:\n    tween.update(elapsed)\n  scene.updateScene(elapsed)\n\n"
  },
  {
    "path": "demos/demo12/README.md",
    "content": "Nimgame 2: Demo 12\n==================\n\nEmitter demo. Demonstrates particle emitter usage.\n\n![Screenshot](demo12.png)\n\n"
  },
  {
    "path": "demos/demo12/demo12.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 12 (Emitter)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo12/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/emitter,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types\n\n\ntype\n  MainScene = ref object of Scene\n    particleG: TextureGraphic\n    ePoint, eLine, eCircle, eBox, eScaled: Emitter\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  # Particle Graphic\n  scene.particleG = newTextureGraphic()\n  discard scene.particleG.load(\"../assets/gfx/puff.png\")\n\n  # Particle\n  var particle: Particle\n  particle = newParticle()\n  particle.graphic = scene.particleG\n  particle.initSprite((5, 5))\n  particle.centrify()\n  discard particle.addAnimation(\"play\", toSeq(0..4), 1/5)\n  particle.play(\"play\", 1, kill = true)\n\n  # Point emitter\n  scene.ePoint = newEmitter(scene)\n  scene.ePoint.randomVel = (10.0, 10.0)\n  scene.ePoint.randomAcc = (5.0, 5.0)\n  scene.ePoint.randomTTL = 5.0\n  scene.ePoint.particle = particle\n  scene.add(scene.ePoint)\n\n  # Line emitter\n  scene.eLine = newEmitter(scene, eaLine)\n  scene.eLine.area.length = 100.0\n  scene.eLine.randomVel = (10.0, 10.0)\n  scene.eLine.randomAcc = (5.0, 5.0)\n  scene.eLine.randomTTL = 5.0\n  scene.eLine.particle = particle\n  scene.eLine.pos = game.size / 2\n  scene.add(scene.eLine)\n\n  # Circle emitter\n  scene.eCircle = newEmitter(scene, eaCircle)\n  scene.eCircle.area.radius = 100.0\n  scene.eCircle.randomVel = (10.0, 10.0)\n  scene.eCircle.randomAcc = (5.0, 5.0)\n  scene.eCircle.randomTTL = 5.0\n  scene.eCircle.particle = particle\n  scene.eCircle.pos = game.size / 4\n  scene.add(scene.eCircle)\n\n  # Box emitter\n  scene.eBox = newEmitter(scene, eaBox)\n  scene.eBox.area.dim = (100.0, 50.0)\n  scene.eBox.rotVel = -90.0\n  scene.eBox.randomVel = (10.0, 10.0)\n  scene.eBox.randomAcc = (5.0, 5.0)\n  scene.eBox.randomTTL = 5.0\n  scene.eBox.particle = particle\n  scene.eBox.pos = game.size / 2 + game.size / 4\n  scene.add(scene.eBox)\n\n  # Scaling particles\n  var particleScaled: Particle\n  particleScaled = newParticle()\n  particleScaled.graphic = scene.particleG\n  particleScaled.initSprite((5, 5))\n  particleScaled.centrify()\n  discard particleScaled.addAnimation(\"play\", toSeq(0..4), 1/2)\n  particleScaled.play(\"play\", 1, kill = true)\n  particleScaled.scale = 0.5\n  particleScaled.scaleVel = 1.0\n\n  scene.eScaled = newEmitter(scene)\n  scene.eScaled.randomVel = (50.0, 50.0)\n  scene.eScaled.randomAcc = (5.0, 5.0)\n  scene.eScaled.randomTTL = 5.0\n  scene.eScaled.particle = particleScaled\n  scene.eScaled.pos = (game.size.w div 2 + game.size.w div 4, game.size.h div 4)\n  scene.add(scene.eScaled)\n\n\n\nproc free*(scene: MainScene) =\n  scene.particleG.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  # Draw line between the spaceman and the mouse position if LMB is pressed\n  scene.renderScene()\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  # Point emitter\n  scene.ePoint.pos = mouse.abs\n  if MouseButton.left.down:\n    scene.ePoint.emit(5)\n  # Line emitter\n  scene.eLine.rot += 90 * elapsed\n  scene.eLine.emit(5)\n  # Circle emitter\n  scene.eCircle.area.radius = if MouseButton.left.down: 50.0 else: 100.0\n  scene.eCircle.emit(scene.eCircle.area.radius.int div 20)\n  # Box emitter\n  scene.eBox.rot += scene.eBox.rotVel * elapsed\n  scene.eBox.emit(5)\n  # Scaled emitter\n  scene.eScaled.emit(5)\n\n"
  },
  {
    "path": "demos/demo13/README.md",
    "content": "Nimgame 2: Demo 13\n==================\n\nTileMap demo. Demonstrates tile maps usage.\n\nNote\n----\nFor the performance purposes TileCollider is based on BoxCollider. It means, that usually you shouldn't initialize collider on a TileMap that will be rotated.\n\n![Screenshot](demo13.png)\n\n"
  },
  {
    "path": "demos/demo13/cursor.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/input,\n  nimgame2/tilemap\n\ntype\n  Cursor* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Cursor) =\n  entity.initEntity()\n  entity.tags.add(\"Cursor\")\n  entity.pos = mouse.abs\n  entity.collidedWith = @[]\n\n\nproc newCursor*(): Cursor =\n  result = new Cursor\n  result.init()\n\n\nmethod update*(entity: Cursor, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n  entity.pos = mouse.abs\n\n\nmethod onCollide*(entity: Cursor, target: Entity) =\n  if target.tags.len > 0:\n    if \"map\" in target.tags:\n      let collider = TilemapCollider(target.collider)\n      let clist = collider.collisionList(entity.pos)\n      for tile in clist:\n        entity.collidedWith.add(\n          \"[\" & $tile.index.x & \":\" & $tile.index.y & \"] -> \" & $tile.value)\n\n"
  },
  {
    "path": "demos/demo13/demo13.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 13 (TileMap)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo13/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/tilemap,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  cursor\n\n\ntype\n  MainScene = ref object of Scene\n    tilesG: TextureGraphic\n    tm: TileMap\n    cursor: Cursor\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Cursor\n  hideCursor()\n  scene.cursor = newCursor()\n  let cursorG = newTextureGraphic()\n  discard cursorG.load(\"../assets/gfx/cursor.png\")\n  scene.cursor.graphic = cursorG\n  scene.cursor.collider = newCollider(scene.cursor)\n  scene.add(scene.cursor)\n\n  # Tiles Graphic\n  scene.tilesG = newTextureGraphic()\n  discard scene.tilesG.load(\"../assets/gfx/sprite0.png\")\n  # TileMap\n  scene.tm = newTileMap(scaleFix = true)\n  scene.tm.tags.add(\"map\")\n  scene.tm.graphic = scene.tilesG\n  scene.tm.initSprite((64, 64), offset = (32, 32))\n  scene.tm.map = @[\n    @[0, 0, 0, 0],\n    @[1, 0, 0, 1],\n    @[2, 3, 3, 2]\n  ]\n  scene.tm.passable.add(0)\n  scene.tm.centrify()\n  scene.tm.initCollider()\n  scene.tm.pos = (320.0, 240.0)\n  scene.add(scene.tm)\n\n\n\nproc free*(scene: MainScene) =\n  scene.tilesG.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Space:\n      colliderOutline = not colliderOutline\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (300, 108), 0x000000CC'u32)\n\n  discard string((8, 64), \"WSAD or Arrows - move\", 0xFFFFFFFF'u32)\n\n  discard string((8, 72), \"Q/E - change angle\", 0xFFFFFFFF'u32)\n\n  discard string((8, 80), \"R/F - change scale\", 0xFFFFFFFF'u32)\n\n  discard string((8, 88), \"Space - toggle collider outlines\", 0xFFFFFFFF'u32)\n\n  var collides: string = \"\"\n  for collision in scene.cursor.collidedWith:\n    collides &= collision & \" \"\n\n  discard string((8, 96),\n    if scene.cursor.collidedWith.len > 0:\n      \"Cursor collides with: \" & collides\n    else:\n      \"Cursor isn't over a collidable tile\",\n    0xFFFFFFFF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  if ScancodeW.down or ScancodeUp.down: scene.tm.pos.y -= 100 * elapsed\n  if ScancodeS.down or ScancodeDown.down: scene.tm.pos.y += 100 * elapsed\n  if ScancodeA.down or ScancodeLeft.down: scene.tm.pos.x -= 100 * elapsed\n  if ScancodeD.down or ScancodeRight.down: scene.tm.pos.x += 100 * elapsed\n  if ScancodeQ.down: scene.tm.rot -= 100 * elapsed\n  if ScancodeE.down: scene.tm.rot += 100 * elapsed\n  if ScancodeR.down: scene.tm.scale -= 0.5 * elapsed\n  if ScancodeF.down: scene.tm.scale += 0.5 * elapsed\n\n"
  },
  {
    "path": "demos/demo14/README.md",
    "content": "Nimgame 2: Demo 14\n==================\n\nSecond TileMap demo. Demonstrates practical TileMap usage, along with Tween an Emitter usage.\n\nF10 - Show/Hide info panel.\n\n![Screenshot](demo14.png)\n\n"
  },
  {
    "path": "demos/demo14/demo14.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 14 (TileMap 2)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo14/dwarf.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/tilemap,\n  nimgame2/tween,\n  nimgame2/types\n\n\nconst\n  Framerate = 1/12\n  ScreenOffset*: Coord = (8.0, 0.0)\n  Step* = 24.0\n\n\ntype\n  Direction* = enum dNone, dDown, dUp, dLeft, dRight\n\n  Dwarf* = ref object of Entity\n    tween*: Tween[Dwarf,Coord]\n    virtualPos*: tuple[x: int, y: int]\n    map*: TileMap\n\n\nproc init*(entity: Dwarf, graphic: TextureGraphic, map: TileMap) =\n  entity.initEntity()\n  entity.tags.add(\"dwarf\")\n  entity.graphic = graphic\n  entity.initSprite((24, 48))\n  discard entity.addAnimation(\n    \"down\", [0, 1, 2, 3, 4, 5], Framerate)\n  discard entity.addAnimation(\n    \"up\", [6, 7, 8, 9, 10, 11], Framerate)\n  discard entity.addAnimation(\n    \"left\", [12, 13, 14, 15, 16, 17], Framerate)\n  discard entity.addAnimation(\n    \"right\", [12, 13, 14, 15, 16, 17], Framerate, Flip.horizontal)\n  entity.pos = (44.0, 444.0)\n  entity.virtualPos = (1, 18)\n  entity.center = (12.0, 36.0)\n  entity.map = map\n  entity.map.show = (\n    x: (entity.virtualPos.x - 2)..(entity.virtualPos.x + 2),\n    y: (entity.virtualPos.y - 2)..(entity.virtualPos.y + 2)\n  )\n\n\nproc newDwarf*(graphic: TextureGraphic, map: TileMap): Dwarf =\n  result = new Dwarf\n  result.init(graphic, map)\n\n\nproc actuate(entity: Dwarf, anim: string, movement: Coord) =\n  if entity.tween == nil or not entity.tween.playing:\n    let\n      newPos = entity.pos + movement\n      newVirtualPos: tuple[x: int, y: int] =\n        (int(newPos.x - ScreenOffset.x) div Step.int,\n         int(newPos.y - ScreenOffset.y) div Step.int)\n\n    if entity.map.map[newVirtualPos.y][newVirtualPos.x] > 2:\n      return # unpassable\n\n    entity.play(anim, 1)\n    entity.tween = newTween[Dwarf,Coord](\n      entity,\n      proc(t: Dwarf): Coord = t.pos,\n      proc(t: Dwarf, val: Coord) = t.pos = val)\n    entity.tween.setup(entity.pos, newPos, 0.5, 0)\n    entity.virtualPos = newVirtualPos\n    entity.tween.play()\n    entity.map.show = (\n      x: (newVirtualPos.x - 2)..(newVirtualPos.x + 2),\n      y: (newVirtualPos.y - 2)..(newVirtualPos.y + 2)\n    )\n\n\nproc move*(entity: Dwarf, direction: Direction) =\n  case direction:\n  of dDown:   entity.actuate(\"down\", (0.0, Step))\n  of dUp:     entity.actuate(\"up\", (0.0, -Step))\n  of dRight:  entity.actuate(\"right\", (Step, 0.0))\n  of dLeft:   entity.actuate(\"left\", (-Step, 0.0))\n  of dNone:   discard\n\n"
  },
  {
    "path": "demos/demo14/mainscene.nim",
    "content": "import\n  parseutils,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/emitter,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/tilemap,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/tween,\n  nimgame2/types,\n  nimgame2/utils,\n  dwarf\n\n\ntype\n  MainScene = ref object of Scene\n    dG, tilesG, sparkG: TextureGraphic\n    d: Dwarf\n    sparks: Emitter\n    map: TileMap\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Spark\n  scene.sparkG = newTextureGraphic()\n  discard scene.sparkG.load(\"../assets/gfx/puff.png\")\n\n  # TileMap\n  scene.tilesG = newTextureGraphic()\n  discard scene.tilesG.load(\"../assets/gfx/tile0.png\")\n  scene.map = newTileMap()\n  scene.map.tags.add(\"map\")\n  scene.map.graphic = scene.tilesG\n  scene.map.initSprite((24, 24))\n  scene.map.map = loadCSV[int](\n    \"../assets/csv/map0.csv\",\n    proc(input: string): int = discard parseInt(input, result))\n  scene.map.pos = (8.0, 0.0)\n\n  # Dwarf\n  scene.dG = newTextureGraphic()\n  discard scene.dG.load(\"../assets/gfx/dwarf.png\")\n  scene.d = newDwarf(scene.dG, scene.map)\n  scene.d.layer = 10\n\n  # Add to scene\n  scene.add(scene.d)\n  scene.add(scene.map)\n\nproc free*(scene: MainScene) =\n  scene.dG.free\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n      case event.key.keysym.sym:\n      of K_Escape:\n        gameRunning = false\n      of K_F10:\n        showInfo = not showInfo\n      else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  if scene.d.tween != nil:\n    scene.d.tween.update(elapsed)\n\n  # Controls and speed\n  var direction: dwarf.Direction =\n    if ScancodeDown.down or ScancodeS.down: dDown\n    elif ScancodeUp.down or ScancodeW.down: dUp\n    elif ScancodeLeft.down or ScancodeA.down: dLeft\n    elif ScancodeRight.down or ScancodeD.down: dRight\n    else: dNone\n\n  scene.d.move(direction)\n\n  # Sparks\n  if scene.sparks == nil:\n    if scene.map.map[scene.d.virtualPos.y][scene.d.virtualPos.x] == 2:\n      scene.sparks = newEmitter(scene)\n      scene.sparks.pos = ((scene.d.virtualPos.x.float,\n                           scene.d.virtualPos.y.float) * Step) +\n                           ScreenOffset + scene.d.center - (0.0, Step)\n      scene.sparks.randomVel = (25.0, 25.0)\n      scene.sparks.randomAcc = (10.0, 10.0)\n      scene.sparks.randomTTL = 2.5\n      scene.sparks.particle = newParticle()\n      scene.sparks.particle.graphic = scene.sparkG\n      scene.sparks.particle.initSprite((5, 5))\n      scene.sparks.particle.centrify()\n      discard scene.sparks.particle.addAnimation(\"play\", toSeq(0..4), 1/5)\n      scene.sparks.particle.play(\"play\", 1, kill = true)\n      scene.add(scene.sparks)\n  else:\n    scene.sparks.emit(10)\n\n\n"
  },
  {
    "path": "demos/demo15/README.md",
    "content": "Nimgame 2: Demo 15\n==================\n\nCamera demo. Demonstrates camera usage.\n\nNote a negative sign in front of the camera's position.\n\n![Screenshot](demo15.png)\n\n"
  },
  {
    "path": "demos/demo15/demo15.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 15 (Camera)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo15/mainscene.nim",
    "content": "import\n  parseutils,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/tilemap,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  nimgame2/utils\n\n\ntype\n  MainScene = ref object of Scene\n    tilesG, spacemanG: TextureGraphic\n    spaceman: Entity\n    map: TileMap\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  scene.camera = newEntity()\n  scene.cameraBondOffset = game.size / 2\n\n  # Tiles Graphic\n  scene.tilesG = newTextureGraphic()\n  discard scene.tilesG.load(\"../assets/gfx/tile0.png\")\n\n  # TileMap\n  scene.map = newTileMap(scaleFix = true)\n  scene.map.parent = scene.camera\n  scene.map.tags.add(\"map\")\n  scene.map.graphic = scene.tilesG\n  scene.map.initSprite((24, 24))\n  scene.map.map = loadCSV[int](\"../assets/csv/map_camera_test.csv\",\n    proc(s: string): int = discard parseInt(s, result))\n  scene.map.passable.add(0)\n  scene.map.initCollider()\n  scene.map.pos = (0.0, 0.0)\n\n  # SpacemanG\n  scene.spacemanG = newTextureGraphic()\n  discard scene.spacemanG.load(\"../assets/gfx/spaceman.png\")\n\n  # Spaceman\n  scene.spaceman = newEntity()\n  scene.spaceman.parent = scene.map\n  scene.spaceman.graphic = scene.spacemanG\n  scene.spaceman.centrify()\n  scene.spaceman.pos = (200.0, 200.0)\n\n  # Add\n  scene.add(scene.spaceman)\n  scene.add(scene.map)\n\n\n\nproc free*(scene: MainScene) =\n  scene.tilesG.free()\n  scene.spacemanG.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Space:\n      colliderOutline = not colliderOutline\n    of K_Return:\n      scene.cameraBond = if scene.cameraBond != nil: nil\n                         else: scene.spaceman\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (300, 108), 0x000000CC'u32)\n\n  discard string((8, 64), \"Arrows - move camera\", 0xFFFFFFFF'u32)\n  discard string((8, 72), \"WSAD - move spaceman\", 0xFFFFFFFF'u32)\n  discard string((8, 80), \"Enter - toggle following (\" &\n    (if scene.cameraBond != nil: \"on\" else: \"off\")  & \")\", 0xFFFFFFFF'u32)\n\n  discard string((8, 88), \"camera.pos = \" & $(-scene.camera.pos),\n    0xFFFFFFFF'u32)\n  discard string((8, 96), \"spaceman.pos = \" & $(scene.spaceman.pos),\n    0xFFFFFFFF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  let move = 100 * elapsed\n  if scene.cameraBond == nil:\n    if ScancodeUp.down: scene.camera.pos.y += move\n    if ScancodeDown.down: scene.camera.pos.y -= move\n    if ScancodeLeft.down: scene.camera.pos.x += move\n    if ScancodeRight.down: scene.camera.pos.x -= move\n  if ScancodeW.down: scene.spaceman.pos.y -= move\n  if ScancodeS.down: scene.spaceman.pos.y += move\n  if ScancodeA.down: scene.spaceman.pos.x -= move\n  if ScancodeD.down: scene.spaceman.pos.x += move\n\n"
  },
  {
    "path": "demos/demo16/README.md",
    "content": "Nimgame 2: Demo 16\n==================\n\nParallax demo. Demonstrates parallax effect.\n\n![Screenshot](demo16.png)\n\n"
  },
  {
    "path": "demos/demo16/demo16.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 16 (Parallax)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo16/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types\n\n\ntype\n  MainScene = ref object of Scene\n    spacemanG: TextureGraphic\n    p0125, p025, p05, p1: Entity\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Graphics\n  scene.spacemanG = newTextureGraphic()\n  discard scene.spacemanG.load(\"../assets/gfx/spaceman.png\")\n\n  # Entities\n  scene.camera = newEntity()\n  scene.camera.pos = game.size / 2\n\n  scene.p0125 = newEntity()\n  scene.p0125.parent = scene.camera\n  scene.p0125.graphic = scene.spacemanG\n  scene.p0125.centrify()\n  scene.p0125.pos = game.size / 2\n  scene.p0125.pos.y -= 150\n  scene.p0125.parallax = 0.125\n\n  scene.p025 = newEntity()\n  scene.p025.parent = scene.camera\n  scene.p025.graphic = scene.spacemanG\n  scene.p025.centrify()\n  scene.p025.pos = game.size / 2\n  scene.p025.pos.y -= 100\n  scene.p025.parallax = 0.25\n\n  scene.p05 = newEntity()\n  scene.p05.parent = scene.camera\n  scene.p05.graphic = scene.spacemanG\n  scene.p05.centrify()\n  scene.p05.pos = game.size / 2\n  scene.p05.pos.y -= 50\n  scene.p05.parallax = 0.5\n\n  scene.p1 = newEntity()\n  scene.p1.parent = scene.camera\n  scene.p1.graphic = scene.spacemanG\n  scene.p1.centrify()\n  scene.p1.pos = game.size / 2\n\n  scene.cameraBond = scene.p1\n\n  # add to scene\n  scene.add(scene.p1)\n  scene.add(scene.p05)\n  scene.add(scene.p025)\n  scene.add(scene.p0125)\n\n\nproc free*(scene: MainScene) =\n  scene.spacemanG.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  scene.eventScene(event)\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Space:\n      colliderOutline = not colliderOutline\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  scene.camera.pos = mouse.abs - Coord(game.size / 2)\n\n"
  },
  {
    "path": "demos/demo17/README.md",
    "content": "Nimgame 2: Demo 17\n==================\n\nFirst GUI demo. Demonstrates buttons and text field usage.\n\n![Screenshot](demo17.png)\n\n"
  },
  {
    "path": "demos/demo17/btnCircle.nim",
    "content": "import\n  nimgame2/graphic,\n  nimgame2/input,\n  nimgame2/gui/widget,\n  nimgame2/gui/button\n\n\ntype\n  CircleButton* = ref object of GuiButton\n\n\nproc init*(btn: CircleButton, graphic: Graphic) =\n  GuiButton(btn).init(graphic, circle = true)\n\n\nproc newCircleButton*(graphic: Graphic): CircleButton =\n  new result\n  result.init(graphic)\n\n\nmethod onClick*(btn: CircleButton, mb: MouseButton) =\n  echo \"clicked circle button, toggled \" & (if btn.toggled: \"on\" else: \"off\")\n\n"
  },
  {
    "path": "demos/demo17/btnSquare.nim",
    "content": "import\n  nimgame2/graphic,\n  nimgame2/input,\n  nimgame2/gui/button\n\n\ntype\n  SquareButton* = ref object of GuiButton\n\n\nproc init*(btn: SquareButton, graphic: Graphic, image: Graphic = nil) =\n  GuiButton(btn).init(graphic, image)\n\n\nproc newSquareButton*(graphic: Graphic, image: Graphic = nil): SquareButton =\n  new result\n  result.init(graphic, image)\n\n\nmethod onClick*(btn: SquareButton, mb: MouseButton) =\n  echo \"clicked square button\"\n\n"
  },
  {
    "path": "demos/demo17/demo17.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 17 (GUI)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo17/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/mosaic,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/truetypefont,\n  nimgame2/types,\n  nimgame2/gui/widget,\n  nimgame2/gui/radio,\n  nimgame2/gui/textinput,\n  nimgame2/gui/progressbar,\n  btnSquare, btnCircle\n\n\ntype\n  MainScene = ref object of Scene\n    btnSquareG, btnCircleG, iconX, btnMosaicG, inputG: TextureGraphic\n    btnsRadio: array[3, GuiRadioButton]\n    radioGroup: GuiRadioGroup\n    btnSquare, btnMosaic: SquareButton\n    btnCircle: CircleButton\n    textInput: GuiTextInput\n    progressBar: GuiProgressBar\n    font: TrueTypeFont\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Graphics\n  scene.btnSquareG = newTextureGraphic()\n  discard scene.btnSquareG.load(\"../assets/gfx/button_square.png\")\n  scene.btnCircleG = newTextureGraphic()\n  discard scene.btnCircleG.load(\"../assets/gfx/button_circle.png\")\n  scene.iconX = newTextureGraphic()\n  discard scene.iconX.load(\"../assets/gfx/icon_x.png\")\n  let mosaic = newMosaic(\"../assets/gfx/button_square.png\", (8, 8))\n  scene.btnMosaicG = newTextureGraphic()\n  discard scene.btnMosaicG.assignTexture mosaic.render(\n    patternStretchBorder(4, 2))\n\n  # Square Button\n  scene.btnSquare = newSquareButton(scene.btnSquareG, scene.iconX)\n  scene.btnSquare.mbAllow.set(MouseButton.right)\n  scene.btnSquare.pos = (100, 100)\n  # Circle Button\n  scene.btnCircle = newCircleButton(scene.btnCircleG)\n  scene.btnCircle.pos = (150, 100)\n  scene.btnCircle.toggle = true\n  # Mosaic Button\n  scene.btnMosaic = newSquareButton(scene.btnMosaicG)\n  scene.btnMosaic.pos = (200, 100)\n\n  # Text Input\n  scene.font = newTrueTypeFont()\n  discard scene.font.load(\"../assets/fnt/FSEX300.ttf\", 16)\n  let inputmosaic = newMosaic(\"../assets/gfx/text_input.png\", (8, 8))\n  scene.inputG = newTextureGraphic()\n  discard scene.inputG.assignTexture inputmosaic.render(\n    patternStretchBorder(16, 1))\n  scene.textInput = newGuiTextInput(scene.inputG, scene.font)\n  scene.textInput.pos = (100, 150)\n  scene.textInput.text.limit = 16\n\n  # Radio Button\n  scene.radioGroup = newGuiRadioGroup()\n  scene.radioGroup.pos = (100, 200)\n  for i in 0..scene.btnsRadio.high:\n    scene.btnsRadio[i] = newGuiRadioButton(\n      scene.radioGroup, scene.btnCircleG, circle = true)\n    scene.btnsRadio[i].pos = (i.float * 50.0, 0.0)\n  scene.btnsRadio[0].toggled = true\n\n  # Progress Bar\n  scene.progressBar = newProgressBar((200, 50), 0xFF0000FF'u32, 0x00FF00FF'u32,\n    scene.font)\n  scene.progressBar.min = 0\n  scene.progressBar.max = 100\n  scene.progressBar.value = 0\n  scene.progressBar.direction = Direction.leftRight\n  scene.progressBar.outline = (1, 1)\n  scene.progressBar.pos = (100, 250)\n\n  # add to scene\n  scene.add(scene.progressBar)\n  scene.add(scene.radioGroup)\n  for b in scene.btnsRadio:\n    scene.add(b)\n  scene.add(scene.textInput)\n  scene.add(scene.btnMosaic)\n  scene.add(scene.btnSquare)\n  scene.add(scene.btnCircle)\n\n\nproc free*(scene: MainScene) =\n  scene.inputG.free()\n  scene.btnMosaicG.free()\n  scene.btnSquareG.free()\n  scene.btnCircleG.free()\n  scene.iconX.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  scene.eventScene(event)\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Space:\n      colliderOutline = not colliderOutline\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (220, 76), 0x000000CC'u32)\n  discard string(\n    (8, 64), \"Space - toggle collider outlines\", 0xFFFFFFFF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n\n  # progressBar\n  if scene.progressBar.value < scene.progressBar.max:\n    scene.progressBar.value += 10 * elapsed\n    if scene.progressBar.value > scene.progressBar.max:\n      scene.progressBar.value = scene.progressBar.max\n\n\n"
  },
  {
    "path": "demos/demo18/README.md",
    "content": "Nimgame 2: Demo 18\n==================\n\nIndexedImage. Demonstrates palette swapping in indexed images.\n\n![Screenshot](demo18.png)\n\n"
  },
  {
    "path": "demos/demo18/demo18.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 320, h = 240, title = \"Nimgame 2: Demo 18 (IndexedImage)\"):\n  game.windowSize = (640, 480)\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo18/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/indexedimage,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types\n\n\ntype\n  MainScene = ref object of Scene\n    idximg: IndexedImage\n    knightG: TextureGraphic\n    knight: Entity\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  scene.idximg = newIndexedImage(\"../assets/gfx/knight.gif\")\n\n  scene.knightG = newTextureGraphic()\n  discard scene.knightG.assignTexture scene.idximg.render()\n\n  scene.knight = newEntity()\n  scene.knight.graphic = scene.knightG\n  scene.knight.pos = (128, 128)\n\n  # add to scene\n  scene.add(scene.knight)\n\n\nproc free*(scene: MainScene) =\n  scene.knightG.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  scene.eventScene(event)\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (220, 76), 0x000000CC'u32)\n  discard string(\n    (8, 64), \"QWER - increase RGBA values (1st color)\", 0xFFFFFFFF'u32)\n  discard string(\n    (8, 72), \"ASDF - decrease RGBA values (1st color)\", 0xFFFFFFFF'u32)\n  discard string(\n    (8, 80), \"TYUI - increase RGBA values (2nd color)\", 0xFFFFFFFF'u32)\n  discard string(\n    (8, 88), \"GHJK - decrease RGBA values (2nd color)\", 0xFFFFFFFF'u32)\n  discard string(\n    (8, 96), \"1st: \" & $scene.idximg.palette[3], 0xFFFFFFFF'u32)\n  discard string(\n    (8, 104), \"2nd: \" & $scene.idximg.palette[11], 0xFFFFFFFF'u32)\n\n\nconst\n  Step = 15\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  let palette = scene.idximg.palette\n  var\n    upd = false\n    color1 = palette[3]\n    color2 = palette[11]\n\n  # color1\n  if ScancodeQ.pressed:\n    color1.r = clamp(color1.r.int + Step, 0, 255).uint8\n    upd = true\n  if ScancodeW.pressed:\n    color1.g = clamp(color1.g.int + Step, 0, 255).uint8\n    upd = true\n  if ScancodeE.pressed:\n    color1.b = clamp(color1.b.int + Step, 0, 255).uint8\n    upd = true\n  if ScancodeR.pressed:\n    color1.a = clamp(color1.a.int + Step, 0, 255).uint8\n    upd = true\n  if ScancodeA.pressed:\n    color1.r = clamp(color1.r.int - Step, 0, 255).uint8\n    upd = true\n  if ScancodeS.pressed:\n    color1.g = clamp(color1.g.int - Step, 0, 255).uint8\n    upd = true\n  if ScancodeD.pressed:\n    color1.b = clamp(color1.b.int - Step, 0, 255).uint8\n    upd = true\n  if ScancodeF.pressed:\n    color1.a = clamp(color1.a.int - Step, 0, 255).uint8\n    upd = true\n\n  # color2\n  if ScancodeT.pressed:\n    color2.r = clamp(color2.r.int + Step, 0, 255).uint8\n    upd = true\n  if ScancodeY.pressed:\n    color2.g = clamp(color2.g.int + Step, 0, 255).uint8\n    upd = true\n  if ScancodeU.pressed:\n    color2.b = clamp(color2.b.int + Step, 0, 255).uint8\n    upd = true\n  if ScancodeI.pressed:\n    color2.a = clamp(color2.a.int + Step, 0, 255).uint8\n    upd = true\n  if ScancodeG.pressed:\n    color2.r = clamp(color2.r.int - Step, 0, 255).uint8\n    upd = true\n  if ScancodeH.pressed:\n    color2.g = clamp(color2.g.int - Step, 0, 255).uint8\n    upd = true\n  if ScancodeJ.pressed:\n    color2.b = clamp(color2.b.int - Step, 0, 255).uint8\n    upd = true\n  if ScancodeK.pressed:\n    color2.a = clamp(color2.a.int - Step, 0, 255).uint8\n    upd = true\n\n  if upd:\n    scene.idximg.palette[3] = color1\n    scene.idximg.palette[11] = color2\n    discard scene.knightG.assignTexture(scene.idximg.render())\n\n"
  },
  {
    "path": "demos/demo19/README.md",
    "content": "Nimgame 2: Demo 19\n==================\n\nPerspectiveImage. Demonstrates perspective transformations.\n\n![Screenshot](demo19.png)\n\n"
  },
  {
    "path": "demos/demo19/demo19.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 19 (PerspectiveImage)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo19/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/perspectiveimage,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types\n\n\nconst\n  GraphicCount = 17\n  Positions: array[GraphicCount, Coord] = [\n    (125.0, 125.0), (275, 125), (375, 125), (475, 125), (575, 125),\n    (75, 275), (175, 275), (275, 275), (375, 275), (475, 275), (575, 275),\n    (75, 425), (175, 425), (275, 425), (375, 425), (475, 400), (575, 425),\n  ]\n\n\ntype\n  MainScene = ref object of Scene\n    pimg: PerspectiveImage\n    graphics: array[GraphicCount, TextureGraphic]\n    entities: array[GraphicCount, Entity]\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  scene.pimg = newPerspectiveImage(\"../assets/gfx/grid.png\")\n\n  # graphics\n  for i in 0..scene.graphics.high:\n    scene.graphics[i] = newTextureGraphic()\n\n  discard scene.graphics[0].assignTexture(scene.pimg.render(\n    pdHor, 0, 0))\n  discard scene.graphics[1].assignTexture(scene.pimg.render(\n    pdHor, 96, 32))\n  discard scene.graphics[2].assignTexture(scene.pimg.render(\n    pdHor, 32, 96))\n  discard scene.graphics[3].assignTexture(scene.pimg.render(\n    pdHor, 64, 32, 32))\n  discard scene.graphics[4].assignTexture(scene.pimg.render(\n    pdHor, 32, 64, 32))\n  discard scene.graphics[5].assignTexture(scene.pimg.render(\n    pdVer, 96, 32))\n  discard scene.graphics[6].assignTexture(scene.pimg.render(\n    pdVer, 64, 32, 32))\n  discard scene.graphics[7].assignTexture(scene.pimg.render(\n    pdHor, 64, 32, shift = 0.0))\n  discard scene.graphics[8].assignTexture(scene.pimg.render(\n    pdHor, 32, 64, shift = 1.0))\n  discard scene.graphics[9].assignTexture(scene.pimg.render(\n    pdHor, 64, 32, shift = 0.25))\n  discard scene.graphics[10].assignTexture(scene.pimg.render(\n    pdHor, 32, 64, shift = 0.75))\n  discard scene.graphics[11].assignTexture(scene.pimg.render(\n    pdVer, 32, 96))\n  discard scene.graphics[12].assignTexture(scene.pimg.render(\n    pdVer, 32, 64, 32))\n  discard scene.graphics[13].assignTexture(scene.pimg.render(\n    pdVer, 64, 32, shift = 0.0))\n  discard scene.graphics[14].assignTexture(scene.pimg.render(\n    pdVer, 64, 32, shift = 1.0))\n  discard scene.graphics[15].assignTexture(scene.pimg.render(\n    pdVer, 64, 32, shift = 0.25))\n  discard scene.graphics[16].assignTexture(scene.pimg.render(\n    pdVer, 32, 64, shift = 0.75))\n\n  # entities\n  for i in 0..scene.entities.high:\n    scene.entities[i] = newEntity()\n    scene.entities[i].graphic = scene.graphics[i]\n    scene.entities[i].centrify()\n    scene.entities[i].pos = Positions[i]\n\n  # add to scene\n  for entity in scene.entities:\n    scene.add(entity)\n\n\nproc free*(scene: MainScene) =\n  scene.pimg.free()\n  for graphic in scene.graphics:\n    graphic.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  scene.eventScene(event)\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n"
  },
  {
    "path": "demos/demo2/README.md",
    "content": "Nimgame 2: Demo 2\n=================\n\nGraphic demo.\n\nDemonstrates color and alpha modifiers, blending modes, and scaling.\n\n![Screenshot](demo2.png)\n\n"
  },
  {
    "path": "demos/demo2/demo2.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 2 (Graphic)\",\n             scaleQuality = 0):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo2/earth.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Earth* = ref object of Entity\n\n\nproc init*(entity: Earth) =\n  entity.initEntity()\n  entity.pos.x = 128.0\n  entity.pos.y = 96.0\n\n\nproc newEarth*(): Earth =\n  result = new Earth\n  result.init()\n\n"
  },
  {
    "path": "demos/demo2/mainscene.nim",
    "content": "import\n  math,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  earth, spaceman\n\n\ntype\n  MainScene = ref object of Scene\n    earthG, spacemanG: TextureGraphic\n    e: Earth\n    s: Spaceman\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  # Earth\n  scene.e = newEarth()\n  scene.earthG = newTextureGraphic()\n  discard scene.earthG.load(\"../assets/gfx/earth.png\")\n  scene.e.graphic = scene.earthG\n  # Spaceman\n  scene.s = newSpaceman()\n  scene.spacemanG = newTextureGraphic()\n  discard scene.spacemanG.load(\"../assets/gfx/spaceman.png\")\n  scene.s.graphic = scene.spacemanG\n\n  # add to scene\n  scene.add(scene.s)\n  scene.add(scene.e)\n\n\nproc free*(scene: MainScene) =\n  scene.earthG.free\n  scene.spacemanG.free\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nproc changeBlendMod(scene: MainScene, increase = true) =\n  # get blend mod\n  var b = TextureGraphic(scene.s.graphic).blendMod\n  # change blend mod\n  if increase:\n    if b.int == 0:\n      b = Blend(1)\n    elif b < Blend.high:\n      b = Blend(b.int shl 1)\n  else: # decrease\n    if b.int > 0:\n      b = Blend(b.int shr 1)\n  # set blend mod\n  TextureGraphic(scene.s.graphic).blendMod = b\n\n\nconst\n  ScaleMax = 3\n  ScaleMin = 0.5\n  ScaleMod = 0.25\n\nproc changeResolution(scene: MainScene, increase = true) =\n  # get current scale\n  var scale = game.scale\n  # change scale\n  if increase:\n    if scale.x < ScaleMax:\n      scale.x += ScaleMod\n      scale.y += ScaleMod\n  else: # decrease\n    if scale.x > ScaleMin:\n      scale.x -= ScaleMod\n      scale.y -= ScaleMod\n  # set resolution\n  game.windowSize = Dim(Coord(game.size) * scale)\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_T:\n      scene.changeBlendMod()\n    of K_G:\n      scene.changeBlendMod(false)\n    of K_Y:\n      scene.changeResolution()\n    of K_H:\n      scene.changeResolution(false)\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  let c = TextureGraphic(scene.s.graphic).colorMod\n  let res = game.windowSize\n  let scale: Coord = (game.scale.x.round(2), game.scale.y.round(2))\n  discard box((4, 60), (220, 124), 0x000000CC'u32)\n  discard string(\n    (8, 64), \"Q/A - red mod: \" & $c.r.int, 0xFF0000FF'u32)\n  discard string(\n    (8, 72), \"W/S - green mod: \" & $c.g.int, 0xFF0000FF'u32)\n  discard string(\n    (8, 80), \"E/D - blue mod: \" & $c.b.int, 0xFF0000FF'u32)\n  discard string(\n    (8, 88), \"R/F - alpha mod: \" &\n      $TextureGraphic(scene.s.graphic).alphaMod.int, 0xFF0000FF'u32)\n  discard string(\n    (8, 96), \"T/G - blend mod: \" &\n      $TextureGraphic(scene.s.graphic).blendMod, 0xFF0000FF'u32)\n  discard string(\n    (8, 104), \"Y/H - resolution: \" & $res.w & \"x\" & $res.h, 0xFF0000FF'u32)\n  discard string(\n    (8, 112), \"Scale: \" & $scale.x & \"x\" & $scale.y, 0xFF0000FF'u32)\n\n\ntype\n  ColorElement = enum\n    ceR, ceG, ceB\n\n\nproc changeColorMod(scene: MainScene, elem: ColorElement, val: int) =\n  var color = TextureGraphic(scene.s.graphic).colorMod\n  # Get color element\n  var e = int(case elem:\n              of ceR: color.r\n              of ceG: color.g\n              of ceB: color.b)\n  # Change color element\n  inc(e, val)\n  # Correct value\n  if e < 0x00: e = 0x00\n  elif e > 0xFF: e = 0xFF\n  # Set color mod\n  case elem:\n  of ceR: color.r = e.uint8\n  of ceG: color.g = e.uint8\n  of ceB: color.b = e.uint8\n  TextureGraphic(scene.s.graphic).colorMod = color\n\n\nproc changeAlphaMod(scene: MainScene, val: int) =\n  # Get alpha mod\n  var a = TextureGraphic(scene.s.graphic).alphaMod.int\n  # Change alpha mod\n  inc(a, val)\n  # Correct value\n  if a < 0x00: a = 0x00\n  elif a > 0xFF: a = 0xFF\n  # Set alpha mod\n  TextureGraphic(scene.s.graphic).alphaMod = a.uint8\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  let val = int(0xFF * elapsed)\n  scene.updateScene(elapsed)\n  if ScancodeQ.down: scene.changeColorMod(ceR, val)\n  if ScancodeA.down: scene.changeColorMod(ceR, -val)\n  if ScancodeW.down: scene.changeColorMod(ceG, val)\n  if ScancodeS.down: scene.changeColorMod(ceG, -val)\n  if ScancodeE.down: scene.changeColorMod(ceB, val)\n  if ScancodeD.down: scene.changeColorMod(ceB, -val)\n  if ScancodeR.down: scene.changeAlphaMod(val)\n  if ScancodeF.down: scene.changeAlphaMod(-val)\n\n"
  },
  {
    "path": "demos/demo2/spaceman.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Spaceman* = ref object of Entity\n\n\nproc init*(entity: Spaceman) =\n  entity.initEntity()\n  entity.pos.x = 200.0\n  entity.pos.y = 64.0\n\n\nproc newSpaceman*(): Spaceman =\n  result = new Spaceman\n  result.init()\n\n"
  },
  {
    "path": "demos/demo20/README.md",
    "content": "Nimgame 2: Demo 20\n==================\n\nTextureAtlas. Demonstrates texture atlas loading and access.\n\n![Screenshot](demo20.png)\n\n"
  },
  {
    "path": "demos/demo20/demo20.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 320, h = 240, title = \"Nimgame 2: Demo 20 (TextureAtlas)\"):\n  showInfo = true\n  game.windowSize = (640, 480)\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo20/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/gui/button,\n  nimgame2/texturegraphic,\n  nimgame2/textureatlas,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types\n\n\ntype\n  MainScene = ref object of Scene\n    atlas: TextureAtlas\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  scene.atlas = newTextureAtlas(\"../assets/gfx/atlas.png\",\n                                \"../assets/csv/atlas.csv\")\n\n  let\n    eSpaceman = newEntity()\n    eGradient = newEntity()\n    eButton = newGuiButton(scene.atlas[\"button\"])\n    eSprite = newEntity()\n\n  eSpaceman.graphic = scene.atlas[\"spaceman\"]\n  eSpaceman.pos = (50.0, 100.0)\n\n  eGradient.graphic = scene.atlas[\"gradient\"]\n  eGradient.pos = (150.0, 100.0)\n\n  eButton.pos = (200.0, 100.0)\n\n  eSprite.graphic = scene.atlas[\"sprite\"]\n  eSprite.initSprite((32, 32), (0, 32), (1, 1))\n  discard eSprite.addAnimation(\"play\", toSeq(0..3), 1/4)\n  eSprite.play(\"play\")\n  eSprite.pos = (200.0, 150.0)\n\n  scene.add(eSpaceman)\n  scene.add(eGradient)\n  scene.add(eButton)\n  scene.add(eSprite)\n\n\nproc free*(scene: MainScene) =\n  scene.atlas.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  scene.eventScene(event)\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n"
  },
  {
    "path": "demos/demo21/README.md",
    "content": "Nimgame 2: Demo 21\n==================\n\nJoysticks. Demonstrates joystick input handling.\n\n![Screenshot](demo21.png)\n\n"
  },
  {
    "path": "demos/demo21/demo21.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 21 (Joysticks)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo21/joypoint.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/textgraphic,\n  nimgame2/texturegraphic,\n  nimgame2/font,\n  nimgame2/bitmapfont,\n  nimgame2/input,\n  nimgame2/types\n\n\ntype\n  JoyPoint* = ref object of Entity\n    joy: int\n    label: TextGraphic\n\n\nproc init(jp: JoyPoint, id: int) =\n  jp.initEntity()\n  jp.joy = id\n  jp.graphic = newTextureGraphic(\"../assets/gfx/target.png\")\n  jp.centrify()\n  jp.pos = game.size / 2\n  # label\n  let font = newBitmapFont()\n  discard font.load(\"../assets/fnt/default8x16.png\", (8, 16))\n  jp.label = newTextGraphic(font)\n  jp.label.lines = [$id]\n\n\nproc newJoyPoint*(joystick: int): JoyPoint =\n  new result\n  result.init(joystick)\n\n\nmethod render*(jp: JoyPoint) =\n  jp.renderEntity()\n  jp.label.draw(\n    jp.absPos + jp.center - Coord(jp.label.dim / 2) + (1.0, 1.0),\n    jp.absRot,\n    jp.absScale,\n    jp.center,\n    jp.flip)\n\n\nconst Speed = 100\n\nmethod update*(jp: JoyPoint, elapsed: float) =\n  let move = Speed * elapsed / JoyAxis.high.float\n  jp.updateEntity(elapsed)\n  jp.pos.x += jp.joy.joyAxis(0).float * move\n  jp.pos.x = clamp(jp.pos.x, 0.0, game.size.w.float)\n  jp.pos.y += jp.joy.joyAxis(1).float * move\n  jp.pos.y = clamp(jp.pos.y, 0.0, game.size.h.float)\n\n"
  },
  {
    "path": "demos/demo21/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  joypoint\n\n\ntype\n  MainScene = ref object of Scene\n    joypoints: seq[JoyPoint]\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  scene.joypoints = @[]\n  for i in 0..<numJoysticks():\n    discard openJoystick(i)\n    scene.joypoints.add(newJoyPoint(i))\n    scene.add(scene.joypoints[^1])\n\n\nproc free*(scene: MainScene) =\n  discard\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  scene.eventScene(event)\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nproc joyInfo(id: int): string =\n  result = joyName(id)\n  for i in 0..<joyNumButtons(id):\n    if joyDown(id, i):\n      result &= \" \" & $i\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (260, 84), 0x000000CC'u32)\n  var y = 64\n  for i in 0..<numJoysticks():\n    discard string(\n      (8, y), joyInfo(i), 0xFFFFFFFF'u32)\n    y += 8\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n\n"
  },
  {
    "path": "demos/demo22/README.md",
    "content": "Nimgame 2: Demo 22\n==================\n\nMpegGraphic demo.\n\n![Screenshot](demo22.png)\n\n"
  },
  {
    "path": "demos/demo22/demo22.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 22 (MpegGraphic)\",\n             scaleQuality = 0):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo22/mainscene.nim",
    "content": "import\n  strutils,\n  nimgame2/plugin/mpeggraphic,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  nimgame2/utils\n\n\ntype\n  MainScene = ref object of Scene\n    movie: MpegGraphic\n    e: Entity\n\n\nproc moviePhysics*(entity: Entity, elapsed: float) =\n  defaultPhysics(entity, elapsed)\n\n  # Screen collision\n  if entity.pos.x < 0:\n    entity.vel.x *= -1\n  if entity.pos.y < 0:\n    entity.vel.y *= -1\n  if entity.pos.x >= game.size.w.float:\n    entity.vel.x *= -1\n  if entity.pos.y >= game.size.h.float:\n    entity.vel.y *= -1\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  # Movie\n  scene.movie = newMpegGraphic(\"video.mpg\")\n  scene.movie.loop = true\n  scene.e = newEntity()\n  scene.e.graphic = scene.movie\n  scene.e.physics = moviePhysics\n  scene.e.pos.x = rand(game.size.w).float\n  scene.e.pos.y = rand(game.size.h).float\n  scene.e.vel.x = rand(10.0..100.0) * randSign().float\n  scene.e.vel.y = rand(10.0..100.0) * randSign().float\n  scene.e.centrify()\n  scene.e.rotVel = rand(10.0..60.0) * randSign().float\n\n  # add to scene\n  scene.add(scene.e)\n\n\nproc free*(scene: MainScene) =\n  scene.movie.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (220, 124), 0x000000CC'u32)\n  discard string(\n    (8, 64), \"Enter - play\", 0xFF0000FF'u32)\n  discard string(\n    (8, 72), \"Space - pause\", 0xFF0000FF'u32)\n  discard string(\n    (8, 80), \"Backspace - stop\", 0xFF0000FF'u32)\n  discard string(\n    (8, 88), \"R - Rewind\", 0xFF0000FF'u32)\n  discard string(\n    (8, 96), \"Up/Down - volume: \" & $scene.movie.volume, 0xFF0000FF'u32)\n  discard string(\n    (8, 104), \"Right - skip 5s\", 0xFF0000FF'u32)\n  discard string(\n    (8, 112), \"Time: \" & scene.movie.currentTime.formatFloat(precision = 3) &\n    \"s of \" & scene.movie.totalTime.formatFloat(precision = 3) & \"s\", 0xFF0000FF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  if ScancodeReturn.pressed: scene.movie.play()\n  if ScancodeSpace.pressed: scene.movie.pause()\n  if ScancodeBackspace.pressed: scene.movie.stop()\n  if ScancodeR.pressed: scene.movie.rewind()\n  if ScancodeUp.pressed: scene.movie.volume =\n    (scene.movie.volume + 10).clamp(0, 100)\n  if ScancodeDown.pressed: scene.movie.volume =\n    (scene.movie.volume - 10).clamp(0, 100)\n  if ScancodeRight.pressed: scene.movie.skip(5.0)\n\n"
  },
  {
    "path": "demos/demo23/README.md",
    "content": "Nimgame 2: Demo 23\n==================\n\nTransform demo by [CodeDoes](https://github.com/CodeDoes).\n\n![Screenshot](demo23.png)\n\n"
  },
  {
    "path": "demos/demo23/demo23.nim",
    "content": "import\n  nimgame2 / [\n    nimgame, settings\n  ],\n  mainscene\n\n\ngame = newGame()\nif game.init(640, 480, \"Nimgame 2: Demo 22 (Transform)\"):\n  game.scene = newMainScene()\n  settings.updateInterval = 1000\n  settings.showInfo = true\n  game.run()\n\n"
  },
  {
    "path": "demos/demo23/mainscene.nim",
    "content": "import\n  nimgame2 / [\n    truetypefont, textgraphic, entity,\n    nimgame, scene, types,\n    graphic, input, settings],\n  nimgame2 / gui / widget,\n  private / [\n    circle_graphic,\n    frame]\n\n\ntype\n  MainScene* = ref object of Scene\n    font*: TrueTypeFont\n\n\nproc newCircleEntity*(): Entity =\n  var cgraphic = newCircleGraphic()\n  cgraphic.radius = 4.0\n  cgraphic.draw_border = false\n\n  result = newEntity()\n  result.graphic = cgraphic\n  result.centrify()\n\n\nproc createRotScaleTestEnts*(\n    scene: MainScene, text: string,\n    pos: var Coord, rot: Angle = 0.0, scale: Scale = 1.0) =\n  var\n    textEnt = newEntity()\n    textgraphic = newTextGraphic(scene.font)\n\n  scene.add(textEnt)\n  textEnt.graphic = textgraphic\n\n  textgraphic.setText text\n\n  textEnt.scale = scale\n  textEnt.pos = pos + (textEnt.bottomleft * textEnt.absScale)\n  textEnt.center += textEnt.bottomleft\n  echo textEnt.pos\n  # Want rel_pos before rotation\n  pos.y = (textEnt.transform * textEnt.bottomleft).y\n  textEnt.rot = rot * 90.0\n  for p in textEnt.world_corners.items():\n    var cent = newCircleEntity()\n    scene.add(cent)\n    cent.pos = p\n  var frameEnt = newGuiWidget()\n  scene.add(frameEnt)\n  var fGraphic = newFrameGraphic()\n  frameEnt.graphic = fGraphic\n  fGraphic.draw_filled = false\n  fGraphic.border_color = ColorRed\n  fGraphic.rect.x = textEnt.topleft.x.cint\n  fGraphic.rect.y = textEnt.topleft.y.cint\n  fGraphic.rect.w = textEnt.dim.w.cint\n  fGraphic.rect.h = textEnt.dim.h.cint\n  frameEnt.logic = proc (entity: Entity, elapsed: float) =\n    let color =\n      if entity.GuiWidget.state.isFocused: ColorOrange\n      else: ColorGreen\n    entity.graphic.FrameGraphic.border_color = color\n\n  frameEnt.center = textEnt.center\n  frameEnt.pos = textEnt.pos\n  frameEnt.rot = textEnt.rot\n  frameEnt.scale = textEnt.scale\n  var corners = newseq[Coord]()\n  for c in frameEnt.corners:\n    corners.add(c)\n  frameEnt.collider = frameEnt.newPolyCollider(frameEnt.pos, corners)\n\n\nproc init*(scene: MainScene) =\n  scene.Scene.init()\n  scene.font = newTrueTypeFont()\n  discard scene.font.load(\"../assets/fnt/FSEX300.ttf\", 32)\n\n  var rel_pos: Coord = (0.0, 100.0)\n  for scale in [0.8, 0.3, 0.4, 0.6, 0.7, 0.2]:\n    createRotScaleTestEnts(scene, \"Scale Test\", rel_pos, scale = scale)\n\n  for f in [0.8, 0.3, 0.4, 0.6, 0.7, 0.2]:\n    createRotScaleTestEnts(scene, \"Rot Scale Test\", rel_pos, rot = f, scale = f)\n\n  rel_pos = (400.0, 0.0)\n  for rot in [0.8, 0.3, 0.4, 0.6, 0.7, 0.2]:\n    createRotScaleTestEnts(scene, \"Rot Test\", rel_pos, rot = rot)\n\n\nproc newMainScene*(): MainScene =\n  new result\n  result.init()\n\n"
  },
  {
    "path": "demos/demo23/private/border_fill_graphic.nim",
    "content": "import\n  nimgame2 / [\n    types, graphic, types\n  ]\n\n\ntype\n  BorderFillGraphic* = ref object of Graphic\n    border_color*, fill_color*: Color\n    # border_thickness*: float #NOTE can't set border thickness at the moment\n    draw_border*, draw_filled*: bool\n\n\nproc initBorderFillGraphic*(self: BorderFillGraphic) =\n  self.draw_border = true\n  self.draw_filled = true\n  self.fill_color = ColorPurple ## Traditional visual debugging color\n  self.border_color = ColorPink\n  # self.border_thickness = 1.0\n\n\nmethod draw*(graphic: BorderFillGraphic,\n             pos: Coord = (0.0, 0.0),\n             angle: Angle = 0.0,\n             scale: Scale = 1.0,\n             center: Coord = (0.0, 0.0),\n             flip: Flip = Flip.none,\n             region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  raise newException(CatchableError, \"Can't use BorderFillGraphic draw method.\")\n\n\nmethod dim*(graphic: BorderFillGraphic): Dim =\n  raise newException(CatchableError, \"Can't use BorderFillGraphic dim method.\")\n\n"
  },
  {
    "path": "demos/demo23/private/circle_graphic.nim",
    "content": "import\n  nimgame2 / [\n    types, graphic, draw, utils\n  ],\n  border_fill_graphic\n\n\ntype\n  CircleGraphic* = ref object of BorderFillGraphic\n    radius*: float\n\n\nproc drawCircleGraphic*(self: CircleGraphic,\n                        pos: Coord = (0.0, 0.0),\n                        angle: Angle = 0.0,\n                        scale: Scale = 1.0,\n                        center: Coord = (0.0, 0.0),\n                        flip: Flip = Flip.none,\n                        region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  let point: Coord = pos\n  if self.draw_filled:\n    discard circle(point, self.radius, self.fill_color, DrawMode.filled)\n  if self.draw_border:\n    discard circle(point, self.radius, self.border_color, DrawMode.default)\n\n\nmethod draw*(graphic: CircleGraphic,\n             pos: Coord = (0.0, 0.0),\n             angle: Angle = 0.0,\n             scale: Scale = 1.0,\n             center: Coord = (0.0, 0.0),\n             flip: Flip = Flip.none,\n             region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  drawCircleGraphic(graphic, pos, angle, scale, center, flip, region)\n\n\nproc newCircleGraphic*(): CircleGraphic =\n  new result\n  result.initBorderFillGraphic()\n  result.radius = 5.0\n\n\nmethod dim*(self: CircleGraphic): Dim =\n  return (int self.radius * 2, int self.radius * 2)\n"
  },
  {
    "path": "demos/demo23/private/frame.nim",
    "content": "import \n  nimgame2 / [\n    types, graphic, draw, utils\n  ],\n  border_fill_graphic\n\ntype\n  FrameGraphic* = ref object of BorderFillGraphic\n    rect*: Rect\n\n  Bounds = tuple[a: Coord, b: Coord]\n\n  AngledBounds* = ref object of RootObj\n    bounds*: Bounds\n    angle*: Angle\n    center*: Coord\n\n\nproc points*(abounds: AngledBounds): auto {.inline.} =\n  let\n    a = abounds.bounds.a\n    b = abounds.bounds.b\n    center = abounds.center\n    angle = abounds.angle\n\n  template apply(coord: Coord): Coord =\n    rotate(coord, center, angle)\n\n  return @[\n    apply(a),\n    apply((b.x, a.y)),\n    apply(b),\n    apply((a.x, b.y))\n  ]\n\n\nproc points*(graphic: FrameGraphic, pos: Coord, angle: Angle,\n             scale: Scale, center: Coord): seq[Coord] =\n  var\n    abounds = new AngledBounds\n\n  abounds.bounds = (a: -center * scale,\n                    b: (-center + graphic.dim.toCoord) * scale).Bounds\n  abounds.angle = angle\n  abounds.center = pos\n  return abounds.points\n\n\nproc initFrameGraphic(graphic: FrameGraphic) =\n  graphic.initBorderFillGraphic()\n  graphic.rect= Rect(x: 0, y: 0, w: 0, h: 0)\n\n\nproc newFrameGraphic*(): FrameGraphic =\n  new result\n  result.initFrameGraphic()\n\n\nmethod dim*(self: FrameGraphic): Dim =\n  (self.rect.w.int, self.rect.h.int)\n\n\nproc drawFrameGraphic*(self: FrameGraphic,\n                       pos: Coord,\n                       angle: Angle,\n                       scale: Scale,\n                       center: Coord,\n                       flip: Flip,\n                       region: Rect) =\n  var points = self.points(pos,angle, scale,center)\n  if self.draw_border:\n    discard draw.polygon(points, self.border_color, DrawMode.default)\n  if self.draw_filled:\n    discard draw.polygon(points, self.fill_color, DrawMode.filled)\n\n\nmethod draw*(\n    graphic: FrameGraphic,\n    pos: Coord = (0.0, 0.0),\n    angle: Angle = 0.0,\n    scale: Scale = 1.0,\n    center: Coord = (0.0, 0.0),\n    flip: Flip = Flip.none,\n    region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  drawFrameGraphic(graphic, pos, angle, scale, center, flip, region)\n\n"
  },
  {
    "path": "demos/demo3/README.md",
    "content": "Nimgame 2: Demo 3\n=================\n\nInput demo. Demonstrates keyboard and mouse input.\n\n![Screenshot](demo3.png)\n\n"
  },
  {
    "path": "demos/demo3/demo3.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 3 (Input & Physics)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo3/mainscene.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  spaceman\n\n\ntype\n  MainScene = ref object of Scene\n    spacemanG: TextureGraphic\n    s: Spaceman\n\n\nproc spacemanPhysics(entity: Entity, elapsed: float) =\n  defaultPhysics(entity, elapsed)\n  if entity.pos.x.int < 0:\n    entity.pos.x = 0\n    entity.vel.x = 0\n  if entity.pos.x.int > game.size.w:\n    entity.pos.x = game.size.w.float\n    entity.vel.x = 0\n  if entity.pos.y.int < 0:\n    entity.pos.y = 0\n    entity.vel.y = 0\n  if entity.pos.y.int > game.size.h:\n    entity.pos.y = game.size.h.float\n    entity.vel.y = 0\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  # Spaceman\n  scene.s = newSpaceman()\n  scene.spacemanG = newTextureGraphic()\n  discard scene.spacemanG.load(\"../assets/gfx/spaceman.png\")\n  scene.s.graphic = scene.spacemanG\n  scene.s.physics = spacemanPhysics\n  scene.s.centrify()\n  scene.add(scene.s)\n  # Mouse\n  #discard mouseRelative(true)\n\nproc free*(scene: MainScene) =\n  scene.spacemanG.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  # Draw line between the spaceman and the mouse position if LMB is pressed\n  if MouseButton.left.down:\n    discard line(scene.s.pos, mouse.abs, 0xFF0000FF'u32)\n\n  scene.renderScene()\n\n  var arrows: string = \"\"\n  if ScancodeUp.down: arrows &= \"Up \"\n  if ScancodeDown.down: arrows &= \"Down \"\n  if ScancodeLeft.down: arrows &= \"Left \"\n  if ScancodeRight.down: arrows &= \"Right\"\n\n  var wsad: string = \"\"\n  if ScancodeW.down: wsad &= \"W \"\n  if ScancodeS.down: wsad &= \"S \"\n  if ScancodeA.down: wsad &= \"A \"\n  if ScancodeD.down: wsad &= \"D \"\n\n  var mouse: string = \"Abs(\" & $mouse.abs.x.int & \":\" & $mouse.abs.y.int &\n                      \") Rel(\" & $mouse.rel.x.int & \":\" & $mouse.rel.y.int & \")\"\n\n  var buttons: string = \"\"\n  if MouseButton.left.down: buttons &= \"L \"\n  if MouseButton.middle.down: buttons &= \"M \"\n  if MouseButton.right.down: buttons &= \"R \"\n  if MouseButton.x1.down: buttons &= \"X1 \"\n  if MouseButton.x2.down: buttons &= \"X2 \"\n\n\n  discard box((4, 60), (260, 100), 0xCC000000'u32)\n  discard string(\n    (8, 64), \"Arrows: \" & arrows, 0xFF0000FF'u32)\n  discard string(\n    (8, 72), \"WSAD: \" & wsad, 0xFF0000FF'u32)\n  discard string(\n    (8, 80), \"Mouse: \" & mouse, 0xFF0000FF'u32)\n  discard string(\n    (8, 88), \"Mouse buttons: \" & buttons, 0xFF0000FF'u32)\n  discard string(\n    (8, 96), \"Mouse wheel: \" & $mouseWheel, 0xFF0000FF'u32)\n\nconst\n  Acc = 100.0\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  # Arrows and WSAD\n  if ScancodeUp.down or ScancodeW.down: scene.s.vel.y -= Acc * elapsed\n  if ScancodeDown.down or ScancodeS.down: scene.s.vel.y += Acc * elapsed\n  if ScancodeLeft.down or ScancodeA.down: scene.s.vel.x -= Acc * elapsed\n  if ScancodeRight.down or ScancodeD.down: scene.s.vel.x += Acc * elapsed\n  # Mouse\n  if MouseButton.left.down:\n    var vector: Coord\n    vector = (mouse.abs - scene.s.pos) * elapsed\n    scene.s.vel += vector\n\n"
  },
  {
    "path": "demos/demo3/spaceman.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Spaceman* = ref object of Entity\n\n\nproc init*(entity: Spaceman) =\n  entity.initEntity()\n  entity.pos.x = game.size.w.float / 2\n  entity.pos.y = game.size.h.float / 2\n  entity.drg.x = 10.0\n  entity.drg.y = 10.0\n\n\nproc newSpaceman*(): Spaceman =\n  result = new Spaceman\n  result.init()\n\n"
  },
  {
    "path": "demos/demo4/README.md",
    "content": "Nimgame 2: Demo 4\n=================\n\nSprite demo. Demonstrates sprite animation.\n\n![Screenshot](demo4.png)\n\n"
  },
  {
    "path": "demos/demo4/demo4.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 4 (Sprite & Animation)\"):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo4/dwarf.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Dwarf* = ref object of Entity\n\n\nproc init*(entity: Dwarf) =\n  entity.initEntity()\n  entity.centrify()\n  entity.physics = defaultPhysics\n\n\nproc newDwarf*(): Dwarf =\n  result = new Dwarf\n  result.init()\n\n"
  },
  {
    "path": "demos/demo4/mainscene.nim",
    "content": "import\n  math,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  dwarf\n\n\ntype\n  MainScene = ref object of Scene\n    dG: TextureGraphic\n    d: Dwarf\n\n\nconst Framerate = 1/12\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n  # Dwarf\n  scene.dG = newTextureGraphic()\n  discard scene.dG.load(\"../assets/gfx/dwarf.png\")\n  scene.d = newDwarf()\n  scene.d.pos = (200, 100)\n  scene.d.graphic = scene.dG\n  scene.d.initSprite((24, 48))\n  discard scene.d.addAnimation(\n    \"down\", [0, 1, 2, 3, 4, 5], Framerate)\n  discard scene.d.addAnimation(\n    \"up\", [6, 7, 8, 9, 10, 11], Framerate)\n  discard scene.d.addAnimation(\n    \"left\", [12, 13, 14, 15, 16, 17], Framerate)\n  discard scene.d.addAnimation(\n    \"right\", [12, 13, 14, 15, 16, 17], Framerate, Flip.horizontal)\n  scene.add(scene.d)\n\n\nproc free*(scene: MainScene) =\n  scene.dG.free\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n      case event.key.keysym.sym:\n      of K_Escape:\n        gameRunning = false\n      else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n\nconst Speed = 50\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n\n  # Controls and speed\n  type Direction = enum none, down, up, left, right\n  var direction =\n    if ScancodeDown.down or ScancodeS.down: down\n    elif ScancodeUp.down or ScancodeW.down: up\n    elif ScancodeLeft.down or ScancodeA.down: left\n    elif ScancodeRight.down or ScancodeD.down: right\n    else: none\n\n  case direction:\n  of none:\n    if not scene.d.sprite.playing:\n      scene.d.vel = (0, 0)\n  of down:\n    if  not scene.d.sprite.playing or\n        (scene.d.currentAnimationName != \"down\"):\n      scene.d.play(\"down\", 1)\n      scene.d.vel = (0, Speed)\n  of up:\n    if  not scene.d.sprite.playing or\n        (scene.d.currentAnimationName != \"up\"):\n      scene.d.play(\"up\", 1)\n      scene.d.vel = (0, -Speed)\n  of left:\n    if  not scene.d.sprite.playing or\n        (scene.d.currentAnimationName != \"left\"):\n      scene.d.play(\"left\", 1)\n      scene.d.vel = (-Speed, 0)\n  of right:\n    if  not scene.d.sprite.playing or\n        (scene.d.currentAnimationName != \"right\"):\n      scene.d.play(\"right\", 1)\n      scene.d.vel = (Speed, 0)\n\n"
  },
  {
    "path": "demos/demo5/README.md",
    "content": "Nimgame 2: Demo 5\n=================\n\nColliders demo. Demonstrates different colliders.\n\n![Screenshot](demo5.png)\n\n"
  },
  {
    "path": "demos/demo5/cursor.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity,\n  nimgame2/input\n\ntype\n  Cursor* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Cursor) =\n  entity.initEntity()\n  entity.tags.add(\"Cursor\")\n  entity.pos = mouse.abs\n  entity.collidedWith = @[]\n\n\nproc newCursor*(): Cursor =\n  result = new Cursor\n  result.init()\n\n\nmethod update*(entity: Cursor, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n  entity.pos = mouse.abs\n\n\nmethod onCollide*(entity: Cursor, target: Entity) =\n  if target.tags.len > 0:\n    entity.collidedWith.add(target.tags[0])\n\n"
  },
  {
    "path": "demos/demo5/demo5.nim",
    "content": "import\n  sdl2_nim/sdl,\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 5 (Collisions)\",\n             scaleQuality = 0):\n  showInfo = true\n  colliderOutline = true\n  discard sdl.showCursor(0)\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo5/earth.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Earth* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Earth) =\n  entity.initEntity()\n  entity.tags.add(\"Earth\")\n  entity.pos = (0.0, 150.0)\n  entity.collidedWith = @[]\n\n\nproc newEarth*(): Earth =\n  result = new Earth\n  result.init()\n\n\nmethod update*(entity: Earth, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n\n\nmethod onCollide*(entity: Earth, target: Entity) =\n  if target.tags.len > 0:\n    entity.collidedWith.add(target.tags[0])\n\n"
  },
  {
    "path": "demos/demo5/line.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Line* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Line) =\n  entity.initEntity()\n  entity.tags.add(\"Line\")\n  entity.collidedWith = @[]\n\n\nproc newLine*(): Line =\n  result = new Line\n  result.init()\n\n\nmethod update*(entity: Line, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n\n\nmethod onCollide*(entity: Line, target: Entity) =\n  if target.tags.len > 0:\n    entity.collidedWith.add(target.tags[0])\n\n"
  },
  {
    "path": "demos/demo5/mainscene.nim",
    "content": "import\n  math,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  cursor, earth, line, poly1, poly2, poly3, poly9, spaceman\n\n\ntype\n  MainScene = ref object of Scene\n    cursorG, earthG, spacemanG: TextureGraphic\n    c: Cursor\n    e: Earth\n    d1, d2: Line\n    s: Spaceman\n    p1: Poly1\n    p2: Poly2\n    p3: Poly3\n    p9: Poly9\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Cursor\n  scene.c = newCursor()\n  scene.cursorG = newTextureGraphic()\n  discard scene.cursorG.load(\"../assets/gfx/cursor.png\")\n  scene.c.graphic = scene.cursorG\n  scene.c.collider = newCollider(scene.c)\n\n  # Line 1\n  scene.d1 = newLine()\n  scene.d1.pos = (50.0, 420.0)\n  scene.d1.center = (25.0, 0.0)\n  scene.d1.collider = scene.d1.newLineCollider((-25, 0), (25, 0))\n\n  # Line 2\n  scene.d2 = newLine()\n  scene.d2.pos = (50.0, 450.0)\n  scene.d2.collider = scene.d2.newLineCollider((0, 0), (100, 0))\n\n  # Earth\n  scene.e = newEarth()\n  scene.earthG = newTextureGraphic()\n  discard scene.earthG.load(\"../assets/gfx/earth.png\")\n  scene.e.graphic = scene.earthG\n  let radius = scene.earthG.dim.w.float / 2\n  scene.e.collider = newCircleCollider(scene.e, (radius, radius), radius)\n\n  # Spaceman\n  scene.s = newSpaceman()\n  scene.spacemanG = newTextureGraphic()\n  discard scene.spacemanG.load(\"../assets/gfx/spaceman.png\")\n  scene.s.graphic = scene.spacemanG\n  scene.s.centrify()\n  scene.s.collider = newBoxCollider(scene.s, (0, 0), scene.spacemanG.dim)\n\n  # Poly1\n  scene.p1 = newPoly1()\n  scene.p1.pos = (350, 160)\n\n  # Poly2\n  scene.p2 = newPoly2()\n  scene.p2.pos = (350, 210)\n\n  # Poly3\n  scene.p3 = newPoly3()\n  scene.p3.pos = (350, 260)\n\n  # Poly9\n  scene.p9 = newPoly9()\n  scene.p9.pos = (350, 360)\n\n  # add to scene\n  scene.add(scene.d1)\n  scene.add(scene.d2)\n  scene.add(scene.s)\n  scene.add(scene.e)\n  scene.add(scene.c)\n  scene.add(scene.p1)\n  scene.add(scene.p2)\n  scene.add(scene.p3)\n  scene.add(scene.p9)\n\n\nproc free*(scene: MainScene) =\n  scene.earthG.free\n  scene.spacemanG.free\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Space:\n      colliderOutline = not colliderOutline\n    else: discard\n\n\nproc generateCollisionString(name: string, list: seq[string]): string =\n  if list.len > 0:\n    result = name & \" collides with: \"\n    for tag in list:\n      result.add(tag & \", \")\n    result = result[0 .. ^3]\n  else:\n    result = name & \" isn't colliding with anything\"\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (380, 140), 0x000000CC'u32)\n\n  discard string(\n    (8, 64), generateCollisionString(\"Cursor\", scene.c.collidedWith),\n    0xFFFFFFFF'u32)\n\n  discard string(\n    (8, 72), generateCollisionString(\"Line\", scene.d1.collidedWith),\n    0xFFFFFFFF'u32)\n\n  discard string(\n    (8, 80), generateCollisionString(\"Earth\", scene.e.collidedWith),\n    0xFFFFFFFF'u32)\n\n  discard string(\n    (8, 88), generateCollisionString(\"Spaceman\", scene.s.collidedWith),\n    0xFFFFFFFF'u32)\n\n  discard string(\n    (8, 96), generateCollisionString(\"Poly9\", scene.p9.collidedWith),\n    0xFFFFFFFF'u32)\n\n  discard string(\n    (8, 120), \"Space toggles outlines, Arrows control spaceman\",\n    0xFFFFFFFF'u32)\n\n  discard string(\n    (8, 128), \"WASDQE control line, IJKLUO control polygon\",\n    0xFFFFFFFF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  # Spaceman\n  if ScancodeRight.down: scene.s.pos.x += 1\n  if ScancodeLeft.down: scene.s.pos.x -= 1\n  if ScancodeDown.down: scene.s.pos.y += 1\n  if ScancodeUp.down: scene.s.pos.y -= 1\n  # Line\n  if ScancodeD.down: scene.d1.pos.x += 1\n  if ScancodeA.down: scene.d1.pos.x -= 1\n  if ScancodeS.down: scene.d1.pos.y += 1\n  if ScancodeW.down: scene.d1.pos.y -= 1\n  if ScancodeQ.down: scene.d1.rot -= 1\n  if ScancodeE.down: scene.d1.rot += 1\n  # Poly9\n  if ScancodeL.down: scene.p9.pos.x += 1\n  if ScancodeJ.down: scene.p9.pos.x -= 1\n  if ScancodeK.down: scene.p9.pos.y += 1\n  if ScancodeI.down: scene.p9.pos.y -= 1\n  if ScancodeU.down: scene.p9.rot -= 1\n  if ScancodeO.down: scene.p9.rot += 1\n\n"
  },
  {
    "path": "demos/demo5/poly1.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Poly1* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Poly1) =\n  entity.initEntity()\n  entity.tags.add(\"Poly1\")\n  entity.collider = entity.newPolyCollider((0.0, 0.0),\n    [ (0.0,   0.0)])\n  entity.collidedWith = @[]\n\n\nproc newPoly1*(): Poly1 =\n  result = new Poly1\n  result.init()\n\n\nmethod update*(entity: Poly1, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n\n\nmethod onCollide*(entity: Poly1, target: Entity) =\n  if target.tags.len > 0:\n    entity.collidedWith.add(target.tags[0])\n\n"
  },
  {
    "path": "demos/demo5/poly2.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Poly2* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Poly2) =\n  entity.initEntity()\n  entity.tags.add(\"Poly2\")\n  entity.collider = entity.newPolyCollider((0.0, 0.0),\n    [ (0.0,   0.0),\n      (50.0,  0.0)])\n  entity.collidedWith = @[]\n\n\nproc newPoly2*(): Poly2 =\n  result = new Poly2\n  result.init()\n\n\nmethod update*(entity: Poly2, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n\n\nmethod onCollide*(entity: Poly2, target: Entity) =\n  if target.tags.len > 0:\n    entity.collidedWith.add(target.tags[0])\n\n"
  },
  {
    "path": "demos/demo5/poly3.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Poly3* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Poly3) =\n  entity.initEntity()\n  entity.tags.add(\"Poly3\")\n  entity.collider = entity.newPolyCollider((0.0, 0.0),\n    [ (0.0,   0.0),\n      (50.0,  0.0),\n      (25.0,  35.0)])\n  entity.collidedWith = @[]\n\n\nproc newPoly3*(): Poly3 =\n  result = new Poly3\n  result.init()\n\n\nmethod update*(entity: Poly3, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n\n\nmethod onCollide*(entity: Poly3, target: Entity) =\n  if target.tags.len > 0:\n    entity.collidedWith.add(target.tags[0])\n\n"
  },
  {
    "path": "demos/demo5/poly9.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Poly9* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Poly9) =\n  entity.initEntity()\n  entity.tags.add(\"Poly9\")\n  entity.centrify\n  entity.collider = entity.newPolyCollider((0.0, 0.0),\n    [ (-40.0, -50.0),\n      (-20.0, -50.0),\n      (-30.0,  20.0),\n      ( 30.0,  20.0),\n      ( 20.0, -50.0),\n      ( 40.0, -50.0),\n      ( 40.0,  30.0),\n      (  0.0,  50.0),\n      (-40.0,  30.0)])\n  entity.collidedWith = @[]\n\n\nproc newPoly9*(): Poly9 =\n  result = new Poly9\n  result.init()\n\n\nmethod update*(entity: Poly9, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n\n\nmethod onCollide*(entity: Poly9, target: Entity) =\n  if target.tags.len > 0:\n    entity.collidedWith.add(target.tags[0])\n\n"
  },
  {
    "path": "demos/demo5/spaceman.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Spaceman* = ref object of Entity\n    collidedWith*: seq[string]\n\n\nproc init*(entity: Spaceman) =\n  entity.initEntity()\n  entity.tags.add(\"Spaceman\")\n  entity.pos = (450.0, 100.0)\n  entity.collidedWith = @[]\n\n\nproc newSpaceman*(): Spaceman =\n  result = new Spaceman\n  result.init()\n\n\nmethod update*(entity: Spaceman, elapsed: float) =\n  entity.updateEntity(elapsed)\n  entity.collidedWith = @[]\n\n\nmethod onCollide*(entity: Spaceman, target: Entity) =\n  if target.tags.len > 0:\n    entity.collidedWith.add(target.tags[0])\n\n"
  },
  {
    "path": "demos/demo6/README.md",
    "content": "Nimgame 2: Demo 6\n=================\n\nGrouping demo. Demonstrates effects of setting up entity parent.\n\n![Screenshot](demo6.png)\n\n"
  },
  {
    "path": "demos/demo6/demo6.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 6 (Grouping)\",\n             scaleQuality = 0):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo6/earth.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Earth* = ref object of Entity\n\n\nproc init*(entity: Earth) =\n  entity.initEntity()\n  entity.tags.add(\"Earth\")\n  entity.pos = (320.0, 240.0)\n\n\nproc newEarth*(): Earth =\n  result = new Earth\n  result.init()\n\n"
  },
  {
    "path": "demos/demo6/mainscene.nim",
    "content": "import\n  math,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/texturegraphic,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  earth, spaceman\n\n\ntype\n  MainScene = ref object of Scene\n    cursorG, earthG, spacemanG: TextureGraphic\n    e: Earth\n    s: Spaceman\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Earth\n  scene.e = newEarth()\n  scene.earthG = newTextureGraphic()\n  discard scene.earthG.load(\"../assets/gfx/earth.png\")\n  scene.e.graphic = scene.earthG\n  scene.e.centrify()\n  scene.e.collider = scene.e.newCircleCollider((0, 0), 128)\n\n  # Spaceman\n  scene.s = newSpaceman()\n  scene.spacemanG = newTextureGraphic()\n  discard scene.spacemanG.load(\"../assets/gfx/spaceman.png\")\n  scene.s.graphic = scene.spacemanG\n  scene.s.centrify()\n  scene.s.parent = scene.e\n  scene.s.collider = scene.s.newBoxCollider((0, 0), (100, 160))\n\n  # add to scene\n  scene.add(scene.s)\n  scene.add(scene.e)\n\n\nproc free*(scene: MainScene) =\n  scene.earthG.free\n  scene.spacemanG.free\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Space:\n      colliderOutline = not colliderOutline\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n  discard box((4, 60), (260, 100), 0x000000CC'u32)\n\n  discard string((8, 64), \"WASD  - move group\", 0xFFFFFFFF'u32)\n  discard string((8, 72), \"QE    - rotate group\", 0xFFFFFFFF'u32)\n  discard string((8, 80), \"RF    - scale group\", 0xFFFFFFFF'u32)\n  discard string((8, 88), \"Space - toggle outlines\", 0xFFFFFFFF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  if ScancodeD.down: scene.e.pos.x += 1\n  if ScancodeA.down: scene.e.pos.x -= 1\n  if ScancodeS.down: scene.e.pos.y += 1\n  if ScancodeW.down: scene.e.pos.y -= 1\n  if ScancodeQ.down: scene.e.rot -= 1\n  if ScancodeE.down: scene.e.rot += 1\n  if ScancodeR.down: scene.e.scale -= 0.01\n  if ScancodeF.down: scene.e.scale += 0.01\n\n"
  },
  {
    "path": "demos/demo6/spaceman.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Spaceman* = ref object of Entity\n\n\nproc init*(entity: Spaceman) =\n  entity.initEntity()\n  entity.tags.add(\"Spaceman\")\n  entity.pos = (200.0, 0.0)\n\n\nproc newSpaceman*(): Spaceman =\n  result = new Spaceman\n  result.init()\n\n\nmethod update*(entity: Spaceman, elapsed: float) =\n  entity.updateEntity(elapsed)\n\n"
  },
  {
    "path": "demos/demo7/README.md",
    "content": "Nimgame 2: Demo 7\n=================\n\nText demo. Demonstrates bitmap and TrueType fonts.\n\n![Screenshot](demo7.png)\n\n"
  },
  {
    "path": "demos/demo7/demo7.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 6 (Text)\",\n             scaleQuality = 0):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo7/earth.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/entity\n\ntype\n  Earth* = ref object of Entity\n\n\nproc init*(entity: Earth) =\n  entity.initEntity()\n  entity.tags.add(\"Earth\")\n  entity.pos = (0.0, 50.0)\n\n\nproc newEarth*(): Earth =\n  result = new Earth\n  result.init()\n\n"
  },
  {
    "path": "demos/demo7/mainscene.nim",
    "content": "import\n  math,\n  nimgame2/nimgame,\n  nimgame2/font,\n  nimgame2/bitmapfont,\n  nimgame2/truetypefont,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/graphic,\n  nimgame2/textgraphic,\n  nimgame2/texturegraphic,\n  nimgame2/typewriter,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  earth\n\n\ntype\n  MainScene = ref object of Scene\n    earthG: TextureGraphic\n    e: Earth\n    bmFont: BitmapFont\n    bmText: TextGraphic\n    bmEntity: Entity\n    ttFont: TrueTypeFont\n    ttText: TextGraphic\n    ttEntity: Entity\n    twText: TextGraphic\n    twEntity: Typewriter\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Earth\n  scene.e = newEarth()\n  scene.earthG = newTextureGraphic()\n  discard scene.earthG.load(\"../assets/gfx/earth.png\")\n  scene.e.graphic = scene.earthG\n\n  # BitmapFont\n  scene.bmFont = newBitmapFont()\n  discard scene.bmFont.load(\"../assets/fnt/default8x16.png\", (8, 16))\n\n  # TrueTypeFont\n  scene.ttFont = newTrueTypeFont()\n  discard scene.ttFont.load(\"../assets/fnt/FSEX300.ttf\", 16)\n\n  # Text\n  scene.bmText = newTextGraphic()\n  scene.bmText.font = scene.bmFont\n  scene.bmText.lines =\n    [ \"The quick brown fox\",\n      \"jumps over the lazy dog\"]\n\n  scene.ttText = newTextGraphic()\n  scene.ttText.font = scene.ttFont\n  scene.ttText.lines =\n    [ \"В чащах юга жил бы цитрус?\",\n      \"Да, но фальшивый экземпляр!\"]\n\n  scene.twText = newTextGraphic()\n  scene.twText.font = scene.ttFont\n\n  # Entity\n  scene.bmEntity = newEntity()\n  scene.bmEntity.pos = (8, 128)\n  scene.bmEntity.graphic = scene.bmText\n\n  scene.ttEntity = newEntity()\n  scene.ttEntity.pos = (8, 192)\n  scene.ttEntity.graphic = scene.ttText\n\n  scene.twEntity = newTypewriter(scene.twText, 0.1)\n  #scene.twEntity.width = 10 # uncomment to enable text wrapping\n  scene.twEntity.pos = (300, 8)\n  scene.twEntity.add \"Fancy typewriter effect!\"\n\n  # add to scene\n  scene.add(scene.bmEntity)\n  scene.add(scene.ttEntity)\n  scene.add(scene.twEntity)\n  scene.add(scene.e)\n\n\nproc free*(scene: MainScene) =\n  scene.bmFont.free()\n  scene.ttFont.free()\n  scene.bmText.free()\n  scene.ttText.free()\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nproc changeAlign(scene: MainScene, increase = true) =\n  # get\n  var a = scene.bmText.align\n  # change\n  if increase:\n    if a.int == 0:\n      a = TextAlign(1)\n    elif a < TextAlign.high:\n      a = TextAlign(a.int shl 1)\n  else: # decrease\n    if a.int > 0:\n      a = TextAlign(a.int shr 1)\n  # set\n  scene.bmText.align = a\n  scene.ttText.align = a\n\nlet\n  colors = [0xFFFFFFFF'u32, 0xFF0000FF'u32, 0x00FF00FF'u32, 0x0000FFFF'u32]\n  colorNames = [\"white\", \"red\", \"green\", \"blue\"]\nvar clr = 0\n\nproc changeColor(scene: MainScene, increase = true) =\n  # get alpha\n  let a = scene.bmText.color.a\n  # change\n  if increase:\n    if clr < colors.high:\n      inc clr\n  else: # decrease\n    if clr > 0:\n      dec clr\n  # set\n  var color: Color = colors[clr]\n  color.a = a\n  scene.bmText.color = color\n  scene.ttText.color = color\n\n\nproc changeAlpha(scene: MainScene, increase = true) =\n  # get\n  var\n    c = scene.bmText.color\n    a = c.a.int\n  # change\n  if increase:\n    a += 15\n  else: # decrease\n    a -= 15\n  # check limits\n  if a < 0:\n    a = 0\n  if a > 255:\n    a = 255\n  # set\n  c.a = a.uint8\n  scene.bmText.color = c\n  scene.ttText.color = c\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Q:\n      scene.changeAlign()\n    of K_A:\n      scene.changeAlign(false)\n    of K_W:\n      scene.changeColor()\n    of K_S:\n      scene.changeColor(false)\n    of K_E:\n      scene.changeAlpha()\n    of K_D:\n      scene.changeAlpha(false)\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n  discard box((4, 60), (260, 100), 0x000000CC'u32)\n\n  discard string((8, 64), \"BitmapFont and TrueTypeFont:\", 0xFFFFFFFF'u32)\n  discard string((8, 72),\n    \"QA - change alignment: \" & $scene.bmText.align, 0xFFFFFFFF'u32)\n  discard string((8, 80),\n    \"WS - change color: \" & colorNames[clr], 0xFFFFFFFF'u32)\n  discard string((8, 88),\n    \"ED - change alpha: \" & $scene.bmText.color.a.int, 0xFFFFFFFF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n\n  if ScancodeReturn.down: scene.twEntity.force()\n\n"
  },
  {
    "path": "demos/demo8/README.md",
    "content": "Nimgame 2: Demo 8\n=================\n\nProcGraphic demo. Demonstrates procedural graphics.\n\n![Screenshot](demo8.png)\n\n"
  },
  {
    "path": "demos/demo8/demo8.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 8 (ProcGraphic)\",\n             scaleQuality = 0):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo8/mainscene.nim",
    "content": "import\n  math,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/entity,\n  nimgame2/graphic,\n  nimgame2/input,\n  nimgame2/procgraphic,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  nimgame2/utils\n\n\ntype\n  MainScene = ref object of Scene\n    polyG: ProcGraphic\n    poly: Entity\n\n\nconst polyLines0 = [\n  (  0.0, -70.0),\n  ( 40.0, -30.0),\n  ( 80.0, -50.0),\n  ( 60.0,  30.0),\n  (-60.0,  30.0),\n  (-80.0, -50.0),\n  (-40.0, -30.0)]\n\nconst polyLines1 = [\n  ((-30.0,  10.0), (-30.0, -10.0)),\n  ((-30.0, -10.0), (-10.0,  10.0)),\n  ((-10.0,  10.0), (-10.0, -10.0)),\n  ((  0.0, -10.0), (  0.0,  10.0)),\n  (( 10.0,  10.0), ( 10.0, -10.0)),\n  (( 10.0, -10.0), ( 20.0,   0.0)),\n  (( 20.0,   0.0), ( 30.0, -10.0)),\n  (( 30.0, -10.0), ( 30.0,  10.0))]\n\n\nproc polyProc(graphic: ProcGraphic,\n              pos: Coord,\n              angle: Angle,\n              scale: Scale,\n              center: Coord,\n              flip: Flip,\n              region: Rect) =\n  let\n    color0: Color = 0xFFFF00FF'u32\n    color1: Color = 0x000000FF'u32\n\n  var poly: seq[Coord] = @[]\n  for p in polyLines0:\n    poly.add(rotate(p, (0.0, 0.0), angle) * scale + pos)\n  discard polygon(poly, color0, DrawMode.filled)\n\n  for i in polyLines1:\n    let\n      p0 = rotate(i[0], (0.0, 0.0), angle) * scale + pos\n      p1 = rotate(i[1], (0.0, 0.0), angle) * scale + pos\n    discard aaLine(p0, p1, color1)\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Poly\n  scene.poly = newEntity()\n  scene.polyG = newProcGraphic()\n  scene.polyG.procedure = polyProc\n  scene.poly.graphic = scene.polyG\n  scene.poly.pos = (320, 240)\n\n  # add to scene\n  scene.add(scene.poly)\n\n\nproc free*(scene: MainScene) =\n  discard\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n  discard box((4, 60), (260, 92), 0x000000CC'u32)\n\n  discard string((8, 64), \"WSAD - move\", 0xFFFFFFFF'u32)\n  discard string((8, 72), \"QE   - rotate\", 0xFFFFFFFF'u32)\n  discard string((8, 80), \"RF   - scale\", 0xFFFFFFFF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  if ScancodeA.down: scene.poly.pos.x -= 1\n  if ScancodeD.down: scene.poly.pos.x += 1\n  if ScancodeW.down: scene.poly.pos.y -= 1\n  if ScancodeS.down: scene.poly.pos.y += 1\n  if ScancodeQ.down: scene.poly.rot -= 1\n  if ScancodeE.down: scene.poly.rot += 1\n  if ScancodeR.down: scene.poly.scale -= 0.01\n  if ScancodeF.down: scene.poly.scale += 0.01\n\n"
  },
  {
    "path": "demos/demo9/README.md",
    "content": "Nimgame 2: Demo 9\n=================\n\nAudio demo. Demonstrates sound effects.\n\n![Screenshot](demo9.png)\n\n"
  },
  {
    "path": "demos/demo9/demo9.nim",
    "content": "import\n  nimgame2/nimgame,\n  nimgame2/settings,\n  nimgame2/assets,\n  nimgame2/texturegraphic,\n  mainscene\n\ngame = newGame()\nif game.init(w = 640, h = 480, title = \"Nimgame 2: Demo 9 (Audio)\",\n             scaleQuality = 0):\n  showInfo = true\n  game.scene = newMainScene()\n  game.run()\n\n"
  },
  {
    "path": "demos/demo9/mainscene.nim",
    "content": "import\n  math,\n  nimgame2/assets,\n  nimgame2/audio,\n  nimgame2/nimgame,\n  nimgame2/draw,\n  nimgame2/input,\n  nimgame2/scene,\n  nimgame2/settings,\n  nimgame2/types,\n  nimgame2/utils\n\n\ntype\n  MainScene = ref object of Scene\n    tack: Sound\n\n\nvar\n  musicData: Assets[Music]\n\n\nproc init*(scene: MainScene) =\n  Scene(scene).init()\n\n  # Sound\n  scene.tack = newSound(\"../assets/sfx/tack.wav\")\n  scene.tack.volume = Volume.high div 2\n\n  # Music\n  musicData = newAssets[Music](\"../assets/mus\",\n    proc(file: string): Music = newMusic(file))\n  playlist = newPlaylist()\n  for track in musicData.values:\n    playlist.list.add(track)\n\n\nproc free*(scene: MainScene) =\n  discard\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  result.init()\n\n\nmethod event*(scene: MainScene, event: Event) =\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Escape:\n      gameRunning = false\n    of K_Space:\n      discard scene.tack.play()\n    of K_M:\n      discard playlist.play()\n    else: discard\n\n\nmethod render*(scene: MainScene) =\n  scene.renderScene()\n\n  discard box((4, 60), (260, 92), 0x000000CC'u32)\n\n  discard string((8, 64), \"Space - play sound\", 0xFFFFFFFF'u32)\n  discard string((8, 72),\n    \"Up/Down - sound volume: \" & $scene.tack.volume, 0xFFFFFFFF'u32)\n  discard string((8, 80), \"M - play random music track\", 0xFFFFFFFF'u32)\n  discard string((8, 88),\n    \"PgUp/PgDn - music volume: \" & $getMusicVolume(), 0xFFFFFFFF'u32)\n\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n  if ScancodeUp.down: scene.tack.volumeInc(1)\n  if ScancodeDown.down: scene.tack.volumeDec(1)\n  if ScancodePageUp.down: musicVolumeInc(1)\n  if ScancodePageDown.down: musicVolumeDec(1)\n\n"
  },
  {
    "path": "demos/nim.cfg",
    "content": "--multimethods:on\n"
  },
  {
    "path": "docs/changelog.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n    <aside>\n\n    </aside>\n\n\n    <article>\n        <h2>CHANGELOG</h2>\n\n        <h3>v0.5 alpha (2017-08-01)</h3>\n        <ul>\n            <li>changed physics and logic systems</li>\n            <li>platformer physics</li>\n            <li>CoordInt type</li>\n            <li>now collider module is autmatically included into the entity module</li>\n            <li>group collider</li>\n            <li>huge Tilemap optimizations</li>\n            <li>various utility Tilemap procedures</li>\n            <li>TextureGraphic.drawTiled</li>\n            <li>GUI:\n                <ul>\n                    <li>GUIProgressBar</li>\n                    <li>widget actions</li>\n                </ul>\n            </li>\n            <li>various minor changes and upgrades</li>\n            <li>Nim v0.17.0 transition</li>\n            <li>documentation, snippets, and demos update</li>\n            <li>\n                <a href=\"tut102_platformer.html\">\n                    second tutorial\n                </a>\n        </ul>\n\n        <h3>v0.4 alpha (2017-05-04)</h3>\n        <ul>\n            <li>GUI:\n                <ul>\n                    <li>RadioGroup</li>\n                    <li>RadioButton</li>\n                </ul>\n            </li>\n            <li>IndexedImage</li>\n            <li>PerspectiveImage</li>\n            <li>TextureAtlas</li>\n            <li>joysticks support</li>\n            <li>window management procedures</li>\n            <li>4 new demos</li>\n            <li>\n                <a href=\"tut101_bounce.html\">\n                   first tutorial\n                </a>\n            </li>\n        </ul>\n\n    <h3>v0.3 alpha (2017-03-10)</h3>\n\n    <ul>\n        <li>camera property (Scene)</li>\n        <li>new collision procedures</li>\n        <li>reworked input</li>\n        <li>Mosaic</li>\n        <li>parallax property (Entity)</li>\n        <li>TextField</li>\n        <li>GUI:\n            <ul>\n                <li>Widget</li>\n                <li>Button</li>\n                <li>TextInput</li>\n            </ul>\n        </li>\n        <li>3 new demos</li>\n        <li>home page, snippets, and documentation</li>\n    </ul>\n\n    <h3>v0.2 alpha (2017-01-31)</h3>\n\n    <ul>\n        <li>collider optimizations</li>\n        <li>music playlists</li>\n        <li>random procedures</li>\n        <li>tilemaps</li>\n        <li>tweens</li>\n        <li>emitters</li>\n        <li>various fixes</li>\n        <li>4 new demos</li>\n    </ul>\n\n    <h3>v0.1 alpha (2017-01-16)</h3>\n\n    <ul>\n        <li>base scene/entity system</li>\n        <li>assets manager</li>\n        <li>basic sound and music</li>\n        <li>colliders (point, box, circle, line, and polygon)</li>\n        <li>fonts (bitmap and TrueType) and text output</li>\n        <li>keyboard and mouse input</li>\n        <li>vector drawing procedures</li>\n    </ul>\n\n    </article>\n\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/demos.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n    <aside>\n    </aside>\n\n    <article>\n        <h2>DEMOS</h2>\n\n        <h3>Game Demos</h3>\n        <ul>\n            <li>\n                <a href=\"https://github.com/Vladar4/ng2gggrotto\"\n                   target=\"_blank\">\n                    Glorious Glacier Grotto\n                </a>\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/ng2planetoids\"\n                   target=\"_blank\">\n                    Planetoids\n                </a>\n            </li>\n        </ul>\n\n        <h3>Feature Demos</h3>\n        <ul>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo1\"\n                   target=\"_blank\">\n                    Demo 1\n                </a>\n                &nbsp;Performance\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo2\"\n                   target=\"_blank\">\n                    Demo 2\n                </a>\n                &nbsp;Graphic\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo3\"\n                   target=\"_blank\">\n                    Demo 3\n                </a>\n                &nbsp;Input\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo4\"\n                   target=\"_blank\">\n                    Demo 4\n                </a>\n                &nbsp;Sprite\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo5\"\n                   target=\"_blank\">\n                    Demo 5\n                </a>\n                &nbsp;Colliders\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo6\"\n                   target=\"_blank\">\n                    Demo 6\n                </a>\n                &nbsp;Grouping\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo7\"\n                   target=\"_blank\">\n                    Demo 7\n                </a>\n                &nbsp;Text\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo8\"\n                   target=\"_blank\">\n                    Demo 8\n                </a>\n                &nbsp;ProcGraphic\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo9\"\n                   target=\"_blank\">\n                    Demo 9\n                </a>\n                &nbsp;Audio\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo10\"\n                   target=\"_blank\">\n                    Demo 10\n                </a>\n                &nbsp;Layers\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo11\"\n                   target=\"_blank\">\n                    Demo 11\n                </a>\n                &nbsp;Tweens\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo12\"\n                   target=\"_blank\">\n                    Demo 12\n                </a>\n                &nbsp;Emitters\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo13\"\n                   target=\"_blank\">\n                    Demo 13\n                </a>\n                &nbsp;TileMaps\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo14\"\n                   target=\"_blank\">\n                    Demo 14\n                </a>\n                &nbsp;TileMaps, Tweens, Emitters\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo15\"\n                   target=\"_blank\">\n                    Demo 15\n                </a>\n                &nbsp;Camera\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo16\"\n                   target=\"_blank\">\n                    Demo 16\n                </a>\n                &nbsp;Parallax\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo17\"\n                   target=\"_blank\">\n                    Demo 17\n                </a>\n                &nbsp;GUI (Buttons, TextInput)\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo18\"\n                   target=\"_blank\">\n                    Demo 18\n                </a>\n                &nbsp;IndexedImage\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo19\"\n                   target=\"_blank\">\n                    Demo 19\n                </a>\n                &nbsp;PerspectiveImage\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo20\"\n                   target=\"_blank\">\n                    Demo 20\n                </a>\n                &nbsp;TextureAtlas\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo21\"\n                   target=\"_blank\">\n                    Demo 21\n                </a>\n                &nbsp;Joysticks\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo22\"\n                   target=\"_blank\">\n                    Demo 22\n                </a>\n                &nbsp;MpegGraphic\n            </li>\n            <li>\n                <a href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo23\"\n                   target=\"_blank\">\n                    Demo 23\n                </a>\n                &nbsp;Transform\n            </li>\n        </ul>\n    </article>\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/docs/assets.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>assets</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">assets</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Assets\"\n    title=\"Assets[T] = OrderedTableRef[string, T]\"><wbr />Assets<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#newAssets%2CopenArray%5Bstring%5D%2Cproc%28string%29\"\n    title=\"newAssets[T](files: openArray[string]; init: proc (file: string): T): Assets[T]\"><wbr />new<wbr />Assets<span class=\"attachedType\" style=\"visibility:hidden\">Assets</span></a></li>\n  <li><a class=\"reference\" href=\"#newAssets%2Cstring%2Cproc%28string%29\"\n    title=\"newAssets[T](dir: string; init: proc (file: string): T): Assets[T]\"><wbr />new<wbr />Assets<span class=\"attachedType\" style=\"visibility:hidden\">Assets</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Assets\"></a>\n<dt><pre><a href=\"assets.html#Assets\"><span class=\"Identifier\">Assets</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span> <span class=\"Other\">=</span> <span class=\"Identifier\">OrderedTableRef</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">,</span> <span class=\"Identifier\">T</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"newAssets,openArray[string],proc(string)\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newAssets</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">files</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">init</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"assets.html#Assets\"><span class=\"Identifier\">Assets</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n<p>Create a new assets collection.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">files</span></tt> an array of target files.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">init</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">T</span></tt>'s init/load procedure. </p>\n\n\n</dd>\n<a id=\"newAssets,string,proc(string)\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newAssets</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">dir</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">init</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"assets.html#Assets\"><span class=\"Identifier\">Assets</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n<p>Create a new assets collection.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">dir</span></tt> target directory.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">init</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">T</span></tt>'s init/load procedure. </p>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:31 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/audio.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>audio</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">audio</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Channel\"\n    title=\"Channel = int\"><wbr />Channel<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Distance\"\n    title=\"Distance = range[0 .. 255]\"><wbr />Distance<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Panning\"\n    title=\"Panning = range[0 .. 255]\"><wbr />Panning<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Volume\"\n    title=\"Volume = range[0 .. mix.MaxVolume]\"><wbr />Volume<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Sound\"\n    title=\"Sound = ref object of RootObj\n  fChunk: mix.Chunk\n  fChannel: Channel\"><wbr />Sound<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Music\"\n    title=\"Music = ref object of RootObj\n  fMusic: mix.Music\"><wbr />Music<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Playlist\"\n    title=\"Playlist = ref object of RootObj\n  list*: seq[Music]\n  fIndex: int\n  fFinished: bool\"><wbr />Playlist<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#8\" id=\"58\">Vars</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#playlist_2\"\n    title=\"playlist: Playlist = nil\"><wbr />playlist<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CSound\"\n    title=\"free(sound: Sound)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CSound%2Cstring\"\n    title=\"load(sound: Sound; file: string): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CSound%2Cptr.RWops%2Cbool\"\n    title=\"load(sound: Sound; src: ptr RWops; freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#newSound%2Cstring\"\n    title=\"newSound(file: string): Sound\"><wbr />new<wbr />Sound<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#newSound%2Cptr.RWops%2Cbool\"\n    title=\"newSound(src: ptr RWops; freeSrc: bool = true): Sound\"><wbr />new<wbr />Sound<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#available%2CSound\"\n    title=\"available(sound: Sound): bool\"><wbr />available<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#playing%2CSound\"\n    title=\"playing(sound: Sound): bool\"><wbr />playing<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#stop%2CSound\"\n    title=\"stop(sound: Sound)\"><wbr />stop<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#play%2CSound%2Cint\"\n    title=\"play(sound: Sound; loops: int = 0): Channel\"><wbr />play<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#channel%2CSound\"\n    title=\"channel(sound: Sound): Channel\"><wbr />channel<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#paused%2CSound\"\n    title=\"paused(sound: Sound): bool\"><wbr />paused<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#pause%2CSound\"\n    title=\"pause(sound: Sound)\"><wbr />pause<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#resume%2CSound\"\n    title=\"resume(sound: Sound)\"><wbr />resume<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#volume%2CSound\"\n    title=\"volume(sound: Sound): Volume\"><wbr />volume<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#normalizeVolume%2Cint\"\n    title=\"normalizeVolume(val: int): Volume\"><wbr />normalize<wbr />Volume<span class=\"attachedType\" style=\"visibility:hidden\">Volume</span></a></li>\n  <li><a class=\"reference\" href=\"#volume%3D%2CSound%2CVolume\"\n    title=\"volume=(sound: Sound; val: Volume)\"><wbr />volume=<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#setDistance%2CChannel%2CDistance\"\n    title=\"setDistance(channel: Channel; distance: Distance)\"><wbr />set<wbr />Distance<span class=\"attachedType\" style=\"visibility:hidden\">Channel</span></a></li>\n  <li><a class=\"reference\" href=\"#setPanning%2CChannel%2CPanning%2CPanning\"\n    title=\"setPanning(channel: Channel; left: Panning = Panning.high;\n           right: Panning = Panning.high)\"><wbr />set<wbr />Panning<span class=\"attachedType\" style=\"visibility:hidden\">Channel</span></a></li>\n  <li><a class=\"reference\" href=\"#setPosition%2CChannel%2CAngle%2CDistance\"\n    title=\"setPosition(channel: Channel; angle: Angle; distance: Distance)\"><wbr />set<wbr />Position<span class=\"attachedType\" style=\"visibility:hidden\">Channel</span></a></li>\n  <li><a class=\"reference\" href=\"#soundStop%2C\"\n    title=\"soundStop()\"><wbr />sound<wbr />Stop<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#soundPlayingNum%2C\"\n    title=\"soundPlayingNum(): int\"><wbr />sound<wbr />Playing<wbr />Num<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#soundPausedNum%2C\"\n    title=\"soundPausedNum(): int\"><wbr />sound<wbr />Paused<wbr />Num<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#soundPause%2C\"\n    title=\"soundPause()\"><wbr />sound<wbr />Pause<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#soundResume%2C\"\n    title=\"soundResume()\"><wbr />sound<wbr />Resume<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#getSoundVolume%2C\"\n    title=\"getSoundVolume(): Volume\"><wbr />get<wbr />Sound<wbr />Volume<span class=\"attachedType\" style=\"visibility:hidden\">Volume</span></a></li>\n  <li><a class=\"reference\" href=\"#setSoundVolume%2CVolume\"\n    title=\"setSoundVolume(val: Volume)\"><wbr />set<wbr />Sound<wbr />Volume<span class=\"attachedType\" style=\"visibility:hidden\">Volume</span></a></li>\n  <li><a class=\"reference\" href=\"#free%2CMusic\"\n    title=\"free(music: Music)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">Music</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CMusic%2Cstring\"\n    title=\"load(music: Music; file: string): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">Music</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CMusic%2Cptr.RWops%2Cbool\"\n    title=\"load(music: Music; src: ptr RWops; freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">Music</span></a></li>\n  <li><a class=\"reference\" href=\"#newMusic%2Cstring\"\n    title=\"newMusic(file: string): Music\"><wbr />new<wbr />Music<span class=\"attachedType\" style=\"visibility:hidden\">Music</span></a></li>\n  <li><a class=\"reference\" href=\"#newMusic%2Cptr.RWops%2Cbool\"\n    title=\"newMusic(src: ptr RWops; freeSrc: bool = true): Music\"><wbr />new<wbr />Music<span class=\"attachedType\" style=\"visibility:hidden\">Music</span></a></li>\n  <li><a class=\"reference\" href=\"#available%2CMusic\"\n    title=\"available(music: Music): bool\"><wbr />available<span class=\"attachedType\" style=\"visibility:hidden\">Music</span></a></li>\n  <li><a class=\"reference\" href=\"#play%2CMusic%2Cint\"\n    title=\"play(music: Music; loops: int = 0)\"><wbr />play<span class=\"attachedType\" style=\"visibility:hidden\">Music</span></a></li>\n  <li><a class=\"reference\" href=\"#musicPaused%2C\"\n    title=\"musicPaused(): bool\"><wbr />music<wbr />Paused<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#musicPause%2C\"\n    title=\"musicPause()\"><wbr />music<wbr />Pause<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#musicResume%2C\"\n    title=\"musicResume()\"><wbr />music<wbr />Resume<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#musicRewind%2C\"\n    title=\"musicRewind()\"><wbr />music<wbr />Rewind<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#musicPlaying%2C\"\n    title=\"musicPlaying(): bool\"><wbr />music<wbr />Playing<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#musicStop%2C\"\n    title=\"musicStop()\"><wbr />music<wbr />Stop<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#musicPosition%2Cfloat\"\n    title=\"musicPosition(val: float)\"><wbr />music<wbr />Position<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CPlaylist\"\n    title=\"init(pl: Playlist)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">Playlist</span></a></li>\n  <li><a class=\"reference\" href=\"#newPlaylist%2C\"\n    title=\"newPlaylist(): Playlist\"><wbr />new<wbr />Playlist<span class=\"attachedType\" style=\"visibility:hidden\">Playlist</span></a></li>\n  <li><a class=\"reference\" href=\"#index%2CPlaylist\"\n    title=\"index(pl: Playlist): int\"><wbr />index<span class=\"attachedType\" style=\"visibility:hidden\">Playlist</span></a></li>\n  <li><a class=\"reference\" href=\"#play%2CPlaylist%2Cint\"\n    title=\"play(pl: Playlist; index: int = -1): int\"><wbr />play<span class=\"attachedType\" style=\"visibility:hidden\">Playlist</span></a></li>\n  <li><a class=\"reference\" href=\"#stop%2CPlaylist\"\n    title=\"stop(pl: Playlist)\"><wbr />stop<span class=\"attachedType\" style=\"visibility:hidden\">Playlist</span></a></li>\n  <li><a class=\"reference\" href=\"#update%2CPlaylist\"\n    title=\"update(pl: Playlist)\"><wbr />update<span class=\"attachedType\" style=\"visibility:hidden\">Playlist</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#volumeInc.t%2CSound%2Cint\"\n    title=\"volumeInc(sound: Sound; val: int)\"><wbr />volume<wbr />Inc<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#volumeDec.t%2CSound%2Cint\"\n    title=\"volumeDec(sound: Sound; val: int)\"><wbr />volume<wbr />Dec<span class=\"attachedType\" style=\"visibility:hidden\">Sound</span></a></li>\n  <li><a class=\"reference\" href=\"#playing.t%2CChannel\"\n    title=\"playing(channel: Channel): bool\"><wbr />playing<span class=\"attachedType\" style=\"visibility:hidden\">Channel</span></a></li>\n  <li><a class=\"reference\" href=\"#soundVolumeInc.t%2Cint\"\n    title=\"soundVolumeInc(val: int)\"><wbr />sound<wbr />Volume<wbr />Inc<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#soundVolumeDec.t%2Cint\"\n    title=\"soundVolumeDec(val: int)\"><wbr />sound<wbr />Volume<wbr />Dec<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#setMusicVolume.t%2CVolume\"\n    title=\"setMusicVolume(val: Volume)\"><wbr />set<wbr />Music<wbr />Volume<span class=\"attachedType\" style=\"visibility:hidden\">Volume</span></a></li>\n  <li><a class=\"reference\" href=\"#getMusicVolume.t%2C\"\n    title=\"getMusicVolume(): Volume\"><wbr />get<wbr />Music<wbr />Volume<span class=\"attachedType\" style=\"visibility:hidden\">Volume</span></a></li>\n  <li><a class=\"reference\" href=\"#musicVolumeInc.t%2Cint\"\n    title=\"musicVolumeInc(val: int)\"><wbr />music<wbr />Volume<wbr />Inc<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#musicVolumeDec.t%2Cint\"\n    title=\"musicVolumeDec(val: int)\"><wbr />music<wbr />Volume<wbr />Dec<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Channel\"></a>\n<dt><pre><a href=\"audio.html#Channel\"><span class=\"Identifier\">Channel</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Distance\"></a>\n<dt><pre><a href=\"audio.html#Distance\"><span class=\"Identifier\">Distance</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">range</span><span class=\"Other\">[</span><span class=\"DecNumber\">0</span> <span class=\"Operator\">..</span> <span class=\"DecNumber\">255</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Panning\"></a>\n<dt><pre><a href=\"audio.html#Panning\"><span class=\"Identifier\">Panning</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">range</span><span class=\"Other\">[</span><span class=\"DecNumber\">0</span> <span class=\"Operator\">..</span> <span class=\"DecNumber\">255</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Volume\"></a>\n<dt><pre><a href=\"audio.html#Volume\"><span class=\"Identifier\">Volume</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">range</span><span class=\"Other\">[</span><span class=\"DecNumber\">0</span> <span class=\"Operator\">..</span> <span class=\"Identifier\">mix</span><span class=\"Other\">.</span><span class=\"Identifier\">MaxVolume</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Sound\"></a>\n<dt><pre><a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">fChunk</span><span class=\"Other\">:</span> <span class=\"Identifier\">mix</span><span class=\"Other\">.</span><span class=\"Identifier\">Chunk</span>\n  <span class=\"Identifier\">fChannel</span><span class=\"Other\">:</span> <a href=\"audio.html#Channel\"><span class=\"Identifier\">Channel</span></a>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Music\"></a>\n<dt><pre><a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">fMusic</span><span class=\"Other\">:</span> <span class=\"Identifier\">mix</span><span class=\"Other\">.</span><span class=\"Identifier\">Music</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Playlist\"></a>\n<dt><pre><a href=\"audio.html#Playlist\"><span class=\"Identifier\">Playlist</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">list</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a><span class=\"Other\">]</span>\n  <span class=\"Identifier\">fIndex</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n  <span class=\"Identifier\">fFinished</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"8\">\n<h1><a class=\"toc-backref\" href=\"#8\">Vars</a></h1>\n<dl class=\"item\">\n<a id=\"playlist_2\"></a>\n<dt><pre><span class=\"Identifier\">playlist</span><span class=\"Other\">:</span> <a href=\"audio.html#Playlist\"><span class=\"Identifier\">Playlist</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,Sound,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,Sound,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newSound,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newSound</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newSound,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newSound</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"available,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">available</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> is ready to use, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"playing,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">playing</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> is playing, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"stop,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">stop</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nStop the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt>. \n\n</dd>\n<a id=\"play,Sound,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">play</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">loops</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Channel\"><span class=\"Identifier\">Channel</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Play the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">loops</span></tt> + <cite>1</cite> times.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the channel the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> is played on. </p>\n\n\n</dd>\n<a id=\"channel,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">channel</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Channel\"><span class=\"Identifier\">Channel</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the channel, the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> is played on. \n\n</dd>\n<a id=\"paused,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">paused</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> is paused, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"pause,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pause</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nPause the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt>. \n\n</dd>\n<a id=\"resume,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">resume</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nResume the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> if it is paused. \n\n</dd>\n<a id=\"volume,Sound\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">volume</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Volume\"><span class=\"Identifier\">Volume</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the volume of the <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt>. \n\n</dd>\n<a id=\"normalizeVolume,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">normalizeVolume</span><span class=\"Other\">(</span><span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Volume\"><span class=\"Identifier\">Volume</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"volume=,Sound,Volume\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">volume=</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"audio.html#Volume\"><span class=\"Identifier\">Volume</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> volume. \n\n</dd>\n<a id=\"setDistance,Channel,Distance\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setDistance</span><span class=\"Other\">(</span><span class=\"Identifier\">channel</span><span class=\"Other\">:</span> <a href=\"audio.html#Channel\"><span class=\"Identifier\">Channel</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <a href=\"audio.html#Distance\"><span class=\"Identifier\">Distance</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet the distance on a <tt class=\"docutils literal\"><span class=\"pre\">channel</span></tt>.<dl class=\"docutils\"><dt><tt class=\"docutils literal\"><span class=\"pre\">distance</span></tt>:</dt>\n<dd><cite>0</cite> - near (loud) <cite>255</cite> - far (quiet)</dd>\n</dl>\n\n\n</dd>\n<a id=\"setPanning,Channel,Panning,Panning\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setPanning</span><span class=\"Other\">(</span><span class=\"Identifier\">channel</span><span class=\"Other\">:</span> <a href=\"audio.html#Channel\"><span class=\"Identifier\">Channel</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">left</span><span class=\"Other\">:</span> <a href=\"audio.html#Panning\"><span class=\"Identifier\">Panning</span></a> <span class=\"Other\">=</span> <a href=\"audio.html#Panning\"><span class=\"Identifier\">Panning</span></a><span class=\"Other\">.</span><span class=\"Identifier\">high</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">right</span><span class=\"Other\">:</span> <a href=\"audio.html#Panning\"><span class=\"Identifier\">Panning</span></a> <span class=\"Other\">=</span> <a href=\"audio.html#Panning\"><span class=\"Identifier\">Panning</span></a><span class=\"Other\">.</span><span class=\"Identifier\">high</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Set the panning on a <tt class=\"docutils literal\"><span class=\"pre\">channel</span></tt>.</p>\n<p>Setting both <tt class=\"docutils literal\"><span class=\"pre\">left</span></tt> and <tt class=\"docutils literal\"><span class=\"pre\">right</span></tt> to <cite>255</cite> (<tt class=\"docutils literal\"><span class=\"pre\">Panning.high</span></tt>) will unregister the effect from <tt class=\"docutils literal\"><span class=\"pre\">channel</span></tt>. </p>\n\n\n</dd>\n<a id=\"setPosition,Channel,Angle,Distance\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setPosition</span><span class=\"Other\">(</span><span class=\"Identifier\">channel</span><span class=\"Other\">:</span> <a href=\"audio.html#Channel\"><span class=\"Identifier\">Channel</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <a href=\"audio.html#Distance\"><span class=\"Identifier\">Distance</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet the position on a <tt class=\"docutils literal\"><span class=\"pre\">channel</span></tt>.<dl class=\"docutils\"><dt><tt class=\"docutils literal\"><span class=\"pre\">angle</span></tt>:</dt>\n<dd><cite>0</cite> - front <cite>90</cite> - right <cite>180</cite> - behind <cite>270</cite> - left</dd>\n<dt><tt class=\"docutils literal\"><span class=\"pre\">distance</span></tt>:</dt>\n<dd><cite>0</cite> - near (loud) <cite>255</cite> - far (quiet)</dd>\n</dl>\n\n\n</dd>\n<a id=\"soundStop,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">soundStop</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nStop all sound channels. \n\n</dd>\n<a id=\"soundPlayingNum,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">soundPlayingNum</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the number of currently playing channels. \n\n</dd>\n<a id=\"soundPausedNum,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">soundPausedNum</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the number of currently paused channels. \n\n</dd>\n<a id=\"soundPause,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">soundPause</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nPause all sound channels. \n\n</dd>\n<a id=\"soundResume,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">soundResume</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nResume all sound channels. \n\n</dd>\n<a id=\"getSoundVolume,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">getSoundVolume</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Volume\"><span class=\"Identifier\">Volume</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> average sound volume. \n\n</dd>\n<a id=\"setSoundVolume,Volume\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setSoundVolume</span><span class=\"Other\">(</span><span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"audio.html#Volume\"><span class=\"Identifier\">Volume</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet new volume for all sound channels. \n\n</dd>\n<a id=\"free,Music\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">music</span><span class=\"Other\">:</span> <a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,Music,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">music</span><span class=\"Other\">:</span> <a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,Music,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">music</span><span class=\"Other\">:</span> <a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newMusic,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newMusic</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newMusic,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newMusic</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"available,Music\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">available</span><span class=\"Other\">(</span><span class=\"Identifier\">music</span><span class=\"Other\">:</span> <a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if the <tt class=\"docutils literal\"><span class=\"pre\">music</span></tt> is ready to use, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"play,Music,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">play</span><span class=\"Other\">(</span><span class=\"Identifier\">music</span><span class=\"Other\">:</span> <a href=\"audio.html#Music\"><span class=\"Identifier\">Music</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">loops</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nPlay the <tt class=\"docutils literal\"><span class=\"pre\">music</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">loops</span></tt> + <cite>1</cite> times. \n\n</dd>\n<a id=\"musicPaused,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">musicPaused</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if music is paused, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"musicPause,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">musicPause</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nPause music. \n\n</dd>\n<a id=\"musicResume,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">musicResume</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nResume music. \n\n</dd>\n<a id=\"musicRewind,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">musicRewind</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nRewind music. \n\n</dd>\n<a id=\"musicPlaying,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">musicPlaying</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if music is playing, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"musicStop,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">musicStop</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nStop music. \n\n</dd>\n<a id=\"musicPosition,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">musicPosition</span><span class=\"Other\">(</span><span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Set current position in the music stream.</p>\n<p>Works only on MOD, OGG, and MP3 music:</p>\n<p>MOD <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt> is a pattern number.</p>\n<p>OGG <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt> is seconds from from the beginning.</p>\n<p>MP3 <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt> is seconds from the current position. </p>\n\n\n</dd>\n<a id=\"init,Playlist\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">pl</span><span class=\"Other\">:</span> <a href=\"audio.html#Playlist\"><span class=\"Identifier\">Playlist</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newPlaylist,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newPlaylist</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Playlist\"><span class=\"Identifier\">Playlist</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"index,Playlist\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">index</span><span class=\"Other\">(</span><span class=\"Identifier\">pl</span><span class=\"Other\">:</span> <a href=\"audio.html#Playlist\"><span class=\"Identifier\">Playlist</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current track index. \n\n</dd>\n<a id=\"play,Playlist,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">play</span><span class=\"Other\">(</span><span class=\"Identifier\">pl</span><span class=\"Other\">:</span> <a href=\"audio.html#Playlist\"><span class=\"Identifier\">Playlist</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">index</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"Operator\">-</span><span class=\"DecNumber\">1</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Play a music track from the <tt class=\"docutils literal\"><span class=\"pre\">playlist</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">index</span></tt> track index, or <cite>-1</cite> for a random track.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Retrun</span></tt> current track index. </p>\n\n\n</dd>\n<a id=\"stop,Playlist\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">stop</span><span class=\"Other\">(</span><span class=\"Identifier\">pl</span><span class=\"Other\">:</span> <a href=\"audio.html#Playlist\"><span class=\"Identifier\">Playlist</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"update,Playlist\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">update</span><span class=\"Other\">(</span><span class=\"Identifier\">pl</span><span class=\"Other\">:</span> <a href=\"audio.html#Playlist\"><span class=\"Identifier\">Playlist</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"volumeInc.t,Sound,int\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">volumeInc</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nIncrease <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> volume by <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt>. \n\n</dd>\n<a id=\"volumeDec.t,Sound,int\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">volumeDec</span><span class=\"Other\">(</span><span class=\"Identifier\">sound</span><span class=\"Other\">:</span> <a href=\"audio.html#Sound\"><span class=\"Identifier\">Sound</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nDecrease <tt class=\"docutils literal\"><span class=\"pre\">sound</span></tt> volume by <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt>. \n\n</dd>\n<a id=\"playing.t,Channel\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">playing</span><span class=\"Other\">(</span><span class=\"Identifier\">channel</span><span class=\"Other\">:</span> <a href=\"audio.html#Channel\"><span class=\"Identifier\">Channel</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if <tt class=\"docutils literal\"><span class=\"pre\">channel</span></tt> is playing right now, <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"soundVolumeInc.t,int\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">soundVolumeInc</span><span class=\"Other\">(</span><span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nIncrease global sound volume by <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt>. \n\n</dd>\n<a id=\"soundVolumeDec.t,int\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">soundVolumeDec</span><span class=\"Other\">(</span><span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nDecrease global sound volume by <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt>. \n\n</dd>\n<a id=\"setMusicVolume.t,Volume\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">setMusicVolume</span><span class=\"Other\">(</span><span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"audio.html#Volume\"><span class=\"Identifier\">Volume</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\nSet music volume, or return current setting, if <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt> = <cite>-1</cite>. \n\n</dd>\n<a id=\"getMusicVolume.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">getMusicVolume</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"audio.html#Volume\"><span class=\"Identifier\">Volume</span></a></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"musicVolumeInc.t,int\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">musicVolumeInc</span><span class=\"Other\">(</span><span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nIncrease music volume by <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt>. \n\n</dd>\n<a id=\"musicVolumeDec.t,int\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">musicVolumeDec</span><span class=\"Other\">(</span><span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nDecrease music volume by <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt>. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:32 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/bitmapfont.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>bitmapfont</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">bitmapfont</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#BitmapFont\"\n    title=\"BitmapFont = ref object of Font\n  fSurface: Surface            ## Source font surface\n  fDim, fCharDim: Dim           ## Dimensions of the surface and a single character\n  fChars: seq[CoordInt]        ## Coordinates of all characters\"><wbr />Bitmap<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CBitmapFont\"\n    title=\"free(font: BitmapFont)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CBitmapFont\"\n    title=\"init(font: BitmapFont)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CBitmapFont%2Cstring%2CDim%2CDim%2CDim\"\n    title=\"load(font: BitmapFont; file: string; charDim: Dim; offset: Dim = (0, 0);\n     border: Dim = (0, 0)): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CBitmapFont%2Cptr.RWops%2CDim%2CDim%2CDim%2Cbool\"\n    title=\"load(font: BitmapFont; src: ptr RWops; charDim: Dim; offset: Dim = (0, 0);\n     border: Dim = (0, 0); freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#newBitmapFont%2C\"\n    title=\"newBitmapFont(): BitmapFont\"><wbr />new<wbr />Bitmap<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#newBitmapFont%2Cstring%2CDim%2CDim%2CDim\"\n    title=\"newBitmapFont(file: string; charDim: Dim; offset: Dim = (0, 0); border: Dim = (0, 0)): BitmapFont\"><wbr />new<wbr />Bitmap<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#newBitmapFont%2Cptr.RWops%2CDim%2CDim%2CDim%2Cbool\"\n    title=\"newBitmapFont(src: ptr RWops; charDim: Dim; offset: Dim = (0, 0); border: Dim = (0, 0);\n              freeSrc: bool = true): BitmapFont\"><wbr />new<wbr />Bitmap<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#renderBitmapFont%2CBitmapFont%2Cstring%2CColor\"\n    title=\"renderBitmapFont(font: BitmapFont; line: string; color: Color = DefaultFontColor): Surface\"><wbr />render<wbr />Bitmap<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#charH.e%2CBitmapFont\"\n    title=\"charH(font: BitmapFont): int\"><wbr />char<wbr />H<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#lineDim.e%2CBitmapFont%2Cstring\"\n    title=\"lineDim(font: BitmapFont; line: string): Dim\"><wbr />line<wbr />Dim<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CBitmapFont%2Cstring%2CColor\"\n    title=\"render(font: BitmapFont; line: string; color: Color = DefaultFontColor): Surface\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">BitmapFont</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"font.html\">font</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"BitmapFont\"></a>\n<dt><pre><a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a>\n  <span class=\"Identifier\">fSurface</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span>            <span class=\"Comment\">## Source font surface</span>\n  <span class=\"Identifier\">fDim</span><span class=\"Other\">,</span> <span class=\"Identifier\">fCharDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>           <span class=\"Comment\">## Dimensions of the surface and a single character</span>\n  <span class=\"Identifier\">fChars</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">]</span>        <span class=\"Comment\">## Coordinates of all characters</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,BitmapFont\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,BitmapFont\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,BitmapFont,string,Dim,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">charDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">border</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load <tt class=\"docutils literal\"><span class=\"pre\">font</span></tt> data from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">charDim</span></tt> dimensions of a single font character.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">offset</span></tt>  offset from the edge of the texture.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">border</span></tt>  border around individual characters.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, or <cite>false</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"load,BitmapFont,ptr.RWops,Dim,Dim,Dim,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">charDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">border</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newBitmapFont,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newBitmapFont</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newBitmapFont,string,Dim,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newBitmapFont</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">charDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">border</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCreate and load a new bitmap font from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>. \n\n</dd>\n<a id=\"newBitmapFont,ptr.RWops,Dim,Dim,Dim,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newBitmapFont</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">charDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">border</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"renderBitmapFont,BitmapFont,string,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderBitmapFont</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultFontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"charH.e,BitmapFont\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">charH</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a font character's height. \n\n</dd>\n<a id=\"lineDim.e,BitmapFont,string\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">lineDim</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> dimensions of a <tt class=\"docutils literal\"><span class=\"pre\">line</span></tt> of text, written in <tt class=\"docutils literal\"><span class=\"pre\">font</span></tt>. \n\n</dd>\n<a id=\"render.e,BitmapFont,string,Color\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"bitmapfont.html#BitmapFont\"><span class=\"Identifier\">BitmapFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultFontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:32 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/count.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Raleway:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>Module count</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Raleway\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 20px;\n  color: #666;\n  background-color: rgba(252, 248, 244, 0.75); }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.15);\n  background-color: transparent;\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 12px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 0.25em 10px;\n  font-size: 14px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: whitesmoke;\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Helvetica Neue\", \"HelveticaNeue\", \"Raleway\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Raleway\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier, dt pre > span.Operator ~ span.Operator {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n  div.pragma {\n    display: none;\n  }\n  span.pragmabegin {\n    cursor: pointer;\n  }\n  span.pragmaend {\n    cursor: pointer;\n  }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n</style>\n\n<script type=\"text/javascript\" src=\"../dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction togglepragma(d) {\n  if (d.style.display != 'inline')\n    d.style.display = 'inline';\n  else\n    d.style.display = 'none';\n}\n\nfunction main() {\n  var elements = document.getElementsByClassName(\"pragmabegin\");\n  for (var i = 0; i < elements.length; ++i) {\n    var e = elements[i];\n    e.onclick = function(event) {\n      togglepragma(event.target.nextSibling);\n    };\n  }\n  var elements = document.getElementsByClassName(\"pragmaend\");\n  for (var i = 0; i < elements.length; ++i) {\n    var e = elements[i];\n    e.onclick = function(event) {\n      togglepragma(event.target.previousSibling);\n    };\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">Module count</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div>\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#CountMgr\"\n    title=\"CountMgr* = ref object\n  counter: int\n  timerId: sdl.TimerID\n  current*: int\"><wbr />Count<wbr />Mgr<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#update,CountMgr\"\n    title=\"update*(mgr: CountMgr)\"><wbr />update<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#start,CountMgr,uint32\"\n    title=\"start*(mgr: CountMgr; interval: uint32 = 1000)\"><wbr />start<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#stop,CountMgr\"\n    title=\"stop*(mgr: CountMgr)\"><wbr />stop<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#free,CountMgr\"\n    title=\"free*(mgr: CountMgr)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#newCountMgr,\"\n    title=\"newCountMgr*(): CountMgr\"><wbr />new<wbr />Count<wbr />Mgr<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#timeDiff,uint64,uint64\"\n    title=\"timeDiff*(first, second: uint64): int\"><wbr />time<wbr />Diff<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"sdl2/sdl.html\">sdl2/sdl</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<dt id=\"CountMgr\"><a name=\"CountMgr\"></a><pre><span class=\"Identifier\">CountMgr</span><span class=\"Operator\">*</span> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span>\n  <span class=\"Identifier\">counter</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n  <span class=\"Identifier\">timerId</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">TimerID</span>\n  <span class=\"Identifier\">current</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n</pre></dt>\n<dd>\nCurrent counter value\n&nbsp;&nbsp;<a\nhref=\"/tree/master/count.nim#L33\"\nclass=\"link-seesrc\" target=\"_blank\">Source</a>\n<a href=\"/edit/devel/count.nim#L33\" class=\"link-seesrc\" target=\"_blank\" >Edit</a>\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<dt id=\"update\"><a name=\"update,CountMgr\"></a><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">update</span><span class=\"Operator\">*</span><span class=\"Other\">(</span><span class=\"Identifier\">mgr</span><span class=\"Other\">:</span> <span class=\"Identifier\">CountMgr</span><span class=\"Other\">)</span> <span class=\"Other pragmabegin\">{.</span><div class=\"pragma\"><span class=\"Identifier\">inline</span></div><span class=\"Other pragmaend\">.}</span></pre></dt>\n<dd>\nIncrease the counter by one. \n&nbsp;&nbsp;<a\nhref=\"/tree/master/count.nim#L40\"\nclass=\"link-seesrc\" target=\"_blank\">Source</a>\n<a href=\"/edit/devel/count.nim#L40\" class=\"link-seesrc\" target=\"_blank\" >Edit</a>\n\n</dd>\n<dt id=\"start\"><a name=\"start,CountMgr,uint32\"></a><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">start</span><span class=\"Operator\">*</span><span class=\"Other\">(</span><span class=\"Identifier\">mgr</span><span class=\"Other\">:</span> <span class=\"Identifier\">CountMgr</span><span class=\"Other\">;</span> <span class=\"Identifier\">interval</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">1000</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n<p>Start the timer.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">interval</span></tt> Timer interval in ms. </p>\n\n&nbsp;&nbsp;<a\nhref=\"/tree/master/count.nim#L53\"\nclass=\"link-seesrc\" target=\"_blank\">Source</a>\n<a href=\"/edit/devel/count.nim#L53\" class=\"link-seesrc\" target=\"_blank\" >Edit</a>\n\n</dd>\n<dt id=\"stop\"><a name=\"stop,CountMgr\"></a><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">stop</span><span class=\"Operator\">*</span><span class=\"Other\">(</span><span class=\"Identifier\">mgr</span><span class=\"Other\">:</span> <span class=\"Identifier\">CountMgr</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nStop the timer. \n&nbsp;&nbsp;<a\nhref=\"/tree/master/count.nim#L60\"\nclass=\"link-seesrc\" target=\"_blank\">Source</a>\n<a href=\"/edit/devel/count.nim#L60\" class=\"link-seesrc\" target=\"_blank\" >Edit</a>\n\n</dd>\n<dt id=\"free\"><a name=\"free,CountMgr\"></a><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Operator\">*</span><span class=\"Other\">(</span><span class=\"Identifier\">mgr</span><span class=\"Other\">:</span> <span class=\"Identifier\">CountMgr</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n&nbsp;&nbsp;<a\nhref=\"/tree/master/count.nim#L68\"\nclass=\"link-seesrc\" target=\"_blank\">Source</a>\n<a href=\"/edit/devel/count.nim#L68\" class=\"link-seesrc\" target=\"_blank\" >Edit</a>\n\n</dd>\n<dt id=\"newCountMgr\"><a name=\"newCountMgr,\"></a><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newCountMgr</span><span class=\"Operator\">*</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">CountMgr</span></pre></dt>\n<dd>\n\n&nbsp;&nbsp;<a\nhref=\"/tree/master/count.nim#L72\"\nclass=\"link-seesrc\" target=\"_blank\">Source</a>\n<a href=\"/edit/devel/count.nim#L72\" class=\"link-seesrc\" target=\"_blank\" >Edit</a>\n\n</dd>\n<dt id=\"timeDiff\"><a name=\"timeDiff,uint64,uint64\"></a><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">timeDiff</span><span class=\"Operator\">*</span><span class=\"Other\">(</span><span class=\"Identifier\">first</span><span class=\"Other\">,</span> <span class=\"Identifier\">second</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint64</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other pragmabegin\">{.</span><div class=\"pragma\"><span class=\"Identifier\">inline</span></div><span class=\"Other pragmaend\">.}</span></pre></dt>\n<dd>\n<p><tt class=\"docutils literal\"><span class=\"pre\">first</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">second</span></tt> two results of <tt class=\"docutils literal\"><span class=\"pre\">sdl.getPerformanceCounter()</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> time difference between two time stamps (in ms). </p>\n\n&nbsp;&nbsp;<a\nhref=\"/tree/master/count.nim#L80\"\nclass=\"link-seesrc\" target=\"_blank\">Source</a>\n<a href=\"/edit/devel/count.nim#L80\" class=\"link-seesrc\" target=\"_blank\" >Edit</a>\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2017-08-01 10:09:07 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/draw.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>draw</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">draw</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#DrawMode\"\n    title=\"DrawMode {.pure.} = enum\n  default, aa, filled\"><wbr />Draw<wbr />Mode<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#pixel%2CCoord%2CColor\"\n    title=\"pixel(pos: Coord; color: Color): bool\"><wbr />pixel<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#hline%2CCoord%2Cfloat%2CColor\"\n    title=\"hline(pos: Coord; length: float; color: Color): bool\"><wbr />hline<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#vline%2CCoord%2Cfloat%2CColor\"\n    title=\"vline(pos: Coord; height: float; color: Color): bool\"><wbr />vline<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rect%2CCoord%2CCoord%2CColor\"\n    title=\"rect(pos1, pos2: Coord; color: Color): bool\"><wbr />rect<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#roundedRect%2CCoord%2CCoord%2Cfloat%2CColor\"\n    title=\"roundedRect(pos1, pos2: Coord; rad: float; color: Color): bool\"><wbr />rounded<wbr />Rect<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#box%2CCoord%2CCoord%2CColor\"\n    title=\"box(pos1, pos2: Coord; color: Color): bool\"><wbr />box<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#roundedBox%2CCoord%2CCoord%2Cfloat%2CColor\"\n    title=\"roundedBox(pos1, pos2: Coord; rad: float; color: Color): bool\"><wbr />rounded<wbr />Box<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#line%2CCoord%2CCoord%2CColor\"\n    title=\"line(pos1, pos2: Coord; color: Color): bool\"><wbr />line<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#aaLine%2CCoord%2CCoord%2CColor\"\n    title=\"aaLine(pos1, pos2: Coord; color: Color): bool\"><wbr />aa<wbr />Line<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#thickLine%2CCoord%2CCoord%2Cfloat%2CColor\"\n    title=\"thickLine(pos1, pos2: Coord; width: float; color: Color): bool\"><wbr />thick<wbr />Line<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#circle%2CCoord%2Cfloat%2CColor%2CDrawMode\"\n    title=\"circle(pos: Coord; rad: float; color: Color; mode: DrawMode = DrawMode.default): bool\"><wbr />circle<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#arc%2CCoord%2CAngle%2CAngle%2CAngle%2CColor\"\n    title=\"arc(pos: Coord; rad, start, finish: Angle; color: Color): bool\"><wbr />arc<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ellipse%2CCoord%2CCoord%2CColor%2CDrawMode\"\n    title=\"ellipse(pos, rad: Coord; color: Color; mode: DrawMode = DrawMode.default): bool\"><wbr />ellipse<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#pie%2CCoord%2CAngle%2CAngle%2CAngle%2CColor%2CDrawMode\"\n    title=\"pie(pos: Coord; rad, start, finish: Angle; color: Color;\n    mode: DrawMode = DrawMode.default): bool\"><wbr />pie<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#trigon%2CCoord%2CCoord%2CCoord%2CColor%2CDrawMode\"\n    title=\"trigon(pos1, pos2, pos3: Coord; color: Color; mode: DrawMode = DrawMode.default): bool\"><wbr />trigon<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#polygon%2CopenArray%5BCoord%5D%2CColor%2CDrawMode%2Cnil%2CCoord\"\n    title=\"polygon(pos: openArray[Coord]; color: Color; mode: DrawMode = DrawMode.default;\n        surface: sdl.Surface = nil; surfaceD: Coord = (0, 0)): bool\"><wbr />polygon<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#bezier%2CopenArray%5BCoord%5D%2Cfloat%2CColor\"\n    title=\"bezier(pos: openArray[Coord]; s: float; color: Color): bool\"><wbr />bezier<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#setFont%2Cpointer%2CDim\"\n    title=\"setFont(fontdata: pointer; dim: Dim)\"><wbr />set<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#character%2CCoord%2Cchar%2CColor\"\n    title=\"character(pos: Coord; c: char; color: Color): bool\"><wbr />character<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#string%2CCoord%2Cstring%2CColor\"\n    title=\"string(pos: Coord; s: string; color: Color): bool\"><wbr />string<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#setFont.t%2C\"\n    title=\"setFont()\"><wbr />set<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#setFontRotation.t%2Cuint32\"\n    title=\"setFontRotation(rotation: uint32)\"><wbr />set<wbr />Font<wbr />Rotation<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"DrawMode\"></a>\n<dt><pre><a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">default</span><span class=\"Other\">,</span> <span class=\"Identifier\">aa</span><span class=\"Other\">,</span> <span class=\"Identifier\">filled</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"pixel,Coord,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pixel</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a single pixel. \n\n</dd>\n<a id=\"hline,Coord,float,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">hline</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">length</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a horizontal line from <tt class=\"docutils literal\"><span class=\"pre\">pos</span></tt> to the right. \n\n</dd>\n<a id=\"vline,Coord,float,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">vline</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">height</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a vertical line from <tt class=\"docutils literal\"><span class=\"pre\">pos</span></tt> down. \n\n</dd>\n<a id=\"rect,Coord,Coord,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rect</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a rectangle. \n\n</dd>\n<a id=\"roundedRect,Coord,Coord,float,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">roundedRect</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rad</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a rounded rectangle. \n\n</dd>\n<a id=\"box,Coord,Coord,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">box</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a filled rectangle (box). \n\n</dd>\n<a id=\"roundedBox,Coord,Coord,float,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">roundedBox</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rad</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a rounded filled rectangle (box). \n\n</dd>\n<a id=\"line,Coord,Coord,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">line</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a line. \n\n</dd>\n<a id=\"aaLine,Coord,Coord,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">aaLine</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw an anti-aliased line. \n\n</dd>\n<a id=\"thickLine,Coord,Coord,float,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">thickLine</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">width</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a <tt class=\"docutils literal\"><span class=\"pre\">width</span></tt> pixels wide line. \n\n</dd>\n<a id=\"circle,Coord,float,Color,DrawMode\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">circle</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rad</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">;</span> <span class=\"Identifier\">mode</span><span class=\"Other\">:</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a> <span class=\"Other\">=</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a><span class=\"Other\">.</span><span class=\"Identifier\">default</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a circle. \n\n</dd>\n<a id=\"arc,Coord,Angle,Angle,Angle,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">arc</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rad</span><span class=\"Other\">,</span> <span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">finish</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw an arc. \n\n</dd>\n<a id=\"ellipse,Coord,Coord,Color,DrawMode\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">ellipse</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">,</span> <span class=\"Identifier\">rad</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">;</span> <span class=\"Identifier\">mode</span><span class=\"Other\">:</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a> <span class=\"Other\">=</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a><span class=\"Other\">.</span><span class=\"Identifier\">default</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw an ellipse. \n\n</dd>\n<a id=\"pie,Coord,Angle,Angle,Angle,Color,DrawMode\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pie</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rad</span><span class=\"Other\">,</span> <span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">finish</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">;</span>\n        <span class=\"Identifier\">mode</span><span class=\"Other\">:</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a> <span class=\"Other\">=</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a><span class=\"Other\">.</span><span class=\"Identifier\">default</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a circular sector (pie). \n\n</dd>\n<a id=\"trigon,Coord,Coord,Coord,Color,DrawMode\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">trigon</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos3</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">;</span> <span class=\"Identifier\">mode</span><span class=\"Other\">:</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a> <span class=\"Other\">=</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a><span class=\"Other\">.</span><span class=\"Identifier\">default</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a trigon. \n\n</dd>\n<a id=\"polygon,openArray[Coord],Color,DrawMode,nil,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">polygon</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">;</span> <span class=\"Identifier\">mode</span><span class=\"Other\">:</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a> <span class=\"Other\">=</span> <a href=\"draw.html#DrawMode\"><span class=\"Identifier\">DrawMode</span></a><span class=\"Other\">.</span><span class=\"Identifier\">default</span><span class=\"Other\">;</span>\n            <span class=\"Identifier\">surface</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Surface</span> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">;</span> <span class=\"Identifier\">surfaceD</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a polygon. \n\n</dd>\n<a id=\"bezier,openArray[Coord],float,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">bezier</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">s</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a bezier curve. \n\n</dd>\n<a id=\"setFont,pointer,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setFont</span><span class=\"Other\">(</span><span class=\"Identifier\">fontdata</span><span class=\"Other\">:</span> <span class=\"Identifier\">pointer</span><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet sdl_gfx_primitives font. \n\n</dd>\n<a id=\"character,Coord,char,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">character</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">char</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a single character. \n\n</dd>\n<a id=\"string,Coord,string,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">string</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">s</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDraw a string of text. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"setFont.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">setFont</span><span class=\"Other\">(</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nSet default sdl_gfx_primitives font. \n\n</dd>\n<a id=\"setFontRotation.t,uint32\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">setFontRotation</span><span class=\"Other\">(</span><span class=\"Identifier\">rotation</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nSet sdl_gfx_primitives font rotation. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:33 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/emitter.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>emitter</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield and narimiran\n*/\n\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 1.125em;\n  line-height: 1.5;\n  color: #222;\n  background-color: #FCFCFC; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 1050px;\n  margin: 0 auto;\n  padding: 0;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box;\n  margin-left: 1%;\n}\n\n.column:first-child,\n.columns:first-child {\n  margin-left: 0; }\n\n.three.columns {\n  width: 19%; }\n\n.nine.columns {\n  width: 80.0%; }\n\n.twelve.columns {\n  width: 100%;\n  margin-left: 0; }\n\n@media screen and (max-width: 860px) {\n  .three.columns {\n    display: none;\n  }\n  .nine.columns {\n    width: 98.0%;\n  }\n  body {\n    font-size: 1em;\n    line-height: 1.35;\n  }\n}\n\ncite {\n  font-style: italic !important; }\n\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 1em;\n}\ninput#searchInput {\n  width: 80%;\n}\n\n\n/* Docgen styles */\n/* Links */\na {\n  color: #07b;\n  text-decoration: none;\n}\n\na span.Identifier {\n  text-decoration: underline;\n  text-decoration-color: #aab;\n}\n\na.reference-toplevel {\n  font-weight: bold;\n}\n\na.toc-backref {\n  text-decoration: none;\n  color: #222; }\n\na.link-seesrc {\n  color: #607c9f;\n  font-size: 0.9em;\n  font-style: italic; }\n\na:hover,\na:focus {\n  color: #607c9f;\n  text-decoration: underline; }\n\na:hover span.Identifier {\n  color: #607c9f;\n}\n\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; }\n}\n\n\np {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em;\n}\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600;\n  font-size: 0.95em;\n  color: #3c3c3c;\n}\n\nem {\n  font-style: italic; }\n\nh1 {\n  font-size: 1.8em;\n  font-weight: 400;\n  padding-bottom: .25em;\n  border-bottom: 1px solid #aaa;\n  margin-top: 2.5em;\n  margin-bottom: 1em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.5em;\n  text-align: center;\n  font-weight: 900;\n  margin-top: 0.75em;\n  margin-bottom: 0em;\n}\n\nh2 {\n  font-size: 1.3em;\n  margin-top: 2em; }\n\nh2.subtitle {\n  text-align: center; }\n\nh3 {\n  font-size: 1.125em;\n  font-style: italic;\n  margin-top: 1.5em; }\n\nh4 {\n  font-size: 1.125em;\n  margin-top: 1em; }\n\nh5 {\n  font-size: 1.125em;\n  margin-top: 0.75em; }\n\nh6 {\n  font-size: 1.1em; }\n\n\nul,\nol {\n  padding: 0;\n  margin-top: 0.5em;\n  margin-left: 0.75em; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0;\n  margin-left: 1.25em; }\n\nli {\n    list-style-type: circle;\n}\n\nul.simple-boot li {\n    list-style-type: none;\n    margin-left: 0em;\n    margin-bottom: 0.5em;\n}\n\nol.simple > li, ul.simple > li {\n  margin-bottom: 0.25em;\n  margin-left: 0.4em }\n\nul.simple.simple-toc > li {\n    margin-top: 1em;\n}\n\nul.simple-toc {\n  list-style: none;\n  font-size: 0.9em;\n  margin-left: -0.3em;\n  margin-top: 1em; }\n\nul.simple-toc > li {\n    list-style-type: none;\n}\n\nul.simple-toc-section {\n  list-style-type: circle;\n  margin-left: 1em;\n  color: #6c9aae; }\n\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\nul.auto-toc {\n  list-style-type: none; }\n\n\ndl {\n  margin-bottom: 1.5em; }\n\ndt {\n  margin-bottom: -0.5em;\n  margin-left: 0.0em; }\n\ndd {\n  margin-left: 2.0em;\n  margin-bottom: 3.0em;\n  margin-top: 0.5em; }\n\n\nhr {\n  margin: 2em 0;\n  border: 0;\n  border-top: 1px solid #aaa; }\n\nblockquote {\n  font-size: 0.9em;\n  font-style: italic;\n  padding-left: 0.5em;\n  margin-left: 0;\n  border-left: 5px solid #bbc;\n}\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 500;\n  font-size: 0.85em;\n  background-color: #f0f3ff;\n  padding-left: 3px;\n  padding-right: 3px;\n  border-radius: 4px;\n}\n\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  color: #222;\n  font-weight: 500;\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: 100%;\n  padding: 0.5em;\n  margin-top: 0.5em;\n  margin-bottom: 0.5em;\n  font-size: 0.85em;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: ghostwhite;\n  border: 1px solid #dde;\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: ghostwhite;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  margin-top: 0.5em;\n  margin-bottom: 1.5em;\n  border-collapse: collapse;\n  border-color: #ccc;\n  border-spacing: 0;\n  font-size: 0.9em;\n}\n\ntable th, table td {\n  padding: 0px 0.5em 0px;\n}\n\ntable th {\n  background-color: #e8e8e8;\n  font-weight: bold; }\n\ntable th.docinfo-name {\n    background-color: transparent;\n}\n\ntable tr:hover {\n  background-color: ghostwhite; }\n\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  text-align: center;\n  color: #666;\n  font-size: smaller; }\n\ndiv.footer {\n    padding-top: 5em;\n}\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.topic {\n  margin: 2em; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\ndiv#global-links > simple-boot {\n    margin-left: 3em;\n}\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-weight: bold; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #222; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier,\ndt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 16px;\n  width: 16px;\n  background-position: 0 0;\n  background-size: 16px 16px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n  padding: 2px;\n  background-color: #e8e8e8;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n  font-size: 0.8em;\n}\n\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\nspan.attachedType {\n  display: none;\n  visibility: hidden;\n}\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">emitter</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Particle\"\n    title=\"Particle = ref object of Entity\n  ttl*: float                  ## Time to live (in seconds)\"><wbr />Particle<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#EmissionAreaKind\"\n    title=\"EmissionAreaKind = enum\n  eaPoint, eaLine, eaCircle, eaBox\"><wbr />Emission<wbr />Area<wbr />Kind<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#EmissionArea\"\n    title=\"EmissionArea = object\n  case kind*: EmissionAreaKind\n  of eaPoint:\n    nil\n  of eaLine:\n    length*: float             ## line length\n  of eaCircle:\n    radius*: float             ## circle radius\n  of eaBox:\n    dim*: Dim                  ## box dimensions\"><wbr />Emission<wbr />Area<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Emitter\"\n    title=\"Emitter = ref object of Entity\n  randomVel*, randomAcc*: Coord ## Ranges of vel and acc deviation\n  randomRot*, randomRotVel*: Angle ## Ranges of rot and rotVel deviation\n  randomScale*: Scale          ## Range of scale deviation\n  randomTTL*: float            ## Range of TTL deviation\n  scene*: Scene                ## Target scene\n  area*: EmissionArea          ## Area of particle emission\n  particle*: Particle          ## A stencil particle, its properties will be \\\\\n                    ## assigned to any created particles.\"><wbr />Emitter<span class=\"attachedType\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#initParticle%2CParticle\"\n    title=\"initParticle(particle: Particle)\"><wbr />init<wbr />Particle<span class=\"attachedType\">Particle</span></a></li>\n  <li><a class=\"reference\" href=\"#newParticle\"\n    title=\"newParticle(): Particle\"><wbr />new<wbr />Particle<span class=\"attachedType\">Particle</span></a></li>\n  <li><a class=\"reference\" href=\"#updateParticle%2CParticle%2Cfloat\"\n    title=\"updateParticle(particle: Particle; elapsed: float)\"><wbr />update<wbr />Particle<span class=\"attachedType\">Particle</span></a></li>\n  <li><a class=\"reference\" href=\"#initEmitter%2CEmitter%2CScene\"\n    title=\"initEmitter(emitter: Emitter; scene: Scene; area = eaPoint)\"><wbr />init<wbr />Emitter<span class=\"attachedType\">Emitter</span></a></li>\n  <li><a class=\"reference\" href=\"#newEmitter%2CScene\"\n    title=\"newEmitter(scene: Scene; area = eaPoint): Emitter\"><wbr />new<wbr />Emitter<span class=\"attachedType\">Emitter</span></a></li>\n  <li><a class=\"reference\" href=\"#emit%2CEmitter%2Cint%2Cproc%28Particle%29\"\n    title=\"emit(emitter: Emitter; amount: int = 1; procedure: proc (p: Particle) = nil)\"><wbr />emit<span class=\"attachedType\">Emitter</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#update.e%2CParticle%2Cfloat\"\n    title=\"update(particle: Particle; elapsed: float)\"><wbr />update<span class=\"attachedType\">Particle</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#copy.t%2CParticle%2CParticle\"\n    title=\"copy(target, source: Particle)\"><wbr />copy<span class=\"attachedType\">Particle</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  \n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"scene.html\">scene</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Particle\"></a>\n<dt><pre><a href=\"emitter.html#Particle\"><span class=\"Identifier\">Particle</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>\n  <span class=\"Identifier\">ttl</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>                  <span class=\"Comment\">## Time to live (in seconds)</span>\n  </pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"EmissionAreaKind\"></a>\n<dt><pre><a href=\"emitter.html#EmissionAreaKind\"><span class=\"Identifier\">EmissionAreaKind</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">eaPoint</span><span class=\"Other\">,</span> <span class=\"Identifier\">eaLine</span><span class=\"Other\">,</span> <span class=\"Identifier\">eaCircle</span><span class=\"Other\">,</span> <span class=\"Identifier\">eaBox</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"EmissionArea\"></a>\n<dt><pre><a href=\"emitter.html#EmissionArea\"><span class=\"Identifier\">EmissionArea</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">object</span>\n  <span class=\"Keyword\">case</span> <span class=\"Identifier\">kind</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"emitter.html#EmissionAreaKind\"><span class=\"Identifier\">EmissionAreaKind</span></a>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">eaPoint</span><span class=\"Other\">:</span>\n    <span class=\"Keyword\">nil</span>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">eaLine</span><span class=\"Other\">:</span>\n    <span class=\"Identifier\">length</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>             <span class=\"Comment\">## line length</span>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">eaCircle</span><span class=\"Other\">:</span>\n    <span class=\"Identifier\">radius</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>             <span class=\"Comment\">## circle radius</span>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">eaBox</span><span class=\"Other\">:</span>\n    <span class=\"Identifier\">dim</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>                  <span class=\"Comment\">## box dimensions</span>\n  </pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"Emitter\"></a>\n<dt><pre><a href=\"emitter.html#Emitter\"><span class=\"Identifier\">Emitter</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>\n  <span class=\"Identifier\">randomVel</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">randomAcc</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Comment\">## Ranges of vel and acc deviation</span>\n  <span class=\"Identifier\">randomRot</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">randomRotVel</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Comment\">## Ranges of rot and rotVel deviation</span>\n  <span class=\"Identifier\">randomScale</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a>          <span class=\"Comment\">## Range of scale deviation</span>\n  <span class=\"Identifier\">randomTTL</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>            <span class=\"Comment\">## Range of TTL deviation</span>\n  <span class=\"Identifier\">scene</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a>                <span class=\"Comment\">## Target scene</span>\n  <span class=\"Identifier\">area</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"emitter.html#EmissionArea\"><span class=\"Identifier\">EmissionArea</span></a>          <span class=\"Comment\">## Area of particle emission</span>\n  <span class=\"Identifier\">particle</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"emitter.html#Particle\"><span class=\"Identifier\">Particle</span></a>          <span class=\"Comment\">## A stencil particle, its properties will be \\\\</span>\n                    <span class=\"Comment\">## assigned to any created particles.</span>\n  </pre></dt>\n<dd>\n\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"initParticle,Particle\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#initParticle%2CParticle\"><span class=\"Identifier\">initParticle</span></a><span class=\"Other\">(</span><span class=\"Identifier\">particle</span><span class=\"Other\">:</span> <a href=\"emitter.html#Particle\"><span class=\"Identifier\">Particle</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"newParticle\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#newParticle\"><span class=\"Identifier\">newParticle</span></a><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"emitter.html#Particle\"><span class=\"Identifier\">Particle</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"updateParticle,Particle,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#updateParticle%2CParticle%2Cfloat\"><span class=\"Identifier\">updateParticle</span></a><span class=\"Other\">(</span><span class=\"Identifier\">particle</span><span class=\"Other\">:</span> <a href=\"emitter.html#Particle\"><span class=\"Identifier\">Particle</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"initEmitter,Emitter,Scene\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#initEmitter%2CEmitter%2CScene\"><span class=\"Identifier\">initEmitter</span></a><span class=\"Other\">(</span><span class=\"Identifier\">emitter</span><span class=\"Other\">:</span> <a href=\"emitter.html#Emitter\"><span class=\"Identifier\">Emitter</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">area</span> <span class=\"Other\">=</span> <span class=\"Identifier\">eaPoint</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\nCreate a new <tt class=\"docutils literal\"><span class=\"pre\">Emitter</span></tt> for the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n<a id=\"newEmitter,Scene\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#newEmitter%2CScene\"><span class=\"Identifier\">newEmitter</span></a><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">area</span> <span class=\"Other\">=</span> <span class=\"Identifier\">eaPoint</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"emitter.html#Emitter\"><span class=\"Identifier\">Emitter</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\nCreate a new Emitter in the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n<a id=\"emit,Emitter,int,proc(Particle)\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#emit%2CEmitter%2Cint%2Cproc%28Particle%29\"><span class=\"Identifier\">emit</span></a><span class=\"Other\">(</span><span class=\"Identifier\">emitter</span><span class=\"Other\">:</span> <a href=\"emitter.html#Emitter\"><span class=\"Identifier\">Emitter</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">amount</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">1</span><span class=\"Other\">;</span> <span class=\"Identifier\">procedure</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"emitter.html#Particle\"><span class=\"Identifier\">Particle</span></a><span class=\"Other\">)</span> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\nEmit an <tt class=\"docutils literal\"><span class=\"pre\">amount</span></tt> of particles, apply the <tt class=\"docutils literal\"><span class=\"pre\">procedure</span></tt> for each emitted particle. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"update.e,Particle,float\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <a href=\"#update.e%2CParticle%2Cfloat\"><span class=\"Identifier\">update</span></a><span class=\"Other\">(</span><span class=\"Identifier\">particle</span><span class=\"Other\">:</span> <a href=\"emitter.html#Particle\"><span class=\"Identifier\">Particle</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"copy.t,Particle,Particle\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#copy.t%2CParticle%2CParticle\"><span class=\"Identifier\">copy</span></a><span class=\"Other\">(</span><span class=\"Identifier\">target</span><span class=\"Other\">,</span> <span class=\"Identifier\">source</span><span class=\"Other\">:</span> <a href=\"emitter.html#Particle\"><span class=\"Identifier\">Particle</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\n\nCopy <tt class=\"docutils literal\"><span class=\"pre\">source</span></tt> properties to the <tt class=\"docutils literal\"><span class=\"pre\">target</span></tt>. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-06-15 20:16:23 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/entity.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>entity</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">entity</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Animation\"\n    title=\"Animation = object\n  frames*: seq[int]            ## List of animation&#x27;s frame indexes\n  frameRate*: float            ## Frame rate (in seconds per frame)\n  flip*: Flip                  ## Flip flag\"><wbr />Animation<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#AnimationCallback\"\n    title=\"AnimationCallback = proc (entity: Entity; index: int)\"><wbr />Animation<wbr />Callback<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Sprite\"\n    title=\"Sprite = ref object\n  animationKeys*: seq[string]  ## List of animation names\n  animations*: seq[Animation]  ## List of animations\n  currentAnimationIndex*: int  ## Index of currently playing animation\n  currentFrame*: int           ## Index of current frame in currentAnimation \\\n                   ## (or in ``frames``, if no currentAnimation is set)\n  cycles*: int                 ## Animation cycles counter (`-1` for looping)\n  kill*: bool                  ## Kill when animation is finished\n  callback*: AnimationCallback ## Call this when animation is finished\n  time*: float                 ## Animation timer\n  playing*: bool               ## Animation playing flag\n  dim*: Dim                    ## Sprite frame dimensions\n  frames*: seq[Rect]           ## Frames&#x27; coordinates\"><wbr />Sprite<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Collider\"\n    title=\"Collider = ref object of RootObj\n  parent*: Entity\n  tags*: seq[string]           ## only check collisios with entities with given tags\n  pos*: Coord\"><wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#BoxCollider\"\n    title=\"BoxCollider = ref object of Collider\n  dim*: Dim\"><wbr />Box<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#CircleCollider\"\n    title=\"CircleCollider = ref object of Collider\n  radius*: float\"><wbr />Circle<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#LineCollider\"\n    title=\"LineCollider = ref object of Collider\n  pos2*: Coord\"><wbr />Line<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#PolyCollider\"\n    title=\"PolyCollider = ref object of Collider\n  farthest: float\n  points*: seq[Coord]\"><wbr />Poly<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GroupCollider\"\n    title=\"GroupCollider = ref object of Collider\n  list*: seq[Collider]\"><wbr />Group<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Entity\"\n    title=\"Entity = ref object of RootObj\n  fLayer: int                  ## Rendering layer\n  fBlinkTimer: float           ## Used internally for blinking\n  parent*: Entity              ## Parent entity reference\n  tags*: seq[string]           ## List of entity tags\n  dead*: bool                  ## `true` if marked for removal\n  updLayer*: bool              ## `true` if entity&#x27;s layer was changed\n  graphic*: Graphic\n  sprite*: Sprite\n  logic*: LogicProc\n  physics*: PhysicsProc\n  fastPhysics*: bool           ## rough and fast physics flag\n  collisionEnvironment*: seq[Entity] ## List of collidable entites\n                                   ## used in some physics procedures\n  collider*: Collider\n  colliding*: seq[Entity]      ## List of Entities currently colliding with\n  pos*, vel*, acc*, drg*: Coord   ## Position, velocity, acceleration, drag\n  rot*: Angle                  ## Rotation angle in degrees\n  rotVel*, rotAcc*, rotDrg*: Angle ## Rotation velocity, acceleration, drag\n  parallax*, scale*: Scale      ## Parallax and scale ratio\n  scaleVel*, scaleAcc*, scaleDrg*: Scale ## Scale&#x27;s velocity, accel., and drag\n  center*: Coord               ## Center for drawing and rotating\n  flip*: Flip                  ## Texture flip status\n  visible*: bool               ## Visibility status\n  blinking*: bool              ## Blinking status\n  blinkOn*, blinkOff*: float    ## Blinking rate (in seconds)\"><wbr />Entity<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#LogicProc\"\n    title=\"LogicProc = proc (entity: Entity; elapsed: float)\"><wbr />Logic<wbr />Proc<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#PhysicsProc\"\n    title=\"PhysicsProc = proc (entity: Entity; elapsed: float)\"><wbr />Physics<wbr />Proc<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#initSprite%2CEntity%2CDim%2CDim%2CDim\"\n    title=\"initSprite(entity: Entity; dim: Dim; offset: Dim = (0, 0); border: Dim = (0, 0))\"><wbr />init<wbr />Sprite<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#animationIndex%2CSprite%2Cstring\"\n    title=\"animationIndex(sprite: Sprite; name: string): int\"><wbr />animation<wbr />Index<span class=\"attachedType\" style=\"visibility:hidden\">Sprite</span></a></li>\n  <li><a class=\"reference\" href=\"#animation%2CSprite%2Cstring\"\n    title=\"animation(sprite: Sprite; name: string): var Animation\"><wbr />animation<span class=\"attachedType\" style=\"visibility:hidden\">Sprite</span></a></li>\n  <li><a class=\"reference\" href=\"#animation%2CSprite%2Cint\"\n    title=\"animation(sprite: Sprite; index: int): var Animation\"><wbr />animation<span class=\"attachedType\" style=\"visibility:hidden\">Sprite</span></a></li>\n  <li><a class=\"reference\" href=\"#currentAnimation%2CSprite\"\n    title=\"currentAnimation(sprite: Sprite): var Animation\"><wbr />current<wbr />Animation<span class=\"attachedType\" style=\"visibility:hidden\">Sprite</span></a></li>\n  <li><a class=\"reference\" href=\"#currentAnimationName%2CSprite\"\n    title=\"currentAnimationName(sprite: Sprite): string\"><wbr />current<wbr />Animation<wbr />Name<span class=\"attachedType\" style=\"visibility:hidden\">Sprite</span></a></li>\n  <li><a class=\"reference\" href=\"#changeFramerate%2CSprite%2Cfloat\"\n    title=\"changeFramerate(sprite: Sprite; frameRate: float = 0.1)\"><wbr />change<wbr />Framerate<span class=\"attachedType\" style=\"visibility:hidden\">Sprite</span></a></li>\n  <li><a class=\"reference\" href=\"#addAnimation%2CSprite%2Cstring%2CopenArray%5Bint%5D%2Cfloat%2CFlip\"\n    title=\"addAnimation(sprite: Sprite; name: string; frames: openArray[int];\n             frameRate: float = 0.1; flip: Flip = Flip.none): bool\"><wbr />add<wbr />Animation<span class=\"attachedType\" style=\"visibility:hidden\">Sprite</span></a></li>\n  <li><a class=\"reference\" href=\"#play%2CSprite%2Cstring%2Cbool%2CAnimationCallback\"\n    title=\"play(sprite: Sprite; anim: string; cycles = -1; kill: bool = false;\n     callback: AnimationCallback = nil)\"><wbr />play<span class=\"attachedType\" style=\"visibility:hidden\">Sprite</span></a></li>\n  <li><a class=\"reference\" href=\"#defaultPhysics%2CEntity%2Cfloat\"\n    title=\"defaultPhysics(entity: Entity; elapsed: float)\"><wbr />default<wbr />Physics<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#platformerPhysics%2CEntity%2Cfloat\"\n    title=\"platformerPhysics(entity: Entity; elapsed: float)\"><wbr />platformer<wbr />Physics<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#initEntity%2CEntity\"\n    title=\"initEntity(entity: Entity)\"><wbr />init<wbr />Entity<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#newEntity%2C\"\n    title=\"newEntity(): Entity\"><wbr />new<wbr />Entity<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#layer%2CEntity\"\n    title=\"layer(entity: Entity): int\"><wbr />layer<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#layer%3D%2CEntity%2Cint\"\n    title=\"layer=(entity: Entity; val: int)\"><wbr />layer=<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#copy%2CEntity%2CEntity\"\n    title=\"copy(target, source: Entity)\"><wbr />copy<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#absRot%2CEntity\"\n    title=\"absRot(entity: Entity): Angle\"><wbr />abs<wbr />Rot<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#absScale%2CEntity\"\n    title=\"absScale(entity: Entity): Scale\"><wbr />abs<wbr />Scale<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#absPos%2CEntity\"\n    title=\"absPos(entity: Entity): Coord\"><wbr />abs<wbr />Pos<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#centrify%2CEntity\"\n    title=\"centrify(entity: Entity; hor = HAlign.center; ver = VAlign.center)\"><wbr />centrify<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#renderEntity%2CEntity\"\n    title=\"renderEntity(entity: Entity)\"><wbr />render<wbr />Entity<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#updateEntity%2CEntity%2Cfloat\"\n    title=\"updateEntity(entity: Entity; elapsed: float)\"><wbr />update<wbr />Entity<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CCollider%2CEntity%2CCoord\"\n    title=\"init(a: Collider; parent: Entity; pos: Coord = (0, 0))\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#newCollider%2CEntity%2CCoord\"\n    title=\"newCollider(parent: Entity; pos: Coord = (0, 0)): Collider\"><wbr />new<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#renderCollider%2CCollider\"\n    title=\"renderCollider(a: Collider)\"><wbr />render<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CBoxCollider%2CEntity%2CCoord%2CDim\"\n    title=\"init(b: BoxCollider; parent: Entity; pos: Coord = (0, 0); dim: Dim = (0, 0))\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#newBoxCollider%2CEntity%2CCoord%2CDim\"\n    title=\"newBoxCollider(parent: Entity; pos: Coord = (0, 0); dim: Dim = (0, 0)): BoxCollider\"><wbr />new<wbr />Box<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CCircleCollider%2CEntity%2CCoord%2Cfloat\"\n    title=\"init(c: CircleCollider; parent: Entity; pos: Coord = (0, 0); radius: float = 0)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#newCircleCollider%2CEntity%2CCoord%2Cfloat\"\n    title=\"newCircleCollider(parent: Entity; pos: Coord = (0, 0); radius: float = 0): CircleCollider\"><wbr />new<wbr />Circle<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CLineCollider%2CEntity%2CCoord%2CCoord\"\n    title=\"init(d: LineCollider; parent: Entity; pos: Coord = (0, 0); pos2: Coord = (0, 0))\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#newLineCollider%2CEntity%2CCoord%2CCoord\"\n    title=\"newLineCollider(parent: Entity; pos: Coord = (0, 0); pos2: Coord = (0, 0)): LineCollider\"><wbr />new<wbr />Line<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CPolyCollider%2CEntity%2CCoord%2CopenArray%5BCoord%5D\"\n    title=\"init(p: PolyCollider; parent: Entity; pos: Coord = (0, 0); points: openArray[Coord])\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#updateFarthest%2CPolyCollider\"\n    title=\"updateFarthest(p: PolyCollider)\"><wbr />update<wbr />Farthest<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#newPolyCollider%2CEntity%2CCoord%2CopenArray%5BCoord%5D\"\n    title=\"newPolyCollider(parent: Entity; pos: Coord = (0, 0); points: openArray[Coord]): PolyCollider\"><wbr />new<wbr />Poly<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CGroupCollider%2CEntity\"\n    title=\"init(g: GroupCollider; parent: Entity)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">GroupCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#newGroupCollider%2CEntity\"\n    title=\"newGroupCollider(parent: Entity): GroupCollider\"><wbr />new<wbr />Group<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#checkCollisions%2CEntity%2Cseq%5BEntity%5D\"\n    title=\"checkCollisions(entity: Entity; list: seq[Entity])\"><wbr />check<wbr />Collisions<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#isColliding%2CEntity%2Cseq%5BEntity%5D\"\n    title=\"isColliding(entity: Entity; list: seq[Entity]): bool\"><wbr />is<wbr />Colliding<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#willCollide%2CEntity%2CCoord%2CAngle%2CScale%2Cseq%5BEntity%5D\"\n    title=\"willCollide(entity: Entity; pos: Coord; rot: Angle; scale: Scale; list: seq[Entity]): bool\"><wbr />will<wbr />Collide<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#event.e%2CEntity%2C\"\n    title=\"event(entity: Entity; e: sdl.Event)\"><wbr />event<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CEntity\"\n    title=\"render(entity: Entity)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#update.e%2CEntity%2Cfloat\"\n    title=\"update(entity: Entity; elapsed: float)\"><wbr />update<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#onCollide.e%2CEntity%2CEntity\"\n    title=\"onCollide(entity, target: Entity)\"><wbr />on<wbr />Collide<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCoord%2CCollider\"\n    title=\"collide(pos: Coord; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCoord%2CBoxCollider\"\n    title=\"collide(pos: Coord; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCoord%2CCircleCollider\"\n    title=\"collide(pos: Coord; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCoord%2CLineCollider\"\n    title=\"collide(pos: Coord; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCoord%2CPolyCollider\"\n    title=\"collide(pos: Coord; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CCollider\"\n    title=\"render(a: Collider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CCoord\"\n    title=\"collide(a: Collider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CCollider\"\n    title=\"collide(a1, a2: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CBoxCollider\"\n    title=\"collide(a: Collider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CCircleCollider\"\n    title=\"collide(a: Collider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CLineCollider\"\n    title=\"collide(a: Collider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CPolyCollider\"\n    title=\"collide(a: Collider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CGroupCollider\"\n    title=\"collide(a: Collider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">Collider</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CBoxCollider\"\n    title=\"render(b: BoxCollider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CCoord\"\n    title=\"collide(b: BoxCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CCollider\"\n    title=\"collide(b: BoxCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CBoxCollider\"\n    title=\"collide(b1, b2: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CCircleCollider\"\n    title=\"collide(b: BoxCollider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CLineCollider\"\n    title=\"collide(b: BoxCollider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CPolyCollider\"\n    title=\"collide(b: BoxCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CGroupCollider\"\n    title=\"collide(b: BoxCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">BoxCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CCircleCollider\"\n    title=\"render(c: CircleCollider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CCoord\"\n    title=\"collide(c: CircleCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CCollider\"\n    title=\"collide(c: CircleCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CBoxCollider\"\n    title=\"collide(c: CircleCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CCircleCollider\"\n    title=\"collide(c1, c2: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CLineCollider\"\n    title=\"collide(c: CircleCollider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CPolyCollider\"\n    title=\"collide(c: CircleCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CGroupCollider\"\n    title=\"collide(c: CircleCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">CircleCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CLineCollider\"\n    title=\"render(d: LineCollider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CCoord\"\n    title=\"collide(d: LineCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CCollider\"\n    title=\"collide(d: LineCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CBoxCollider\"\n    title=\"collide(d: LineCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CCircleCollider\"\n    title=\"collide(d: LineCollider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CLineCollider\"\n    title=\"collide(d1, d2: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CPolyCollider\"\n    title=\"collide(d: LineCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CGroupCollider\"\n    title=\"collide(d: LineCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CPolyCollider\"\n    title=\"render(p: PolyCollider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CCoord\"\n    title=\"collide(p: PolyCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CCollider\"\n    title=\"collide(p: PolyCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CBoxCollider\"\n    title=\"collide(p: PolyCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CCircleCollider\"\n    title=\"collide(p: PolyCollider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CLineCollider\"\n    title=\"collide(p: PolyCollider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CPolyCollider\"\n    title=\"collide(p1, p2: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">PolyCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CGroupCollider_2\"\n    title=\"collide(p: LineCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">LineCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CGroupCollider\"\n    title=\"render(g: GroupCollider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">GroupCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CCoord\"\n    title=\"collide(g: GroupCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">GroupCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CCollider\"\n    title=\"collide(g: GroupCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">GroupCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CBoxCollider\"\n    title=\"collide(g: GroupCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">GroupCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CCircleCollider\"\n    title=\"collide(g: GroupCollider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">GroupCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CLineCollider\"\n    title=\"collide(g: GroupCollider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">GroupCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CPolyCollider\"\n    title=\"collide(g: GroupCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">GroupCollider</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#animationIndex.t%2CEntity%2Cstring\"\n    title=\"animationIndex(entity: Entity; name: string): int\"><wbr />animation<wbr />Index<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#animation.t%2CEntity%2Cstring\"\n    title=\"animation(entity: Entity; name: string): var Animation\"><wbr />animation<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#animation.t%2CEntity%2Cint\"\n    title=\"animation(entity: Entity; index: int): var Animation\"><wbr />animation<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#currentAnimationIndex.t%2CEntity\"\n    title=\"currentAnimationIndex(entity: Entity): int\"><wbr />current<wbr />Animation<wbr />Index<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#currentAnimation.t%2CEntity\"\n    title=\"currentAnimation(entity: Entity): var Animation\"><wbr />current<wbr />Animation<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#currentAnimationName.t%2CEntity\"\n    title=\"currentAnimationName(entity: Entity): string\"><wbr />current<wbr />Animation<wbr />Name<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#changeFramerate.t%2CEntity%2Cfloat\"\n    title=\"changeFramerate(entity: Entity; frameRate: float = 0.1)\"><wbr />change<wbr />Framerate<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#addAnimation.t%2CEntity%2Cstring%2CopenArray%5Bint%5D%2Cfloat%2CFlip\"\n    title=\"addAnimation(entity: Entity; name: string; frames: openArray[int];\n             frameRate: float = 0.1; flip: Flip = Flip.none): bool\"><wbr />add<wbr />Animation<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#play.t%2CEntity%2Cstring%2Cbool%2CAnimationCallback\"\n    title=\"play(entity: Entity; anim: string; cycles = -1; kill: bool = false;\n     callback: AnimationCallback = nil)\"><wbr />play<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#dim.t%2CEntity\"\n    title=\"dim(entity: Entity): Dim\"><wbr />dim<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#transform.t%2CEntity\"\n    title=\"transform(entity: Entity): Transform\"><wbr />transform<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#transform%3D.t%2CEntity%2CTransform\"\n    title=\"transform=(entity: Entity; transform: Transform)\"><wbr />transform=<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#rect.t%2CEntity\"\n    title=\"rect(entity: Entity): Rect\"><wbr />rect<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#topleft.t%2CEntity\"\n    title=\"topleft(entity: Entity): Coord\"><wbr />topleft<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#topright.t%2CEntity\"\n    title=\"topright(entity: Entity): Coord\"><wbr />topright<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#bottomright.t%2CEntity\"\n    title=\"bottomright(entity: Entity): Coord\"><wbr />bottomright<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#bottomleft.t%2CEntity\"\n    title=\"bottomleft(entity: Entity): Coord\"><wbr />bottomleft<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#corners.t%2CEntity\"\n    title=\"corners(entity: Entity): untyped\"><wbr />corners<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#worldCorners.t%2CEntity\"\n    title=\"worldCorners(entity: Entity): untyped\"><wbr />world<wbr />Corners<span class=\"attachedType\" style=\"visibility:hidden\">Entity</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.t%2CCoord%2CCoord\"\n    title=\"collide(pos1, pos2: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\">Do not import this file. It is included in <cite>entity.nim</cite> automatically.</p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"draw.html\">draw</a>, <a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Animation\"></a>\n<dt><pre><a href=\"entity.html#Animation\"><span class=\"Identifier\">Animation</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">object</span>\n  <span class=\"Identifier\">frames</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span>            <span class=\"Comment\">## List of animation's frame indexes</span>\n  <span class=\"Identifier\">frameRate</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>            <span class=\"Comment\">## Frame rate (in seconds per frame)</span>\n  <span class=\"Identifier\">flip</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a>                  <span class=\"Comment\">## Flip flag</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"AnimationCallback\"></a>\n<dt><pre><a href=\"entity.html#AnimationCallback\"><span class=\"Identifier\">AnimationCallback</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">index</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n<p>\nCalled after animation is finished (see <tt class=\"docutils literal\"><span class=\"pre\">play()</span></tt> procedure).</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">index</span></tt> The index of the finished animation.</p>\n\n\n</dd>\n<a id=\"Sprite\"></a>\n<dt><pre><a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span>\n  <span class=\"Identifier\">animationKeys</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span>  <span class=\"Comment\">## List of animation names</span>\n  <span class=\"Identifier\">animations</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Animation\"><span class=\"Identifier\">Animation</span></a><span class=\"Other\">]</span>  <span class=\"Comment\">## List of animations</span>\n  <span class=\"Identifier\">currentAnimationIndex</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>  <span class=\"Comment\">## Index of currently playing animation</span>\n  <span class=\"Identifier\">currentFrame</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>           <span class=\"Comment\">## Index of current frame in currentAnimation \\</span>\n                   <span class=\"Comment\">## (or in ``frames``, if no currentAnimation is set)</span>\n  <span class=\"Identifier\">cycles</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>                 <span class=\"Comment\">## Animation cycles counter (`-1` for looping)</span>\n  <span class=\"Identifier\">kill</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>                  <span class=\"Comment\">## Kill when animation is finished</span>\n  <span class=\"Identifier\">callback</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"entity.html#AnimationCallback\"><span class=\"Identifier\">AnimationCallback</span></a> <span class=\"Comment\">## Call this when animation is finished</span>\n  <span class=\"Identifier\">time</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>                 <span class=\"Comment\">## Animation timer</span>\n  <span class=\"Identifier\">playing</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>               <span class=\"Comment\">## Animation playing flag</span>\n  <span class=\"Identifier\">dim</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>                    <span class=\"Comment\">## Sprite frame dimensions</span>\n  <span class=\"Identifier\">frames</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">Rect</span><span class=\"Other\">]</span>           <span class=\"Comment\">## Frames' coordinates</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Collider\"></a>\n<dt><pre><a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">parent</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>\n  <span class=\"Identifier\">tags</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span>           <span class=\"Comment\">## only check collisios with entities with given tags</span>\n  <span class=\"Identifier\">pos</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"BoxCollider\"></a>\n<dt><pre><a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a>\n  <span class=\"Identifier\">dim</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"CircleCollider\"></a>\n<dt><pre><a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a>\n  <span class=\"Identifier\">radius</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"LineCollider\"></a>\n<dt><pre><a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a>\n  <span class=\"Identifier\">pos2</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"PolyCollider\"></a>\n<dt><pre><a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a>\n  <span class=\"Identifier\">farthest</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>\n  <span class=\"Identifier\">points</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">]</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GroupCollider\"></a>\n<dt><pre><a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a>\n  <span class=\"Identifier\">list</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">]</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Entity\"></a>\n<dt><pre><a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">fLayer</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>                  <span class=\"Comment\">## Rendering layer</span>\n  <span class=\"Identifier\">fBlinkTimer</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>           <span class=\"Comment\">## Used internally for blinking</span>\n  <span class=\"Identifier\">parent</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>              <span class=\"Comment\">## Parent entity reference</span>\n  <span class=\"Identifier\">tags</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span>           <span class=\"Comment\">## List of entity tags</span>\n  <span class=\"Identifier\">dead</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>                  <span class=\"Comment\">## `true` if marked for removal</span>\n  <span class=\"Identifier\">updLayer</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>              <span class=\"Comment\">## `true` if entity's layer was changed</span>\n  <span class=\"Identifier\">graphic</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a>\n  <span class=\"Identifier\">sprite</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a>\n  <span class=\"Identifier\">logic</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"entity.html#LogicProc\"><span class=\"Identifier\">LogicProc</span></a>\n  <span class=\"Identifier\">physics</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"entity.html#PhysicsProc\"><span class=\"Identifier\">PhysicsProc</span></a>\n  <span class=\"Identifier\">fastPhysics</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>           <span class=\"Comment\">## rough and fast physics flag</span>\n  <span class=\"Identifier\">collisionEnvironment</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">]</span> <span class=\"Comment\">## List of collidable entites</span>\n                                   <span class=\"Comment\">## used in some physics procedures</span>\n  <span class=\"Identifier\">collider</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a>\n  <span class=\"Identifier\">colliding</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">]</span>      <span class=\"Comment\">## List of Entities currently colliding with</span>\n  <span class=\"Identifier\">pos</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">vel</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">acc</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">drg</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a>   <span class=\"Comment\">## Position, velocity, acceleration, drag</span>\n  <span class=\"Identifier\">rot</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a>                  <span class=\"Comment\">## Rotation angle in degrees</span>\n  <span class=\"Identifier\">rotVel</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">rotAcc</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">rotDrg</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Comment\">## Rotation velocity, acceleration, drag</span>\n  <span class=\"Identifier\">parallax</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">scale</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a>      <span class=\"Comment\">## Parallax and scale ratio</span>\n  <span class=\"Identifier\">scaleVel</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">scaleAcc</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">scaleDrg</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Comment\">## Scale's velocity, accel., and drag</span>\n  <span class=\"Identifier\">center</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a>               <span class=\"Comment\">## Center for drawing and rotating</span>\n  <span class=\"Identifier\">flip</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a>                  <span class=\"Comment\">## Texture flip status</span>\n  <span class=\"Identifier\">visible</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>               <span class=\"Comment\">## Visibility status</span>\n  <span class=\"Identifier\">blinking</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>              <span class=\"Comment\">## Blinking status</span>\n  <span class=\"Identifier\">blinkOn</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">blinkOff</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>    <span class=\"Comment\">## Blinking rate (in seconds)</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"LogicProc\"></a>\n<dt><pre><a href=\"entity.html#LogicProc\"><span class=\"Identifier\">LogicProc</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"PhysicsProc\"></a>\n<dt><pre><a href=\"entity.html#PhysicsProc\"><span class=\"Identifier\">PhysicsProc</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"initSprite,Entity,Dim,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">initSprite</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">border</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Creeate a sprite for the given <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> with the attached Graphic.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">dim</span></tt> dimensions of one frame.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">offset</span></tt>  offset from the edge of the texture.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">border</span></tt>  border around individual frames. </p>\n\n\n</dd>\n<a id=\"animationIndex,Sprite,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">animationIndex</span><span class=\"Other\">(</span><span class=\"Identifier\">sprite</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the index of the animation named <tt class=\"docutils literal\"><span class=\"pre\">name</span></tt>. \n\n</dd>\n<a id=\"animation,Sprite,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">animation</span><span class=\"Other\">(</span><span class=\"Identifier\">sprite</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"entity.html#Animation\"><span class=\"Identifier\">Animation</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"animation,Sprite,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">animation</span><span class=\"Other\">(</span><span class=\"Identifier\">sprite</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">index</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"entity.html#Animation\"><span class=\"Identifier\">Animation</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"currentAnimation,Sprite\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">currentAnimation</span><span class=\"Other\">(</span><span class=\"Identifier\">sprite</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"entity.html#Animation\"><span class=\"Identifier\">Animation</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the current animation. \n\n</dd>\n<a id=\"currentAnimationName,Sprite\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">currentAnimationName</span><span class=\"Other\">(</span><span class=\"Identifier\">sprite</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the name of the current animation, or empty string if none. \n\n</dd>\n<a id=\"changeFramerate,Sprite,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">changeFramerate</span><span class=\"Other\">(</span><span class=\"Identifier\">sprite</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">frameRate</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.1</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nChange framerate for all created animations. \n\n</dd>\n<a id=\"addAnimation,Sprite,string,openArray[int],float,Flip\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">addAnimation</span><span class=\"Other\">(</span><span class=\"Identifier\">sprite</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">frames</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">frameRate</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.1</span><span class=\"Other\">;</span> <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Add a new animation to the <tt class=\"docutils literal\"><span class=\"pre\">sprite</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">name</span></tt> name of the animation.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">frames</span></tt>  array of animation frames' indexes.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">frameRate</span></tt> animation speed in seconds per frame.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">flip</span></tt>  animation flip flag. </p>\n\n\n</dd>\n<a id=\"play,Sprite,string,bool,AnimationCallback\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">play</span><span class=\"Other\">(</span><span class=\"Identifier\">sprite</span><span class=\"Other\">:</span> <a href=\"entity.html#Sprite\"><span class=\"Identifier\">Sprite</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">anim</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">cycles</span> <span class=\"Other\">=</span> <span class=\"Operator\">-</span><span class=\"DecNumber\">1</span><span class=\"Other\">;</span> <span class=\"Identifier\">kill</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">callback</span><span class=\"Other\">:</span> <a href=\"entity.html#AnimationCallback\"><span class=\"Identifier\">AnimationCallback</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Start playing the animation.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">anim</span></tt>  name of the animation.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">cycles</span></tt>  number of times to repeat the animation, or <cite>-1</cite> for looping.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">kill</span></tt>  kill when finished.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">callback</span></tt> called when animation is finished. </p>\n\n\n</dd>\n<a id=\"defaultPhysics,Entity,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">defaultPhysics</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default physics procedure. Disabled by default.</p>\n<p>Assign it as your entity's physics. </p>\n\n\n</dd>\n<a id=\"platformerPhysics,Entity,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">platformerPhysics</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Platformer physics procedure.</p>\n<p>Assign it as your entity's physics. </p>\n\n\n</dd>\n<a id=\"initEntity,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">initEntity</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default entity initialization procedure.</p>\n<p>Call it after creating a new entity. </p>\n\n\n</dd>\n<a id=\"newEntity,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newEntity</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"layer,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">layer</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current rendering layer of the <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>. \n\n</dd>\n<a id=\"layer=,Entity,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">layer=</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nChange the rendering layer of the <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>. \n\n</dd>\n<a id=\"copy,Entity,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">copy</span><span class=\"Other\">(</span><span class=\"Identifier\">target</span><span class=\"Other\">,</span> <span class=\"Identifier\">source</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Copy <tt class=\"docutils literal\"><span class=\"pre\">source</span></tt>'s properties to the other entity.</p>\n<p>No new objects will be allocated. </p>\n\n\n</dd>\n<a id=\"absRot,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">absRot</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the absolute (counting the parent's) rotation angle of the <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>. \n\n</dd>\n<a id=\"absScale,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">absScale</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the absolute (counting the parent's) scale of the <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>. \n\n</dd>\n<a id=\"absPos,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">absPos</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the absolute (counting the parent's) scale of the <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>. \n\n</dd>\n<a id=\"centrify,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">centrify</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">hor</span> <span class=\"Other\">=</span> <a href=\"types.html#HAlign\"><span class=\"Identifier\">HAlign</span></a><span class=\"Other\">.</span><span class=\"Identifier\">center</span><span class=\"Other\">;</span> <span class=\"Identifier\">ver</span> <span class=\"Other\">=</span> <a href=\"types.html#VAlign\"><span class=\"Identifier\">VAlign</span></a><span class=\"Other\">.</span><span class=\"Identifier\">center</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Set <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>'s <tt class=\"docutils literal\"><span class=\"pre\">center</span></tt>, according to the given align.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">hor</span></tt> Horisontal align: left, center, or right</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">ver</span></tt> Vertical align: top, center, or bottom </p>\n\n\n</dd>\n<a id=\"renderEntity,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderEntity</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default entity render procedure.</p>\n<p>Call it from your entity render method. </p>\n\n\n</dd>\n<a id=\"updateEntity,Entity,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateEntity</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default entity update procedure.</p>\n<p>Call it from your entity update method. </p>\n\n\n</dd>\n<a id=\"init,Collider,Entity,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newCollider,Entity,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"renderCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,BoxCollider,Entity,Coord,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newBoxCollider,Entity,Coord,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newBoxCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,CircleCollider,Entity,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">radius</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newCircleCollider,Entity,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newCircleCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">radius</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,LineCollider,Entity,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newLineCollider,Entity,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newLineCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,PolyCollider,Entity,Coord,openArray[Coord]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">points</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">]</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"updateFarthest,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateFarthest</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCall this procedure any time you changed points' coordinates. \n\n</dd>\n<a id=\"newPolyCollider,Entity,Coord,openArray[Coord]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newPolyCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">points</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,GroupCollider,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newGroupCollider,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newGroupCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"checkCollisions,Entity,seq[Entity]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">checkCollisions</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">list</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">]</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nTrigger <tt class=\"docutils literal\"><span class=\"pre\">onCollide</span></tt> method of <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> with a given <tt class=\"docutils literal\"><span class=\"pre\">list</span></tt> of targets. \n\n</dd>\n<a id=\"isColliding,Entity,seq[Entity]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">isColliding</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">list</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> collides with one of the elements in the given <tt class=\"docutils literal\"><span class=\"pre\">list</span></tt>, or <cite>false</cite> if no collisions occurs. \n\n</dd>\n<a id=\"willCollide,Entity,Coord,Angle,Scale,seq[Entity]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">willCollide</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rot</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">list</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> will collide with one of the elements in the given list, if <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>'s coordinates or dimentsions will change. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"event.e,Entity,\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">event</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,Entity\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"update.e,Entity,float\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">update</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"onCollide.e,Entity,Entity\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">onCollide</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">,</span> <span class=\"Identifier\">target</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCalled when <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> collides with <tt class=\"docutils literal\"><span class=\"pre\">target</span></tt>. \n\n</dd>\n<a id=\"collide.e,Coord,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Coord,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Coord,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Coord,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Coord,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a1</span><span class=\"Other\">,</span> <span class=\"Identifier\">a2</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b1</span><span class=\"Other\">,</span> <span class=\"Identifier\">b2</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">,</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p1</span><span class=\"Other\">,</span> <span class=\"Identifier\">p2</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,GroupCollider_2\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"animationIndex.t,Entity,string\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">animationIndex</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the index of the animation named <tt class=\"docutils literal\"><span class=\"pre\">name</span></tt>. \n\n</dd>\n<a id=\"animation.t,Entity,string\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">animation</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"entity.html#Animation\"><span class=\"Identifier\">Animation</span></a></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the animation named <tt class=\"docutils literal\"><span class=\"pre\">name</span></tt>. \n\n</dd>\n<a id=\"animation.t,Entity,int\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">animation</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">index</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"entity.html#Animation\"><span class=\"Identifier\">Animation</span></a></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the animation under given <tt class=\"docutils literal\"><span class=\"pre\">index</span></tt>. \n\n</dd>\n<a id=\"currentAnimationIndex.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">currentAnimationIndex</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"currentAnimation.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">currentAnimation</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"entity.html#Animation\"><span class=\"Identifier\">Animation</span></a></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the current animation. \n\n</dd>\n<a id=\"currentAnimationName.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">currentAnimationName</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the name of the current animation or empty string if none. \n\n</dd>\n<a id=\"changeFramerate.t,Entity,float\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">changeFramerate</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">frameRate</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.1</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nChange framerate for all created animations. \n\n</dd>\n<a id=\"addAnimation.t,Entity,string,openArray[int],float,Flip\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">addAnimation</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">frames</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span><span class=\"Other\">;</span>\n                     <span class=\"Identifier\">frameRate</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.1</span><span class=\"Other\">;</span> <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n<p>Add a new animation to the <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">name</span></tt> name of the animation.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">frames</span></tt>  array of animation frames' indexes.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">frameRate</span></tt> animation speed in seconds per frame.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">flip</span></tt>  animation flip flag. </p>\n\n\n</dd>\n<a id=\"play.t,Entity,string,bool,AnimationCallback\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">play</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">anim</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">cycles</span> <span class=\"Other\">=</span> <span class=\"Operator\">-</span><span class=\"DecNumber\">1</span><span class=\"Other\">;</span> <span class=\"Identifier\">kill</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">;</span>\n             <span class=\"Identifier\">callback</span><span class=\"Other\">:</span> <a href=\"entity.html#AnimationCallback\"><span class=\"Identifier\">AnimationCallback</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n<p>Start playing the animation.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">anim</span></tt>  name of the animation.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">cycles</span></tt>  number of times to repeat the animation, or <cite>-1</cite> for looping.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">kill</span></tt>  kill when finished.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">callback</span></tt> called when animation is finished. </p>\n\n\n</dd>\n<a id=\"dim.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">dim</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">entity.sprite.dim</span></tt> if <tt class=\"docutils literal\"><span class=\"pre\">entity.sprite</span></tt> is not <cite>nil</cite>, or <tt class=\"docutils literal\"><span class=\"pre\">entity.graphic.dim</span></tt> otherwise.\n\n</dd>\n<a id=\"transform.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">transform</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Transform\"><span class=\"Identifier\">Transform</span></a></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"transform=.t,Entity,Transform\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">transform=</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">transform</span><span class=\"Other\">:</span> <a href=\"types.html#Transform\"><span class=\"Identifier\">Transform</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"rect.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">rect</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"topleft.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">topleft</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"topright.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">topright</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"bottomright.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">bottomright</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"bottomleft.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">bottomleft</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"corners.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">corners</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">untyped</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"worldCorners.t,Entity\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">worldCorners</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">untyped</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.t,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:34 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/font.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>font</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">font</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Font\"\n    title=\"Font = ref object of RootObj\"><wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#10\" id=\"60\">Consts</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#DefaultFontColor\"\n    title=\"DefaultFontColor: Color = 0xFFFFFFFF&#x27;u32\"><wbr />Default<wbr />Font<wbr />Color<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#renderLineFont%2CFont%2Cstring%2CColor\"\n    title=\"renderLineFont(font: Font; line: string; color: Color = DefaultFontColor): Texture\"><wbr />render<wbr />Line<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\">Font</span></a></li>\n  <li><a class=\"reference\" href=\"#renderTextFont%2CFont%2CopenArray%5Bstring%5D%2CColor\"\n    title=\"renderTextFont(font: Font; text: openArray[string]; align = TextAlign.left;\n               color: Color = DefaultfontColor): Texture\"><wbr />render<wbr />Text<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\">Font</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#charH.e%2CFont\"\n    title=\"charH(font: Font): int\"><wbr />char<wbr />H<span class=\"attachedType\" style=\"visibility:hidden\">Font</span></a></li>\n  <li><a class=\"reference\" href=\"#lineDim.e%2CFont%2Cstring\"\n    title=\"lineDim(font: Font; text: string): Dim\"><wbr />line<wbr />Dim<span class=\"attachedType\" style=\"visibility:hidden\">Font</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CFont%2Cstring%2CColor\"\n    title=\"render(font: Font; line: string; color: Color = DefaultFontColor): Surface\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">Font</span></a></li>\n  <li><a class=\"reference\" href=\"#renderLine.e%2CFont%2Cstring%2CColor\"\n    title=\"renderLine(font: Font; line: string; color: Color = DefaultFontColor): Texture\"><wbr />render<wbr />Line<span class=\"attachedType\" style=\"visibility:hidden\">Font</span></a></li>\n  <li><a class=\"reference\" href=\"#renderText.e%2CFont%2CopenArray%5Bstring%5D%2CColor\"\n    title=\"renderText(font: Font; text: openArray[string]; align = TextAlign.left;\n           color: Color = DefaultfontColor): Texture\"><wbr />render<wbr />Text<span class=\"attachedType\" style=\"visibility:hidden\">Font</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Font\"></a>\n<dt><pre><a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"10\">\n<h1><a class=\"toc-backref\" href=\"#10\">Consts</a></h1>\n<dl class=\"item\">\n<a id=\"DefaultFontColor\"></a>\n<dt><pre><span class=\"Identifier\">DefaultFontColor</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0xFFFFFFFF'u32</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"renderLineFont,Font,string,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderLineFont</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultFontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nRender a text <tt class=\"docutils literal\"><span class=\"pre\">line</span></tt> in <tt class=\"docutils literal\"><span class=\"pre\">font</span></tt> with given <tt class=\"docutils literal\"><span class=\"pre\">color</span></tt>. \n\n</dd>\n<a id=\"renderTextFont,Font,openArray[string],Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderTextFont</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">text</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">align</span> <span class=\"Other\">=</span> <a href=\"types.html#TextAlign\"><span class=\"Identifier\">TextAlign</span></a><span class=\"Other\">.</span><span class=\"Identifier\">left</span><span class=\"Other\">;</span>\n                   <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultfontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nRender a multi-line <tt class=\"docutils literal\"><span class=\"pre\">text</span></tt> in <tt class=\"docutils literal\"><span class=\"pre\">font</span></tt> with given <tt class=\"docutils literal\"><span class=\"pre\">align</span></tt> and <tt class=\"docutils literal\"><span class=\"pre\">color</span></tt>. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"charH.e,Font\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">charH</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"lineDim.e,Font,string\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">lineDim</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">text</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,Font,string,Color\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultFontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"renderLine.e,Font,string,Color\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">renderLine</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultFontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nBase <tt class=\"docutils literal\"><span class=\"pre\">renderLine()</span></tt> font method. \n\n</dd>\n<a id=\"renderText.e,Font,openArray[string],Color\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">renderText</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">text</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">align</span> <span class=\"Other\">=</span> <a href=\"types.html#TextAlign\"><span class=\"Identifier\">TextAlign</span></a><span class=\"Other\">.</span><span class=\"Identifier\">left</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultfontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nBase <tt class=\"docutils literal\"><span class=\"pre\">renderText()</span></tt> font method. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:34 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/graphic.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>graphic</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">graphic</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Graphic\"\n    title=\"Graphic = ref object of RootObj\"><wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#w.e%2CGraphic\"\n    title=\"w(graphic: Graphic): int\"><wbr />w<span class=\"attachedType\" style=\"visibility:hidden\">Graphic</span></a></li>\n  <li><a class=\"reference\" href=\"#h.e%2CGraphic\"\n    title=\"h(graphic: Graphic): int\"><wbr />h<span class=\"attachedType\" style=\"visibility:hidden\">Graphic</span></a></li>\n  <li><a class=\"reference\" href=\"#dim.e%2CGraphic\"\n    title=\"dim(graphic: Graphic): Dim\"><wbr />dim<span class=\"attachedType\" style=\"visibility:hidden\">Graphic</span></a></li>\n  <li><a class=\"reference\" href=\"#draw.e%2CGraphic%2CCoord%2CAngle%2CScale%2CCoord%2CFlip%2CRect\"\n    title=\"draw(graphic: Graphic; pos: Coord = (0.0, 0.0); angle: Angle = 0.0; scale: Scale = 1.0;\n     center: Coord = (0.0, 0.0); flip: Flip = Flip.none;\n     region: Rect = Rect(x: 0, y: 0, w: 0, h: 0))\"><wbr />draw<span class=\"attachedType\" style=\"visibility:hidden\">Graphic</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#rect.t%2CGraphic%2CCoord\"\n    title=\"rect(self: Graphic; offset: Coord): Rect\"><wbr />rect<span class=\"attachedType\" style=\"visibility:hidden\">Graphic</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Graphic\"></a>\n<dt><pre><a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"w.e,Graphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">w</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"h.e,Graphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">h</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"dim.e,Graphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">dim</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"draw.e,Graphic,Coord,Angle,Scale,Coord,Flip,Rect\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">draw</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">;</span>\n           <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">1.0</span><span class=\"Other\">;</span> <span class=\"Identifier\">center</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">;</span>\n           <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"rect.t,Graphic,Coord\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">rect</span><span class=\"Other\">(</span><span class=\"Identifier\">self</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:35 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/gui/button.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>button</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">button</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#GuiButton\"\n    title=\"GuiButton = ref object of GuiWidget\n  image*: Graphic              ## The graphic to render on top of a button\n  imageOffset*: Coord          ## Image drawing offset from button&#x27;s center. \\\n                    ## Calcuclated automatically if the image is passed in ``init()``\n  imageShift*: Coord           ## Image shift when button is pressed\"><wbr />Gui<wbr />Button<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#init%2CGuiButton%2CGraphic%2CGraphic%2Cbool\"\n    title=\"init(button: GuiButton; graphic: Graphic; image: Graphic = nil; circle: bool = false)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">GuiButton</span></a></li>\n  <li><a class=\"reference\" href=\"#newGuiButton%2CGraphic%2CGraphic%2Cbool\"\n    title=\"newGuiButton(graphic: Graphic; image: Graphic = nil; circle: bool = false): GuiButton\"><wbr />new<wbr />Gui<wbr />Button<span class=\"attachedType\" style=\"visibility:hidden\">GuiButton</span></a></li>\n  <li><a class=\"reference\" href=\"#renderGuiButton%2CGuiButton\"\n    title=\"renderGuiButton(button: GuiButton)\"><wbr />render<wbr />Gui<wbr />Button<span class=\"attachedType\" style=\"visibility:hidden\">GuiButton</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#state%3D.e%2CGuiButton%2CGuiState\"\n    title=\"state=(button: GuiButton; val: GuiState)\"><wbr />state=<span class=\"attachedType\" style=\"visibility:hidden\">GuiButton</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CGuiButton\"\n    title=\"render(button: GuiButton)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">GuiButton</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"widget.html\">widget</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"GuiButton\"></a>\n<dt><pre><a href=\"button.html#GuiButton\"><span class=\"Identifier\">GuiButton</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a>\n  <span class=\"Identifier\">image</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a>              <span class=\"Comment\">## The graphic to render on top of a button</span>\n  <span class=\"Identifier\">imageOffset</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a>          <span class=\"Comment\">## Image drawing offset from button's center. \\</span>\n                    <span class=\"Comment\">## Calcuclated automatically if the image is passed in ``init()``</span>\n  <span class=\"Identifier\">imageShift</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a>           <span class=\"Comment\">## Image shift when button is pressed</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"init,GuiButton,Graphic,Graphic,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"button.html#GuiButton\"><span class=\"Identifier\">GuiButton</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">;</span> <span class=\"Identifier\">circle</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>GuiButton initialization.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt> 2x3 button graphic: defaultUp, defaultDown, focusedUp, focusedDown, disabledUp, disabledDown.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">image</span></tt> The graphic to render on top of a butotn.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">circle</span></tt> Set to <cite>true</cite> if you want a circle shape instead of square one. </p>\n\n\n</dd>\n<a id=\"newGuiButton,Graphic,Graphic,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newGuiButton</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">;</span> <span class=\"Identifier\">circle</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"button.html#GuiButton\"><span class=\"Identifier\">GuiButton</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Create a new GuiButton.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt> 2x3 button graphic: defaultUp, defaultDown, focusedUp, focusedDown, disabledUp, disabledDown.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">image</span></tt> The graphic to render on top of a butotn.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">circle</span></tt> Set to <cite>true</cite> if you want a circle shape instead of square one. </p>\n\n\n</dd>\n<a id=\"renderGuiButton,GuiButton\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderGuiButton</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"button.html#GuiButton\"><span class=\"Identifier\">GuiButton</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default button render procedure.</p>\n<p>Call it from your button render method. </p>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"state=.e,GuiButton,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">state=</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"button.html#GuiButton\"><span class=\"Identifier\">GuiButton</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt>'s <tt class=\"docutils literal\"><span class=\"pre\">state</span></tt>. \n\n</dd>\n<a id=\"render.e,GuiButton\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"button.html#GuiButton\"><span class=\"Identifier\">GuiButton</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:59:38 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/gui/progressbar.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>progressbar</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">progressbar</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#GuiProgressBar\"\n    title=\"GuiProgressBar = ref object of GuiWidget\n  fText: TextGraphic\n  min*, max*, value*: float\n  precision*: range[0 .. 32]     ## value format precision (defaults to 0)\n  unit*: string                ## value format unit (defaults to &#x27;%&#x27;)\n  decimalSep*: char            ## value format decimal separator (defaults to &#x27;.&#x27;)\n  direction*: Direction\n  dim*: Dim\n  outline*: Dim                ## outline border size\n  bgColor*, fgColor*: Color\n  bgGraphic*, fgGraphic*: TextureGraphic\n  reverseX*, reverseY*: bool\"><wbr />Gui<wbr />Progress<wbr />Bar<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#init%2CGuiProgressBar%2CDim%2CColor%2CColor%2CFont%2CTextureGraphic%2CTextureGraphic\"\n    title=\"init(bar: GuiProgressBar; dim: Dim; bgColor, fgColor: Color; font: Font;\n     bgGraphic, fgGraphic: TextureGraphic)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">GuiProgressBar</span></a></li>\n  <li><a class=\"reference\" href=\"#newProgressBar%2CDim%2CColor%2CColor%2CFont%2CTextureGraphic%2CTextureGraphic\"\n    title=\"newProgressBar(dim: Dim; bgColor: Color; fgColor: Color; font: Font = nil;\n               bgGraphic: TextureGraphic = nil; fgGraphic: TextureGraphic = nil): GuiProgressBar\"><wbr />new<wbr />Progress<wbr />Bar<span class=\"attachedType\" style=\"visibility:hidden\">GuiProgressBar</span></a></li>\n  <li><a class=\"reference\" href=\"#renderGuiProgressBar%2CGuiProgressBar\"\n    title=\"renderGuiProgressBar(bar: GuiProgressBar)\"><wbr />render<wbr />Gui<wbr />Progress<wbr />Bar<span class=\"attachedType\" style=\"visibility:hidden\">GuiProgressBar</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#render.e%2CGuiProgressBar\"\n    title=\"render(bar: GuiProgressBar)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">GuiProgressBar</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"draw.html\">draw</a>, <a class=\"reference external\" href=\"font.html\">font</a>, <a class=\"reference external\" href=\"textgraphic.html\">textgraphic</a>, <a class=\"reference external\" href=\"texturegraphic.html\">texturegraphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"widget.html\">widget</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"GuiProgressBar\"></a>\n<dt><pre><a href=\"progressbar.html#GuiProgressBar\"><span class=\"Identifier\">GuiProgressBar</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a>\n  <span class=\"Identifier\">fText</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a>\n  <span class=\"Identifier\">min</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">max</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">value</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>\n  <span class=\"Identifier\">precision</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">range</span><span class=\"Other\">[</span><span class=\"DecNumber\">0</span> <span class=\"Operator\">..</span> <span class=\"DecNumber\">32</span><span class=\"Other\">]</span>     <span class=\"Comment\">## value format precision (defaults to 0)</span>\n  <span class=\"Identifier\">unit</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span>                <span class=\"Comment\">## value format unit (defaults to '%')</span>\n  <span class=\"Identifier\">decimalSep</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">char</span>            <span class=\"Comment\">## value format decimal separator (defaults to '.')</span>\n  <span class=\"Identifier\">direction</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Direction\"><span class=\"Identifier\">Direction</span></a>\n  <span class=\"Identifier\">dim</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>\n  <span class=\"Identifier\">outline</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>                <span class=\"Comment\">## outline border size</span>\n  <span class=\"Identifier\">bgColor</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">fgColor</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span>\n  <span class=\"Identifier\">bgGraphic</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">fgGraphic</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a>\n  <span class=\"Identifier\">reverseX</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">reverseY</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"init,GuiProgressBar,Dim,Color,Color,Font,TextureGraphic,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">bar</span><span class=\"Other\">:</span> <a href=\"progressbar.html#GuiProgressBar\"><span class=\"Identifier\">GuiProgressBar</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">bgColor</span><span class=\"Other\">,</span> <span class=\"Identifier\">fgColor</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">;</span> <span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">;</span>\n         <span class=\"Identifier\">bgGraphic</span><span class=\"Other\">,</span> <span class=\"Identifier\">fgGraphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>GuiProgressBar initialization.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">dim</span></tt> bar's dimensions.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">bgColor</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">fgColor</span></tt> background (empty) and foreground (full) colors.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">font</span></tt>  info text font. Might be <cite>nil</cite>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">bgGraphic</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">fgGraphic</span></tt> background (empty) and foreground (full) textures that replace <tt class=\"docutils literal\"><span class=\"pre\">bgColor</span></tt> and <tt class=\"docutils literal\"><span class=\"pre\">fgColor</span></tt> if specified. </p>\n\n\n</dd>\n<a id=\"newProgressBar,Dim,Color,Color,Font,TextureGraphic,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newProgressBar</span><span class=\"Other\">(</span><span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">bgColor</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">;</span> <span class=\"Identifier\">fgColor</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">;</span> <span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">;</span>\n                   <span class=\"Identifier\">bgGraphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">;</span> <span class=\"Identifier\">fgGraphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"progressbar.html#GuiProgressBar\"><span class=\"Identifier\">GuiProgressBar</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Create a new GuiProgressBar.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">dim</span></tt> bar's dimensions.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">bgColor</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">fgColor</span></tt> background (empty) and foreground (full) colors.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">font</span></tt>  info text font. Might be <cite>nil</cite>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">bgGraphic</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">fgGraphic</span></tt> background (empty) and foreground (full) textures that replace <tt class=\"docutils literal\"><span class=\"pre\">bgColor</span></tt> and <tt class=\"docutils literal\"><span class=\"pre\">fgColor</span></tt> if specified. </p>\n\n\n</dd>\n<a id=\"renderGuiProgressBar,GuiProgressBar\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderGuiProgressBar</span><span class=\"Other\">(</span><span class=\"Identifier\">bar</span><span class=\"Other\">:</span> <a href=\"progressbar.html#GuiProgressBar\"><span class=\"Identifier\">GuiProgressBar</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default progress bar render procedure.</p>\n<p>Call it from your progress bar render method. </p>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"render.e,GuiProgressBar\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">bar</span><span class=\"Other\">:</span> <a href=\"progressbar.html#GuiProgressBar\"><span class=\"Identifier\">GuiProgressBar</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:59:39 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/gui/radio.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>radio</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">radio</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#GuiRadioGroup\"\n    title=\"GuiRadioGroup = ref object of Entity\n  list*: seq[GuiWidget]\"><wbr />Gui<wbr />Radio<wbr />Group<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GuiRadioButton\"\n    title=\"GuiRadioButton = ref object of GuiButton\n  group*: GuiRadioGroup\"><wbr />Gui<wbr />Radio<wbr />Button<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#init%2CGuiRadioGroup\"\n    title=\"init(radiogroup: GuiRadioGroup)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">GuiRadioGroup</span></a></li>\n  <li><a class=\"reference\" href=\"#newGuiRadioGroup%2C\"\n    title=\"newGuiRadioGroup(): GuiRadioGroup\"><wbr />new<wbr />Gui<wbr />Radio<wbr />Group<span class=\"attachedType\" style=\"visibility:hidden\">GuiRadioGroup</span></a></li>\n  <li><a class=\"reference\" href=\"#toggle%2CGuiRadioGroup%2CGuiWidget\"\n    title=\"toggle(radiogroup: GuiRadioGroup; target: GuiWidget)\"><wbr />toggle<span class=\"attachedType\" style=\"visibility:hidden\">GuiRadioGroup</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CGuiRadioButton%2CGuiRadioGroup%2CGraphic%2CGraphic%2Cbool\"\n    title=\"init(radiobutton: GuiRadioButton; group: GuiRadioGroup; graphic: Graphic;\n     image: Graphic = nil; circle: bool = false)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">GuiRadioButton</span></a></li>\n  <li><a class=\"reference\" href=\"#newGuiRadioButton%2CGuiRadioGroup%2CGraphic%2CGraphic%2Cbool\"\n    title=\"newGuiRadioButton(group: GuiRadioGroup; graphic: Graphic; image: Graphic = nil;\n                  circle: bool = false): GuiRadioButton\"><wbr />new<wbr />Gui<wbr />Radio<wbr />Button<span class=\"attachedType\" style=\"visibility:hidden\">GuiRadioGroup</span></a></li>\n  <li><a class=\"reference\" href=\"#setToggled%2CGuiRadioButton%2Cbool\"\n    title=\"setToggled(radiobutton: GuiRadioButton; val: bool)\"><wbr />set<wbr />Toggled<span class=\"attachedType\" style=\"visibility:hidden\">GuiRadioButton</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#toggled%3D.e%2CGuiRadioButton%2Cbool\"\n    title=\"toggled=(radiobutton: GuiRadioButton; val: bool)\"><wbr />toggled=<span class=\"attachedType\" style=\"visibility:hidden\">GuiRadioButton</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"button.html\">button</a>, <a class=\"reference external\" href=\"widget.html\">widget</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"GuiRadioGroup\"></a>\n<dt><pre><a href=\"radio.html#GuiRadioGroup\"><span class=\"Identifier\">GuiRadioGroup</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>\n  <span class=\"Identifier\">list</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">]</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GuiRadioButton\"></a>\n<dt><pre><a href=\"radio.html#GuiRadioButton\"><span class=\"Identifier\">GuiRadioButton</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"button.html#GuiButton\"><span class=\"Identifier\">GuiButton</span></a>\n  <span class=\"Identifier\">group</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioGroup\"><span class=\"Identifier\">GuiRadioGroup</span></a>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"init,GuiRadioGroup\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">radiogroup</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioGroup\"><span class=\"Identifier\">GuiRadioGroup</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newGuiRadioGroup,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newGuiRadioGroup</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioGroup\"><span class=\"Identifier\">GuiRadioGroup</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"toggle,GuiRadioGroup,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">toggle</span><span class=\"Other\">(</span><span class=\"Identifier\">radiogroup</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioGroup\"><span class=\"Identifier\">GuiRadioGroup</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">target</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nToggle a <tt class=\"docutils literal\"><span class=\"pre\">target</span></tt> element of the <tt class=\"docutils literal\"><span class=\"pre\">radiogroup</span></tt>. \n\n</dd>\n<a id=\"init,GuiRadioButton,GuiRadioGroup,Graphic,Graphic,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">radiobutton</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioButton\"><span class=\"Identifier\">GuiRadioButton</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">group</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioGroup\"><span class=\"Identifier\">GuiRadioGroup</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">;</span>\n         <span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">;</span> <span class=\"Identifier\">circle</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>GuiRadioButton initialization.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">group</span></tt> GuiRadioGroup the <tt class=\"docutils literal\"><span class=\"pre\">radiobutton</span></tt> belongs to.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">image</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">circle</span></tt> See &quot;gui/button.nim&quot; initialization docs. </p>\n\n\n</dd>\n<a id=\"newGuiRadioButton,GuiRadioGroup,Graphic,Graphic,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newGuiRadioButton</span><span class=\"Other\">(</span><span class=\"Identifier\">group</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioGroup\"><span class=\"Identifier\">GuiRadioGroup</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">;</span>\n                      <span class=\"Identifier\">circle</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioButton\"><span class=\"Identifier\">GuiRadioButton</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Create a new GuiRadioButton.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">group</span></tt> GuiRadioGroup the <tt class=\"docutils literal\"><span class=\"pre\">radiobutton</span></tt> belongs to.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">image</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">circle</span></tt> See &quot;gui/button.nim&quot; initialization docs.</p>\n\n\n</dd>\n<a id=\"setToggled,GuiRadioButton,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setToggled</span><span class=\"Other\">(</span><span class=\"Identifier\">radiobutton</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioButton\"><span class=\"Identifier\">GuiRadioButton</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nToggle <tt class=\"docutils literal\"><span class=\"pre\">radiobutton</span></tt> to a given state. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"toggled=.e,GuiRadioButton,bool\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">toggled=</span><span class=\"Other\">(</span><span class=\"Identifier\">radiobutton</span><span class=\"Other\">:</span> <a href=\"radio.html#GuiRadioButton\"><span class=\"Identifier\">GuiRadioButton</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:59:39 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/gui/textinput.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>textinput</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">textinput</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#GuiTextInput\"\n    title=\"GuiTextInput = ref object of GuiWidget\n  text*: TextField\n  textPos*: Coord              ## Relative text position\n  keysBackspace*, keysDelete*, keysLeft*, keysRight*, keysToFirst*, keysToLast*,\n  keysDone*: seq[Keycode]\"><wbr />Gui<wbr />Text<wbr />Input<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#init%2CGuiTextInput%2CGraphic%2CFont\"\n    title=\"init(input: GuiTextInput; graphic: Graphic; font: Font)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n  <li><a class=\"reference\" href=\"#newGuiTextInput%2CGraphic%2CFont\"\n    title=\"newGuiTextInput(graphic: Graphic; font: Font): GuiTextInput\"><wbr />new<wbr />Gui<wbr />Text<wbr />Input<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n  <li><a class=\"reference\" href=\"#eventGuiTextInput%2CGuiTextInput%2CEvent\"\n    title=\"eventGuiTextInput(input: GuiTextInput; e: Event)\"><wbr />event<wbr />Gui<wbr />Text<wbr />Input<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n  <li><a class=\"reference\" href=\"#enter%2CGuiTextInput\"\n    title=\"enter(input: GuiTextInput)\"><wbr />enter<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n  <li><a class=\"reference\" href=\"#click%2CGuiTextInput%2CMouseButton\"\n    title=\"click(input: GuiTextInput; mb: MouseButton)\"><wbr />click<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n  <li><a class=\"reference\" href=\"#renderGuiTextInput%2CGuiTextInput\"\n    title=\"renderGuiTextInput(input: GuiTextInput)\"><wbr />render<wbr />Gui<wbr />Text<wbr />Input<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#event.e%2CGuiTextInput%2CEvent\"\n    title=\"event(input: GuiTextInput; e: Event)\"><wbr />event<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n  <li><a class=\"reference\" href=\"#state%3D.e%2CGuiTextInput%2CGuiState\"\n    title=\"state=(input: GuiTextInput; val: GuiState)\"><wbr />state=<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n  <li><a class=\"reference\" href=\"#onClick.e%2CGuiTextInput%2CMouseButton\"\n    title=\"onClick(input: GuiTextInput; mb: MouseButton)\"><wbr />on<wbr />Click<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CGuiTextInput\"\n    title=\"render(input: GuiTextInput)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">GuiTextInput</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"font.html\">font</a>, <a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"input.html\">input</a>, <a class=\"reference external\" href=\"textfield.html\">textfield</a>, <a class=\"reference external\" href=\"textgraphic.html\">textgraphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"widget.html\">widget</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"GuiTextInput\"></a>\n<dt><pre><a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a>\n  <span class=\"Identifier\">text</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a>\n  <span class=\"Identifier\">textPos</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a>              <span class=\"Comment\">## Relative text position</span>\n  <span class=\"Identifier\">keysBackspace</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">keysDelete</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">keysLeft</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">keysRight</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">keysToFirst</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">keysToLast</span><span class=\"Operator\">*</span><span class=\"Other\">,</span>\n  <span class=\"Identifier\">keysDone</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">Keycode</span><span class=\"Other\">]</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"init,GuiTextInput,Graphic,Font\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>GuiTextInput initialization.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">grapic</span></tt> 2x2 input field graphic: default, focused, pressed (active), disabled.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">font</span></tt> Font object for text rendering. </p>\n\n\n</dd>\n<a id=\"newGuiTextInput,Graphic,Font\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newGuiTextInput</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Create a new GuiTextInput.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">grapic</span></tt> 2x2 input field graphic: default, focused, pressed (active), disabled.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">font</span></tt> Font object for text rendering. </p>\n\n\n</dd>\n<a id=\"eventGuiTextInput,GuiTextInput,Event\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">eventGuiTextInput</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"enter,GuiTextInput\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">enter</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nStart text entry mode. \n\n</dd>\n<a id=\"click,GuiTextInput,MouseButton\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">click</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">mb</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"renderGuiTextInput,GuiTextInput\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderGuiTextInput</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default text input render procedure.</p>\n<p>Call it from your text input render method. </p>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"event.e,GuiTextInput,Event\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">event</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"state=.e,GuiTextInput,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">state=</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"onClick.e,GuiTextInput,MouseButton\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">onClick</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">mb</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,GuiTextInput\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <a href=\"textinput.html#GuiTextInput\"><span class=\"Identifier\">GuiTextInput</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:59:40 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/gui/widget.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>widget</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">widget</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#GuiAction\"\n    title=\"GuiAction = proc (widget: GuiWidget)\"><wbr />Gui<wbr />Action<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GuiState\"\n    title=\"GuiState {.pure.} = enum\n  defaultUp, defaultDown, focusedUp, focusedDown, disabledUp, disabledDown\"><wbr />Gui<wbr />State<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GuiWidget\"\n    title=\"GuiWidget = ref object of Entity\n  fState: GuiState\n  fWasPressed: MouseState\n  actions*: seq[GuiAction]     ## A list of action to perform on click.\n  mbAllow*: MouseState         ## Mouse buttons allowed for interaction.\n  toggle*, fToggled: bool       ## If `true`, the widget is in toggle on&#x2F;off mode.\"><wbr />Gui<wbr />Widget<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#init%2CGuiWidget\"\n    title=\"init(widget: GuiWidget)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#newGuiWidget%2C\"\n    title=\"newGuiWidget(): GuiWidget\"><wbr />new<wbr />Gui<wbr />Widget<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#state%2CGuiWidget\"\n    title=\"state(widget: GuiWidget): GuiState\"><wbr />state<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#clickAction%2CGuiWidget\"\n    title=\"clickAction(widget: GuiWidget)\"><wbr />click<wbr />Action<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#setState%2CGuiWidget%2CGuiState\"\n    title=\"setState(widget: GuiWidget; val: GuiState)\"><wbr />set<wbr />State<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#setToggled%2CGuiWidget%2Cbool\"\n    title=\"setToggled(widget: GuiWidget; val: bool)\"><wbr />set<wbr />Toggled<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#disable%2CGuiWidget\"\n    title=\"disable(widget: GuiWidget)\"><wbr />disable<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#enable%2CGuiWidget\"\n    title=\"enable(widget: GuiWidget)\"><wbr />enable<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#eventGuiWidget%2CGuiWidget%2CEvent\"\n    title=\"eventGuiWidget(widget: GuiWidget; e: Event)\"><wbr />event<wbr />Gui<wbr />Widget<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#onPress.e%2CGuiWidget\"\n    title=\"onPress(widget: GuiWidget)\"><wbr />on<wbr />Press<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#onClick.e%2CGuiWidget\"\n    title=\"onClick(widget: GuiWidget; mb = MouseButton.left)\"><wbr />on<wbr />Click<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#state%3D.e%2CGuiWidget%2CGuiState\"\n    title=\"state=(widget: GuiWidget; val: GuiState)\"><wbr />state=<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#toggled%3D.e%2CGuiWidget%2Cbool\"\n    title=\"toggled=(widget: GuiWidget; val: bool)\"><wbr />toggled=<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#press.e%2CGuiWidget\"\n    title=\"press(widget: GuiWidget)\"><wbr />press<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#release.e%2CGuiWidget\"\n    title=\"release(widget: GuiWidget)\"><wbr />release<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#event.e%2CGuiWidget%2CEvent\"\n    title=\"event(widget: GuiWidget; e: Event)\"><wbr />event<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#isUp.t%2CGuiState\"\n    title=\"isUp(state: GuiState): bool\"><wbr />is<wbr />Up<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#isDown.t%2CGuiState\"\n    title=\"isDown(state: GuiState): bool\"><wbr />is<wbr />Down<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#isFocused.t%2CGuiState\"\n    title=\"isFocused(state: GuiState): bool\"><wbr />is<wbr />Focused<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#isDisabled.t%2CGuiState\"\n    title=\"isDisabled(state: GuiState): bool\"><wbr />is<wbr />Disabled<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#isEnabled.t%2CGuiState\"\n    title=\"isEnabled(state: GuiState): bool\"><wbr />is<wbr />Enabled<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#toggled.t%2CGuiWidget\"\n    title=\"toggled(widget: GuiWidget): bool\"><wbr />toggled<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#pressWidget.t%2CGuiWidget\"\n    title=\"pressWidget(widget: GuiWidget)\"><wbr />press<wbr />Widget<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n  <li><a class=\"reference\" href=\"#releaseWidget.t%2CGuiWidget\"\n    title=\"releaseWidget(widget: GuiWidget)\"><wbr />release<wbr />Widget<span class=\"attachedType\" style=\"visibility:hidden\">GuiWidget</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"input.html\">input</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"GuiAction\"></a>\n<dt><pre><a href=\"widget.html#GuiAction\"><span class=\"Identifier\">GuiAction</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GuiState\"></a>\n<dt><pre><a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">defaultUp</span><span class=\"Other\">,</span> <span class=\"Identifier\">defaultDown</span><span class=\"Other\">,</span> <span class=\"Identifier\">focusedUp</span><span class=\"Other\">,</span> <span class=\"Identifier\">focusedDown</span><span class=\"Other\">,</span> <span class=\"Identifier\">disabledUp</span><span class=\"Other\">,</span> <span class=\"Identifier\">disabledDown</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GuiWidget\"></a>\n<dt><pre><a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>\n  <span class=\"Identifier\">fState</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a>\n  <span class=\"Identifier\">fWasPressed</span><span class=\"Other\">:</span> <a href=\"input.html#MouseState\"><span class=\"Identifier\">MouseState</span></a>\n  <span class=\"Identifier\">actions</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"widget.html#GuiAction\"><span class=\"Identifier\">GuiAction</span></a><span class=\"Other\">]</span>     <span class=\"Comment\">## A list of action to perform on click.</span>\n  <span class=\"Identifier\">mbAllow</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#MouseState\"><span class=\"Identifier\">MouseState</span></a>         <span class=\"Comment\">## Mouse buttons allowed for interaction.</span>\n  <span class=\"Identifier\">toggle</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">fToggled</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>       <span class=\"Comment\">## If `true`, the widget is in toggle on/off mode.</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"init,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newGuiWidget,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newGuiWidget</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"state,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">state</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"clickAction,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">clickAction</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"setState,GuiWidget,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setState</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"setToggled,GuiWidget,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setToggled</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"disable,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">disable</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"enable,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">enable</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"eventGuiWidget,GuiWidget,Event\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">eventGuiWidget</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"onPress.e,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">onPress</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"onClick.e,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">onClick</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">mb</span> <span class=\"Other\">=</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">.</span><span class=\"Identifier\">left</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"state=.e,GuiWidget,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">state=</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"toggled=.e,GuiWidget,bool\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">toggled=</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"press.e,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">press</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"release.e,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">release</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"event.e,GuiWidget,Event\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">event</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"isUp.t,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">isUp</span><span class=\"Other\">(</span><span class=\"Identifier\">state</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"isDown.t,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">isDown</span><span class=\"Other\">(</span><span class=\"Identifier\">state</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"isFocused.t,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">isFocused</span><span class=\"Other\">(</span><span class=\"Identifier\">state</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"isDisabled.t,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">isDisabled</span><span class=\"Other\">(</span><span class=\"Identifier\">state</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"isEnabled.t,GuiState\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">isEnabled</span><span class=\"Other\">(</span><span class=\"Identifier\">state</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiState\"><span class=\"Identifier\">GuiState</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"toggled.t,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">toggled</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"pressWidget.t,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">pressWidget</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"releaseWidget.t,GuiWidget\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">releaseWidget</span><span class=\"Other\">(</span><span class=\"Identifier\">widget</span><span class=\"Other\">:</span> <a href=\"widget.html#GuiWidget\"><span class=\"Identifier\">GuiWidget</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:59:40 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/indexedimage.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>indexedimage</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">indexedimage</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Palette\"\n    title=\"Palette = ptr sdl.Palette\"><wbr />Palette<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#IndexedImage\"\n    title=\"IndexedImage = ref object of RootObj\n  fSurface: Surface            ## Source surface\"><wbr />Indexed<wbr />Image<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CPalette\"\n    title=\"free(palette: Palette)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">Palette</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CPalette%2Cint\"\n    title=\"init(palette: var Palette; ncolors: int)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">Palette</span></a></li>\n  <li><a class=\"reference\" href=\"#ncolors%2CPalette\"\n    title=\"ncolors(palette: Palette): int\"><wbr />ncolors<span class=\"attachedType\" style=\"visibility:hidden\">Palette</span></a></li>\n  <li><a class=\"reference\" href=\"#%5B%5D%2CPalette%2Cint\"\n    title=\"`[]`(palette: Palette; i: int): Color\"><wbr />`[]`<span class=\"attachedType\" style=\"visibility:hidden\">Palette</span></a></li>\n  <li><a class=\"reference\" href=\"#%5B%5D%3D%2CPalette%2Cint%2CopenArray%5BColor%5D\"\n    title=\"`[]=`(palette: Palette; i: int; colors: openArray[Color])\"><wbr />`[]=`<span class=\"attachedType\" style=\"visibility:hidden\">Palette</span></a></li>\n  <li><a class=\"reference\" href=\"#%5B%5D%3D%2CPalette%2Cint%2CColor\"\n    title=\"`[]=`(palette: Palette; i: int; color: Color)\"><wbr />`[]=`<span class=\"attachedType\" style=\"visibility:hidden\">Palette</span></a></li>\n  <li><a class=\"reference\" href=\"#free%2CIndexedImage\"\n    title=\"free(image: IndexedImage)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CIndexedImage\"\n    title=\"init(image: IndexedImage)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CIndexedImage%2Cstring\"\n    title=\"load(image: IndexedImage; file: string): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CIndexedImage%2Cptr.RWops%2Cbool\"\n    title=\"load(image: IndexedImage; src: ptr RWops; freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#newIndexedImage%2C\"\n    title=\"newIndexedImage(): IndexedImage\"><wbr />new<wbr />Indexed<wbr />Image<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#newIndexedImage%2Cstring\"\n    title=\"newIndexedImage(file: string): IndexedImage\"><wbr />new<wbr />Indexed<wbr />Image<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#newIndexedImage%2Cptr.RWops%2Cbool\"\n    title=\"newIndexedImage(src: ptr RWops; freeSrc: bool = true): IndexedImage\"><wbr />new<wbr />Indexed<wbr />Image<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#palette%2CIndexedImage\"\n    title=\"palette(image: IndexedImage): Palette\"><wbr />palette<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#palette%3D%2CIndexedImage%2CPalette\"\n    title=\"palette=(image: IndexedImage; palette: Palette)\"><wbr />palette=<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n  <li><a class=\"reference\" href=\"#render%2CIndexedImage\"\n    title=\"render(image: IndexedImage): Texture\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">IndexedImage</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Palette\"></a>\n<dt><pre><a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Palette</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"IndexedImage\"></a>\n<dt><pre><a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">fSurface</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span>            <span class=\"Comment\">## Source surface</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,Palette\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,Palette,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">ncolors</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"ncolors,Palette\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">ncolors</span><span class=\"Other\">(</span><span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nGet the number of colors in <tt class=\"docutils literal\"><span class=\"pre\">palette</span></tt>. \n\n</dd>\n<a id=\"[],Palette,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">`[]`</span><span class=\"Other\">(</span><span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">i</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">IndexError</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nGet the <tt class=\"docutils literal\"><span class=\"pre\">i</span></tt>'th color from the <tt class=\"docutils literal\"><span class=\"pre\">palette</span></tt>. \n\n</dd>\n<a id=\"[]=,Palette,int,openArray[Color]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">`[]=`</span><span class=\"Other\">(</span><span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">i</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">colors</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">Color</span><span class=\"Other\">]</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">IndexError</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nChange <tt class=\"docutils literal\"><span class=\"pre\">colors</span></tt> in the <tt class=\"docutils literal\"><span class=\"pre\">palette</span></tt> starting with <tt class=\"docutils literal\"><span class=\"pre\">i</span></tt>'th color. \n\n</dd>\n<a id=\"[]=,Palette,int,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">`[]=`</span><span class=\"Other\">(</span><span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">i</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">IndexError</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nChange <tt class=\"docutils literal\"><span class=\"pre\">i</span></tt>'th color in the <tt class=\"docutils literal\"><span class=\"pre\">palette</span></tt>. \n\n</dd>\n<a id=\"free,IndexedImage\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,IndexedImage\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,IndexedImage,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nLoad <tt class=\"docutils literal\"><span class=\"pre\">image``graphic source from a ``file</span></tt>. \n\n</dd>\n<a id=\"load,IndexedImage,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nLoad <tt class=\"docutils literal\"><span class=\"pre\">image``graphic source from a ``src</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt>. \n\n</dd>\n<a id=\"newIndexedImage,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newIndexedImage</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newIndexedImage,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newIndexedImage</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCreate a new IndexedImage and load it from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>. \n\n</dd>\n<a id=\"newIndexedImage,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newIndexedImage</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCreate a new IndexedImage and load it from a <tt class=\"docutils literal\"><span class=\"pre\">src</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt>. \n\n</dd>\n<a id=\"palette,IndexedImage\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">palette</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nGet the current palette of the <tt class=\"docutils literal\"><span class=\"pre\">image</span></tt>. \n\n</dd>\n<a id=\"palette=,IndexedImage,Palette\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">palette=</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#Palette\"><span class=\"Identifier\">Palette</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nAssign a new palette to the <tt class=\"docutils literal\"><span class=\"pre\">image</span></tt>. \n\n</dd>\n<a id=\"render,IndexedImage\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"indexedimage.html#IndexedImage\"><span class=\"Identifier\">IndexedImage</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a new <tt class=\"docutils literal\"><span class=\"pre\">Texture</span></tt> created from indexed <tt class=\"docutils literal\"><span class=\"pre\">image</span></tt>. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:35 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/input.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>input</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">input</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#MouseButton\"\n    title=\"MouseButton {.size: 4, pure.} = enum\n  left = sdl.ButtonLeft, middle = sdl.ButtonMiddle, right = sdl.ButtonRight,\n  x1 = sdl.ButtonX1, x2 = sdl.ButtonX2\"><wbr />Mouse<wbr />Button<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#MouseState\"\n    title=\"MouseState = int32\"><wbr />Mouse<wbr />State<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#JoyAxis\"\n    title=\"JoyAxis = range[low(int16) .. high(int16)]\"><wbr />Joy<wbr />Axis<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#JoyBall\"\n    title=\"JoyBall = CoordInt\"><wbr />Joy<wbr />Ball<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#JoyHat\"\n    title=\"JoyHat = sdl.HatPosition\"><wbr />Joy<wbr />Hat<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GeneralInputKeyboard\"\n    title=\"GeneralInputKeyboard = object\n  key*: Scancode\"><wbr />General<wbr />Input<wbr />Keyboard<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GeneralInputDirection\"\n    title=\"GeneralInputDirection = enum\n  dirX, dirY\"><wbr />General<wbr />Input<wbr />Direction<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GeneralInputMouseKind\"\n    title=\"GeneralInputMouseKind = enum\n  mButton, mMove\"><wbr />General<wbr />Input<wbr />Mouse<wbr />Kind<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GeneralInputMouse\"\n    title=\"GeneralInputMouse = object\n  case kind*: GeneralInputMouseKind\n  of mButton:\n    button*: MouseButton\n  of mMove:\n    direction*: GeneralInputDirection\"><wbr />General<wbr />Input<wbr />Mouse<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GeneralInputJoystickKind\"\n    title=\"GeneralInputJoystickKind = enum\n  jButton, jAxis, jBall, jHat\"><wbr />General<wbr />Input<wbr />Joystick<wbr />Kind<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GeneralInputJoystick\"\n    title=\"GeneralInputJoystick = object\n  guid*: JoystickGUID\n  case kind*: GeneralInputJoystickKind\n  of jButton:\n    button*: int\n  of jAxis:\n    axis*: int\n  of jBall:\n      ball*: int\n      ballDirection*: GeneralInputDirection\n\n  of jHat:\n      hat*: int\n      hatPosition*: HatPosition\"><wbr />General<wbr />Input<wbr />Joystick<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GeneralInputKind\"\n    title=\"GeneralInputKind = enum\n  giKeyboard, giMouse, giJoystick\"><wbr />General<wbr />Input<wbr />Kind<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#GeneralInput\"\n    title=\"GeneralInput = object\n  case kind*: GeneralInputKind\n  of giKeyboard:\n      keyboard*: GeneralInputKeyboard\n\n  of giMouse:\n      mouse*: GeneralInputMouse\n\n  of giJoystick:\n      joystick*: GeneralInputJoystick\"><wbr />General<wbr />Input<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#InputMap\"\n    title=\"InputMap = OrderedTableRef[string, GeneralInput]\"><wbr />Input<wbr />Map<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#initKeyboard%2C\"\n    title=\"initKeyboard()\"><wbr />init<wbr />Keyboard<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#updateKeyboard%2CEvent\"\n    title=\"updateKeyboard(event: Event)\"><wbr />update<wbr />Keyboard<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#down%2CopenArray%5BScancode%5D\"\n    title=\"down(scancodes: openArray[Scancode]): bool\"><wbr />down<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#down%2CopenArray%5BKeymod%5D\"\n    title=\"down(keymods: openArray[Keymod]): bool\"><wbr />down<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#pressed%2CopenArray%5BScancode%5D\"\n    title=\"pressed(scancodes: openArray[Scancode]): bool\"><wbr />pressed<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#released%2CopenArray%5BScancode%5D\"\n    title=\"released(scancodes: openArray[Scancode]): bool\"><wbr />released<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#clearPressed%2CScancode\"\n    title=\"clearPressed(scancode: Scancode)\"><wbr />clear<wbr />Pressed<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#clearReleased%2CScancode\"\n    title=\"clearReleased(scancode: Scancode)\"><wbr />clear<wbr />Released<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#initMouse%2C\"\n    title=\"initMouse()\"><wbr />init<wbr />Mouse<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#updateMouse%2CEvent\"\n    title=\"updateMouse(event: Event)\"><wbr />update<wbr />Mouse<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyIsOpened%2Cint\"\n    title=\"joyIsOpened(id: int): bool\"><wbr />joy<wbr />Is<wbr />Opened<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#getId%2CJoystickGUID\"\n    title=\"getId(guid: JoystickGUID): int\"><wbr />get<wbr />Id<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyGuid%2Cint\"\n    title=\"joyGuid(id: int): JoystickGUID\"><wbr />joy<wbr />Guid<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#openJoystick%2Cint\"\n    title=\"openJoystick(id: int): bool\"><wbr />open<wbr />Joystick<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#closeJoystick%2Cint\"\n    title=\"closeJoystick(id: int): bool\"><wbr />close<wbr />Joystick<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#initJoysticks%2C\"\n    title=\"initJoysticks()\"><wbr />init<wbr />Joysticks<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#updateJoysticks%2CEvent\"\n    title=\"updateJoysticks(event: Event)\"><wbr />update<wbr />Joysticks<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyName%2Cint\"\n    title=\"joyName(joystick: int): string\"><wbr />joy<wbr />Name<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyNumButtons%2Cint\"\n    title=\"joyNumButtons(joystick: int): int\"><wbr />joy<wbr />Num<wbr />Buttons<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyNumAxes%2Cint\"\n    title=\"joyNumAxes(joystick: int): int\"><wbr />joy<wbr />Num<wbr />Axes<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyNumBalls%2Cint\"\n    title=\"joyNumBalls(joystick: int): int\"><wbr />joy<wbr />Num<wbr />Balls<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyNumHats%2Cint\"\n    title=\"joyNumHats(joystick: int): int\"><wbr />joy<wbr />Num<wbr />Hats<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyDown%2Cint%2Cint\"\n    title=\"joyDown(joystick: int; button: int): bool\"><wbr />joy<wbr />Down<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyPressed%2Cint%2Cint\"\n    title=\"joyPressed(joystick: int; button: int): bool\"><wbr />joy<wbr />Pressed<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyReleased%2Cint%2Cint\"\n    title=\"joyReleased(joystick: int; button: int): bool\"><wbr />joy<wbr />Released<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#joyAxis%2Cint%2Cint\"\n    title=\"joyAxis(joystick: int; axis: int): JoyAxis\"><wbr />joy<wbr />Axis<span class=\"attachedType\" style=\"visibility:hidden\">JoyAxis</span></a></li>\n  <li><a class=\"reference\" href=\"#joyBall%2Cint%2Cint\"\n    title=\"joyBall(joystick: int; ball: int): JoyBall\"><wbr />joy<wbr />Ball<span class=\"attachedType\" style=\"visibility:hidden\">JoyBall</span></a></li>\n  <li><a class=\"reference\" href=\"#joyHat%2Cint%2Cint\"\n    title=\"joyHat(joystick: int; hat: int): JoyHat\"><wbr />joy<wbr />Hat<span class=\"attachedType\" style=\"visibility:hidden\">JoyHat</span></a></li>\n  <li><a class=\"reference\" href=\"#newInputMap%2C\"\n    title=\"newInputMap(): InputMap\"><wbr />new<wbr />Input<wbr />Map<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#addKey%2CInputMap%2Cstring%2CScancode\"\n    title=\"addKey(map: InputMap; name: string; key: Scancode)\"><wbr />add<wbr />Key<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#addMouseButton%2CInputMap%2Cstring%2CMouseButton\"\n    title=\"addMouseButton(map: InputMap; name: string; button: MouseButton)\"><wbr />add<wbr />Mouse<wbr />Button<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#addMouseMove%2CInputMap%2Cstring%2CGeneralInputDirection\"\n    title=\"addMouseMove(map: InputMap; name: string; direction: GeneralInputDirection)\"><wbr />add<wbr />Mouse<wbr />Move<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#addJoyButton%2CInputMap%2Cstring%2CJoystickGUID%2Cint\"\n    title=\"addJoyButton(map: InputMap; name: string; guid: JoystickGUID; button: int)\"><wbr />add<wbr />Joy<wbr />Button<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#addJoyAxis%2CInputMap%2Cstring%2CJoystickGUID%2Cint\"\n    title=\"addJoyAxis(map: InputMap; name: string; guid: JoystickGUID; axis: int)\"><wbr />add<wbr />Joy<wbr />Axis<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#addJoyBall%2CInputMap%2Cstring%2CJoystickGUID%2Cint%2CGeneralInputDirection\"\n    title=\"addJoyBall(map: InputMap; name: string; guid: JoystickGUID; ball: int;\n           ballDirection: GeneralInputDirection)\"><wbr />add<wbr />Joy<wbr />Ball<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#addJoyHat%2CInputMap%2Cstring%2CJoystickGUID%2Cint%2CHatPosition\"\n    title=\"addJoyHat(map: InputMap; name: string; guid: JoystickGUID; hat: int;\n          hatPosition: HatPosition)\"><wbr />add<wbr />Joy<wbr />Hat<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#%24%2CGeneralInput\"\n    title=\"`$`(gi: GeneralInput): string\"><wbr />`$`<span class=\"attachedType\" style=\"visibility:hidden\">GeneralInput</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CInputMap%2Cstring\"\n    title=\"load(map: InputMap; filename: string): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#save%2CInputMap%2Cstring\"\n    title=\"save(map: InputMap; filename: string): bool\"><wbr />save<span class=\"attachedType\" style=\"visibility:hidden\">InputMap</span></a></li>\n  <li><a class=\"reference\" href=\"#down%2CGeneralInput\"\n    title=\"down(gi: GeneralInput): bool\"><wbr />down<span class=\"attachedType\" style=\"visibility:hidden\">GeneralInput</span></a></li>\n  <li><a class=\"reference\" href=\"#pressed%2CGeneralInput\"\n    title=\"pressed(gi: GeneralInput): bool\"><wbr />pressed<span class=\"attachedType\" style=\"visibility:hidden\">GeneralInput</span></a></li>\n  <li><a class=\"reference\" href=\"#released%2CGeneralInput\"\n    title=\"released(gi: GeneralInput): bool\"><wbr />released<span class=\"attachedType\" style=\"visibility:hidden\">GeneralInput</span></a></li>\n  <li><a class=\"reference\" href=\"#movement%2CGeneralInput\"\n    title=\"movement(gi: GeneralInput): int\"><wbr />movement<span class=\"attachedType\" style=\"visibility:hidden\">GeneralInput</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#16\" id=\"66\">Converters</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#toInt.c%2CMouseButton\"\n    title=\"toInt(button: MouseButton): int32\"><wbr />to<wbr />Int<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#down.t%2CScancode\"\n    title=\"down(scancode: Scancode): bool\"><wbr />down<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#down.t%2CKeymod\"\n    title=\"down(keymod: Keymod): bool\"><wbr />down<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#pressed.t%2CScancode\"\n    title=\"pressed(scancode: Scancode): bool\"><wbr />pressed<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#released.t%2CScancode\"\n    title=\"released(scancode: Scancode): bool\"><wbr />released<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#name.t%2CKeycode\"\n    title=\"name(keycode: Keycode): string\"><wbr />name<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#name.t%2CScancode\"\n    title=\"name(scancode: Scancode): string\"><wbr />name<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#set.t%2CMouseState%2Cint32%2Cbool\"\n    title=\"set(state: var MouseState; button: int32; enable: bool = true)\"><wbr />set<span class=\"attachedType\" style=\"visibility:hidden\">MouseState</span></a></li>\n  <li><a class=\"reference\" href=\"#mouse.t%2C\"\n    title=\"mouse(): Coord2\"><wbr />mouse<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#mouseWheel.t%2C\"\n    title=\"mouseWheel(): Coord\"><wbr />mouse<wbr />Wheel<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#mouseWheelFlipped.t%2C\"\n    title=\"mouseWheelFlipped(): bool\"><wbr />mouse<wbr />Wheel<wbr />Flipped<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#mouseRelative.t%2Cbool\"\n    title=\"mouseRelative(enabled: bool): bool\"><wbr />mouse<wbr />Relative<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#mouseCapture.t%2Cbool\"\n    title=\"mouseCapture(enabled: bool): bool\"><wbr />mouse<wbr />Capture<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#down.t%2Cint32%2CMouseState\"\n    title=\"down(button: int32; state: MouseState = mBtn): bool\"><wbr />down<span class=\"attachedType\" style=\"visibility:hidden\">MouseState</span></a></li>\n  <li><a class=\"reference\" href=\"#down.t%2CMouseButton%2CMouseState\"\n    title=\"down(button: MouseButton; state: MouseState = mBtn): bool\"><wbr />down<span class=\"attachedType\" style=\"visibility:hidden\">MouseState</span></a></li>\n  <li><a class=\"reference\" href=\"#pressed.t%2Cint32\"\n    title=\"pressed(button: int32): bool\"><wbr />pressed<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#pressed.t%2CMouseButton\"\n    title=\"pressed(button: MouseButton): bool\"><wbr />pressed<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#released.t%2Cint32\"\n    title=\"released(button: int32): bool\"><wbr />released<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#released.t%2CMouseButton\"\n    title=\"released(button: MouseButton): bool\"><wbr />released<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#clearPressed.t%2Cint32\"\n    title=\"clearPressed(button: int32)\"><wbr />clear<wbr />Pressed<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#clearPressed.t%2CMouseButton\"\n    title=\"clearPressed(button: MouseButton)\"><wbr />clear<wbr />Pressed<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#clearReleased.t%2Cint32\"\n    title=\"clearReleased(button: int32)\"><wbr />clear<wbr />Released<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#clearReleased.t%2CMouseButton\"\n    title=\"clearReleased(button: MouseButton)\"><wbr />clear<wbr />Released<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#mbState.t%2C\"\n    title=\"mbState(): MouseState\"><wbr />mb<wbr />State<span class=\"attachedType\" style=\"visibility:hidden\">MouseState</span></a></li>\n  <li><a class=\"reference\" href=\"#cursorIsVisible.t%2C\"\n    title=\"cursorIsVisible(): bool\"><wbr />cursor<wbr />Is<wbr />Visible<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#showCursor.t%2C\"\n    title=\"showCursor()\"><wbr />show<wbr />Cursor<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#hideCursor.t%2C\"\n    title=\"hideCursor()\"><wbr />hide<wbr />Cursor<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#toggleCursor.t%2C\"\n    title=\"toggleCursor()\"><wbr />toggle<wbr />Cursor<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"MouseButton\"></a>\n<dt><pre><a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"DecNumber\">4</span><span class=\"Other\">,</span> <span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">left</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">ButtonLeft</span><span class=\"Other\">,</span> <span class=\"Identifier\">middle</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">ButtonMiddle</span><span class=\"Other\">,</span> <span class=\"Identifier\">right</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">ButtonRight</span><span class=\"Other\">,</span>\n  <span class=\"Identifier\">x1</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">ButtonX1</span><span class=\"Other\">,</span> <span class=\"Identifier\">x2</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">ButtonX2</span></pre></dt>\n<dd>\n\nMouse buttons. \n\n</dd>\n<a id=\"MouseState\"></a>\n<dt><pre><a href=\"input.html#MouseState\"><span class=\"Identifier\">MouseState</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">int32</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"JoyAxis\"></a>\n<dt><pre><a href=\"input.html#JoyAxis\"><span class=\"Identifier\">JoyAxis</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">range</span><span class=\"Other\">[</span><span class=\"Identifier\">low</span><span class=\"Other\">(</span><span class=\"Identifier\">int16</span><span class=\"Other\">)</span> <span class=\"Operator\">..</span> <span class=\"Identifier\">high</span><span class=\"Other\">(</span><span class=\"Identifier\">int16</span><span class=\"Other\">)</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"JoyBall\"></a>\n<dt><pre><a href=\"input.html#JoyBall\"><span class=\"Identifier\">JoyBall</span></a> <span class=\"Other\">=</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"JoyHat\"></a>\n<dt><pre><a href=\"input.html#JoyHat\"><span class=\"Identifier\">JoyHat</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">HatPosition</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GeneralInputKeyboard\"></a>\n<dt><pre><a href=\"input.html#GeneralInputKeyboard\"><span class=\"Identifier\">GeneralInputKeyboard</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">object</span>\n  <span class=\"Identifier\">key</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scancode</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GeneralInputDirection\"></a>\n<dt><pre><a href=\"input.html#GeneralInputDirection\"><span class=\"Identifier\">GeneralInputDirection</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">dirX</span><span class=\"Other\">,</span> <span class=\"Identifier\">dirY</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GeneralInputMouseKind\"></a>\n<dt><pre><a href=\"input.html#GeneralInputMouseKind\"><span class=\"Identifier\">GeneralInputMouseKind</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">mButton</span><span class=\"Other\">,</span> <span class=\"Identifier\">mMove</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GeneralInputMouse\"></a>\n<dt><pre><a href=\"input.html#GeneralInputMouse\"><span class=\"Identifier\">GeneralInputMouse</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">object</span>\n  <span class=\"Keyword\">case</span> <span class=\"Identifier\">kind</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputMouseKind\"><span class=\"Identifier\">GeneralInputMouseKind</span></a>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">mButton</span><span class=\"Other\">:</span>\n    <span class=\"Identifier\">button</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">mMove</span><span class=\"Other\">:</span>\n    <span class=\"Identifier\">direction</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputDirection\"><span class=\"Identifier\">GeneralInputDirection</span></a>\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GeneralInputJoystickKind\"></a>\n<dt><pre><a href=\"input.html#GeneralInputJoystickKind\"><span class=\"Identifier\">GeneralInputJoystickKind</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">jButton</span><span class=\"Other\">,</span> <span class=\"Identifier\">jAxis</span><span class=\"Other\">,</span> <span class=\"Identifier\">jBall</span><span class=\"Other\">,</span> <span class=\"Identifier\">jHat</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GeneralInputJoystick\"></a>\n<dt><pre><a href=\"input.html#GeneralInputJoystick\"><span class=\"Identifier\">GeneralInputJoystick</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">object</span>\n  <span class=\"Identifier\">guid</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">JoystickGUID</span>\n  <span class=\"Keyword\">case</span> <span class=\"Identifier\">kind</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputJoystickKind\"><span class=\"Identifier\">GeneralInputJoystickKind</span></a>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">jButton</span><span class=\"Other\">:</span>\n    <span class=\"Identifier\">button</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">jAxis</span><span class=\"Other\">:</span>\n    <span class=\"Identifier\">axis</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">jBall</span><span class=\"Other\">:</span>\n      <span class=\"Identifier\">ball</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n      <span class=\"Identifier\">ballDirection</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputDirection\"><span class=\"Identifier\">GeneralInputDirection</span></a>\n\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">jHat</span><span class=\"Other\">:</span>\n      <span class=\"Identifier\">hat</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n      <span class=\"Identifier\">hatPosition</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">HatPosition</span>\n\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GeneralInputKind\"></a>\n<dt><pre><a href=\"input.html#GeneralInputKind\"><span class=\"Identifier\">GeneralInputKind</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">giKeyboard</span><span class=\"Other\">,</span> <span class=\"Identifier\">giMouse</span><span class=\"Other\">,</span> <span class=\"Identifier\">giJoystick</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"GeneralInput\"></a>\n<dt><pre><a href=\"input.html#GeneralInput\"><span class=\"Identifier\">GeneralInput</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">object</span>\n  <span class=\"Keyword\">case</span> <span class=\"Identifier\">kind</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputKind\"><span class=\"Identifier\">GeneralInputKind</span></a>\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">giKeyboard</span><span class=\"Other\">:</span>\n      <span class=\"Identifier\">keyboard</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputKeyboard\"><span class=\"Identifier\">GeneralInputKeyboard</span></a>\n\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">giMouse</span><span class=\"Other\">:</span>\n      <span class=\"Identifier\">mouse</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputMouse\"><span class=\"Identifier\">GeneralInputMouse</span></a>\n\n  <span class=\"Keyword\">of</span> <span class=\"Identifier\">giJoystick</span><span class=\"Other\">:</span>\n      <span class=\"Identifier\">joystick</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputJoystick\"><span class=\"Identifier\">GeneralInputJoystick</span></a>\n\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"InputMap\"></a>\n<dt><pre><a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">OrderedTableRef</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">,</span> <a href=\"input.html#GeneralInput\"><span class=\"Identifier\">GeneralInput</span></a><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"initKeyboard,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">initKeyboard</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Clear the buffers.</p>\n<p>Called automatically from the main game cycle. </p>\n\n\n</dd>\n<a id=\"updateKeyboard,Event\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateKeyboard</span><span class=\"Other\">(</span><span class=\"Identifier\">event</span><span class=\"Other\">:</span> <span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCalled automatically from the main game cycle. \n\n</dd>\n<a id=\"down,openArray[Scancode]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">down</span><span class=\"Other\">(</span><span class=\"Identifier\">scancodes</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">Scancode</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCheck if any scancode in the <tt class=\"docutils literal\"><span class=\"pre\">scancodes</span></tt> array is down. \n\n</dd>\n<a id=\"down,openArray[Keymod]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">down</span><span class=\"Other\">(</span><span class=\"Identifier\">keymods</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">Keymod</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCheck if any keymod in the <tt class=\"docutils literal\"><span class=\"pre\">keymodes</span></tt> array is down. \n\n</dd>\n<a id=\"pressed,openArray[Scancode]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pressed</span><span class=\"Other\">(</span><span class=\"Identifier\">scancodes</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">Scancode</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCheck if any scancode in the <tt class=\"docutils literal\"><span class=\"pre\">scancodes</span></tt> array was just pressed. \n\n</dd>\n<a id=\"released,openArray[Scancode]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">released</span><span class=\"Other\">(</span><span class=\"Identifier\">scancodes</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">Scancode</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCheck if any scancode in the <tt class=\"docutils literal\"><span class=\"pre\">scancodes</span></tt> array was just released. \n\n</dd>\n<a id=\"clearPressed,Scancode\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">clearPressed</span><span class=\"Other\">(</span><span class=\"Identifier\">scancode</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scancode</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nRemove <tt class=\"docutils literal\"><span class=\"pre\">scancode</span></tt> from pressed keys list. \n\n</dd>\n<a id=\"clearReleased,Scancode\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">clearReleased</span><span class=\"Other\">(</span><span class=\"Identifier\">scancode</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scancode</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nRemove <tt class=\"docutils literal\"><span class=\"pre\">scancode</span></tt> from released keys list. \n\n</dd>\n<a id=\"initMouse,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">initMouse</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Clear the buffers.</p>\n<p>Called automatically from the main game cycle. </p>\n\n\n</dd>\n<a id=\"updateMouse,Event\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateMouse</span><span class=\"Other\">(</span><span class=\"Identifier\">event</span><span class=\"Other\">:</span> <span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCalled automatically from the main game cycle. \n\n</dd>\n<a id=\"joyIsOpened,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyIsOpened</span><span class=\"Other\">(</span><span class=\"Identifier\">id</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"getId,JoystickGUID\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">getId</span><span class=\"Other\">(</span><span class=\"Identifier\">guid</span><span class=\"Other\">:</span> <span class=\"Identifier\">JoystickGUID</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the index of a joystick with a corresponding <tt class=\"docutils literal\"><span class=\"pre\">guid</span></tt>, or <cite>-1</cite> otherwise. \n\n</dd>\n<a id=\"joyGuid,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyGuid</span><span class=\"Other\">(</span><span class=\"Identifier\">id</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">JoystickGUID</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"openJoystick,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">openJoystick</span><span class=\"Other\">(</span><span class=\"Identifier\">id</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"closeJoystick,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">closeJoystick</span><span class=\"Other\">(</span><span class=\"Identifier\">id</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"initJoysticks,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">initJoysticks</span><span class=\"Other\">(</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Init the <tt class=\"docutils literal\"><span class=\"pre\">joysticks</span></tt> sequence.</p>\n<p>Called automatically from the main game cycle. </p>\n\n\n</dd>\n<a id=\"updateJoysticks,Event\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateJoysticks</span><span class=\"Other\">(</span><span class=\"Identifier\">event</span><span class=\"Other\">:</span> <span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCalled automatically from the main game cycle. \n\n</dd>\n<a id=\"joyName,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyName</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the name of the <tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt>, or an empty string otherwise. \n\n</dd>\n<a id=\"joyNumButtons,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyNumButtons</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"joyNumAxes,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyNumAxes</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"joyNumBalls,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyNumBalls</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"joyNumHats,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyNumHats</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"joyDown,int,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyDown</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Check if <tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt> is down.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt>  Joystick ID, or <cite>-1</cite> to check every opened joystick.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">button</span></tt>  Button ID. </p>\n\n\n</dd>\n<a id=\"joyPressed,int,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyPressed</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Check if <tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt> was just pressed.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt>  Joystick ID, or <cite>-1</cite> to check every opened joystick.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">button</span></tt>  Joystick button ID. </p>\n\n\n</dd>\n<a id=\"joyReleased,int,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyReleased</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Check if <tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt> was just released.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt>  Joystick ID, or <cite>-1</cite> to check every opened joystick.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">button</span></tt>  Joystick button ID. </p>\n\n\n</dd>\n<a id=\"joyAxis,int,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyAxis</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">axis</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"input.html#JoyAxis\"><span class=\"Identifier\">JoyAxis</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Get <tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">axis</span></tt> current position.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt>  Joystick ID.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">axis</span></tt>  Joystick axis ID. </p>\n\n\n</dd>\n<a id=\"joyBall,int,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyBall</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">ball</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"input.html#JoyBall\"><span class=\"Identifier\">JoyBall</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Get <tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">ball</span></tt> axis change since the last poll.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt>  Joystick ID.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">ball</span></tt>  Joystick ball ID. </p>\n\n\n</dd>\n<a id=\"joyHat,int,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">joyHat</span><span class=\"Other\">(</span><span class=\"Identifier\">joystick</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">hat</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"input.html#JoyHat\"><span class=\"Identifier\">JoyHat</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Get <tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">hat</span></tt> current position.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">joystick</span></tt>  Joystick ID.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">hat</span></tt> Joystick hat ID. </p>\n\n\n</dd>\n<a id=\"newInputMap,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newInputMap</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"addKey,InputMap,string,Scancode\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">addKey</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">key</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scancode</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"addMouseButton,InputMap,string,MouseButton\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">addMouseButton</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"addMouseMove,InputMap,string,GeneralInputDirection\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">addMouseMove</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">direction</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputDirection\"><span class=\"Identifier\">GeneralInputDirection</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"addJoyButton,InputMap,string,JoystickGUID,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">addJoyButton</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">guid</span><span class=\"Other\">:</span> <span class=\"Identifier\">JoystickGUID</span><span class=\"Other\">;</span> <span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"addJoyAxis,InputMap,string,JoystickGUID,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">addJoyAxis</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">guid</span><span class=\"Other\">:</span> <span class=\"Identifier\">JoystickGUID</span><span class=\"Other\">;</span> <span class=\"Identifier\">axis</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"addJoyBall,InputMap,string,JoystickGUID,int,GeneralInputDirection\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">addJoyBall</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">guid</span><span class=\"Other\">:</span> <span class=\"Identifier\">JoystickGUID</span><span class=\"Other\">;</span> <span class=\"Identifier\">ball</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">ballDirection</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInputDirection\"><span class=\"Identifier\">GeneralInputDirection</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"addJoyHat,InputMap,string,JoystickGUID,int,HatPosition\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">addJoyHat</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">guid</span><span class=\"Other\">:</span> <span class=\"Identifier\">JoystickGUID</span><span class=\"Other\">;</span> <span class=\"Identifier\">hat</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span>\n              <span class=\"Identifier\">hatPosition</span><span class=\"Other\">:</span> <span class=\"Identifier\">HatPosition</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"$,GeneralInput\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">`$`</span><span class=\"Other\">(</span><span class=\"Identifier\">gi</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInput\"><span class=\"Identifier\">GeneralInput</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,InputMap,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">CsvError</span><span class=\"Other\">,</span> <span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"save,InputMap,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">save</span><span class=\"Other\">(</span><span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"input.html#InputMap\"><span class=\"Identifier\">InputMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">IOError</span><span class=\"Other\">,</span> <span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">WriteIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"down,GeneralInput\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">down</span><span class=\"Other\">(</span><span class=\"Identifier\">gi</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInput\"><span class=\"Identifier\">GeneralInput</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"pressed,GeneralInput\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pressed</span><span class=\"Other\">(</span><span class=\"Identifier\">gi</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInput\"><span class=\"Identifier\">GeneralInput</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"released,GeneralInput\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">released</span><span class=\"Other\">(</span><span class=\"Identifier\">gi</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInput\"><span class=\"Identifier\">GeneralInput</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"movement,GeneralInput\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">movement</span><span class=\"Other\">(</span><span class=\"Identifier\">gi</span><span class=\"Other\">:</span> <a href=\"input.html#GeneralInput\"><span class=\"Identifier\">GeneralInput</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"16\">\n<h1><a class=\"toc-backref\" href=\"#16\">Converters</a></h1>\n<dl class=\"item\">\n<a id=\"toInt.c,MouseButton\"></a>\n<dt><pre><span class=\"Keyword\">converter</span> <span class=\"Identifier\">toInt</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int32</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"down.t,Scancode\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">down</span><span class=\"Other\">(</span><span class=\"Identifier\">scancode</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scancode</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nCheck if <tt class=\"docutils literal\"><span class=\"pre\">scancode</span></tt> (keyboard key) is down. \n\n</dd>\n<a id=\"down.t,Keymod\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">down</span><span class=\"Other\">(</span><span class=\"Identifier\">keymod</span><span class=\"Other\">:</span> <span class=\"Identifier\">Keymod</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nCheck if <tt class=\"docutils literal\"><span class=\"pre\">keymod</span></tt> (keyboard mod key) is down. \n\n</dd>\n<a id=\"pressed.t,Scancode\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">pressed</span><span class=\"Other\">(</span><span class=\"Identifier\">scancode</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scancode</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nCheck if <tt class=\"docutils literal\"><span class=\"pre\">scancode</span></tt> (keyboard key) was just pressed. \n\n</dd>\n<a id=\"released.t,Scancode\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">released</span><span class=\"Other\">(</span><span class=\"Identifier\">scancode</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scancode</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nCheck if <tt class=\"docutils literal\"><span class=\"pre\">scancode</span></tt> (keyboard key) was just released. \n\n</dd>\n<a id=\"name.t,Keycode\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">name</span><span class=\"Other\">(</span><span class=\"Identifier\">keycode</span><span class=\"Other\">:</span> <span class=\"Identifier\">Keycode</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a human-readable name for the <tt class=\"docutils literal\"><span class=\"pre\">keycode</span></tt>. \n\n</dd>\n<a id=\"name.t,Scancode\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">name</span><span class=\"Other\">(</span><span class=\"Identifier\">scancode</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scancode</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a human-readable name for the <tt class=\"docutils literal\"><span class=\"pre\">scancode</span></tt>. \n\n</dd>\n<a id=\"set.t,MouseState,int32,bool\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">set</span><span class=\"Other\">(</span><span class=\"Identifier\">state</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"input.html#MouseState\"><span class=\"Identifier\">MouseState</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int32</span><span class=\"Other\">;</span> <span class=\"Identifier\">enable</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nEnable or disable specific mouse button's flag in the given <tt class=\"docutils literal\"><span class=\"pre\">state</span></tt>. \n\n</dd>\n<a id=\"mouse.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">mouse</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord2\"><span class=\"Identifier\">Coord2</span></a></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current mouse position. \n\n</dd>\n<a id=\"mouseWheel.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">mouseWheel</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current mouse wheel motion. \n\n</dd>\n<a id=\"mouseWheelFlipped.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">mouseWheelFlipped</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if mouse wheel direction is flipped. \n\n</dd>\n<a id=\"mouseRelative.t,bool\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">mouseRelative</span><span class=\"Other\">(</span><span class=\"Identifier\">enabled</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nSet relative mouse mode. \n\n</dd>\n<a id=\"mouseCapture.t,bool\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">mouseCapture</span><span class=\"Other\">(</span><span class=\"Identifier\">enabled</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nCapture or release the mouse. \n\n</dd>\n<a id=\"down.t,int32,MouseState\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">down</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int32</span><span class=\"Other\">;</span> <span class=\"Identifier\">state</span><span class=\"Other\">:</span> <a href=\"input.html#MouseState\"><span class=\"Identifier\">MouseState</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">mBtn</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nCheck if mouse <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt> is pressed. \n\n</dd>\n<a id=\"down.t,MouseButton,MouseState\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">down</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">state</span><span class=\"Other\">:</span> <a href=\"input.html#MouseState\"><span class=\"Identifier\">MouseState</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">mBtn</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"pressed.t,int32\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">pressed</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int32</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nCheck if mouse <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt> was just pressed. \n\n</dd>\n<a id=\"pressed.t,MouseButton\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">pressed</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"released.t,int32\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">released</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int32</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nCheck if mouse <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt> was just released. \n\n</dd>\n<a id=\"released.t,MouseButton\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">released</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"clearPressed.t,int32\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">clearPressed</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int32</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nRemove <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt> from pressed buttons list. \n\n</dd>\n<a id=\"clearPressed.t,MouseButton\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">clearPressed</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"clearReleased.t,int32\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">clearReleased</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <span class=\"Identifier\">int32</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nRemove <tt class=\"docutils literal\"><span class=\"pre\">button</span></tt> from released buttons list. \n\n</dd>\n<a id=\"clearReleased.t,MouseButton\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">clearReleased</span><span class=\"Other\">(</span><span class=\"Identifier\">button</span><span class=\"Other\">:</span> <a href=\"input.html#MouseButton\"><span class=\"Identifier\">MouseButton</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"mbState.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">mbState</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"input.html#MouseState\"><span class=\"Identifier\">MouseState</span></a></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current mouse buttons state value. \n\n</dd>\n<a id=\"cursorIsVisible.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">cursorIsVisible</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if the system mouse cursor is visible, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"showCursor.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">showCursor</span><span class=\"Other\">(</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nShow the system mouse cursor. \n\n</dd>\n<a id=\"hideCursor.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">hideCursor</span><span class=\"Other\">(</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nHide the system mouse cursor. \n\n</dd>\n<a id=\"toggleCursor.t,\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">toggleCursor</span><span class=\"Other\">(</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nToggle the visibility of the system mouse cursor. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:36 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/mosaic.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>mosaic</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">mosaic</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#MosaicPattern\"\n    title=\"MosaicPattern = seq[seq[int]]\"><wbr />Mosaic<wbr />Pattern<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Mosaic\"\n    title=\"Mosaic = ref object of RootObj\n  fSurface: Surface            ## Source surface\n  fDim: Dim                    ## Dimensions of the surface\n  tileDim*, offset*: Dim        ## \\\n                      ##  Dimensions of a single mosaic tile, and offset from the edge.\"><wbr />Mosaic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#RepeatPattern\"\n    title=\"RepeatPattern = seq[tuple[rows, cols: int, data: seq[int]]]\"><wbr />Repeat<wbr />Pattern<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CMosaic\"\n    title=\"free(mosaic: Mosaic)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CMosaic\"\n    title=\"init(mosaic: Mosaic)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CMosaic%2Cstring%2CDim%2CDim\"\n    title=\"load(mosaic: Mosaic; file: string; tileDim: Dim; offset: Dim = (0, 0)): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CMosaic%2Cptr.RWops%2CDim%2CDim%2Cbool\"\n    title=\"load(mosaic: Mosaic; src: ptr RWops; tileDim: Dim; offset: Dim = (0, 0);\n     freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#newMosaic%2C\"\n    title=\"newMosaic(): Mosaic\"><wbr />new<wbr />Mosaic<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#newMosaic%2Cstring%2CDim%2CDim\"\n    title=\"newMosaic(file: string; tileDim: Dim; offset: Dim = (0, 0)): Mosaic\"><wbr />new<wbr />Mosaic<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#newMosaic%2Cptr.RWops%2CDim%2CDim%2Cbool\"\n    title=\"newMosaic(src: ptr RWops; tileDim: Dim; offset: Dim = (0, 0); freeSrc: bool = true): Mosaic\"><wbr />new<wbr />Mosaic<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#dim%2CMosaic\"\n    title=\"dim(mosaic: Mosaic): Dim\"><wbr />dim<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#renderSurface%2CMosaic%2CMosaicPattern\"\n    title=\"renderSurface(mosaic: Mosaic; pattern: MosaicPattern): Surface\"><wbr />render<wbr />Surface<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#render%2CMosaic%2CMosaicPattern\"\n    title=\"render(mosaic: Mosaic; pattern: MosaicPattern): Texture\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">Mosaic</span></a></li>\n  <li><a class=\"reference\" href=\"#patternRepeat%2CRepeatPattern\"\n    title=\"patternRepeat(repeat: RepeatPattern): MosaicPattern\"><wbr />pattern<wbr />Repeat<span class=\"attachedType\" style=\"visibility:hidden\">RepeatPattern</span></a></li>\n  <li><a class=\"reference\" href=\"#patternStretchBorder%2Cint%2Cint%2Cint%2Cint\"\n    title=\"patternStretchBorder(w, h: int; nx = 2; ny = 3): MosaicPattern\"><wbr />pattern<wbr />Stretch<wbr />Border<span class=\"attachedType\" style=\"visibility:hidden\">MosaicPattern</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"MosaicPattern\"></a>\n<dt><pre><a href=\"mosaic.html#MosaicPattern\"><span class=\"Identifier\">MosaicPattern</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Mosaic\"></a>\n<dt><pre><a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">fSurface</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span>            <span class=\"Comment\">## Source surface</span>\n  <span class=\"Identifier\">fDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>                    <span class=\"Comment\">## Dimensions of the surface</span>\n  <span class=\"Identifier\">tileDim</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">offset</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>        <span class=\"Comment\">## \\</span>\n                      <span class=\"Comment\">##  Dimensions of a single mosaic tile, and offset from the edge.</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"RepeatPattern\"></a>\n<dt><pre><a href=\"mosaic.html#RepeatPattern\"><span class=\"Identifier\">RepeatPattern</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">rows</span><span class=\"Other\">,</span> <span class=\"Identifier\">cols</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">,</span> <span class=\"Identifier\">data</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span><span class=\"Other\">]</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\nRepeatPattern meaning:<pre class=\"listing\"><span class=\"Identifier\">RepeatPattern</span> <span class=\"Operator\">=</span> <span class=\"Identifier\">seq</span><span class=\"Punctuation\">[</span><span class=\"Keyword\">tuple</span><span class=\"Punctuation\">[</span><span class=\"Identifier\">rows</span><span class=\"Punctuation\">,</span> <span class=\"Identifier\">cols</span><span class=\"Punctuation\">:</span> <span class=\"Identifier\">int</span><span class=\"Punctuation\">,</span> <span class=\"Identifier\">data</span><span class=\"Punctuation\">:</span> <span class=\"Identifier\">seq</span><span class=\"Punctuation\">[</span><span class=\"Identifier\">int</span><span class=\"Punctuation\">]</span><span class=\"Punctuation\">]</span><span class=\"Punctuation\">]</span></pre><ul class=\"simple\"><li><tt class=\"docutils literal\"><span class=\"pre\">rows</span></tt> repeat this row <tt class=\"docutils literal\"><span class=\"pre\">rows</span></tt> times</li>\n<li><tt class=\"docutils literal\"><span class=\"pre\">cols</span></tt> repeat this <tt class=\"docutils literal\"><span class=\"pre\">data</span></tt> sequence <tt class=\"docutils literal\"><span class=\"pre\">cols</span></tt> times,</li>\n</ul>\n<p>gradually increasing the index.</p>\n<ul class=\"simple\"><li><tt class=\"docutils literal\"><span class=\"pre\">data</span></tt> for each <tt class=\"docutils literal\"><span class=\"pre\">item</span></tt> repeat increasing index <tt class=\"docutils literal\"><span class=\"pre\">item</span></tt> times.</li>\n</ul>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Example:</span></tt></p>\n<pre class=\"listing\"><span class=\"Identifier\">patternRepeat</span><span class=\"Punctuation\">(</span><span class=\"Operator\">@</span><span class=\"Punctuation\">[</span>\n  <span class=\"Punctuation\">(</span><span class=\"DecNumber\">1</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">2</span><span class=\"Punctuation\">,</span> <span class=\"Operator\">@</span><span class=\"Punctuation\">[</span><span class=\"DecNumber\">1</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">2</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">1</span><span class=\"Punctuation\">]</span><span class=\"Punctuation\">)</span><span class=\"Punctuation\">,</span>\n  <span class=\"Punctuation\">(</span><span class=\"DecNumber\">2</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">2</span><span class=\"Punctuation\">,</span> <span class=\"Operator\">@</span><span class=\"Punctuation\">[</span><span class=\"DecNumber\">1</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">2</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">1</span><span class=\"Punctuation\">]</span><span class=\"Punctuation\">)</span><span class=\"Punctuation\">,</span>\n  <span class=\"Punctuation\">(</span><span class=\"DecNumber\">1</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">2</span><span class=\"Punctuation\">,</span> <span class=\"Operator\">@</span><span class=\"Punctuation\">[</span><span class=\"DecNumber\">1</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">2</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">1</span><span class=\"Punctuation\">]</span><span class=\"Punctuation\">)</span><span class=\"Punctuation\">,</span>\n<span class=\"Punctuation\">]</span><span class=\"Punctuation\">)</span></pre><p>will return:</p>\n<pre class=\"listing\"><span class=\"Operator\">@</span><span class=\"Punctuation\">[</span>\n  <span class=\"Operator\">@</span><span class=\"Punctuation\">[</span><span class=\"DecNumber\">0</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">1</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">1</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">2</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">3</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">4</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">4</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">5</span><span class=\"Punctuation\">]</span><span class=\"Punctuation\">,</span>\n  <span class=\"Operator\">@</span><span class=\"Punctuation\">[</span><span class=\"DecNumber\">6</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">7</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">7</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">8</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">9</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">10</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">10</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">11</span><span class=\"Punctuation\">]</span><span class=\"Punctuation\">,</span>\n  <span class=\"Operator\">@</span><span class=\"Punctuation\">[</span><span class=\"DecNumber\">6</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">7</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">7</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">8</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">9</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">10</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">10</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">11</span><span class=\"Punctuation\">]</span><span class=\"Punctuation\">,</span>\n  <span class=\"Operator\">@</span><span class=\"Punctuation\">[</span><span class=\"DecNumber\">12</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">13</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">13</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">14</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">15</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">16</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">16</span><span class=\"Punctuation\">,</span> <span class=\"DecNumber\">17</span><span class=\"Punctuation\">]</span>\n<span class=\"Punctuation\">]</span></pre>\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,Mosaic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">mosaic</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,Mosaic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">mosaic</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,Mosaic,string,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">mosaic</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">tileDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load <tt class=\"docutils literal\"><span class=\"pre\">mosaic</span></tt> graphic source from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">tileDim</span></tt> dimensions of a single mosaic tile.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">offset</span></tt> offset from the edge.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, or <cite>false</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"load,Mosaic,ptr.RWops,Dim,Dim,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">mosaic</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">tileDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newMosaic,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newMosaic</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newMosaic,string,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newMosaic</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">tileDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Create a new Mosaic and load tileset from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">tileDim</span></tt> the size of a single tile.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">offset</span></tt>  offset from the edge of the tileset. </p>\n\n\n</dd>\n<a id=\"newMosaic,ptr.RWops,Dim,Dim,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newMosaic</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">tileDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"dim,Mosaic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">dim</span><span class=\"Other\">(</span><span class=\"Identifier\">mosaic</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"renderSurface,Mosaic,MosaicPattern\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderSurface</span><span class=\"Other\">(</span><span class=\"Identifier\">mosaic</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pattern</span><span class=\"Other\">:</span> <a href=\"mosaic.html#MosaicPattern\"><span class=\"Identifier\">MosaicPattern</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a new <tt class=\"docutils literal\"><span class=\"pre\">Surface</span></tt> created with <tt class=\"docutils literal\"><span class=\"pre\">mosaic</span></tt> tiles by a given <tt class=\"docutils literal\"><span class=\"pre\">pattern</span></tt>. \n\n</dd>\n<a id=\"render,Mosaic,MosaicPattern\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">mosaic</span><span class=\"Other\">:</span> <a href=\"mosaic.html#Mosaic\"><span class=\"Identifier\">Mosaic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pattern</span><span class=\"Other\">:</span> <a href=\"mosaic.html#MosaicPattern\"><span class=\"Identifier\">MosaicPattern</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a new <tt class=\"docutils literal\"><span class=\"pre\">Texture</span></tt> created with <tt class=\"docutils literal\"><span class=\"pre\">mosaic</span></tt> tiles by a given <tt class=\"docutils literal\"><span class=\"pre\">pattern</span></tt>. \n\n</dd>\n<a id=\"patternRepeat,RepeatPattern\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">patternRepeat</span><span class=\"Other\">(</span><span class=\"Identifier\">repeat</span><span class=\"Other\">:</span> <a href=\"mosaic.html#RepeatPattern\"><span class=\"Identifier\">RepeatPattern</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"mosaic.html#MosaicPattern\"><span class=\"Identifier\">MosaicPattern</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Generate a repeating pattern. Useful for generating GUI elements of different sizes with <tt class=\"docutils literal\"><span class=\"pre\">Mosaic</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">See also:</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RepeatPattern</span></tt> type. </p>\n\n\n</dd>\n<a id=\"patternStretchBorder,int,int,int,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">patternStretchBorder</span><span class=\"Other\">(</span><span class=\"Identifier\">w</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">nx</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">2</span><span class=\"Other\">;</span> <span class=\"Identifier\">ny</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">3</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"mosaic.html#MosaicPattern\"><span class=\"Identifier\">MosaicPattern</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Generate a repeating pattern by repeating border items of 3x3 matrix (used for GUI buttons, etc.)</p>\n<p><cite>w</cite>, <cite>h</cite> strethed parts repeat count.</p>\n<p><cite>nx</cite>, <cite>ny</cite>  number of elements in the matrix. </p>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:36 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/nimgame.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>nimgame</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">nimgame</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Game\"\n    title=\"Game = ref object\n  fWindow: sdl.Window\n  fSize: Dim\n  fIcon: sdl.Surface\n  fScene: Scene                ## Current scene\"><wbr />Game<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#8\" id=\"58\">Vars</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#game_2\"\n    title=\"game: Game\"><wbr />game<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CGame\"\n    title=\"free(game: Game)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CGame%2Cint%2Cint%2Cstring%2Cuint32%2Cuint32%2Crange%5B%5D%2Cbool%2Cnil%2Cstring%2Ccint%2Ccint%2Cint\"\n    title=\"init(game: Game; w, h: int; title = &quot;Nimgame2&quot;;\n     bgColor = sdl.Color(r: 0, g: 0, b: 0, a: 255); windowFlags: uint32 = 0;\n     rendererFlags: uint32 = 0x00000002 or 0x00000004;\n     scaleQuality: range[0 .. 2] = 0; integerScale: bool = false;\n     iconSurface: sdl.Surface = nil; icon: string = &quot;&quot;; imageFlags: cint = img.InitPNG;\n     mixerFlags: cint = mix.InitOGG; mixerChannels: int = 32): bool\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#newGame%2C\"\n    title=\"newGame(): Game\"><wbr />new<wbr />Game<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#title%2CGame\"\n    title=\"title(game: Game): string\"><wbr />title<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#title%3D%2CGame%2Cstring\"\n    title=\"title=(game: Game; title: string)\"><wbr />title=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#pos%2CGame\"\n    title=\"pos(game: Game): Coord\"><wbr />pos<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#pos%3D%2CGame%2CCoord\"\n    title=\"pos=(game: Game; pos: Coord)\"><wbr />pos=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#centrify%2CGame\"\n    title=\"centrify(game: Game; centerX = true; centerY = true)\"><wbr />centrify<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#windowSize%2CGame\"\n    title=\"windowSize(game: Game): Dim\"><wbr />window<wbr />Size<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#windowSize%3D%2CGame%2CDim\"\n    title=\"windowSize=(game: Game; dim: Dim)\"><wbr />window<wbr />Size=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#minSize%2CGame\"\n    title=\"minSize(game: Game): Dim\"><wbr />min<wbr />Size<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#minSize%3D%2CGame%2CDim\"\n    title=\"minSize=(game: Game; dim: Dim)\"><wbr />min<wbr />Size=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#maxSize%2CGame\"\n    title=\"maxSize(game: Game): Dim\"><wbr />max<wbr />Size<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#maxSize%3D%2CGame%2CDim\"\n    title=\"maxSize=(game: Game; dim: Dim)\"><wbr />max<wbr />Size=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#setBordered%2CGame%2Cbool\"\n    title=\"setBordered(game: Game; enabled: bool)\"><wbr />set<wbr />Bordered<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#setResizable%2CGame%2Cbool\"\n    title=\"setResizable(game: Game; enabled: bool)\"><wbr />set<wbr />Resizable<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#show%2CGame\"\n    title=\"show(game: Game)\"><wbr />show<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#hide%2CGame\"\n    title=\"hide(game: Game)\"><wbr />hide<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#focus%2CGame\"\n    title=\"focus(game: Game)\"><wbr />focus<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#maximize%2CGame\"\n    title=\"maximize(game: Game)\"><wbr />maximize<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#minimize%2CGame\"\n    title=\"minimize(game: Game)\"><wbr />minimize<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#restore%2CGame\"\n    title=\"restore(game: Game)\"><wbr />restore<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#size%2CGame\"\n    title=\"size(game: Game): Dim\"><wbr />size<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#scale%2CGame\"\n    title=\"scale(game: Game): Coord\"><wbr />scale<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#icon%2CGame\"\n    title=\"icon(game: Game): Surface\"><wbr />icon<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#icon%3D%2CGame%2Cstring\"\n    title=\"icon=(game: Game; icon: string)\"><wbr />icon=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#icon%3D%2CGame%2CSurface\"\n    title=\"icon=(game: Game; surface: Surface)\"><wbr />icon=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#scene%2CGame\"\n    title=\"scene(game: Game): Scene\"><wbr />scene<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#scene%3D%2CGame%2CScene\"\n    title=\"scene=(game: Game; val: Scene)\"><wbr />scene=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#viewport%2CGame\"\n    title=\"viewport(game: Game): Rect\"><wbr />viewport<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#viewport%3D%2CGame%2CRect\"\n    title=\"viewport=(game: Game; rect: Rect)\"><wbr />viewport=<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#resetViewport%2CGame\"\n    title=\"resetViewport(game: Game)\"><wbr />reset<wbr />Viewport<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n  <li><a class=\"reference\" href=\"#run%2CGame\"\n    title=\"run(game: Game)\"><wbr />run<span class=\"attachedType\" style=\"visibility:hidden\">Game</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"audio.html\">audio</a>, <a class=\"reference external\" href=\"draw.html\">draw</a>, <a class=\"reference external\" href=\"input.html\">input</a>, <a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"scene.html\">scene</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Game\"></a>\n<dt><pre><a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span>\n  <span class=\"Identifier\">fWindow</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Window</span>\n  <span class=\"Identifier\">fSize</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>\n  <span class=\"Identifier\">fIcon</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Surface</span>\n  <span class=\"Identifier\">fScene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a>                <span class=\"Comment\">## Current scene</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"8\">\n<h1><a class=\"toc-backref\" href=\"#8\">Vars</a></h1>\n<dl class=\"item\">\n<a id=\"game_2\"></a>\n<dt><pre><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a></pre></dt>\n<dd>\nGlobal game variable\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,Game,int,int,string,uint32,uint32,range[],bool,nil,string,cint,cint,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">w</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">title</span> <span class=\"Other\">=</span> <span class=\"StringLit\">&quot;Nimgame2&quot;</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">bgColor</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Color</span><span class=\"Other\">(</span><span class=\"Identifier\">r</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"DecNumber\">255</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">windowFlags</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">rendererFlags</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0x00000002</span> <span class=\"Keyword\">or</span> <span class=\"DecNumber\">0x00000004</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">scaleQuality</span><span class=\"Other\">:</span> <span class=\"Identifier\">range</span><span class=\"Other\">[</span><span class=\"DecNumber\">0</span> <span class=\"Operator\">..</span> <span class=\"DecNumber\">2</span><span class=\"Other\">]</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">;</span> <span class=\"Identifier\">integerScale</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">iconSurface</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Surface</span> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">;</span> <span class=\"Identifier\">icon</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span class=\"Other\">=</span> <span class=\"StringLit\">&quot;&quot;</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">imageFlags</span><span class=\"Other\">:</span> <span class=\"Identifier\">cint</span> <span class=\"Other\">=</span> <span class=\"Identifier\">img</span><span class=\"Other\">.</span><span class=\"Identifier\">InitPNG</span><span class=\"Other\">;</span> <span class=\"Identifier\">mixerFlags</span><span class=\"Other\">:</span> <span class=\"Identifier\">cint</span> <span class=\"Other\">=</span> <span class=\"Identifier\">mix</span><span class=\"Other\">.</span><span class=\"Identifier\">InitOGG</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">mixerChannels</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">32</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">TimeEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Init game.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">w</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">h</span></tt>      window dimensions</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">title</span></tt>         window title</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">bgColor</span></tt>       window background color</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">windowFlags</span></tt>   sdl window flags</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">rendererFlags</span></tt> sdl renderer flags</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">scaleQuality</span></tt>  scale quality (pixel sampling)</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">integerScale</span></tt>  force integer scale only</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">iconSurface</span></tt>   window icon surface (has priority over <tt class=\"docutils literal\"><span class=\"pre\">icon</span></tt>)</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">icon</span></tt>          window icon file name</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">imageFlags</span></tt>    sdl_image flags</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">mixerFlags</span></tt>    sdl_mixer flags</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">mixerChannels</span></tt> Number of channels to allocate for mixing.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, <cite>false</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"newGame,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newGame</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"title,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">title</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"title=,Game,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">title=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">title</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"pos,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pos</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"pos=,Game,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pos=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"centrify,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">centrify</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">centerX</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">;</span> <span class=\"Identifier\">centerY</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"windowSize,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">windowSize</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> game window dimensions. \n\n</dd>\n<a id=\"windowSize=,Game,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">windowSize=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"minSize,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">minSize</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"minSize=,Game,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">minSize=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"maxSize,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">maxSize</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"maxSize=,Game,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">maxSize=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"setBordered,Game,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setBordered</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">enabled</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"setResizable,Game,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setResizable</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">enabled</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"show,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">show</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"hide,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">hide</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"focus,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">focus</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"maximize,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">maximize</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"minimize,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">minimize</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"restore,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">restore</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"size,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">size</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nGet logical size of the game renderer. \n\n</dd>\n<a id=\"scale,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">scale</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the scale of the game renderer. \n\n</dd>\n<a id=\"icon,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">icon</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> game icon surface. \n\n</dd>\n<a id=\"icon=,Game,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">icon=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">icon</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nLoad new game icon from the <tt class=\"docutils literal\"><span class=\"pre\">icon</span></tt> file name. \n\n</dd>\n<a id=\"icon=,Game,Surface\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">icon=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">surface</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet new game icon surface. \n\n</dd>\n<a id=\"scene,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">scene</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current game scene. \n\n</dd>\n<a id=\"scene=,Game,Scene\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">scene=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet a new game scene. \n\n</dd>\n<a id=\"viewport,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">viewport</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nGet current viewport. \n\n</dd>\n<a id=\"viewport=,Game,Rect\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">viewport=</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rect</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet current viewport. \n\n</dd>\n<a id=\"resetViewport,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">resetViewport</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet default viewport. \n\n</dd>\n<a id=\"run,Game\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">run</span><span class=\"Other\">(</span><span class=\"Identifier\">game</span><span class=\"Other\">:</span> <a href=\"nimgame.html#Game\"><span class=\"Identifier\">Game</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nStart the game. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:37 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/perspectiveimage.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>perspectiveimage</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">perspectiveimage</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#PerspectiveDirection\"\n    title=\"PerspectiveDirection = enum\n  pdHor, pdVer\"><wbr />Perspective<wbr />Direction<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#PerspectiveImage\"\n    title=\"PerspectiveImage = ref object of RootObj\n  fDim: Dim\n  fSurface: Surface            ## Source surface\"><wbr />Perspective<wbr />Image<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CPerspectiveImage\"\n    title=\"free(image: PerspectiveImage)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CPerspectiveImage\"\n    title=\"init(image: PerspectiveImage)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CPerspectiveImage%2Cstring\"\n    title=\"load(image: PerspectiveImage; file: string): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CPerspectiveImage%2Cptr.RWops%2Cbool\"\n    title=\"load(image: PerspectiveImage; src: ptr RWops; freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n  <li><a class=\"reference\" href=\"#newPerspectiveImage%2C\"\n    title=\"newPerspectiveImage(): PerspectiveImage\"><wbr />new<wbr />Perspective<wbr />Image<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n  <li><a class=\"reference\" href=\"#newPerspectiveImage%2Cstring\"\n    title=\"newPerspectiveImage(file: string): PerspectiveImage\"><wbr />new<wbr />Perspective<wbr />Image<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n  <li><a class=\"reference\" href=\"#newPerspectiveImage%2Cptr.RWops%2Cbool\"\n    title=\"newPerspectiveImage(src: ptr RWops; freeSrc: bool = true): PerspectiveImage\"><wbr />new<wbr />Perspective<wbr />Image<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n  <li><a class=\"reference\" href=\"#dim%2CPerspectiveImage\"\n    title=\"dim(image: PerspectiveImage): Dim\"><wbr />dim<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n  <li><a class=\"reference\" href=\"#render%2CPerspectiveImage%2CPerspectiveDirection%2Cint%2Cint%2Cint%2Cfloat\"\n    title=\"render(image: PerspectiveImage; direction: PerspectiveDirection;\n       sizeFrom, sizeTo: int; sizeNormal: int = 0; shift: float = 0.5): Texture\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">PerspectiveImage</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"PerspectiveDirection\"></a>\n<dt><pre><a href=\"perspectiveimage.html#PerspectiveDirection\"><span class=\"Identifier\">PerspectiveDirection</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">pdHor</span><span class=\"Other\">,</span> <span class=\"Identifier\">pdVer</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"PerspectiveImage\"></a>\n<dt><pre><a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">fDim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>\n  <span class=\"Identifier\">fSurface</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span>            <span class=\"Comment\">## Source surface</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,PerspectiveImage\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,PerspectiveImage\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,PerspectiveImage,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nLoad <tt class=\"docutils literal\"><span class=\"pre\">image</span></tt> graphic source from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>. \n\n</dd>\n<a id=\"load,PerspectiveImage,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nLoad <tt class=\"docutils literal\"><span class=\"pre\">image</span></tt> graphic source from a <tt class=\"docutils literal\"><span class=\"pre\">src</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt>. \n\n</dd>\n<a id=\"newPerspectiveImage,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newPerspectiveImage</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newPerspectiveImage,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newPerspectiveImage</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCreate a new PerspectiveImage and load it from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>. \n\n</dd>\n<a id=\"newPerspectiveImage,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newPerspectiveImage</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCreate a new PerspectiveImage and load it from a <tt class=\"docutils literal\"><span class=\"pre\">src</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt>. \n\n</dd>\n<a id=\"dim,PerspectiveImage\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">dim</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render,PerspectiveImage,PerspectiveDirection,int,int,int,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">image</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveImage\"><span class=\"Identifier\">PerspectiveImage</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">direction</span><span class=\"Other\">:</span> <a href=\"perspectiveimage.html#PerspectiveDirection\"><span class=\"Identifier\">PerspectiveDirection</span></a><span class=\"Other\">;</span>\n           <span class=\"Identifier\">sizeFrom</span><span class=\"Other\">,</span> <span class=\"Identifier\">sizeTo</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">sizeNormal</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">;</span> <span class=\"Identifier\">shift</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.5</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p><tt class=\"docutils literal\"><span class=\"pre\">direction</span></tt> (<cite>pdHor</cite> or <cite>pdVer</cite>) direction of perspective axis.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">sizeFrom</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">sizeTo</span></tt> target scaled size (left and right for the <cite>pdHor</cite>, or top and bottom for the <cite>pdVer</cite>).</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">sizeNormal</span></tt> scaled size of the normal axis.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">shift</span></tt> perspective shift (0.5 is center symmetry).</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a new <tt class=\"docutils literal\"><span class=\"pre\">Texture</span></tt> created from the <tt class=\"docutils literal\"><span class=\"pre\">image</span></tt>. </p>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:37 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/plugin/mpeggraphic.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>mpeggraphic</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">mpeggraphic</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#MpegVolume\"\n    title=\"MpegVolume = range[0 .. 100]\"><wbr />Mpeg<wbr />Volume<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#MpegGraphic\"\n    title=\"MpegGraphic = ref object of TextureGraphic\n  fInfo: smpeg.Info\n  fSmpeg: smpeg.Smpeg\n  fFrame: smpeg.Frame\n  fMutex: sdl.Mutex\n  fRect: sdl.Rect\n  fVideo, fAudio, fLoop: bool\n  fVolume: MpegVolume\n  fUpdated: bool\"><wbr />Mpeg<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CMpegGraphic\"\n    title=\"free(graphic: MpegGraphic)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CMpegGraphic%2Cstring\"\n    title=\"load(graphic: MpegGraphic; filename: string): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CMpegGraphic%2Cptr.RWops%2Cbool\"\n    title=\"load(graphic: MpegGraphic; src: ptr RWops; freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#newMpegGraphic%2Cstring\"\n    title=\"newMpegGraphic(filename: string): MpegGraphic\"><wbr />new<wbr />Mpeg<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#newMpegGraphic%2Cptr.RWops%2Cbool\"\n    title=\"newMpegGraphic(src: ptr RWops; freeSrc: bool): MpegGraphic\"><wbr />new<wbr />Mpeg<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#drawMpegGraphic%2CMpegGraphic%2CCoord%2CAngle%2CScale%2CCoord%2CFlip%2CRect\"\n    title=\"drawMpegGraphic(graphic: MpegGraphic; pos: Coord = (0.0, 0.0); angle: Angle = 0.0;\n                scale: Scale = 1.0; center: Coord = (0.0, 0.0); flip: Flip = Flip.none;\n                region: Rect = Rect(x: 0, y: 0, w: 0, h: 0))\"><wbr />draw<wbr />Mpeg<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#video%2CMpegGraphic\"\n    title=\"video(graphic: MpegGraphic): bool\"><wbr />video<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#video%3D%2CMpegGraphic%2Cbool\"\n    title=\"video=(graphic: MpegGraphic; on: bool)\"><wbr />video=<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#audio%2CMpegGraphic\"\n    title=\"audio(graphic: MpegGraphic): bool\"><wbr />audio<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#audio%3D%2CMpegGraphic%2Cbool\"\n    title=\"audio=(graphic: MpegGraphic; on: bool)\"><wbr />audio=<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#playing%2CMpegGraphic\"\n    title=\"playing(graphic: MpegGraphic): bool\"><wbr />playing<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#volume%2CMpegGraphic\"\n    title=\"volume(graphic: MpegGraphic): MpegVolume\"><wbr />volume<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#volume%3D%2CMpegGraphic%2CMpegVolume\"\n    title=\"volume=(graphic: MpegGraphic; volume: MpegVolume)\"><wbr />volume=<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#loop%2CMpegGraphic\"\n    title=\"loop(graphic: MpegGraphic): bool\"><wbr />loop<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#loop%3D%2CMpegGraphic%2Cbool\"\n    title=\"loop=(graphic: MpegGraphic; on: bool)\"><wbr />loop=<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#play%2CMpegGraphic\"\n    title=\"play(graphic: MpegGraphic)\"><wbr />play<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#pause%2CMpegGraphic\"\n    title=\"pause(graphic: MpegGraphic)\"><wbr />pause<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#stop%2CMpegGraphic\"\n    title=\"stop(graphic: MpegGraphic)\"><wbr />stop<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#rewind%2CMpegGraphic\"\n    title=\"rewind(graphic: MpegGraphic)\"><wbr />rewind<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#seek%2CMpegGraphic%2Cint\"\n    title=\"seek(graphic: MpegGraphic; bytes: int)\"><wbr />seek<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#skip%2CMpegGraphic%2Cfloat\"\n    title=\"skip(graphic: MpegGraphic; seconds: float)\"><wbr />skip<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#currentFrame%2CMpegGraphic\"\n    title=\"currentFrame(graphic: MpegGraphic): int\"><wbr />current<wbr />Frame<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#currentTime%2CMpegGraphic\"\n    title=\"currentTime(graphic: MpegGraphic): float\"><wbr />current<wbr />Time<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#totalTime%2CMpegGraphic\"\n    title=\"totalTime(graphic: MpegGraphic): float\"><wbr />total<wbr />Time<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#renderFrame%2CMpegGraphic%2Cint\"\n    title=\"renderFrame(graphic: MpegGraphic; frame: int)\"><wbr />render<wbr />Frame<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#w.e%2CMpegGraphic\"\n    title=\"w(graphic: MpegGraphic): int\"><wbr />w<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#h.e%2CMpegGraphic\"\n    title=\"h(graphic: MpegGraphic): int\"><wbr />h<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#dim.e%2CMpegGraphic\"\n    title=\"dim(graphic: MpegGraphic): Dim\"><wbr />dim<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#draw.e%2CMpegGraphic%2CCoord%2CAngle%2CScale%2CCoord%2CFlip%2CRect\"\n    title=\"draw(graphic: MpegGraphic; pos: Coord = (0.0, 0.0); angle: Angle = 0.0; scale: Scale = 1.0;\n     center: Coord = (0.0, 0.0); flip: Flip = Flip.none;\n     region: Rect = Rect(x: 0, y: 0, w: 0, h: 0))\"><wbr />draw<span class=\"attachedType\" style=\"visibility:hidden\">MpegGraphic</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"><tt class=\"docutils literal\"><span class=\"pre\">Note:</span></tt> mpg123 dynamic library should be available in the system.</p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"texturegraphic.html\">texturegraphic</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"MpegVolume\"></a>\n<dt><pre><a href=\"mpeggraphic.html#MpegVolume\"><span class=\"Identifier\">MpegVolume</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">range</span><span class=\"Other\">[</span><span class=\"DecNumber\">0</span> <span class=\"Operator\">..</span> <span class=\"DecNumber\">100</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"MpegGraphic\"></a>\n<dt><pre><a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a>\n  <span class=\"Identifier\">fInfo</span><span class=\"Other\">:</span> <span class=\"Identifier\">smpeg</span><span class=\"Other\">.</span><span class=\"Identifier\">Info</span>\n  <span class=\"Identifier\">fSmpeg</span><span class=\"Other\">:</span> <span class=\"Identifier\">smpeg</span><span class=\"Other\">.</span><span class=\"Identifier\">Smpeg</span>\n  <span class=\"Identifier\">fFrame</span><span class=\"Other\">:</span> <span class=\"Identifier\">smpeg</span><span class=\"Other\">.</span><span class=\"Identifier\">Frame</span>\n  <span class=\"Identifier\">fMutex</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Mutex</span>\n  <span class=\"Identifier\">fRect</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Rect</span>\n  <span class=\"Identifier\">fVideo</span><span class=\"Other\">,</span> <span class=\"Identifier\">fAudio</span><span class=\"Other\">,</span> <span class=\"Identifier\">fLoop</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>\n  <span class=\"Identifier\">fVolume</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegVolume\"><span class=\"Identifier\">MpegVolume</span></a>\n  <span class=\"Identifier\">fUpdated</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>\n</pre></dt>\n<dd>\n\nSee sdl2/mpeg documentation for the details of implementation.\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,MpegGraphic,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load MPEG movie file.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, <cite>false</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"load,MpegGraphic,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load MPEG movie file.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, <cite>false</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"newMpegGraphic,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newMpegGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newMpegGraphic,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newMpegGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"drawMpegGraphic,MpegGraphic,Coord,Angle,Scale,Coord,Flip,Rect\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">drawMpegGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">1.0</span><span class=\"Other\">;</span> <span class=\"Identifier\">center</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"video,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">video</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"video=,MpegGraphic,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">video=</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">on</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"audio,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">audio</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"audio=,MpegGraphic,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">audio=</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">on</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"playing,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">playing</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"volume,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">volume</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegVolume\"><span class=\"Identifier\">MpegVolume</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"volume=,MpegGraphic,MpegVolume\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">volume=</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">volume</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegVolume\"><span class=\"Identifier\">MpegVolume</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"loop,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">loop</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"loop=,MpegGraphic,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">loop=</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">on</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"play,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">play</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"pause,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pause</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"stop,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">stop</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"rewind,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rewind</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"seek,MpegGraphic,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">seek</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">bytes</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"skip,MpegGraphic,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">skip</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">seconds</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"currentFrame,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">currentFrame</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"currentTime,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">currentTime</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"totalTime,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">totalTime</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"renderFrame,MpegGraphic,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderFrame</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">frame</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"w.e,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">w</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"h.e,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">h</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"dim.e,MpegGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">dim</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"draw.e,MpegGraphic,Coord,Angle,Scale,Coord,Flip,Rect\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">draw</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"mpeggraphic.html#MpegGraphic\"><span class=\"Identifier\">MpegGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">;</span>\n           <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">1.0</span><span class=\"Other\">;</span> <span class=\"Identifier\">center</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">;</span>\n           <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 15:00:52 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/plugin/tar.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>tar</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">tar</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#TarFile\"\n    title=\"TarFile = object\n  data: ptr uint8\n  size: int\n  contents: seq[tuple[name: cstring, size: int, data: ptr uint8]]\"><wbr />Tar<wbr />File<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#contents%2CTarFile\"\n    title=\"contents(tar: TarFile): seq[string]\"><wbr />contents<span class=\"attachedType\" style=\"visibility:hidden\">TarFile</span></a></li>\n  <li><a class=\"reference\" href=\"#contents%2CTarFile%2Cstring%2Cint\"\n    title=\"contents(tar: TarFile; sub: string; pos: int = 0): seq[string]\"><wbr />contents<span class=\"attachedType\" style=\"visibility:hidden\">TarFile</span></a></li>\n  <li><a class=\"reference\" href=\"#close%2CTarFile\"\n    title=\"close(tar: var TarFile)\"><wbr />close<span class=\"attachedType\" style=\"visibility:hidden\">TarFile</span></a></li>\n  <li><a class=\"reference\" href=\"#open%2CTarFile%2Cstring\"\n    title=\"open(tar: var TarFile; filename: string): bool\"><wbr />open<span class=\"attachedType\" style=\"visibility:hidden\">TarFile</span></a></li>\n  <li><a class=\"reference\" href=\"#openz%2CTarFile%2Cstring\"\n    title=\"openz(tar: var TarFile; filename: string): bool\"><wbr />openz<span class=\"attachedType\" style=\"visibility:hidden\">TarFile</span></a></li>\n  <li><a class=\"reference\" href=\"#index%2CTarFile%2Cstring\"\n    title=\"index(tar: TarFile; filename: string): int\"><wbr />index<span class=\"attachedType\" style=\"visibility:hidden\">TarFile</span></a></li>\n  <li><a class=\"reference\" href=\"#read%2CTarFile%2Cstring\"\n    title=\"read(tar: TarFile; filename: string): ptr RWops\"><wbr />read<span class=\"attachedType\" style=\"visibility:hidden\">TarFile</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#exists.t%2CTarFile%2Cstring\"\n    title=\"exists(tar: TarFile; filename: string): bool\"><wbr />exists<span class=\"attachedType\" style=\"visibility:hidden\">TarFile</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"><p>Simple utility for reading TAR archives and loading their contents into <tt class=\"docutils literal\"><span class=\"pre\">sdl.RWops</span></tt>. Based on <tt class=\"docutils literal\"><span class=\"pre\">dxTarRead</span></tt> by Dmitry Hrabrov a.k.a. DeXPeriX.</p>\n<p>Original source link: <a class=\"reference external\" href=\"https://github.com/DeXP/dxTarRead/blob/master/dxTarRead.c\">https://github.com/DeXP/dxTarRead/blob/master/dxTarRead.c</a> </p>\n</p>\n  <div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"TarFile\"></a>\n<dt><pre><a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">object</span>\n  <span class=\"Identifier\">data</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">uint8</span>\n  <span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n  <span class=\"Identifier\">contents</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">cstring</span><span class=\"Other\">,</span> <span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">,</span> <span class=\"Identifier\">data</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">uint8</span><span class=\"Other\">]</span><span class=\"Other\">]</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"contents,TarFile\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">contents</span><span class=\"Other\">(</span><span class=\"Identifier\">tar</span><span class=\"Other\">:</span> <a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a sequence of filenames (including paths) inside the <tt class=\"docutils literal\"><span class=\"pre\">tar</span></tt>. \n\n</dd>\n<a id=\"contents,TarFile,string,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">contents</span><span class=\"Other\">(</span><span class=\"Identifier\">tar</span><span class=\"Other\">:</span> <a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">sub</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a sequence of filenames (including paths), which start with <tt class=\"docutils literal\"><span class=\"pre\">sub</span></tt> string, starting at <tt class=\"docutils literal\"><span class=\"pre\">pos</span></tt> index, inside the <tt class=\"docutils literal\"><span class=\"pre\">tar</span></tt>. Useful for getting all files inside one archived directory. \n\n</dd>\n<a id=\"close,TarFile\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">close</span><span class=\"Other\">(</span><span class=\"Identifier\">tar</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"open,TarFile,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">open</span><span class=\"Other\">(</span><span class=\"Identifier\">tar</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">,</span> <span class=\"Identifier\">IOError</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Open uncompressed TAR archive (eg. &quot;archive.tar&quot;).</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, or <cite>false</cite> otherwise (or if no usable files found inside).</p>\n\n\n</dd>\n<a id=\"openz,TarFile,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">openz</span><span class=\"Other\">(</span><span class=\"Identifier\">tar</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">,</span> <span class=\"Identifier\">IOError</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">OutOfMemError</span><span class=\"Other\">,</span> <span class=\"Identifier\">ZlibStreamError</span><span class=\"Other\">,</span> <span class=\"Identifier\">OverflowError</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Open compressed TAR archive (e.g. &quot;archive.tar.gz&quot;).</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, or <cite>false</cite> otherwise (or if no usable files found inside).</p>\n\n\n</dd>\n<a id=\"index,TarFile,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">index</span><span class=\"Other\">(</span><span class=\"Identifier\">tar</span><span class=\"Other\">:</span> <a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> index of <tt class=\"docutils literal\"><span class=\"pre\">filename</span></tt> in <tt class=\"docutils literal\"><span class=\"pre\">tar</span></tt> file, or <cite>-1</cite> if not found. \n\n</dd>\n<a id=\"read,TarFile,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">read</span><span class=\"Other\">(</span><span class=\"Identifier\">tar</span><span class=\"Other\">:</span> <a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nRead <tt class=\"docutils literal\"><span class=\"pre\">filename</span></tt> from <tt class=\"docutils literal\"><span class=\"pre\">tar</span></tt> and return its content as a new <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt> pointer. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"exists.t,TarFile,string\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">exists</span><span class=\"Other\">(</span><span class=\"Identifier\">tar</span><span class=\"Other\">:</span> <a href=\"tar.html#TarFile\"><span class=\"Identifier\">TarFile</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">filename</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 15:00:53 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/plugin/zzip.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>zzip</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">zzip</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#zzipSeek%2Cptr.RWops%2Cint64%2Ccint\"\n    title=\"zzipSeek(context: ptr RWops; offset: int64; whence: cint): int64\"><wbr />zzip<wbr />Seek<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#zzipRead%2Cptr.RWops%2Cpointer%2Ccsize%2Ccsize\"\n    title=\"zzipRead(context: ptr RWops; buf: pointer; size: csize; maxnum: csize): csize\"><wbr />zzip<wbr />Read<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#zzipWrite%2Cptr.RWops%2Cpointer%2Ccsize%2Ccsize\"\n    title=\"zzipWrite(context: ptr RWops; buf: pointer; size: csize; num: csize): csize\"><wbr />zzip<wbr />Write<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#zzipClose%2Cptr.RWops\"\n    title=\"zzipClose(context: ptr RWops): cint\"><wbr />zzip<wbr />Close<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rwFromZZip%2Cstring%2Cstring\"\n    title=\"rwFromZZip(file, mode: string = &quot;r&quot;): ptr RWops\"><wbr />rw<wbr />From<wbr />ZZip<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"><p>You should be able to drop it in the place of a <tt class=\"docutils literal\"><span class=\"pre\">sdl.rwFromFile()</span></tt>. Then go to <cite>X/share/myapp</cite> and do ```cd graphics &amp;&amp; zip -9r ../graphics.zip .``` and rename the <cite>graphics/</cite> subfolder - and still all your files are found: a filepath like <cite>X/shared/graphics/game/greetings.bmp</cite> will open <cite>X/shared/graphics.zip</cite> and return the zipped file <cite>game/greetings.bmp</cite> in the zip-archive (for reading that is).</p>\n<p>See original code at <a class=\"reference external\" href=\"http://zziplib.sourceforge.net/zzip-sdl-rwops.html\">http://zziplib.sourceforge.net/zzip-sdl-rwops.html</a></p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Note:</span></tt> zzip dynamic library should be available in the system.</p>\n</p>\n  <div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"zzipSeek,ptr.RWops,int64,cint\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">zzipSeek</span><span class=\"Other\">(</span><span class=\"Identifier\">context</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <span class=\"Identifier\">int64</span><span class=\"Other\">;</span> <span class=\"Identifier\">whence</span><span class=\"Other\">:</span> <span class=\"Identifier\">cint</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int64</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">cdecl</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"zzipRead,ptr.RWops,pointer,csize,csize\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">zzipRead</span><span class=\"Other\">(</span><span class=\"Identifier\">context</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">buf</span><span class=\"Other\">:</span> <span class=\"Identifier\">pointer</span><span class=\"Other\">;</span> <span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"Identifier\">csize</span><span class=\"Other\">;</span> <span class=\"Identifier\">maxnum</span><span class=\"Other\">:</span> <span class=\"Identifier\">csize</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">csize</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">cdecl</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"zzipWrite,ptr.RWops,pointer,csize,csize\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">zzipWrite</span><span class=\"Other\">(</span><span class=\"Identifier\">context</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">buf</span><span class=\"Other\">:</span> <span class=\"Identifier\">pointer</span><span class=\"Other\">;</span> <span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"Identifier\">csize</span><span class=\"Other\">;</span> <span class=\"Identifier\">num</span><span class=\"Other\">:</span> <span class=\"Identifier\">csize</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">csize</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">cdecl</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"zzipClose,ptr.RWops\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">zzipClose</span><span class=\"Other\">(</span><span class=\"Identifier\">context</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">cint</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">cdecl</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"rwFromZZip,string,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rwFromZZip</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">,</span> <span class=\"Identifier\">mode</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span class=\"Other\">=</span> <span class=\"StringLit\">&quot;r&quot;</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">OutOfMemError</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 15:00:53 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/private/collider.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>collider</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">collider</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#renderCollider%2CCollider\"\n    title=\"renderCollider(a: Collider)\"><wbr />render<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#updateFarthest%2CPolyCollider\"\n    title=\"updateFarthest(p: PolyCollider)\"><wbr />update<wbr />Farthest<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CGroupCollider%2CEntity\"\n    title=\"init(g: GroupCollider; parent: Entity)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#newGroupCollider%2CEntity\"\n    title=\"newGroupCollider(parent: Entity): GroupCollider\"><wbr />new<wbr />Group<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#checkCollisions%2CEntity%2Cseq%5BEntity%5D\"\n    title=\"checkCollisions(entity: Entity; list: seq[Entity])\"><wbr />check<wbr />Collisions<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#isColliding%2CEntity%2Cseq%5BEntity%5D\"\n    title=\"isColliding(entity: Entity; list: seq[Entity]): bool\"><wbr />is<wbr />Colliding<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#willCollide%2CEntity%2CCoord%2CAngle%2CScale%2Cseq%5BEntity%5D\"\n    title=\"willCollide(entity: Entity; pos: Coord; rot: Angle; scale: Scale; list: seq[Entity]): bool\"><wbr />will<wbr />Collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#collide.e%2CCoord%2CCollider\"\n    title=\"collide(pos: Coord; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CCollider\"\n    title=\"render(a: Collider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CCoord\"\n    title=\"collide(a: Collider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CCollider\"\n    title=\"collide(a1, a2: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CBoxCollider\"\n    title=\"collide(a: Collider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CCircleCollider\"\n    title=\"collide(a: Collider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CLineCollider\"\n    title=\"collide(a: Collider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CPolyCollider\"\n    title=\"collide(a: Collider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CGroupCollider\"\n    title=\"collide(a: Collider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CCoord\"\n    title=\"collide(b: BoxCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CCollider\"\n    title=\"collide(b: BoxCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CPolyCollider\"\n    title=\"collide(b: BoxCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CGroupCollider\"\n    title=\"collide(b: BoxCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CCoord\"\n    title=\"collide(c: CircleCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CCollider\"\n    title=\"collide(c: CircleCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CBoxCollider\"\n    title=\"collide(c: CircleCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CPolyCollider\"\n    title=\"collide(c: CircleCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CGroupCollider\"\n    title=\"collide(c: CircleCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CCoord\"\n    title=\"collide(d: LineCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CCollider\"\n    title=\"collide(d: LineCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CBoxCollider\"\n    title=\"collide(d: LineCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CCircleCollider\"\n    title=\"collide(d: LineCollider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CPolyCollider\"\n    title=\"collide(d: LineCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CGroupCollider\"\n    title=\"collide(d: LineCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CCoord\"\n    title=\"collide(p: PolyCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CCollider\"\n    title=\"collide(p: PolyCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CBoxCollider\"\n    title=\"collide(p: PolyCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CCircleCollider\"\n    title=\"collide(p: PolyCollider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CLineCollider\"\n    title=\"collide(p: PolyCollider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CPolyCollider\"\n    title=\"collide(p1, p2: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CGroupCollider_2\"\n    title=\"collide(p: LineCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CGroupCollider\"\n    title=\"render(g: GroupCollider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CCoord\"\n    title=\"collide(g: GroupCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CCollider\"\n    title=\"collide(g: GroupCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CBoxCollider\"\n    title=\"collide(g: GroupCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CCircleCollider\"\n    title=\"collide(g: GroupCollider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CLineCollider\"\n    title=\"collide(g: GroupCollider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CPolyCollider\"\n    title=\"collide(g: GroupCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#collide.t%2CCoord%2CCoord\"\n    title=\"collide(pos1, pos2: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\">Do not import this file. It is included in <cite>entity.nim</cite> automatically.</p>\n  <div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"renderCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"updateFarthest,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateFarthest</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCall this procedure any time you changed points' coordinates. \n\n</dd>\n<a id=\"init,GroupCollider,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <span class=\"Identifier\">Entity</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newGroupCollider,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newGroupCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <span class=\"Identifier\">Entity</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"checkCollisions,Entity,seq[Entity]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">checkCollisions</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <span class=\"Identifier\">Entity</span><span class=\"Other\">;</span> <span class=\"Identifier\">list</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">Entity</span><span class=\"Other\">]</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nTrigger <tt class=\"docutils literal\"><span class=\"pre\">onCollide</span></tt> method of <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> with a given <tt class=\"docutils literal\"><span class=\"pre\">list</span></tt> of targets. \n\n</dd>\n<a id=\"isColliding,Entity,seq[Entity]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">isColliding</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <span class=\"Identifier\">Entity</span><span class=\"Other\">;</span> <span class=\"Identifier\">list</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">Entity</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> collides with one of the elements in the given <tt class=\"docutils literal\"><span class=\"pre\">list</span></tt>, or <cite>false</cite> if no collisions occurs. \n\n</dd>\n<a id=\"willCollide,Entity,Coord,Angle,Scale,seq[Entity]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">willCollide</span><span class=\"Other\">(</span><span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <span class=\"Identifier\">Entity</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">;</span> <span class=\"Identifier\">rot</span><span class=\"Other\">:</span> <span class=\"Identifier\">Angle</span><span class=\"Other\">;</span> <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <span class=\"Identifier\">Scale</span><span class=\"Other\">;</span> <span class=\"Identifier\">list</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">Entity</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> will collide with one of the elements in the given list, if <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>'s coordinates or dimentsions will change. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"collide.e,Coord,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a1</span><span class=\"Other\">,</span> <span class=\"Identifier\">a2</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p1</span><span class=\"Other\">,</span> <span class=\"Identifier\">p2</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,GroupCollider_2\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">Collider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <span class=\"Identifier\">BoxCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">CircleCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Identifier\">LineCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <span class=\"Identifier\">GroupCollider</span><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <span class=\"Identifier\">PolyCollider</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"collide.t,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">pos1</span><span class=\"Other\">,</span> <span class=\"Identifier\">pos2</span><span class=\"Other\">:</span> <span class=\"Identifier\">Coord</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 15:00:26 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/procgraphic.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>procgraphic</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">procgraphic</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#ProcGraphic\"\n    title=\"ProcGraphic = ref object of Graphic\n  procedure*: proc (graphic: ProcGraphic; pos: Coord; angle: Angle; scale: Scale;\n                  center: Coord; flip: Flip; region: Rect) {.locks: 0.} ## Drawing procedure.\n  dimProcedure*: proc (): Dim {.locks: 0.} ## Dimensions procedure.\"><wbr />Proc<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#newProcGraphic%2C\"\n    title=\"newProcGraphic(): ProcGraphic\"><wbr />new<wbr />Proc<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">ProcGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#drawProcGraphic%2CProcGraphic%2CCoord%2CAngle%2CScale%2CCoord%2CFlip%2CRect\"\n    title=\"drawProcGraphic(graphic: ProcGraphic; pos: Coord = (0.0, 0.0); angle: Angle = 0.0;\n                scale: Scale = 1.0; center: Coord = (0.0, 0.0); flip: Flip = Flip.none;\n                region: Rect = Rect(x: 0, y: 0, w: 0, h: 0))\"><wbr />draw<wbr />Proc<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">ProcGraphic</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#w.e%2CProcGraphic\"\n    title=\"w(graphic: ProcGraphic): int\"><wbr />w<span class=\"attachedType\" style=\"visibility:hidden\">ProcGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#h.e%2CProcGraphic\"\n    title=\"h(graphic: ProcGraphic): int\"><wbr />h<span class=\"attachedType\" style=\"visibility:hidden\">ProcGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#dim.e%2CProcGraphic\"\n    title=\"dim(graphic: ProcGraphic): Dim\"><wbr />dim<span class=\"attachedType\" style=\"visibility:hidden\">ProcGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#draw.e%2CProcGraphic%2CCoord%2CAngle%2CScale%2CCoord%2CFlip%2CRect\"\n    title=\"draw(graphic: ProcGraphic; pos: Coord = (0.0, 0.0); angle: Angle = 0.0; scale: Scale = 1.0;\n     center: Coord = (0.0, 0.0); flip: Flip = Flip.none;\n     region: Rect = Rect(x: 0, y: 0, w: 0, h: 0))\"><wbr />draw<span class=\"attachedType\" style=\"visibility:hidden\">ProcGraphic</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"ProcGraphic\"></a>\n<dt><pre><a href=\"procgraphic.html#ProcGraphic\"><span class=\"Identifier\">ProcGraphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a>\n  <span class=\"Identifier\">procedure</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"procgraphic.html#ProcGraphic\"><span class=\"Identifier\">ProcGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">center</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">locks</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span></span><span class=\"Other\">.}</span></span> <span class=\"Comment\">## Drawing procedure.</span>\n  <span class=\"Identifier\">dimProcedure</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">locks</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span></span><span class=\"Other\">.}</span></span> <span class=\"Comment\">## Dimensions procedure.</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"newProcGraphic,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newProcGraphic</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"procgraphic.html#ProcGraphic\"><span class=\"Identifier\">ProcGraphic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"drawProcGraphic,ProcGraphic,Coord,Angle,Scale,Coord,Flip,Rect\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">drawProcGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"procgraphic.html#ProcGraphic\"><span class=\"Identifier\">ProcGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">1.0</span><span class=\"Other\">;</span> <span class=\"Identifier\">center</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"w.e,ProcGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">w</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"procgraphic.html#ProcGraphic\"><span class=\"Identifier\">ProcGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the width of the <tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt> if available, or <cite>nil</cite> otherwise. \n\n</dd>\n<a id=\"h.e,ProcGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">h</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"procgraphic.html#ProcGraphic\"><span class=\"Identifier\">ProcGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the height of the <tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt> if available, or <cite>nil</cite> otherwise. \n\n</dd>\n<a id=\"dim.e,ProcGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">dim</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"procgraphic.html#ProcGraphic\"><span class=\"Identifier\">ProcGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the <tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt>'s dimensions if available, or <cite>nil</cite> otherwise. \n\n</dd>\n<a id=\"draw.e,ProcGraphic,Coord,Angle,Scale,Coord,Flip,Rect\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">draw</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"procgraphic.html#ProcGraphic\"><span class=\"Identifier\">ProcGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">;</span>\n           <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">1.0</span><span class=\"Other\">;</span> <span class=\"Identifier\">center</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">;</span>\n           <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:38 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/scene.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>scene</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">scene</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Scene\"\n    title=\"Scene = ref object of RootObj\n  fList, fAddList: seq[Entity]\n  camera*, cameraBond*: Entity  ## Camera and its bond Entity\n  cameraBondOffset*: Coord     ## Camera&#x27;s offstet from its bond\"><wbr />Scene<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#init%2CScene\"\n    title=\"init(scene: Scene)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#eventScene%2CScene%2C\"\n    title=\"eventScene(scene: Scene; e: sdl.Event)\"><wbr />event<wbr />Scene<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#renderScene%2CScene\"\n    title=\"renderScene(scene: Scene)\"><wbr />render<wbr />Scene<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#add%2CScene%2CEntity\"\n    title=\"add(scene: Scene; entity: Entity)\"><wbr />add<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#clear%2CScene\"\n    title=\"clear(scene: Scene)\"><wbr />clear<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#contains%2CScene%2CEntity\"\n    title=\"contains(scene: Scene; entity: Entity): bool\"><wbr />contains<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#contains%2CScene%2Cstring\"\n    title=\"contains(scene: Scene; tag: string): bool\"><wbr />contains<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#count%2CScene\"\n    title=\"count(scene: Scene): int\"><wbr />count<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#count%2CScene%2Cstring\"\n    title=\"count(scene: Scene; tag: string): int\"><wbr />count<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#del%2CScene%2CEntity\"\n    title=\"del(scene: Scene; entity: Entity): bool\"><wbr />del<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#del%2CScene%2Cstring\"\n    title=\"del(scene: Scene; tag: string)\"><wbr />del<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#find%2CScene%2Cstring\"\n    title=\"find(scene: Scene; tag: string): Entity\"><wbr />find<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#findAll%2CScene%2Cstring\"\n    title=\"findAll(scene: Scene; tag: string): seq[Entity]\"><wbr />find<wbr />All<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#pop%2CScene\"\n    title=\"pop(scene: Scene): Entity\"><wbr />pop<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#updateScene%2CScene%2Cfloat\"\n    title=\"updateScene(scene: Scene; elapsed: float)\"><wbr />update<wbr />Scene<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#event.e%2CScene%2C\"\n    title=\"event(scene: Scene; e: sdl.Event)\"><wbr />event<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#show.e%2CScene\"\n    title=\"show(scene: Scene)\"><wbr />show<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#hide.e%2CScene\"\n    title=\"hide(scene: Scene)\"><wbr />hide<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CScene\"\n    title=\"render(scene: Scene)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#update.e%2CScene%2Cfloat\"\n    title=\"update(scene: Scene; elapsed: float)\"><wbr />update<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#15\" id=\"65\">Iterators</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#entities.i%2CScene\"\n    title=\"entities(scene: Scene): Entity\"><wbr />entities<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n  <li><a class=\"reference\" href=\"#entities.i%2CScene%2Cstring\"\n    title=\"entities(scene: Scene; tag: string): Entity\"><wbr />entities<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#bindCameraTo.t%2CScene%2CEntity%2CCoord\"\n    title=\"bindCameraTo(scene: Scene; bond: Entity; offset: Coord)\"><wbr />bind<wbr />Camera<wbr />To<span class=\"attachedType\" style=\"visibility:hidden\">Scene</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Scene\"></a>\n<dt><pre><a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">fList</span><span class=\"Other\">,</span> <span class=\"Identifier\">fAddList</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">]</span>\n  <span class=\"Identifier\">camera</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">cameraBond</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>  <span class=\"Comment\">## Camera and its bond Entity</span>\n  <span class=\"Identifier\">cameraBondOffset</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a>     <span class=\"Comment\">## Camera's offstet from its bond</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"init,Scene\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"eventScene,Scene,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">eventScene</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"renderScene,Scene\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderScene</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default scene render procedure.</p>\n<p>Call it from your scene render method. </p>\n\n\n</dd>\n<a id=\"add,Scene,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">add</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nAdd a new <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> to the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n<a id=\"clear,Scene\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">clear</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nRemove all entities from the scene. \n\n</dd>\n<a id=\"contains,Scene,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">contains</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt> has the <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"contains,Scene,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">contains</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">tag</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt> has an entity with <tt class=\"docutils literal\"><span class=\"pre\">tag</span></tt>, or <cite>false</cite> otherwise. \n\n</dd>\n<a id=\"count,Scene\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">count</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the number of entities in the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n<a id=\"count,Scene,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">count</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">tag</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the number of entities with <tt class=\"docutils literal\"><span class=\"pre\">tag</span></tt> in the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n<a id=\"del,Scene,Entity\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">del</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">entity</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Delete <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> from the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> if <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> was deleted, or <cite>false</cite> if there is no such <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt> in the scene. </p>\n\n\n</dd>\n<a id=\"del,Scene,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">del</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">tag</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDelete all entities with <tt class=\"docutils literal\"><span class=\"pre\">tag</span></tt> from the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n<a id=\"find,Scene,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">find</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">tag</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the first entity with <tt class=\"docutils literal\"><span class=\"pre\">tag</span></tt> in the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>, or <cite>nil</cite> otherwise. \n\n</dd>\n<a id=\"findAll,Scene,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">findAll</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">tag</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">]</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a sequence of all entities with <tt class=\"docutils literal\"><span class=\"pre\">tag</span></tt> in the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>, or an empty sequence if no such entities are found. \n\n</dd>\n<a id=\"pop,Scene\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">pop</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the top entity and remove it from the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n<a id=\"updateScene,Scene,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateScene</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Default scene update procedure.</p>\n<p>Call it from your scene update method. </p>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"event.e,Scene,\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">event</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Event</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"show.e,Scene\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">show</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCalled when <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt> is set in <tt class=\"docutils literal\"><span class=\"pre\">Game</span></tt>. \n\n</dd>\n<a id=\"hide.e,Scene\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">hide</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nCalled when <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt> is replaced by other one in <tt class=\"docutils literal\"><span class=\"pre\">Game</span></tt>. \n\n</dd>\n<a id=\"render.e,Scene\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"update.e,Scene,float\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">update</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">base</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"15\">\n<h1><a class=\"toc-backref\" href=\"#15\">Iterators</a></h1>\n<dl class=\"item\">\n<a id=\"entities.i,Scene\"></a>\n<dt><pre><span class=\"Keyword\">iterator</span> <span class=\"Identifier\">entities</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nIterate through all entities in the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n<a id=\"entities.i,Scene,string\"></a>\n<dt><pre><span class=\"Keyword\">iterator</span> <span class=\"Identifier\">entities</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">tag</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nIterate throught entities with <tt class=\"docutils literal\"><span class=\"pre\">tag</span></tt> in the <tt class=\"docutils literal\"><span class=\"pre\">scene</span></tt>. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"bindCameraTo.t,Scene,Entity,Coord\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">bindCameraTo</span><span class=\"Other\">(</span><span class=\"Identifier\">scene</span><span class=\"Other\">:</span> <a href=\"scene.html#Scene\"><span class=\"Identifier\">Scene</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">bond</span><span class=\"Other\">:</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\nBind the camera to the movement of the specific <tt class=\"docutils literal\"><span class=\"pre\">entity</span></tt>. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:38 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/settings.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>settings</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">settings</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#8\" id=\"58\">Vars</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#background\"\n    title=\"background: sdl.Color\"><wbr />background<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#renderer\"\n    title=\"renderer: sdl.Renderer\"><wbr />renderer<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#gameRunning\"\n    title=\"gameRunning: bool\"><wbr />game<wbr />Running<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#gamePaused\"\n    title=\"gamePaused: bool\"><wbr />game<wbr />Paused<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#showInfo\"\n    title=\"showInfo: bool\"><wbr />show<wbr />Info<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#fpsLimit\"\n    title=\"fpsLimit: int\"><wbr />fps<wbr />Limit<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#colliderOutline\"\n    title=\"colliderOutline: bool\"><wbr />collider<wbr />Outline<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#colliderOutlineColor\"\n    title=\"colliderOutlineColor: sdl.Color\"><wbr />collider<wbr />Outline<wbr />Color<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#updateInterval\"\n    title=\"updateInterval: int\"><wbr />update<wbr />Interval<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"8\">\n<h1><a class=\"toc-backref\" href=\"#8\">Vars</a></h1>\n<dl class=\"item\">\n<a id=\"background\"></a>\n<dt><pre><span class=\"Identifier\">background</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Color</span></pre></dt>\n<dd>\nScreen clearing color\n\n</dd>\n<a id=\"renderer\"></a>\n<dt><pre><span class=\"Identifier\">renderer</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Renderer</span></pre></dt>\n<dd>\nGame renderer pointer\n\n</dd>\n<a id=\"gameRunning\"></a>\n<dt><pre><span class=\"Identifier\">gameRunning</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nIf <cite>false</cite> - break main loop\n\n</dd>\n<a id=\"gamePaused\"></a>\n<dt><pre><span class=\"Identifier\">gamePaused</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nIf <cite>true</cite> - do not update current scene\n\n</dd>\n<a id=\"showInfo\"></a>\n<dt><pre><span class=\"Identifier\">showInfo</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nShow info panel\n\n</dd>\n<a id=\"fpsLimit\"></a>\n<dt><pre><span class=\"Identifier\">fpsLimit</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\nLimit frames per second to <tt class=\"docutils literal\"><span class=\"pre\">fpsLimit</span></tt>,\nif <cite>0</cite> - no limit\n\n</dd>\n<a id=\"colliderOutline\"></a>\n<dt><pre><span class=\"Identifier\">colliderOutline</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\nShow collider outlines\n\n</dd>\n<a id=\"colliderOutlineColor\"></a>\n<dt><pre><span class=\"Identifier\">colliderOutlineColor</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Color</span></pre></dt>\n<dd>\nColor of collider outlines\n\n</dd>\n<a id=\"updateInterval\"></a>\n<dt><pre><span class=\"Identifier\">updateInterval</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">update()</span></tt> is called each <tt class=\"docutils literal\"><span class=\"pre\">updateInterval</span></tt> ms.\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:39 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/textfield.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>textfield</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">textfield</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#TextField\"\n    title=\"TextField = ref object of TextGraphic\n  fActive: bool\n  fCursorIndex: int\n  cursor*: string\n  limit*: int\"><wbr />Text<wbr />Field<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#init%2CTextField%2CFont\"\n    title=\"init(tf: TextField; font: Font)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#newTextField%2CFont\"\n    title=\"newTextField(font: Font): TextField\"><wbr />new<wbr />Text<wbr />Field<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#text%2CTextField\"\n    title=\"text(tf: TextField): string\"><wbr />text<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#text%3D%2CTextField%2Cstring\"\n    title=\"text=(tf: TextField; val: string)\"><wbr />text=<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#bs%2CTextField\"\n    title=\"bs(tf: TextField; index = -1)\"><wbr />bs<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#del%2CTextField\"\n    title=\"del(tf: TextField; index = -1)\"><wbr />del<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#add%2CTextField%2Cstring\"\n    title=\"add(tf: TextField; str: string; index = -1)\"><wbr />add<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#left%2CTextField\"\n    title=\"left(tf: TextField)\"><wbr />left<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#right%2CTextField\"\n    title=\"right(tf: TextField)\"><wbr />right<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#toFirst%2CTextField\"\n    title=\"toFirst(tf: TextField)\"><wbr />to<wbr />First<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#toLast%2CTextField\"\n    title=\"toLast(tf: TextField)\"><wbr />to<wbr />Last<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#activate%2CTextField\"\n    title=\"activate(tf: TextField)\"><wbr />activate<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#deactivate%2CTextField\"\n    title=\"deactivate(tf: TextField)\"><wbr />deactivate<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#draw%2CTextField%2CCoord\"\n    title=\"draw(tf: TextField; pos: Coord)\"><wbr />draw<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#isActive.t%2CTextField\"\n    title=\"isActive(tf: TextField): bool\"><wbr />is<wbr />Active<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n  <li><a class=\"reference\" href=\"#len.t%2CTextField\"\n    title=\"len(tf: TextField): int\"><wbr />len<span class=\"attachedType\" style=\"visibility:hidden\">TextField</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"font.html\">font</a>, <a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"textgraphic.html\">textgraphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"TextField\"></a>\n<dt><pre><a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a>\n  <span class=\"Identifier\">fActive</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>\n  <span class=\"Identifier\">fCursorIndex</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n  <span class=\"Identifier\">cursor</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span>\n  <span class=\"Identifier\">limit</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"init,TextField,Font\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTextField,Font\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTextField</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"text,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">text</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"text=,TextField,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">text=</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"bs,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">bs</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">index</span> <span class=\"Other\">=</span> <span class=\"Operator\">-</span><span class=\"DecNumber\">1</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nBackspace text action. \n\n</dd>\n<a id=\"del,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">del</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">index</span> <span class=\"Other\">=</span> <span class=\"Operator\">-</span><span class=\"DecNumber\">1</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDelete text action. \n\n</dd>\n<a id=\"add,TextField,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">add</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">str</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">index</span> <span class=\"Other\">=</span> <span class=\"Operator\">-</span><span class=\"DecNumber\">1</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nAdd text action. \n\n</dd>\n<a id=\"left,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">left</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nMove cursor to the left. \n\n</dd>\n<a id=\"right,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">right</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nMove cursor to the right. \n\n</dd>\n<a id=\"toFirst,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">toFirst</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nMove cursor to the beginning. \n\n</dd>\n<a id=\"toLast,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">toLast</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nMove cursor to the end. \n\n</dd>\n<a id=\"activate,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">activate</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nActivate text field. \n\n</dd>\n<a id=\"deactivate,TextField\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">deactivate</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDeactivate text field. \n\n</dd>\n<a id=\"draw,TextField,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">draw</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"isActive.t,TextField\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">isActive</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"len.t,TextField\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">len</span><span class=\"Other\">(</span><span class=\"Identifier\">tf</span><span class=\"Other\">:</span> <a href=\"textfield.html#TextField\"><span class=\"Identifier\">TextField</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:39 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/textgraphic.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>textgraphic</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">textgraphic</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#TextGraphic\"\n    title=\"TextGraphic = ref object of TextureGraphic\n  fLines: seq[string]\n  fAlign: TextAlign\n  fColor: Color\n  fFont: Font\"><wbr />Text<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CTextGraphic\"\n    title=\"free(text: TextGraphic)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CTextGraphic%2CFont\"\n    title=\"init(text: TextGraphic; font: Font)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#newTextGraphic%2CFont\"\n    title=\"newTextGraphic(font: Font = nil): TextGraphic\"><wbr />new<wbr />Text<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#update%2CTextGraphic\"\n    title=\"update(text: TextGraphic)\"><wbr />update<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#align%2CTextGraphic\"\n    title=\"align(text: TextGraphic): TextAlign\"><wbr />align<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#align%3D%2CTextGraphic%2CTextAlign\"\n    title=\"align=(text: TextGraphic; val: TextAlign)\"><wbr />align=<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#color%2CTextGraphic\"\n    title=\"color(text: TextGraphic): Color\"><wbr />color<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#color%3D%2CTextGraphic%2CColor\"\n    title=\"color=(text: TextGraphic; val: Color)\"><wbr />color=<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#font%2CTextGraphic\"\n    title=\"font(text: TextGraphic): Font\"><wbr />font<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#font%3D%2CTextGraphic%2CFont\"\n    title=\"font=(text: TextGraphic; val: Font)\"><wbr />font=<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#lines%2CTextGraphic\"\n    title=\"lines(text: TextGraphic): seq[string]\"><wbr />lines<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#lines%3D%2CTextGraphic%2CopenArray%5Bstring%5D\"\n    title=\"lines=(text: TextGraphic; lines: openArray[string])\"><wbr />lines=<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#text%2CTextGraphic\"\n    title=\"text(text: TextGraphic): string\"><wbr />text<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#setText%2CTextGraphic%2Cstring%2Cint%2Cset%5Bchar%5D\"\n    title=\"setText(text: TextGraphic; val: string; width: int = 0; seps: set[char] = Whitespace)\"><wbr />set<wbr />Text<span class=\"attachedType\" style=\"visibility:hidden\">TextGraphic</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"font.html\">font</a>, <a class=\"reference external\" href=\"texturegraphic.html\">texturegraphic</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"TextGraphic\"></a>\n<dt><pre><a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a>\n  <span class=\"Identifier\">fLines</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span>\n  <span class=\"Identifier\">fAlign</span><span class=\"Other\">:</span> <a href=\"types.html#TextAlign\"><span class=\"Identifier\">TextAlign</span></a>\n  <span class=\"Identifier\">fColor</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span>\n  <span class=\"Identifier\">fFont</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,TextGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,TextGraphic,Font\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTextGraphic,Font\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTextGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">nil</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"update,TextGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">update</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"align,TextGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">align</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#TextAlign\"><span class=\"Identifier\">TextAlign</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"align=,TextGraphic,TextAlign\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">align=</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"types.html#TextAlign\"><span class=\"Identifier\">TextAlign</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"color,TextGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">color</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"color=,TextGraphic,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">color=</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n                                        <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"font,TextGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">font</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"font=,TextGraphic,Font\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">font=</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"font.html#Font\"><span class=\"Identifier\">Font</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n                                      <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"lines,TextGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">lines</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"lines=,TextGraphic,openArray[string]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">lines=</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">lines</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">]</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"text,TextGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">text</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">lines</span></tt>, joined in one string. \n\n</dd>\n<a id=\"setText,TextGraphic,string,int,set[char]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setText</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">width</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">;</span> <span class=\"Identifier\">seps</span><span class=\"Other\">:</span> <span class=\"Identifier\">set</span><span class=\"Other\">[</span><span class=\"Identifier\">char</span><span class=\"Other\">]</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Whitespace</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet the text <tt class=\"docutils literal\"><span class=\"pre\">lines</span></tt>, wrapping each <tt class=\"docutils literal\"><span class=\"pre\">width</span></tt> characters. \n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:40 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/textureatlas.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>textureatlas</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">textureatlas</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#TextureAtlas\"\n    title=\"TextureAtlas = OrderedTableRef[string, TextureGraphic]\"><wbr />Texture<wbr />Atlas<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CTextureAtlas\"\n    title=\"free(atlas: TextureAtlas)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">TextureAtlas</span></a></li>\n  <li><a class=\"reference\" href=\"#newTextureAtlas%2Cstring%2Cstring%2Cint\"\n    title=\"newTextureAtlas(imagefile, mapfile: string; count: int = 64): TextureAtlas\"><wbr />new<wbr />Texture<wbr />Atlas<span class=\"attachedType\" style=\"visibility:hidden\">TextureAtlas</span></a></li>\n  <li><a class=\"reference\" href=\"#newTextureAtlas%2Cptr.RWops%2Cptr.RWops%2Cint%2Cbool%2Cbool\"\n    title=\"newTextureAtlas(imageSrc, mapSrc: ptr RWops; count: int = 64; freeImageSrc: bool = true;\n                freeMapSrc: bool = true): TextureAtlas\"><wbr />new<wbr />Texture<wbr />Atlas<span class=\"attachedType\" style=\"visibility:hidden\">TextureAtlas</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"texturegraphic.html\">texturegraphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"TextureAtlas\"></a>\n<dt><pre><a href=\"textureatlas.html#TextureAtlas\"><span class=\"Identifier\">TextureAtlas</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">OrderedTableRef</span><span class=\"Other\">[</span><span class=\"Identifier\">string</span><span class=\"Other\">,</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,TextureAtlas\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">atlas</span><span class=\"Other\">:</span> <a href=\"textureatlas.html#TextureAtlas\"><span class=\"Identifier\">TextureAtlas</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTextureAtlas,string,string,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTextureAtlas</span><span class=\"Other\">(</span><span class=\"Identifier\">imagefile</span><span class=\"Other\">,</span> <span class=\"Identifier\">mapfile</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">count</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">64</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"textureatlas.html#TextureAtlas\"><span class=\"Identifier\">TextureAtlas</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">CsvError</span><span class=\"Other\">,</span> <span class=\"Identifier\">Exception</span><span class=\"Other\">,</span> <span class=\"Identifier\">OverflowError</span><span class=\"Other\">,</span> <span class=\"Identifier\">ValueError</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">,</span> <span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Create a new <tt class=\"docutils literal\"><span class=\"pre\">TextureAtlas</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">imagefile</span></tt> file containging the image atlas.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">mapfile</span></tt> CSV file containing atlas mapping in a format of:</p>\n<blockquote><p>name, x, y, w, h ...</p></blockquote>\n<p><tt class=\"docutils literal\"><span class=\"pre\">count</span></tt> expected mappings count. </p>\n\n\n</dd>\n<a id=\"newTextureAtlas,ptr.RWops,ptr.RWops,int,bool,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTextureAtlas</span><span class=\"Other\">(</span><span class=\"Identifier\">imageSrc</span><span class=\"Other\">,</span> <span class=\"Identifier\">mapSrc</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">count</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">64</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">freeImageSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeMapSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"textureatlas.html#TextureAtlas\"><span class=\"Identifier\">TextureAtlas</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">,</span> <span class=\"Identifier\">CsvError</span><span class=\"Other\">,</span> <span class=\"Identifier\">OverflowError</span><span class=\"Other\">,</span> <span class=\"Identifier\">ValueError</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">,</span> <span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:40 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/texturegraphic.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>texturegraphic</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">texturegraphic</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#TextureGraphic\"\n    title=\"TextureGraphic = ref object of Graphic\n  fTexture: sdl.Texture\n  fFormat: uint32\n  fSize: Dim\"><wbr />Texture<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#freeTexture%2CTextureGraphic\"\n    title=\"freeTexture(graphic: TextureGraphic)\"><wbr />free<wbr />Texture<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#free%2CTextureGraphic\"\n    title=\"free(graphic: TextureGraphic)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CTextureGraphic\"\n    title=\"init(graphic: TextureGraphic)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#updateTexture%2CTextureGraphic\"\n    title=\"updateTexture(graphic: TextureGraphic): bool\"><wbr />update<wbr />Texture<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#format%2CTextureGraphic\"\n    title=\"format(graphic: TextureGraphic): uint32\"><wbr />format<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CTextureGraphic%2Cstring\"\n    title=\"load(graphic: TextureGraphic; file: string): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CTextureGraphic%2Cptr.RWops%2Cbool\"\n    title=\"load(graphic: TextureGraphic; rw: ptr RWops; freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#assignTexture%2CTextureGraphic%2CTexture%2Cbool\"\n    title=\"assignTexture(graphic: TextureGraphic; texture: Texture; freeCurrent: bool = true): bool\"><wbr />assign<wbr />Texture<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#texture%2CTextureGraphic\"\n    title=\"texture(graphic: TextureGraphic): sdl.Texture\"><wbr />texture<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#newTextureGraphic%2C\"\n    title=\"newTextureGraphic(): TextureGraphic\"><wbr />new<wbr />Texture<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#newTextureGraphic%2Cstring\"\n    title=\"newTextureGraphic(file: string): TextureGraphic\"><wbr />new<wbr />Texture<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#newTextureGraphic%2Cptr.RWops%2Cbool\"\n    title=\"newTextureGraphic(src: ptr RWops; freeSrc: bool = true): TextureGraphic\"><wbr />new<wbr />Texture<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#newTextureGraphic%2CTexture\"\n    title=\"newTextureGraphic(texture: Texture): TextureGraphic\"><wbr />new<wbr />Texture<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#drawTextureGraphic%2CTextureGraphic%2CCoord%2CAngle%2CScale%2CCoord%2CFlip%2CRect\"\n    title=\"drawTextureGraphic(graphic: TextureGraphic; pos: Coord = (0.0, 0.0);\n                   angle: Angle = 0.0; scale: Scale = 1.0; center: Coord = (0.0, 0.0);\n                   flip: Flip = Flip.none;\n                   region: Rect = Rect(x: 0, y: 0, w: 0, h: 0))\"><wbr />draw<wbr />Texture<wbr />Graphic<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#drawTiled%2CTextureGraphic%2CRect%2CRect\"\n    title=\"drawTiled(graphic: TextureGraphic; rect: Rect;\n          region: Rect = Rect(x: 0, y: 0, w: 0, h: 0); reverseX = false; reverseY = false)\"><wbr />draw<wbr />Tiled<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#colorMod%2CTextureGraphic\"\n    title=\"colorMod(graphic: TextureGraphic): Color\"><wbr />color<wbr />Mod<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#colorMod%3D%2CTextureGraphic%2CColor\"\n    title=\"colorMod=(graphic: TextureGraphic; color: Color)\"><wbr />color<wbr />Mod=<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#alphaMod%2CTextureGraphic\"\n    title=\"alphaMod(graphic: TextureGraphic): uint8\"><wbr />alpha<wbr />Mod<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#alphaMod%3D%2CTextureGraphic%2Cuint8\"\n    title=\"alphaMod=(graphic: TextureGraphic; alpha: uint8)\"><wbr />alpha<wbr />Mod=<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#blendMod%2CTextureGraphic\"\n    title=\"blendMod(graphic: TextureGraphic): Blend\"><wbr />blend<wbr />Mod<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#blendMod%3D%2CTextureGraphic%2CBlend\"\n    title=\"blendMod=(graphic: TextureGraphic; blend: Blend)\"><wbr />blend<wbr />Mod=<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#w.e%2CTextureGraphic\"\n    title=\"w(graphic: TextureGraphic): int\"><wbr />w<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#h.e%2CTextureGraphic\"\n    title=\"h(graphic: TextureGraphic): int\"><wbr />h<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#dim.e%2CTextureGraphic\"\n    title=\"dim(graphic: TextureGraphic): Dim\"><wbr />dim<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n  <li><a class=\"reference\" href=\"#draw.e%2CTextureGraphic%2CCoord%2CAngle%2CScale%2CCoord%2CFlip%2CRect\"\n    title=\"draw(graphic: TextureGraphic; pos: Coord = (0.0, 0.0); angle: Angle = 0.0;\n     scale: Scale = 1.0; center: Coord = (0.0, 0.0); flip: Flip = Flip.none;\n     region: Rect = Rect(x: 0, y: 0, w: 0, h: 0))\"><wbr />draw<span class=\"attachedType\" style=\"visibility:hidden\">TextureGraphic</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"TextureGraphic\"></a>\n<dt><pre><a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"graphic.html#Graphic\"><span class=\"Identifier\">Graphic</span></a>\n  <span class=\"Identifier\">fTexture</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Texture</span>\n  <span class=\"Identifier\">fFormat</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span>\n  <span class=\"Identifier\">fSize</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"freeTexture,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">freeTexture</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"free,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"updateTexture,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateTexture</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"format,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">format</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,TextureGraphic,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load texture from <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, <cite>false</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"load,TextureGraphic,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rw</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load texture from <tt class=\"docutils literal\"><span class=\"pre\">src</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, <cite>false</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"assignTexture,TextureGraphic,Texture,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">assignTexture</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">texture</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">freeCurrent</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Assign already created <tt class=\"docutils literal\"><span class=\"pre\">texture</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">freeCurrent</span></tt> Free the currently assigned texture. Set to <cite>false</cite> if it used by other objects.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">ATTENTION!</span></tt> The <tt class=\"docutils literal\"><span class=\"pre\">texture</span></tt> will be destroyed on <tt class=\"docutils literal\"><span class=\"pre\">free()</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> on success, <cite>false</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"texture,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">texture</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">Texture</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDirect access to the <tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt>'s texture. Be careful. \n\n</dd>\n<a id=\"newTextureGraphic,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTextureGraphic</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTextureGraphic,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTextureGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTextureGraphic,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTextureGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTextureGraphic,Texture\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTextureGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">texture</span><span class=\"Other\">:</span> <span class=\"Identifier\">Texture</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"drawTextureGraphic,TextureGraphic,Coord,Angle,Scale,Coord,Flip,Rect\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">drawTextureGraphic</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span>\n                       <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">;</span> <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">1.0</span><span class=\"Other\">;</span>\n                       <span class=\"Identifier\">center</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">;</span>\n                       <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Draw procedure.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">pos</span></tt> Draw coordinates.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">angle</span></tt> Rotation angle in degrees.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">scale</span></tt> Draw scale. <cite>1.0</cite> for original size.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">center</span></tt> Center of rendering, rotation, and scaling.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">flip</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RendererFlip</span></tt> value, could be set to: <tt class=\"docutils literal\"><span class=\"pre\">FlipNone</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">FlipHorizontal</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">FlipVertical</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">region</span></tt> Source texture region to draw. </p>\n\n\n</dd>\n<a id=\"drawTiled,TextureGraphic,Rect,Rect\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">drawTiled</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rect</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">;</span>\n              <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">reverseX</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">;</span> <span class=\"Identifier\">reverseY</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Repeatedly draw the <tt class=\"docutils literal\"><span class=\"pre\">graphic</span></tt> to fill the <tt class=\"docutils literal\"><span class=\"pre\">rect</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">region</span></tt> Source texture region to draw.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">reverseX</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">reverseY</span></tt> Drawing progression order. </p>\n\n\n</dd>\n<a id=\"colorMod,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">colorMod</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current color modifier. \n\n</dd>\n<a id=\"colorMod=,TextureGraphic,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">colorMod=</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet a new color modifier. \n\n</dd>\n<a id=\"alphaMod,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">alphaMod</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint8</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current alpha (transparency) modifier. \n\n</dd>\n<a id=\"alphaMod=,TextureGraphic,uint8\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">alphaMod=</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">alpha</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint8</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet a new alpha (transparency) modifier. \n\n</dd>\n<a id=\"blendMod,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">blendMod</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Blend\"><span class=\"Identifier\">Blend</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> current blending mode. \n\n</dd>\n<a id=\"blendMod=,TextureGraphic,Blend\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">blendMod=</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">blend</span><span class=\"Other\">:</span> <a href=\"types.html#Blend\"><span class=\"Identifier\">Blend</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet a new blending mode. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"w.e,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">w</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"h.e,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">h</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"dim.e,TextureGraphic\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">dim</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"draw.e,TextureGraphic,Coord,Angle,Scale,Coord,Flip,Rect\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">draw</span><span class=\"Other\">(</span><span class=\"Identifier\">graphic</span><span class=\"Other\">:</span> <a href=\"texturegraphic.html#TextureGraphic\"><span class=\"Identifier\">TextureGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">;</span>\n           <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">1.0</span><span class=\"Other\">;</span> <span class=\"Identifier\">center</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"FloatNumber\">0.0</span><span class=\"Other\">,</span> <span class=\"FloatNumber\">0.0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">flip</span><span class=\"Other\">:</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span class=\"Other\">=</span> <a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a><span class=\"Other\">.</span><span class=\"Identifier\">none</span><span class=\"Other\">;</span>\n           <span class=\"Identifier\">region</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span> <span class=\"Other\">=</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:41 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/tilemap.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>tilemap</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">tilemap</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#TileShow\"\n    title=\"TileShow = tuple[x: Slice[int], y: Slice[int]]\"><wbr />Tile<wbr />Show<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#TileMap\"\n    title=\"TileMap = ref object of Entity\n  map*: seq[seq[int]]          ## Two-dimensional sequence of tile indexes (y, x)\n  fShow: TileShow              ## Slice of what part of map to show\n  hidden*: seq[int]            ## The list of tile indexes to not render\n  passable*: seq[int]          ## The list of tile indexes without colliders\n  onlyReachableColliders*: bool ## Do not create colliders \\\n                              ## for unreachable tiles\n  tileScale*: Scale ## \\\n                  ## The scaling of individual tiles, mostly used for gap removal. \\\n                  ## Increase on scales vastly different from `1.0`. \\\n                  ## Set to `1.0` if your map isn&#x27;t rotating or scaling.\"><wbr />Tile<wbr />Map<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#TileCollider\"\n    title=\"TileCollider = ref object of BoxCollider\n  value*: int                  ## Tile kind value\n  index*: CoordInt             ## Map coordinates\"><wbr />Tile<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#TileMapCollider\"\n    title=\"TileMapCollider = ref object of Collider\n  map: TileMap\n  tiles: seq[seq[TileCollider]] ## Two-dimensional sequence of colliders \\\n                              ## (y, x)\"><wbr />Tile<wbr />Map<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#10\" id=\"60\">Consts</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#DefaultTileScale\"\n    title=\"DefaultTileScale: Scale = 1.02\"><wbr />Default<wbr />Tile<wbr />Scale<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#init%2CTileMap\"\n    title=\"init(tilemap: TileMap; scaleFix = false)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#newTileMap%2C\"\n    title=\"newTileMap(scaleFix = false): TileMap\"><wbr />new<wbr />Tile<wbr />Map<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#show%2CTileMap\"\n    title=\"show(tilemap: TileMap): TileShow\"><wbr />show<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#show%3D%2CTileMap%2CTileShow\"\n    title=\"show=(tilemap: TileMap; val: TileShow)\"><wbr />show=<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#dimTiles%2CTileMap\"\n    title=\"dimTiles(tilemap: TileMap): Dim\"><wbr />dim<wbr />Tiles<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#dim%2CTileMap\"\n    title=\"dim(tilemap: TileMap): Dim\"><wbr />dim<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#centrify%2CTileMap\"\n    title=\"centrify(tilemap: TileMap; hor = HAlign.center; ver = VAlign.center)\"><wbr />centrify<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#firstTileIndex%2CTileMap%2Cint\"\n    title=\"firstTileIndex(tilemap: TileMap; value: int): CoordInt\"><wbr />first<wbr />Tile<wbr />Index<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#tileIndex%2CTileMap%2CCoord\"\n    title=\"tileIndex(tilemap: TileMap; pos: Coord): CoordInt\"><wbr />tile<wbr />Index<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#tilePos%2CTileMap%2CCoordInt\"\n    title=\"tilePos(tilemap: TileMap; index: CoordInt): Coord\"><wbr />tile<wbr />Pos<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#renderTileMap%2CTileMap\"\n    title=\"renderTileMap(tilemap: TileMap)\"><wbr />render<wbr />Tile<wbr />Map<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CTileCollider%2CTileMap%2CCoord%2CDim%2Cint%2CCoordInt\"\n    title=\"init(t: TileCollider; parent: TileMap; pos: Coord = (0, 0); dim: Dim = (0, 0); value: int;\n     index: CoordInt)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">TileCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#newTileCollider%2CTileMap%2CCoord%2CDim%2Cint%2CCoordInt\"\n    title=\"newTileCollider(parent: TileMap; pos: Coord = (0, 0); dim: Dim = (0, 0); value: int;\n                index: CoordInt): TileCollider\"><wbr />new<wbr />Tile<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CTileMapCollider%2CTileMap%2CCoord%2CDim\"\n    title=\"init(t: TileMapCollider; parent: TileMap; pos: Coord = (0, 0); dim: Dim = (0, 0))\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#newTileMapCollider%2CTileMap%2CCoord%2CDim\"\n    title=\"newTileMapCollider(parent: TileMap; pos: Coord = (0, 0); dim: Dim = (0, 0)): TileMapCollider\"><wbr />new<wbr />Tile<wbr />Map<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#initCollider%2CTileMap\"\n    title=\"initCollider(tilemap: TileMap)\"><wbr />init<wbr />Collider<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#render.e%2CTileMap\"\n    title=\"render(tilemap: TileMap)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CTileMapCollider\"\n    title=\"render(t: TileMapCollider)\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CTileMapCollider%2CCoord\"\n    title=\"collide(t: TileMapCollider; pos: Coord): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CTileMapCollider%2CCollider\"\n    title=\"collide(t: TileMapCollider; a: Collider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCollider%2CTileMapCollider\"\n    title=\"collide(a: Collider; t: TileMapCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CTileMapCollider%2CBoxCollider\"\n    title=\"collide(t: TileMapCollider; b: BoxCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CBoxCollider%2CTileMapCollider\"\n    title=\"collide(b: BoxCollider; t: TileMapCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CTileMapCollider%2CCircleCollider\"\n    title=\"collide(t: TileMapCollider; c: CircleCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CCircleCollider%2CTileMapCollider\"\n    title=\"collide(c: CircleCollider; t: TileMapCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CTileMapCollider%2CLineCollider\"\n    title=\"collide(t: TileMapCollider; d: LineCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CLineCollider%2CTileMapCollider\"\n    title=\"collide(d: LineCollider; t: TileMapCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CTileMapCollider%2CPolyCollider\"\n    title=\"collide(t: TileMapCollider; p: PolyCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CPolyCollider%2CTileMapCollider\"\n    title=\"collide(p: PolyCollider; t: TileMapCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CTileMapCollider%2CGroupCollider\"\n    title=\"collide(t: TileMapCollider; g: GroupCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CGroupCollider%2CTileMapCollider\"\n    title=\"collide(g: GroupCollider; t: TileMapCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n  <li><a class=\"reference\" href=\"#collide.e%2CTileMapCollider%2CTileMapCollider\"\n    title=\"collide(t1, t2: TileMapCollider): bool\"><wbr />collide<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#15\" id=\"65\">Iterators</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#tileIndex.i%2CTileMap%2Cint\"\n    title=\"tileIndex(tilemap: TileMap; value: int): CoordInt\"><wbr />tile<wbr />Index<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#tileColliders.i%2CTileMapCollider\"\n    title=\"tileColliders(t: TileMapCollider): TileCollider\"><wbr />tile<wbr />Colliders<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#tile.t%2CTileMap%2CCoordInt\"\n    title=\"tile(tilemap: TileMap; index: CoordInt): var int\"><wbr />tile<span class=\"attachedType\" style=\"visibility:hidden\">TileMap</span></a></li>\n  <li><a class=\"reference\" href=\"#collisionList.t%2CTileMapCollider%2Ctyped%2Cbool\"\n    title=\"collisionList(t: TileMapCollider; a: typed; first: bool = false): seq[TileCollider]\"><wbr />collision<wbr />List<span class=\"attachedType\" style=\"visibility:hidden\">TileMapCollider</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"graphic.html\">graphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"TileShow\"></a>\n<dt><pre><a href=\"tilemap.html#TileShow\"><span class=\"Identifier\">TileShow</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">Slice</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"Identifier\">Slice</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"TileMap\"></a>\n<dt><pre><a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>\n  <span class=\"Identifier\">map</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span><span class=\"Other\">]</span>          <span class=\"Comment\">## Two-dimensional sequence of tile indexes (y, x)</span>\n  <span class=\"Identifier\">fShow</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileShow\"><span class=\"Identifier\">TileShow</span></a>              <span class=\"Comment\">## Slice of what part of map to show</span>\n  <span class=\"Identifier\">hidden</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span>            <span class=\"Comment\">## The list of tile indexes to not render</span>\n  <span class=\"Identifier\">passable</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">int</span><span class=\"Other\">]</span>          <span class=\"Comment\">## The list of tile indexes without colliders</span>\n  <span class=\"Identifier\">onlyReachableColliders</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Comment\">## Do not create colliders \\</span>\n                              <span class=\"Comment\">## for unreachable tiles</span>\n  <span class=\"Identifier\">tileScale</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Comment\">## \\</span>\n                  <span class=\"Comment\">## The scaling of individual tiles, mostly used for gap removal. \\</span>\n                  <span class=\"Comment\">## Increase on scales vastly different from `1.0`. \\</span>\n                  <span class=\"Comment\">## Set to `1.0` if your map isn't rotating or scaling.</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"TileCollider\"></a>\n<dt><pre><a href=\"tilemap.html#TileCollider\"><span class=\"Identifier\">TileCollider</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a>\n  <span class=\"Identifier\">value</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>                  <span class=\"Comment\">## Tile kind value</span>\n  <span class=\"Identifier\">index</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a>             <span class=\"Comment\">## Map coordinates</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"TileMapCollider\"></a>\n<dt><pre><a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a>\n  <span class=\"Identifier\">map</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a>\n  <span class=\"Identifier\">tiles</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">seq</span><span class=\"Other\">[</span><a href=\"tilemap.html#TileCollider\"><span class=\"Identifier\">TileCollider</span></a><span class=\"Other\">]</span><span class=\"Other\">]</span> <span class=\"Comment\">## Two-dimensional sequence of colliders \\</span>\n                              <span class=\"Comment\">## (y, x)</span>\n  </pre></dt>\n<dd>\nCollider to use with TileMap\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"10\">\n<h1><a class=\"toc-backref\" href=\"#10\">Consts</a></h1>\n<dl class=\"item\">\n<a id=\"DefaultTileScale\"></a>\n<dt><pre><span class=\"Identifier\">DefaultTileScale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"FloatNumber\">1.02</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"init,TileMap\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">scaleFix</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>TileMap initialization.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">scaleFix</span></tt>  set <tt class=\"docutils literal\"><span class=\"pre\">tileScale</span></tt> to <tt class=\"docutils literal\"><span class=\"pre\">DefaultTileScale</span></tt> if <cite>true</cite>, or to <cite>1.0</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"newTileMap,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTileMap</span><span class=\"Other\">(</span><span class=\"Identifier\">scaleFix</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Create a new TileMap.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">scaleFix</span></tt>  set <tt class=\"docutils literal\"><span class=\"pre\">tileScale</span></tt> to <tt class=\"docutils literal\"><span class=\"pre\">DefaultTileScale</span></tt> if <cite>true</cite>, or to <cite>1.0</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"show,TileMap\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">show</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileShow\"><span class=\"Identifier\">TileShow</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a currently shown slices of tiles. \n\n</dd>\n<a id=\"show=,TileMap,TileShow\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">show=</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileShow\"><span class=\"Identifier\">TileShow</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet new values for the shown slices of tiles. \n\n</dd>\n<a id=\"dimTiles,TileMap\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">dimTiles</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> dimensions of the <tt class=\"docutils literal\"><span class=\"pre\">tilemap</span></tt>, calculated from its <tt class=\"docutils literal\"><span class=\"pre\">map</span></tt> (in tiles). \n\n</dd>\n<a id=\"dim,TileMap\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">dim</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> dimensions of the <tt class=\"docutils literal\"><span class=\"pre\">tilemap</span></tt>, calculated from its <tt class=\"docutils literal\"><span class=\"pre\">map</span></tt> (in pixels). \n\n</dd>\n<a id=\"centrify,TileMap\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">centrify</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">hor</span> <span class=\"Other\">=</span> <a href=\"types.html#HAlign\"><span class=\"Identifier\">HAlign</span></a><span class=\"Other\">.</span><span class=\"Identifier\">center</span><span class=\"Other\">;</span> <span class=\"Identifier\">ver</span> <span class=\"Other\">=</span> <a href=\"types.html#VAlign\"><span class=\"Identifier\">VAlign</span></a><span class=\"Other\">.</span><span class=\"Identifier\">center</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Set <tt class=\"docutils literal\"><span class=\"pre\">tilemap</span></tt>'s <tt class=\"docutils literal\"><span class=\"pre\">center</span></tt>, according to the given align.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">hor</span></tt> Horisontal align: left, center, or right</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">ver</span></tt> Vertical align: top, center, or bottom </p>\n\n\n</dd>\n<a id=\"firstTileIndex,TileMap,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">firstTileIndex</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">value</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the first tile index with a specific <tt class=\"docutils literal\"><span class=\"pre\">value</span></tt>. \n\n</dd>\n<a id=\"tileIndex,TileMap,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">tileIndex</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the tile map index of a tile that is located at the given screen position. \n\n</dd>\n<a id=\"tilePos,TileMap,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">tilePos</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">index</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> screen position of a tile with the given tile map index. \n\n</dd>\n<a id=\"renderTileMap,TileMap\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderTileMap</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,TileCollider,TileMap,Coord,Dim,int,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileCollider\"><span class=\"Identifier\">TileCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">value</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span>\n         <span class=\"Identifier\">index</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTileCollider,TileMap,Coord,Dim,int,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTileCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">value</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">index</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileCollider\"><span class=\"Identifier\">TileCollider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,TileMapCollider,TileMap,Coord,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTileMapCollider,TileMap,Coord,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTileMapCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">parent</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">;</span> <span class=\"Identifier\">dim</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Other\">(</span><span class=\"DecNumber\">0</span><span class=\"Other\">,</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Create a <tt class=\"docutils literal\"><span class=\"pre\">TileMapCollider</span></tt> for the <tt class=\"docutils literal\"><span class=\"pre\">parent</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">TileMap</span></tt>.</p>\n<p>Most of the times you should use <tt class=\"docutils literal\"><span class=\"pre\">initCollider()</span></tt> instead.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">pos</span></tt> Collider's relative position. Usually <cite>(0, 0)</cite>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">dim</span></tt> Tile dimensions. </p>\n\n\n</dd>\n<a id=\"initCollider,TileMap\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">initCollider</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nInitialize a collider for the <tt class=\"docutils literal\"><span class=\"pre\">tilemap</span></tt>. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"render.e,TileMap\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"render.e,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,TileMapCollider,Coord\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,TileMapCollider,Collider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,Collider,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"entity.html#Collider\"><span class=\"Identifier\">Collider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,TileMapCollider,BoxCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,BoxCollider,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"entity.html#BoxCollider\"><span class=\"Identifier\">BoxCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,TileMapCollider,CircleCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,CircleCollider,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"entity.html#CircleCollider\"><span class=\"Identifier\">CircleCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,TileMapCollider,LineCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,LineCollider,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"entity.html#LineCollider\"><span class=\"Identifier\">LineCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,TileMapCollider,PolyCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,PolyCollider,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">p</span><span class=\"Other\">:</span> <a href=\"entity.html#PolyCollider\"><span class=\"Identifier\">PolyCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,TileMapCollider,GroupCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,GroupCollider,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">g</span><span class=\"Other\">:</span> <a href=\"entity.html#GroupCollider\"><span class=\"Identifier\">GroupCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"collide.e,TileMapCollider,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">collide</span><span class=\"Other\">(</span><span class=\"Identifier\">t1</span><span class=\"Other\">,</span> <span class=\"Identifier\">t2</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"15\">\n<h1><a class=\"toc-backref\" href=\"#15\">Iterators</a></h1>\n<dl class=\"item\">\n<a id=\"tileIndex.i,TileMap,int\"></a>\n<dt><pre><span class=\"Keyword\">iterator</span> <span class=\"Identifier\">tileIndex</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">value</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nIterate through tiles with a specific <tt class=\"docutils literal\"><span class=\"pre\">value</span></tt>. \n\n</dd>\n<a id=\"tileColliders.i,TileMapCollider\"></a>\n<dt><pre><span class=\"Keyword\">iterator</span> <span class=\"Identifier\">tileColliders</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileCollider\"><span class=\"Identifier\">TileCollider</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nIterate through all tile colliders of <tt class=\"docutils literal\"><span class=\"pre\">t</span></tt> TilemapCollider. \n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"tile.t,TileMap,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">tile</span><span class=\"Other\">(</span><span class=\"Identifier\">tilemap</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMap\"><span class=\"Identifier\">TileMap</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">index</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\nDirect access to a single tile value. \n\n</dd>\n<a id=\"collisionList.t,TileMapCollider,typed,bool\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">collisionList</span><span class=\"Other\">(</span><span class=\"Identifier\">t</span><span class=\"Other\">:</span> <a href=\"tilemap.html#TileMapCollider\"><span class=\"Identifier\">TileMapCollider</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">a</span><span class=\"Other\">:</span> <span class=\"Identifier\">typed</span><span class=\"Other\">;</span> <span class=\"Identifier\">first</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">false</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span>\n    <a href=\"tilemap.html#TileCollider\"><span class=\"Identifier\">TileCollider</span></a><span class=\"Other\">]</span></pre></dt>\n<dd>\n<p>Get a list of collided <tt class=\"docutils literal\"><span class=\"pre\">TileColliders</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">a</span></tt> collision target (<tt class=\"docutils literal\"><span class=\"pre\">Coord</span></tt>, any <tt class=\"docutils literal\"><span class=\"pre\">Collider</span></tt>, etc.)</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">first</span></tt> If true, return after the first detected collision. </p>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:41 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/truetypefont.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>truetypefont</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">truetypefont</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#TrueTypeFont\"\n    title=\"TrueTypeFont = ref object of font.Font\n  fFont: ttf.Font\"><wbr />True<wbr />Type<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#free%2CTrueTypeFont\"\n    title=\"free(font: TrueTypeFont)\"><wbr />free<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CTrueTypeFont\"\n    title=\"init(font: TrueTypeFont)\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n  <li><a class=\"reference\" href=\"#newTrueTypeFont%2C\"\n    title=\"newTrueTypeFont(): TrueTypeFont\"><wbr />new<wbr />True<wbr />Type<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CTrueTypeFont%2Cstring%2Cint\"\n    title=\"load(font: TrueTypeFont; file: string; size: int): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n  <li><a class=\"reference\" href=\"#load%2CTrueTypeFont%2Cptr.RWops%2Cint%2Cbool\"\n    title=\"load(font: TrueTypeFont; src: ptr RWops; size: int; freeSrc: bool = true): bool\"><wbr />load<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n  <li><a class=\"reference\" href=\"#renderTrueTypeFont%2CTrueTypeFont%2Cstring%2CColor\"\n    title=\"renderTrueTypeFont(font: TrueTypeFont; line: string; color: Color = DefaultFontColor): Surface\"><wbr />render<wbr />True<wbr />Type<wbr />Font<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#getError.e%2CTrueTypeFont\"\n    title=\"getError(font: TrueTypeFont): string\"><wbr />get<wbr />Error<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n  <li><a class=\"reference\" href=\"#charH.e%2CTrueTypeFont\"\n    title=\"charH(font: TrueTypeFont): int\"><wbr />char<wbr />H<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n  <li><a class=\"reference\" href=\"#lineDim.e%2CTrueTypeFont%2Cstring\"\n    title=\"lineDim(font: TrueTypeFont; line: string): Dim\"><wbr />line<wbr />Dim<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n  <li><a class=\"reference\" href=\"#render.e%2CTrueTypeFont%2Cstring%2CColor\"\n    title=\"render(font: TrueTypeFont; line: string; color: Color = DefaultFontColor): Surface\"><wbr />render<span class=\"attachedType\" style=\"visibility:hidden\">TrueTypeFont</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"font.html\">font</a>, <a class=\"reference external\" href=\"settings.html\">settings</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"TrueTypeFont\"></a>\n<dt><pre><a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">font</span><span class=\"Other\">.</span><span class=\"Identifier\">Font</span>\n  <span class=\"Identifier\">fFont</span><span class=\"Other\">:</span> <span class=\"Identifier\">ttf</span><span class=\"Other\">.</span><span class=\"Identifier\">Font</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"free,TrueTypeFont\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">free</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"init,TrueTypeFont\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newTrueTypeFont,\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTrueTypeFont</span><span class=\"Other\">(</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"load,TrueTypeFont,string,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load <tt class=\"docutils literal\"><span class=\"pre\">font</span></tt> data from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">size</span></tt> required font size. </p>\n\n\n</dd>\n<a id=\"load,TrueTypeFont,ptr.RWops,int,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">load</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load <tt class=\"docutils literal\"><span class=\"pre\">font</span></tt> data from a <tt class=\"docutils literal\"><span class=\"pre\">src</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">size</span></tt> required font size. </p>\n\n\n</dd>\n<a id=\"renderTrueTypeFont,TrueTypeFont,string,Color\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">renderTrueTypeFont</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span>\n                       <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultFontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"getError.e,TrueTypeFont\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">getError</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"charH.e,TrueTypeFont\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">charH</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a font character's height. \n\n</dd>\n<a id=\"lineDim.e,TrueTypeFont,string\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">lineDim</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> dimensions of a <tt class=\"docutils literal\"><span class=\"pre\">line</span></tt> of text, written in <tt class=\"docutils literal\"><span class=\"pre\">font</span></tt>. \n\n</dd>\n<a id=\"render.e,TrueTypeFont,string,Color\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">render</span><span class=\"Other\">(</span><span class=\"Identifier\">font</span><span class=\"Other\">:</span> <a href=\"truetypefont.html#TrueTypeFont\"><span class=\"Identifier\">TrueTypeFont</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">line</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">color</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span class=\"Other\">=</span> <span class=\"Identifier\">DefaultFontColor</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:42 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/tween.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>tween</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">tween</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#TweenProcedure\"\n    title=\"TweenProcedure[V] = proc (start, distance: V; elapsed, duration: float;\n                       amplitude, period: V; back: float): V\"><wbr />Tween<wbr />Procedure<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#TweenEnder\"\n    title=\"TweenEnder[T; V] = proc (tween: Tween[T, V])\"><wbr />Tween<wbr />Ender<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Tween\"\n    title=\"Tween[T; V] = ref object of RootObj\n  target: T                    ## Target object\n  get: proc (e: T): V             ## A value getter procedure\n  set: proc (e: T; v: V)           ## A value setter procedure\n  fStart, fFinish: V            ## Starting and finishing values\n  fDistance: V                 ## Total distance (finish - start)\n  fElapsed, fDuration: float    ## Elapsed and total duration (in seconds)\n  amplitude*, period*: V        ## Ease elastic amplitude and period\n  back*: float                 ## Ease Back coefficient\n  loop*, loopLimit*: int        ## Loop counter and loop limit\n  playing*: bool               ## Playing status flag\n  procedure*: TweenProcedure[V] ## \\\n                              ## Value changing procedure, called from the ``update()``\n  ender*: TweenEnder[T, V]      ## \\\n                        ##  Loop ending procedure, called from the ``update()``\"><wbr />Tween<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#value%2CTween%5BT%2CV%5D\"\n    title=\"value[T, V](tween: Tween[T, V]): V\"><wbr />value<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#value%3D%2CTween%5BT%2CV%5D%2CV\"\n    title=\"value=[T, V](tween: Tween[T, V]; val: V)\"><wbr />value=<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#start%2CTween%5BT%2CV%5D\"\n    title=\"start[T, V](tween: Tween[T, V]): V\"><wbr />start<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#finish%2CTween%5BT%2CV%5D\"\n    title=\"finish[T, V](tween: Tween[T, V]): V\"><wbr />finish<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#distance%2CTween%5BT%2CV%5D\"\n    title=\"distance[T, V](tween: Tween[T, V]): V\"><wbr />distance<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#duration%2CTween\"\n    title=\"duration(tween: Tween): float\"><wbr />duration<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#elapsed%2CTween\"\n    title=\"elapsed(tween: Tween): float\"><wbr />elapsed<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#progress%2CTween\"\n    title=\"progress(tween: Tween): float\"><wbr />progress<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#play%2CTween\"\n    title=\"play(tween: Tween)\"><wbr />play<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#stop%2CTween\"\n    title=\"stop(tween: Tween)\"><wbr />stop<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#setup%2CTween%5BT%2CV%5D%2CV%2CV%2Cfloat%2Cint\"\n    title=\"setup[T, V](tween: Tween[T, V]; start, finish: V; duration: float; loops = 0)\"><wbr />setup<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#update%2CTween%2Cfloat\"\n    title=\"update(tween: Tween; elapsed: float)\"><wbr />update<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#linear%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"linear[V](start, distance: V; elapsed, duration: float; amplitude, period: V; back: float): V\"><wbr />linear<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inQuad%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inQuad[V](start, distance: V; elapsed, duration: float; amplitude, period: V; back: float): V\"><wbr />in<wbr />Quad<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outQuad%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outQuad[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n           back: float): V\"><wbr />out<wbr />Quad<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutQuad%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutQuad[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />in<wbr />Out<wbr />Quad<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inCubic%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inCubic[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n           back: float): V\"><wbr />in<wbr />Cubic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outCubic%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outCubic[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n            back: float): V\"><wbr />out<wbr />Cubic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutCubic%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutCubic[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n              back: float): V\"><wbr />in<wbr />Out<wbr />Cubic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInCubic%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInCubic[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n              back: float): V\"><wbr />out<wbr />In<wbr />Cubic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inQuart%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inQuart[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n           back: float): V\"><wbr />in<wbr />Quart<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outQuart%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outQuart[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n            back: float): V\"><wbr />out<wbr />Quart<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutQuart%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutQuart[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n              back: float): V\"><wbr />in<wbr />Out<wbr />Quart<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInQuart%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInQuart[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n              back: float): V\"><wbr />out<wbr />In<wbr />Quart<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inQuint%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inQuint[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n           back: float): V\"><wbr />in<wbr />Quint<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outQuint%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outQuint[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n            back: float): V\"><wbr />out<wbr />Quint<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutQuint%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutQuint[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n              back: float): V\"><wbr />in<wbr />Out<wbr />Quint<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInQuint%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInQuint[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n              back: float): V\"><wbr />out<wbr />In<wbr />Quint<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inSine%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inSine[V](start, distance: V; elapsed, duration: float; amplitude, period: V; back: float): V\"><wbr />in<wbr />Sine<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outSine%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outSine[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n           back: float): V\"><wbr />out<wbr />Sine<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutSine%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutSine[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />in<wbr />Out<wbr />Sine<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInSine%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInSine[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />out<wbr />In<wbr />Sine<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inExpo%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inExpo[V](start, distance: V; elapsed, duration: float; amplitude, period: V; back: float): V\"><wbr />in<wbr />Expo<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outExpo%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outExpo[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n           back: float): V\"><wbr />out<wbr />Expo<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutExpo%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutExpo[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />in<wbr />Out<wbr />Expo<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInExpo%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInExpo[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />out<wbr />In<wbr />Expo<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inCirc%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inCirc[V](start, distance: V; elapsed, duration: float; amplitude, period: V; back: float): V\"><wbr />in<wbr />Circ<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outCirc%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outCirc[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n           back: float): V\"><wbr />out<wbr />Circ<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutCirc%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutCirc[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />in<wbr />Out<wbr />Circ<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInCirc%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInCirc[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />out<wbr />In<wbr />Circ<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outBounce%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outBounce[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />out<wbr />Bounce<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inBounce%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inBounce[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n            back: float): V\"><wbr />in<wbr />Bounce<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutBounce%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutBounce[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n               back: float): V\"><wbr />in<wbr />Out<wbr />Bounce<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInBounce%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInBounce[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n               back: float): V\"><wbr />out<wbr />In<wbr />Bounce<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inElastic%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inElastic[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />in<wbr />Elastic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outElastic%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outElastic[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n              back: float): V\"><wbr />out<wbr />Elastic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutElastic%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutElastic[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n                back: float): V\"><wbr />in<wbr />Out<wbr />Elastic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInElastic%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInElastic[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n                back: float): V\"><wbr />out<wbr />In<wbr />Elastic<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inBack%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inBack[V](start, distance: V; elapsed, duration: float; amplitude, period: V; back: float): V\"><wbr />in<wbr />Back<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outBack%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outBack[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n           back: float): V\"><wbr />out<wbr />Back<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#inOutBack%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"inOutBack[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />in<wbr />Out<wbr />Back<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#outInBack%2CV%2CV%2Cfloat%2Cfloat%2CV%2CV%2Cfloat\"\n    title=\"outInBack[V](start, distance: V; elapsed, duration: float; amplitude, period: V;\n             back: float): V\"><wbr />out<wbr />In<wbr />Back<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#reversing%2CTween\"\n    title=\"reversing(tween: Tween)\"><wbr />reversing<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#repeating%2CTween\"\n    title=\"repeating(tween: Tween)\"><wbr />repeating<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#init%2CTween%5BT%2CV%5D%2CT%2Cproc%28T%29%2Cproc%28T%2CV%29\"\n    title=\"init[T, V](tween: Tween[T, V]; target: T; get: proc (e: T): V; set: proc (e: T; v: V))\"><wbr />init<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n  <li><a class=\"reference\" href=\"#newTween%2CT%2Cproc%28T%29%2Cproc%28T%2CV%29\"\n    title=\"newTween[T, V](target: T; get: proc (e: T): V; set: proc (e: T; v: V)): Tween[T, V]\"><wbr />new<wbr />Tween<span class=\"attachedType\" style=\"visibility:hidden\">Tween</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"TweenProcedure\"></a>\n<dt><pre><a href=\"tween.html#TweenProcedure\"><span class=\"Identifier\">TweenProcedure</span></a><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span> <span class=\"Other\">=</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span>\n                       <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"TweenEnder\"></a>\n<dt><pre><a href=\"tween.html#TweenEnder\"><span class=\"Identifier\">TweenEnder</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span> <span class=\"Other\">=</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"Tween\"></a>\n<dt><pre><a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <span class=\"Identifier\">RootObj</span>\n  <span class=\"Identifier\">target</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span>                    <span class=\"Comment\">## Target object</span>\n  <span class=\"Identifier\">get</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span>             <span class=\"Comment\">## A value getter procedure</span>\n  <span class=\"Identifier\">set</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">)</span>           <span class=\"Comment\">## A value setter procedure</span>\n  <span class=\"Identifier\">fStart</span><span class=\"Other\">,</span> <span class=\"Identifier\">fFinish</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span>            <span class=\"Comment\">## Starting and finishing values</span>\n  <span class=\"Identifier\">fDistance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span>                 <span class=\"Comment\">## Total distance (finish - start)</span>\n  <span class=\"Identifier\">fElapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">fDuration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>    <span class=\"Comment\">## Elapsed and total duration (in seconds)</span>\n  <span class=\"Identifier\">amplitude</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span>        <span class=\"Comment\">## Ease elastic amplitude and period</span>\n  <span class=\"Identifier\">back</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>                 <span class=\"Comment\">## Ease Back coefficient</span>\n  <span class=\"Identifier\">loop</span><span class=\"Operator\">*</span><span class=\"Other\">,</span> <span class=\"Identifier\">loopLimit</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>        <span class=\"Comment\">## Loop counter and loop limit</span>\n  <span class=\"Identifier\">playing</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span>               <span class=\"Comment\">## Playing status flag</span>\n  <span class=\"Identifier\">procedure</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"tween.html#TweenProcedure\"><span class=\"Identifier\">TweenProcedure</span></a><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span> <span class=\"Comment\">## \\</span>\n                              <span class=\"Comment\">## Value changing procedure, called from the ``update()``</span>\n  <span class=\"Identifier\">ender</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <a href=\"tween.html#TweenEnder\"><span class=\"Identifier\">TweenEnder</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span>      <span class=\"Comment\">## \\</span>\n                        <span class=\"Comment\">##  Loop ending procedure, called from the ``update()``</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"value,Tween[T,V]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">value</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the target value of <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt>. \n\n</dd>\n<a id=\"value=,Tween[T,V],V\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">value=</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">val</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nSet the target value of <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt> to <tt class=\"docutils literal\"><span class=\"pre\">val</span></tt>. \n\n</dd>\n<a id=\"start,Tween[T,V]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">start</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> starting value. \n\n</dd>\n<a id=\"finish,Tween[T,V]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">finish</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> final value. \n\n</dd>\n<a id=\"distance,Tween[T,V]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">distance</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the total distance. \n\n</dd>\n<a id=\"duration,Tween\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">duration</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt>'s total duration. \n\n</dd>\n<a id=\"elapsed,Tween\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt>'s elapsed duration. \n\n</dd>\n<a id=\"progress,Tween\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">progress</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt> progress in <cite>0.0</cite>..`1.0` range. \n\n</dd>\n<a id=\"play,Tween\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">play</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\nStart playing <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt> with previously set params. \n\n</dd>\n<a id=\"stop,Tween\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">stop</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">)</span></pre></dt>\n<dd>\nStop playing <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt> immediately. \n\n</dd>\n<a id=\"setup,Tween[T,V],V,V,float,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">setup</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">finish</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">loops</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n<p>Set up <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt> params.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">start</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">finish</span></tt> Limiting values for the target variable.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">duration</span></tt> Duration (in seconds).</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">loops</span></tt> Loop limit. <cite>0</cite> for one loop, <cite>-1</cite> for looping forever. </p>\n\n\n</dd>\n<a id=\"update,Tween,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">update</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span></pre></dt>\n<dd>\nTween update procedure. Call it from the scene update method. \n\n</dd>\n<a id=\"linear,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">linear</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n              <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nLinear tween procedure. \n\n</dd>\n<a id=\"inQuad,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inQuad</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n              <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Quadratic tween procedure. \n\n</dd>\n<a id=\"outQuad,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outQuad</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Quadratic tween procedure. \n\n</dd>\n<a id=\"inOutQuad,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutQuad</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Quadratic tween procedure. \n\n</dd>\n<a id=\"inCubic,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inCubic</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Cubic tween procedure. \n\n</dd>\n<a id=\"outCubic,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outCubic</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Cubic tween procedure. \n\n</dd>\n<a id=\"inOutCubic,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutCubic</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Cubic tween procedure. \n\n</dd>\n<a id=\"outInCubic,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInCubic</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Cubic tween procedure. \n\n</dd>\n<a id=\"inQuart,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inQuart</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Quart tween procedure. \n\n</dd>\n<a id=\"outQuart,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outQuart</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Quart tween procedure. \n\n</dd>\n<a id=\"inOutQuart,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutQuart</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Quart tween procedure. \n\n</dd>\n<a id=\"outInQuart,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInQuart</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Quart tween procedure \n\n</dd>\n<a id=\"inQuint,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inQuint</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Quint tween procedure. \n\n</dd>\n<a id=\"outQuint,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outQuint</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Quint tween procedure. \n\n</dd>\n<a id=\"inOutQuint,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutQuint</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Quint tween procedure. \n\n</dd>\n<a id=\"outInQuint,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInQuint</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Quint tween procedure. \n\n</dd>\n<a id=\"inSine,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inSine</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n              <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Sine tween procedure. \n\n</dd>\n<a id=\"outSine,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outSine</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Sine tween procedure. \n\n</dd>\n<a id=\"inOutSine,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutSine</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Sine tween procedure. \n\n</dd>\n<a id=\"outInSine,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInSine</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Sine tween procedure. \n\n</dd>\n<a id=\"inExpo,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inExpo</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n              <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Expo tween procedure. \n\n</dd>\n<a id=\"outExpo,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outExpo</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Expo tween procedure. \n\n</dd>\n<a id=\"inOutExpo,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutExpo</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Expo tween procedure. \n\n</dd>\n<a id=\"outInExpo,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInExpo</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Expo tween procedure. \n\n</dd>\n<a id=\"inCirc,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inCirc</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n              <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Circ tween procedure. \n\n</dd>\n<a id=\"outCirc,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outCirc</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Circ tween procedure. \n\n</dd>\n<a id=\"inOutCirc,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutCirc</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Circ tween procedure. \n\n</dd>\n<a id=\"outInCirc,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInCirc</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Circ tween procedure. \n\n</dd>\n<a id=\"outBounce,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outBounce</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Bounce tween procedure. \n\n</dd>\n<a id=\"inBounce,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inBounce</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Bounce tween procedure. \n\n</dd>\n<a id=\"inOutBounce,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutBounce</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                   <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Bounce tween procedure. \n\n</dd>\n<a id=\"outInBounce,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInBounce</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                   <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Bounce tween procedure. \n\n</dd>\n<a id=\"inElastic,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inElastic</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Elastic tween procedure. \n\n</dd>\n<a id=\"outElastic,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outElastic</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                  <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Elastic tween procedure. \n\n</dd>\n<a id=\"inOutElastic,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutElastic</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Elastic tween procedure. \n\n</dd>\n<a id=\"outInElastic,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInElastic</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Elastic tween procedure. \n\n</dd>\n<a id=\"inBack,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inBack</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n              <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In Back tween procedure. \n\n</dd>\n<a id=\"outBack,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outBack</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out Back tween procedure. \n\n</dd>\n<a id=\"inOutBack,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">inOutBack</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase In/Out Back tween procedure. \n\n</dd>\n<a id=\"outInBack,V,V,float,float,V,V,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">outInBack</span><span class=\"Other\">[</span><span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">start</span><span class=\"Other\">,</span> <span class=\"Identifier\">distance</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">,</span> <span class=\"Identifier\">duration</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">amplitude</span><span class=\"Other\">,</span> <span class=\"Identifier\">period</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span>\n                 <span class=\"Identifier\">back</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nEase Out/In Back tween procedure. \n\n</dd>\n<a id=\"reversing,Tween\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">reversing</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Tween ender.</p>\n<p>Reverses the direction on each loop.</p>\n<p>Default option.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Note:</span></tt> each reversal counts as one loop. </p>\n\n\n</dd>\n<a id=\"repeating,Tween\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">repeating</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">procvar</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Tween ender.</p>\n<p>Repeats from <tt class=\"docutils literal\"><span class=\"pre\">start</span></tt> to <tt class=\"docutils literal\"><span class=\"pre\">finish</span></tt> on each loop. </p>\n\n\n</dd>\n<a id=\"init,Tween[T,V],T,proc(T),proc(T,V)\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">init</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">tween</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">target</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">get</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">set</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">)</span><span class=\"Other\">)</span></pre></dt>\n<dd>\n<p>Set new bindings for the <tt class=\"docutils literal\"><span class=\"pre\">tween</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">target</span></tt> The target object of this tween.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">get</span></tt> A value getter procedure.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">set</span></tt> A value setter procedure. </p>\n\n\n</dd>\n<a id=\"newTween,T,proc(T),proc(T,V)\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTween</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">target</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">get</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">;</span> <span class=\"Identifier\">set</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">e</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">V</span><span class=\"Other\">)</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"tween.html#Tween\"><span class=\"Identifier\">Tween</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">,</span> <span class=\"Identifier\">V</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n<p>Create a new <tt class=\"docutils literal\"><span class=\"pre\">Tween</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">target</span></tt> The target object of this tween.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">get</span></tt> A value getter procedure.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">set</span></tt> A value setter procedure. </p>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:42 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/types.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>types</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield and narimiran\n*/\n\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 1.125em;\n  line-height: 1.5;\n  color: #222;\n  background-color: #FCFCFC; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 1050px;\n  margin: 0 auto;\n  padding: 0;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box;\n  margin-left: 1%;\n}\n\n.column:first-child,\n.columns:first-child {\n  margin-left: 0; }\n\n.three.columns {\n  width: 19%; }\n\n.nine.columns {\n  width: 80.0%; }\n\n.twelve.columns {\n  width: 100%;\n  margin-left: 0; }\n\n@media screen and (max-width: 860px) {\n  .three.columns {\n    display: none;\n  }\n  .nine.columns {\n    width: 98.0%;\n  }\n  body {\n    font-size: 1em;\n    line-height: 1.35;\n  }\n}\n\ncite {\n  font-style: italic !important; }\n\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 1em;\n}\ninput#searchInput {\n  width: 80%;\n}\n\n\n/* Docgen styles */\n/* Links */\na {\n  color: #07b;\n  text-decoration: none;\n}\n\na span.Identifier {\n  text-decoration: underline;\n  text-decoration-color: #aab;\n}\n\na.reference-toplevel {\n  font-weight: bold;\n}\n\na.toc-backref {\n  text-decoration: none;\n  color: #222; }\n\na.link-seesrc {\n  color: #607c9f;\n  font-size: 0.9em;\n  font-style: italic; }\n\na:hover,\na:focus {\n  color: #607c9f;\n  text-decoration: underline; }\n\na:hover span.Identifier {\n  color: #607c9f;\n}\n\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; }\n}\n\n\np {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em;\n}\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600;\n  font-size: 0.95em;\n  color: #3c3c3c;\n}\n\nem {\n  font-style: italic; }\n\nh1 {\n  font-size: 1.8em;\n  font-weight: 400;\n  padding-bottom: .25em;\n  border-bottom: 1px solid #aaa;\n  margin-top: 2.5em;\n  margin-bottom: 1em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.5em;\n  text-align: center;\n  font-weight: 900;\n  margin-top: 0.75em;\n  margin-bottom: 0em;\n}\n\nh2 {\n  font-size: 1.3em;\n  margin-top: 2em; }\n\nh2.subtitle {\n  text-align: center; }\n\nh3 {\n  font-size: 1.125em;\n  font-style: italic;\n  margin-top: 1.5em; }\n\nh4 {\n  font-size: 1.125em;\n  margin-top: 1em; }\n\nh5 {\n  font-size: 1.125em;\n  margin-top: 0.75em; }\n\nh6 {\n  font-size: 1.1em; }\n\n\nul,\nol {\n  padding: 0;\n  margin-top: 0.5em;\n  margin-left: 0.75em; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0;\n  margin-left: 1.25em; }\n\nli {\n    list-style-type: circle;\n}\n\nul.simple-boot li {\n    list-style-type: none;\n    margin-left: 0em;\n    margin-bottom: 0.5em;\n}\n\nol.simple > li, ul.simple > li {\n  margin-bottom: 0.25em;\n  margin-left: 0.4em }\n\nul.simple.simple-toc > li {\n    margin-top: 1em;\n}\n\nul.simple-toc {\n  list-style: none;\n  font-size: 0.9em;\n  margin-left: -0.3em;\n  margin-top: 1em; }\n\nul.simple-toc > li {\n    list-style-type: none;\n}\n\nul.simple-toc-section {\n  list-style-type: circle;\n  margin-left: 1em;\n  color: #6c9aae; }\n\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\nul.auto-toc {\n  list-style-type: none; }\n\n\ndl {\n  margin-bottom: 1.5em; }\n\ndt {\n  margin-bottom: -0.5em;\n  margin-left: 0.0em; }\n\ndd {\n  margin-left: 2.0em;\n  margin-bottom: 3.0em;\n  margin-top: 0.5em; }\n\n\nhr {\n  margin: 2em 0;\n  border: 0;\n  border-top: 1px solid #aaa; }\n\nblockquote {\n  font-size: 0.9em;\n  font-style: italic;\n  padding-left: 0.5em;\n  margin-left: 0;\n  border-left: 5px solid #bbc;\n}\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 500;\n  font-size: 0.85em;\n  background-color: #f0f3ff;\n  padding-left: 3px;\n  padding-right: 3px;\n  border-radius: 4px;\n}\n\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  color: #222;\n  font-weight: 500;\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: 100%;\n  padding: 0.5em;\n  margin-top: 0.5em;\n  margin-bottom: 0.5em;\n  font-size: 0.85em;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: ghostwhite;\n  border: 1px solid #dde;\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: ghostwhite;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  margin-top: 0.5em;\n  margin-bottom: 1.5em;\n  border-collapse: collapse;\n  border-color: #ccc;\n  border-spacing: 0;\n  font-size: 0.9em;\n}\n\ntable th, table td {\n  padding: 0px 0.5em 0px;\n}\n\ntable th {\n  background-color: #e8e8e8;\n  font-weight: bold; }\n\ntable th.docinfo-name {\n    background-color: transparent;\n}\n\ntable tr:hover {\n  background-color: ghostwhite; }\n\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  text-align: center;\n  color: #666;\n  font-size: smaller; }\n\ndiv.footer {\n    padding-top: 5em;\n}\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.topic {\n  margin: 2em; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\ndiv#global-links > simple-boot {\n    margin-left: 3em;\n}\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-weight: bold; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #222; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier,\ndt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 16px;\n  width: 16px;\n  background-position: 0 0;\n  background-size: 16px 16px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n  padding: 2px;\n  background-color: #e8e8e8;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n  font-size: 0.8em;\n}\n\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\nspan.attachedType {\n  display: none;\n  visibility: hidden;\n}\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">types</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Coord\"\n    title=\"Coord = tuple[x: float, y: float]\"><wbr />Coord<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Coord2\"\n    title=\"Coord2 = tuple[abs, rel: Coord]\"><wbr />Coord2<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#CoordInt\"\n    title=\"CoordInt = tuple[x: int, y: int]\"><wbr />Coord<wbr />Int<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Dim\"\n    title=\"Dim = tuple[w: int, h: int]\"><wbr />Dim<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Angle\"\n    title=\"Angle = float\"><wbr />Angle<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Scale\"\n    title=\"Scale = float\"><wbr />Scale<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Transform\"\n    title=\"Transform = tuple[pos: Coord, angle: Angle, scale: Scale]\"><wbr />Transform<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Blend\"\n    title=\"Blend {.size: 4, pure.} = enum\n  none = sdl.BlendModeNone, blend = sdl.BlendModeBlend, bAdd = sdl.BlendModeAdd,\n  bMod = sdl.BlendModeMod\"><wbr />Blend<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Flip\"\n    title=\"Flip {.size: 4, pure.} = enum\n  none = sdl.FlipNone, horizontal = sdl.FlipHorizontal, vertical = sdl.FlipVertical,\n  both = sdl.FlipBoth\"><wbr />Flip<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#TextAlign\"\n    title=\"TextAlign {.pure.} = enum\n  left, center, right\"><wbr />Text<wbr />Align<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#Direction\"\n    title=\"Direction {.pure.} = enum\n  leftRight, rightLeft, topBottom, bottomTop\"><wbr />Direction<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#HAlign\"\n    title=\"HAlign {.pure.} = enum\n  left, center, right\"><wbr />HAlign<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#VAlign\"\n    title=\"VAlign {.pure.} = enum\n  top, center, bottom\"><wbr />VAlign<span class=\"attachedType\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#10\" id=\"60\">Consts</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#ColorBlack\"\n    title=\"ColorBlack = 255\"><wbr />Color<wbr />Black<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourBlack\"\n    title=\"ColourBlack = 255\"><wbr />Colour<wbr />Black<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorNavy\"\n    title=\"ColorNavy = 33023\"><wbr />Color<wbr />Navy<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourNavy\"\n    title=\"ColourNavy = 33023\"><wbr />Colour<wbr />Navy<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkBlue\"\n    title=\"ColorDarkBlue = 35839\"><wbr />Color<wbr />Dark<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkBlue\"\n    title=\"ColourDarkBlue = 35839\"><wbr />Colour<wbr />Dark<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumBlue\"\n    title=\"ColorMediumBlue = 52735\"><wbr />Color<wbr />Medium<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumBlue\"\n    title=\"ColourMediumBlue = 52735\"><wbr />Colour<wbr />Medium<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorBlue\"\n    title=\"ColorBlue = 65535\"><wbr />Color<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourBlue\"\n    title=\"ColourBlue = 65535\"><wbr />Colour<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkGreen\"\n    title=\"ColorDarkGreen = 6553855\"><wbr />Color<wbr />Dark<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkGreen\"\n    title=\"ColourDarkGreen = 6553855\"><wbr />Colour<wbr />Dark<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorGreen\"\n    title=\"ColorGreen = 8388863\"><wbr />Color<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourGreen\"\n    title=\"ColourGreen = 8388863\"><wbr />Colour<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorTeal\"\n    title=\"ColorTeal = 8421631\"><wbr />Color<wbr />Teal<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourTeal\"\n    title=\"ColourTeal = 8421631\"><wbr />Colour<wbr />Teal<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkCyan\"\n    title=\"ColorDarkCyan = 9145343\"><wbr />Color<wbr />Dark<wbr />Cyan<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkCyan\"\n    title=\"ColourDarkCyan = 9145343\"><wbr />Colour<wbr />Dark<wbr />Cyan<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDeepSkyBlue\"\n    title=\"ColorDeepSkyBlue = 12582911\"><wbr />Color<wbr />Deep<wbr />Sky<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDeepSkyBlue\"\n    title=\"ColourDeepSkyBlue = 12582911\"><wbr />Colour<wbr />Deep<wbr />Sky<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkTurquoise\"\n    title=\"ColorDarkTurquoise = 13554175\"><wbr />Color<wbr />Dark<wbr />Turquoise<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkTurquoise\"\n    title=\"ColourDarkTurquoise = 13554175\"><wbr />Colour<wbr />Dark<wbr />Turquoise<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumSpringGreen\"\n    title=\"ColorMediumSpringGreen = 16423679\"><wbr />Color<wbr />Medium<wbr />Spring<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumSpringGreen\"\n    title=\"ColourMediumSpringGreen = 16423679\"><wbr />Colour<wbr />Medium<wbr />Spring<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLime\"\n    title=\"ColorLime = 16711935\"><wbr />Color<wbr />Lime<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLime\"\n    title=\"ColourLime = 16711935\"><wbr />Colour<wbr />Lime<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSpringGreen\"\n    title=\"ColorSpringGreen = 16744447\"><wbr />Color<wbr />Spring<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSpringGreen\"\n    title=\"ColourSpringGreen = 16744447\"><wbr />Colour<wbr />Spring<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorAqua\"\n    title=\"ColorAqua = 16777215\"><wbr />Color<wbr />Aqua<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourAqua\"\n    title=\"ColourAqua = 16777215\"><wbr />Colour<wbr />Aqua<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorCyan\"\n    title=\"ColorCyan = 16777215\"><wbr />Color<wbr />Cyan<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourCyan\"\n    title=\"ColourCyan = 16777215\"><wbr />Colour<wbr />Cyan<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMidnightBlue\"\n    title=\"ColorMidnightBlue = 421097727\"><wbr />Color<wbr />Midnight<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMidnightBlue\"\n    title=\"ColourMidnightBlue = 421097727\"><wbr />Colour<wbr />Midnight<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDodgerBlue\"\n    title=\"ColorDodgerBlue = 512819199\"><wbr />Color<wbr />Dodger<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDodgerBlue\"\n    title=\"ColourDodgerBlue = 512819199\"><wbr />Colour<wbr />Dodger<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightSeaGreen\"\n    title=\"ColorLightSeaGreen = 548580095\"><wbr />Color<wbr />Light<wbr />Sea<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightSeaGreen\"\n    title=\"ColourLightSeaGreen = 548580095\"><wbr />Colour<wbr />Light<wbr />Sea<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorForestGreen\"\n    title=\"ColorForestGreen = 579543807\"><wbr />Color<wbr />Forest<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourForestGreen\"\n    title=\"ColourForestGreen = 579543807\"><wbr />Colour<wbr />Forest<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSeaGreen\"\n    title=\"ColorSeaGreen = 780883967\"><wbr />Color<wbr />Sea<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSeaGreen\"\n    title=\"ColourSeaGreen = 780883967\"><wbr />Colour<wbr />Sea<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkSlateGray\"\n    title=\"ColorDarkSlateGray = 793726975\"><wbr />Color<wbr />Dark<wbr />Slate<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkSlateGray\"\n    title=\"ColourDarkSlateGray = 793726975\"><wbr />Colour<wbr />Dark<wbr />Slate<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkSlateGrey\"\n    title=\"ColorDarkSlateGrey = 793726975\"><wbr />Color<wbr />Dark<wbr />Slate<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkSlateGrey\"\n    title=\"ColourDarkSlateGrey = 793726975\"><wbr />Colour<wbr />Dark<wbr />Slate<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLimeGreen\"\n    title=\"ColorLimeGreen = 852308735\"><wbr />Color<wbr />Lime<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLimeGreen\"\n    title=\"ColourLimeGreen = 852308735\"><wbr />Colour<wbr />Lime<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumSeaGreen\"\n    title=\"ColorMediumSeaGreen = 1018393087\"><wbr />Color<wbr />Medium<wbr />Sea<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumSeaGreen\"\n    title=\"ColourMediumSeaGreen = 1018393087\"><wbr />Colour<wbr />Medium<wbr />Sea<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorTurquoise\"\n    title=\"ColorTurquoise = 1088475391\"><wbr />Color<wbr />Turquoise<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourTurquoise\"\n    title=\"ColourTurquoise = 1088475391\"><wbr />Colour<wbr />Turquoise<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorRoyalBlue\"\n    title=\"ColorRoyalBlue = 1097458175\"><wbr />Color<wbr />Royal<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourRoyalBlue\"\n    title=\"ColourRoyalBlue = 1097458175\"><wbr />Colour<wbr />Royal<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSteelBlue\"\n    title=\"ColorSteelBlue = 1182971135\"><wbr />Color<wbr />Steel<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSteelBlue\"\n    title=\"ColourSteelBlue = 1182971135\"><wbr />Colour<wbr />Steel<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkSlateBlue\"\n    title=\"ColorDarkSlateBlue = 1211993087\"><wbr />Color<wbr />Dark<wbr />Slate<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkSlateBlue\"\n    title=\"ColourDarkSlateBlue = 1211993087\"><wbr />Colour<wbr />Dark<wbr />Slate<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumTurquoise\"\n    title=\"ColorMediumTurquoise = 1221709055\"><wbr />Color<wbr />Medium<wbr />Turquoise<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumTurquoise\"\n    title=\"ColourMediumTurquoise = 1221709055\"><wbr />Colour<wbr />Medium<wbr />Turquoise<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorIndigo\"\n    title=\"ColorIndigo = 1258324735\"><wbr />Color<wbr />Indigo<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourIndigo\"\n    title=\"ColourIndigo = 1258324735\"><wbr />Colour<wbr />Indigo<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkOliveGreen\"\n    title=\"ColorDarkOliveGreen = 1433087999\"><wbr />Color<wbr />Dark<wbr />Olive<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkOliveGreen\"\n    title=\"ColourDarkOliveGreen = 1433087999\"><wbr />Colour<wbr />Dark<wbr />Olive<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorCadetBlue\"\n    title=\"ColorCadetBlue = 1604231423\"><wbr />Color<wbr />Cadet<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourCadetBlue\"\n    title=\"ColourCadetBlue = 1604231423\"><wbr />Colour<wbr />Cadet<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorCornflowerBlue\"\n    title=\"ColorCornflowerBlue = 1687547391\"><wbr />Color<wbr />Cornflower<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourCornflowerBlue\"\n    title=\"ColourCornflowerBlue = 1687547391\"><wbr />Colour<wbr />Cornflower<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorRebeccaPurple\"\n    title=\"ColorRebeccaPurple = 1714657791\"><wbr />Color<wbr />Rebecca<wbr />Purple<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourRebeccaPurple\"\n    title=\"ColourRebeccaPurple = 1714657791\"><wbr />Colour<wbr />Rebecca<wbr />Purple<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumAquaMarine\"\n    title=\"ColorMediumAquaMarine = 1724754687\"><wbr />Color<wbr />Medium<wbr />Aqua<wbr />Marine<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumAquaMarine\"\n    title=\"ColourMediumAquaMarine = 1724754687\"><wbr />Colour<wbr />Medium<wbr />Aqua<wbr />Marine<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDimGray\"\n    title=\"ColorDimGray = 1768516095\"><wbr />Color<wbr />Dim<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDimGray\"\n    title=\"ColourDimGray = 1768516095\"><wbr />Colour<wbr />Dim<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDimGrey\"\n    title=\"ColorDimGrey = 1768516095\"><wbr />Color<wbr />Dim<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDimGrey\"\n    title=\"ColourDimGrey = 1768516095\"><wbr />Colour<wbr />Dim<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSlateBlue\"\n    title=\"ColorSlateBlue = 1784335871\"><wbr />Color<wbr />Slate<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSlateBlue\"\n    title=\"ColourSlateBlue = 1784335871\"><wbr />Colour<wbr />Slate<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorOliveDrab\"\n    title=\"ColorOliveDrab = 1804477439\"><wbr />Color<wbr />Olive<wbr />Drab<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourOliveDrab\"\n    title=\"ColourOliveDrab = 1804477439\"><wbr />Colour<wbr />Olive<wbr />Drab<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSlateGray\"\n    title=\"ColorSlateGray = 1887473919\"><wbr />Color<wbr />Slate<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSlateGray\"\n    title=\"ColourSlateGray = 1887473919\"><wbr />Colour<wbr />Slate<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSlateGrey\"\n    title=\"ColorSlateGrey = 1887473919\"><wbr />Color<wbr />Slate<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSlateGrey\"\n    title=\"ColourSlateGrey = 1887473919\"><wbr />Colour<wbr />Slate<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightSlateGray\"\n    title=\"ColorLightSlateGray = 2005441023\"><wbr />Color<wbr />Light<wbr />Slate<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightSlateGray\"\n    title=\"ColourLightSlateGray = 2005441023\"><wbr />Colour<wbr />Light<wbr />Slate<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightSlateGrey\"\n    title=\"ColorLightSlateGrey = 2005441023\"><wbr />Color<wbr />Light<wbr />Slate<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightSlateGrey\"\n    title=\"ColourLightSlateGrey = 2005441023\"><wbr />Colour<wbr />Light<wbr />Slate<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumSlateBlue\"\n    title=\"ColorMediumSlateBlue = 2070474495\"><wbr />Color<wbr />Medium<wbr />Slate<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumSlateBlue\"\n    title=\"ColourMediumSlateBlue = 2070474495\"><wbr />Colour<wbr />Medium<wbr />Slate<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLawnGreen\"\n    title=\"ColorLawnGreen = 2096890111\"><wbr />Color<wbr />Lawn<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLawnGreen\"\n    title=\"ColourLawnGreen = 2096890111\"><wbr />Colour<wbr />Lawn<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorChartreuse\"\n    title=\"ColorChartreuse = 2147418367\"><wbr />Color<wbr />Chartreuse<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourChartreuse\"\n    title=\"ColourChartreuse = 2147418367\"><wbr />Colour<wbr />Chartreuse<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorAquamarine\"\n    title=\"ColorAquamarine = 2147472639\"><wbr />Color<wbr />Aquamarine<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourAquamarine\"\n    title=\"ColourAquamarine = 2147472639\"><wbr />Colour<wbr />Aquamarine<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMaroon\"\n    title=\"ColorMaroon = 2147483903\"><wbr />Color<wbr />Maroon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMaroon\"\n    title=\"ColourMaroon = 2147483903\"><wbr />Colour<wbr />Maroon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPurple\"\n    title=\"ColorPurple = 2147516671\"><wbr />Color<wbr />Purple<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPurple\"\n    title=\"ColourPurple = 2147516671\"><wbr />Colour<wbr />Purple<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorOlive\"\n    title=\"ColorOlive = 2155872511\"><wbr />Color<wbr />Olive<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourOlive\"\n    title=\"ColourOlive = 2155872511\"><wbr />Colour<wbr />Olive<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorGray\"\n    title=\"ColorGray = 2155905279\"><wbr />Color<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourGray\"\n    title=\"ColourGray = 2155905279\"><wbr />Colour<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorGrey\"\n    title=\"ColorGrey = 2155905279\"><wbr />Color<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourGrey\"\n    title=\"ColourGrey = 2155905279\"><wbr />Colour<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSkyBlue\"\n    title=\"ColorSkyBlue = 2278484991\"><wbr />Color<wbr />Sky<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSkyBlue\"\n    title=\"ColourSkyBlue = 2278484991\"><wbr />Colour<wbr />Sky<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightSkyBlue\"\n    title=\"ColorLightSkyBlue = 2278488831\"><wbr />Color<wbr />Light<wbr />Sky<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightSkyBlue\"\n    title=\"ColourLightSkyBlue = 2278488831\"><wbr />Colour<wbr />Light<wbr />Sky<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorBlueViolet\"\n    title=\"ColorBlueViolet = 2318131967\"><wbr />Color<wbr />Blue<wbr />Violet<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourBlueViolet\"\n    title=\"ColourBlueViolet = 2318131967\"><wbr />Colour<wbr />Blue<wbr />Violet<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkRed\"\n    title=\"ColorDarkRed = 2332033279\"><wbr />Color<wbr />Dark<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkRed\"\n    title=\"ColourDarkRed = 2332033279\"><wbr />Colour<wbr />Dark<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkMagenta\"\n    title=\"ColorDarkMagenta = 2332068863\"><wbr />Color<wbr />Dark<wbr />Magenta<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkMagenta\"\n    title=\"ColourDarkMagenta = 2332068863\"><wbr />Colour<wbr />Dark<wbr />Magenta<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSaddleBrown\"\n    title=\"ColorSaddleBrown = 2336560127\"><wbr />Color<wbr />Saddle<wbr />Brown<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSaddleBrown\"\n    title=\"ColourSaddleBrown = 2336560127\"><wbr />Colour<wbr />Saddle<wbr />Brown<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkSeaGreen\"\n    title=\"ColorDarkSeaGreen = 2411499519\"><wbr />Color<wbr />Dark<wbr />Sea<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkSeaGreen\"\n    title=\"ColourDarkSeaGreen = 2411499519\"><wbr />Colour<wbr />Dark<wbr />Sea<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightGreen\"\n    title=\"ColorLightGreen = 2431553791\"><wbr />Color<wbr />Light<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightGreen\"\n    title=\"ColourLightGreen = 2431553791\"><wbr />Colour<wbr />Light<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumPurple\"\n    title=\"ColorMediumPurple = 2473647103\"><wbr />Color<wbr />Medium<wbr />Purple<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumPurple\"\n    title=\"ColourMediumPurple = 2473647103\"><wbr />Colour<wbr />Medium<wbr />Purple<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkViolet\"\n    title=\"ColorDarkViolet = 2483082239\"><wbr />Color<wbr />Dark<wbr />Violet<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkViolet\"\n    title=\"ColourDarkViolet = 2483082239\"><wbr />Colour<wbr />Dark<wbr />Violet<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPaleGreen\"\n    title=\"ColorPaleGreen = 2566625535\"><wbr />Color<wbr />Pale<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPaleGreen\"\n    title=\"ColourPaleGreen = 2566625535\"><wbr />Colour<wbr />Pale<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkOrchid\"\n    title=\"ColorDarkOrchid = 2570243327\"><wbr />Color<wbr />Dark<wbr />Orchid<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkOrchid\"\n    title=\"ColourDarkOrchid = 2570243327\"><wbr />Colour<wbr />Dark<wbr />Orchid<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorYellowGreen\"\n    title=\"ColorYellowGreen = 2597139199\"><wbr />Color<wbr />Yellow<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourYellowGreen\"\n    title=\"ColourYellowGreen = 2597139199\"><wbr />Colour<wbr />Yellow<wbr />Green<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSienna\"\n    title=\"ColorSienna = 2689740287\"><wbr />Color<wbr />Sienna<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSienna\"\n    title=\"ColourSienna = 2689740287\"><wbr />Colour<wbr />Sienna<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorBrown\"\n    title=\"ColorBrown = 2771004159\"><wbr />Color<wbr />Brown<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourBrown\"\n    title=\"ColourBrown = 2771004159\"><wbr />Colour<wbr />Brown<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkGray\"\n    title=\"ColorDarkGray = 2846468607\"><wbr />Color<wbr />Dark<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkGray\"\n    title=\"ColourDarkGray = 2846468607\"><wbr />Colour<wbr />Dark<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkGrey\"\n    title=\"ColorDarkGrey = 2846468607\"><wbr />Color<wbr />Dark<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkGrey\"\n    title=\"ColourDarkGrey = 2846468607\"><wbr />Colour<wbr />Dark<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightBlue\"\n    title=\"ColorLightBlue = 2916673279\"><wbr />Color<wbr />Light<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightBlue\"\n    title=\"ColourLightBlue = 2916673279\"><wbr />Colour<wbr />Light<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorGreenYellow\"\n    title=\"ColorGreenYellow = 2919182335\"><wbr />Color<wbr />Green<wbr />Yellow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourGreenYellow\"\n    title=\"ColourGreenYellow = 2919182335\"><wbr />Colour<wbr />Green<wbr />Yellow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPaleTurquoise\"\n    title=\"ColorPaleTurquoise = 2951671551\"><wbr />Color<wbr />Pale<wbr />Turquoise<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPaleTurquoise\"\n    title=\"ColourPaleTurquoise = 2951671551\"><wbr />Colour<wbr />Pale<wbr />Turquoise<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightSteelBlue\"\n    title=\"ColorLightSteelBlue = 2965692159\"><wbr />Color<wbr />Light<wbr />Steel<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightSteelBlue\"\n    title=\"ColourLightSteelBlue = 2965692159\"><wbr />Colour<wbr />Light<wbr />Steel<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPowderBlue\"\n    title=\"ColorPowderBlue = 2967529215\"><wbr />Color<wbr />Powder<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPowderBlue\"\n    title=\"ColourPowderBlue = 2967529215\"><wbr />Colour<wbr />Powder<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorFireBrick\"\n    title=\"ColorFireBrick = 2988581631\"><wbr />Color<wbr />Fire<wbr />Brick<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourFireBrick\"\n    title=\"ColourFireBrick = 2988581631\"><wbr />Colour<wbr />Fire<wbr />Brick<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkGoldenRod\"\n    title=\"ColorDarkGoldenRod = 3095792639\"><wbr />Color<wbr />Dark<wbr />Golden<wbr />Rod<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkGoldenRod\"\n    title=\"ColourDarkGoldenRod = 3095792639\"><wbr />Colour<wbr />Dark<wbr />Golden<wbr />Rod<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumOrchid\"\n    title=\"ColorMediumOrchid = 3126187007\"><wbr />Color<wbr />Medium<wbr />Orchid<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumOrchid\"\n    title=\"ColourMediumOrchid = 3126187007\"><wbr />Colour<wbr />Medium<wbr />Orchid<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorRosyBrown\"\n    title=\"ColorRosyBrown = 3163525119\"><wbr />Color<wbr />Rosy<wbr />Brown<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourRosyBrown\"\n    title=\"ColourRosyBrown = 3163525119\"><wbr />Colour<wbr />Rosy<wbr />Brown<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkKhaki\"\n    title=\"ColorDarkKhaki = 3182914559\"><wbr />Color<wbr />Dark<wbr />Khaki<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkKhaki\"\n    title=\"ColourDarkKhaki = 3182914559\"><wbr />Colour<wbr />Dark<wbr />Khaki<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSilver\"\n    title=\"ColorSilver = 3233857791\"><wbr />Color<wbr />Silver<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSilver\"\n    title=\"ColourSilver = 3233857791\"><wbr />Colour<wbr />Silver<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMediumVioletRed\"\n    title=\"ColorMediumVioletRed = 3340076543\"><wbr />Color<wbr />Medium<wbr />Violet<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMediumVioletRed\"\n    title=\"ColourMediumVioletRed = 3340076543\"><wbr />Colour<wbr />Medium<wbr />Violet<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorIndianRed\"\n    title=\"ColorIndianRed = 3445382399\"><wbr />Color<wbr />Indian<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourIndianRed\"\n    title=\"ColourIndianRed = 3445382399\"><wbr />Colour<wbr />Indian<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPeru\"\n    title=\"ColorPeru = 3448061951\"><wbr />Color<wbr />Peru<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPeru\"\n    title=\"ColourPeru = 3448061951\"><wbr />Colour<wbr />Peru<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorChocolate\"\n    title=\"ColorChocolate = 3530104575\"><wbr />Color<wbr />Chocolate<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourChocolate\"\n    title=\"ColourChocolate = 3530104575\"><wbr />Colour<wbr />Chocolate<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorTan\"\n    title=\"ColorTan = 3535047935\"><wbr />Color<wbr />Tan<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourTan\"\n    title=\"ColourTan = 3535047935\"><wbr />Colour<wbr />Tan<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightGray\"\n    title=\"ColorLightGray = 3553874943\"><wbr />Color<wbr />Light<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightGray\"\n    title=\"ColourLightGray = 3553874943\"><wbr />Colour<wbr />Light<wbr />Gray<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightGrey\"\n    title=\"ColorLightGrey = 3553874943\"><wbr />Color<wbr />Light<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightGrey\"\n    title=\"ColourLightGrey = 3553874943\"><wbr />Colour<wbr />Light<wbr />Grey<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorThistle\"\n    title=\"ColorThistle = 3636451583\"><wbr />Color<wbr />Thistle<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourThistle\"\n    title=\"ColourThistle = 3636451583\"><wbr />Colour<wbr />Thistle<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorOrchid\"\n    title=\"ColorOrchid = 3664828159\"><wbr />Color<wbr />Orchid<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourOrchid\"\n    title=\"ColourOrchid = 3664828159\"><wbr />Colour<wbr />Orchid<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorGoldenRod\"\n    title=\"ColorGoldenRod = 3668254975\"><wbr />Color<wbr />Golden<wbr />Rod<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourGoldenRod\"\n    title=\"ColourGoldenRod = 3668254975\"><wbr />Colour<wbr />Golden<wbr />Rod<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPaleVioletRed\"\n    title=\"ColorPaleVioletRed = 3681588223\"><wbr />Color<wbr />Pale<wbr />Violet<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPaleVioletRed\"\n    title=\"ColourPaleVioletRed = 3681588223\"><wbr />Colour<wbr />Pale<wbr />Violet<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorCrimson\"\n    title=\"ColorCrimson = 3692313855\"><wbr />Color<wbr />Crimson<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourCrimson\"\n    title=\"ColourCrimson = 3692313855\"><wbr />Colour<wbr />Crimson<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorGainsboro\"\n    title=\"ColorGainsboro = 3705462015\"><wbr />Color<wbr />Gainsboro<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourGainsboro\"\n    title=\"ColourGainsboro = 3705462015\"><wbr />Colour<wbr />Gainsboro<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPlum\"\n    title=\"ColorPlum = 3718307327\"><wbr />Color<wbr />Plum<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPlum\"\n    title=\"ColourPlum = 3718307327\"><wbr />Colour<wbr />Plum<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorBurlyWood\"\n    title=\"ColorBurlyWood = 3736635391\"><wbr />Color<wbr />Burly<wbr />Wood<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourBurlyWood\"\n    title=\"ColourBurlyWood = 3736635391\"><wbr />Colour<wbr />Burly<wbr />Wood<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightCyan\"\n    title=\"ColorLightCyan = 3774873599\"><wbr />Color<wbr />Light<wbr />Cyan<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightCyan\"\n    title=\"ColourLightCyan = 3774873599\"><wbr />Colour<wbr />Light<wbr />Cyan<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLavender\"\n    title=\"ColorLavender = 3873897215\"><wbr />Color<wbr />Lavender<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLavender\"\n    title=\"ColourLavender = 3873897215\"><wbr />Colour<wbr />Lavender<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkSalmon\"\n    title=\"ColorDarkSalmon = 3918953215\"><wbr />Color<wbr />Dark<wbr />Salmon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkSalmon\"\n    title=\"ColourDarkSalmon = 3918953215\"><wbr />Colour<wbr />Dark<wbr />Salmon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorViolet\"\n    title=\"ColorViolet = 4001558271\"><wbr />Color<wbr />Violet<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourViolet\"\n    title=\"ColourViolet = 4001558271\"><wbr />Colour<wbr />Violet<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPaleGoldenRod\"\n    title=\"ColorPaleGoldenRod = 4008225535\"><wbr />Color<wbr />Pale<wbr />Golden<wbr />Rod<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPaleGoldenRod\"\n    title=\"ColourPaleGoldenRod = 4008225535\"><wbr />Colour<wbr />Pale<wbr />Golden<wbr />Rod<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightCoral\"\n    title=\"ColorLightCoral = 4034953471\"><wbr />Color<wbr />Light<wbr />Coral<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightCoral\"\n    title=\"ColourLightCoral = 4034953471\"><wbr />Colour<wbr />Light<wbr />Coral<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorKhaki\"\n    title=\"ColorKhaki = 4041641215\"><wbr />Color<wbr />Khaki<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourKhaki\"\n    title=\"ColourKhaki = 4041641215\"><wbr />Colour<wbr />Khaki<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorAliceBlue\"\n    title=\"ColorAliceBlue = 4042850303\"><wbr />Color<wbr />Alice<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourAliceBlue\"\n    title=\"ColourAliceBlue = 4042850303\"><wbr />Colour<wbr />Alice<wbr />Blue<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorHoneyDew\"\n    title=\"ColorHoneyDew = 4043305215\"><wbr />Color<wbr />Honey<wbr />Dew<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourHoneyDew\"\n    title=\"ColourHoneyDew = 4043305215\"><wbr />Colour<wbr />Honey<wbr />Dew<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorAzure\"\n    title=\"ColorAzure = 4043309055\"><wbr />Color<wbr />Azure<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourAzure\"\n    title=\"ColourAzure = 4043309055\"><wbr />Colour<wbr />Azure<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSandyBrown\"\n    title=\"ColorSandyBrown = 4104413439\"><wbr />Color<wbr />Sandy<wbr />Brown<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSandyBrown\"\n    title=\"ColourSandyBrown = 4104413439\"><wbr />Colour<wbr />Sandy<wbr />Brown<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorWheat\"\n    title=\"ColorWheat = 4125012991\"><wbr />Color<wbr />Wheat<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourWheat\"\n    title=\"ColourWheat = 4125012991\"><wbr />Colour<wbr />Wheat<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorBeige\"\n    title=\"ColorBeige = 4126530815\"><wbr />Color<wbr />Beige<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourBeige\"\n    title=\"ColourBeige = 4126530815\"><wbr />Colour<wbr />Beige<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorWhiteSmoke\"\n    title=\"ColorWhiteSmoke = 4126537215\"><wbr />Color<wbr />White<wbr />Smoke<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourWhiteSmoke\"\n    title=\"ColourWhiteSmoke = 4126537215\"><wbr />Colour<wbr />White<wbr />Smoke<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMintCream\"\n    title=\"ColorMintCream = 4127193855\"><wbr />Color<wbr />Mint<wbr />Cream<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMintCream\"\n    title=\"ColourMintCream = 4127193855\"><wbr />Colour<wbr />Mint<wbr />Cream<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorGhostWhite\"\n    title=\"ColorGhostWhite = 4177068031\"><wbr />Color<wbr />Ghost<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourGhostWhite\"\n    title=\"ColourGhostWhite = 4177068031\"><wbr />Colour<wbr />Ghost<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSalmon\"\n    title=\"ColorSalmon = 4202722047\"><wbr />Color<wbr />Salmon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSalmon\"\n    title=\"ColourSalmon = 4202722047\"><wbr />Colour<wbr />Salmon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorAntiqueWhite\"\n    title=\"ColorAntiqueWhite = 4209760255\"><wbr />Color<wbr />Antique<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourAntiqueWhite\"\n    title=\"ColourAntiqueWhite = 4209760255\"><wbr />Colour<wbr />Antique<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLinen\"\n    title=\"ColorLinen = 4210091775\"><wbr />Color<wbr />Linen<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLinen\"\n    title=\"ColourLinen = 4210091775\"><wbr />Colour<wbr />Linen<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightGoldenRodYellow\"\n    title=\"ColorLightGoldenRodYellow = 4210742015\"><wbr />Color<wbr />Light<wbr />Golden<wbr />Rod<wbr />Yellow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightGoldenRodYellow\"\n    title=\"ColourLightGoldenRodYellow = 4210742015\"><wbr />Colour<wbr />Light<wbr />Golden<wbr />Rod<wbr />Yellow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorOldLace\"\n    title=\"ColorOldLace = 4260751103\"><wbr />Color<wbr />Old<wbr />Lace<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourOldLace\"\n    title=\"ColourOldLace = 4260751103\"><wbr />Colour<wbr />Old<wbr />Lace<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorRed\"\n    title=\"ColorRed = 4278190335\"><wbr />Color<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourRed\"\n    title=\"ColourRed = 4278190335\"><wbr />Colour<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorFuchsia\"\n    title=\"ColorFuchsia = 4278255615\"><wbr />Color<wbr />Fuchsia<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourFuchsia\"\n    title=\"ColourFuchsia = 4278255615\"><wbr />Colour<wbr />Fuchsia<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMagenta\"\n    title=\"ColorMagenta = 4278255615\"><wbr />Color<wbr />Magenta<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMagenta\"\n    title=\"ColourMagenta = 4278255615\"><wbr />Colour<wbr />Magenta<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDeepPink\"\n    title=\"ColorDeepPink = 4279538687\"><wbr />Color<wbr />Deep<wbr />Pink<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDeepPink\"\n    title=\"ColourDeepPink = 4279538687\"><wbr />Colour<wbr />Deep<wbr />Pink<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorOrangeRed\"\n    title=\"ColorOrangeRed = 4282712319\"><wbr />Color<wbr />Orange<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourOrangeRed\"\n    title=\"ColourOrangeRed = 4282712319\"><wbr />Colour<wbr />Orange<wbr />Red<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorTomato\"\n    title=\"ColorTomato = 4284696575\"><wbr />Color<wbr />Tomato<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourTomato\"\n    title=\"ColourTomato = 4284696575\"><wbr />Colour<wbr />Tomato<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorHotPink\"\n    title=\"ColorHotPink = 4285117695\"><wbr />Color<wbr />Hot<wbr />Pink<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourHotPink\"\n    title=\"ColourHotPink = 4285117695\"><wbr />Colour<wbr />Hot<wbr />Pink<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorCoral\"\n    title=\"ColorCoral = 4286533887\"><wbr />Color<wbr />Coral<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourCoral\"\n    title=\"ColourCoral = 4286533887\"><wbr />Colour<wbr />Coral<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorDarkOrange\"\n    title=\"ColorDarkOrange = 4287365375\"><wbr />Color<wbr />Dark<wbr />Orange<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourDarkOrange\"\n    title=\"ColourDarkOrange = 4287365375\"><wbr />Colour<wbr />Dark<wbr />Orange<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightSalmon\"\n    title=\"ColorLightSalmon = 4288707327\"><wbr />Color<wbr />Light<wbr />Salmon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightSalmon\"\n    title=\"ColourLightSalmon = 4288707327\"><wbr />Colour<wbr />Light<wbr />Salmon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorOrange\"\n    title=\"ColorOrange = 4289003775\"><wbr />Color<wbr />Orange<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourOrange\"\n    title=\"ColourOrange = 4289003775\"><wbr />Colour<wbr />Orange<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightPink\"\n    title=\"ColorLightPink = 4290167295\"><wbr />Color<wbr />Light<wbr />Pink<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightPink\"\n    title=\"ColourLightPink = 4290167295\"><wbr />Colour<wbr />Light<wbr />Pink<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPink\"\n    title=\"ColorPink = 4290825215\"><wbr />Color<wbr />Pink<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPink\"\n    title=\"ColourPink = 4290825215\"><wbr />Colour<wbr />Pink<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorGold\"\n    title=\"ColorGold = 4292280575\"><wbr />Color<wbr />Gold<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourGold\"\n    title=\"ColourGold = 4292280575\"><wbr />Colour<wbr />Gold<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPeachPuff\"\n    title=\"ColorPeachPuff = 4292524543\"><wbr />Color<wbr />Peach<wbr />Puff<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPeachPuff\"\n    title=\"ColourPeachPuff = 4292524543\"><wbr />Colour<wbr />Peach<wbr />Puff<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorNavajoWhite\"\n    title=\"ColorNavajoWhite = 4292783615\"><wbr />Color<wbr />Navajo<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourNavajoWhite\"\n    title=\"ColourNavajoWhite = 4292783615\"><wbr />Colour<wbr />Navajo<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMoccasin\"\n    title=\"ColorMoccasin = 4293178879\"><wbr />Color<wbr />Moccasin<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMoccasin\"\n    title=\"ColourMoccasin = 4293178879\"><wbr />Colour<wbr />Moccasin<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorBisque\"\n    title=\"ColorBisque = 4293182719\"><wbr />Color<wbr />Bisque<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourBisque\"\n    title=\"ColourBisque = 4293182719\"><wbr />Colour<wbr />Bisque<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorMistyRose\"\n    title=\"ColorMistyRose = 4293190143\"><wbr />Color<wbr />Misty<wbr />Rose<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourMistyRose\"\n    title=\"ColourMistyRose = 4293190143\"><wbr />Colour<wbr />Misty<wbr />Rose<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorBlanchedAlmond\"\n    title=\"ColorBlanchedAlmond = 4293643775\"><wbr />Color<wbr />Blanched<wbr />Almond<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourBlanchedAlmond\"\n    title=\"ColourBlanchedAlmond = 4293643775\"><wbr />Colour<wbr />Blanched<wbr />Almond<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorPapayaWhip\"\n    title=\"ColorPapayaWhip = 4293907967\"><wbr />Color<wbr />Papaya<wbr />Whip<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourPapayaWhip\"\n    title=\"ColourPapayaWhip = 4293907967\"><wbr />Colour<wbr />Papaya<wbr />Whip<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLavenderBlush\"\n    title=\"ColorLavenderBlush = 4293981695\"><wbr />Color<wbr />Lavender<wbr />Blush<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLavenderBlush\"\n    title=\"ColourLavenderBlush = 4293981695\"><wbr />Colour<wbr />Lavender<wbr />Blush<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSeaShell\"\n    title=\"ColorSeaShell = 4294307583\"><wbr />Color<wbr />Sea<wbr />Shell<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSeaShell\"\n    title=\"ColourSeaShell = 4294307583\"><wbr />Colour<wbr />Sea<wbr />Shell<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorCornsilk\"\n    title=\"ColorCornsilk = 4294499583\"><wbr />Color<wbr />Cornsilk<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourCornsilk\"\n    title=\"ColourCornsilk = 4294499583\"><wbr />Colour<wbr />Cornsilk<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLemonChiffon\"\n    title=\"ColorLemonChiffon = 4294626815\"><wbr />Color<wbr />Lemon<wbr />Chiffon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLemonChiffon\"\n    title=\"ColourLemonChiffon = 4294626815\"><wbr />Colour<wbr />Lemon<wbr />Chiffon<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorFloralWhite\"\n    title=\"ColorFloralWhite = 4294635775\"><wbr />Color<wbr />Floral<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourFloralWhite\"\n    title=\"ColourFloralWhite = 4294635775\"><wbr />Colour<wbr />Floral<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorSnow\"\n    title=\"ColorSnow = 4294638335\"><wbr />Color<wbr />Snow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourSnow\"\n    title=\"ColourSnow = 4294638335\"><wbr />Colour<wbr />Snow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorYellow\"\n    title=\"ColorYellow = 4294902015\"><wbr />Color<wbr />Yellow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourYellow\"\n    title=\"ColourYellow = 4294902015\"><wbr />Colour<wbr />Yellow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorLightYellow\"\n    title=\"ColorLightYellow = 4294959359\"><wbr />Color<wbr />Light<wbr />Yellow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourLightYellow\"\n    title=\"ColourLightYellow = 4294959359\"><wbr />Colour<wbr />Light<wbr />Yellow<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorIvory\"\n    title=\"ColorIvory = 4294963455\"><wbr />Color<wbr />Ivory<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourIvory\"\n    title=\"ColourIvory = 4294963455\"><wbr />Colour<wbr />Ivory<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColorWhite\"\n    title=\"ColorWhite = 4294967295\"><wbr />Color<wbr />White<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#ColourWhite\"\n    title=\"ColourWhite = 4294967295\"><wbr />Colour<wbr />White<span class=\"attachedType\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#%3D%3D%2CCoord%2CCoord\"\n    title=\"`==`(c1, c2: Coord): bool\"><wbr />`==`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#-%2CCoord\"\n    title=\"`-`(c: Coord): Coord\"><wbr />`-`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%2CCoord%2CCoord\"\n    title=\"`+`(c1, c2: Coord): Coord\"><wbr />`+`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%3D%2CCoord%2CCoord\"\n    title=\"`+=`(c1: var Coord; c2: Coord)\"><wbr />`+=`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#-%2CCoord%2CCoord\"\n    title=\"`-`(c1, c2: Coord): Coord\"><wbr />`-`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#-%3D%2CCoord%2CCoord\"\n    title=\"`-=`(c1: var Coord; c2: Coord)\"><wbr />`-=`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%2CCoord%2CCoord\"\n    title=\"`*`(c1, c2: Coord): Coord\"><wbr />`*`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%3D%2CCoord%2CCoord\"\n    title=\"`*=`(c1: var Coord; c2: Coord)\"><wbr />`*=`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2F%2CCoord%2CCoord\"\n    title=\"`/`(c1, c2: Coord): Coord\"><wbr />`/`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2F%3D%2CCoord%2CCoord\"\n    title=\"`/=`(c1: var Coord; c2: Coord)\"><wbr />`/=`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%2CCoord%2Cfloat\"\n    title=\"`+`(c: Coord; v: float): Coord\"><wbr />`+`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%3D%2CCoord%2Cfloat\"\n    title=\"`+=`(c: var Coord; v: float)\"><wbr />`+=`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#-%2CCoord%2Cfloat\"\n    title=\"`-`(c: Coord; v: float): Coord\"><wbr />`-`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#-%3D%2CCoord%2Cfloat\"\n    title=\"`-=`(c: var Coord; v: float)\"><wbr />`-=`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%2CCoord%2Cfloat\"\n    title=\"`*`(c: Coord; v: float): Coord\"><wbr />`*`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%3D%2CCoord%2Cfloat\"\n    title=\"`*=`(c: var Coord; v: float)\"><wbr />`*=`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2F%2CCoord%2Cfloat\"\n    title=\"`/`(c: Coord; v: float): Coord\"><wbr />`/`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2F%3D%2CCoord%2Cfloat\"\n    title=\"`/=`(c: var Coord; v: float)\"><wbr />`/=`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#abs%2CCoord\"\n    title=\"abs(c: Coord): Coord\"><wbr />abs<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#sin%2CCoord\"\n    title=\"sin(c: Coord): Coord\"><wbr />sin<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#arcsin%2CCoord\"\n    title=\"arcsin(c: Coord): Coord\"><wbr />arcsin<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%3D%3D%2CCoordInt%2CCoordInt\"\n    title=\"`==`(c1, c2: CoordInt): bool\"><wbr />`==`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#-%2CCoordInt\"\n    title=\"`-`(c: CoordInt): CoordInt\"><wbr />`-`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%2CCoordInt%2CCoordInt\"\n    title=\"`+`(c1, c2: CoordInt): CoordInt\"><wbr />`+`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%3D%2CCoordInt%2CCoordInt\"\n    title=\"`+=`(c1: var CoordInt; c2: CoordInt)\"><wbr />`+=`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#-%2CCoordInt%2CCoordInt\"\n    title=\"`-`(c1, c2: CoordInt): CoordInt\"><wbr />`-`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#-%3D%2CCoordInt%2CCoordInt\"\n    title=\"`-=`(c1: var CoordInt; c2: CoordInt)\"><wbr />`-=`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%2CCoordInt%2CCoordInt\"\n    title=\"`*`(c1, c2: CoordInt): CoordInt\"><wbr />`*`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%3D%2CCoordInt%2CCoordInt\"\n    title=\"`*=`(c1: var CoordInt; c2: CoordInt)\"><wbr />`*=`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#div%2CCoordInt%2CCoordInt\"\n    title=\"`div`(c1, c2: CoordInt): CoordInt\"><wbr />`div`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#div%3D%2CCoordInt%2CCoordInt\"\n    title=\"div=(c1: var CoordInt; c2: CoordInt)\"><wbr />div=<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%2CCoordInt%2Cint\"\n    title=\"`+`(c: CoordInt; v: int): CoordInt\"><wbr />`+`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%3D%2CCoordInt%2Cint\"\n    title=\"`+=`(c: var CoordInt; v: int)\"><wbr />`+=`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#-%2CCoordInt%2Cint\"\n    title=\"`-`(c: CoordInt; v: int): CoordInt\"><wbr />`-`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#-%3D%2CCoordInt%2Cint\"\n    title=\"`-=`(c: var CoordInt; v: int)\"><wbr />`-=`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%2CCoordInt%2Cint\"\n    title=\"`*`(c: CoordInt; v: int): CoordInt\"><wbr />`*`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%3D%2CCoordInt%2Cint\"\n    title=\"`*=`(c: var CoordInt; v: int)\"><wbr />`*=`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#div%2CCoordInt%2Cint\"\n    title=\"`div`(c: CoordInt; v: int): CoordInt\"><wbr />`div`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#div%3D%2CCoordInt%2Cint\"\n    title=\"div=(c: var CoordInt; v: int)\"><wbr />div=<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#abs%2CCoordInt\"\n    title=\"abs(c: CoordInt): CoordInt\"><wbr />abs<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%3D%3D%2CDim%2CDim\"\n    title=\"`==`(d1, d2: Dim): bool\"><wbr />`==`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%2CDim%2CDim\"\n    title=\"`+`(d1, d2: Dim): Dim\"><wbr />`+`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%3D%2CDim%2CDim\"\n    title=\"`+=`(d1: var Dim; d2: Dim)\"><wbr />`+=`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#-%2CDim%2CDim\"\n    title=\"`-`(d1, d2: Dim): Dim\"><wbr />`-`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#-%3D%2CDim%2CDim\"\n    title=\"`-=`(d1: var Dim; d2: Dim)\"><wbr />`-=`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%2CDim%2CDim\"\n    title=\"`*`(d1, d2: Dim): Dim\"><wbr />`*`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%3D%2CDim%2CDim\"\n    title=\"`*=`(d1: var Dim; d2: Dim)\"><wbr />`*=`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2F%2CDim%2CDim\"\n    title=\"`/`(d1, d2: Dim): Dim\"><wbr />`/`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2F%3D%2CDim%2CDim\"\n    title=\"`/=`(d1: var Dim; d2: Dim)\"><wbr />`/=`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%2CDim%2Cint\"\n    title=\"`+`(d: Dim; v: int): Dim\"><wbr />`+`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B%3D%2CDim%2Cint\"\n    title=\"`+=`(d: var Dim; v: int)\"><wbr />`+=`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#-%2CDim%2Cint\"\n    title=\"`-`(d: Dim; v: int): Dim\"><wbr />`-`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#-%3D%2CDim%2Cint\"\n    title=\"`-=`(d: var Dim; v: int)\"><wbr />`-=`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%2CDim%2Cint\"\n    title=\"`*`(d: Dim; v: int): Dim\"><wbr />`*`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A%3D%2CDim%2Cint\"\n    title=\"`*=`(d: var Dim; v: int)\"><wbr />`*=`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2F%2CDim%2Cint\"\n    title=\"`/`(d: Dim; v: int): Dim\"><wbr />`/`<span class=\"attachedType\">Dim</span></a></li>\n  <li><a class=\"reference\" href=\"#%2F%3D%2CDim%2Cint\"\n    title=\"`/=`(d: var Dim; v: int): Dim\"><wbr />`/=`<span class=\"attachedType\">Dim</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#16\" id=\"66\">Converters</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#toSeq.c%2CSlice%5BT%5D\"\n    title=\"toSeq[T](s: Slice[T]): seq[T]\"><wbr />to<wbr />Seq<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#toUint32.c%2CColor\"\n    title=\"toUint32(c: Color): uint32\"><wbr />to<wbr />Uint32<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#toColor.c%2Cuint32\"\n    title=\"toColor(u: uint32): Color\"><wbr />to<wbr />Color<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#toDim.c%2CCoord\"\n    title=\"toDim(c: Coord): Dim\"><wbr />to<wbr />Dim<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#toDim.c%2CCoordInt\"\n    title=\"toDim(c: CoordInt): Dim\"><wbr />to<wbr />Dim<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#toCoord.c%2CDim\"\n    title=\"toCoord(d: Dim): Coord\"><wbr />to<wbr />Coord<span class=\"attachedType\">Dim</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#neg.t%2CColor\"\n    title=\"neg(c: Color): Color\"><wbr />neg<span class=\"attachedType\"></span></a></li>\n  <li><a class=\"reference\" href=\"#%2B.t%2Cfloat%2CCoord\"\n    title=\"`+`(v: float; c: Coord): Coord\"><wbr />`+`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#-.t%2Cfloat%2CCoord\"\n    title=\"`-`(v: float; c: Coord): Coord\"><wbr />`-`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A.t%2Cfloat%2CCoord\"\n    title=\"`*`(v: float; c: Coord): Coord\"><wbr />`*`<span class=\"attachedType\">Coord</span></a></li>\n  <li><a class=\"reference\" href=\"#%2B.t%2Cint%2CCoordInt\"\n    title=\"`+`(v: int; c: CoordInt): CoordInt\"><wbr />`+`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#-.t%2Cint%2CCoordInt\"\n    title=\"`-`(v: int; c: CoordInt): CoordInt\"><wbr />`-`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A.t%2Cint%2CCoordInt\"\n    title=\"`*`(v: int; c: CoordInt): CoordInt\"><wbr />`*`<span class=\"attachedType\">CoordInt</span></a></li>\n  <li><a class=\"reference\" href=\"#%2A.t%2CTransform%2CCoord\"\n    title=\"`*`(transform: Transform; point: Coord): Coord\"><wbr />`*`<span class=\"attachedType\">Transform</span></a></li>\n  <li><a class=\"reference\" href=\"#local.t%2CTransform\"\n    title=\"local(transform: Transform): Transform\"><wbr />local<span class=\"attachedType\">Transform</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  \n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"utils.html\">utils</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Coord\"></a>\n<dt><pre><a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\nCoordinates type\n\n</dd>\n<a id=\"Coord2\"></a>\n<dt><pre><a href=\"types.html#Coord2\"><span class=\"Identifier\">Coord2</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">abs</span><span class=\"Other\">,</span> <span class=\"Identifier\">rel</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">]</span></pre></dt>\n<dd>\n\nAbs + Rel coordinates type\n\n</dd>\n<a id=\"CoordInt\"></a>\n<dt><pre><a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">,</span> <span class=\"Identifier\">y</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\nInteger coordinates\n\n</dd>\n<a id=\"Dim\"></a>\n<dt><pre><a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">w</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">,</span> <span class=\"Identifier\">h</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\nDimensions type\n\n</dd>\n<a id=\"Angle\"></a>\n<dt><pre><a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">float</span></pre></dt>\n<dd>\n\nAngle type\n\n</dd>\n<a id=\"Scale\"></a>\n<dt><pre><a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a> <span class=\"Other\">=</span> <span class=\"Identifier\">float</span></pre></dt>\n<dd>\n\nScale type\n\n</dd>\n<a id=\"Transform\"></a>\n<dt><pre><a href=\"types.html#Transform\"><span class=\"Identifier\">Transform</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">pos</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">,</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">,</span> <span class=\"Identifier\">scale</span><span class=\"Other\">:</span> <a href=\"types.html#Scale\"><span class=\"Identifier\">Scale</span></a><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"Blend\"></a>\n<dt><pre><a href=\"types.html#Blend\"><span class=\"Identifier\">Blend</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"DecNumber\">4</span><span class=\"Other\">,</span> <span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">none</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">BlendModeNone</span><span class=\"Other\">,</span> <span class=\"Identifier\">blend</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">BlendModeBlend</span><span class=\"Other\">,</span> <span class=\"Identifier\">bAdd</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">BlendModeAdd</span><span class=\"Other\">,</span>\n  <span class=\"Identifier\">bMod</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">BlendModeMod</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"Flip\"></a>\n<dt><pre><a href=\"types.html#Flip\"><span class=\"Identifier\">Flip</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">size</span><span class=\"Other\">:</span> <span class=\"DecNumber\">4</span><span class=\"Other\">,</span> <span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">none</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">FlipNone</span><span class=\"Other\">,</span> <span class=\"Identifier\">horizontal</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">FlipHorizontal</span><span class=\"Other\">,</span> <span class=\"Identifier\">vertical</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">FlipVertical</span><span class=\"Other\">,</span>\n  <span class=\"Identifier\">both</span> <span class=\"Other\">=</span> <span class=\"Identifier\">sdl</span><span class=\"Other\">.</span><span class=\"Identifier\">FlipBoth</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"TextAlign\"></a>\n<dt><pre><a href=\"types.html#TextAlign\"><span class=\"Identifier\">TextAlign</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">left</span><span class=\"Other\">,</span> <span class=\"Identifier\">center</span><span class=\"Other\">,</span> <span class=\"Identifier\">right</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"Direction\"></a>\n<dt><pre><a href=\"types.html#Direction\"><span class=\"Identifier\">Direction</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">leftRight</span><span class=\"Other\">,</span> <span class=\"Identifier\">rightLeft</span><span class=\"Other\">,</span> <span class=\"Identifier\">topBottom</span><span class=\"Other\">,</span> <span class=\"Identifier\">bottomTop</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"HAlign\"></a>\n<dt><pre><a href=\"types.html#HAlign\"><span class=\"Identifier\">HAlign</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">left</span><span class=\"Other\">,</span> <span class=\"Identifier\">center</span><span class=\"Other\">,</span> <span class=\"Identifier\">right</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"VAlign\"></a>\n<dt><pre><a href=\"types.html#VAlign\"><span class=\"Identifier\">VAlign</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">pure</span></span><span class=\"Other\">.}</span></span> <span class=\"Other\">=</span> <span class=\"Keyword\">enum</span>\n  <span class=\"Identifier\">top</span><span class=\"Other\">,</span> <span class=\"Identifier\">center</span><span class=\"Other\">,</span> <span class=\"Identifier\">bottom</span></pre></dt>\n<dd>\n\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"10\">\n<h1><a class=\"toc-backref\" href=\"#10\">Consts</a></h1>\n<dl class=\"item\">\n<a id=\"ColorBlack\"></a>\n<dt><pre><a href=\"types.html#ColorBlack\"><span class=\"Identifier\">ColorBlack</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">255</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourBlack\"></a>\n<dt><pre><a href=\"types.html#ColourBlack\"><span class=\"Identifier\">ColourBlack</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">255</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorNavy\"></a>\n<dt><pre><a href=\"types.html#ColorNavy\"><span class=\"Identifier\">ColorNavy</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">33023</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourNavy\"></a>\n<dt><pre><a href=\"types.html#ColourNavy\"><span class=\"Identifier\">ColourNavy</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">33023</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkBlue\"></a>\n<dt><pre><a href=\"types.html#ColorDarkBlue\"><span class=\"Identifier\">ColorDarkBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">35839</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkBlue\"></a>\n<dt><pre><a href=\"types.html#ColourDarkBlue\"><span class=\"Identifier\">ColourDarkBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">35839</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumBlue\"></a>\n<dt><pre><a href=\"types.html#ColorMediumBlue\"><span class=\"Identifier\">ColorMediumBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">52735</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumBlue\"></a>\n<dt><pre><a href=\"types.html#ColourMediumBlue\"><span class=\"Identifier\">ColourMediumBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">52735</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorBlue\"></a>\n<dt><pre><a href=\"types.html#ColorBlue\"><span class=\"Identifier\">ColorBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">65535</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourBlue\"></a>\n<dt><pre><a href=\"types.html#ColourBlue\"><span class=\"Identifier\">ColourBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">65535</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkGreen\"></a>\n<dt><pre><a href=\"types.html#ColorDarkGreen\"><span class=\"Identifier\">ColorDarkGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">6553855</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkGreen\"></a>\n<dt><pre><a href=\"types.html#ColourDarkGreen\"><span class=\"Identifier\">ColourDarkGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">6553855</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorGreen\"></a>\n<dt><pre><a href=\"types.html#ColorGreen\"><span class=\"Identifier\">ColorGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">8388863</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourGreen\"></a>\n<dt><pre><a href=\"types.html#ColourGreen\"><span class=\"Identifier\">ColourGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">8388863</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorTeal\"></a>\n<dt><pre><a href=\"types.html#ColorTeal\"><span class=\"Identifier\">ColorTeal</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">8421631</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourTeal\"></a>\n<dt><pre><a href=\"types.html#ColourTeal\"><span class=\"Identifier\">ColourTeal</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">8421631</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkCyan\"></a>\n<dt><pre><a href=\"types.html#ColorDarkCyan\"><span class=\"Identifier\">ColorDarkCyan</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">9145343</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkCyan\"></a>\n<dt><pre><a href=\"types.html#ColourDarkCyan\"><span class=\"Identifier\">ColourDarkCyan</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">9145343</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDeepSkyBlue\"></a>\n<dt><pre><a href=\"types.html#ColorDeepSkyBlue\"><span class=\"Identifier\">ColorDeepSkyBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">12582911</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDeepSkyBlue\"></a>\n<dt><pre><a href=\"types.html#ColourDeepSkyBlue\"><span class=\"Identifier\">ColourDeepSkyBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">12582911</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkTurquoise\"></a>\n<dt><pre><a href=\"types.html#ColorDarkTurquoise\"><span class=\"Identifier\">ColorDarkTurquoise</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">13554175</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkTurquoise\"></a>\n<dt><pre><a href=\"types.html#ColourDarkTurquoise\"><span class=\"Identifier\">ColourDarkTurquoise</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">13554175</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumSpringGreen\"></a>\n<dt><pre><a href=\"types.html#ColorMediumSpringGreen\"><span class=\"Identifier\">ColorMediumSpringGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16423679</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumSpringGreen\"></a>\n<dt><pre><a href=\"types.html#ColourMediumSpringGreen\"><span class=\"Identifier\">ColourMediumSpringGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16423679</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLime\"></a>\n<dt><pre><a href=\"types.html#ColorLime\"><span class=\"Identifier\">ColorLime</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16711935</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLime\"></a>\n<dt><pre><a href=\"types.html#ColourLime\"><span class=\"Identifier\">ColourLime</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16711935</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSpringGreen\"></a>\n<dt><pre><a href=\"types.html#ColorSpringGreen\"><span class=\"Identifier\">ColorSpringGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16744447</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSpringGreen\"></a>\n<dt><pre><a href=\"types.html#ColourSpringGreen\"><span class=\"Identifier\">ColourSpringGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16744447</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorAqua\"></a>\n<dt><pre><a href=\"types.html#ColorAqua\"><span class=\"Identifier\">ColorAqua</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16777215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourAqua\"></a>\n<dt><pre><a href=\"types.html#ColourAqua\"><span class=\"Identifier\">ColourAqua</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16777215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorCyan\"></a>\n<dt><pre><a href=\"types.html#ColorCyan\"><span class=\"Identifier\">ColorCyan</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16777215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourCyan\"></a>\n<dt><pre><a href=\"types.html#ColourCyan\"><span class=\"Identifier\">ColourCyan</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">16777215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMidnightBlue\"></a>\n<dt><pre><a href=\"types.html#ColorMidnightBlue\"><span class=\"Identifier\">ColorMidnightBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">421097727</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMidnightBlue\"></a>\n<dt><pre><a href=\"types.html#ColourMidnightBlue\"><span class=\"Identifier\">ColourMidnightBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">421097727</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDodgerBlue\"></a>\n<dt><pre><a href=\"types.html#ColorDodgerBlue\"><span class=\"Identifier\">ColorDodgerBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">512819199</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDodgerBlue\"></a>\n<dt><pre><a href=\"types.html#ColourDodgerBlue\"><span class=\"Identifier\">ColourDodgerBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">512819199</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightSeaGreen\"></a>\n<dt><pre><a href=\"types.html#ColorLightSeaGreen\"><span class=\"Identifier\">ColorLightSeaGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">548580095</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightSeaGreen\"></a>\n<dt><pre><a href=\"types.html#ColourLightSeaGreen\"><span class=\"Identifier\">ColourLightSeaGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">548580095</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorForestGreen\"></a>\n<dt><pre><a href=\"types.html#ColorForestGreen\"><span class=\"Identifier\">ColorForestGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">579543807</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourForestGreen\"></a>\n<dt><pre><a href=\"types.html#ColourForestGreen\"><span class=\"Identifier\">ColourForestGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">579543807</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSeaGreen\"></a>\n<dt><pre><a href=\"types.html#ColorSeaGreen\"><span class=\"Identifier\">ColorSeaGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">780883967</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSeaGreen\"></a>\n<dt><pre><a href=\"types.html#ColourSeaGreen\"><span class=\"Identifier\">ColourSeaGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">780883967</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkSlateGray\"></a>\n<dt><pre><a href=\"types.html#ColorDarkSlateGray\"><span class=\"Identifier\">ColorDarkSlateGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">793726975</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkSlateGray\"></a>\n<dt><pre><a href=\"types.html#ColourDarkSlateGray\"><span class=\"Identifier\">ColourDarkSlateGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">793726975</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkSlateGrey\"></a>\n<dt><pre><a href=\"types.html#ColorDarkSlateGrey\"><span class=\"Identifier\">ColorDarkSlateGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">793726975</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkSlateGrey\"></a>\n<dt><pre><a href=\"types.html#ColourDarkSlateGrey\"><span class=\"Identifier\">ColourDarkSlateGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">793726975</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLimeGreen\"></a>\n<dt><pre><a href=\"types.html#ColorLimeGreen\"><span class=\"Identifier\">ColorLimeGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">852308735</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLimeGreen\"></a>\n<dt><pre><a href=\"types.html#ColourLimeGreen\"><span class=\"Identifier\">ColourLimeGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">852308735</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumSeaGreen\"></a>\n<dt><pre><a href=\"types.html#ColorMediumSeaGreen\"><span class=\"Identifier\">ColorMediumSeaGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1018393087</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumSeaGreen\"></a>\n<dt><pre><a href=\"types.html#ColourMediumSeaGreen\"><span class=\"Identifier\">ColourMediumSeaGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1018393087</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorTurquoise\"></a>\n<dt><pre><a href=\"types.html#ColorTurquoise\"><span class=\"Identifier\">ColorTurquoise</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1088475391</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourTurquoise\"></a>\n<dt><pre><a href=\"types.html#ColourTurquoise\"><span class=\"Identifier\">ColourTurquoise</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1088475391</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorRoyalBlue\"></a>\n<dt><pre><a href=\"types.html#ColorRoyalBlue\"><span class=\"Identifier\">ColorRoyalBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1097458175</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourRoyalBlue\"></a>\n<dt><pre><a href=\"types.html#ColourRoyalBlue\"><span class=\"Identifier\">ColourRoyalBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1097458175</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSteelBlue\"></a>\n<dt><pre><a href=\"types.html#ColorSteelBlue\"><span class=\"Identifier\">ColorSteelBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1182971135</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSteelBlue\"></a>\n<dt><pre><a href=\"types.html#ColourSteelBlue\"><span class=\"Identifier\">ColourSteelBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1182971135</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkSlateBlue\"></a>\n<dt><pre><a href=\"types.html#ColorDarkSlateBlue\"><span class=\"Identifier\">ColorDarkSlateBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1211993087</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkSlateBlue\"></a>\n<dt><pre><a href=\"types.html#ColourDarkSlateBlue\"><span class=\"Identifier\">ColourDarkSlateBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1211993087</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumTurquoise\"></a>\n<dt><pre><a href=\"types.html#ColorMediumTurquoise\"><span class=\"Identifier\">ColorMediumTurquoise</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1221709055</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumTurquoise\"></a>\n<dt><pre><a href=\"types.html#ColourMediumTurquoise\"><span class=\"Identifier\">ColourMediumTurquoise</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1221709055</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorIndigo\"></a>\n<dt><pre><a href=\"types.html#ColorIndigo\"><span class=\"Identifier\">ColorIndigo</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1258324735</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourIndigo\"></a>\n<dt><pre><a href=\"types.html#ColourIndigo\"><span class=\"Identifier\">ColourIndigo</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1258324735</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkOliveGreen\"></a>\n<dt><pre><a href=\"types.html#ColorDarkOliveGreen\"><span class=\"Identifier\">ColorDarkOliveGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1433087999</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkOliveGreen\"></a>\n<dt><pre><a href=\"types.html#ColourDarkOliveGreen\"><span class=\"Identifier\">ColourDarkOliveGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1433087999</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorCadetBlue\"></a>\n<dt><pre><a href=\"types.html#ColorCadetBlue\"><span class=\"Identifier\">ColorCadetBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1604231423</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourCadetBlue\"></a>\n<dt><pre><a href=\"types.html#ColourCadetBlue\"><span class=\"Identifier\">ColourCadetBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1604231423</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorCornflowerBlue\"></a>\n<dt><pre><a href=\"types.html#ColorCornflowerBlue\"><span class=\"Identifier\">ColorCornflowerBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1687547391</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourCornflowerBlue\"></a>\n<dt><pre><a href=\"types.html#ColourCornflowerBlue\"><span class=\"Identifier\">ColourCornflowerBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1687547391</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorRebeccaPurple\"></a>\n<dt><pre><a href=\"types.html#ColorRebeccaPurple\"><span class=\"Identifier\">ColorRebeccaPurple</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1714657791</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourRebeccaPurple\"></a>\n<dt><pre><a href=\"types.html#ColourRebeccaPurple\"><span class=\"Identifier\">ColourRebeccaPurple</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1714657791</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumAquaMarine\"></a>\n<dt><pre><a href=\"types.html#ColorMediumAquaMarine\"><span class=\"Identifier\">ColorMediumAquaMarine</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1724754687</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumAquaMarine\"></a>\n<dt><pre><a href=\"types.html#ColourMediumAquaMarine\"><span class=\"Identifier\">ColourMediumAquaMarine</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1724754687</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDimGray\"></a>\n<dt><pre><a href=\"types.html#ColorDimGray\"><span class=\"Identifier\">ColorDimGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1768516095</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDimGray\"></a>\n<dt><pre><a href=\"types.html#ColourDimGray\"><span class=\"Identifier\">ColourDimGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1768516095</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDimGrey\"></a>\n<dt><pre><a href=\"types.html#ColorDimGrey\"><span class=\"Identifier\">ColorDimGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1768516095</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDimGrey\"></a>\n<dt><pre><a href=\"types.html#ColourDimGrey\"><span class=\"Identifier\">ColourDimGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1768516095</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSlateBlue\"></a>\n<dt><pre><a href=\"types.html#ColorSlateBlue\"><span class=\"Identifier\">ColorSlateBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1784335871</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSlateBlue\"></a>\n<dt><pre><a href=\"types.html#ColourSlateBlue\"><span class=\"Identifier\">ColourSlateBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1784335871</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorOliveDrab\"></a>\n<dt><pre><a href=\"types.html#ColorOliveDrab\"><span class=\"Identifier\">ColorOliveDrab</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1804477439</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourOliveDrab\"></a>\n<dt><pre><a href=\"types.html#ColourOliveDrab\"><span class=\"Identifier\">ColourOliveDrab</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1804477439</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSlateGray\"></a>\n<dt><pre><a href=\"types.html#ColorSlateGray\"><span class=\"Identifier\">ColorSlateGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1887473919</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSlateGray\"></a>\n<dt><pre><a href=\"types.html#ColourSlateGray\"><span class=\"Identifier\">ColourSlateGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1887473919</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSlateGrey\"></a>\n<dt><pre><a href=\"types.html#ColorSlateGrey\"><span class=\"Identifier\">ColorSlateGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1887473919</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSlateGrey\"></a>\n<dt><pre><a href=\"types.html#ColourSlateGrey\"><span class=\"Identifier\">ColourSlateGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">1887473919</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightSlateGray\"></a>\n<dt><pre><a href=\"types.html#ColorLightSlateGray\"><span class=\"Identifier\">ColorLightSlateGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2005441023</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightSlateGray\"></a>\n<dt><pre><a href=\"types.html#ColourLightSlateGray\"><span class=\"Identifier\">ColourLightSlateGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2005441023</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightSlateGrey\"></a>\n<dt><pre><a href=\"types.html#ColorLightSlateGrey\"><span class=\"Identifier\">ColorLightSlateGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2005441023</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightSlateGrey\"></a>\n<dt><pre><a href=\"types.html#ColourLightSlateGrey\"><span class=\"Identifier\">ColourLightSlateGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2005441023</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumSlateBlue\"></a>\n<dt><pre><a href=\"types.html#ColorMediumSlateBlue\"><span class=\"Identifier\">ColorMediumSlateBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2070474495</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumSlateBlue\"></a>\n<dt><pre><a href=\"types.html#ColourMediumSlateBlue\"><span class=\"Identifier\">ColourMediumSlateBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2070474495</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLawnGreen\"></a>\n<dt><pre><a href=\"types.html#ColorLawnGreen\"><span class=\"Identifier\">ColorLawnGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2096890111</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLawnGreen\"></a>\n<dt><pre><a href=\"types.html#ColourLawnGreen\"><span class=\"Identifier\">ColourLawnGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2096890111</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorChartreuse\"></a>\n<dt><pre><a href=\"types.html#ColorChartreuse\"><span class=\"Identifier\">ColorChartreuse</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2147418367</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourChartreuse\"></a>\n<dt><pre><a href=\"types.html#ColourChartreuse\"><span class=\"Identifier\">ColourChartreuse</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2147418367</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorAquamarine\"></a>\n<dt><pre><a href=\"types.html#ColorAquamarine\"><span class=\"Identifier\">ColorAquamarine</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2147472639</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourAquamarine\"></a>\n<dt><pre><a href=\"types.html#ColourAquamarine\"><span class=\"Identifier\">ColourAquamarine</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2147472639</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMaroon\"></a>\n<dt><pre><a href=\"types.html#ColorMaroon\"><span class=\"Identifier\">ColorMaroon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2147483903</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMaroon\"></a>\n<dt><pre><a href=\"types.html#ColourMaroon\"><span class=\"Identifier\">ColourMaroon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2147483903</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPurple\"></a>\n<dt><pre><a href=\"types.html#ColorPurple\"><span class=\"Identifier\">ColorPurple</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2147516671</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPurple\"></a>\n<dt><pre><a href=\"types.html#ColourPurple\"><span class=\"Identifier\">ColourPurple</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2147516671</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorOlive\"></a>\n<dt><pre><a href=\"types.html#ColorOlive\"><span class=\"Identifier\">ColorOlive</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2155872511</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourOlive\"></a>\n<dt><pre><a href=\"types.html#ColourOlive\"><span class=\"Identifier\">ColourOlive</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2155872511</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorGray\"></a>\n<dt><pre><a href=\"types.html#ColorGray\"><span class=\"Identifier\">ColorGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2155905279</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourGray\"></a>\n<dt><pre><a href=\"types.html#ColourGray\"><span class=\"Identifier\">ColourGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2155905279</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorGrey\"></a>\n<dt><pre><a href=\"types.html#ColorGrey\"><span class=\"Identifier\">ColorGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2155905279</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourGrey\"></a>\n<dt><pre><a href=\"types.html#ColourGrey\"><span class=\"Identifier\">ColourGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2155905279</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSkyBlue\"></a>\n<dt><pre><a href=\"types.html#ColorSkyBlue\"><span class=\"Identifier\">ColorSkyBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2278484991</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSkyBlue\"></a>\n<dt><pre><a href=\"types.html#ColourSkyBlue\"><span class=\"Identifier\">ColourSkyBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2278484991</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightSkyBlue\"></a>\n<dt><pre><a href=\"types.html#ColorLightSkyBlue\"><span class=\"Identifier\">ColorLightSkyBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2278488831</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightSkyBlue\"></a>\n<dt><pre><a href=\"types.html#ColourLightSkyBlue\"><span class=\"Identifier\">ColourLightSkyBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2278488831</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorBlueViolet\"></a>\n<dt><pre><a href=\"types.html#ColorBlueViolet\"><span class=\"Identifier\">ColorBlueViolet</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2318131967</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourBlueViolet\"></a>\n<dt><pre><a href=\"types.html#ColourBlueViolet\"><span class=\"Identifier\">ColourBlueViolet</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2318131967</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkRed\"></a>\n<dt><pre><a href=\"types.html#ColorDarkRed\"><span class=\"Identifier\">ColorDarkRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2332033279</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkRed\"></a>\n<dt><pre><a href=\"types.html#ColourDarkRed\"><span class=\"Identifier\">ColourDarkRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2332033279</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkMagenta\"></a>\n<dt><pre><a href=\"types.html#ColorDarkMagenta\"><span class=\"Identifier\">ColorDarkMagenta</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2332068863</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkMagenta\"></a>\n<dt><pre><a href=\"types.html#ColourDarkMagenta\"><span class=\"Identifier\">ColourDarkMagenta</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2332068863</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSaddleBrown\"></a>\n<dt><pre><a href=\"types.html#ColorSaddleBrown\"><span class=\"Identifier\">ColorSaddleBrown</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2336560127</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSaddleBrown\"></a>\n<dt><pre><a href=\"types.html#ColourSaddleBrown\"><span class=\"Identifier\">ColourSaddleBrown</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2336560127</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkSeaGreen\"></a>\n<dt><pre><a href=\"types.html#ColorDarkSeaGreen\"><span class=\"Identifier\">ColorDarkSeaGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2411499519</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkSeaGreen\"></a>\n<dt><pre><a href=\"types.html#ColourDarkSeaGreen\"><span class=\"Identifier\">ColourDarkSeaGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2411499519</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightGreen\"></a>\n<dt><pre><a href=\"types.html#ColorLightGreen\"><span class=\"Identifier\">ColorLightGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2431553791</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightGreen\"></a>\n<dt><pre><a href=\"types.html#ColourLightGreen\"><span class=\"Identifier\">ColourLightGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2431553791</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumPurple\"></a>\n<dt><pre><a href=\"types.html#ColorMediumPurple\"><span class=\"Identifier\">ColorMediumPurple</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2473647103</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumPurple\"></a>\n<dt><pre><a href=\"types.html#ColourMediumPurple\"><span class=\"Identifier\">ColourMediumPurple</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2473647103</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkViolet\"></a>\n<dt><pre><a href=\"types.html#ColorDarkViolet\"><span class=\"Identifier\">ColorDarkViolet</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2483082239</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkViolet\"></a>\n<dt><pre><a href=\"types.html#ColourDarkViolet\"><span class=\"Identifier\">ColourDarkViolet</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2483082239</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPaleGreen\"></a>\n<dt><pre><a href=\"types.html#ColorPaleGreen\"><span class=\"Identifier\">ColorPaleGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2566625535</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPaleGreen\"></a>\n<dt><pre><a href=\"types.html#ColourPaleGreen\"><span class=\"Identifier\">ColourPaleGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2566625535</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkOrchid\"></a>\n<dt><pre><a href=\"types.html#ColorDarkOrchid\"><span class=\"Identifier\">ColorDarkOrchid</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2570243327</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkOrchid\"></a>\n<dt><pre><a href=\"types.html#ColourDarkOrchid\"><span class=\"Identifier\">ColourDarkOrchid</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2570243327</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorYellowGreen\"></a>\n<dt><pre><a href=\"types.html#ColorYellowGreen\"><span class=\"Identifier\">ColorYellowGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2597139199</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourYellowGreen\"></a>\n<dt><pre><a href=\"types.html#ColourYellowGreen\"><span class=\"Identifier\">ColourYellowGreen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2597139199</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSienna\"></a>\n<dt><pre><a href=\"types.html#ColorSienna\"><span class=\"Identifier\">ColorSienna</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2689740287</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSienna\"></a>\n<dt><pre><a href=\"types.html#ColourSienna\"><span class=\"Identifier\">ColourSienna</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2689740287</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorBrown\"></a>\n<dt><pre><a href=\"types.html#ColorBrown\"><span class=\"Identifier\">ColorBrown</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2771004159</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourBrown\"></a>\n<dt><pre><a href=\"types.html#ColourBrown\"><span class=\"Identifier\">ColourBrown</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2771004159</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkGray\"></a>\n<dt><pre><a href=\"types.html#ColorDarkGray\"><span class=\"Identifier\">ColorDarkGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2846468607</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkGray\"></a>\n<dt><pre><a href=\"types.html#ColourDarkGray\"><span class=\"Identifier\">ColourDarkGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2846468607</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkGrey\"></a>\n<dt><pre><a href=\"types.html#ColorDarkGrey\"><span class=\"Identifier\">ColorDarkGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2846468607</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkGrey\"></a>\n<dt><pre><a href=\"types.html#ColourDarkGrey\"><span class=\"Identifier\">ColourDarkGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2846468607</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightBlue\"></a>\n<dt><pre><a href=\"types.html#ColorLightBlue\"><span class=\"Identifier\">ColorLightBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2916673279</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightBlue\"></a>\n<dt><pre><a href=\"types.html#ColourLightBlue\"><span class=\"Identifier\">ColourLightBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2916673279</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorGreenYellow\"></a>\n<dt><pre><a href=\"types.html#ColorGreenYellow\"><span class=\"Identifier\">ColorGreenYellow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2919182335</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourGreenYellow\"></a>\n<dt><pre><a href=\"types.html#ColourGreenYellow\"><span class=\"Identifier\">ColourGreenYellow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2919182335</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPaleTurquoise\"></a>\n<dt><pre><a href=\"types.html#ColorPaleTurquoise\"><span class=\"Identifier\">ColorPaleTurquoise</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2951671551</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPaleTurquoise\"></a>\n<dt><pre><a href=\"types.html#ColourPaleTurquoise\"><span class=\"Identifier\">ColourPaleTurquoise</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2951671551</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightSteelBlue\"></a>\n<dt><pre><a href=\"types.html#ColorLightSteelBlue\"><span class=\"Identifier\">ColorLightSteelBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2965692159</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightSteelBlue\"></a>\n<dt><pre><a href=\"types.html#ColourLightSteelBlue\"><span class=\"Identifier\">ColourLightSteelBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2965692159</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPowderBlue\"></a>\n<dt><pre><a href=\"types.html#ColorPowderBlue\"><span class=\"Identifier\">ColorPowderBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2967529215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPowderBlue\"></a>\n<dt><pre><a href=\"types.html#ColourPowderBlue\"><span class=\"Identifier\">ColourPowderBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2967529215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorFireBrick\"></a>\n<dt><pre><a href=\"types.html#ColorFireBrick\"><span class=\"Identifier\">ColorFireBrick</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2988581631</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourFireBrick\"></a>\n<dt><pre><a href=\"types.html#ColourFireBrick\"><span class=\"Identifier\">ColourFireBrick</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">2988581631</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkGoldenRod\"></a>\n<dt><pre><a href=\"types.html#ColorDarkGoldenRod\"><span class=\"Identifier\">ColorDarkGoldenRod</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3095792639</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkGoldenRod\"></a>\n<dt><pre><a href=\"types.html#ColourDarkGoldenRod\"><span class=\"Identifier\">ColourDarkGoldenRod</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3095792639</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumOrchid\"></a>\n<dt><pre><a href=\"types.html#ColorMediumOrchid\"><span class=\"Identifier\">ColorMediumOrchid</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3126187007</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumOrchid\"></a>\n<dt><pre><a href=\"types.html#ColourMediumOrchid\"><span class=\"Identifier\">ColourMediumOrchid</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3126187007</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorRosyBrown\"></a>\n<dt><pre><a href=\"types.html#ColorRosyBrown\"><span class=\"Identifier\">ColorRosyBrown</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3163525119</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourRosyBrown\"></a>\n<dt><pre><a href=\"types.html#ColourRosyBrown\"><span class=\"Identifier\">ColourRosyBrown</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3163525119</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkKhaki\"></a>\n<dt><pre><a href=\"types.html#ColorDarkKhaki\"><span class=\"Identifier\">ColorDarkKhaki</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3182914559</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkKhaki\"></a>\n<dt><pre><a href=\"types.html#ColourDarkKhaki\"><span class=\"Identifier\">ColourDarkKhaki</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3182914559</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSilver\"></a>\n<dt><pre><a href=\"types.html#ColorSilver\"><span class=\"Identifier\">ColorSilver</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3233857791</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSilver\"></a>\n<dt><pre><a href=\"types.html#ColourSilver\"><span class=\"Identifier\">ColourSilver</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3233857791</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMediumVioletRed\"></a>\n<dt><pre><a href=\"types.html#ColorMediumVioletRed\"><span class=\"Identifier\">ColorMediumVioletRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3340076543</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMediumVioletRed\"></a>\n<dt><pre><a href=\"types.html#ColourMediumVioletRed\"><span class=\"Identifier\">ColourMediumVioletRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3340076543</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorIndianRed\"></a>\n<dt><pre><a href=\"types.html#ColorIndianRed\"><span class=\"Identifier\">ColorIndianRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3445382399</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourIndianRed\"></a>\n<dt><pre><a href=\"types.html#ColourIndianRed\"><span class=\"Identifier\">ColourIndianRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3445382399</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPeru\"></a>\n<dt><pre><a href=\"types.html#ColorPeru\"><span class=\"Identifier\">ColorPeru</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3448061951</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPeru\"></a>\n<dt><pre><a href=\"types.html#ColourPeru\"><span class=\"Identifier\">ColourPeru</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3448061951</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorChocolate\"></a>\n<dt><pre><a href=\"types.html#ColorChocolate\"><span class=\"Identifier\">ColorChocolate</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3530104575</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourChocolate\"></a>\n<dt><pre><a href=\"types.html#ColourChocolate\"><span class=\"Identifier\">ColourChocolate</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3530104575</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorTan\"></a>\n<dt><pre><a href=\"types.html#ColorTan\"><span class=\"Identifier\">ColorTan</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3535047935</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourTan\"></a>\n<dt><pre><a href=\"types.html#ColourTan\"><span class=\"Identifier\">ColourTan</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3535047935</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightGray\"></a>\n<dt><pre><a href=\"types.html#ColorLightGray\"><span class=\"Identifier\">ColorLightGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3553874943</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightGray\"></a>\n<dt><pre><a href=\"types.html#ColourLightGray\"><span class=\"Identifier\">ColourLightGray</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3553874943</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightGrey\"></a>\n<dt><pre><a href=\"types.html#ColorLightGrey\"><span class=\"Identifier\">ColorLightGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3553874943</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightGrey\"></a>\n<dt><pre><a href=\"types.html#ColourLightGrey\"><span class=\"Identifier\">ColourLightGrey</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3553874943</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorThistle\"></a>\n<dt><pre><a href=\"types.html#ColorThistle\"><span class=\"Identifier\">ColorThistle</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3636451583</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourThistle\"></a>\n<dt><pre><a href=\"types.html#ColourThistle\"><span class=\"Identifier\">ColourThistle</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3636451583</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorOrchid\"></a>\n<dt><pre><a href=\"types.html#ColorOrchid\"><span class=\"Identifier\">ColorOrchid</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3664828159</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourOrchid\"></a>\n<dt><pre><a href=\"types.html#ColourOrchid\"><span class=\"Identifier\">ColourOrchid</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3664828159</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorGoldenRod\"></a>\n<dt><pre><a href=\"types.html#ColorGoldenRod\"><span class=\"Identifier\">ColorGoldenRod</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3668254975</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourGoldenRod\"></a>\n<dt><pre><a href=\"types.html#ColourGoldenRod\"><span class=\"Identifier\">ColourGoldenRod</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3668254975</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPaleVioletRed\"></a>\n<dt><pre><a href=\"types.html#ColorPaleVioletRed\"><span class=\"Identifier\">ColorPaleVioletRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3681588223</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPaleVioletRed\"></a>\n<dt><pre><a href=\"types.html#ColourPaleVioletRed\"><span class=\"Identifier\">ColourPaleVioletRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3681588223</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorCrimson\"></a>\n<dt><pre><a href=\"types.html#ColorCrimson\"><span class=\"Identifier\">ColorCrimson</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3692313855</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourCrimson\"></a>\n<dt><pre><a href=\"types.html#ColourCrimson\"><span class=\"Identifier\">ColourCrimson</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3692313855</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorGainsboro\"></a>\n<dt><pre><a href=\"types.html#ColorGainsboro\"><span class=\"Identifier\">ColorGainsboro</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3705462015</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourGainsboro\"></a>\n<dt><pre><a href=\"types.html#ColourGainsboro\"><span class=\"Identifier\">ColourGainsboro</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3705462015</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPlum\"></a>\n<dt><pre><a href=\"types.html#ColorPlum\"><span class=\"Identifier\">ColorPlum</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3718307327</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPlum\"></a>\n<dt><pre><a href=\"types.html#ColourPlum\"><span class=\"Identifier\">ColourPlum</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3718307327</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorBurlyWood\"></a>\n<dt><pre><a href=\"types.html#ColorBurlyWood\"><span class=\"Identifier\">ColorBurlyWood</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3736635391</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourBurlyWood\"></a>\n<dt><pre><a href=\"types.html#ColourBurlyWood\"><span class=\"Identifier\">ColourBurlyWood</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3736635391</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightCyan\"></a>\n<dt><pre><a href=\"types.html#ColorLightCyan\"><span class=\"Identifier\">ColorLightCyan</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3774873599</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightCyan\"></a>\n<dt><pre><a href=\"types.html#ColourLightCyan\"><span class=\"Identifier\">ColourLightCyan</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3774873599</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLavender\"></a>\n<dt><pre><a href=\"types.html#ColorLavender\"><span class=\"Identifier\">ColorLavender</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3873897215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLavender\"></a>\n<dt><pre><a href=\"types.html#ColourLavender\"><span class=\"Identifier\">ColourLavender</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3873897215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkSalmon\"></a>\n<dt><pre><a href=\"types.html#ColorDarkSalmon\"><span class=\"Identifier\">ColorDarkSalmon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3918953215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkSalmon\"></a>\n<dt><pre><a href=\"types.html#ColourDarkSalmon\"><span class=\"Identifier\">ColourDarkSalmon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">3918953215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorViolet\"></a>\n<dt><pre><a href=\"types.html#ColorViolet\"><span class=\"Identifier\">ColorViolet</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4001558271</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourViolet\"></a>\n<dt><pre><a href=\"types.html#ColourViolet\"><span class=\"Identifier\">ColourViolet</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4001558271</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPaleGoldenRod\"></a>\n<dt><pre><a href=\"types.html#ColorPaleGoldenRod\"><span class=\"Identifier\">ColorPaleGoldenRod</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4008225535</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPaleGoldenRod\"></a>\n<dt><pre><a href=\"types.html#ColourPaleGoldenRod\"><span class=\"Identifier\">ColourPaleGoldenRod</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4008225535</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightCoral\"></a>\n<dt><pre><a href=\"types.html#ColorLightCoral\"><span class=\"Identifier\">ColorLightCoral</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4034953471</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightCoral\"></a>\n<dt><pre><a href=\"types.html#ColourLightCoral\"><span class=\"Identifier\">ColourLightCoral</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4034953471</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorKhaki\"></a>\n<dt><pre><a href=\"types.html#ColorKhaki\"><span class=\"Identifier\">ColorKhaki</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4041641215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourKhaki\"></a>\n<dt><pre><a href=\"types.html#ColourKhaki\"><span class=\"Identifier\">ColourKhaki</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4041641215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorAliceBlue\"></a>\n<dt><pre><a href=\"types.html#ColorAliceBlue\"><span class=\"Identifier\">ColorAliceBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4042850303</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourAliceBlue\"></a>\n<dt><pre><a href=\"types.html#ColourAliceBlue\"><span class=\"Identifier\">ColourAliceBlue</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4042850303</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorHoneyDew\"></a>\n<dt><pre><a href=\"types.html#ColorHoneyDew\"><span class=\"Identifier\">ColorHoneyDew</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4043305215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourHoneyDew\"></a>\n<dt><pre><a href=\"types.html#ColourHoneyDew\"><span class=\"Identifier\">ColourHoneyDew</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4043305215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorAzure\"></a>\n<dt><pre><a href=\"types.html#ColorAzure\"><span class=\"Identifier\">ColorAzure</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4043309055</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourAzure\"></a>\n<dt><pre><a href=\"types.html#ColourAzure\"><span class=\"Identifier\">ColourAzure</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4043309055</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSandyBrown\"></a>\n<dt><pre><a href=\"types.html#ColorSandyBrown\"><span class=\"Identifier\">ColorSandyBrown</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4104413439</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSandyBrown\"></a>\n<dt><pre><a href=\"types.html#ColourSandyBrown\"><span class=\"Identifier\">ColourSandyBrown</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4104413439</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorWheat\"></a>\n<dt><pre><a href=\"types.html#ColorWheat\"><span class=\"Identifier\">ColorWheat</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4125012991</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourWheat\"></a>\n<dt><pre><a href=\"types.html#ColourWheat\"><span class=\"Identifier\">ColourWheat</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4125012991</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorBeige\"></a>\n<dt><pre><a href=\"types.html#ColorBeige\"><span class=\"Identifier\">ColorBeige</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4126530815</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourBeige\"></a>\n<dt><pre><a href=\"types.html#ColourBeige\"><span class=\"Identifier\">ColourBeige</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4126530815</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorWhiteSmoke\"></a>\n<dt><pre><a href=\"types.html#ColorWhiteSmoke\"><span class=\"Identifier\">ColorWhiteSmoke</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4126537215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourWhiteSmoke\"></a>\n<dt><pre><a href=\"types.html#ColourWhiteSmoke\"><span class=\"Identifier\">ColourWhiteSmoke</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4126537215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMintCream\"></a>\n<dt><pre><a href=\"types.html#ColorMintCream\"><span class=\"Identifier\">ColorMintCream</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4127193855</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMintCream\"></a>\n<dt><pre><a href=\"types.html#ColourMintCream\"><span class=\"Identifier\">ColourMintCream</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4127193855</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorGhostWhite\"></a>\n<dt><pre><a href=\"types.html#ColorGhostWhite\"><span class=\"Identifier\">ColorGhostWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4177068031</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourGhostWhite\"></a>\n<dt><pre><a href=\"types.html#ColourGhostWhite\"><span class=\"Identifier\">ColourGhostWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4177068031</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSalmon\"></a>\n<dt><pre><a href=\"types.html#ColorSalmon\"><span class=\"Identifier\">ColorSalmon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4202722047</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSalmon\"></a>\n<dt><pre><a href=\"types.html#ColourSalmon\"><span class=\"Identifier\">ColourSalmon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4202722047</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorAntiqueWhite\"></a>\n<dt><pre><a href=\"types.html#ColorAntiqueWhite\"><span class=\"Identifier\">ColorAntiqueWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4209760255</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourAntiqueWhite\"></a>\n<dt><pre><a href=\"types.html#ColourAntiqueWhite\"><span class=\"Identifier\">ColourAntiqueWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4209760255</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLinen\"></a>\n<dt><pre><a href=\"types.html#ColorLinen\"><span class=\"Identifier\">ColorLinen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4210091775</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLinen\"></a>\n<dt><pre><a href=\"types.html#ColourLinen\"><span class=\"Identifier\">ColourLinen</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4210091775</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightGoldenRodYellow\"></a>\n<dt><pre><a href=\"types.html#ColorLightGoldenRodYellow\"><span class=\"Identifier\">ColorLightGoldenRodYellow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4210742015</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightGoldenRodYellow\"></a>\n<dt><pre><a href=\"types.html#ColourLightGoldenRodYellow\"><span class=\"Identifier\">ColourLightGoldenRodYellow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4210742015</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorOldLace\"></a>\n<dt><pre><a href=\"types.html#ColorOldLace\"><span class=\"Identifier\">ColorOldLace</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4260751103</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourOldLace\"></a>\n<dt><pre><a href=\"types.html#ColourOldLace\"><span class=\"Identifier\">ColourOldLace</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4260751103</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorRed\"></a>\n<dt><pre><a href=\"types.html#ColorRed\"><span class=\"Identifier\">ColorRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4278190335</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourRed\"></a>\n<dt><pre><a href=\"types.html#ColourRed\"><span class=\"Identifier\">ColourRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4278190335</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorFuchsia\"></a>\n<dt><pre><a href=\"types.html#ColorFuchsia\"><span class=\"Identifier\">ColorFuchsia</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4278255615</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourFuchsia\"></a>\n<dt><pre><a href=\"types.html#ColourFuchsia\"><span class=\"Identifier\">ColourFuchsia</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4278255615</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMagenta\"></a>\n<dt><pre><a href=\"types.html#ColorMagenta\"><span class=\"Identifier\">ColorMagenta</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4278255615</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMagenta\"></a>\n<dt><pre><a href=\"types.html#ColourMagenta\"><span class=\"Identifier\">ColourMagenta</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4278255615</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDeepPink\"></a>\n<dt><pre><a href=\"types.html#ColorDeepPink\"><span class=\"Identifier\">ColorDeepPink</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4279538687</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDeepPink\"></a>\n<dt><pre><a href=\"types.html#ColourDeepPink\"><span class=\"Identifier\">ColourDeepPink</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4279538687</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorOrangeRed\"></a>\n<dt><pre><a href=\"types.html#ColorOrangeRed\"><span class=\"Identifier\">ColorOrangeRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4282712319</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourOrangeRed\"></a>\n<dt><pre><a href=\"types.html#ColourOrangeRed\"><span class=\"Identifier\">ColourOrangeRed</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4282712319</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorTomato\"></a>\n<dt><pre><a href=\"types.html#ColorTomato\"><span class=\"Identifier\">ColorTomato</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4284696575</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourTomato\"></a>\n<dt><pre><a href=\"types.html#ColourTomato\"><span class=\"Identifier\">ColourTomato</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4284696575</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorHotPink\"></a>\n<dt><pre><a href=\"types.html#ColorHotPink\"><span class=\"Identifier\">ColorHotPink</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4285117695</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourHotPink\"></a>\n<dt><pre><a href=\"types.html#ColourHotPink\"><span class=\"Identifier\">ColourHotPink</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4285117695</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorCoral\"></a>\n<dt><pre><a href=\"types.html#ColorCoral\"><span class=\"Identifier\">ColorCoral</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4286533887</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourCoral\"></a>\n<dt><pre><a href=\"types.html#ColourCoral\"><span class=\"Identifier\">ColourCoral</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4286533887</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorDarkOrange\"></a>\n<dt><pre><a href=\"types.html#ColorDarkOrange\"><span class=\"Identifier\">ColorDarkOrange</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4287365375</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourDarkOrange\"></a>\n<dt><pre><a href=\"types.html#ColourDarkOrange\"><span class=\"Identifier\">ColourDarkOrange</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4287365375</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightSalmon\"></a>\n<dt><pre><a href=\"types.html#ColorLightSalmon\"><span class=\"Identifier\">ColorLightSalmon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4288707327</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightSalmon\"></a>\n<dt><pre><a href=\"types.html#ColourLightSalmon\"><span class=\"Identifier\">ColourLightSalmon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4288707327</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorOrange\"></a>\n<dt><pre><a href=\"types.html#ColorOrange\"><span class=\"Identifier\">ColorOrange</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4289003775</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourOrange\"></a>\n<dt><pre><a href=\"types.html#ColourOrange\"><span class=\"Identifier\">ColourOrange</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4289003775</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightPink\"></a>\n<dt><pre><a href=\"types.html#ColorLightPink\"><span class=\"Identifier\">ColorLightPink</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4290167295</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightPink\"></a>\n<dt><pre><a href=\"types.html#ColourLightPink\"><span class=\"Identifier\">ColourLightPink</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4290167295</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPink\"></a>\n<dt><pre><a href=\"types.html#ColorPink\"><span class=\"Identifier\">ColorPink</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4290825215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPink\"></a>\n<dt><pre><a href=\"types.html#ColourPink\"><span class=\"Identifier\">ColourPink</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4290825215</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorGold\"></a>\n<dt><pre><a href=\"types.html#ColorGold\"><span class=\"Identifier\">ColorGold</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4292280575</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourGold\"></a>\n<dt><pre><a href=\"types.html#ColourGold\"><span class=\"Identifier\">ColourGold</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4292280575</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPeachPuff\"></a>\n<dt><pre><a href=\"types.html#ColorPeachPuff\"><span class=\"Identifier\">ColorPeachPuff</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4292524543</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPeachPuff\"></a>\n<dt><pre><a href=\"types.html#ColourPeachPuff\"><span class=\"Identifier\">ColourPeachPuff</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4292524543</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorNavajoWhite\"></a>\n<dt><pre><a href=\"types.html#ColorNavajoWhite\"><span class=\"Identifier\">ColorNavajoWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4292783615</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourNavajoWhite\"></a>\n<dt><pre><a href=\"types.html#ColourNavajoWhite\"><span class=\"Identifier\">ColourNavajoWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4292783615</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMoccasin\"></a>\n<dt><pre><a href=\"types.html#ColorMoccasin\"><span class=\"Identifier\">ColorMoccasin</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293178879</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMoccasin\"></a>\n<dt><pre><a href=\"types.html#ColourMoccasin\"><span class=\"Identifier\">ColourMoccasin</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293178879</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorBisque\"></a>\n<dt><pre><a href=\"types.html#ColorBisque\"><span class=\"Identifier\">ColorBisque</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293182719</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourBisque\"></a>\n<dt><pre><a href=\"types.html#ColourBisque\"><span class=\"Identifier\">ColourBisque</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293182719</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorMistyRose\"></a>\n<dt><pre><a href=\"types.html#ColorMistyRose\"><span class=\"Identifier\">ColorMistyRose</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293190143</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourMistyRose\"></a>\n<dt><pre><a href=\"types.html#ColourMistyRose\"><span class=\"Identifier\">ColourMistyRose</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293190143</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorBlanchedAlmond\"></a>\n<dt><pre><a href=\"types.html#ColorBlanchedAlmond\"><span class=\"Identifier\">ColorBlanchedAlmond</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293643775</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourBlanchedAlmond\"></a>\n<dt><pre><a href=\"types.html#ColourBlanchedAlmond\"><span class=\"Identifier\">ColourBlanchedAlmond</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293643775</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorPapayaWhip\"></a>\n<dt><pre><a href=\"types.html#ColorPapayaWhip\"><span class=\"Identifier\">ColorPapayaWhip</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293907967</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourPapayaWhip\"></a>\n<dt><pre><a href=\"types.html#ColourPapayaWhip\"><span class=\"Identifier\">ColourPapayaWhip</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293907967</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLavenderBlush\"></a>\n<dt><pre><a href=\"types.html#ColorLavenderBlush\"><span class=\"Identifier\">ColorLavenderBlush</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293981695</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLavenderBlush\"></a>\n<dt><pre><a href=\"types.html#ColourLavenderBlush\"><span class=\"Identifier\">ColourLavenderBlush</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4293981695</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSeaShell\"></a>\n<dt><pre><a href=\"types.html#ColorSeaShell\"><span class=\"Identifier\">ColorSeaShell</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294307583</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSeaShell\"></a>\n<dt><pre><a href=\"types.html#ColourSeaShell\"><span class=\"Identifier\">ColourSeaShell</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294307583</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorCornsilk\"></a>\n<dt><pre><a href=\"types.html#ColorCornsilk\"><span class=\"Identifier\">ColorCornsilk</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294499583</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourCornsilk\"></a>\n<dt><pre><a href=\"types.html#ColourCornsilk\"><span class=\"Identifier\">ColourCornsilk</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294499583</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLemonChiffon\"></a>\n<dt><pre><a href=\"types.html#ColorLemonChiffon\"><span class=\"Identifier\">ColorLemonChiffon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294626815</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLemonChiffon\"></a>\n<dt><pre><a href=\"types.html#ColourLemonChiffon\"><span class=\"Identifier\">ColourLemonChiffon</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294626815</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorFloralWhite\"></a>\n<dt><pre><a href=\"types.html#ColorFloralWhite\"><span class=\"Identifier\">ColorFloralWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294635775</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourFloralWhite\"></a>\n<dt><pre><a href=\"types.html#ColourFloralWhite\"><span class=\"Identifier\">ColourFloralWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294635775</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorSnow\"></a>\n<dt><pre><a href=\"types.html#ColorSnow\"><span class=\"Identifier\">ColorSnow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294638335</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourSnow\"></a>\n<dt><pre><a href=\"types.html#ColourSnow\"><span class=\"Identifier\">ColourSnow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294638335</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorYellow\"></a>\n<dt><pre><a href=\"types.html#ColorYellow\"><span class=\"Identifier\">ColorYellow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294902015</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourYellow\"></a>\n<dt><pre><a href=\"types.html#ColourYellow\"><span class=\"Identifier\">ColourYellow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294902015</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorLightYellow\"></a>\n<dt><pre><a href=\"types.html#ColorLightYellow\"><span class=\"Identifier\">ColorLightYellow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294959359</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourLightYellow\"></a>\n<dt><pre><a href=\"types.html#ColourLightYellow\"><span class=\"Identifier\">ColourLightYellow</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294959359</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorIvory\"></a>\n<dt><pre><a href=\"types.html#ColorIvory\"><span class=\"Identifier\">ColorIvory</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294963455</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourIvory\"></a>\n<dt><pre><a href=\"types.html#ColourIvory\"><span class=\"Identifier\">ColourIvory</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294963455</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColorWhite\"></a>\n<dt><pre><a href=\"types.html#ColorWhite\"><span class=\"Identifier\">ColorWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294967295</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"ColourWhite\"></a>\n<dt><pre><a href=\"types.html#ColourWhite\"><span class=\"Identifier\">ColourWhite</span></a> <span class=\"Other\">=</span> <span class=\"DecNumber\">4294967295</span></pre></dt>\n<dd>\n\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"==,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%3D%3D%2CCoord%2CCoord\"><span class=\"Identifier\">`==`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%2CCoord\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%2CCoord%2CCoord\"><span class=\"Identifier\">`+`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+=,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%3D%2CCoord%2CCoord\"><span class=\"Identifier\">`+=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%2CCoord%2CCoord\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-=,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%3D%2CCoord%2CCoord\"><span class=\"Identifier\">`-=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%2CCoord%2CCoord\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*=,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%3D%2CCoord%2CCoord\"><span class=\"Identifier\">`*=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"/,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2F%2CCoord%2CCoord\"><span class=\"Identifier\">`/`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"/=,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2F%3D%2CCoord%2CCoord\"><span class=\"Identifier\">`/=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%2CCoord%2Cfloat\"><span class=\"Identifier\">`+`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+=,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%3D%2CCoord%2Cfloat\"><span class=\"Identifier\">`+=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%2CCoord%2Cfloat\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-=,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%3D%2CCoord%2Cfloat\"><span class=\"Identifier\">`-=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%2CCoord%2Cfloat\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*=,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%3D%2CCoord%2Cfloat\"><span class=\"Identifier\">`*=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"/,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2F%2CCoord%2Cfloat\"><span class=\"Identifier\">`/`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"/=,Coord,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2F%3D%2CCoord%2Cfloat\"><span class=\"Identifier\">`/=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"abs,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#abs%2CCoord\"><span class=\"Identifier\">abs</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"sin,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#sin%2CCoord\"><span class=\"Identifier\">sin</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"arcsin,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#arcsin%2CCoord\"><span class=\"Identifier\">arcsin</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"==,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%3D%3D%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">`==`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%2CCoordInt\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">`+`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+=,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%3D%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">`+=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-=,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%3D%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">`-=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*=,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%3D%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">`*=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"div,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#div%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">`div`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">,</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"div=,CoordInt,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#div%3D%2CCoordInt%2CCoordInt\"><span class=\"Identifier\">div=</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">c2</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+,CoordInt,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%2CCoordInt%2Cint\"><span class=\"Identifier\">`+`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+=,CoordInt,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%3D%2CCoordInt%2Cint\"><span class=\"Identifier\">`+=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-,CoordInt,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%2CCoordInt%2Cint\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-=,CoordInt,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%3D%2CCoordInt%2Cint\"><span class=\"Identifier\">`-=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*,CoordInt,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%2CCoordInt%2Cint\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*=,CoordInt,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%3D%2CCoordInt%2Cint\"><span class=\"Identifier\">`*=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"div,CoordInt,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#div%2CCoordInt%2Cint\"><span class=\"Identifier\">`div`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"div=,CoordInt,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#div%3D%2CCoordInt%2Cint\"><span class=\"Identifier\">div=</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"abs,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#abs%2CCoordInt\"><span class=\"Identifier\">abs</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"==,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%3D%3D%2CDim%2CDim\"><span class=\"Identifier\">`==`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">,</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%2CDim%2CDim\"><span class=\"Identifier\">`+`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">,</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+=,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%3D%2CDim%2CDim\"><span class=\"Identifier\">`+=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%2CDim%2CDim\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">,</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-=,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%3D%2CDim%2CDim\"><span class=\"Identifier\">`-=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%2CDim%2CDim\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">,</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*=,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%3D%2CDim%2CDim\"><span class=\"Identifier\">`*=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"/,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2F%2CDim%2CDim\"><span class=\"Identifier\">`/`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">,</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"/=,Dim,Dim\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2F%3D%2CDim%2CDim\"><span class=\"Identifier\">`/=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d1</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+,Dim,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%2CDim%2Cint\"><span class=\"Identifier\">`+`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+=,Dim,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2B%3D%2CDim%2Cint\"><span class=\"Identifier\">`+=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-,Dim,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%2CDim%2Cint\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-=,Dim,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#-%3D%2CDim%2Cint\"><span class=\"Identifier\">`-=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*,Dim,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%2CDim%2Cint\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*=,Dim,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2A%3D%2CDim%2Cint\"><span class=\"Identifier\">`*=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"/,Dim,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2F%2CDim%2Cint\"><span class=\"Identifier\">`/`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"/=,Dim,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <a href=\"#%2F%3D%2CDim%2Cint\"><span class=\"Identifier\">`/=`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"16\">\n<h1><a class=\"toc-backref\" href=\"#16\">Converters</a></h1>\n<dl class=\"item\">\n<a id=\"toSeq.c,Slice[T]\"></a>\n<dt><pre><span class=\"Keyword\">converter</span> <a href=\"#toSeq.c%2CSlice%5BT%5D\"><span class=\"Identifier\">toSeq</span></a><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">s</span><span class=\"Other\">:</span> <span class=\"Identifier\">Slice</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"toUint32.c,Color\"></a>\n<dt><pre><span class=\"Keyword\">converter</span> <a href=\"#toUint32.c%2CColor\"><span class=\"Identifier\">toUint32</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\nColor(r, g, b, a) to 0xRRGGBBAA \n\n</dd>\n<a id=\"toColor.c,uint32\"></a>\n<dt><pre><span class=\"Keyword\">converter</span> <a href=\"#toColor.c%2Cuint32\"><span class=\"Identifier\">toColor</span></a><span class=\"Other\">(</span><span class=\"Identifier\">u</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n0xRRGGBBAA to Color(r, g, b, a) \n\n</dd>\n<a id=\"toDim.c,Coord\"></a>\n<dt><pre><span class=\"Keyword\">converter</span> <a href=\"#toDim.c%2CCoord\"><span class=\"Identifier\">toDim</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"toDim.c,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">converter</span> <a href=\"#toDim.c%2CCoordInt\"><span class=\"Identifier\">toDim</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"toCoord.c,Dim\"></a>\n<dt><pre><span class=\"Keyword\">converter</span> <a href=\"#toCoord.c%2CDim\"><span class=\"Identifier\">toCoord</span></a><span class=\"Other\">(</span><span class=\"Identifier\">d</span><span class=\"Other\">:</span> <a href=\"types.html#Dim\"><span class=\"Identifier\">Dim</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"neg.t,Color\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#neg.t%2CColor\"><span class=\"Identifier\">neg</span></a><span class=\"Other\">(</span><span class=\"Identifier\">c</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Color</span></pre></dt>\n<dd>\n\n\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> negative to color <tt class=\"docutils literal\"><span class=\"pre\">c</span></tt>.\n\n</dd>\n<a id=\"+.t,float,Coord\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#%2B.t%2Cfloat%2CCoord\"><span class=\"Identifier\">`+`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-.t,float,Coord\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#-.t%2Cfloat%2CCoord\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*.t,float,Coord\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#%2A.t%2Cfloat%2CCoord\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"+.t,int,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#%2B.t%2Cint%2CCoordInt\"><span class=\"Identifier\">`+`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"-.t,int,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#-.t%2Cint%2CCoordInt\"><span class=\"Identifier\">`-`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*.t,int,CoordInt\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#%2A.t%2Cint%2CCoordInt\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">v</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">;</span> <span class=\"Identifier\">c</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#CoordInt\"><span class=\"Identifier\">CoordInt</span></a></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"*.t,Transform,Coord\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#%2A.t%2CTransform%2CCoord\"><span class=\"Identifier\">`*`</span></a><span class=\"Other\">(</span><span class=\"Identifier\">transform</span><span class=\"Other\">:</span> <a href=\"types.html#Transform\"><span class=\"Identifier\">Transform</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">point</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a></pre></dt>\n<dd>\n\n\n\n</dd>\n<a id=\"local.t,Transform\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <a href=\"#local.t%2CTransform\"><span class=\"Identifier\">local</span></a><span class=\"Other\">(</span><span class=\"Identifier\">transform</span><span class=\"Other\">:</span> <a href=\"types.html#Transform\"><span class=\"Identifier\">Transform</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Transform\"><span class=\"Identifier\">Transform</span></a></pre></dt>\n<dd>\n\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-06-15 20:16:27 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/typewriter.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>typewriter</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">typewriter</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Typewriter\"\n    title=\"Typewriter = ref object of Entity\n  fText: seq[char]             ## typewriter&#x27;s queue\n  fRemainder: float            ## internal timer (in seconds)\n  rate*: float                 ## typewriter&#x27;s rate (in seconds)\n  width*: int                  ## line width limit, no limit if `0` (default)\"><wbr />Typewriter<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#newTypewriter%2CTextGraphic%2Cfloat\"\n    title=\"newTypewriter(text: TextGraphic; rate: float): Typewriter\"><wbr />new<wbr />Typewriter<span class=\"attachedType\" style=\"visibility:hidden\">Typewriter</span></a></li>\n  <li><a class=\"reference\" href=\"#add%2CTypewriter%2Cstring\"\n    title=\"add(tw: Typewriter; text: string)\"><wbr />add<span class=\"attachedType\" style=\"visibility:hidden\">Typewriter</span></a></li>\n  <li><a class=\"reference\" href=\"#dump%2CTypewriter\"\n    title=\"dump(tw: Typewriter): string\"><wbr />dump<span class=\"attachedType\" style=\"visibility:hidden\">Typewriter</span></a></li>\n  <li><a class=\"reference\" href=\"#clear%2CTypewriter\"\n    title=\"clear(tw: Typewriter)\"><wbr />clear<span class=\"attachedType\" style=\"visibility:hidden\">Typewriter</span></a></li>\n  <li><a class=\"reference\" href=\"#force%2CTypewriter%2Cstring\"\n    title=\"force(tw: Typewriter; text: string = &quot;&quot;)\"><wbr />force<span class=\"attachedType\" style=\"visibility:hidden\">Typewriter</span></a></li>\n  <li><a class=\"reference\" href=\"#updateTypewriter%2CTypewriter%2Cfloat\"\n    title=\"updateTypewriter(tw: Typewriter; elapsed: float)\"><wbr />update<wbr />Typewriter<span class=\"attachedType\" style=\"visibility:hidden\">Typewriter</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#14\" id=\"64\">Methods</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#update.e%2CTypewriter%2Cfloat\"\n    title=\"update(tw: Typewriter; elapsed: float)\"><wbr />update<span class=\"attachedType\" style=\"visibility:hidden\">Typewriter</span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"entity.html\">entity</a>, <a class=\"reference external\" href=\"textgraphic.html\">textgraphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Typewriter\"></a>\n<dt><pre><a href=\"typewriter.html#Typewriter\"><span class=\"Identifier\">Typewriter</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span> <span class=\"Keyword\">of</span> <a href=\"entity.html#Entity\"><span class=\"Identifier\">Entity</span></a>\n  <span class=\"Identifier\">fText</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">char</span><span class=\"Other\">]</span>             <span class=\"Comment\">## typewriter's queue</span>\n  <span class=\"Identifier\">fRemainder</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>            <span class=\"Comment\">## internal timer (in seconds)</span>\n  <span class=\"Identifier\">rate</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span>                 <span class=\"Comment\">## typewriter's rate (in seconds)</span>\n  <span class=\"Identifier\">width</span><span class=\"Operator\">*</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>                  <span class=\"Comment\">## line width limit, no limit if `0` (default)</span>\n  </pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"newTypewriter,TextGraphic,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newTypewriter</span><span class=\"Other\">(</span><span class=\"Identifier\">text</span><span class=\"Other\">:</span> <a href=\"textgraphic.html#TextGraphic\"><span class=\"Identifier\">TextGraphic</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">rate</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"typewriter.html#Typewriter\"><span class=\"Identifier\">Typewriter</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"add,Typewriter,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">add</span><span class=\"Other\">(</span><span class=\"Identifier\">tw</span><span class=\"Other\">:</span> <a href=\"typewriter.html#Typewriter\"><span class=\"Identifier\">Typewriter</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">text</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nAdd new <tt class=\"docutils literal\"><span class=\"pre\">text</span></tt> to the typewriter's queue. \n\n</dd>\n<a id=\"dump,Typewriter\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">dump</span><span class=\"Other\">(</span><span class=\"Identifier\">tw</span><span class=\"Other\">:</span> <a href=\"typewriter.html#Typewriter\"><span class=\"Identifier\">Typewriter</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the text awaiting in the typewriter's queue. \n\n</dd>\n<a id=\"clear,Typewriter\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">clear</span><span class=\"Other\">(</span><span class=\"Identifier\">tw</span><span class=\"Other\">:</span> <a href=\"typewriter.html#Typewriter\"><span class=\"Identifier\">Typewriter</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nDelete the text awaiting in the typewriter's queue. \n\n</dd>\n<a id=\"force,Typewriter,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">force</span><span class=\"Other\">(</span><span class=\"Identifier\">tw</span><span class=\"Other\">:</span> <a href=\"typewriter.html#Typewriter\"><span class=\"Identifier\">Typewriter</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">text</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span class=\"Other\">=</span> <span class=\"StringLit\">&quot;&quot;</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nAdd new <tt class=\"docutils literal\"><span class=\"pre\">text</span></tt> to the typewriter's queue and then output it all immediately. \n\n</dd>\n<a id=\"updateTypewriter,Typewriter,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">updateTypewriter</span><span class=\"Other\">(</span><span class=\"Identifier\">tw</span><span class=\"Other\">:</span> <a href=\"typewriter.html#Typewriter\"><span class=\"Identifier\">Typewriter</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"14\">\n<h1><a class=\"toc-backref\" href=\"#14\">Methods</a></h1>\n<dl class=\"item\">\n<a id=\"update.e,Typewriter,float\"></a>\n<dt><pre><span class=\"Keyword\">method</span> <span class=\"Identifier\">update</span><span class=\"Other\">(</span><span class=\"Identifier\">tw</span><span class=\"Other\">:</span> <a href=\"typewriter.html#Typewriter\"><span class=\"Identifier\">Typewriter</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">elapsed</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:43 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs/utils.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!--  This file is generated by Nim. -->\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<!-- Favicon -->\n<link rel=\"shortcut icon\" href=\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\"/>\n\n<!-- Google fonts -->\n<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>\n<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>\n\n<!-- CSS -->\n<title>utils</title>\n<style type=\"text/css\" >\n/*\nStylesheet for use with Docutils/rst2html.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n\nModified from Chad Skeeters' rst2html-style\nhttps://bitbucket.org/cskeeters/rst2html-style/\n\nModified by Boyd Greenfield\n*/\n/* SCSS variables */\n/* Text weights */\n/* Body colors */\n/* Text colors */\n/* Link colors */\n/* Syntax highlighting colors */\n/* Pct changes */\n/* Mixins */\n/* Body/layout */\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%; }\n\n/* Where we want fancier font if available */\nh1, h2, h3, h4, h5, h6, p.module-desc, table.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important; }\n\nh1.title {\n  font-weight: 900; }\n\nbody {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 20px;\n  color: #444;\n  letter-spacing: 0.15px;\n  background-color: #FDFBFA; }\n\n/* Skeleton grid */\n.container {\n  position: relative;\n  width: 100%;\n  max-width: 960px;\n  margin: 0 auto;\n  padding: 0 20px;\n  box-sizing: border-box; }\n\n.column,\n.columns {\n  width: 100%;\n  float: left;\n  box-sizing: border-box; }\n\n/* For devices larger than 400px */\n@media (min-width: 400px) {\n  .container {\n    width: 100%;\n    padding: 0; } }\n/* For devices larger than 650px */\n@media (min-width: 650px) {\n  .container {\n    width: 100%; }\n\n  .column,\n  .columns {\n    margin-left: 4%; }\n\n  .column:first-child,\n  .columns:first-child {\n    margin-left: 0; }\n\n  .one.column,\n  .one.columns {\n    width: 4.66666666667%; }\n\n  .two.columns {\n    width: 13.3333333333%; }\n\n  .three.columns {\n    width: 22%; }\n\n  .four.columns {\n    width: 30.6666666667%; }\n\n  .five.columns {\n    width: 39.3333333333%; }\n\n  .six.columns {\n    width: 48%; }\n\n  .seven.columns {\n    width: 56.6666666667%; }\n\n  .eight.columns {\n    width: 65.3333333333%; }\n\n  .nine.columns {\n    width: 74.0%; }\n\n  .ten.columns {\n    width: 82.6666666667%; }\n\n  .eleven.columns {\n    width: 91.3333333333%; }\n\n  .twelve.columns {\n    width: 100%;\n    margin-left: 0; }\n\n  .one-third.column {\n    width: 30.6666666667%; }\n\n  .two-thirds.column {\n    width: 65.3333333333%; } }\n/* Customer Overrides */\n.footer {\n  text-align: center;\n  color: #969696;\n  padding-top: 10%; }\n\np.module-desc {\n  font-size: 1.1em;\n  color: #666666; }\n\na.link-seesrc {\n  color: #aec7d2;\n  font-style: italic; }\n\na.link-seesrc:hover {\n  color: #6c9aae; }\n\n#toc-list {\n  word-wrap: break-word; }\n\nul.simple-toc {\n  list-style: none; }\n\nul.simple-toc a.reference-toplevel {\n  font-weight: bold;\n  color: #0077b3; }\n\nul.simple-toc-section {\n  list-style-type: circle;\n  color: #6c9aae; }\n\nul.simple-toc-section a.reference {\n  color: #0077b3; }\n\ncite {\n  font-style: italic !important; }\n\ndt > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: rgba(255, 255, 255, 0.3);\n  margin: 15px 0px 5px; }\n\ndd > pre {\n  border-color: rgba(0, 0, 0, 0.1);\n  background-color: whitesmoke;\n  margin-top: 8px; }\n\n.item > dd {\n  margin-left: 10px;\n  margin-bottom: 30px; }\n\n/* Nim line-numbered tables */\n.line-nums-table {\n  width: 100%;\n  table-layout: fixed; }\n\n/* Nim search input */\ndiv#searchInputDiv {\n  margin-bottom: 8px;\n}\ndiv#searchInputDiv input#searchInput {\n  width: 10em;\n}\ndiv.search-groupby {\n  margin-bottom: 8px;\n}\n\ntable.line-nums-table {\n  border-radius: 4px;\n  border: 1px solid #cccccc;\n  background-color: whitesmoke;\n  border-collapse: separate;\n  margin-top: 15px;\n  margin-bottom: 25px; }\n\n.line-nums-table tbody {\n  border: none; }\n\n.line-nums-table td pre {\n  border: none;\n  background-color: transparent; }\n\n.line-nums-table td.blob-line-nums {\n  width: 28px; }\n\n.line-nums-table td.blob-line-nums pre {\n  color: #b0b0b0;\n  -webkit-filter: opacity(75%);\n  text-align: right;\n  border-color: transparent;\n  background-color: transparent;\n  padding-left: 0px;\n  margin-left: 0px;\n  padding-right: 0px;\n  margin-right: 0px; }\n\n/* Docgen styles */\n/* Links */\na {\n  color: #0077b3;\n  text-decoration: none; }\n\na:hover,\na:focus {\n  color: #00334d;\n  text-decoration: underline; }\n\na:visited {\n  color: #00334d; }\n\na:focus {\n  outline: thin dotted #2d2d2d;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px; }\n\na:hover,\na:active {\n  outline: 0; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsup {\n  top: -0.5em; }\n\nsub {\n  bottom: -0.25em; }\n\nimg {\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic; }\n\n@media print {\n  * {\n    color: black !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important; }\n\n  a,\n  a:visited {\n    text-decoration: underline; }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\"; }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\"; }\n\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\"; }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid; }\n\n  thead {\n    display: table-header-group; }\n\n  tr,\n  img {\n    page-break-inside: avoid; }\n\n  img {\n    max-width: 100% !important; }\n\n  @page {\n    margin: 0.5cm; }\n\n  h1 {\n    page-break-before: always; }\n\n  h1.title {\n    page-break-before: avoid; }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n\n  h2,\n  h3 {\n    page-break-after: avoid; } }\n.img-rounded {\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.img-polaroid {\n  padding: 4px;\n  background-color: rgba(252, 248, 244, 0.75);\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }\n\np {\n  margin: 0 0 8px; }\n\nsmall {\n  font-size: 85%; }\n\nstrong {\n  font-weight: 600; }\n\nem {\n  font-style: italic; }\n\ncite {\n  font-style: normal; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: 600;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility; }\n\nh1 {\n  font-size: 2em;\n  font-weight: 400;\n  padding-bottom: .15em;\n  border-bottom: 1px solid #aaaaaa;\n  margin-top: 1.0em;\n  line-height: 1.2em; }\n\nh1.title {\n  padding-bottom: 1em;\n  border-bottom: 0px;\n  font-size: 2.75em; }\n\nh2 {\n  font-size: 1.5em;\n  margin-top: 1.5em; }\n\nh3 {\n  font-size: 1.3em;\n  font-style: italic;\n  margin-top: 0.75em; }\n\nh4 {\n  font-size: 1.3em;\n  margin-top: 0.5em; }\n\nh5 {\n  font-size: 1.2em;\n  margin-top: 0.25em; }\n\nh6 {\n  font-size: 1.1em; }\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 0px 15px; }\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0; }\n\nli {\n  line-height: 20px; }\n\ndl {\n  margin-bottom: 20px; }\n\ndt,\ndd {\n  line-height: 20px; }\n\ndt {\n  font-weight: bold; }\n\ndd {\n  margin-left: 10px;\n  margin-bottom: 26px; }\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff; }\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999; }\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #EFEBE0; }\n\ntable.docinfo + blockquote, table.docinfo blockquote, h1 + blockquote {\n  border-left: 5px solid #c9c9c9;\n}\n\ntable.docinfo + blockquote p, table.docinfo blockquote p, h1 + blockquote p {\n  margin-bottom: 0;\n  font-size: 15px;\n  font-weight: 200;\n  line-height: 1.5;\n  font-style: italic; }\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\"; }\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px; }\n\ncode,\npre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  padding: 0 3px 2px;\n  font-weight: 500;\n  font-size: 12px;\n  color: #444444;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px; }\n\n.pre {\n  font-family: \"Source Code Pro\", Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-weight: 600;\n  /*color: #504da6;*/\n}\n\ncode {\n  padding: 2px 4px;\n  color: #444444;\n  white-space: nowrap;\n  background-color: white;\n  border: 1px solid #777777; }\n\npre {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: calc(100% - 19.5px);\n  padding: 9.5px;\n  margin: 0.25em 10px 10px 10px;\n  font-size: 15px;\n  line-height: 20px;\n  white-space: pre !important;\n  overflow-y: hidden;\n  overflow-x: visible;\n  background-color: rgba(0, 0, 0, 0.01);\n  border: 1px solid #cccccc;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\npre.prettyprint {\n  margin-bottom: 20px; }\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  overflow-x: visible;\n  background-color: transparent;\n  border: 0; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0; }\n\ntable th, table td {\n  padding: 0px 8px 0px;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px; }\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #444444; }\n\n.table th {\n  font-weight: bold; }\n\n.table thead th {\n  vertical-align: bottom; }\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0; }\n\n.table tbody + tbody {\n  border-top: 2px solid #444444; }\n\n.table .table {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px; }\n\n.table-bordered {\n  border: 1px solid #444444;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px; }\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #444444; }\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0; }\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px; }\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n  border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0; }\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n  border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0; }\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px; }\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px; }\n\ntable.docutils th {\n  background-color: #e8e8e8; }\n\ntable.docutils tr:hover {\n  background-color: whitesmoke; }\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: rgba(252, 248, 244, 0.75); }\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: rgba(241, 222, 204, 0.75); }\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0; }\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: rgba(230, 197, 164, 0.75);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px; }\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit; }\n\n.hero-unit li {\n  line-height: 30px; }\n\n/* rst2html default used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0; }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 !important; }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 !important; }\n\n.last, .with-subtitle {\n  margin-bottom: 0 !important; }\n\n.hidden {\n  display: none; }\n\na.toc-backref {\n  text-decoration: none;\n  color: #444444; }\n\nblockquote.epigraph {\n  margin: 2em 5em; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em; }\n\nobject[type=\"image/svg+xml\"], object[type=\"application/x-shockwave-flash\"] {\n  overflow: hidden; }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\ndiv.abstract {\n  margin: 2em 5em; }\n\ndiv.abstract p.topic-title {\n  font-weight: bold;\n  text-align: center; }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em;\n  border: medium outset;\n  padding: 1em; }\n\ndiv.note, div.warning {\n  margin: 1.5em 0px;\n  border: none; }\n\ndiv.note p.admonition-title,\ndiv.warning p.admonition-title {\n  display: none; }\n\n/* Clearfix\n * http://css-tricks.com/snippets/css/clear-fix/\n */\ndiv.note:after,\ndiv.warning:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\ndiv.note p:before,\ndiv.warning p:before {\n  display: block;\n  float: left;\n  font-size: 4em;\n  line-height: 1em;\n  margin-right: 20px;\n  margin-left: 0em;\n  margin-top: -10px;\n  content: '\\0270D';\n  /*handwriting*/ }\n\ndiv.warning p:before {\n  content: '\\026A0';\n  /*warning*/ }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title, .code .error {\n  color: #b30000;\n  font-weight: bold;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic; }\n\ndiv.dedication p.topic-title {\n  font-weight: bold;\n  font-style: normal; }\n\ndiv.figure {\n  margin-left: 2em;\n  margin-right: 2em; }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller; }\n\ndiv.line-block {\n  display: block;\n  margin-top: 1em;\n  margin-bottom: 1em; }\n\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 1.5em; }\n\ndiv.sidebar {\n  margin: 0 0 0.5em 1em;\n  border: medium outset;\n  padding: 1em;\n  background-color: rgba(252, 248, 244, 0.75);\n  width: 40%;\n  float: right;\n  clear: right; }\n\ndiv.sidebar p.rubric {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-size: medium; }\n\ndiv.system-messages {\n  margin: 5em; }\n\ndiv.system-messages h1 {\n  color: #b30000; }\n\ndiv.system-message {\n  border: medium outset;\n  padding: 1em; }\n\ndiv.system-message p.system-message-title {\n  color: #b30000;\n  font-weight: bold; }\n\ndiv.topic {\n  margin: 2em; }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em; }\n\nh1.title {\n  text-align: center; }\n\nh2.subtitle {\n  text-align: center; }\n\nhr.docutils {\n  width: 75%; }\n\nimg.align-left, .figure.align-left, object.align-left {\n  clear: left;\n  float: left;\n  margin-right: 1em; }\n\nimg.align-right, .figure.align-right, object.align-right {\n  clear: right;\n  float: right;\n  margin-left: 1em; }\n\nimg.align-center, .figure.align-center, object.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto; }\n\n.align-left {\n  text-align: left; }\n\n.align-center {\n  clear: both;\n  text-align: center; }\n\n.align-right {\n  text-align: right; }\n\n/* reset inner alignment in figures */\ndiv.align-right {\n  text-align: inherit; }\n\n/* div.align-center * { */\n/*   text-align: left } */\n\nul.simple > li {\n  margin-bottom: 0.5em }\n\nol.simple, ul.simple {\n  margin-bottom: 1em; }\n\nol.arabic {\n  list-style: decimal; }\n\nol.loweralpha {\n  list-style: lower-alpha; }\n\nol.upperalpha {\n  list-style: upper-alpha; }\n\nol.lowerroman {\n  list-style: lower-roman; }\n\nol.upperroman {\n  list-style: upper-roman; }\n\np.attribution {\n  text-align: right;\n  margin-left: 50%; }\n\np.caption {\n  font-style: italic; }\n\np.credits {\n  font-style: italic;\n  font-size: smaller; }\n\np.label {\n  white-space: nowrap; }\n\np.rubric {\n  font-weight: bold;\n  font-size: larger;\n  color: maroon;\n  text-align: center; }\n\np.sidebar-title {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold;\n  font-size: larger; }\n\np.sidebar-subtitle {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\np.topic-title {\n  font-weight: bold; }\n\npre.address {\n  margin-bottom: 0;\n  margin-top: 0;\n  font: inherit; }\n\npre.literal-block, pre.doctest-block, pre.math, pre.code {\n  margin-left: 2em;\n  margin-right: 2em; }\n\npre.code .ln {\n  color: grey; }\n\n/* line numbers */\npre.code, code {\n  background-color: #eeeeee; }\n\npre.code .comment, code .comment {\n  color: #5c6576; }\n\npre.code .keyword, code .keyword {\n  color: #3B0D06;\n  font-weight: bold; }\n\npre.code .literal.string, code .literal.string {\n  color: #0c5404; }\n\npre.code .name.builtin, code .name.builtin {\n  color: #352b84; }\n\npre.code .deleted, code .deleted {\n  background-color: #DEB0A1; }\n\npre.code .inserted, code .inserted {\n  background-color: #A3D289; }\n\nspan.classifier {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-style: oblique; }\n\nspan.classifier-delimiter {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif;\n  font-weight: bold; }\n\nspan.interpreted {\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif; }\n\nspan.option {\n  white-space: nowrap; }\n\nspan.pre {\n  white-space: pre; }\n\nspan.problematic {\n  color: #b30000; }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80%; }\n\ntable.citation {\n  border-left: solid 1px #666666;\n  margin-left: 1px; }\n\ntable.docinfo {\n  margin: 0em;\n  margin-top: 2em;\n  margin-bottom: 2em;\n  font-family: \"Lato\", \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif !important;\n  color: #444444; }\n\ntable.docutils {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em; }\n\ntable.footnote {\n  border-left: solid 1px #2d2d2d;\n  margin-left: 1px; }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  vertical-align: top; }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: 700;\n  text-align: left;\n  white-space: nowrap;\n  padding-left: 0; }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100%; }\n\nul.auto-toc {\n  list-style-type: none; }\n\nspan.DecNumber {\n  color: #252dbe; }\n\nspan.BinNumber {\n  color: #252dbe; }\n\nspan.HexNumber {\n  color: #252dbe; }\n\nspan.OctNumber {\n  color: #252dbe; }\n\nspan.FloatNumber {\n  color: #252dbe; }\n\nspan.Identifier {\n  color: #3b3b3b; }\n\nspan.Keyword {\n  font-weight: 600;\n  color: #5e8f60; }\n\nspan.StringLit {\n  color: #a4255b; }\n\nspan.LongStringLit {\n  color: #a4255b; }\n\nspan.CharLit {\n  color: #a4255b; }\n\nspan.EscapeSequence {\n  color: black; }\n\nspan.Operator {\n  color: black; }\n\nspan.Punctuation {\n  color: black; }\n\nspan.Comment, span.LongComment {\n  font-style: italic;\n  font-weight: 400;\n  color: #484a86; }\n\nspan.RegularExpression {\n  color: darkviolet; }\n\nspan.TagStart {\n  color: darkviolet; }\n\nspan.TagEnd {\n  color: darkviolet; }\n\nspan.Key {\n  color: #252dbe; }\n\nspan.Value {\n  color: #252dbe; }\n\nspan.RawData {\n  color: #a4255b; }\n\nspan.Assembler {\n  color: #252dbe; }\n\nspan.Preprocessor {\n  color: #252dbe; }\n\nspan.Directive {\n  color: #252dbe; }\n\nspan.Command, span.Rule, span.Hyperlink, span.Label, span.Reference,\nspan.Other {\n  color: black; }\n\n/* Pop type, const, proc, and iterator defs in nim def blocks */\ndt pre > span.Identifier, dt pre > span.Operator {\n  color: #155da4;\n  font-weight: 700; }\n\ndt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\ndt pre > span.Operator ~ span.Identifier {\n  color: inherit;\n  font-weight: inherit; }\n\n/* Nim sprite for the footer (taken from main page favicon) */\n.nim-sprite {\n  display: inline-block;\n  height: 12px;\n  width: 12px;\n  background-position: 0 0;\n  background-size: 12px 12px;\n  -webkit-filter: opacity(50%);\n  background-repeat: no-repeat;\n  background-image: url(\"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==\");\n  margin-bottom: -5px; }\n\ndiv.search_results {\n  background-color: antiquewhite;\n  margin: 3em;\n  padding: 1em;\n  border: 1px solid #4d4d4d;\n}\n\ndiv#global-links ul {\n  margin-left: 0;\n  list-style-type: none;\n}\n\nspan.pragmadots {\n  /* Position: relative frees us up to make the dots\n  look really nice without fucking up the layout and\n  causing bulging in the parent container */\n  position: relative;\n  /* 1px down looks slightly nicer */\n  top: 1px;\n\n  padding: 2px;\n  background-color: #D3D3D3;\n  border-radius: 4px;\n  margin: 0 2px;\n  cursor: pointer;\n\n  /* For some reason on Chrome, making the font size\n  smaller than 1em is causing the parent container to\n  bulge slightly. So, we're stuck with inheriting 1em,\n  which is sad, because 0.8em looks better... */\n}\nspan.pragmadots:hover {\n  background-color: #DBDBDB;\n}\nspan.pragmawrap {\n  display: none;\n}\n\n</style>\n\n<script type=\"text/javascript\" src=\"dochack.js\"></script>\n\n<script type=\"text/javascript\">\nfunction main() {\n  var pragmaDots = document.getElementsByClassName(\"pragmadots\");\n  for (var i = 0; i < pragmaDots.length; i++) {\n    pragmaDots[i].onclick = function(event) {\n      // Hide tease\n      event.target.parentNode.style.display = \"none\";\n      // Show actual\n      event.target.parentNode.nextElementSibling.style.display = \"inline\";\n    }\n  }\n}\n</script>\n\n</head>\n<body onload=\"main()\">\n<div class=\"document\" id=\"documentId\">\n  <div class=\"container\">\n    <h1 class=\"title\">utils</h1>\n    <div class=\"row\">\n  <div class=\"three columns\">\n  <div id=\"global-links\">\n    <ul class=\"simple\">\n    </ul>\n  </div>\n  <div id=\"searchInputDiv\">\n    Search: <input type=\"text\" id=\"searchInput\"\n      onkeyup=\"search()\" />\n  </div>\n  <div>\n    Group by:\n    <select onchange=\"groupBy(this.value)\">\n      <option value=\"section\">Section</option>\n      <option value=\"type\">Type</option>\n    </select>\n  </div>\n  <ul class=\"simple simple-toc\" id=\"toc-list\">\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#6\" id=\"56\">Imports</a>\n  <ul class=\"simple simple-toc-section\">\n    \n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#7\" id=\"57\">Types</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#Counter\"\n    title=\"Counter = ref object\n  counter, current, interval: int\n  time: uint64\"><wbr />Counter<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#12\" id=\"62\">Procs</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#distance%2CCoord%2CCoord\"\n    title=\"distance(a, b: Coord): float\"><wbr />distance<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#distanceToLine%2CCoord%2CCoord%2CCoord\"\n    title=\"distanceToLine(a, d1, d2: Coord): float\"><wbr />distance<wbr />To<wbr />Line<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#direction%2CCoord%2CCoord\"\n    title=\"direction(a, b: Coord): Angle\"><wbr />direction<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rotate%2CCoord%2CAngle\"\n    title=\"rotate(a: Coord; angle: Angle): Coord\"><wbr />rotate<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rotate%2CCoord%2CCoord%2CAngle\"\n    title=\"rotate(point, offset: Coord; angle: Angle): Coord\"><wbr />rotate<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#loadSurface%2Cstring\"\n    title=\"loadSurface(file: string): Surface\"><wbr />load<wbr />Surface<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#loadSurface%2Cptr.RWops%2Cbool\"\n    title=\"loadSurface(src: ptr RWops; freeSrc: bool = true): Surface\"><wbr />load<wbr />Surface<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#textureFormats%2CRenderer\"\n    title=\"textureFormats(renderer: Renderer): tuple[num: uint32, formats: array[16, uint32]]\"><wbr />texture<wbr />Formats<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#textureFormat%2CRenderer%2Cuint32\"\n    title=\"textureFormat(renderer: Renderer; n: uint32 = 0): uint32\"><wbr />texture<wbr />Format<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#readAll%2Cptr.RWops\"\n    title=\"readAll(src: ptr RWops): string\"><wbr />read<wbr />All<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#loadCSV%2Cstring%2Cproc%28string%29%2CChar%2CChar%2CChar\"\n    title=\"loadCSV[T](file: string; parse: proc (input: string): T; separator = &#x27;,&#x27;; quote = &#x27;\\&quot;&#x27;;\n           escape = &#x27;\\x00&#x27;; skipInitialSpace = true): seq[seq[T]]\"><wbr />load<wbr />CSV<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#loadCSV%2Cptr.RWops%2Cstring%2Cproc%28string%29%2CChar%2CChar%2CChar\"\n    title=\"loadCSV[T](src: ptr RWops; file: string; parse: proc (input: string): T; separator = &#x27;,&#x27;;\n           quote = &#x27;\\&quot;&#x27;; escape = &#x27;\\x00&#x27;; skipInitialSpace = true; freeSrc = true): seq[\n    seq[T]]\"><wbr />load<wbr />CSV<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#loadPalette%2C%2Cstring%2CChar%2CChar%2CChar\"\n    title=\"loadPalette(palette: var indexedimage.Palette; file: string; separator = &#x27; &#x27;;\n            quote = &#x27;\\&quot;&#x27;; escape = &#x27;\\x00&#x27;; skipInitialSpace = true)\"><wbr />load<wbr />Palette<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#loadPalette%2C%2Cptr.RWops%2Cstring%2CChar%2CChar%2CChar\"\n    title=\"loadPalette(palette: var indexedimage.Palette; src: ptr RWops; file: string;\n            separator = &#x27; &#x27;; quote = &#x27;\\&quot;&#x27;; escape = &#x27;\\x00&#x27;; skipInitialSpace = true;\n            freeSrc = true)\"><wbr />load<wbr />Palette<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#random%2CT%2Cseq%5BT%5D\"\n    title=\"random[T](max: T; exclude: seq[T]): T\"><wbr />random<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rand%2CT%2Cseq%5BT%5D\"\n    title=\"rand[T](max: T; exclude: seq[T]): T\"><wbr />rand<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rand%2CT%2CopenArray%5BT%5D\"\n    title=\"rand[T](max: T; exclude: openArray[T]): T\"><wbr />rand<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#random%2Cseq%5BT%5D%2Cseq%5BT%5D\"\n    title=\"random[T](x, exclude: seq[T]): T\"><wbr />random<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rand%2Cseq%5BT%5D%2Cseq%5BT%5D\"\n    title=\"rand[T](x, exclude: seq[T]): T\"><wbr />rand<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rand%2CopenArray%5BT%5D%2CopenArray%5BT%5D\"\n    title=\"rand[T](x, exclude: openArray[T]): T\"><wbr />rand<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#random%2CSlice%5BT%5D%2Cseq%5BT%5D\"\n    title=\"random[T](x: Slice[T]; exclude: seq[T]): T\"><wbr />random<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rand%2CSlice%5BT%5D%2Cseq%5BT%5D\"\n    title=\"rand[T](x: Slice[T]; exclude: seq[T]): T\"><wbr />rand<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rand%2CSlice%5BT%5D%2CopenArray%5BT%5D\"\n    title=\"rand[T](x: Slice[T]; exclude: openArray[T]): T\"><wbr />rand<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#random%2Cset%5BT%5D\"\n    title=\"random[T](x: set[T]): T\"><wbr />random<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#rand%2Cset%5BT%5D\"\n    title=\"rand[T](x: set[T]): T\"><wbr />rand<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#randomBool%2Cfloat\"\n    title=\"randomBool(chance: float = 0.5): bool\"><wbr />random<wbr />Bool<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#randBool%2Cfloat\"\n    title=\"randBool(chance: float = 0.5): bool\"><wbr />rand<wbr />Bool<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#randomSign%2Cfloat\"\n    title=\"randomSign(chance: float = 0.5): int\"><wbr />random<wbr />Sign<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#randSign%2Cfloat\"\n    title=\"randSign(chance: float = 0.5): int\"><wbr />rand<wbr />Sign<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#randomWeighted%2CopenArray%5BT%5D\"\n    title=\"randomWeighted[T](weights: openArray[T]): int\"><wbr />random<wbr />Weighted<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#randWeighted%2CopenArray%5BT%5D\"\n    title=\"randWeighted[T](weights: openArray[T]): int\"><wbr />rand<wbr />Weighted<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#newCounter%2Cint\"\n    title=\"newCounter(interval: int = 1000): Counter\"><wbr />new<wbr />Counter<span class=\"attachedType\" style=\"visibility:hidden\">Counter</span></a></li>\n  <li><a class=\"reference\" href=\"#update%2CCounter\"\n    title=\"update(counter: Counter)\"><wbr />update<span class=\"attachedType\" style=\"visibility:hidden\">Counter</span></a></li>\n  <li><a class=\"reference\" href=\"#value%2CCounter\"\n    title=\"value(counter: Counter): int\"><wbr />value<span class=\"attachedType\" style=\"visibility:hidden\">Counter</span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#15\" id=\"65\">Iterators</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#atlasValues.i%2Cstring%2CChar%2CChar%2CChar\"\n    title=\"atlasValues(file: string; separator = &#x27;,&#x27;; quote = &#x27;\\&quot;&#x27;; escape = &#x27;\\x00&#x27;;\n            skipInitialSpace = true): tuple[name: string, rect: Rect]\"><wbr />atlas<wbr />Values<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#atlasValues.i%2Cptr.RWops%2Cstring%2CChar%2CChar%2CChar\"\n    title=\"atlasValues(src: ptr RWops; file: string; separator = &#x27;,&#x27;; quote = &#x27;\\&quot;&#x27;; escape = &#x27;\\x00&#x27;;\n            skipInitialSpace = true; freeSrc = true): tuple[name: string, rect: Rect]\"><wbr />atlas<wbr />Values<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n<li>\n  <a class=\"reference reference-toplevel\" href=\"#18\" id=\"68\">Templates</a>\n  <ul class=\"simple simple-toc-section\">\n      <li><a class=\"reference\" href=\"#rad.t%2CAngle\"\n    title=\"rad(a: Angle): Angle\"><wbr />rad<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#deg.t%2CAngle\"\n    title=\"deg(a: Angle): Angle\"><wbr />deg<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#random.t%2CT%2CopenArray%5BT%5D\"\n    title=\"random[T](max: T; exclude: openArray[T]): T\"><wbr />random<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#random.t%2CopenArray%5BT%5D%2CopenArray%5BT%5D\"\n    title=\"random[T](x, exclude: openArray[T]): T\"><wbr />random<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#random.t%2CSlice%5BT%5D%2CopenArray%5BT%5D\"\n    title=\"random[T](x: Slice[T]; exclude: openArray[T]): T\"><wbr />random<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#timeDiff.t%2Cuntyped%2Cuntyped\"\n    title=\"timeDiff(first, second: untyped): untyped\"><wbr />time<wbr />Diff<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#msToSec.t%2Cint\"\n    title=\"msToSec(ms: int): float\"><wbr />ms<wbr />To<wbr />Sec<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n  <li><a class=\"reference\" href=\"#secToMs.t%2Cfloat\"\n    title=\"secToMs(sec: float): int\"><wbr />sec<wbr />To<wbr />Ms<span class=\"attachedType\" style=\"visibility:hidden\"></span></a></li>\n\n  </ul>\n</li>\n\n</ul>\n\n  </div>\n  <div class=\"nine columns\" id=\"content\">\n  <div id=\"tocRoot\"></div>\n  <p class=\"module-desc\"></p>\n  <div class=\"section\" id=\"6\">\n<h1><a class=\"toc-backref\" href=\"#6\">Imports</a></h1>\n<dl class=\"item\">\n<a class=\"reference external\" href=\"texturegraphic.html\">texturegraphic</a>, <a class=\"reference external\" href=\"types.html\">types</a>, <a class=\"reference external\" href=\"indexedimage.html\">indexedimage</a>\n</dl></div>\n<div class=\"section\" id=\"7\">\n<h1><a class=\"toc-backref\" href=\"#7\">Types</a></h1>\n<dl class=\"item\">\n<a id=\"Counter\"></a>\n<dt><pre><a href=\"utils.html#Counter\"><span class=\"Identifier\">Counter</span></a> <span class=\"Other\">=</span> <span class=\"Keyword\">ref</span> <span class=\"Keyword\">object</span>\n  <span class=\"Identifier\">counter</span><span class=\"Other\">,</span> <span class=\"Identifier\">current</span><span class=\"Other\">,</span> <span class=\"Identifier\">interval</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span>\n  <span class=\"Identifier\">time</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint64</span>\n</pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"12\">\n<h1><a class=\"toc-backref\" href=\"#12\">Procs</a></h1>\n<dl class=\"item\">\n<a id=\"distance,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">distance</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">,</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> distance between two coordinates. \n\n</dd>\n<a id=\"distanceToLine,Coord,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">distanceToLine</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">,</span> <span class=\"Identifier\">d1</span><span class=\"Other\">,</span> <span class=\"Identifier\">d2</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> distance between point <tt class=\"docutils literal\"><span class=\"pre\">a</span></tt> and line <tt class=\"docutils literal\"><span class=\"pre\">d1</span></tt>-<tt class=\"docutils literal\"><span class=\"pre\">d2</span></tt>. \n\n</dd>\n<a id=\"direction,Coord,Coord\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">direction</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">,</span> <span class=\"Identifier\">b</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> angle direction from coordinate <tt class=\"docutils literal\"><span class=\"pre\">a</span></tt> to <tt class=\"docutils literal\"><span class=\"pre\">b</span></tt> (in degrees). \n\n</dd>\n<a id=\"rotate,Coord,Angle\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rotate</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\nRotate point <tt class=\"docutils literal\"><span class=\"pre\">a</span></tt> by the given <tt class=\"docutils literal\"><span class=\"pre\">angle</span></tt> (in degrees). \n\n</dd>\n<a id=\"rotate,Coord,Coord,Angle\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rotate</span><span class=\"Other\">(</span><span class=\"Identifier\">point</span><span class=\"Other\">,</span> <span class=\"Identifier\">offset</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a><span class=\"Other\">;</span> <span class=\"Identifier\">angle</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Coord\"><span class=\"Identifier\">Coord</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Rotate <tt class=\"docutils literal\"><span class=\"pre\">point</span></tt> by the given <tt class=\"docutils literal\"><span class=\"pre\">angle</span></tt> and with given <tt class=\"docutils literal\"><span class=\"pre\">offset</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">offset</span></tt>  Offset coordinate (parent position) <tt class=\"docutils literal\"><span class=\"pre\">point</span></tt>   Point to rotate <tt class=\"docutils literal\"><span class=\"pre\">angle</span></tt>   Angle of rotation (in degrees) </p>\n\n\n</dd>\n<a id=\"loadSurface,string\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">loadSurface</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load an image <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt> to the <tt class=\"docutils literal\"><span class=\"pre\">sdl.Surface</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the surface on success, or <cite>nil</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"loadSurface,ptr.RWops,bool\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">loadSurface</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">Surface</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load <tt class=\"docutils literal\"><span class=\"pre\">src</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt> to the <tt class=\"docutils literal\"><span class=\"pre\">sdl.Surface</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> the surface on success, or <cite>nil</cite> otherwise. </p>\n\n\n</dd>\n<a id=\"textureFormats,Renderer\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">textureFormats</span><span class=\"Other\">(</span><span class=\"Identifier\">renderer</span><span class=\"Other\">:</span> <span class=\"Identifier\">Renderer</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">num</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">formats</span><span class=\"Other\">:</span> <span class=\"Identifier\">array</span><span class=\"Other\">[</span><span class=\"DecNumber\">16</span><span class=\"Other\">,</span> <span class=\"Identifier\">uint32</span><span class=\"Other\">]</span><span class=\"Other\">]</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> number and array of available texture formats from the <tt class=\"docutils literal\"><span class=\"pre\">renderer</span></tt>. \n\n</dd>\n<a id=\"textureFormat,Renderer,uint32\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">textureFormat</span><span class=\"Other\">(</span><span class=\"Identifier\">renderer</span><span class=\"Other\">:</span> <span class=\"Identifier\">Renderer</span><span class=\"Other\">;</span> <span class=\"Identifier\">n</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">0</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">uint32</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">n</span></tt>'th texture format from the <tt class=\"docutils literal\"><span class=\"pre\">renderer</span></tt>. \n\n</dd>\n<a id=\"readAll,ptr.RWops\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">readAll</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"loadCSV,string,proc(string),Char,Char,Char\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">loadCSV</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">parse</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">separator</span> <span class=\"Other\">=</span> <span class=\"CharLit\">','</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">quote</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\&quot;'</span><span class=\"Other\">;</span> <span class=\"Identifier\">escape</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\x00'</span><span class=\"Other\">;</span> <span class=\"Identifier\">skipInitialSpace</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n<p>Load data from a CSV <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a two-dimensional sequence of values from the <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>, or empty sequence (<cite>@[]</cite>) otherwise. </p>\n\n\n</dd>\n<a id=\"loadCSV,ptr.RWops,string,proc(string),Char,Char,Char\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">loadCSV</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">parse</span><span class=\"Other\">:</span> <span class=\"Keyword\">proc</span> <span class=\"Other\">(</span><span class=\"Identifier\">input</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">separator</span> <span class=\"Other\">=</span> <span class=\"CharLit\">','</span><span class=\"Other\">;</span> <span class=\"Identifier\">quote</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\&quot;'</span><span class=\"Other\">;</span> <span class=\"Identifier\">escape</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\x00'</span><span class=\"Other\">;</span> <span class=\"Identifier\">skipInitialSpace</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">;</span>\n               <span class=\"Identifier\">freeSrc</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">]</span></pre></dt>\n<dd>\n<p>Load data from <tt class=\"docutils literal\"><span class=\"pre\">src</span></tt> <tt class=\"docutils literal\"><span class=\"pre\">RWops</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">file</span></tt> is only used for nice error messages.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a two-dimensional sequence of values from the <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>, or empty sequence (<cite>@[]</cite>) otherwise. </p>\n\n\n</dd>\n<a id=\"loadPalette,,string,Char,Char,Char\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">loadPalette</span><span class=\"Other\">(</span><span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <span class=\"Identifier\">indexedimage</span><span class=\"Other\">.</span><span class=\"Identifier\">Palette</span><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">separator</span> <span class=\"Other\">=</span> <span class=\"CharLit\">' '</span><span class=\"Other\">;</span>\n                <span class=\"Identifier\">quote</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\&quot;'</span><span class=\"Other\">;</span> <span class=\"Identifier\">escape</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\x00'</span><span class=\"Other\">;</span> <span class=\"Identifier\">skipInitialSpace</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">CsvError</span><span class=\"Other\">,</span> <span class=\"Identifier\">Exception</span><span class=\"Other\">,</span> <span class=\"Identifier\">OverflowError</span><span class=\"Other\">,</span> <span class=\"Identifier\">ValueError</span><span class=\"Other\">,</span> <span class=\"Identifier\">IndexError</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n    <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load palette color data from a <tt class=\"docutils literal\"><span class=\"pre\">file</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">palette</span></tt> Target palette. If <tt class=\"docutils literal\"><span class=\"pre\">palette</span></tt> is <cite>nil</cite>, allocates a new palette, otherwise the <tt class=\"docutils literal\"><span class=\"pre\">palette</span></tt> will be freed.</p>\n<p>Data file should be in a format of:</p>\n<blockquote><p>rrr ggg bbb aaa ...</p></blockquote>\n<p>or</p>\n<blockquote><p>rrr ggg bbb</p></blockquote>\n<p>where <cite>rrr</cite>, <cite>ggg</cite>, <cite>bbb</cite>, and <cite>aaa</cite> is in <cite>0</cite>..`255` range.</p>\n<p>Other types of lines are ignored. </p>\n\n\n</dd>\n<a id=\"loadPalette,,ptr.RWops,string,Char,Char,Char\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">loadPalette</span><span class=\"Other\">(</span><span class=\"Identifier\">palette</span><span class=\"Other\">:</span> <span class=\"Keyword\">var</span> <span class=\"Identifier\">indexedimage</span><span class=\"Other\">.</span><span class=\"Identifier\">Palette</span><span class=\"Other\">;</span> <span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span>\n                <span class=\"Identifier\">separator</span> <span class=\"Other\">=</span> <span class=\"CharLit\">' '</span><span class=\"Other\">;</span> <span class=\"Identifier\">quote</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\&quot;'</span><span class=\"Other\">;</span> <span class=\"Identifier\">escape</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\x00'</span><span class=\"Other\">;</span> <span class=\"Identifier\">skipInitialSpace</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">;</span>\n                <span class=\"Identifier\">freeSrc</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">,</span> <span class=\"Identifier\">CsvError</span><span class=\"Other\">,</span> <span class=\"Identifier\">OverflowError</span><span class=\"Other\">,</span>\n                                       <span class=\"Identifier\">ValueError</span><span class=\"Other\">,</span> <span class=\"Identifier\">IndexError</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n                               <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">,</span> <span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"random,T,seq[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">random</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">max</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">deprecated</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random number in the range <cite>0</cite>..&lt;<tt class=\"docutils literal\"><span class=\"pre\">max</span></tt>, except values in the <tt class=\"docutils literal\"><span class=\"pre\">exclude</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Deprecated:</span></tt> Use <tt class=\"docutils literal\"><span class=\"pre\">rand</span></tt> instead. </p>\n\n\n</dd>\n<a id=\"rand,T,seq[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rand</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">max</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random number in the range <cite>0</cite>..``max``, except values in the <tt class=\"docutils literal\"><span class=\"pre\">exclude</span></tt>. \n\n</dd>\n<a id=\"rand,T,openArray[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rand</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">max</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"random,seq[T],seq[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">random</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">,</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">deprecated</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random number in the sequence <tt class=\"docutils literal\"><span class=\"pre\">x</span></tt>, except values in the <tt class=\"docutils literal\"><span class=\"pre\">exclude</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Deprecated:</span></tt> use <tt class=\"docutils literal\"><span class=\"pre\">rand</span></tt> instaead. </p>\n\n\n</dd>\n<a id=\"rand,seq[T],seq[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rand</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">,</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random number in the sequence <tt class=\"docutils literal\"><span class=\"pre\">x</span></tt>, except values in the <tt class=\"docutils literal\"><span class=\"pre\">exclude</span></tt>. \n\n</dd>\n<a id=\"rand,openArray[T],openArray[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rand</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">,</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"random,Slice[T],seq[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">random</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">Slice</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">deprecated</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random number in the range <tt class=\"docutils literal\"><span class=\"pre\">min</span></tt>..&lt;<tt class=\"docutils literal\"><span class=\"pre\">max</span></tt>, except values in the <tt class=\"docutils literal\"><span class=\"pre\">exclude</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Deprecated:</span></tt> use <tt class=\"docutils literal\"><span class=\"pre\">rand</span></tt> instead. </p>\n\n\n</dd>\n<a id=\"rand,Slice[T],seq[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rand</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">Slice</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">seq</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random number in the range <tt class=\"docutils literal\"><span class=\"pre\">min</span></tt>..``max``, except values in the <tt class=\"docutils literal\"><span class=\"pre\">exclude</span></tt>. \n\n</dd>\n<a id=\"rand,Slice[T],openArray[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rand</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">Slice</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"random,set[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">random</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">set</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">deprecated</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random member of set <tt class=\"docutils literal\"><span class=\"pre\">x</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Deprecated:</span></tt> use <tt class=\"docutils literal\"><span class=\"pre\">rand</span></tt> instead. </p>\n\n\n</dd>\n<a id=\"rand,set[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">rand</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">set</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random member of set <tt class=\"docutils literal\"><span class=\"pre\">x</span></tt>. \n\n</dd>\n<a id=\"randomBool,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">randomBool</span><span class=\"Other\">(</span><span class=\"Identifier\">chance</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.5</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">deprecated</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>true</cite> or <cite>false</cite>, based on the <tt class=\"docutils literal\"><span class=\"pre\">chance</span></tt> value (from <cite>0.0</cite> to <cite>1.0</cite>). \n\n</dd>\n<a id=\"randBool,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">randBool</span><span class=\"Other\">(</span><span class=\"Identifier\">chance</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.5</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">bool</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"randomSign,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">randomSign</span><span class=\"Other\">(</span><span class=\"Identifier\">chance</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.5</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> <cite>1</cite> or <cite>-1</cite>, based on the <tt class=\"docutils literal\"><span class=\"pre\">chance</span></tt> value (from <cite>0.0</cite> to <cite>1.0</cite>). \n\n</dd>\n<a id=\"randSign,float\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">randSign</span><span class=\"Other\">(</span><span class=\"Identifier\">chance</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span> <span class=\"Other\">=</span> <span class=\"FloatNumber\">0.5</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"randomWeighted,openArray[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">randomWeighted</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">weights</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> a random integer, based on the <tt class=\"docutils literal\"><span class=\"pre\">weights</span></tt> array.</p>\n<p>E.g., call of randomWeighted([2, 3, 5]) will have a 20% chance of returning <cite>0</cite>, 30% chance of returning <cite>1</cite>, and 50% chance of returning <cite>2</cite>. </p>\n\n\n</dd>\n<a id=\"randWeighted,openArray[T]\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">randWeighted</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">weights</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"newCounter,int\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">newCounter</span><span class=\"Other\">(</span><span class=\"Identifier\">interval</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span class=\"Other\">=</span> <span class=\"DecNumber\">1000</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"utils.html#Counter\"><span class=\"Identifier\">Counter</span></a> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"update,Counter\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">update</span><span class=\"Other\">(</span><span class=\"Identifier\">counter</span><span class=\"Other\">:</span> <a href=\"utils.html#Counter\"><span class=\"Identifier\">Counter</span></a><span class=\"Other\">)</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"value,Counter\"></a>\n<dt><pre><span class=\"Keyword\">proc</span> <span class=\"Identifier\">value</span><span class=\"Other\">(</span><span class=\"Identifier\">counter</span><span class=\"Other\">:</span> <a href=\"utils.html#Counter\"><span class=\"Identifier\">Counter</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">inline</span><span class=\"Other\">,</span> <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"15\">\n<h1><a class=\"toc-backref\" href=\"#15\">Iterators</a></h1>\n<dl class=\"item\">\n<a id=\"atlasValues.i,string,Char,Char,Char\"></a>\n<dt><pre><span class=\"Keyword\">iterator</span> <span class=\"Identifier\">atlasValues</span><span class=\"Other\">(</span><span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">separator</span> <span class=\"Other\">=</span> <span class=\"CharLit\">','</span><span class=\"Other\">;</span> <span class=\"Identifier\">quote</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\&quot;'</span><span class=\"Other\">;</span> <span class=\"Identifier\">escape</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\x00'</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">skipInitialSpace</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span><span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">,</span> <span class=\"Identifier\">rect</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">]</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\">\n    <span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">CsvError</span><span class=\"Other\">,</span> <span class=\"Identifier\">Exception</span><span class=\"Other\">,</span> <span class=\"Identifier\">OverflowError</span><span class=\"Other\">,</span> <span class=\"Identifier\">ValueError</span><span class=\"Other\">]</span><span class=\"Other\">,</span> <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n<p>Load and iterate over atlas mapping file.</p>\n<p>Mapping should be in a format of:</p>\n<blockquote><p>name, x, y, w, h ...</p></blockquote>\n\n\n</dd>\n<a id=\"atlasValues.i,ptr.RWops,string,Char,Char,Char\"></a>\n<dt><pre><span class=\"Keyword\">iterator</span> <span class=\"Identifier\">atlasValues</span><span class=\"Other\">(</span><span class=\"Identifier\">src</span><span class=\"Other\">:</span> <span class=\"Keyword\">ptr</span> <span class=\"Identifier\">RWops</span><span class=\"Other\">;</span> <span class=\"Identifier\">file</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">;</span> <span class=\"Identifier\">separator</span> <span class=\"Other\">=</span> <span class=\"CharLit\">','</span><span class=\"Other\">;</span> <span class=\"Identifier\">quote</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\&quot;'</span><span class=\"Other\">;</span>\n                    <span class=\"Identifier\">escape</span> <span class=\"Other\">=</span> <span class=\"CharLit\">'\\x00'</span><span class=\"Other\">;</span> <span class=\"Identifier\">skipInitialSpace</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">;</span> <span class=\"Identifier\">freeSrc</span> <span class=\"Other\">=</span> <span class=\"Identifier\">true</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Keyword\">tuple</span><span class=\"Other\">[</span>\n    <span class=\"Identifier\">name</span><span class=\"Other\">:</span> <span class=\"Identifier\">string</span><span class=\"Other\">,</span> <span class=\"Identifier\">rect</span><span class=\"Other\">:</span> <span class=\"Identifier\">Rect</span><span class=\"Other\">]</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">raises</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">Exception</span><span class=\"Other\">,</span> <span class=\"Identifier\">CsvError</span><span class=\"Other\">,</span> <span class=\"Identifier\">OverflowError</span><span class=\"Other\">,</span> <span class=\"Identifier\">ValueError</span><span class=\"Other\">]</span><span class=\"Other\">,</span>\n                            <span class=\"Identifier\">tags</span><span class=\"Other\">:</span> <span class=\"Other\">[</span><span class=\"Identifier\">RootEffect</span><span class=\"Other\">,</span> <span class=\"Identifier\">ReadIOEffect</span><span class=\"Other\">]</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n<div class=\"section\" id=\"18\">\n<h1><a class=\"toc-backref\" href=\"#18\">Templates</a></h1>\n<dl class=\"item\">\n<a id=\"rad.t,Angle\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">rad</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a></pre></dt>\n<dd>\nConvert degrees to radians. \n\n</dd>\n<a id=\"deg.t,Angle\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">deg</span><span class=\"Other\">(</span><span class=\"Identifier\">a</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a><span class=\"Other\">)</span><span class=\"Other\">:</span> <a href=\"types.html#Angle\"><span class=\"Identifier\">Angle</span></a></pre></dt>\n<dd>\nConvert radians to degrees. \n\n</dd>\n<a id=\"random.t,T,openArray[T]\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">random</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">max</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span><span class=\"Other\">;</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">deprecated</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"random.t,openArray[T],openArray[T]\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">random</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">,</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">deprecated</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"random.t,Slice[T],openArray[T]\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">random</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">(</span><span class=\"Identifier\">x</span><span class=\"Other\">:</span> <span class=\"Identifier\">Slice</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">;</span> <span class=\"Identifier\">exclude</span><span class=\"Other\">:</span> <span class=\"Identifier\">openArray</span><span class=\"Other\">[</span><span class=\"Identifier\">T</span><span class=\"Other\">]</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">T</span> <span><span class=\"Other\">{</span><span class=\"Other pragmadots\">...</span><span class=\"Other\">}</span></span><span class=\"pragmawrap\"><span class=\"Other\">{.</span><span class=\"pragma\"><span class=\"Identifier\">deprecated</span></span><span class=\"Other\">.}</span></span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"timeDiff.t,untyped,untyped\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">timeDiff</span><span class=\"Other\">(</span><span class=\"Identifier\">first</span><span class=\"Other\">,</span> <span class=\"Identifier\">second</span><span class=\"Other\">:</span> <span class=\"Identifier\">untyped</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">untyped</span></pre></dt>\n<dd>\n<p>\n<tt class=\"docutils literal\"><span class=\"pre\">first</span></tt>, <tt class=\"docutils literal\"><span class=\"pre\">second</span></tt> two results of <tt class=\"docutils literal\"><span class=\"pre\">sdl.getPerformanceCounter()</span></tt>.</p>\n<p><tt class=\"docutils literal\"><span class=\"pre\">Return</span></tt> time difference between two time stamps (in ms). </p>\n\n\n</dd>\n<a id=\"msToSec.t,int\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">msToSec</span><span class=\"Other\">(</span><span class=\"Identifier\">ms</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span></pre></dt>\n<dd>\n\n\n</dd>\n<a id=\"secToMs.t,float\"></a>\n<dt><pre><span class=\"Keyword\">template</span> <span class=\"Identifier\">secToMs</span><span class=\"Other\">(</span><span class=\"Identifier\">sec</span><span class=\"Other\">:</span> <span class=\"Identifier\">float</span><span class=\"Other\">)</span><span class=\"Other\">:</span> <span class=\"Identifier\">int</span></pre></dt>\n<dd>\n\n\n</dd>\n\n</dl></div>\n\n  </div>\n</div>\n\n    <div class=\"row\">\n      <div class=\"twelve-columns footer\">\n        <span class=\"nim-sprite\"></span>\n        <br/>\n        <small>Made with Nim. Generated: 2019-01-21 14:58:43 UTC</small>\n      </div>\n    </div>\n  </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "docs/docs.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n\n    <aside>\n    </aside>\n\n    <article>\n        <h2>DOCUMENTATION</h2>\n        <div class=\"columns\">\n            <div id=\"col1\"></div>\n            <div id=\"col2\"></div>\n            <div id=\"col3\"></div>\n        </div>\n    </article>\n\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n<script>\n    createDocsLinks();\n</script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n    <aside>\n    </aside>\n\n    <article>\n        <p class=\"centered\">\n            <b>Nimgame 2</b> is a simple 2D game engine for <a href=\"https://nim-lang.org/\">Nim</a> language.\n        </p>\n\n        <hr/>\n\n        <p>\n            <b>Status:</b> v0.6.1 alpha.\n        </p>\n\n        <p>\n        <b>About:</b> The engine is written in <a href=\"https://nim-lang.org/\">Nim</a>, and built on top of <a href=\"https://www.libsdl.org/\" target=\"_blank\">SDL2</a> library through the <a href=\"https://github.com/Vladar4/sdl2_nim/\" target=\"_blank\">SDL2_nim</a> wrapper.\n        </p>\n\n        <p>\n            The purpose of <b>Nimgame 2</b> is to provide a comfort layer over the SDL2 procedures, creating a minimalist and simple to understand 2D game engine.\n        </p>\n\n        <p>\n            <a href=\"changelog.html\">Changelog</a>\n        </p>\n\n        <hr/>\n\n        <div class=\"columns\">\n            <div>\n                <h3>Checklist of features</h3>\n                <ul class=\"checklist\">\n                    <li>scene/entity system</li>\n                    <li>assets manager</li>\n                    <li>audio\n                        <ul>\n                            <li>sound</li>\n                            <li>music</li>\n                            <li>playlists</li>\n                        </ul>\n                    </li>\n                    <li>camera</li>\n                    <li>colliders</li>\n                    <li>drawing</li>\n                    <li>emitters</li>\n                    <li>fonts\n                        <ul class=\"checklist\">\n                            <li>bitmap</li>\n                            <li>TrueType</li>\n                        </ul>\n                    </li>\n                    <li>GUI\n                        <ul class=\"checklist\">\n                            <li>buttons</li>\n                            <li>progress bar</li>\n                            <li>radio groups and buttons</li>\n                            <li>text input</li>\n                            <li class=\"wip\">&hellip;</li>\n                        </ul>\n                    </li>\n                    <li>indexed images (palette manipulation)</li>\n                    <li>input\n                        <ul class=\"checklist\">\n                            <li>keyboard</li>\n                            <li>mouse</li>\n                            <li>joysticks</li>\n                            <li class=\"wip\">gamepads</li>\n                        </ul>\n                    </li>\n                    <li>mosaic</li>\n                    <li>parallax</li>\n                    <li>perspective images (perspective manipulation)</li>\n                    <li>simple physics\n                        <ul class=\"checklist\">\n                            <li>default (\"space\")</li>\n                            <li>platformer</li>\n                        </ul>\n                    </li>\n                    <li>texture atlas</li>\n                    <li>tilemaps</li>\n                    <li>typewriter (text animation effect)</li>\n                    <li>tweens</li>\n                    <li>window management</li>\n                    <li>plugins\n                        <ul class=checklist>\n                            <li>MPEG video support</li>\n                            <li>TAR archive support</li>\n                            <li>ZIP archive support</li>\n                        </ul>\n                    </li>\n                </ul>\n            </div>\n\n            <div>\n                <h3>Screenshots</h3>\n                <figure>\n                    <a  href=\"images/screenshots/ng2tbk.png\"\n                        target=\"_blank\">\n                        <img    src=\"images/screenshots/ng2tbk_thumb.png\"\n                                alt=\"Two-Button Knight screenshot\"\n                                title=\"Two-Button Knight\"\n                        />\n                    </a>\n                    <figcaption>\n                        <a  href=\"https://github.com/Vladar4/ng2tbk/\"\n                            target=\"_blank\">\n                            Two-Button Knight</a>\n                    </figcaption>\n                </figure>\n                <figure>\n                    <a  href=\"images/screenshots/ng2gggrotto.png\"\n                        target=\"_blank\">\n                        <img    src=\"images/screenshots/ng2gggrotto_thumb.png\"\n                                alt=\"Glorious Glacier Grotto screenshot\"\n                                title=\"Glorious Glacier Grotto\"\n                        />\n                    </a>\n                    <figcaption>\n                        <a  href=\"https://github.com/Vladar4/ng2gggrotto/\"\n                            target=\"_blank\">\n                            Glorious Glacier Grotto</a>\n                    </figcaption>\n                </figure>\n                <figure>\n                    <a  href=\"images/screenshots/ng2planetoids.png\"\n                        target=\"_blank\">\n                        <img    src=\"images/screenshots/ng2planetoids_thumb.png\"\n                                alt=\"Planetoids screenshot\"\n                                title=\"Planetoids screenshot\"\n                        />\n                    </a>\n                    <figcaption>\n                        <a  href=\"https://github.com/Vladar4/ng2planetoids/\"\n                            target=\"_blank\">\n                            Planetoids</a>\n                    </figcaption>\n                </figure>\n\n                <figure>\n                    <a  href=\"images/screenshots/ng2platformer.png\"\n                        target=\"_blank\">\n                        <img    src=\"images/screenshots/ng2platformer_thumb.png\"\n                                alt=\"Platformer tutorial screenshot\"\n                                title=\"Platformer tutorial screenshot\"\n                        />\n                    </a>\n                    <figcaption>\n                        <a  href=\"tut102_platformer.html\"\n                            target=\"_blank\">\n                            Platformer tutorial</a>\n                    </figcaption>\n                </figure>\n\n                <figure>\n                    <a  href=\"images/screenshots/demo14.png\"\n                        target=\"_blank\">\n                        <img    src=\"images/screenshots/demo14_thumb.png\"\n                                alt=\"Demo14 screenshot\"\n                                title=\"Demo14 screenshot\"\n                        />\n                    </a>\n                    <figcaption>\n                        <a  href=\"https://github.com/Vladar4/nimgame2/tree/master/demos/demo14\"\n                            target=\"_blank\">\n                            Demo14</a>, using sprites, tilemaps, tweens, and emitters\n                    </figcaption>\n                </figure>\n            </div>\n        </div>\n    </article>\n\n</main>\n\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/links.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n\n    <article class=\"links\">\n        <h2>LINKS</h2>\n        <div>\n            <ul>\n                <li>\n                    <b>Nim</b> Programming Language\n                    <a  href=\"https://nim-lang.org/\"\n                        target=\"_blank\">\n                        Official Site\n                    </a>\n                </li>\n                <li>\n                    <b>Nimgame 2</b>\n                    <ul>\n                        <li>\n                            Source code on\n                            <a  href=\"https://github.com/Vladar4/nimgame2/\"\n                                target=\"_blank\">\n                                GitHub\n                            </a>\n                        </li>\n                        <li>\n                            Glorious Glacier Grotto game on\n                            <a  href=\"https://github.com/Vladar4/ng2gggrotto/\"\n                                target=\"_blank\">\n                                GitHub\n                            </a>\n                        </li>\n                        <li>\n                            Two-Button Knight game on\n                            <a  href=\"https://github.com/Vladar4/ng2tbk/\"\n                                target=\"_blank\">\n                                GitHub\n                            </a>\n                        </li>\n                        <li>\n                            Planetoids game on\n                            <a  href=\"https://github.com/Vladar4/ng2planetoids/\"\n                                target=\"_blank\">\n                                GitHub\n                            </a>\n                        </li>\n                    </ul>\n                </li>\n                <li>\n                    <b>SDL2_nim</b> wrapper\n                    <ul>\n                        <li>\n                            Source code on\n                            <a  href=\"https://github.com/Vladar4/sdl2_nim/\"\n                                target=\"_blank\">\n                                GitHub\n                            </a>\n                        </li>\n                        <li>\n                            Documentation on\n                            <a href=\"https://vladar4.github.io/sdl2_nim/\"\n                            target=\"_blank\">\n                                GitHub Pages\n                            </a>\n                        </li>\n                    </ul>\n                </li>\n            </ul>\n        </div>\n    </article>\n\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/snippets.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n\n    <aside>\n    </aside>\n\n    <article>\n        <h2>SNIPPETS</h2>\n\n<div class=\"snippet\" id=\"init_game\"><h3>Engine Initialization</h3>\n<pre class=\"prettyprint\">\n  # mygame.nim\n\n  import\n      nimgame2 / [\n        nimgame,\n        settings,\n      ]\n      mainscene # your first scene\n\n\n  game = newGame()\n  if game.init(w = 640, h = 480, title = \"My Awesome Game\"):\n      game.scene = newMainScene() # your scene constructor\n      game.run()\n</pre></div>\n\n<div class=\"snippet\" id=\"init_scene\"><h3>Scene Initialization</h3>\n<pre class=\"prettyprint\">\n  # mainscene.nim\n\n  import\n    nimgame2 / [\n      nimgame,\n      entity,\n      scene,\n      settings,\n      texturegraphic,\n      types\n    ]\n\n\n  type\n    MainScene = ref object of Scene\n      myGraphic: TextureGraphic\n      myEntity: Entity\n\n\n  proc init*(scene: MainScene) =\n    # don't forget the parent initialization!\n    Scene(scene).init()\n\n    # create the graphic\n    scene.myGraphic = newTextureGraphic()\n    # load graphic file\n    discard scene.myGraphic.load(\"data/gfx/my_image.png\")\n\n    # create the entity\n    scene.myEntity = newEntity()\n    # assign the graphic to the entity\n    scene.myEntity.graphic = scene.myGraphic\n\n    # add your entity to the scene\n    scene.add(scene.myEntity)\n\n\n  proc free*(scene: MainScene) =\n    # free the texture\n    scene.myGraphic.free()\n\n\n  proc newMainScene*(): MainScene =\n    # scene constructor\n    new result, free\n    result.init()\n\n\n  method event*(scene: MainScene, event: Event) =\n    # call it if your entities have their own event handlers\n    scene.eventScene(event)\n    # if you want to handle some events manually, you do it here\n    if event.kind == KeyDown:\n      case event.key.keysym.scancode:\n      of ScancodeEscape:\n        # stop the engine (see nimgame2/settings.nim)\n        gameRunning = false\n      else: discard\n\n\n  method render*(scene: MainScene) =\n    # don't forget to call the parent render!\n    scene.renderScene()\n    # if you want to draw something on top of a rendered scene,\n    # you do it here\n\n\n  method update*(scene: MainScene, elapsed: float) =\n    # don't forget to call the parent update!\n    scene.updateScene(elapsed)\n    # scene-level logic goes here\n</pre></div>\n\n<div class=\"snippet\" id=\"init_entity\"><h3>Entity Initialization</h3>\n<pre class=\"prettyprint\">\n  # myentity.nim\n\n  import\n    nimgame2 / [\n      nimgame,\n      entity,\n      texturegraphic,\n    ]\n\n\n  type\n    MyEntity* = ref object of Entity\n\n\n  proc init*(entity: MyEntity, graphic: TextureGraphic) =\n    # don't forget to call the parent initialization!\n    entity.initEntity()\n    # assign the graphic\n    entity.graphic = graphic\n    # set the center point\n    entity.centrify()\n    # assign the physics only if you need it\n    entity.physics = defaultPhysics\n\n\n  proc newMyEntity*(graphic: TextureGraphic): MyEntity =\n    # entity constructor\n    new result\n    result.init(graphic)\n\n\n  method update*(entity: MyEntity, elapsed: float) =\n    # don't forget to call the parent update!\n    entity.updateEntity(elapsed)\n    # entity-level logic goes here\n\n</pre></div>\n\n<div class=\"snippet\" id=\"keyboard_input\"><h3>Keyboard Input</h3>\n\n<pre class=\"prettyprint\">\n  # somewhere in the update method\n\n    let move = 100 * elapsed\n    if ScancodeLeft.down: scene.player.pos.x -= move\n    if ScancodeRight.down: scene.player.pos.x += move\n    # the key was pressed\n    if ScancodeSpace.pressed: scene.player.startCharging()\n    # the key was relased\n    if ScancodeSpace.released: scene.player.discharge()\n</pre></div>\n\n<div class=\"snippet\" id=\"mouse_input\"><h3>Mouse Input</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the update method\n\n    let mousePos = mouse.abs\n    if Button.left.down: scene.player.fireTo(mousePos)\n    # Mouse buttons (Button enum): left, middle, right, x1, x2\n</pre></div>\n\n\n<div class=\"snippet\" id=\"joystick_input\"><h3>Joystick Input</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the initialization routine\n\n    for i in 0..&lt;numJoysticks():\n      discard openJoystick(i)\n\n    scene.joy = 0\n\n  # somewhere in the update method\n\n    let move = 100 * elapsed / JoyAxis.high.float\n    scene.player.pos.x += scene.joy.joyAxis(0).float * move\n    scene.player.pos.y += scene.joy.joyAxis(1).float * move\n\n    # the button was pressed\n    if scene.joy.joyPressed(0): scene.player.startCharging()\n    # the button was released\n    if scene.joy.joyReleased(0): scene.player.discharge()\n</pre></div>\n\n\n<div class=\"snippet\" id=\"init_sprite\"><h3>Sprite Initialization</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the entity initialization routine\n\n    # assign the graphic\n    entity.graphic = graphic\n    # set the sprite dimensions and offset\n    # (if the graphic has a border)\n    entity.initSprite((24, 48), offset = (16, 16))\n\n    # add animations\n    discard scene.d.addAnimation(\n      \"run_right\", [0, 1, 2, 3])\n    discard scene.d.addAnimation(\n      \"run_left\", [0, 1, 2, 3], flip = Flip.horizontal)\n\n    # or, if your frames are in order,\n    # use toSeq() from types.nim\n    discard scene.d.addAnimation(\n      \"jump_right\", toSeq(4..7))\n    discard scene.d.addAnimation(\n      \"jump_left\", toSeq(4..7), flip = Flip.horizontal)\n</pre></div>\n\n<div class=\"snippet\" id=\"init_collider\"><h3>Collider Initialization</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the entity initialization routine\n\n    entity.collider = newBoxCollider(entity, (0, 0), entity.graphic.dim)\n</pre></div>\n\n<div class=\"snippet\" id=\"textgraphic\"><h3>TextGraphic Usage</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the scene initialization routine\n\n    # BitmapFont\n\n    # create a bitmap font\n    scene.bitmapFont = newBitmapFont()\n    # load the font file, giving the dimensions of a single character\n    discard scene.bitmapFont.load(\"data/font/bitmap.png\", (8, 16))\n    # create a text graphic\n    scene.bitmapText = newTextGraphic()\n    # assign the font\n    scene.bitmapText.font = scene.bitmapFont\n    # set the text\n    scene.bitmapText.lines =\n      [ \"Text line 1\",\n        \"Text line 2\"]\n    # create an entity\n    scene.bitmapEntity = newEntity()\n    # assign the graphic\n    scene.bitmapEntity.graphic = scene.bitmapText\n    # add to the scene\n    scene.add(scene.bitmapEntity)\n\n    # TrueTypeFont\n\n    # create a TrueType font\n    scene.trueTypeFont = newTrueTypeFont()\n    # load the font file, giving the font size\n    discard scene.trueTypeFont.load(\"data/font/truetype.ttf\", 16)\n    # create a text graphic\n    scene.trueTypeText = newTextGraphic()\n    # assign the font\n    scene.trueTypeText.font = scene.trueTypeFont\n    # set the text\n    scene.trueTypeText.lines =\n      [ \"Text line 1\",\n        \"Text line 2\"]\n    # create an entity\n    scene.trueTypeEntity = newEntity()\n    # assign the graphic\n    scene.trueTypeEntity.graphic = scene.trueTypeText\n    # add to the scene\n    scene.add(scene.trueTypeEntity)\n</pre></div>\n\n<div class=\"snippet\" id=\"procgraphic\"><h3>ProcGraphic Usage</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the initialization routine\n\n  proc customProc(graphic: ProcGraphic,\n                  pos: Coord,\n                  angle: Angle,\n                  scale: Scale,\n                  center: Coord,\n                  flip: Flip,\n                  region: Rect) =\n    # your custom drawing routine goes here\n\n\n  proc init*(scene: MyScene) =\n    Scene(scene).init()\n    # create a ProcGraphic\n    scene.customGraphic = newProcGraphic()\n    # assign the procedure\n    scene.customGraphic.procedure = customProc\n    # create an entity\n    scene.myEntity = newEntity\n    # assign the graphic\n    scene.myEntity.graphic = scene.customGraphic\n    # add to the scene\n    scene.add(scene.myEntity)\n</pre></div>\n\n<div class=\"snippet\" id=\"indexed_image\"><h3>IndexedImage Usage</h3>\n<pre class=\"prettyprint\">\n# somewhere in the initialization routine\n\n  let myImage = newIndexedImage(\"data/gfx/unit.gif\")\n  var color = myImage.palette[8] # get palette color\n  color.r = 255\n  color.g = 0\n  color.b = 0\n  myImage.palette[8] = color # set palette color\n\n  # generate graphic\n  let myGraphic = newTextureGraphic()\n  discard myGraphic.assignTexture myImage.render()\n</pre></div>\n\n<div class=\"snippet\" id=\"perspective_image\"><h3>PerspectiveImage Usage</h3>\n<pre class=\"prettyprint\">\n# somewhere in the initialization routine\n\n  let myImage = newPerspectiveImage(\"data/gfx/pimage.png\")\n  let myGraphic = newTextureGraphic()\n  # render with distortion\n  myGraphic.assignTexture myImage.render(pdHor, 64, 32)\n  let myEntity = newEntity()\n  myEntith.graphic = myGrapghic\n  scene.add(myEntity)\n</pre></div>\n\n<div class=\"snippet\" id=\"texture_atlas\"><h3>TextureAtlas Usage</h3>\n<pre class=\"prettyprint\">\n# somewhere in the initialization routine\n\n  let myAtlas = newTextureAtlas(\"data/gfx/atlas.png\", \"data/csv/atlas.csv\")\n  entity1.graphic = myAtlas[\"image1\"]\n  entity2.graphic = myAtlas[\"image2\"]\n</pre></div>\n\n<div class=\"snippet\" id=\"tweens\"><h3>Tween Usage</h3>\n<pre class=\"prettyprint\">\n  let tween = newTween[Entity,Coord](\n    target = myEntity,\n    get = proc(t: Entity): Coord = t.pos,\n    set = proc(t: Entity, val: Coord) = t.pos = val\n  )\n  tween.procedure = inQuad\n  tween.setup(\n    start = myEnttiy.pos,\n    finish = myEntityPos + (100.0, 0.0),\n    duration = 3.0,\n    loops = -1\n  )\n  tween.play()\n</pre></div>\n\n<div class=\"snippet\" id=\"emitters\"><h3>Emitter Usage</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the initialization routine\n    # init emitter\n    myEmitter = newEmitter(myScene)\n    myEmitter.randomVel = (10.0, 10.0)\n    myEmitter.randomAcc = (5.0, 5.0)\n    myEmitter.randomTTL = 5.0\n    myScene.add(myEmitter)\n    # init emitter particle\n    myEmitter.particle = newParticle()\n    myEmitter.particle.graphic = myParticleGraphic\n    myEmitter.particle.initSprite((5, 5))\n    myEmitter.particle.centrify()\n    discard myEmitter.particle.addAnimation(\"play\", toSeq(0..4), 1/5)\n    myEmitter.particle.play(\"play\", 1, kill = true)\n\n  # somewhere in the update routine\n    if emitCondition:\n      myEmitter.emit(5) # emit 5 particles\n</pre></div>\n\n\n<div class=\"snippet\" id=\"tilemaps\"><h3>TileMap Usage</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the initialization routine\n\n    # tiles\n    scene.tilesGraphic = newTextureGraphic()\n    discard scene.tilesGraphic.load(\"data/gfx/tile.png\")\n\n    # map\n    scene.map = newTileMap(scaleFix = true)\n    scene.map.graphic = scene.tilesGraphic\n    scene.map.initSprite((64, 64), offset = (0, 0))\n    scene.map.map = loadCSV[int](\n        \"data/csv/map.csv\",\n        proc(input: string): int = discard parseInt(input, result)\n    )\n    scene.map.passable.add(0)\n    scene.add(scene.map)\n</pre></div>\n\n\n<div class=\"snippet\" id=\"tilemap_collisionlist\"><h3>TileMap Collision List</h3>\n<pre class=\"prettyprint\">\n  # checking specific tile collisions\n  let\n    collider = TilemapCollider(map.collider)\n    collisions = collider.collisionList(myEntity.collider)\n    for tile in collisions:\n      echo\n        \"Collided with \" &amp; $tile.value &amp; \" at \" &amp; $tile.mapx &amp; \":\" &amp; $tile.mapy\n</pre></div>\n\n\n<div class=\"snippet\" id=\"camera\"><h3>Camera Usage</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the initialization routine\n\n    scene.camera = newEntity()\n\n    scene.map = newMyMap()\n    scene.map.parent = scene.camera # this entity is bound to the camera\n    scene.add(scene.map)\n\n    scene.player = newMyPlayer()\n    scene.player.parent = scene.map # this entity is bound to the map\n    scene.add(scene.player)\n\n    # this entity isn't bound to the camera\n    scene.ui = newUI()\n    scene.add(scene.ui)\n\n    # boud camera to this entity\n    scene.cameraBond = scene.player\n    # place camera bond entity at the center\n    scene.cameraBondOffset = game.size / 2\n\n  # somewhere in the update routine\n\n    if scene.cameraBond == nil:\n        if ScancodeRight.down: scene.camera.pos.x += step\n        # ...\n    else:\n        if ScancodeRight.down: scene.player.pos.x += step\n        # ...\n</pre></div>\n\n\n<div class=\"snippet\" id=\"sound\"><h3>Sound Usage</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the initialization routine\n\n    # load a sound file\n    scene.soundEffect = newSound(\"data/sfx/effect.wav\")\n    # set the volume\n    scene.soundEffect.volume = Volume.high div 2\n\n  # somewhere else\n\n    # the call\n    scene.soundEffect.play()\n</pre></div>\n\n<div class=\"snippet\" id=\"music_playlist\"><h3>Music Playlist Usage</h3>\n<pre class=\"prettyprint\">\n  # somewhere in the initialization routine\n\n    # load all music files\n    var musicData: Assets[Music]\n    musicData = newAssets[Music](\"data/music\",\n                                 proc(file: string): Music = newMusic(file))\n    # global playlist\n    playlist = newPlaylist()\n    # fill the playlist\n    for track in musicData.values:\n      playlist.list.add(track)\n\n  # somewhere else\n\n    # next random track\n    discard playlist.play()\n\n  # somewhere in the update routine\n\n    playlist.update()\n</pre></div>\n\n<div class=\"snippet\" id=\"gui_buttons\"><h3>GUI: Buttons</h3>\n<pre class=\"prettyprint\">\n# mybutton.nim\n\nimport\n  nimgame2 / [\n    graphic,\n    input,\n    gui/button,\n  ]\n\ntype\n  MyButton* = ref object of GuiButton\n\nproc init*(btn: MyButton, graphic: Graphic, image: Graphic = nil) =\n  GuiButton(btn).init(graphic, image)\n\nproc newMyButton*(graphic: Graphic, image: Graphic = nil): MyButton =\n  new result\n  result.init(graphic, image)\n\nmethod onClick*(btn: MyButton, mb: MouseButton) =\n  echo \"clicked my button\"\n\n\n# somewhere in the initialization routine\n  # skin loading\n  let mySkin = newTextureGraphic()\n  discard mySkin.load(\"data/gfx/button_skin.png\")\n\n  # button initialization\n  myBtn = newMyButton(mySkin)\n  scene.add(myBtn)\n</pre></div>\n\n\n<div class=\"snippet\" id=\"gui_actions\"><h3>GUI: Actions</h3>\n<pre class=\"prettyprint\">\n# action procedure\nproc myBtnAction(widget: GuiWidget) =\n  echo \"clicked my button\"\n\n# somewhere in the initialization routine\n  # skin loading\n  let mySkin = newTextureGraphic()\n  discard mySkin.load(\"data/gfx/button_skin.png\")\n\n  # button initialization\n  myBtn = newGuiButton(mySkin)\n  myBtn.action = myBtnAction\n  scene.add(myBtn)\n</pre></div>\n\n\n<div class=\"snippet\" id=\"gui_text_input\"><h3>GUI: Text Input (+ Mosaic)</h3>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    scene,\n    mosaic,\n    texturegraphic,\n    truetypefont,\n    gui/widget,\n    gui/textinput,\n  ]\n\n# somewhere in the initialization routine\n\n  # mosaic creation\n  let myMosaic = newMosaic(\"data/gfx/textinput_skin.png\")\n  let mySkin = newTextureGraphic()\n  discard mySkin.assignTexture myMosaic.render(patternStretchBorder(16, 1))\n\n  # text input initialization\n  myTextInput = newGuiTextInput(mySkin, myFont)\n  myTextInput.text.limit = 16 # set text length limit\n  scene.add(myTextInput)\n\n</pre></div>\n\n<div class=\"snippet\" id=\"gui_radio_groups\"><h3>GUI: Radio Groups</h3>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    scene,\n    texturegraphic,\n    truetypefont,\n    gui/widget,\n    gui/radio,\n  ]\n\ntype\n  MyScene = ref object of Scene\n    radioButtons: array[3, GuiRadioButton]\n    radioGroup: GuiRadioGroup\n\n# somewhere in the initialization routine\n\n  scene.radioGroup = newGuiRadioGroup() # create group\n\n  # init each button\n  for i in 0..scene.radioButtons.high:\n    scene.radioButtons[i] = newGuiRadioButton(scene.radioGroup, scene.mySkin)\n\n  scene.radioButtons[0].toggled = true # toggle the first button\n\n  # add to the scene\n  scene.add(scene.radioGroup)\n  for btn in scene.radioButtons:\n    scene.add(btn)\n</pre></div>\n\n\n<div class=\"snippet\" id=\"gui_progressbar\"><h3>GUI: ProgressBar</h3>\n<pre class=\"prettyprint\">\n# somewhere in the initialization routine\n  scene.bar = newProgressBar((200, 50), 0xFF0000FF<span class=\"nocode\">&#39;</span>u32, 0xFF0000FF<span class=\"nocode\">&#39;</span>u32, myFont)\n  scene.bar.min = 0\n  scene.bar.max = 100\n  scene.bar.direction = Direction.leftRight\n  scene.bar.outline = (1, 1) # one pixel outline\n  scene.add(scene.bar)\n\n# on update\n  scene.bar.value = newValue\n</pre></div>\n\n\n<!--\n\n<div class=\"snippet\" id=\"\"><h3></h3>\n<pre class=\"prettyprint\">\n\n</pre></div>\n\n-->\n\n    </article>\n\n    <aside style=\"display: flex; border: 0;\"></aside>\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n<script>\n    createSnippetsList();\n</script>\n\n<script src=\"https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/structure.js",
    "content": "// STRUCTURE\n\n\n/**\n *  Create favicon link tag.\n */\nfunction createFavicon() {\n    var icon = document.createElement('link');\n    icon.rel = 'shortcut icon';\n    icon.href = 'favicon.ico';\n    icon.type = \"image/x-icon\";\n    document.querySelector('head').appendChild(icon);\n}\n\n\n/**\n *  Create a header link object.\n *\n *  @param name     Link name (without extension).\n *\n *  @param disabled If true - the link is disabled.\n *\n *  @return an object with a link to the @param link.\n */\nfunction headerLink(name, disabled) {\n    var a = document.createElement('a');\n    if(disabled)\n        a.classList.add('disabled');\n    a.href = name + '.html';\n    a.classList.add('menu');\n    a.innerHTML = name.toUpperCase();\n    var result = document.createElement('span');\n    result.appendChild(a);\n    return result;\n}\n\n\n/**\n *  Fill the <header> of the current html-file.\n *\n *  @param title    Header title.\n *\n *  @param logo     Path to the logo image (without extension).\n */\nfunction createHeader(title, logo) {\n    var img = document.createElement('img');\n    img.src = logo + '.png';\n\n    var logoLink = document.createElement('a');\n    logoLink.href = 'index.html';\n    logoLink.target = '_self';\n    logoLink.appendChild(img);\n\n    var logo = document.createElement('div');\n    logo.classList.add('logo');\n    logo.appendChild(logoLink);\n\n    var headerTitle = document.createElement('h1');\n    headerTitle.innerHTML = title;\n\n    var headerLinks = [\n        headerLink('index'),\n        headerLink('demos'),\n        headerLink('tutorials'),\n        headerLink('snippets'),\n        headerLink('docs'),\n        headerLink('links'),\n    ];\n\n    var menu = document.createElement('div');\n    for(var i = 0; i < headerLinks.length; i++) {\n        menu.appendChild(headerLinks[i]);\n    }\n\n    var titleDiv = document.createElement('div');\n    titleDiv.appendChild(headerTitle);\n    titleDiv.appendChild(menu);\n\n    var logoR = document.createElement('div');\n    logoR.classList.add('logo');\n\n    var headerDiv = document.createElement('div');\n    headerDiv.appendChild(logo);\n    headerDiv.appendChild(titleDiv);\n    headerDiv.appendChild(logoR);\n\n    var header = document.querySelector('header');\n    header.appendChild(headerDiv);\n    header.appendChild(document.createElement('hr'));\n}\n\n\n/**\n *  Fill the <footer> of the current html-file.\n */\nfunction createFooter() {\n    var text = document.createElement('p');\n    text.innerHTML = '\\\n        Copyright &copy; 2016-2017 Vladar (Vladimir Arabadzhi)\\\n        (<a href=\"mailto:vladar4@gmail.com\">e-mail</a>)';\n\n    var footer = document.querySelector('footer');\n    footer.appendChild(document.createElement('hr'));\n    footer.appendChild(text);\n}\n\n/**\n *  Fill <aside> with @param cname snippet class links.\n */\nfunction createClassList(cname) {\n    document.querySelector('body').id = 'top';\n    var list = document.querySelectorAll(cname);\n\n    for(var i = 0; i < list.length; i++) {\n        var title = list[i].childNodes[0];\n        title.style.display = 'inline';\n\n        var link = document.createElement('a');\n        link.href = '#' + list[i].id;\n        link.innerHTML = title.innerHTML;\n\n        var backLink = document.createElement('a');\n        backLink.href = '#top';\n        backLink.innerHTML = '&#8632;'; // back arrow\n\n        var spacing = document.createElement('span');\n        spacing.innerHTML = '&nbsp';\n\n        var titleLink = document.createElement('a');\n        titleLink.href = '#' + list[i].id;\n\n        var titleLine = document.createElement('div');\n        list[i].insertBefore(titleLine, title);\n        titleLine.appendChild(backLink);\n        titleLine.appendChild(spacing);\n        titleLine.appendChild(titleLink);\n        titleLink.appendChild(title);\n\n        // aside\n        var line = document.createElement('p');\n        line.appendChild(link);\n        var aside = document.querySelector('aside');\n        aside.style.display = 'flex';\n        aside.appendChild(line);\n    }\n}\n\n\nfunction createSnippetsList() {\n    createClassList('.snippet')\n}\n\nfunction createSectionsList() {\n    createClassList('.section')\n}\n\n\nvar docsList = [\n    'assets',\n    'audio',\n    'bitmapfont',\n    'count',\n    'draw',\n    'emitter',\n    'entity',\n    'font',\n    'graphic',\n    'indexedimage',\n    'input',\n    'mosaic',\n    'nimgame',\n    'perspectiveimage',\n    'procgraphic',\n    'scene',\n    'settings',\n    'textfield',\n    'textgraphic',\n    'textureatlas',\n    'texturegraphic',\n    'tilemap',\n    'truetypefont',\n    'tween',\n    'types',\n    'typewriter',\n    'utils',\n\n    'gui/button',\n    'gui/progressbar',\n    'gui/radio',\n    'gui/textinput',\n    'gui/widget',\n\n    'plugin/mpeggraphic',\n    'plugin/tar',\n    'plugin/zzip',\n\n    'private/collider',\n];\n\n\n/**\n *  Create a <li> element with a link inside.\n *\n *  @param dir  Path to the target html file.\n *\n *  @param link Target html-file (without extension).\n *\n *  @return a <li> element, containing a link for the @param link file.\n */\nfunction listLink(dir, link) {\n    var result = document.createElement('li');\n    result.innerHTML = '\\\n        <a href=\"' + dir + '/' + link + '.html\" target=\"_blank\">' +\n        link + '</a>';\n    return result;\n}\n\n\n/**\n *  Fill the container with documentation links.\n *\n *  @param obj  The target container.\n *\n *  @param from Starting index of the docList array.\n *\n *  @param to   Limiting index of the docList array.\n */\nfunction fillListColumn(obj, from, to) {\n    var list = document.createElement('ul');\n    for(var i = from; i < to; i++) {\n        list.appendChild(listLink('docs', docsList[i]));\n    }\n    obj.appendChild(list);\n}\n\n\n/**\n *  Fill the three-column structure of documentation links.\n *\n *  The html structure should be defined as follows:\n *\n *      <div class=\"three-columns left\"></div>\n *      <div class=\"three-columns center\"></div>\n *      <div class=\"three-columns right\"></div>\n */\nfunction createDocsLinks() {\n    var col1 = document.querySelector('#col1');\n    var col2 = document.querySelector('#col2');\n    var col3 = document.querySelector('#col3');\n    var oneThird = Math.round(docsList.length / 3);\n    var twoThirds = 2 * oneThird;\n\n    fillListColumn(col1, 0, oneThird);\n    fillListColumn(col2, oneThird, twoThirds);\n    fillListColumn(col3, twoThirds, docsList.length);\n}\n\n\nfunction rankName(level) {\n    switch(level) {\n        case '1': return 'simple';\n        case '2': return 'advanced';\n        case '3': return 'difficult';\n        default: return '';\n    }\n}\n\nfunction createRanks() {\n    const max = 3;\n    var list = document.querySelectorAll('.rank');\n    for(i = 0; i < list.length; i++) {\n        var level = list[i].getAttribute('level');\n        var name = rankName(level);\n        for(n = 0; n < level; n++) {\n            var starf = document.createElement('img');\n            starf.classList.add('star');\n            starf.src = 'images/icons/starf.png';\n            starf.title = name;\n            list[i].appendChild(starf);\n        }\n        for(m = 0; m < (max - level); m++) {\n            var stare = document.createElement('img');\n            stare.classList.add('star');\n            stare.src = 'images/icons/stare.png';\n            stare.title = name;\n            list[i].appendChild(stare);\n        }\n    }\n}\n\n\n// EXECUTE\n\ncreateFavicon();\ncreateHeader('Nimgame 2', 'images/icons/logo');\ncreateFooter()\n\n"
  },
  {
    "path": "docs/style.css",
    "content": "/* REFERENCE\n--min-width: 20rem;\n--max-width: 40rem;\n--border-color: #999;\n*/\n\nbody {\n    padding-left: 0;\n    padding-right: 0;\n    margin-left: 0;\n    margin-right: 0;\n    color: #333;\n    background-color: #fcf8f4;\n    font-family: sans-serif;\n    overflow-y: scroll;\n}\n\n/* HEADER */\n\nheader {\n    display: flex;\n    flex-direction: column;\n    text-align: center;\n}\n\nheader > div, header > div > div > div {\n    display: flex;\n    flex-direction: row;\n    justify-content: center;\n}\n\nheader > div > div {\n    display: flex;\n    flex-direction: column;\n}\n\nheader .logo {\n    padding: 0.5rem;\n    min-width: 5rem;\n}\n\nheader .logo img {\n    height: 4rem;\n    width: 4rem;\n}\n\nheader h1 {\n    color: #000;\n    text-shadow: 2px 2px 2px #333;\n}\n\nheader .menu {\n    padding: 0.5rem 1rem;\n    border: 1px solid #999;\n    color: #333;\n    text-align: center;\n    text-decoration: none;\n    vertical-align: middle;\n    white-space: nowrap;\n    cursor: pointer;\n}\n\nheader .menu:hover {\n    background-color: #fff;\n}\n\nheader .menu:active {\n    background-color: #fee;\n}\n\nheader .disabled {\n    color: #ccc;\n    pointer-events: none;\n    cursor: default;\n}\n\n/* MAIN */\n\nmain {\n    display: flex;\n    flex-direction: row;\n    flex-wrap: wrap;\n    justify-content: flex-start;\n}\n\narticle {\n    display: flex;\n    flex-direction: column;\n}\n\narticle, footer p {\n    min-width: 20rem;\n    max-width: 40rem;\n    width: 100%;\n    margin: 0 auto;\n}\n\naside {\n    display: none;\n    flex-direction: column;\n    padding: 1rem;\n    border: 1px solid #999;\n    margin: 1rem;\n    min-width: 15rem;\n    height: 100%;\n    font-size: larger;\n}\n\nfigure {\n    margin: 0;\n    margin-bottom: 1rem;\n}\n\nfigcaption {\n    text-align: center;\n}\n\nfooter {\n    padding-top: 1rem;\n    text-align: right;\n    font-size: smaller;\n    color: #333;\n}\n\nh1, h2, h3, h4 {\n    color: #333;\n}\n\nh3 {\n    font-size: 100%;\n    margin-bottom: 0em;\n}\n\nh4 {\n    font-size: 80%;\n    font-style: italic;\n    margin-bottom: 0rem;\n}\n\nhr {\n    width: 100%;\n}\n\n\nkbd {\n    background-color: #e0e0e0;\n    border: 1px solid #888;\n    border-radius: 5px;\n    padding: 2px;\n}\n\n\npre {\n    background-color: #f2edeb;\n    white-space: pre-wrap;\n    padding: 2px;\n    border: 1px solid #888;\n}\n\n.prettyprint {\n    background-color: #f2edeb;\n}\n\nnoscript {\n    color: maroon;\n}\n\n.snippet, .section {\n    display: flex;\n    flex-direction: column;\n    padding: 0.5rem;\n    margin-bottom: 1rem;\n}\n\n.snippet {\n    border: 1px solid #999;\n}\n\n.docs div:first-of-type {\n    margin-left: 10%;\n}\n\n.links div:first-of-type{\n    padding-left: 12.5%;\n    padding-right: 12.5%;\n}\n\n.centered {\n    text-align: center;\n}\n\n.columns {\n    display: flex;\n    flex-direction: row;\n}\n\n.columns > div {\n    width: 100%;\n}\n\n/* TEXT */\n\na {\n    text-decoration: none;\n}\n\na[href*=\"http\"] {\n    background: url('images/icons/outlink.png') no-repeat 100% 0;\n    background-size: 0.75rem;\n    padding-right: 0.85rem;\n}\n\na[href*=\"mailto\"] {\n    background: url('images/icons/email.png') no-repeat 100% 0;\n    background-size: 1rem;\n    padding-right: 1.25rem;\n}\n\np {\n    margin-top: 1rem;\n    margin-bottom: 0rem;\n}\n\n.checklist {\n    padding-left: 0;\n}\n\n.checklist li {\n    list-style: none;\n    list-style-position: outside;\n    background: url('images/icons/check.png') no-repeat 0 0.1rem;\n    background-size: 1rem 1rem;\n    padding-left: 1.5rem;\n    font-size: medium;\n}\n\n.checklist li.wip {\n    background: url('images/icons/checkn.png') no-repeat 0 0.1rem;\n    background-size: 1rem 1rem;\n    padding-left: 1.5rem;\n}\n\n.tutlist li {\n    padding-bottom: 1em;\n}\n\n.star {\n    width: 1rem;\n}\n\nhr {\n    border: 1px solid #999;\n}\n\nh1, h2 {\n    text-align: center;\n}\n\n"
  },
  {
    "path": "docs/template.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n    <aside>\n\n    </aside>\n\n\n    <article>\n\n    </article>\n\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/template_tutorial.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n\n    <aside>\n    </aside>\n\n    <article>\n        <h2>TUTORIAL</h2>\n\n<div class=\"section\" id=\"introduction\"><h3>Introduction</h3>\n\n<pre class=\"prettyprint\">\n\n</pre></div>\n\n<!--\n\n<div class=\"section\" id=\"\"><h3></h3>\n\n<h4></h4>\n<pre class=\"prettyprint\">\n\n</pre>\n\n</div>\n\n-->\n\n    </article>\n\n    <aside style=\"display: flex; border: 0;\"></aside>\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n<script>\n    createSectionsList();\n</script>\n\n<script src=\"https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/tut101_bounce.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n\n    <aside>\n    </aside>\n\n    <article>\n        <h2>BOUNCE GAME</h2>\n\n<div class=\"section\" id=\"introduction\"><h3>Introduction</h3>\n\n    <p>\n        This tutorial is designed to give an example of the basic structure of Nimgame2 applications. The following concepts will be explained here:\n    </p>\n    <ul>\n        <li>engine initialization</li>\n        <li>assets loading</li>\n        <li>scenes</li>\n        <li>texture graphics</li>\n        <li>text graphics</li>\n        <li>entity objects</li>\n        <li>colliders and collisions</li>\n        <li>keyboard input</li>\n        <li>pausing</li>\n        <li>sound</li>\n    </ul>\n\n</div>\n\n\n<div class=\"section\" id=\"assets\"><h3>Assets</h3>\n    <p>\n        For any basic game you'll need three basic kinds of assets:\n    </p>\n    <ul>\n        <li>fonts</li>\n        <li>graphics</li>\n        <li>sounds</li>\n    </ul>\n    <p>\n        So, the assets directory of the game will be structured as shown here:\n    </p>\n<pre>\n    ./data/\n      |\n      |-- fnt/\n      |-- gfx/\n      |-- sfx/\n</pre>\n    <p>\n        For rendering all text in the game we will use good old <a href=\"http://fixedsysexcelsior.com/\" target=\"_blank\">Fixedsys Excelsior</a> (at \"data/fnt\").\n    </p>\n    <p>\n        We will need just two graphic assets here: the ball and the paddle (at &quot;data/gfx&quot;).\n    </p>\n    <p class=\"centered\">\n        <span><img src=\"images/tut101_bounce/ball.png\"\n             alt=\"Ball graphic asset\"\n             title=\"Ball\"\n        /></span><span>\n        <img src=\"images/tut101_bounce/paddle.png\"\n             alt=\"Paddle graphic asset\"\n             title=\"Paddle\"\n        /></span>\n    </p>\n    <p>\n        As for the sounds, we will not worry about it for now.\n    </p>\n</div>\n\n\n<div class=\"section\" id=\"starting\"><h3>Starting to Code</h3>\n\n    <p>\n        All source code will be placed into the &quot;src&quot; directory. Let's start with a file for storing constants and variables that might be accessed from different points of the game.\n    </p>\n\n<h4>data.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    assets,\n    scene,\n    types,\n  ]\n\n\nconst\n  GameWidth* = 640\n  GameHeight* = 360\n  GameTitle* = \"Nimgame 2 Bounce\"\n\n\nvar\n  titleScene*, mainScene*: Scene\n\n</pre>\n\n    <p>\n        As you can see, we will have two game scenes: title and main. We will create a souce file for each of them.\n    </p>\n\n<h4>title.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    nimgame,\n    scene,\n    types,\n  ],\n  data\n\n\ntype\n  TitleScene = ref object of Scene\n\n\nproc init*(scene: TitleScene) =\n  init Scene(scene)\n\n\nproc free*(scene: TitleScene) =\n  discard\n\n\nproc newTitleScene*(): TitleScene =\n  new result, free\n  init result\n\n\nmethod event*(scene: TitleScene, event: Event) =\n  if event.kind == KeyDown:\n    game.scene = mainScene\n\n</pre>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    scene,\n  ],\n  data\n\n\ntype\n  MainScene = ref object of Scene\n\n\nproc init*(scene: MainScene) =\n  init Scene(scene)\n\n\nproc free*(scene: MainScene) =\n  discard\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  init result\n\n\nmethod show*(scene: MainScene) =\n  echo \"Switched to MainScene\"\n\n</pre>\n\n    <p>\n        And, finally, we will create a main source file:\n    </p>\n\n<h4>bounce.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    nimgame,\n    settings,\n    types,\n  ],\n  data,\n  title,\n  main\n\n\ngame = newGame()\nif game.init(GameWidth, GameHeight, title = GameTitle, integerScale = true):\n\n  # Init\n  game.setResizable(true) # Window could be resized\n  game.minSize = (GameWidth, GameHeight) # Minimal window size\n  game.windowSize = (GameWidth * 2, GameHeight * 2) # Double scaling (1280x720)\n  game.centrify() # Place window at the center of the screen\n\n  # Create scenes\n  titleScene = newTitleScene()\n  mainScene = newMainScene()\n\n  # Run\n  game.scene = titleScene # Initial scene\n  run game  # Let's go!\n\n</pre>\n\n    <p>\n        During the process of development we will rebuild the game constantly, so let's create some basic scripts for that:\n    </p>\n\n<h4>build.debug.sh</h4>\n<pre class=\"prettyprint\">\n    #!/bin/sh\n    cd src\n    nim c --out:../ng2bounce bounce.nim\n    cd ..\n</pre>\n\n<h4>build.release.sh</h4>\n<pre class=\"prettyprint\">\n    #!/bin/sh\n    cd src\n    nim c --out:../ng2bounce -d:release --opt:speed bounce.nim\n    rm -rf nimcache\n    cd ..\n</pre>\n\n    <p>\n        Or, if you are working on Windows:\n    </p>\n\n<h4>build.debug.bat</h4>\n<pre class=\"prettyprint\">\n    cd src\n    nim c --out:..\\ng2bounce.exe bounce.nim\n    cd ..\n</pre>\n\n<h4>build.release.bat</h4>\n<pre class=\"prettyprint\">\n    cd src\n    nim c --out:..\\ng2bounce -d:release --opt:speed --app:gui bounce.nim\n    rmdir /s /q nimcache\n    cd ..\n</pre>\n\n    <p>\n        So, at this moment, our directory structure looks like this:\n    </p>\n\n<pre>\n    ./ng2bounce/\n      |\n      |-- build.debug.sh\n      |-- build.release.sh\n      |\n      |-- data/\n      |     |\n      |     |-- fnt/\n      |     |     |\n      |     |     |-- FSEX300.ttf\n      |     |\n      |     |-- gfx/\n      |     |     |\n      |     |     |-- ball.png\n      |     |     |-- paddle.png\n      |     |\n      |     |-- sfx/\n      |\n      |-- src/\n            |\n            |-- bounce.nim\n            |-- data.nim\n            |-- main.nim\n            |-- title.nim\n</pre>\n\n    <p>\n        When we run our &quot;build.debug.sh&quot; script, we should get an executalbe &quot;ng2bounce&quot; that just shows a black screen and outputs a &quot;Switched to MainScene&quot; message to the console when any keyboard key is pressed.\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"titlescreen\"><h3>Title Screen</h3>\n\n    <p>\n        We will start with populating the title screen. There will be two text graphics: the title of the game and a subtitle hint under it.\n    </p>\n\n    <p>\n        To render any text we need to load our font first.\n    </p>\n\n<h4>data.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    ...\n    font,\n    ...\n    truetypefont,\n    ...\n  ]\n\n...\n\nvar\n  ...\n  defaultFont*, bigFont*: TrueTypeFont\n\n\nproc loadData*() =\n  defaultFont = newTrueTypeFont()\n  if not defaultFont.load(\"data/fnt/FSEX300.ttf\", 16):\n    echo \"ERROR: Can't load font\"\n  bigFont = newTrueTypeFont()\n  if not bigFont.load(\"data/fnt/FSEX300.ttf\", 32):\n    echo \"ERROR: Can't load font\"\n\n\nproc freeData*() =\n  defaultFont.free()\n  bigFont.free()\n\n</pre>\n\n    <p>\n        We will call the loading procedure from our main file.\n    </p>\n\n<h4>bounce.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nloadData() # Call it before any scene initialization\n\n# Create scenes\n...\n\n</pre>\n\n    <p>\n        And finally, we will create our entities in TitleScene's <b>init()</b> procedure.\n    </p>\n\n<h4>title.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    entity,\n    font,\n    ...\n    textgraphic,\n    ...\n  ],\n  ...\n\nproc init*(scene: TitleScene) =\n  ...\n\n  # Create a title text graphic with a big font\n  let titleText = newTextGraphic(bigFont)\n  titleText.setText GameTitle # Set the text to render\n\n  let title = newEntity() # Create a title entity\n  title.graphic = titleText # Assign the title text graphic\n  title.centrify() # Set the origin point to the graphic's center\n  title.pos = (GameWidth / 2, GameHeight / 3) # Set the title position on the screen\n  scene.add title # Add title entity to the scene\n\n  # Create a subtitle text graphic with a default font\n  let subtitleText = newTextGraphic(defaultFont)\n  subtitleText.setText \"Press any key to start\" # Set the text\n\n  let subtitle = newEntity() # Create a subtitle entity\n  subtitle.graphic = subtitleText # Assign the subtitle text graphic\n  subtitle.centrify() # Set the origin point to the graphic's center\n  subtitle.pos = game.size / 2 # Place to the center of the screen\n  scene.add subtitle # Add subtitle entity to the scene\n\n  ...\n\n</pre>\n\n    <p>\n        After running the game we should see this screen:\n    </p>\n\n    <p>\n        <img src=\"images/tut101_bounce/titlescene.png\"\n             alt=\"TitleScene screenshot\"\n             title=\"TitleScene screenshot\"\n        />\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"loadingassets\"><h3>Loading Assets</h3>\n\n    <p>\n        Though we only have two graphic assets now it is surelly an overkill to use an asset manager, but it is a good opportunity to give an example of its usage.\n    </p>\n\n<h4>data.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    ...\n    texturegraphic,\n    ...\n  ]\n\n...\n\nvar\n  ...\n  gfxData*:Assets[TextureGraphic]\n\n\nproc loadData*() =\n  ...\n\n  gfxData = newAssets[TextureGraphic](\n    \"data/gfx\",\n    proc(file: string): TextureGraphic = newTextureGraphic(file))\n\n\nproc freeData*() =\n  ...\n  for graphic in gfxData.values:\n    graphic.free()\n\n</pre>\n\n    <p>\n        As you can see, we pass two arguments to the asset manager constructor: a path to the assets and a procedure to load them. The procedure recieves a file name and should return an object to be loaded in our collection.\n    </p>\n\n    <p>\n        <b>Note:</b> If you try to load any directory containing other types of files, the loading procedure will throw an error.\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"paddles\"><h3>Paddles</h3>\n\n    <p>\n        Let's start with creating paddle entity. This object will represent players in this game.\n    </p>\n\n<h4>paddle.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    assets,\n    graphic,\n    input,\n    nimgame,\n    entity,\n  ],\n  data\n\n\nconst\n  Speed = 250.0 # Speed (in pixels per second)\n\n\ntype\n  PaddlePlacement* = enum\n    ppLeft, ppRight\n\n  PaddleControl* = enum\n    pcPlayer1, pcPlayer2\n\n  Paddle* = ref object of Entity\n    control*: PaddleControl\n\n</pre>\n\n    <p>\n        As you can see, two enums represent the paddle position and how it will be controlled.\n    </p>\n\n<h4>paddle.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nproc init*(paddle: Paddle, placement: PaddlePlacement, control: PaddleControl) =\n  paddle.initEntity()\n  paddle.graphic = gfxData[\"paddle\"]\n  paddle.centrify() # Set the center point offset\n\n  # Set position\n  paddle.pos = case placement:\n    of ppLeft: (paddle.graphic.w.float, game.size.h / 2)\n    of ppRight: (float(game.size.w - paddle.graphic.w), game.size.h / 2)\n\n  paddle.control = control # Set control mode\n\n\nproc newPaddle*(placement: PaddlePlacement, control: PaddleControl): Paddle =\n  new result\n  result.init(placement, control)\n\n</pre>\n\n    <p>\n    As you see, for now we need to have only one param in our <b>Paddle</b> object&nbsp;— a control state, that we will need in the <b>update()</b> method.\n    </p>\n\n<h4>paddle.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nmethod update*(paddle: Paddle, elapsed: float) =\n  var movement = Speed * elapsed\n\n  # Read input\n  case paddle.control:\n  # First player\n  of pcPlayer1:\n    if ScancodeQ.down: paddle.pos.y -= movement # Move up\n    if ScancodeA.down: paddle.pos.y += movement # Move down\n  # Second player\n  of pcPlayer2:\n    if ScancodeUp.down: paddle.pos.y -= movement    # Move up\n    if ScancodeDown.down: paddle.pos.y += movement  # Move down\n\n  # Check for the screen borders\n  paddle.pos.y = clamp(\n    paddle.pos.y,\n    paddle.center.y,\n    game.size.h.float - paddle.center.y)\n\n</pre>\n\n    <p>\n        We calculate movement distance by multiplying the speed and time elapsed since previous update. Finally, don't forget to check for the screen borders.\n    </p>\n\n    <p>\n        Now we just need to add two <b>Paddle</b> entities into the main scene.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    scene,\n  ],\n  data,\n  paddle\n\n\ntype\n  MainScene = ref object of Scene\n    leftPaddle, rightPaddle: Paddle\n\n\nproc init*(scene: MainScene) =\n  init Scene(scene)\n\n  # left paddle\n  scene.leftPaddle = newPaddle(ppLeft, pcPlayer1)\n  scene.add scene.leftPaddle\n\n  # right paddle\n  scene.rightPaddle = newPaddle(ppRight, pcPlayer2)\n  scene.add scene.rightPaddle\n\n...\n\n</pre>\n\n    <p>\n        Now the main scene should look like this:\n    </p>\n\n    <p>\n        <img src=\"images/tut101_bounce/paddles.png\"\n             alt=\"Paddles screenshot\"\n             title=\"Paddles screenshot\"\n        />\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"colliders\"><h3>Colliders</h3>\n\n    <p>\n        To detect collisions between the ball and paddles we need to init colliders for these entities. All collider counstructors accept a parent entity reference, center point offset, and collider dimensions that depend on a particular collider type. We will use a simple box collider for our paddles.\n    </p>\n\n<h4>paddle.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nproc init*(paddle: Paddle, placement: PaddlePlacement, control: PaddleControl) =\n  ...\n\n  # Collisions\n  paddle.tags.add \"paddle\"\n  paddle.collider = paddle.newBoxCollider((0.0, 0.0), paddle.graphic.dim)\n  paddle.collider.tags.add \"ball\"\n\n...\n\n</pre>\n\n    <p>\n        The &quot;paddle&quot; and &quot;ball&quot; tags will be used to filter out the collisions.\n    </p>\n\n    <p>\n        Now we define a <b>Ball</b> entity the same way, but using the circle collider instead of a box one, passing the circle radius to its constructor.\n    </p>\n\n<h4>ball.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    assets,\n    entity,\n    graphic,\n    nimgame,\n    types,\n    utils,\n  ],\n  data\n\n\ntype\n  Ball* = ref object of Entity\n    radius: float\n\n\nproc reset*(ball: Ball) =\n  ball.pos = game.size / 2  # place to the center of the screen\n\n\nproc init*(ball: Ball) =\n  ball.initEntity()\n  ball.graphic = gfxData[\"ball\"]\n  ball.radius = ball.graphic.dim.w / 2\n  ball.centrify() # Set the center point offset\n  ball.reset()\n\n  # Collisions\n  ball.tags.add \"ball\"\n  ball.collider = ball.newCircleCollider((0.0, 0.0), ball.radius)\n  ball.collider.tags.add \"paddle\"\n\n\nproc newBall*(): Ball =\n  new result\n  result.init()\n\n</pre>\n\n    <p>\n        To be sure that we have initialized colliders correctly we could use a <b>colliderOutline</b> boolean variable from the &quot;nimgame2/settings&quot; module.\n    </p>\n\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    input,\n    scene,\n    settings,\n  ],\n  ball,\n  ...\n\n\ntype\n  MainScene = ref object of Scene\n    ...\n    ball: Ball\n\n\nproc init*(scene: MainScene) =\n  ...\n\n  # ball\n  scene.ball = newBall()\n  scene.add scene.ball\n\n...\n\nmethod show*(scene: MainScene) =\n  ...\n  scene.ball.reset()\n\n...\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene(elapsed)\n\n  if ScancodeF10.pressed: colliderOutline = not colliderOutline\n  if ScancodeF11.pressed: showInfo = not showInfo\n\n</pre>\n\n    <p>\n        Now we could press <kbd>F10</kbd> to toggle collider outlines. We also assigned the info panel toggle to <kbd>F11</kbd> for good measure.\n    </p>\n\n    <p>\n        <img src=\"images/tut101_bounce/colliders.png\"\n             alt=\"Collider outlines screenshot\"\n             title=\"Collider outlines screenshot\"\n        />\n    </p>\n</div>\n\n\n<div class=\"section\" id=\"bounce\"><h3>Bounce</h3>\n\n    <p>\n        Now, as we have a ball entity, bounce logic could be implemented. The ball should bounce from top and bottom walls, and also from both paddles. Paddle bounces will increase ball's speed each time.\n    </p>\n\n<h4>ball.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nconst\n  Speed = 100.0 # Speed (in pixels per second)\n  SpeedInc = 25.0 # Speed increase after each bounce\n\n...\n\nproc reset*(ball: Ball) =\n  ball.pos = game.size / 2  # place to the center of the screen\n  ball.vel.x = Speed * randomSign().float\n  ball.vel.y = Speed * randomSign().float\n\n...\n\nmethod update*(ball: Ball, elapsed: float) =\n  var movement = ball.vel * elapsed\n\n  ball.pos += movement\n\n  # Top and bottom walls collisions\n  if ball.pos.y &lt; ball.radius or\n     ball.pos.y &gt;= (game.size.h.float - ball.radius):\n    ball.vel.y = -ball.vel.y\n\n\nmethod onCollide*(ball: Ball, target: Entity) =\n  if \"paddle\" in target.tags:\n    # Check if the ball is in front of a paddle\n    if (ball.pos.y &gt;= target.pos.y - target.center.y) and\n       (ball.pos.y &lt;= target.pos.y + target.center.y):\n\n      ball.vel.x = -ball.vel.x  # change horizontal direction\n\n      # Move the ball out of the collision zone\n      if ball.pos.x &lt; game.size.w / 2:\n        ball.pos.x = target.pos.x + target.center.x + ball.radius + 1\n      else:\n        ball.pos.x = target.pos.x - target.center.x - ball.radius - 1\n\n      # increase speed\n      ball.vel += (SpeedInc, SpeedInc) * ball.vel / abs(ball.vel)\n\n</pre>\n</div>\n\n\n<div class=\"section\" id=\"reset\"><h3>Reset</h3>\n\n    <p>\n        Each time the ball leaves the screen it should be returned to the center and relaunched. It would be good to add a small pause before the launch too. This pause will be indicated by a white circle, shrinking as the pause runs out.\n    </p>\n\n\n<h4>ball.nim</h4>\n<pre class=\"prettyprint\">\nnimgame2 / [\n  ...\n  draw,\n  ...\n],\n...\n\nconst\n  ...\n  Pause = 1.0 # Pause value before launch (in seconds)\n\n\ntype\n  Ball* = ref object of Entity\n    ...\n    pause: float\n\n\nproc reset*(ball: Ball) =\n  ...\n  ball.pause = Pause\n\n\nmethod render*(ball: Ball) =\n  ball.renderEntity()\n  if ball.pause &gt; 0.0: # pre-launch pause\n    discard circle(ball.pos, ball.pause * 100, 0xFFFFFFFFF<span class=\"nocode\">&#39;</span>u32, DrawMode.aa)\n\n\nmethod update*(ball: Ball, elapsed: float) =\n  if ball.pause &lt;= 0.0:\n\n    var movement = ball.vel * elapsed\n\n    ball.pos += movement\n\n    # Top and bottom walls collisions\n    if ball.pos.y &lt; ball.radius or\n      ball.pos.y &gt;= (game.size.h.float - ball.radius):\n      ball.vel.y = -ball.vel.y\n\n  else: # pre-launch pause\n\n    ball.pause -= elapsed\n\n...\n</pre>\n\n\n    <p>\n        The actual checking of the ball position will be performed in the main scene file.\n    </p>\n\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nmethod update*(scene: MainScene, elapsed: float) =\n  ...\n\n  # check if the ball is out of the screen borders\n  if (scene.ball.pos.x &lt; 0) or (scene.ball.pos.x &gt;= game.size.w.float) or\n     (scene.ball.pos.y &lt; 0) or (scene.ball.pos.y &gt;= game.size.h.float):\n    scene.ball.reset()\n\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"score\"><h3>Score</h3>\n\n    <p>\n        At this moment we are ready to add a simple score counting into the game.\n    </p>\n\n<h4>data.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nvar\n  ...\n  score1*, score2*: int\n\n...\n</pre>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    entity,\n    graphic,\n    ...\n    textgraphic,\n    ...\n  ],\n  ...\n\nMainScene = ref object of Scene\n  ...\n  scoreText: TextGraphic\n\n\nproc init*(scene: MainScene) =\n  ...\n\n  # score\n  scene.scoreText = newTextGraphic(bigFont)\n  scene.scoreText.setText \"0:0\"\n  let score = newEntity()\n  score.graphic = scene.scoreText\n  score.centrify()\n  score.pos = (game.size.w / 2, score.graphic.dim.h.float)\n  score.layer = 10 # text should be over other entities\n  scene.add score\n\n\nproc free*(scene: MainScene) =\n  scene.scoreText.free()\n\n...\n\nmethod show*(scene: MainScene) =\n  ...\n  score1 = 0\n  score2 = 0\n  scene.scoreText.setText \"0:0\"\n\nmethod update*(scene: MainScene, elapsed: float) =\n  ...\n  # check if the ball is out of the screen borders\n  if (scene.ball.pos.x &lt; 0) or (scene.ball.pos.x &gt;= game.size.w.float) or\n     (scene.ball.pos.y &lt; 0) or (scene.ball.pos.y &gt;= game.size.h.float):\n    # increase score\n    if scene.ball.pos.x &lt; 0:\n      inc score2\n    else:\n      inc score1\n    # update score graphic\n    scene.scoreText.setText $score1 &amp; \":\" &amp; $score2\n    # reset\n    scene.ball.reset()\n\n</pre>\n\n    <p>\n        Now your game screen should look like this:\n    </p>\n\n    <p>\n        <img src=\"images/tut101_bounce/score.png\"\n             alt=\"Score counting screenshot\"\n             title=\"Score counting screenshot\"\n        />\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"pause\"><h3>Pause</h3>\n\n    <p>\n        Adding the option to pause the game is actually pretty easy.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\n  import\n    nimgame2 / [\n      ...,\n      types,\n    ],\n    ...\n\n\ntype\n  MainScene = ref object of Scene\n    ...\n    pause: Entity\n\n\nproc init*(scene: MainScene) =\n  ...\n\n  # pause\n  let pauseText = newTextGraphic(bigFont)\n  pauseText.setText \"PAUSE\"\n  scene.pause = newEntity()\n  scene.pause.graphic = pauseText\n  scene.pause.centrify()\n  scene.pause.pos = game.size / 2\n  scene.pause.visible = false\n  scene.add scene.pause\n\n...\n\nmethod event*(scene: MainScene, event: Event) =\n  scene.eventScene(event)\n  if event.kind == KeyDown:\n    # Pause/Unpause\n    if event.key.keysym.scancode == ScancodeP:\n      gamePaused = not gamePaused\n      scene.pause.visible = gamePaused\n\n...\n</pre>\n\n    <p>\n        Now pressing <kbd>P</kbd> will toggle pause mode.\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"sound\"><h3>Sound</h3>\n\n    <p>\n        Finally, we will add sound effects. WAV files will be placed into \"data/sfx\" directory:\n    </p>\n    <ul>\n        <li>bell.wav</li>\n        <li>hit1.wav</li>\n        <li>hit2.wav</li>\n        <li>hit3.wav</li>\n    </ul>\n\n<h4>data.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    ...\n    audio,\n    ...\n  ]\n\n...\n\nvar\n  ...\n  sfxData*: Assets[Sound]\n\n\nproc loadData*() =\n  ...\n\n  sfxData = newAssets[Sound](\n    \"data/sfx\",\n    proc(file: string): Sound = newSound(file))\n\n...\n\nproc freeData*() =\n  ...\n\n  for sound in sfxData.values:\n    sound.free()\n</pre>\n\n<h4>ball.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    ...\n    audio,\n    ...\n  ],\n  ...\n\n...\n\nmethod update*(ball: Ball, elapsed: float) =\n    ...\n    if ball.pos.y &lt; ball.radius or\n      ball.pos.y &gt;= (game.size.h.float - ball.radius):\n      ...\n      discard sfxData[\"hit3\"].play()\n\n...\n\nmethod onCollide*(ball: Ball, target: Entity) =\n  ...\n      if ball.pos.x &lt; game.size.w / 2:\n        ...\n        discard sfxData[\"hit1\"].play()\n      else:\n        ...\n        discard sfxData[\"hit2\"].play()\n  ...\n</pre>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    ...\n    audio,\n    ...\n    ],\n    ...\n\n...\n\nmethod show*(scene: MainScene) =\n  ...\n  discard sfxData[\"bell\"].play()\n\n...\n\nmethod update*(scene: MainScene, elapsed: float) =\n  ...\n    # reset\n    scene.ball.reset()\n    discard sfxData[\"bell\"].play()\n\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"whatsnext\"><h3>What's Next?</h3>\n\n    <p>\n        Though the game is ready, there's a multitude of ways to improve it (like changing the angle of the ball's trajectory, for example). As this isn't directly related to the engine functionality, it is left for you to explore on your own.\n    </p>\n\n</pre>\n</div>\n\n<div class=\"section\" id=\"links\"><h3>Links</h3>\n    <ul>\n        <li>\n            <a href=\"https://github.com/Vladar4/ng2bounce\">Source on GitHub</a>\n        </li>\n</div>\n\n    </article>\n\n    <aside style=\"display: flex; border: 0;\"></aside>\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n<script>\n    createSectionsList();\n</script>\n\n<script src=\"https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/tut102_platformer.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n\n    <aside>\n    </aside>\n\n    <article>\n        <h2>PLATFORMER GAME</h2>\n\n<div class=\"section\" id=\"introduction\"><h3>Introduction</h3>\n\n    <p>\n        Tihs tutorial is designed to give a basic example of a simple platformer-type game structure. The following concepts will be explained here:\n\n        <ul>\n            <li>buttons</li>\n            <li>tilemaps</li>\n            <li>tilemap colliders</li>\n            <li>group colliders</li>\n            <li>platformer physics</li>\n            <li>physics and logic procedures</li>\n            <li>scene camera</li>\n        </ul>\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"assets\"><h3>Assets</h3>\n\n    <p>\n        Apart from our usual need of fonts, graphic and sounds, we will need map data (in CSV) and GUI graphics. So here is our data directory structure:\n    </p>\n\n<pre>\n    ./data/\n      |\n      |-- csv/\n      |-- fnt/\n      |-- gfx/\n      |-- gui/\n      |-- sfx/\n</pre>\n\n    <p>\n        For the text rendering we use <a href=\"http://fixedsysexcelsior.com/\" target=\"_blank\">Fixedsys Excelsior</a>.\n    </p>\n\n    <p>\n        Game graphics consist of the tile sheet, player and enemy sprites.\n    </p>\n    <p class=\"centered\">\n        <span><img src=\"images/tut102_platformer/tiles.png\"\n             alt=\"Tile sheet graphic asset\"\n             title=\"Tiles\"\n        /></span><span>\n        <img src=\"images/tut102_platformer/player.png\"\n             alt=\"Player sprite graphic asset\"\n             title=\"Player\"\n        /></span><span>\n        <img src=\"images/tut102_platformer/enemy.png\"\n             alt=\"Enemy sprite graphic asset\"\n             title=\"Enemy\"\n             /></span>\n    </p>\n\n    <p>\n        To create menu buttons, we will need just one asset:\n    </p>\n    <p class=\"centered\">\n        <span><img src=\"images/tut102_platformer/button.png\"\n             alt=\"Button skin graphic asset\"\n             title=\"Button\"\n        /></span>\n    </p>\n\n    <p>\n        Sounds are located in the sfx directory and were created with the help of <a href=\"http://www.bfxr.net/\" target=\"_blank\">bfxr.net</a> online tool.\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"starting\"><h3>Starting to Code</h3>\n\n    <p>\n        The first lines of code are actually pretty similar to the <a href=\"tut101_bounce.html\">Tutorial 101</a> so we will not dive too deep here this time.\n    </p>\n\n<h4>data.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    assets,\n    audio,\n    font,\n    mosaic,\n    scene,\n    texturegraphic,\n    truetypefont,\n    types,\n  ]\n\n\nconst\n  GameWidth* = 640\n  GameHeight* = 360\n  GameTitle* = \"Nimgame 2 Platformer\"\n\n\nvar\n  titleScene*, mainScene*: Scene\n  defaultFont*, bigFont*: TrueTypeFont\n  gfxData*: Assets[TextureGraphic]\n  sfxData*: Assets[Sound]\n  buttonMosaic*: Mosaic\n  buttonSkin*: TextureGraphic\n  score*: int\n\n\nproc loadData*() =\n  defaultFont = newTrueTypeFont()\n  if not defaultFont.load(\"data/fnt/FSEX300.ttf\", 16):\n    echo \"ERROR: Can't load font\"\n  bigFont = newTrueTypeFont()\n  if not bigFont.load(\"data/fnt/FSEX300.ttf\", 32):\n    echo \"ERROR: Can't load font\"\n\n  gfxData = newAssets[TextureGraphic](\n    \"data/gfx\",\n    proc(file: string): TextureGraphic = newTextureGraphic(file))\n\n  sfxData = newAssets[Sound](\n    \"data/sfx\",\n    proc(file: string): Sound = newSound(file))\n\n  buttonMosaic = newMosaic(\"data/gui/button.png\", (8, 8))\n  buttonSkin = newTextureGraphic()\n  discard buttonSkin.assignTexture buttonMosaic.render(\n    patternStretchBorder(8, 2))\n\n\nproc freeData*() =\n  defaultFont.free()\n  bigFont.free()\n  for graphic in gfxData.values:\n    graphic.free()\n  for sound in sfxData.values:\n    sound.free()\n  buttonSkin.free()\n  buttonMosaic.free()\n\n</pre></div>\n\n\n<h4>title.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    assets,\n    entity,\n    font,\n    gui/button,\n    gui/widget,\n    mosaic,\n    nimgame,\n    scene,\n    settings,\n    textgraphic,\n    texturegraphic,\n    types,\n  ],\n  data\n\n\ntype\n  TitleScene = ref object of Scene\n\n\nproc init*(scene: TitleScene) =\n  init Scene(scene)\n\n  # Title text\n  let titleText = newTextGraphic bigFont\n  titleText.setText GameTitle\n  let title = newEntity()\n  title.graphic = titleText\n  title.centrify()\n  title.pos = (GameWidth / 2, GameHeight / 3)\n  scene.add title\n\n\nproc free*(scene: TitleScene) =\n  discard\n\n\nproc newTitleScene*(): TitleScene =\n  new result, free\n  init result\n\n\nmethod event*(scene: TitleScene, event: Event) =\n  scene.eventScene event\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_Space, K_Return:\n      game.scene = mainScene # quick start\n    else:\n      discard\n\n</pre>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    assets,\n    entity,\n    font,\n    graphic,\n    gui/button,\n    gui/widget,\n    nimgame,\n    scene,\n    textgraphic,\n    types,\n  ],\n  data\n\n\ntype\n  MainScene = ref object of Scene\n\n\nproc init*(scene: MainScene) =\n  init Scene scene\n\n\nproc free*(scene: MainScene) =\n  discard\n\n\nproc newMainScene*(): MainScene =\n  new result, free\n  init result\n\n\nmethod event*(scene: MainScene, event: Event) =\n  scene.eventScene event\n  if event.kind == KeyDown:\n    case event.key.keysym.sym:\n    of K_F10:\n      colliderOutline = not colliderOutline\n    of K_F11:\n      showInfo = not showInfo\n    else: discard\n\n</pre>\n\n\n\n<h4>platformer.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    nimgame,\n    settings,\n    types,\n  ],\n  data,\n  title,\n  main\n\n\ngame = newGame()\nif game.init(GameWidth, GameHeight, title = GameTitle, integerScale = true):\n\n  # Init\n  game.setResizable(true) # Window could be resized\n  game.minSize = (GameWidth, GameHeight) # Minimal window size\n  game.windowSize = (GameWidth * 2, GameHeight * 2) # Doulbe scaling (1280x720)\n  game.centrify() # Place window at the center of the screen\n  background = 0x151B8D<span class=\"nocode\">&#39;</span>u32\n\n  loadData() # Call it before any scene initialization\n\n  # Create scenes\n  titleScene = newTitleScene()\n  mainScene = newMainScene()\n\n  # Run\n  game.scene = titleScene # Initial scene\n  run game # Let's go!\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"menu\"><h3>Menu</h3>\n\n    <p>\n        Let's add \"Play\" and \"Exit\" buttons to our title screen. These buttons will work through the action procedures feature of the <b>GuiWidget</b> type.\n    </p>\n\n<h4>title.nim</h4>\n<pre class=\"prettyprint\">\n...\n\ntype\n  TitleScene = ref object of Scene\n\n\n# Play action procedure\nproc play(widget: GuiWidget) =\n  game.scene = mainScene\n\n\n# Exit action procedure\nproc exit(widget: GuiWidget) =\n  gameRunning = false\n\n...\n</pre>\n\n    <p>\n        Now, we just need to initialize both buttons in the <b>init</b> procedure, binding the actions.\n    </p>\n\n<h4>title.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nproc init*(scene: TitleScene) =\n  init Scene(scene)\n\n  # Create menu buttons\n  var\n    btnPlay, btnExit: GuiButton\n    btnPlayLabel, btnExitLabel: TextGraphic\n\n  # Play button\n  btnPlayLabel = newTextGraphic defaultFont\n  btnPlayLabel.setText \"PLAY\"\n  btnPlay = newGuiButton(buttonSkin, btnPlayLabel)\n  btnPlay.centrify()\n  btnPlay.pos = (GameWidth / 2, GameHeight / 2)\n  btnPlay.action = play # assign the action procedure\n  scene.add btnPlay\n\n  # Exit button\n  btnExitLabel = newTextGraphic defaultFont\n  btnExitLabel.setText \"EXIT\"\n  btnExit = newGuiButton(buttonSkin, btnExitLabel)\n  btnExit.centrify()\n  btnExit.pos = (GameWidth / 2, GameHeight / 2 + 64)\n  btnExit.action = exit # assign the action procedure\n  scene.add btnExit\n\n  ...\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"level\"><h3>Level</h3>\n\n    <p>\n        Here we will create a wireframe for our level module.\n    </p>\n\n<h4>level.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  parseutils,\n  nimgame2 / [\n    assets,\n    entity,\n    texturegraphic,\n    tilemap,\n    utils,\n  ],\n  data\n\n\nconst\n  TileDim* = (32, 32)\n\n\ntype\n  Level* = ref object of TileMap\n\n\nproc init*(level: Level, tiles: TextureGraphic) =\n  init Tilemap level\n  level.tags.add(\"level\")\n  level.graphic = tiles\n  level.initSprite(TileDim)\n\n\nproc newLevel*(tiles: TextureGraphic): Level =\n  new result\n  result.init(tiles)\n\n\nproc load*(level: Level, csv: string) =\n  level.map = loadCSV[int](\n    csv,\n    proc(input: string): int = discard parseInt(input, result))\n\n  level.hidden.add @[8, 9, 10, 11]  # tiles on the third row are invisible markers\n  level.passable.add @[0, 2, 3, 4, 8, 9, 10, 11] # tiles without colliders\n  level.onlyReachableColliders = true # do not init unreachable colliders\n  level.initCollider()\n\n</pre>\n\n    <p>\n        As you see, we are passing CSV data into the two-dimensional map sequence. The third row of tiles should not be visible as it is used for spawn selectors and such. All tiles, that the player should not be able to walk on, are added to the <b>passable</b> sequence. To speed up phyiscs we enabled the <b>onlyReachableColliders</b> option prior to calling the <b>initCollider</b> procedure.\n    </p>\n    <p>\n        Now we could add the level into the main scene.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  ...\n  data,\n  level\n\n...\n\ntype\n  MainScene = ref object of Scene\n    level: Level\n\nproc init*(scene: MainScene) =\n  ...\n\n  # Level\n  scene.level = newLevel gfxData[\"tiles\"]\n  scene.level.load \"data/csv/map1.csv\"\n  scene.level.layer = LevelLayer\n  scene.add scene.level\n\n</pre>\n\n    <p>\n        You should see the top-left corner of the map on the main screen at the moment.\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"player\"><h3>Player</h3>\n\n    <p>\n        The next step is to create a player entity with a couple of animations and the ability to spawn itself at player spawn selector (tile index 8).\n    </p>\n\n<h4>player.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    entity,\n    texturegraphic,\n    tilemap,\n    types,\n  ],\n  data,\n  level\n\n\nconst\n  Framerate = 1/12\n  VisibilityDim: Dim = (w: 12, h: 10)\n  Spawn = 8 # player spawn selector tile index\n  PlayerRadius = 16\n  PlayerSize = PlayerRadius * 2\n\n\ntype\n  Player* = ref object of Entity\n    level*: Level\n    dying: bool\n\n\nproc updateVisibility*(player: Player) =\n  # update the visible portion of the map\n  let center = player.level.tileIndex(player.pos)\n  player.level.show = (\n    x: (center.x - VisibilityDim.w)..(center.x + VisibilityDim.x),\n    y: (center.y - VisibilityDim.h)..(center.y + VisibilityDim.h))\n\n\nproc resetPosition*(player: Player) =\n  # reset player position to a given tile\n  player.pos = player.level.tilePos player.level.firstTileIndex(Spawn)\n\n\nproc init*(player: Player, graphic: TextureGraphic, level: Level) =\n  player.initEntity()\n  player.tags.add \"player\"\n  player.level = level\n  player.graphic = graphic\n  player.initSprite((PlayerSize, PlayerSize))\n  discard player.addAnimation(\"right\", [0, 1, 2, 3], Framerate)\n  discard player.addAnimation(\"left\", [0, 1, 2, 3], Framerate, Flip.horizontal)\n  discard player.addAnimation(\"death\", [4, 5, 6, 7], Framerate)\n\n\nproc newPlayer*(graphic: TextureGraphic, level: Level): Player =\n  new result\n  result.init(graphic, level)\n\n\nmethod update*(player: Player, elapsed: float) =\n  player.updateEntity elapsed\n  player.updateVisibility()\n\n</pre>\n\n    <p>\n        Adding it to the scene is trivial.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  ...\n  level,\n  player\n\nconst\n  LevelLayer = 0\n  PlayerLayer = 10\n\n\ntype\n  MainScene = ref object of Scene\n    level: Level\n    player: Player\n\n\nproc init*(scene: MainScene) =\n  init Scene scene\n\n  # Camera\n  scene.camera = newEntity()\n  scene.camera.tags.add \"camera\"\n  scene.cameraBondOffset = game.size / 2  # set camera to the center\n\n  ...\n\n  # Player\n  scene.player = newPlayer(gfxData[\"player\"], scene.level)\n  scene.player.collisionEnvironment = @[Entity(scene.level)]\n  scene.player.layer = PlayerLayer\n  scene.player.resetPosition()\n  scene.add scene.player\n\n  scene.cameraBond = scene.player # bind camera to the player entity\n  scene.player.updateVisibility()\n\n...\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"player_movement\"><h3>Player Movement</h3>\n\n    <p>\n        To make the player entity move, we will use the <b>platformerPhysics</b> procedure from the engine's entity module. As you could see from the previous section, we added the level as the only item in the player's <b>collisionEnvironment</b> sequence. This sequence is used by the <b>platformerPhysics</b> procedure to check if the player entity could move in any given direction.\n    </p>\n\n<h4>player.nim</h4>\n<pre class=\"prettyprint\">\nconst\n  ...\n  ColliderRadius = PlayerRadius - 1\n  GravAcc = 1000\n  Drag = 400\n  JumpVel = 450\n  WalkVel = 750\n  MaxVel = 350\n\n...\n\nproc init*(player: Player, graphic: TextureGraphic, level: Level) =\n  ...\n\n\n  # collider\n  let c = newGroupCollider(player)\n  player.collider = c\n  # 1st collider\n  c.list.add newCircleCollider(\n    player,\n    (PlayerRadius, PlayerRadius),\n    ColliderRadius)\n  # 2nd collider\n  c.list.add newBoxCollider(\n    player,\n    (PlayerRadius, PlayerRadius + PlayerRadius div 2),\n    (PlayerSize - 2, ColliderRadius))\n\n  # physics\n  player.acc.y = GravAcc\n  player.drg.x = Drag\n  player.physics = platformerPhysics\n\n...\n\nproc jump*(player: Player) =\n  if player.vel.y == 0.0:\n    player.vel.y -= JumpVel\n\n\nproc right*(player: Player, elapsed: float) =\n  if player.dying: return\n  player.vel.x += WalkVel * elapsed\n  if player.vel.x &gt; MaxVel:\n    player.vel.x = MaxVel\n  if not player.sprite.playing and player.vel.y == 0.0:\n    player.play(\"right\", 1)\n\n\nproc left*(player: Player, elapsed: float) =\n  if player.dying: return\n  player.vel.x -= WalkVel * elapsed\n  if player.vel.x &lt; -MaxVel:\n    player.vel.x = -MaxVel\n  if not player.sprite.playing and player.vel.y == 0.0:\n    player.play(\"left\", 1)\n\n...\n</pre>\n\n    <p>\n        Next, we bind movement action to keyboard controls.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nmethod update*(scene: MainScene, elapsed: float) =\n  scene.updateScene elapsed\n  if ScancodeSpace.pressed:\n    scene.player.jump()\n  if ScancodeRight.down:\n    scene.player.right(elapsed)\n  if ScancodeLeft.down:\n    scene.player.left(elapsed)\n\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"dying_and_spikes\"><h3>Dying and Spikes</h3>\n\n    <p>\n        You might have noticed that the spikes tile in our tile sheet is added to the <b>passable</b> sequence. The reason for this is that the <b>platformerPhysics</b> procedure prevents any collisions with the tile map before the standard collision callback could happen. That is why we should initialize any tiles, that you want player to interact with, as separate entities with their own colliders. So, for each \"spikes\" tile index in the map data we create a collidable entity (without any graphics) in its place.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nconst\n  ...\n  Spikes = 4 # Spikes tile index\n\n...\n\nproc init*(scene: MainScene) =\n  ...\n\n  # Spikes\n  const\n    SpikesOrigin = TileDim / 2 + (0, TileDim[1] div 4)\n    SpikesDim = TileDim / (1, 2)\n  for tileCoord in scene.level.tileIndex(Spikes):\n    let e = newEntity()\n    e.tags.add \"spikes\"\n    e.pos = scene.level.tilePos(tileCoord)\n    e.collider = newBoxCollider(e, SpikesOrigin, SpikesDim)\n    e.collider.tags.add \"player\" # collide only with player entity\n    e.parent = scene.camera\n    scene.add e\n\n  ...\n</pre>\n\n    <p>\n        Now we could use the standard collision callbacks in the player entity.\n    </p>\n\n<h4>player.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nproc die*(player: Player) =\n  if not player.dying:\n    player.dying = true\n    player.play(\"death\", 3)\n    player.vel.y = -JumpVel\n\n\nmethod update*(player: Player, elapsed: float) =\n  ...\n\n  if player.dying:\n    if not player.sprite.playing:\n      # reset\n      player.play(\"right\", 0)\n      player.resetPosition()\n      player.updateVisibility()\n      player.dying = false\n    else:\n      return\n\n\nmethod onCollide*(player: Player, target: Entity) =\n  if \"spikes\" in target.tags:\n    player.die()\n\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"boxes_and_coins\"><h3>Boxes and Coins</h3>\n\n\n    <p>\n        As you could imagine, any other interactive tiles are created similarly. Compare the following code to the previous section.\n    </p>\n\n\n<h4>player.nim</h4>\n<pre class=\"prettyprint\">\n...\n\ntype\n  Player* = ref object of Entity\n    ...\n    requestCoins*: seq[CoordInt]\n\n...\n\nproc init*(player: Player, graphic, TextureGraphic, level: Level) =\n  ...\n\n  player.requestCoins = @[]\n\n\n...\n\nmethod onCollide*(player: Player, target: Entity) =\n  ...\n\n  if \"box\" in target.tags:\n    let index = player.level.tileIndex(target.pos)\n    player.level.tile(index) += 1 # red box -&gt; grey box\n    player.requestCoins.add index + (0, -1) # request coin spawn one tile higher\n    target.dead = true\n\n  if \"coin\" in target.tags:\n    inc score\n    target.dead = true\n\n</pre>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nconst\n  ...\n  Box = 6     # Box tile index\n  CoinA = 2   # Coin tile index (frame A)\n  CoinB = 3   # Coin tile index (frame B)\n\n...\n\nproc spawnCoin*(scene: MainScene, index: CoordInt) =\n  let e = newEntity()\n  e.tags.add \"coin\"\n  e.graphic = gfxData[\"tiles\"]\n  e.initSprite(TileDim)\n  discard e.addAnimation(\"rotate\", [2, 3], 1/8)\n  e.play(\"rotate\", -1) # continuous animation\n  e.pos = scene.level.tilePos index\n  e.collider = newCircleCollider(e, TileDim / 2 - 1, TileDim[0] / 2 - 1)\n  e.collider.tags.add \"player\"\n  e.parent = scene.camera\n  scene.add e\n\n\nproc init*(scene: MainScene) =\n  ...\n\n  # Boxes\n  const\n    BoxPos1 = (2, TileDim[1] + 2)\n    BoxPos2 = (TileDim[0] - 2, TileDim[1] + 2)\n  for tileCoord in scene.level.tileIndex(Box):\n    let e = newEntity()\n    e.tags.add \"box\"\n    e.pos = scene.level.tilePos(tileCoord)\n    e.collider = newLineCollider(e, BoxPos1, BoxPos2)\n    e.collider.tags.add \"player\" # collide only with player entity\n    e.parent = scene.camera\n    scene.add e\n\n  # Coins\n  for value in [CoinA, CoinB]:\n    for tileCoord in scene.level.tileIndex(value):\n      scene.level.tile(tileCoord) = 0\n      scene.spawnCoin(tileCoord)\n\n  ...\n\n...\n\nmethod update*(scene: MainScene, elapsed: float) =\n  ...\n\n  # Spawn coins\n  while scene.player.requestCoins.len &gt; 0:\n    scene.spawnCoin scene.player.requestCoins.pop()\n\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"enemy\"><h3>Enemy</h3>\n\n    <p>\n        Our enemies should be able to move left and right (though not falling off the ledges) and kill the player entity on collision. The walking logic is implemented in the custom <b>enemyLogic</b> procedure.\n    </p>\n\n    <p>\n    We do not want physics and logic to be updated while the enemy is off the screen, so we do not call the <b>updateEntity</b> procedure this time, checking the enemy's position and calling procedures manually instead.\n    </p>\n\n<h4>enemy.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    entity,\n    graphic,\n    texturegraphic,\n    tilemap,\n    types,\n  ],\n  data,\n  level\n\n\nconst\n  GravAcc = 1000\n  WalkVel = 50\n\n\ntype\n  Enemy* = ref object of Entity\n    level*: Level\n    prevVel: float\n\n\nproc right*(enemy: Enemy) =\n  enemy.vel.x = WalkVel\n\n\nproc left*(enemy: Enemy) =\n  enemy.vel.x -= WalkVel\n\n\nproc enemyLogic(enemy: Entity, elapsed: float) =\n  let enemy = Enemy enemy\n\n  # check for pits\n  if enemy.vel.x != 0.0:\n    let\n      pos = enemy.pos + enemy.graphic.dim * 0.5 *\n        (if enemy.vel.x &lt; 0: -1.0 else: 1.0)\n      aheadIdx = enemy.level.tileIndex(pos) + (0, 1)\n    if enemy.level.tile(aheadIdx) in enemy.level.passable:\n      enemy.vel.x = 0.0\n\n  # change direction\n  if enemy.vel.x == 0.0:\n    if enemy.prevVel &lt;= 0.0:\n      enemy.vel.x = WalkVel\n      enemy.prevVel = WalkVel\n    else:\n      enemy.vel.x = -WalkVel\n      enemy.prevVel = -WalkVel\n\n\nproc init*(enemy: Enemy, graphic: TextureGraphic, level: Level) =\n  enemy.initEntity()\n  enemy.tags.add \"enemy\"\n  enemy.level = level\n  enemy.graphic = graphic\n  enemy.centrify(ver = VAlign.top)\n  enemy.logic = enemyLogic\n\n  # collider\n  let c = newPolyCollider(enemy, points = [(-15.0, 15.0), (0, 0), (16, 15)])\n  c.tags.add \"level\"\n  enemy.collider = c\n\n  # physics\n  enemy.acc.y = GravAcc\n  enemy.fastPhysics = true\n  enemy.physics = platformerPhysics\n\n\nproc newEnemy*(graphic: TextureGraphic, level: Level): Enemy =\n  new result\n  result.init(graphic, level)\n\n\nmethod update*(enemy: Enemy, elapsed: float) =\n  # updateEntity override\n  let index = enemy.level.tileIndex(enemy.pos)\n  # physics and logic only if visible\n  if index.x in enemy.level.show.x and index.y in enemy.level.show.y:\n    enemy.logic(enemy, elapsed)\n    enemy.physics(enemy, elapsed)\n\n</pre>\n\n    <p>\n        Enemy spawning is pretty similar to spikes and coins creation.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  ...\n  enemy,\n  ...\n\nconst\n  ...\n  EnemySpawn = 9  # Enemy spawn tile index\n\n\nproc init*(scene: MainScene) =\n  ...\n\n  # Enemy\n  for tileCoord in scene.level.tileIndex(EnemySpawn):\n    let e = newEnemy(gfxData[\"enemy\"], scene.level)\n    e.collisionEnvironment = @[Entity(scene.level)]\n    e.pos = scene.level.tilePos(tileCoord) + TileDim[1] / 2\n    e.parent = scene.camera\n    scene.add e\n\n  ...\n</pre>\n\n\n<h4>player.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nmethod onCollide*(player: Player, target: Entity) =\n  if \"spikes\" in target.tags or \"enemy\" in target.tags:\n    player.die()\n\n  ...\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"victory\"><h3>Victory</h3>\n\n    <p>\n        The victory is achieved when the player entity has collided with \"finish\" tile, or, more specifically, with an invisible collidable entity that was spawned in this tile.\n    </p>\n\n    <p>\n        Note, that we are fetching the index with the <b>firstTileIndex</b> procedure. It means that if there is more than one appearance of this tile index on a map, only one will be processed. If you want to have multiple finish points, change it to the <b>tileIndex</b> iterator.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nconst\n  ...\n  UILayer = 20\n  ...\n  Finish = 11\n\ntype\n  MainScene = ref object of Scene\n    ...\n    victory: Entity\n\n...\n\nproc init*(scene: MainScene) =\n  ...\n\n  # Finish\n  let\n    finishIdx = scene.level.firstTileIndex(Finish)\n    f = newEntity()\n  f.tags.add \"finish\"\n  f.collider = newCircleCollider(f, TileDim / 2, TileDim[0] / 2 - 1)\n  f.pos = scene.level.tilePos(finishIdx)\n  f.parent = scene.camera\n  scene.add f\n\n  # Victory\n  let victoryText = newTextGraphic bigFont\n  victoryText.setText \"VICTORY!\"\n  scene.victory = newEntity()\n  scene.victory.graphic = victoryText\n  scene.victory.centrify(ver = VAlign.top)\n  scene.victory.visible = false\n  scene.victory.layer = UILayer\n  scene.victory.pos = (GameWidth / 2, 0.0)\n  scene.add scene.victory\n\n  ...\n\n...\n\nmethod update*(scene: MainScene, elapsed: float) =\n ...\n\n # Check for victory\n if scene.player.won:\n   scene.victory.visible = true\n\n</pre>\n\n    <p>\n        For simplicity, the victory is represented with a simple text entity. You could try to implement a separate victory scene on your own for practice.\n    </p>\n\n<h4>player.nim</h4>\n<pre class=\"prettyprint\">\n...\n\ntype\n  Player* = ref object of Entity\n    ...\n    won*: bool\n    ...\n\n...\n\nmethod onCollide*(player: Player, target: Entity) =\n  ...\n\n  if \"finish\" in target.tags:\n    player.won = true\n\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"score\"><h3>Score</h3>\n\n    <p>\n        Finally, we add the score indicator, which is a simple text graphic updated with the data from the <b>score</b> variable. Note that we do not select <b>scene.camera</b> as its parent, so this entity is located constantly at the same position on the game screen.\n    </p>\n\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\n...\n  type\n    MainScene = ref object of Scene\n      ...\n      score: TextGraphic\n      ...\n\n...\n\nproc init*(scene: MainScene) =\n  ...\n\n  # Score\n  let score = newEntity()\n  scene.score = newTextGraphic defaultFont\n  scene.score.setText \"SCORE: 0\"\n  score.graphic = scene.score\n  score.layer = UILayer\n  score.pos = (12, 8)\n  scene.add score\n\n  ...\n\n...\n\nmethod update*(scene: MainScene, elapsed: float) =\n  ...\n\n  # Update score\n  scene.score.setText \"SCORE: \" &amp; $score\n\n  ...\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"sounds\"><h3>Sounds</h3>\n\n    <p>\n        You could set the global sound volume in the initialization routine. It could also be changed in runtime, if you plan to add game settings controls later.\n    </p>\n\n<h4>platformer.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    audio,\n    ...\n\n...\n\nif game.init(GameWidth, GameHeight, title = GameTitle, integerScale = true):\n\n  # Init\n  ...\n  setSoundVolume Volume.high div 2 # set sound volume to a 50%\n\n  ...\n</pre>\n\n\n    <p>\n        As we loaded our sounds into the <b>sfxData</b> assets collection, playing them at the right moment is trivial.\n    </p>\n\n\n<h4>player.nim</h4>\n<pre class=\"prettyprint\">\nimport\n  nimgame2 / [\n    assets,\n    audio,\n    ...\n\n...\n\nproc jump*(player: Player) =\n  ...\n  if player.vel.y == 0.0:\n    ...\n    discard sfxData[\"jump\"].play()\n\n...\n\nproc die*(player: Player) =\n  ...\n  discard sfxData[\"death\"].play()\n\n...\n\nmethod onCollide*(player: Player, target: Entity) =\n  ...\n  if \"box\" in target.tags:\n    ...\n    discard sfxData[\"box\"].play()\n\n  if \"coin\" in target.tags:\n    ...\n    discard sfxData[\"pickup\"].play()\n\n  if \"finish\" in target.tags:\n    if not player.won:\n      discard sfxData[\"victory\"].play()\n    player.won = true\n\n</pre>\n\n</div>\n\n\n<div class=\"section\" id=\"reset\"><h3>Reset</h3>\n\n    <p>\n        Finally, we will add the option to return to the title screen, resetting the level.\n    </p>\n\n<h4>main.nim</h4>\n<pre class=\"prettyprint\">\n...\n\nproc init*(scene: MainScene) =\n  ...\n  if scene.level.map.len == 0: scene.level.load \"data/csv/map1.csv\"\n  # changed from: scene.level.load \"data/csv/map1.csv\"\n  ...\n\nproc newMainScene*(): MainScene =\n  new result, free\n  # removed: init result\n\nmethod show*(scene: MainScene) =\n  hideCursor()\n  init scene\n\n...\n</pre>\n\n    <p>\n        As you can see, we moved the <b>init</b> call from the constructor to the <b>show</b> method, so the scene will be rebuilt each time it is switched to. Nim's GC will take care of previously allocated resources.\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"whatsnext\"><h3>What's Next?</h3>\n\n    <p>\n        To practice your skills and improve the game, you could try adding the game settings screen, victory animation, leaderboard, different types of hazards and enemies, multiple levels, etc.\n    </p>\n\n</div>\n\n\n<div class=\"section\" id=\"links\"><h3>Links</h3>\n    <ul>\n        <li>\n            <a href=\"https://github.com/Vladar4/ng2platformer\">Source on GitHub</a>\n        </li>\n    </ul>\n</div>\n\n\n<!--\n\n<div class=\"section\" id=\"\"><h3></h3>\n\n<h4></h4>\n<pre class=\"prettyprint\">\n\n</pre>\n\n</div>\n\n-->\n\n    </article>\n\n    <aside style=\"display: flex; border: 0;\"></aside>\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n<script>\n    createSectionsList();\n</script>\n\n<script src=\"https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js\"></script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "docs/tutorials.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\"/>\n\n    <title>Nimgame 2</title>\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\"/>\n</head>\n<body>\n\n<noscript>This site needs JavaScript to work properly.</noscript>\n\n<header>\n</header>\n\n<main>\n\n    <aside>\n    </aside>\n\n    <article>\n        <h2>TUTORIALS</h2>\n\n        <h3>Entry Level</h3>\n        <ul class=\"tutlist\">\n            <li>\n                <a href=\"tut101_bounce.html\">Bounce game</a>\n                <span class=\"rank\" level=\"1\"></span>\n                <p><a href=\"tut101_bounce.html\">\n                    <img src=\"images/tut101_bounce/thumb.png\"\n                         alt=\"Bounce game screenshot\"\n                         title\"Bounce game screenshot\"\n                    />\n                </a></p>\n            </li>\n            <li>\n                <a href=\"tut102_platformer.html\">Platformer game</a>\n                <span class=\"rank\" level=\"2\"></span>\n                <p><a href=\"tut102_platformer.html\">\n                    <img src=\"images/tut102_platformer/thumb.png\"\n                         alt=\"Platformer game screenshot\"\n                         title\"Platformer game screenshot\"\n                    />\n                </a></p>\n            </li>\n        </ul>\n    </article>\n\n</main>\n\n<footer>\n</footer>\n\n<script src=\"structure.js\"></script>\n\n<script>\n    createRanks();\n</script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "nimgame2/assets.nim",
    "content": "# nimgame2/assets.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  os, math, tables\n\n\nexport\n  tables\n\n\ntype\n  Assets*[T] = OrderedTableRef[string, T]\n\n\nproc load[T](assets: Assets[T],\n             files: openarray[string],\n             init: proc(file: string):T) =\n  assets[] = initOrderedTable[string, T](nextPowerOfTwo(files.len))\n  for i in files:\n    let\n      name = i.splitFile.name\n      data = init(i)\n    #assets.add(name, data) # pre-nim1.4\n    assets[name] = data\n\n\nproc load[T](assets: Assets[T],\n             dir: string,\n             init: proc(file: string): T) =\n  var files: seq[string] = @[]\n  for i in walkDir(dir):\n    if i.kind == pcFile:\n      files.add(i.path)\n  assets.load(files, init)\n\n\niterator loadIter*[T](assets: Assets[T],\n                      files: openarray[string],\n                      init: proc(file: string):T): int =\n  ##  Iterative loader.\n  ##\n  ##  ``Yields`` the count of files loaded so far.\n  var count = 0\n  assets[] = initOrderedTable[string, T](nextPowerOfTwo(files.len))\n  for i in files:\n    let\n      name = i.splitFile.name\n      data = init(i)\n    #assets.add(name, data) # pre-nim1.4\n    assets[name] = data\n    inc count\n    yield count\n\n\niterator loadIter*[T](assets: Assets[T],\n                      dir: string,\n                      init: proc(file: string): T): int =\n  ##  Iterative loader.\n  ##\n  ##  ``Yields`` the count of files loaded so far.\n  var files: seq[string] = @[]\n  for i in walkDir(dir):\n    if i.kind == pcFile:\n      files.add(i.path)\n  for count in assets.loadIter(files, init):\n    yield count\n\n\nproc newAssets*[T](files: openarray[string], init: proc(file: string): T): Assets[T] =\n  ##  Create a new assets collection.\n  ##\n  ##  ``files`` an array of target files.\n  ##\n  ##  ``init`` ``T``'s init/load procedure.\n  ##\n  new result\n  result.load(files, init)\n\n\nproc newAssets*[T](dir: string, init: proc(file: string): T): Assets[T] =\n  ##  Create a new assets collection.\n  ##\n  ##  ``dir`` target directory.\n  ##\n  ##  ``init`` ``T``'s init/load procedure.\n  ##\n  new result\n  result.load(dir, init)\n\n"
  },
  {
    "path": "nimgame2/audio.nim",
    "content": "# nimgame2/audio.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_mixer as mix,\n  types, settings, utils\n\n\ntype\n  Channel* = int\n  Distance* = range[0'u8..255'u8]\n  Panning* = range[0'u8..255'u8]\n  Volume* = range[0..mix.MaxVolume]\n\n  Sound* = ref object of RootObj\n    # Private\n    fChunk: mix.Chunk\n    fChannel: Channel\n\n  Music* = ref object of RootObj\n    # Private\n    fMusic: mix.Music\n\n\n#=======#\n# Sound #\n#=======#\n\nproc free*(sound: Sound) =\n  if not (sound.fChunk == nil):\n    # check if playing\n    if sound.fChannel > -1:\n      if sound.fChannel.playing() > 0:\n        # halt the channel\n        discard sound.fChannel.haltChannel()\n    # free\n    sound.fChunk.freeChunk()\n    sound.fChunk = nil\n  sound.fChannel = -1\n\n\nproc load*(sound: Sound, file: string): bool =\n  result = true\n  sound.free()\n  # load sound\n  sound.fChunk = loadWAV(file)\n  if sound.fChunk == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load sound file %s: %s\",\n                    file, mix.getError())\n    return false\n  sound.fChannel = -1\n\n\nproc load*(sound: Sound, src: ptr RWops, freeSrc: bool = true): bool =\n  result = true\n  sound.free()\n  # load sound\n  sound.fChunk = loadWAV_RW(src, freeSrc)\n  if sound.fChunk == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load sound file RW: %s\",\n                    mix.getError())\n    return false\n  sound.fChannel = -1\n\n\nproc newSound*(file: string): Sound =\n  new result, free\n  discard result.load(file)\n\n\nproc newSound*(src: ptr RWops, freeSrc: bool = true): Sound =\n  new result, free\n  discard result.load(src, freeSrc)\n\n\nproc available*(sound: Sound): bool =\n  ##  ``Return`` `true` if the ``sound`` is ready to use, or `false` otherwise.\n  ##\n  if sound.fChunk == nil:\n    return false\n  return not (sound.fChannel < 0)\n\n\nproc playing*(sound: Sound): bool =\n  ##  ``Return`` `true` if the ``sound`` is playing, or `false` otherwise.\n  ##\n  if not sound.available:\n    return false\n  return sound.fChannel.playing() > 0\n\n\nproc stop*(sound: Sound) =\n  ##  Stop the ``sound``.\n  ##\n  if sound.playing:\n    discard sound.fChannel.haltChannel()\n\n\nproc play*(sound: Sound, loops: int = 0): Channel =\n  ##  Play the ``sound`` ``loops`` + `1` times.\n  ##\n  ##  ``Return`` the channel the ``sound`` is played on.\n  ##\n  if sound.playing:\n    sound.stop()\n  sound.fChannel = playChannel(-1, sound.fChunk, loops)\n  if sound.fChannel < 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't play sound chunk: %s\",\n                    mix.getError())\n  return sound.fChannel\n\n\nproc channel*(sound: Sound): Channel =\n  ##  ``Return`` the channel, the ``sound`` is played on.\n  ##\n  if sound.playing:\n    return sound.fChannel\n  else:\n    return -1\n\n\nproc paused*(sound: Sound): bool =\n  ##  ``Return`` `true` if the ``sound`` is paused, or `false` otherwise.\n  ##\n  if not sound.available:\n    return false\n  return sound.fChannel.paused() > 0\n\n\nproc pause*(sound: Sound) =\n  ##  Pause the ``sound``.\n  ##\n  if not sound.available:\n    return\n  if not sound.paused:\n    sound.fChannel.pause()\n\n\nproc resume*(sound: Sound) =\n  ##  Resume the ``sound`` if it is paused.\n  ##\n  if not sound.available:\n    return\n  if sound.paused:\n    sound.fChannel.resume()\n\n\nproc volume*(sound: Sound): Volume {.inline.} =\n  ##  ``Return`` the volume of the ``sound``.\n  ##\n  return sound.fChunk.volumeChunk(-1)\n\n\nproc normalizeVolume*(val: int): Volume =\n  if val < 0: return 0\n  if val > Volume.high: return Volume.high\n  return val\n\n\nproc `volume=`*(sound: Sound, val: Volume) {.inline.} =\n  ##  Set ``sound`` volume.\n  ##\n  discard sound.fChunk.volumeChunk(val)\n\n\ntemplate volumeInc*(sound: Sound, val: int) =\n  ##  Increase ``sound`` volume by ``val``.\n  ##\n  sound.volume = normalizeVolume(sound.volume + val)\n\n\ntemplate volumeDec*(sound: Sound, val: int) =\n  ##  Decrease ``sound`` volume by ``val``.\n  ##\n  sound.volume = normalizeVolume(sound.volume - val)\n\n\n#===============#\n# Sound Channel #\n#===============#\n\ntemplate playing*(channel: Channel): bool = ##  \\\n  ##  ``Return`` `true` if ``channel`` is playing right now, `false` otherwise.\n  ##\n  (mix.playing(channel.cint) > 0)\n\n\nproc setDistance*(channel: Channel,\n                  distance: Distance) {.inline.} =\n  ##  Set the distance on a ``channel``.\n  ##\n  ##  ``distance``:\n  ##    `0` - near (loud)\n  ##    `255` - far (quiet)\n  ##\n  if mix.setDistance(channel, distance) == 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set the distance on the channel %s: %s\",\n                    channel, mix.getError())\n\n\nproc setPanning*(channel: Channel,\n                 left: Panning = Panning.high,\n                 right: Panning = Panning.high) {.inline.} =\n  ##  Set the panning on a ``channel``.\n  ##\n  ##  Setting both ``left`` and ``right`` to `255` (``Panning.high``)\n  ##  will unregister the effect from ``channel``.\n  ##\n  if mix.setPanning(channel, left, right) == 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set the panning on the channel %s: %s\",\n                    channel, mix.getError())\n\n\nproc setPosition*(channel: Channel,\n                  angle: Angle,\n                  distance: Distance) {.inline.} =\n  ##  Set the position on a ``channel``.\n  ##\n  ##  ``angle``:\n  ##    `0` - front\n  ##    `90` - right\n  ##    `180` - behind\n  ##    `270` - left\n  ##\n  ##  ``distance``:\n  ##    `0` - near (loud)\n  ##    `255` - far (quiet)\n  if mix.setPosition(channel, angle.int16, distance) == 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set the position on the channel %s: %s\",\n                    channel, mix.getError())\n\n\n#==============#\n# Sound Global #\n#==============#\n\nproc soundStop*() {.inline.} =\n  ##  Stop all sound channels.\n  ##\n  discard mix.haltChannel(-1)\n\n\nproc soundPlayingNum*(): int {.inline.} =\n  ##  ``Return`` the number of currently playing channels.\n  ##\n  return mix.playing(-1)\n\n\nproc soundPausedNum*(): int {.inline.} =\n  ##  ``Return`` the number of currently paused channels.\n  ##\n  return mix.paused(-1)\n\n\nproc soundPause*() {.inline.} =\n  ##  Pause all sound channels.\n  ##\n  mix.pause(-1)\n\n\nproc soundResume*() {.inline.} =\n  ##  Resume all sound channels.\n  ##\n  mix.resume(-1)\n\n\nproc getSoundVolume*(): Volume {.inline.} =\n  ##  ``Return`` average sound volume.\n  ##\n  return mix.volume(-1, -1)\n\n\nproc setSoundVolume*(val: Volume) {.inline.} =\n  ##  Set new volume for all sound channels.\n  ##\n  discard mix.volume(-1, val)\n\n\ntemplate soundVolumeInc*(val: int) =\n  ##  Increase global sound volume by ``val``.\n  ##\n  soundVolume = normalizeVolume(soundVolume + val)\n\n\ntemplate soundVolumeDec*(val: int) =\n  ##  Decrease global sound volume by ``val``.\n  ##\n  soundVolume = normalizeVolume(soundVolume - val)\n\n\n#=======#\n# Music #\n#=======#\n\nproc free*(music: Music) =\n  if not (music.fMusic == nil):\n    music.fMusic.freeMusic()\n    music.fMusic = nil\n\n\nproc load*(music: Music, file: string): bool =\n  result = true\n  music.free()\n  # load music\n  music.fMusic = mix.loadMUS(file)\n  if music.fMusic == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load music file %s: %s\",\n                    file, mix.getError())\n    return false\n\n\nproc load*(music: Music, src: ptr RWops, freeSrc: bool = true): bool =\n  result = true\n  music.free()\n  # load music\n  music.fMusic = mix.loadMUS_RW(src, freeSrc)\n  if music.fMusic == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load music file RW: %s\",\n                    mix.getError())\n    return false\n\n\nproc newMusic*(file: string): Music =\n  new result, free\n  discard result.load(file)\n\n\nproc newMusic*(src: ptr RWops, freeSrc: bool = true): Music =\n  new result, free\n  discard result.load(src, freeSrc)\n\n\nproc available*(music: Music): bool {.inline.} =\n  ##  ``Return`` `true` if the ``music`` is ready to use, or `false` otherwise.\n  ##\n  return not (music.fMusic == nil)\n\n\nproc play*(music: Music, loops: int = 0) =\n  ##  Play the ``music`` ``loops`` + `1` times.\n  ##\n  if music.fMusic.playMusic(loops) < 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't play music: %s\",\n                    mix.getError())\n\n\n#==============#\n# Music Global #\n#==============#\n\nproc musicPaused*(): bool {.inline.} =\n  ##  ``Return`` `true` if music is paused, or `false` otherwise.\n  ##\n  return mix.pausedMusic() != 0\n\n\nproc musicPause*() {.inline.} =\n  ##  Pause music.\n  ##\n  mix.pauseMusic()\n\n\nproc musicResume*() {.inline.} =\n  ##  Resume music.\n  ##\n  mix.resumeMusic()\n\n\nproc musicRewind*() {.inline.} =\n  ##  Rewind music.\n  ##\n  mix.rewindMusic()\n\n\nproc musicPlaying*(): bool {.inline.} =\n  ##  ``Return`` `true` if music is playing, or `false` otherwise.\n  ##\n  return mix.playingMusic() != 0\n\n\nproc musicStop*() {.inline.} =\n  ##  Stop music.\n  ##\n  discard mix.haltMusic()\n\n\nproc musicPosition*(val: float) {.inline.} =\n  ##  Set current position in the music stream.\n  ##\n  ##  Works only on MOD, OGG, and MP3 music:\n  ##\n  ##  MOD ``val`` is a pattern number.\n  ##\n  ##  OGG ``val`` is seconds from from the beginning.\n  ##\n  ##  MP3 ``val`` is seconds from the current position.\n  ##\n  discard mix.setMusicPosition(val)\n\n\ntemplate setMusicVolume*(val: Volume) =\n  ##  Set music volume, or return current setting, if ``val`` = `-1`.\n  ##\n  discard mix.volumeMusic(normalizeVolume(val))\n\n\ntemplate getMusicVolume*(): Volume =\n  mix.volumeMusic(-1)\n\n\ntemplate musicVolumeInc*(val: int) =\n  ##  Increase music volume by ``val``.\n  ##\n  setMusicVolume(normalizeVolume(getMusicVolume().int + val))\n\n\ntemplate musicVolumeDec*(val: int) =\n  ##  Decrease music volume by ``val``.\n  ##\n  setMusicVolume(normalizeVolume(getMusicVolume().int - val))\n\n\n#==========#\n# Playlist #\n#==========#\n\ntype\n  Playlist* = ref object of RootObj\n    list*: seq[Music]\n    fIndex: int\n    fFinished: bool\n\n\nvar\n  playlist*: Playlist = nil\n\n\nproc finished() {.cdecl.} =\n  ##  Playlist callback procedure.\n  ##\n  if playlist == nil:\n    return\n  playlist.fFinished = true\n\n\nproc init*(pl: Playlist) =\n  pl.list = @[]\n  pl.fIndex = -1\n  pl.fFinished = false\n\n\nproc newPlaylist*(): Playlist =\n  new result\n  result.init()\n\n\nproc index*(pl: Playlist): int {.inline.} =\n  ##  ``Return`` current track index.\n  ##\n  pl.fIndex\n\n\nproc play*(pl: Playlist, index: int = -1): int =\n  ##  Play a music track from the ``playlist``.\n  ##\n  ##  ``index`` track index, or `-1` for a random track.\n  ##\n  ##  ``Retrun`` current track index.\n  ##\n  pl.fIndex = if index < 0: rand(pl.list.high, exclude = [pl.fIndex])\n              else: index\n  pl.list[pl.fIndex].play()\n  mix.hookMusicFinished(finished)\n  return pl.fIndex\n\n\nproc stop*(pl: Playlist) =\n  musicStop()\n  pl.fIndex = -1\n\n\nproc update*(pl: Playlist) =\n  if pl.fFinished: # Play next track\n    pl.fFinished = false\n    discard pl.play()\n\n"
  },
  {
    "path": "nimgame2/bitmapfont.nim",
    "content": "# nimgame2/bitmapfont.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_image as img,\n  font, settings, types\n\n\ntype\n  BitmapFont* = ref object of Font\n    # Private\n    fSurface: Surface     ##  Source font surface\n    fDim, fCharDim: Dim   ##  Dimensions of the surface and a single character\n    fChars: seq[CoordInt] ##  Coordinates of all characters\n\n\n#============#\n# BitmapFont #\n#============#\n\nproc free*(font: BitmapFont) =\n  if not (font.fSurface == nil):\n    font.fSurface.freeSurface()\n  font.fDim = (0, 0)\n  font.fCharDim = (0, 0)\n  font.fChars = @[]\n\n\nproc init*(font: BitmapFont) =\n  font.fSurface = nil\n  font.fDim = (0, 0)\n  font.fCharDim = (0, 0)\n  font.fChars = @[]\n\n\ntemplate postLoad(font: BitmapFont, charDim: Dim,\n                  offset: Dim = (0, 0), border: Dim = (0, 0)) =\n  font.fDim = (font.fSurface.w.int, font.fSurface.h.int)\n  font.fCharDim = charDim\n  let\n    cols = (font.fDim.w - offset.w) div\n           (font.fCharDim.w + 2 * border.w)\n    rows = (font.fDim.h - offset.h) div\n           (font.fCharDim.h + 2 * border.h)\n  for r in 0..(rows - 1):\n    for c in 0..(cols - 1):\n      font.fChars.add((\n        offset.w + font.fCharDim.w * c + border.w * (1 + c * 2),\n        offset.h + font.fCharDim.h * r + border.h * (1 + r * 2)))\n\n\nproc load*(font: BitmapFont, file: string, charDim: Dim,\n           offset: Dim = (0, 0), border: Dim = (0, 0)): bool =\n  ##  Load ``font`` data from a ``file``.\n  ##\n  ##  ``charDim`` dimensions of a single font character.\n  ##\n  ##  ``offset``  offset from the edge of the texture.\n  ##\n  ##  ``border``  border around individual characters.\n  ##\n  ##  ``Return`` `true` on success, or `false` otherwise.\n  ##\n  result = true\n  font.free()\n  # load font\n  font.fSurface = img.load(file)\n  if font.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load font %s: %s\",\n                    file, img.getError())\n    return false\n  # post-load\n  postLoad(font, charDim, offset, border)\n\n\nproc load*(font: BitmapFont, src: ptr RWops, charDim: Dim,\n           offset: Dim = (0, 0), border: Dim = (0, 0),\n           freeSrc: bool = true): bool =\n  result = true\n  font.free()\n  # load font\n  font.fSurface = img.loadRW(src, freeSrc)\n  if font.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load font RW: %s\",\n                    img.getError())\n    return false\n  # post-load\n  postLoad(font, charDim, offset, border)\n\n\nproc newBitmapFont*(): BitmapFont =\n  new result, free\n  result.init()\n\n\nproc newBitmapFont*(file: string, charDim: Dim,\n                    offset: Dim = (0, 0), border: Dim = (0, 0)): BitmapFont =\n  ##  Create and load a new bitmap font from a ``file``.\n  ##\n  result = newBitmapFont()\n  discard result.load(file, charDim, offset, border)\n\n\nproc newBitmapFont*(src: ptr RWops, charDim: Dim,\n                    offset: Dim = (0, 0), border: Dim = (0, 0),\n                    freeSrc: bool = true): BitmapFont =\n  result = newBitmapFont()\n  discard result.load(src, charDim, offset, border, freeSrc)\n\n\nmethod charH*(font: BitmapFont): int {.inline.} =\n  ##  ``Return`` a font character's height.\n  ##\n  font.fCharDim.h\n\n\nmethod lineDim*(font: BitmapFont, line: string): Dim {.inline.} =\n  ##  ``Return`` dimensions of a ``line`` of text, written in ``font``.\n  ##\n  (font.fCharDim.w * line.len, font.fCharDim.h)\n\n\nproc renderBitmapFont*(font: BitmapFont,\n                       line: string,\n                       color: Color = DefaultFontColor): Surface =\n  if font.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't render nil font surface\")\n    return nil\n\n  # create surface\n  let\n    dim = font.lineDim(line)\n    lineSurface = createRGBSurfaceWithFormat(\n      0, dim.w, dim.h,\n      font.fSurface.format.BitsPerPixel.cint,\n      font.fSurface.format.format)\n  if lineSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't create font line surface: %s\",\n                    sdl.getError())\n    return nil\n\n  # color and alpha mod\n  if lineSurface.setSurfaceColorMod(color.r, color.g, color.b) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set surface color modifier: %s\",\n                    sdl.getError())\n  if lineSurface.setSurfaceAlphaMod(color.a) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set surface alpha modifier: %s\",\n                    sdl.getError())\n\n  # blit\n  var\n    srcRect = Rect(x: 0, y: 0, w: font.fCharDim.w, h: font.fCharDim.h)\n    dstRect = Rect(x: 0, y: 0, w: font.fCharDim.w, h: font.fCharDim.h)\n  for i in 0..line.high:\n    var idx = line[i].ord\n    if idx > font.fChars.high:\n      idx = 0\n    let ch = font.fChars[idx]\n    srcRect.x = ch.x\n    srcRect.y = ch.y\n    dstRect.x = i * font.fCharDim.w\n    discard font.fSurface.blitSurface(addr(srcRect), lineSurface, addr(dstRect))\n  return lineSurface\n\n\nmethod render*(font: BitmapFont,\n               line: string,\n               color: Color = DefaultFontColor): Surface =\n  renderBitmapFont(font, line, color)\n\n"
  },
  {
    "path": "nimgame2/draw.nim",
    "content": "# nimgame2/draw.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl, sdl2_nim/sdl_gfx_primitives, sdl2_nim/sdl_gfx_primitives_font,\n  settings, types\n\n\ntype\n  DrawMode* {.pure.} = enum\n    default,\n    aa,\n    filled\n\n\nproc pixel*(pos: Coord, color: Color): bool {.inline.} =\n  ##  Draw a single pixel.\n  ##\n  pixelRGBA(renderer,\n            pos.x.int16, pos.y.int16,\n            color.r, color.g, color.b, color.a) == 0\n\n\nproc hline*(pos: Coord, length: float, color: Color): bool {.inline.} =\n  ##  Draw a horizontal line from ``pos`` to the right.\n  ##\n  hlineRGBA(renderer,\n            pos.x.int16, pos.x.int16 + length.int16, pos.y.int16,\n            color.r, color.g, color.b, color.a) == 0\n\n\nproc vline*(pos: Coord, height: float, color: Color): bool {.inline.} =\n  ##  Draw a vertical line from ``pos`` down.\n  ##\n  vlineRGBA(renderer,\n            pos.x.int16, pos.y.int16, pos.y.int16 + height.int16,\n            color.r, color.g, color.b, color.a) == 0\n\n\nproc rect*(pos1, pos2: Coord, color: Color): bool {.inline.} =\n  ##  Draw a rectangle.\n  ##\n  rectangleRGBA(renderer,\n                pos1.x.int16, pos1.y.int16, pos2.x.int16, pos2.y.int16,\n                color.r, color.g, color.b, color.a) == 0\n\n\nproc roundedRect*(pos1, pos2: Coord, rad: float,\n                  color: Color): bool {.inline.} =\n  ##  Draw a rounded rectangle.\n  ##\n  roundedRectangleRGBA(renderer,\n                       pos1.x.int16, pos1.y.int16, pos2.x.int16, pos2.y.int16,\n                       rad.int16, color.r, color.g, color.b, color.a) == 0\n\n\nproc box*(pos1, pos2: Coord, color: Color): bool {.inline.} =\n  ##  Draw a filled rectangle (box).\n  ##\n  boxRGBA(renderer,\n          pos1.x.int16, pos1.y.int16, pos2.x.int16, pos2.y.int16,\n          color.r, color.g, color.b, color.a) == 0\n\n\nproc roundedBox*(pos1, pos2: Coord, rad: float,\n                 color: Color): bool {.inline.} =\n  ##  Draw a rounded filled rectangle (box).\n  ##\n  roundedBoxRGBA(renderer,\n                 pos1.x.int16, pos1.y.int16, pos2.x.int16, pos2.y.int16,\n                 rad.int16, color.r, color.g, color.b, color.a) == 0\n\n\nproc line*(pos1, pos2: Coord, color: Color): bool {.inline.} =\n  ##  Draw a line.\n  ##\n  lineRGBA(renderer,\n           pos1.x.int16, pos1.y.int16, pos2.x.int16, pos2.y.int16,\n           color.r, color.g, color.b, color.a) == 0\n\n\nproc aaLine*(pos1, pos2: Coord, color: Color): bool {.inline.} =\n  ##  Draw an anti-aliased line.\n  ##\n  aalineRGBA(renderer,\n             pos1.x.int16, pos1.y.int16, pos2.x.int16, pos2.y.int16,\n             color.r, color.g, color.b, color.a) == 0\n\n\nproc thickLine*(pos1, pos2: Coord, width: float,\n                color: Color): bool {.inline.} =\n  ##  Draw a ``width`` pixels wide line.\n  ##\n  thickLineRGBA(renderer,\n                pos1.x.int16, pos1.y.int16, pos2.x.int16, pos2.y.int16,\n                width.uint8, color.r, color.g, color.b, color.a) == 0\n\n\nproc circle*(pos: Coord, rad: float, color: Color,\n             mode: DrawMode = DrawMode.default): bool =\n  ## Draw a circle.\n  ##\n  case mode:\n  of DrawMode.default:\n    circleRGBA(renderer,\n               pos.x.int16, pos.y.int16, rad.int16,\n               color.r, color.g, color.b, color.a) == 0\n  of DrawMode.aa:\n    aacircleRGBA(renderer,\n                 pos.x.int16, pos.y.int16, rad.int16,\n                 color.r, color.g, color.b, color.a) == 0\n  of DrawMode.filled:\n    filledCircleRGBA(renderer,\n                     pos.x.int16, pos.y.int16, rad.int16,\n                     color.r, color.g, color.b, color.a) == 0\n\n\nproc arc*(pos: Coord, rad, start, finish: Angle,\n          color: Color): bool {.inline.} =\n  ##  Draw an arc.\n  ##\n  arcRGBA(renderer,\n          pos.x.int16, pos.y.int16, rad.int16, start.int16, finish.int16,\n          color.r, color.g, color.b, color.a) == 0\n\n\nproc ellipse*(pos, rad: Coord, color: Color,\n              mode: DrawMode = DrawMode.default): bool =\n  ##  Draw an ellipse.\n  ##\n  case mode:\n  of DrawMode.default:\n    ellipseRGBA(renderer,\n                pos.x.int16, pos.y.int16, rad.x.int16, rad.y.int16,\n                color.r, color.g, color.b, color.a) == 0\n  of DrawMode.aa:\n    aaEllipseRGBA(renderer,\n                  pos.x.int16, pos.y.int16, rad.x.int16, rad.y.int16,\n                  color.r, color.g, color.b, color.a) == 0\n  of DrawMode.filled:\n    filledEllipseRGBA(renderer,\n                      pos.x.int16, pos.y.int16, rad.x.int16, rad.y.int16,\n                      color.r, color.g, color.b, color.a) == 0\n\n\nproc pie*(pos: Coord, rad, start, finish: Angle, color: Color,\n          mode: DrawMode = DrawMode.default): bool =\n  ##  Draw a circular sector (pie).\n  ##\n  case mode:\n  of DrawMode.default, DrawMode.aa:\n    pieRGBA(renderer,\n            pos.x.int16, pos.y.int16, rad.int16,\n            start.int16, finish.int16,\n            color.r, color.g, color.b, color.a) == 0\n  of DrawMode.filled:\n    filledPieRGBA(renderer,\n                  pos.x.int16, pos.y.int16, rad.int16,\n                  start.int16, finish.int16,\n                  color.r, color.g, color.b, color.a) == 0\n\n\nproc trigon*(pos1, pos2, pos3: Coord, color: Color,\n             mode: DrawMode = DrawMode.default): bool =\n  ##  Draw a trigon.\n  ##\n  case mode:\n  of DrawMode.default:\n    trigonRGBA(renderer,\n               pos1.x.int16, pos1.y.int16,\n               pos2.x.int16, pos2.y.int16,\n               pos3.x.int16, pos3.y.int16,\n               color.r, color.g, color.b, color.a) == 0\n  of DrawMode.aa:\n    aaTrigonRGBA(renderer,\n                 pos1.x.int16, pos1.y.int16,\n                 pos2.x.int16, pos2.y.int16,\n                 pos3.x.int16, pos3.y.int16,\n                 color.r, color.g, color.b, color.a) == 0\n  of DrawMode.filled:\n    filledTrigonRGBA(renderer,\n                     pos1.x.int16, pos1.y.int16,\n                     pos2.x.int16, pos2.y.int16,\n                     pos3.x.int16, pos3.y.int16,\n                     color.r, color.g, color.b, color.a) == 0\n\n\ntemplate `+`[T](p: ptr T, off: int): ptr T =\n  cast[ptr T](cast[ByteAddress](p) +% off * sizeof(T))\n\n\ntemplate `[]=`[T](p: ptr T, off: int, val: T) =\n  (p + off)[] = val\n\n\nproc polygon*(pos: openarray[Coord], color: Color,\n              mode: DrawMode = DrawMode.default,\n              surface: sdl.Surface = nil, surfaceD: Coord = (0, 0)): bool =\n  ##  Draw a polygon.\n  ##\n  var vx, vy: ptr int16\n  vx = cast[ptr int16](alloc(pos.len * sizeof(int16)))\n  vy = cast[ptr int16](alloc(pos.len * sizeof(int16)))\n  for i in 0..pos.high:\n    vx[i] = pos[i].x.int16\n    vy[i] = pos[i].y.int16\n  if surface == nil:\n    result = case mode:\n    of DrawMode.default:\n      polygonRGBA(renderer,\n                  vx, vy, pos.len,\n                  color.r, color.g, color.b, color.a) == 0\n    of DrawMode.aa:\n      aaPolygonRGBA(renderer,\n                    vx, vy, pos.len,\n                    color.r, color.g, color.b, color.a) == 0\n    of DrawMode.filled:\n      filledPolygonRGBA(renderer,\n                        vx, vy, pos.len,\n                        color.r, color.g, color.b, color.a) == 0\n  else: # textured\n    result = texturedPolygon(renderer,\n                             vx, vy, pos.len,\n                             surface, surfaceD.x.int, surfaceD.y.int) == 0\n  # dealloc\n  dealloc(vx)\n  dealloc(vy)\n\n\nproc bezier*(pos: openarray[Coord], s: float, color: Color): bool =\n  ##  Draw a bezier curve.\n  ##\n  var vx, vy: ptr int16\n  vx = cast[ptr int16](alloc(pos.len * sizeof(int16)))\n  vy = cast[ptr int16](alloc(pos.len * sizeof(int16)))\n  for i in 0..pos.high:\n    vx[i] = pos[i].x.int16\n    vy[i] = pos[i].y.int16\n  result = bezierRGBA(renderer,\n                      vx, vy, pos.len, s.int,\n                      color.r, color.g, color.b, color.a) == 0\n  # dealloc\n  dealloc(vx)\n  dealloc(vy)\n\n\nproc setFont*(fontdata: pointer, dim: Dim) =\n  ##  Set sdl_gfx_primitives font.\n  ##\n  gfxPrimitivesSetFont(fontdata, dim.w.uint32, dim.h.uint32)\n\n\ntemplate setFont*() =\n  ##  Set default sdl_gfx_primitives font.\n  ##\n  gfxPrimitivesSetFont(addr(gfxPrimitivesFontData), 8, 8)\n\n\ntemplate setFontRotation*(rotation: uint32) =\n  ##  Set sdl_gfx_primitives font rotation.\n  ##\n  gfxPrimitivesSetFontRotation(rotation)\n\n\nproc character*(pos: Coord, c: char, color: Color): bool {.inline.} =\n  ##  Draw a single character.\n  ##\n  characterRGBA(renderer,\n                pos.x.int16, pos.y.int16, c,\n                color.r, color.g, color.b, color.a) == 0\n\n\nproc string*(pos: Coord, s: string, color: Color): bool {.inline.} =\n  ##  Draw a string of text.\n  ##\n  stringRGBA(renderer,\n             pos.x.int16, pos.y.int16, s,\n             color.r, color.g, color.b, color.a) == 0\n\n"
  },
  {
    "path": "nimgame2/emitter.nim",
    "content": "# nimgame2/emitter.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  entity, random, scene, types, utils\n\n\ntype\n  Particle* = ref object of Entity\n    ttl*: float ##  Time to live (in seconds)\n\n  EmissionAreaKind* = enum\n    eaPoint,\n    eaLine,\n    eaCircle,\n    eaBox\n\n  EmissionArea* = object\n    case kind*: EmissionAreaKind\n    of eaPoint:   discard\n    of eaLine:    length*: float  ## line length\n    of eaCircle:  radius*: float  ## circle radius\n    of eaBox:     dim*: Dim       ## box dimensions\n\n  Emitter* = ref object of Entity\n    # Public\n    randomVel*, randomAcc*: Coord     ##  Ranges of vel and acc deviation\n    randomRot*, randomRotVel*: Angle  ##  Ranges of rot and rotVel deviation\n    randomScale*: Scale               ##  Range of scale deviation\n    randomTTL*: float                 ##  Range of TTL deviation\n    scene*: Scene                     ##  Target scene\n    area*: EmissionArea  ##  Area of particle emission\n    particle*: Particle  ##  A stencil particle, its properties will be \\\\\n                         ##  assigned to any created particles.\n\n\n#==========#\n# Particle #\n#==========#\n\nproc initParticle*(particle: Particle) =\n  particle.initEntity()\n  particle.physics = defaultPhysics\n  particle.ttl = 1.0\n\n\nproc newParticle*(): Particle =\n  result = new Particle\n  result.initParticle()\n\n\ntemplate copy*(target, source: Particle) =\n  ##  Copy ``source`` properties to the ``target``.\n  ##\n  Entity(target).copy(Entity(source))\n  target.ttl = source.ttl\n\n\nproc updateParticle*(particle: Particle, elapsed: float) =\n  particle.updateEntity(elapsed)\n  particle.ttl -= elapsed\n  if particle.ttl < 0:\n    particle.dead = true\n\n\nmethod update*(particle: Particle, elapsed: float) =\n  updateParticle(particle, elapsed)\n\n\n#=========#\n# Emitter #\n#=========#\n\nproc initEmitter*(emitter: Emitter, scene: Scene, area = eaPoint) =\n  ##  Create a new ``Emitter`` for the ``scene``.\n  ##\n  emitter.initEntity()\n  emitter.scene = scene\n  emitter.area = EmissionArea(kind: area)\n  emitter.particle = nil\n\n\nproc newEmitter*(scene: Scene, area = eaPoint): Emitter =\n  ##  Create a new Emitter in the ``scene``.\n  ##\n  result = new Emitter\n  result.initEmitter(scene, area)\n\n\nproc emit*(emitter: Emitter, amount: int = 1,\n           procedure: proc(p: Particle) = nil) =\n  ##  Emit an ``amount`` of particles,\n  ##  apply the ``procedure`` for each emitted particle.\n  ##\n  if emitter.particle == nil:\n    return\n  for i in 1..amount:\n    let particle = newParticle()\n    particle.copy(emitter.particle)\n    particle.pos = emitter.pos\n    particle.rot = emitter.rot\n    # set random deviations\n    # position\n    case emitter.area.kind:\n    of eaPoint: discard\n    of eaLine:\n      let point: Coord = (rand(emitter.area.length), 0.0)\n      particle.pos = rotate(point * emitter.absScale,\n                            emitter.absPos * emitter.parallax, emitter.absRot)\n    of eaCircle:\n      let\n        angle = rand(360.0)\n        point: Coord = (rand(emitter.area.radius), 0.0)\n      particle.pos = rotate(point * emitter.absScale,\n                            emitter.absPos * emitter.parallax, angle)\n    of eaBox:\n      let\n        half = emitter.area.dim / 2\n        point: Coord = (rand(-half.w..half.w), rand(-half.h..half.h))\n      particle.pos = rotate(point * emitter.absScale,\n                            emitter.absPos * emitter.parallax, emitter.absRot)\n    # end of case emitter.area.kind\n    # velocity\n    particle.vel.x += rand(-emitter.randomVel.x..emitter.randomVel.x)\n    particle.vel.y += rand(-emitter.randomVel.y..emitter.randomVel.y)\n    # acceleration\n    particle.acc.x += rand(-emitter.randomAcc.x..emitter.randomAcc.x)\n    particle.acc.y += rand(-emitter.randomAcc.y..emitter.randomAcc.y)\n    # rotation\n    particle.rot += rand(-emitter.randomRot..emitter.randomRot)\n    particle.rotVel += rand(-emitter.randomRotVel..emitter.randomRotVel)\n    # scale\n    particle.scale += rand(-emitter.randomScale..emitter.randomScale)\n    # time to live\n    particle.ttl += rand(-emitter.randomTTL..emitter.randomTTL)\n    # perform the procedure\n    if not (procedure == nil):\n      procedure(particle)\n    # add to the scene\n    emitter.scene.add(particle)\n\n"
  },
  {
    "path": "nimgame2/entity.nim",
    "content": "# nimgame2/entity.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  math,\n  sdl2_nim/sdl,\n  draw, graphic, settings, types, utils\n\n\ntype\n  Animation* = object\n    # Public\n    frames*: seq[int] ##  List of animation's frame indexes\n    frameRate*: float ##  Frame rate (in seconds per frame)\n    flip*: Flip       ##  Flip flag\n\n  AnimationCallback* = proc(entity: Entity, index: int) ##  \\\n    ##  Called after animation is finished (see ``play()`` procedure).\n    ##\n    ##  ``index`` The index of the finished animation.\n\n  Sprite* = ref object\n    # Public\n    animationKeys*: seq[string] ##  List of animation names\n    animations*: seq[Animation] ##  List of animations\n    currentAnimationIndex*: int ##  Index of currently playing animation\n    currentFrame*: int          ##  Index of current frame in currentAnimation \\\n      ## (or in ``frames``, if no currentAnimation is set)\n    cycles*: int                ##  Animation cycles counter (`-1` for looping)\n    kill*: bool                 ##  Kill when animation is finished\n    callback*: AnimationCallback##  Call this when animation is finished\n    time*: float                ##  Animation timer\n    playing*: bool              ##  Animation playing flag\n    dim*: Dim                   ##  Sprite frame dimensions\n    frames*: seq[Rect]          ##  Frames' coordinates\n\n\n  Collider* = ref object of RootObj\n    # Public\n    parent*: Entity\n    tags*: seq[string]  ##  only check collisios with entities with given tags\n    pos*: Coord\n\n  BoxCollider* = ref object of Collider\n    # Public\n    dim*: Dim\n\n  CircleCollider* = ref object of Collider\n    # Public\n    radius*: float\n\n  LineCollider* = ref object of Collider\n    # Public\n    pos2*: Coord\n\n  PolyCollider* = ref object of Collider\n    # Private\n    farthest: float\n    # Public\n    points*: seq[Coord]\n\n  GroupCollider* = ref object of Collider\n    # Public\n    list*: seq[Collider]\n\n\n  Entity* = ref object of RootObj\n    # Private\n    fLayer: int                   ##  Rendering layer\n    fBlinkTimer: float            ##  Used internally for blinking\n    # Public\n    parent*: Entity               ##  Parent entity reference\n    tags*: seq[string]            ##  List of entity tags\n    dead*: bool                   ##  `true` if marked for removal\n    updLayer*: bool               ##  `true` if entity's layer was changed\n    graphic*: Graphic\n    sprite*: Sprite\n    logic*: LogicProc\n    physics*: PhysicsProc\n    fastPhysics*: bool            ##  rough and fast physics flag\n    collisionEnvironment*: seq[Entity]  ## List of collidable entites\n                                        ## used in some physics procedures\n    collider*: Collider\n    colliding*: seq[Entity]       ##  List of Entities currently colliding with\n    pos*, vel*, acc*, drg*: Coord ##  Position, velocity, acceleration, drag\n    rot*: Angle                   ##  Rotation angle in degrees\n    rotVel*, rotAcc*, rotDrg*: Angle  ##  Rotation velocity, acceleration, drag\n    parallax*, scale*: Scale      ##  Parallax and scale ratio\n    scaleVel*, scaleAcc*, scaleDrg*: Scale ## Scale's velocity, accel., and drag\n    center*: Coord                ##  Center for drawing and rotating\n    flip*: Flip                   ##  Texture flip status\n    visible*: bool                ##  Visibility status\n    blinking*: bool               ##  Blinking status\n    blinkOn*, blinkOff*: float    ##  Blinking rate (in seconds)\n\n  LogicProc* = proc(entity: Entity, elapsed: float)\n\n  PhysicsProc* = proc(entity: Entity, elapsed: float)\n\n\n#========#\n# Sprite #\n#========#\n\nproc initSprite*(entity: Entity,\n                 dim: Dim,\n                 offset: Dim = (0, 0),\n                 border: Dim = (0, 0)) =\n  ##  Creeate a sprite for the given ``entity`` with the attached Graphic.\n  ##\n  ##  ``dim`` dimensions of one frame.\n  ##\n  ##  ``offset``  offset from the edge of the texture.\n  ##\n  ##  ``border``  border around individual frames.\n  ##\n  entity.sprite = new Sprite\n  entity.sprite.animationKeys = @[]\n  entity.sprite.animations = @[]\n  entity.sprite.currentAnimationIndex = -1\n  entity.sprite.currentFrame = 0\n  entity.sprite.cycles = 0\n  entity.sprite.kill = false\n  entity.sprite.callback = nil\n  entity.sprite.time = 0\n  entity.sprite.playing = false\n  entity.sprite.dim = dim\n  entity.sprite.frames = @[]\n\n  let\n    cols = (entity.graphic.w - offset.w) div\n            (entity.sprite.dim.w + 2 * border.w)\n    rows = (entity.graphic.h - offset.h) div\n            (entity.sprite.dim.h + 2 * border.h)\n\n  for r in 0..(rows - 1):\n    for c in 0..(cols - 1):\n      entity.sprite.frames.add(Rect(\n        x: offset.w + entity.sprite.dim.w * c + border.w * (1 + c * 2),\n        y: offset.h + entity.sprite.dim.h * r + border.h * (1 + r * 2),\n        w: entity.sprite.dim.w,\n        h: entity.sprite.dim.h))\n\n\nproc copy(target, source: Sprite) =\n  ##  Copy ``source``'s properties and animations to the other sprite.\n  ##\n  ##  No new objects will be allocated.\n  ##\n  target.animationKeys = @[]\n  for key in source.animationKeys:\n    target.animationKeys.add(key)\n  target.animations = @[]\n  for anim in source.animations:\n    target.animations.add(anim)\n  target.currentAnimationIndex = source.currentAnimationIndex\n  target.currentFrame     = source.currentFrame\n  target.cycles           = source.cycles\n  target.kill             = source.kill\n  target.callback         = source.callback\n  target.time             = source.time\n  target.playing          = source.playing\n  target.dim              = source.dim\n  target.frames = @[]\n  for frame in source.frames:\n    target.frames.add(frame)\n\n\nproc animationIndex*(sprite: Sprite, name: string): int {.inline.} =\n  ##  ``Return`` the index of the animation named ``name``.\n  ##\n  if sprite == nil:\n    -1\n  else:\n    sprite.animationKeys.find(name)\n\n\ntemplate animationIndex*(entity: Entity, name: string): int =\n  ##  ``Return`` the index of the animation named ``name``.\n  ##\n  entity.sprite.animationIndex(name)\n\n\nproc animation*(sprite: Sprite, name: string): var Animation =\n  ##  ``Return`` the animation named ``name``.\n  ##\n  if sprite == nil:\n    return\n  let index = sprite.animationIndex(name)\n  if index < 0:\n    return\n  sprite.animations[index]\n\n\ntemplate animation*(entity: Entity, name: string): var Animation =\n  ##  ``Return`` the animation named ``name``.\n  ##\n  entity.sprite.animation(name)\n\n\nproc animation*(sprite: Sprite, index: int): var Animation =\n  ##  ``Return`` the animation under given ``index``.\n  ##\n  if sprite == nil:\n    return\n  if index < 0 or index >= sprite.animations.len:\n    return\n  sprite.animations[index]\n\n\ntemplate animation*(entity: Entity, index: int): var Animation =\n  ##  ``Return`` the animation under given ``index``.\n  ##\n  entity.sprite.animation(index)\n\n\ntemplate currentAnimationIndex*(entity: Entity): int =\n  if entity.sprite == nil:\n    -1\n  else:\n    entity.sprite.currentAnimationIndex\n\n\nproc currentAnimation*(sprite: Sprite): var Animation =\n  ##  ``Return`` the current animation.\n  ##\n  if sprite == nil:\n    return\n  sprite.animation(sprite.currentAnimationIndex)\n\n\ntemplate currentAnimation*(entity: Entity): var Animation =\n  ##  ``Return`` the current animation.\n  ##\n  entity.sprite.currentAnimation()\n\n\nproc currentAnimationName*(sprite: Sprite): string =\n  ##  ``Return`` the name of the current animation, or empty string if none.\n  ##\n  if sprite == nil:\n    return \"\"\n  if sprite.currentAnimationIndex < 0:\n    return \"\"\n  return sprite.animationKeys[sprite.currentAnimationIndex]\n\n\n\ntemplate currentAnimationName*(entity: Entity): string =\n  ##  ``Return`` the name of the current animation or empty string if none.\n  ##\n  entity.sprite.currentAnimationName()\n\n\nproc changeFramerate*(sprite: Sprite, frameRate: float = 0.1) =\n  ##  Change framerate for all created animations.\n  ##\n  if sprite == nil:\n    return\n  for i in 0..sprite.animations.high:\n    sprite.animations[i].frameRate = frameRate\n\n\ntemplate changeFramerate*(entity: Entity, frameRate: float = 0.1) =\n  ##  Change framerate for all created animations.\n  ##\n  entity.sprite.changeFramerate(frameRate)\n\n\nproc addAnimation*(sprite: Sprite,\n                   name: string,\n                   frames: openarray[int],\n                   frameRate: float = 0.1,\n                   flip: Flip = Flip.none): bool =\n  ##  Add a new animation to the ``sprite``.\n  ##\n  ##  ``name`` name of the animation.\n  ##\n  ##  ``frames``  array of animation frames' indexes.\n  ##\n  ##  ``frameRate`` animation speed in seconds per frame.\n  ##\n  ##  ``flip``  animation flip flag.\n  ##\n  result = true\n\n  if (sprite == nil) or (frames.len < 1):\n    return false\n\n  if sprite.animationIndex(name) >= 0:\n    return false\n\n  for frame in frames:\n    if frame < 0 or frame >= sprite.frames.len:\n      return false\n\n  sprite.animationKeys.add(name)\n  sprite.animations.add(Animation(\n    frames: @frames, frameRate: frameRate, flip: flip))\n\n\ntemplate addAnimation*(entity: Entity,\n                       name: string,\n                       frames: openarray[int],\n                       frameRate: float = 0.1,\n                       flip: Flip = Flip.none): bool =\n  ##  Add a new animation to the ``entity``.\n  ##\n  ##  ``name`` name of the animation.\n  ##\n  ##  ``frames``  array of animation frames' indexes.\n  ##\n  ##  ``frameRate`` animation speed in seconds per frame.\n  ##\n  ##  ``flip``  animation flip flag.\n  ##\n  entity.sprite.addAnimation(name, frames, frameRate, flip)\n\n\nproc play*(sprite: Sprite, anim: string, cycles = -1,\n           kill: bool = false, callback: AnimationCallback = nil) =\n  ##  Start playing the animation.\n  ##\n  ##  ``anim``  name of the animation.\n  ##\n  ##  ``cycles``  number of times to repeat the animation, or `-1` for looping.\n  ##\n  ##  ``kill``  kill when finished.\n  ##\n  ##  ``callback`` called when animation is finished.\n  ##\n  if sprite == nil:\n    return\n  if sprite.animationIndex(anim) < 0:\n    return\n  sprite.currentAnimationIndex = sprite.animationIndex(anim)\n  sprite.cycles = cycles\n  sprite.kill = kill\n  sprite.callback = callback\n  sprite.time = 0.0\n  sprite.currentFrame = 0\n  if cycles != 0:\n    sprite.playing = true\n\n\ntemplate play*(entity: Entity, anim: string, cycles = -1,\n               kill: bool = false, callback: AnimationCallback = nil) =\n  ##  Start playing the animation.\n  ##\n  ##  ``anim``  name of the animation.\n  ##\n  ##  ``cycles``  number of times to repeat the animation, or `-1` for looping.\n  ##\n  ##  ``kill``  kill when finished.\n  ##\n  ##  ``callback`` called when animation is finished.\n  ##\n  entity.sprite.play(anim, cycles, kill, callback)\n\n\nproc update(sprite: Sprite, entity: Entity, elapsed: float) =\n  if (sprite.currentAnimationIndex < 0) or (not sprite.playing):\n    return\n  let frameRate = sprite.currentAnimation.frameRate\n  sprite.time += elapsed\n  while sprite.time >= frameRate:\n    sprite.time -= frameRate\n    inc sprite.currentFrame  # next frame\n    if sprite.currentFrame >= sprite.currentAnimation.frames.len:\n      # Animation has ended\n      if sprite.cycles > 0:\n        # Reduce cycles counter\n        dec sprite.cycles\n        if sprite.cycles == 0:\n          # No more cycles left\n          sprite.playing = false\n          # Check if entity need to be killed\n          if sprite.kill:\n            entity.dead = true\n            entity.visible = false\n          # Check for the callback\n          if not (sprite.callback == nil):\n            sprite.callback(entity, entity.sprite.currentAnimationIndex)\n      # cycles <= 0 - animation either stopped or looped\n      # Set current frame to first one of the current animation\n      sprite.currentFrame = 0\n\n\n#=========#\n# Physics #\n#=========#\n\nproc defaultPhysics*(entity: Entity, elapsed: float) =\n  ##  Default physics procedure. Disabled by default.\n  ##\n  ##  Assign it as your entity's physics.\n  ##\n\n  # acceleration -> velocity\n  entity.vel.x += entity.acc.x * elapsed\n  entity.vel.y += entity.acc.y * elapsed\n\n  # drag -> velocity\n  let absx = entity.vel.x.abs\n  if absx > 0.0:\n    var dx = entity.drg.x * elapsed\n    if dx > absx:\n      entity.vel.x = 0.0\n    else:\n      entity.vel.x += (if entity.vel.x > 0.0: -dx else: dx)\n\n  let absy = entity.vel.y.abs\n  if absy > 0.0:\n    var dy = entity.drg.y * elapsed\n    if dy > absy:\n      entity.vel.y = 0.0\n    else:\n      entity.vel.y += (if entity.vel.y > 0.0: -dy else: dy)\n\n  # velocity -> position\n  entity.pos = entity.pos + entity.vel * elapsed\n\n  # rotation acceleration -> rotation velocity\n  entity.rotVel += entity.rotAcc * elapsed\n\n  # rotation drag -> rotation velocity\n  let absr = entity.rotVel.abs\n  if absr > 0.0:\n    var dr = entity.rotDrg * elapsed\n    if dr > absr:\n      entity.rotVel = 0.0\n    else:\n      entity.rotVel += (if entity.rotVel > 0.0: -dr else: dr)\n\n  # rotatiton velocity -> rotation\n  entity.rot = (entity.rot + entity.rotVel * elapsed) mod 360.0\n\n  # scale\n  entity.scale += entity.scaleVel * elapsed\n  entity.scaleVel += entity.scaleAcc * elapsed\n  let abss = entity.scaleVel.abs\n  if abss > 0.0:\n    var dr = entity.scaleDrg * elapsed\n    if dr > abss:\n      entity.scaleVel = 0.0\n    else:\n      entity.scaleVel += (if entity.scaleVel > 0.0: -dr else: dr)\n\n\nproc willCollide*(\n  entity: Entity, pos: Coord, rot: Angle, scale: Scale, list: seq[Entity]): bool\nproc platformerPhysics*(entity: Entity, elapsed: float) =\n  ##  Platformer physics procedure.\n  ##\n  ##  Assign it as your entity's physics.\n  ##\n\n  # acceleration -> velocity\n  entity.vel.x += entity.acc.x * elapsed\n  entity.vel.y += entity.acc.y * elapsed\n\n  # drag -> velocity\n  let absx = entity.vel.x.abs\n  if absx > 0.0:\n    var dx = entity.drg.x * elapsed\n    if dx > absx:\n      entity.vel.x = 0.0\n    else:\n      entity.vel.x += (if entity.vel.x > 0.0: -dx else: dx)\n\n  let absy = entity.vel.y.abs\n  if absy > 0.0:\n    var dy = entity.drg.y * elapsed\n    if dy > absy:\n      entity.vel.y = 0.0\n    else:\n      entity.vel.y += (if entity.vel.y > 0.0: -dy else: dy)\n\n  # velocity -> position\n  var\n    diffX = entity.vel.x * elapsed\n    diffY = entity.vel.y * elapsed\n\n  if entity.fastPhysics:\n\n    # x\n    if entity.willCollide(entity.pos + (diffX, 0.0), entity.rot, entity.scale,\n        entity.collisionEnvironment):\n      entity.vel.x = 0.0\n    else:\n      entity.pos.x += diffX\n\n    # y\n    if entity.willCollide(entity.pos + (0.0, diffY), entity.rot, entity.scale,\n        entity.collisionEnvironment):\n      entity.vel.y = 0.0\n    else:\n      entity.pos.y += diffY\n\n  else:\n    let\n      stepX = diffX / abs(diffX)\n      stepY = diffY / abs(diffY)\n\n    # x\n    while abs(diffX) >= 1.0:\n      if entity.willCollide(entity.pos + (stepX, 0.0), entity.rot, entity.scale,\n          entity.collisionEnvironment):\n        entity.vel.x = 0.0\n        break\n      diffX -= stepX\n      entity.pos.x += stepX\n\n    # x remainder\n    if entity.vel.x != 0.0:\n      if entity.willCollide(entity.pos + (diffX, 0.0), entity.rot, entity.scale,\n          entity.collisionEnvironment):\n        entity.vel.x = 0.0\n      else:\n        entity.pos.x += diffX\n\n    # y\n    while abs(diffY) >= 1.0:\n      if entity.willCollide(entity.pos + (0.0, stepY), entity.rot, entity.scale,\n          entity.collisionEnvironment):\n        entity.vel.y = 0.0\n        break\n      diffY -= stepY\n      entity.pos.y += stepY\n\n    # y remainder\n    if entity.vel.y != 0.0:\n      if entity.willCollide(entity.pos + (0.0, diffY), entity.rot, entity.scale,\n          entity.collisionEnvironment):\n        entity.vel.y = 0.0\n      else:\n        entity.pos.y += diffY\n\n\n#========#\n# Entity #\n#========#\n\nproc initEntity*(entity: Entity) =\n  ##  Default entity initialization procedure.\n  ##\n  ##  Call it after creating a new entity.\n  ##\n  entity.parent = nil\n  entity.tags = @[]\n  entity.dead = false\n  entity.fLayer = 0\n  entity.fBlinkTimer = 0.0\n  entity.updLayer = false\n  entity.graphic = nil\n  entity.sprite = nil\n  entity.logic = nil\n  entity.physics = nil\n  entity.collider = nil\n  entity.colliding = @[]\n  entity.fastPhysics = false\n  entity.collisionEnvironment = @[]\n  entity.pos = (0.0, 0.0)\n  entity.vel = (0.0, 0.0)\n  entity.acc = (0.0, 0.0)\n  entity.drg = (0.0, 0.0)\n  entity.rot = 0.0\n  entity.rotVel = 0.0\n  entity.rotAcc = 0.0\n  entity.rotDrg = 0.0\n  entity.parallax = 1.0\n  entity.scale = 1.0\n  entity.scaleVel = 0.0\n  entity.scaleAcc = 0.0\n  entity.scaleDrg = 0.0\n  entity.center = (0.0, 0.0)\n  entity.flip = Flip.none\n  entity.visible = true\n  entity.blinking = false\n  entity.blinkOn = 0.0\n  entity.blinkOff = 0.0\n\n\nproc newEntity*(): Entity =\n  result = new Entity\n  result.initEntity()\n\n\nproc layer*(entity: Entity): int {.inline.} =\n  ##  ``Return`` current rendering layer of the ``entity``.\n  ##\n  return entity.fLayer\n\n\nproc `layer=`*(entity: Entity, val: int) =\n  ##  Change the rendering layer of the ``entity``.\n  ##\n  entity.fLayer = val\n  entity.updLayer = true\n\n\nproc copy*(target, source: Entity) =\n  ##  Copy ``source``'s properties to the other entity.\n  ##\n  ##  No new objects will be allocated.\n  ##\n  target.parent   = source.parent\n  target.tags     = @[]\n  for tag in source.tags:\n    target.tags.add(tag)\n  target.dead     = source.dead\n  target.fLayer   = source.layer\n  target.fBlinkTimer = source.fBlinkTimer\n  target.updLayer = source.updLayer\n  target.graphic  = source.graphic\n  if not (source.sprite == nil):\n    target.sprite = new Sprite\n    target.sprite.copy(source.sprite)\n  target.logic    = source.logic\n  target.physics  = source.physics\n  target.collider = source.collider\n  target.colliding = @[]\n  for e in source.colliding:\n    target.colliding.add(e)\n  target.fastPhysics = source.fastPhysics\n  target.collisionEnvironment = source.collisionEnvironment\n  target.pos      = source.pos\n  target.vel      = source.vel\n  target.acc      = source.acc\n  target.drg      = source.drg\n  target.rot      = source.rot\n  target.rotVel   = source.rotVel\n  target.rotAcc   = source.rotAcc\n  target.rotDrg   = source.rotDrg\n  target.scale    = source.scale\n  target.scaleVel = source.scaleVel\n  target.scaleAcc = source.scaleAcc\n  target.scaleDrg = source.scaleDrg\n  target.center   = source.center\n  target.flip     = source.flip\n  target.visible  = source.visible\n  target.blinking = source.blinking\n  target.blinkOn  = source.blinkOn\n  target.blinkOff = source.blinkOff\n\n\nproc absRot*(entity: Entity): Angle =\n  ##  ``Return`` the absolute (counting the parent's) rotation angle\n  ##  of the ``entity``.\n  ##\n  if entity.parent == nil:\n    return entity.rot\n  else:\n    return entity.parent.absRot + entity.rot\n\n\nproc absScale*(entity: Entity): Scale =\n  ##  ``Return`` the absolute (counting the parent's) scale\n  ##  of the ``entity``.\n  ##\n  if entity.parent == nil:\n    return entity.scale\n  else:\n    return entity.parent.absScale * entity.scale\n\n\nproc absPos*(entity: Entity): Coord =\n  ##  ``Return`` the absolute (counting the parent's) scale\n  ##  of the ``entity``.\n  ##\n  if entity.parent == nil:\n    return entity.pos\n  else:\n    if entity.parent.absRot == 0:\n      return\n        entity.parent.absPos * entity.parallax + entity.pos * entity.absScale\n    else:\n      return\n        rotate(entity.pos * entity.absScale,\n               entity.parent.absPos * entity.parallax,\n               entity.absRot)\n\n\ntemplate dim*(entity: Entity): Dim =\n  ##  ``Return`` ``entity.sprite.dim`` if ``entity.sprite`` is not `nil`,\n  ##  or ``entity.graphic.dim`` otherwise.\n  (if entity.sprite == nil:\n    entity.graphic.dim\n  else:\n    entity.sprite.dim)\n\n\nproc centrify*(entity: Entity, hor = HAlign.center, ver = VAlign.center) =\n  ##  Set ``entity``'s ``center``, according to the given align.\n  ##\n  ##  ``hor`` Horisontal align: left, center, or right\n  ##\n  ##  ``ver`` Vertical align: top, center, or bottom\n  ##\n  if entity.graphic == nil:\n    return\n\n  let\n    dim = entity.dim\n    oldCenter = entity.center\n\n  # horisontal align\n  entity.center.x = case hor:\n  of HAlign.left:   0.0\n  of HAlign.center: dim.w / 2\n  of HAlign.right:  dim.w.float - 1\n\n  # vertical align\n  entity.center.y = case ver:\n  of VAlign.top:    0.0\n  of VAlign.center: dim.h / 2\n  of VAlign.bottom: dim.h.float - 1\n\n  # collider adjustment\n  if entity.collider != nil:\n    entity.collider.pos += oldCenter - entity.center\n\n\nmethod event*(entity: Entity, e: sdl.Event) {.base.} = discard\n\n\nproc renderEntity*(entity: Entity) =\n  ##  Default entity render procedure.\n  ##\n  ##  Call it from your entity render method.\n  ##\n  if not (entity.graphic == nil) and entity.visible and\n    ((entity.blinking and (entity.fBlinkTimer >= 0)) or (not entity.blinking)):\n    if entity.sprite == nil:\n      entity.graphic.draw(entity.absPos,\n                          entity.absRot,\n                          entity.absScale,\n                          entity.center,\n                          entity.flip)\n    else: # entity.sprite != nil\n      if entity.sprite.currentAnimationIndex < 0:\n        entity.graphic.draw(entity.absPos,\n                            entity.absRot,\n                            entity.absScale,\n                            entity.center,\n                            entity.flip,\n                            entity.sprite.frames[entity.sprite.currentFrame])\n      else:\n        let anim = entity.currentAnimation()\n        entity.graphic.draw(entity.absPos,\n                            entity.absRot,\n                            entity.absScale,\n                            entity.center,\n                            Flip(entity.flip.cint xor anim.flip.cint),\n                            entity.sprite.frames[\n                              anim.frames[entity.sprite.currentFrame]])\n\n\nmethod render*(entity: Entity) {.base.} =\n  entity.renderEntity()\n\n\nproc updateBlinking(entity: Entity, elapsed: float) =\n  if entity.fBlinkTimer < 0:\n    entity.fBlinkTimer += elapsed\n    if entity.fBlinkTimer > 0:\n      let remainder = entity.fBlinkTimer\n      entity.fBlinkTimer = entity.blinkOn\n      entity.updateBlinking(remainder)\n  else:\n    entity.fBlinkTimer -= elapsed\n    if entity.fBlinkTimer < 0:\n      let remainder = entity.fBlinkTimer\n      entity.fBlinkTimer = -entity.blinkOff\n      entity.updateBLinking(remainder)\n\n\nproc updateEntity*(entity: Entity, elapsed: float) =\n  ##  Default entity update procedure.\n  ##\n  ##  Call it from your entity update method.\n  ##\n  if not(entity.sprite == nil):\n    entity.sprite.update(entity, elapsed)\n  if not(entity.logic == nil):\n    entity.logic(entity, elapsed)\n  if not(entity.physics == nil):\n    entity.physics(entity, elapsed)\n  # blinking\n  if entity.blinking and (entity.blinkOn > 0) and (entity.blinkOff > 0):\n    entity.updateBlinking(elapsed)\n\n\nmethod update*(entity: Entity, elapsed: float) {.base.} =\n  entity.updateEntity(elapsed)\n\n\nmethod onCollide*(entity, target: Entity) {.base.} =\n  ##  Called when ``entity`` collides with ``target``.\n  ##\n  discard\n\n\n#===========#\n# Transform #\n#===========#\n\ntemplate transform*(entity: Entity): Transform =\n  ( pos: entity.absPos,\n    angle: entity.absRot,\n    scale: entity.absScale\n  ).Transform\n\n\ntemplate `transform=`*(entity: Entity, transform: Transform) =\n  entity.pos = transform.pos\n  entity.rot = transform.angle\n  entity.scale = transform.scale\n\n\ntemplate rect*(entity: Entity): Rect =\n  entity.graphic.rect(entity.center * entity.scale)\n\n\ntemplate topleft*(entity: Entity): Coord =\n  -entity.center\n\n\ntemplate topright*(entity: Entity): Coord =\n  -entity.center + (entity.dim.w.toFloat, 0.0)\n\n\ntemplate bottomright*(entity: Entity): Coord =\n  -entity.center + entity.dim.toCoord\n\n\ntemplate bottomleft*(entity: Entity): Coord =\n  -entity.center + (0.0, entity.dim.h.toFloat)\n\n\ntemplate corners*(entity: Entity): untyped =\n  [\n    entity.topleft,\n    entity.topright,\n    entity.bottomright,\n    entity.bottomleft,\n  ]\n\n\ntemplate worldCorners*(entity: Entity): untyped =\n  [\n    entity.transform * entity.topleft,\n    entity.transform * entity.topright,\n    entity.transform * entity.bottomright,\n    entity.transform * entity.bottomleft,\n  ]\n\n\ninclude private/collider\n\n"
  },
  {
    "path": "nimgame2/font.nim",
    "content": "# nimgame2/font.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  settings, types, utils\n\n\nconst\n  DefaultFontColor*: Color = 0xFFFFFFFF'u32\n\n\ntype\n  Font* = ref object of RootObj\n\n\nmethod getError(font: Font): string {.base.} =\n  $sdl.getError()\n\n\nmethod charH*(font: Font): int {.base.} = discard\n\n\nmethod lineDim*(font: Font, text: string): Dim {.base.} = discard\n\n\nmethod render*(font: Font,\n               line: string,\n               color: Color = DefaultFontColor): Surface {.base.} = discard\n\n\nproc renderLineFont*(font: Font,\n                     line: string,\n                     color: Color = DefaultFontColor): Texture =\n  ##  Render a text ``line`` in ``font`` with given ``color``.\n  ##\n  let\n    line = if line.len < 1: \" \" else: line\n    lineSurface = font.render(line, color)\n  if lineSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't render text line: %s\",\n                    font.getError())\n    return nil\n  result = renderer.createTextureFromSurface(lineSurface)\n  lineSurface.freeSurface()\n\n\nmethod renderLine*(font: Font,\n                   line: string,\n                   color: Color = DefaultFontColor): Texture {.base.} =\n  ##  Base ``renderLine()`` font method.\n  ##\n  renderLineFont(font, line, color)\n\n\nproc renderTextFont*(font: Font,\n                     text: openarray[string],\n                     align = TextAlign.left,\n                     color: Color = DefaultfontColor): Texture =\n  ##  Render a multi-line ``text`` in ``font``\n  ##  with given ``align`` and ``color``.\n  ##\n  var text = @text\n  if text.len < 1: text.add(\" \")\n\n  # find the longest line of text\n  var maxw = 0\n\n  for line in text:\n    let w = font.lineDim(line).w\n    if maxw < w:\n      maxw = w\n  let\n    maxw2 = maxw div 2\n    height = font.charH\n\n  # create surface\n  let\n    format = renderer.textureFormat(0)\n    dim: Dim = (maxw, height * text.len)\n    textSurface = createRGBSurfaceWithFormat(\n      0, dim.w, dim.h, format.bitsPerPixel.cint, format)\n\n  if textSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't create font text surface: %s\",\n                    sdl.getError())\n    return nil\n\n  # blit\n  var\n    dstRect = Rect(x: 0, y: 0, w: 0, h: height)\n\n  for i in 0..text.high:\n    let ln = font.render(text[i], color)\n    dstRect.w = ln.w\n    dstRect.x = case align:\n                of TextAlign.left:    0\n                of TextAlign.center:  maxw2 - dstRect.w div 2\n                of TextAlign.right:   maxw - dstRect.w\n    dstRect.y = i * height\n    discard ln.blitSurface(nil, textSurface, addr(dstRect))\n\n  result = renderer.createTextureFromSurface(textSurface)\n  textSurface.freeSurface()\n  if result == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't render text: %s\",\n                    sdl.getError())\n    return nil\n\n\nmethod renderText*(font: Font,\n                   text: openarray[string],\n                   align = TextAlign.left,\n                   color: Color = DefaultfontColor): Texture {.base.} =\n  ##  Base ``renderText()`` font method.\n  ##\n  renderTextFont(font, text, align, color)\n\n"
  },
  {
    "path": "nimgame2/graphic.nim",
    "content": "# nimgame2/graphic.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  types\n\n\ntype\n  Graphic* = ref object of RootObj\n\n\nmethod w*(graphic: Graphic): int {.base.} = discard\n\nmethod h*(graphic: Graphic): int {.base.} = discard\n\nmethod dim*(graphic: Graphic): Dim {.base.} = discard\n\nmethod draw*(graphic: Graphic,\n             pos: Coord = (0.0, 0.0),\n             angle: Angle = 0.0,\n             scale: Scale = 1.0,\n             center: Coord = (0.0, 0.0),\n             flip: Flip = Flip.none,\n             region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) {.base.} = discard\n\ntemplate rect*(graphic: Graphic, offset: Coord): Rect =\n  Rect(\n    x: (graphic.dim.w.float - offset.x).cint,\n    y: (graphic.dim.h.float - offset.y).cint,\n    w: graphic.dim.w.cint,\n    h: graphic.dim.h.cint)\n\n"
  },
  {
    "path": "nimgame2/gui/button.nim",
    "content": "# nimgame2/button.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  ../entity,\n  ../graphic,\n  ../types,\n  widget\n\n\ntype\n  GuiButton* = ref object of GuiWidget\n    # Public\n    image*: Graphic ##  The graphic to render on top of a button\n    imageOffset*: Coord ##  Image drawing offset from button's center. \\\n      ##  Calcuclated automatically if the image is passed in ``init()``\n    imageShift*: Coord  ##  Image shift when button is pressed\n\n\nproc init*(button: GuiButton,\n           graphic: Graphic,\n           image: Graphic = nil,\n           circle: bool = false) =\n  ##  GuiButton initialization.\n  ##\n  ##  ``graphic`` 2x3 button graphic:\n  ##  defaultUp, defaultDown, focusedUp, focusedDown, disabledUp, disabledDown.\n  ##\n  ##  ``image`` The graphic to render on top of a butotn.\n  ##\n  ##  ``circle`` Set to `true` if you want a circle shape instead of square one.\n  ##\n  GuiWidget(button).init()\n  button.graphic = graphic\n  button.initSprite((graphic.dim.w / 2, graphic.dim.h / 3))\n  button.image = image\n  button.imageOffset = if not (image == nil):\n                         (button.sprite.dim / 2 - image.dim / 2)\n                       else:\n                         (0, 0)\n  button.imageShift = (1, 1)\n  # Collider\n  button.collider = if circle:\n      button.newCircleCollider(\n        button.sprite.dim / 2,\n        max(button.sprite.dim.w, button.sprite.dim.h) / 2)\n    else:\n      button.newBoxCollider(\n        button.sprite.dim / 2,\n        button.sprite.dim)\n\n\nproc newGuiButton*(graphic: Graphic,\n                   image: Graphic = nil,\n                   circle: bool = false): GuiButton =\n  ##  Create a new GuiButton.\n  ##\n  ##  ``graphic`` 2x3 button graphic:\n  ##  defaultUp, defaultDown, focusedUp, focusedDown, disabledUp, disabledDown.\n  ##\n  ##  ``image`` The graphic to render on top of a butotn.\n  ##\n  ##  ``circle`` Set to `true` if you want a circle shape instead of square one.\n  ##\n  result = new GuiButton\n  result.init(graphic, image, circle)\n\n\nmethod `state=`*(button: GuiButton, val: GuiState) =\n  ##  ``Return`` ``button``'s ``state``.\n  ##\n  button.setState(val)\n  button.sprite.currentFrame = val.int\n\n\nproc renderGuiButton*(button: GuiButton) =\n  ##  Default button render procedure.\n  ##\n  ##  Call it from your button render method.\n  ##\n  button.renderEntity()\n  if not (button.image == nil):\n    var pos = button.absPos + button.imageOffset\n    if button.state.isDown:\n      pos += button.imageShift\n    button.image.draw(pos,\n                      button.absRot,\n                      button.absScale,\n                      button.center,\n                      button.flip)\n\n\nmethod render*(button: GuiButton) =\n  button.renderGuiButton()\n\n"
  },
  {
    "path": "nimgame2/gui/progressbar.nim",
    "content": "# nimgame2/gui/progressbar.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  strutils,\n  ../draw,\n  ../font,\n  ../textgraphic,\n  ../texturegraphic,\n  ../types,\n  widget\n\ntype\n  GuiProgressBar* = ref object of GuiWidget\n    # Private\n    fText: TextGraphic\n    # Public\n    min*, max*, value*: float\n    precision*: range[0..32]  ## value format precision (defaults to 0)\n    unit*: string             ## value format unit (defaults to '%')\n    decimalSep*: char       ## value format decimal separator (defaults to '.')\n    direction*: Direction\n    dim*: Dim\n    outline*: Dim            ## outline border size\n    bgColor*, fgColor*: Color\n    bgGraphic*, fgGraphic*: TextureGraphic\n    reverseX*, reverseY*: bool\n\n\nproc init*(bar: GuiProgressBar,\n           dim: Dim,\n           bgColor, fgColor: Color,\n           font: Font,\n           bgGraphic, fgGraphic: TextureGraphic) =\n  ##  GuiProgressBar initialization.\n  ##\n  ##  ``dim`` bar's dimensions.\n  ##\n  ##  ``bgColor``, ``fgColor`` background (empty) and foreground (full) colors.\n  ##\n  ##  ``font``  info text font. Might be `nil`.\n  ##\n  ##  ``bgGraphic``, ``fgGraphic`` background (empty) and foreground (full)\n  ##  textures that replace ``bgColor`` and ``fgColor`` if specified.\n  ##\n  GuiWidget(bar).init()\n  bar.min = 0\n  bar.max = 100\n  bar.value = 0\n  bar.precision = 0\n  bar.unit = \"%\"\n  bar.decimalSep = '.'\n  bar.direction = Direction.leftRight\n  bar.dim = dim\n  bar.bgColor = bgColor\n  bar.fgColor = fgColor\n  if font == nil:\n    bar.fText = nil\n  else:\n    bar.fText = newTextGraphic(font)\n    bar.fText.setText(\"0%\")\n  bar.bgGraphic = bgGraphic\n  bar.fgGraphic = fgGraphic\n  bar.reverseX = false\n  bar.reverseY = false\n\n\nproc newProgressBar*(dim: Dim,\n                     bgColor: Color, fgColor: Color,\n                     font: Font = nil,\n                     bgGraphic: TextureGraphic = nil,\n                     fgGraphic: TextureGraphic = nil): GuiProgressBar =\n  ##  Create a new GuiProgressBar.\n  ##\n  ##  ``dim`` bar's dimensions.\n  ##\n  ##  ``bgColor``, ``fgColor`` background (empty) and foreground (full) colors.\n  ##\n  ##  ``font``  info text font. Might be `nil`.\n  ##\n  ##  ``bgGraphic``, ``fgGraphic`` background (empty) and foreground (full)\n  ##  textures that replace ``bgColor`` and ``fgColor`` if specified.\n  ##\n  result = new GuiProgressBar\n  result.init(dim, bgColor, fgColor, font, bgGraphic, fgGraphic)\n\n\nproc renderGuiProgressBar*(bar: GuiProgressBar) =\n  ##  Default progress bar render procedure.\n  ##\n  ##  Call it from your progress bar render method.\n  ##\n  # background\n  if bar.bgGraphic == nil:\n    discard box(\n      bar.pos - Coord(bar.outline),\n      bar.pos + Coord(bar.dim - (1, 1) + bar.outline),\n      bar.bgColor)\n  else:\n    bar.bgGraphic.drawTiled(Rect(\n      x: bar.pos.x.cint - bar.outline.w.cint,\n      y: bar.pos.y.cint - bar.outline.h.cint,\n      w: bar.dim.w.cint + bar.outline.w.cint * 2,\n      h: bar.dim.h.cint + bar.outline.h.cint * 2),\n      reverseX = bar.reverseX,\n      reverseY = bar.reverseY)\n\n  # foreground\n  if bar.value > 0:\n\n    let value = (bar.value - bar.min) / (bar.max - bar.min)\n    var part: Coord = case bar.direction:\n      of Direction.leftRight, Direction.rightLeft:\n        (int(bar.dim.w.float * value), bar.dim.h)\n      of Direction.bottomTop, Direction.topBottom:\n        (bar.dim.w, int(bar.dim.h.float * value))\n\n    if bar.fgGraphic == nil:\n      case bar.direction:\n      of Direction.leftRight, Direction.topBottom:\n        discard box(\n          bar.pos,\n          bar.pos + part - (1.0, 1.0),\n          bar.fgColor)\n      of Direction.rightLeft:\n        discard box(\n          (bar.pos.x + bar.dim.w.float - part.x, bar.pos.y),\n          bar.pos + Coord(bar.dim) - (1.0, 1.0),\n          bar.fgColor)\n      of Direction.bottomTop:\n        discard box(\n          (bar.pos.x, bar.pos.y + bar.dim.h.float - part.y),\n          bar.pos + Coord(bar.dim) - (1.0, 1.0),\n          bar.fgColor)\n\n    else:\n      case bar.direction:\n      of Direction.leftRight, Direction.topBottom:\n        bar.fgGraphic.drawTiled(Rect(\n          x: bar.pos.x.cint,\n          y: bar.pos.y.cint,\n          w: part.x.cint,\n          h: part.y.cint),\n          reverseX = bar.reverseX,\n          reverseY = bar.reverseY)\n      of Direction.rightLeft:\n        bar.fgGraphic.drawTiled(Rect(\n          x: cint(bar.pos.x + bar.dim.w.float - part.x),\n          y: bar.pos.y.cint,\n          w: part.x.cint,\n          h: part.y.cint),\n          reverseX = bar.reverseX,\n          reverseY = bar.reverseY)\n      of Direction.bottomTop:\n        bar.fgGraphic.drawTiled(Rect(\n          x: bar.pos.x.cint,\n          y: cint(bar.pos.y + bar.dim.h.float - part.y),\n          w: part.x.cint,\n          h: part.y.cint),\n          reverseX = bar.reverseX,\n          reverseY = bar.reverseY)\n\n  # text\n  if not(bar.fText == nil):\n    bar.fText.setText(formatEng(\n      bar.value,\n      precision = bar.precision,\n      decimalSep = bar.decimalSep) & bar.unit)\n    let offset = bar.dim / 2.0 - Coord(bar.fText.dim) / 2.0\n    bar.fText.draw(bar.pos + offset)\n\n\nmethod render*(bar: GuiProgressBar) =\n  bar.renderGuiProgressBar()\n\n"
  },
  {
    "path": "nimgame2/gui/radio.nim",
    "content": "# nimgame2/radiogroup.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  ../entity,\n  ../graphic,\n  button,\n  widget\n\n\ntype\n  GuiRadioGroup* = ref object of Entity\n    # Public\n    list*: seq[GuiWidget]\n\n  GuiRadioButton* = ref object of GuiButton\n    # Public\n    group*: GuiRadioGroup\n\n\n#===============#\n# GuiRadioGroup #\n#===============#\n\nproc init*(radiogroup: GuiRadioGroup) =\n  radiogroup.initEntity()\n  radiogroup.list = @[]\n\n\nproc newGuiRadioGroup*(): GuiRadioGroup =\n  result = new GuiRadioGroup\n  result.init()\n\n\nproc toggle*(radiogroup: GuiRadioGroup, target: GuiWidget) =\n  ##  Toggle a ``target`` element of the ``radiogroup``.\n  ##\n  let idx = radiogroup.list.find(target)\n  if idx >= 0:\n    for i in 0..radiogroup.list.high:\n      if i != idx:\n        radiogroup.list[i].setToggled(false)\n\n\n#================#\n# GuiRadioButton #\n#================#\n\nproc init*(radiobutton: GuiRadioButton,\n           group: GuiRadioGroup,\n           graphic: Graphic,\n           image: Graphic = nil,\n           circle: bool = false) =\n  ##  GuiRadioButton initialization.\n  ##\n  ##  ``group`` GuiRadioGroup the ``radiobutton`` belongs to.\n  ##\n  ##  ``graphic``, ``image``, ``circle``\n  ##  See \"gui/button.nim\" initialization docs.\n  ##\n  GuiButton(radiobutton).init(graphic, image, circle)\n  radiobutton.toggle = true\n  radiobutton.parent = group\n  radiobutton.group = group\n  group.list.add(radiobutton)\n\n\nproc newGuiRadioButton*(group: GuiRadioGroup,\n                        graphic: Graphic,\n                        image: Graphic = nil,\n                        circle: bool = false): GuiRadioButton =\n  ##  Create a new GuiRadioButton.\n  ##\n  ##  ``group`` GuiRadioGroup the ``radiobutton`` belongs to.\n  ##\n  ##  ``graphic``, ``image``, ``circle``\n  ##  See \"gui/button.nim\" initialization docs.\n  ##\n  ##\n  result = new GuiRadioButton\n  result.init(group, graphic, image, circle)\n\n\nproc setToggled*(radiobutton: GuiRadioButton, val: bool) =\n  ##  Toggle ``radiobutton`` to a given state.\n  ##\n  if val:\n    GuiWidget(radiobutton).setToggled(val)\n    radiobutton.group.toggle(radiobutton)\n\n\nmethod `toggled=`*(radiobutton: GuiRadioButton, val: bool) =\n  radiobutton.setToggled(val)\n\n"
  },
  {
    "path": "nimgame2/gui/textinput.nim",
    "content": "# nimgame2/textinput.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  unicode,\n  sdl2_nim/sdl,\n  ../entity,\n  ../font,\n  ../graphic,\n  ../input,\n  ../textfield,\n  ../textgraphic,\n  ../types,\n  widget\n\n\ntype\n  GuiTextInput* = ref object of GuiWidget\n    # Public\n    text*: TextField\n    textPos*: Coord     ##  Relative text position\n    keysBackspace*, keysDelete*, keysLeft*, keysRight*,\n      keysToFirst*, keysToLast*, keysDone*: seq[Keycode]\n\n\nproc init*(input: GuiTextInput,\n           graphic: Graphic,\n           font: Font) =\n  ##  GuiTextInput initialization.\n  ##\n  ##  ``grapic`` 2x2 input field graphic:\n  ##  default, focused, pressed (active), disabled.\n  ##\n  ##  ``font`` Font object for text rendering.\n  ##\n  GuiWidget(input).init()\n  input.toggle = true\n  input.keysBackspace = @[K_Backspace]\n  input.keysDelete = @[K_Delete]\n  input.keysLeft = @[K_Left]\n  input.keysRight = @[K_Right]\n  input.keysToFirst = @[K_Home]\n  input.keysToLast = @[K_End]\n  input.keysDone = @[K_Return, K_Escape]\n  input.graphic = graphic\n  input.initSprite((graphic.dim.w / 2, graphic.dim.h / 3))\n  # Collider\n  input.collider = input.newBoxCollider(input.sprite.dim / 2, input.sprite.dim)\n  # Text\n  input.text = newTextField(font)\n  input.textPos = (\n    (input.sprite.dim.h - font.charH) / 2,\n    (input.sprite.dim.h - font.charH) / 2)\n\n\nproc newGuiTextInput*(graphic: Graphic, font: Font): GuiTextInput =\n  ##  Create a new GuiTextInput.\n  ##\n  ##  ``grapic`` 2x2 input field graphic:\n  ##  default, focused, pressed (active), disabled.\n  ##\n  ##  ``font`` Font object for text rendering.\n  ##\n  result = new GuiTextInput\n  result.init(graphic, font)\n\n\nproc eventGuiTextInput*(input: GuiTextInput, e: Event) =\n  if input.state.isEnabled:\n    case e.kind:\n    of KeyDown:\n      if input.toggled:\n        let key = e.key.keysym.sym\n        if key in input.keysBackspace:\n            input.text.bs()\n\n        elif key in input.keysDelete:\n          input.text.del()\n\n        elif key in input.keysLeft:\n          input.text.left()\n\n        elif key in input.keysRight:\n          input.text.right()\n\n        elif key in input.keysToFirst:\n          input.text.toFirst()\n\n        elif key in input.keysToLast:\n          input.text.toLast()\n\n        elif key in input.keysDone:\n          input.text.deactivate()\n          stopTextInput()\n          input.release()\n\n    of TextInput:\n      if input.toggled:\n        input.text.add($e.text.text)\n\n    of TextEditing:\n      if input.toggled:\n        discard\n\n    else:\n      discard\n\n\nmethod event*(input: GuiTextInput, e: Event) =\n  input.eventGuiWidget(e)\n  input.eventGuiTextInput(e)\n\n\nmethod `state=`*(input: GuiTextInput, val: GuiState) =\n  input.setState(val)\n  input.sprite.currentFrame = val.int\n\n\nproc enter*(input: GuiTextInput) =\n  ##  Start text entry mode.\n  ##\n  input.text.activate()\n  startTextInput()\n\n\nproc click*(input: GuiTextInput, mb: MouseButton) {.inline.} =\n  input.enter()\n\n\nmethod onClick*(input: GuiTextInput, mb: MouseButton) =\n  input.click(mb)\n\n\nproc renderGuiTextInput*(input: GuiTextInput) =\n  ##  Default text input render procedure.\n  ##\n  ##  Call it from your text input render method.\n  ##\n  input.renderEntity()\n  input.text.draw(input.pos + input.textPos)\n\n\nmethod render*(input: GuiTextInput) =\n  input.renderGuiTextInput()\n\n"
  },
  {
    "path": "nimgame2/gui/widget.nim",
    "content": "# nimgame2/gui/widget.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  ../entity,\n  ../graphic,\n  ../input,\n  ../types\n\n\ntype\n  GuiAction* = proc(widget: GuiWidget)\n\n  GuiState* {.pure.} = enum\n    defaultUp\n    defaultDown\n    focusedUp\n    focusedDown\n    disabledUp\n    disabledDown\n\n  GuiWidget* = ref object of Entity\n    # Private\n    fState: GuiState\n    fWasPressed: MouseState\n    # Public\n    actions*: seq[GuiAction]##  A list of action to perform on click.\n    mbAllow*: MouseState    ##  Mouse buttons allowed for interaction.\n    toggle*, fToggled: bool ##  If `true`, the widget is in toggle on/off mode.\n\n\nproc init*(widget: GuiWidget) =\n  widget.initEntity()\n  widget.actions = @[]\n  widget.fState = GuiState.defaultUp\n  widget.mbAllow.set(MouseButton.left)\n  widget.fWasPressed = 0\n  widget.toggle = false\n  widget.fToggled = false\n\n\nproc newGuiWidget*(): GuiWidget =\n  new result\n  result.init()\n\n\nproc state*(widget: GuiWidget): GuiState {.inline.} =\n  return widget.fState\n\n\nmethod onPress*(widget: GuiWidget) {.base.} =\n  discard\n\n\nproc clickAction*(widget: GuiWidget) =\n  if not(widget.actions.len < 1):\n    for action in widget.actions:\n      action(widget)\n\n\nmethod onClick*(widget: GuiWidget, mb = MouseButton.left) {.base.} =\n  widget.clickAction()\n\n\ntemplate isUp*(state: GuiState): bool =\n  (state.int mod 2 == 0)\n\n\ntemplate isDown*(state: GuiState): bool =\n  (not isUp(state))\n\n\ntemplate isFocused*(state: GuiState): bool =\n  (state in {GuiState.focusedUp, GuiState.focusedDown})\n\n\ntemplate isDisabled*(state: GuiState): bool =\n  (state in {GuiState.disabledUp, GuiState.disabledDown})\n\n\ntemplate isEnabled*(state: GuiState): bool =\n  (not isDisabled(state))\n\n\ntemplate toggled*(widget: GuiWidget): bool =\n  widget.fToggled\n\n\nproc setState*(widget: GuiWidget, val: GuiState) =\n  widget.fState = if widget.toggle and widget.toggled and val.isUp:\n                    GuiState(val.int + 1)\n                  else:\n                    val\n\n\nmethod `state=`*(widget: GuiWidget, val: GuiState) {.base.} =\n  widget.setState(val)\n\n\nproc setToggled*(widget: GuiWidget, val: bool) =\n  widget.fToggled = val\n  if val:\n    if widget.state.isUp:\n      inc widget.fState\n  else:\n    if widget.state.isDown:\n      dec widget.fState\n  widget.state = widget.state\n\n\nmethod `toggled=`*(widget: GuiWidget, val: bool) {.base.} =\n  widget.setToggled(val)\n\n\ntemplate pressWidget*(widget: GuiWidget) =\n  widget.toggled = true\n\n\nmethod press*(widget: GuiWidget) {.base.} =\n  widget.pressWidget()\n\n\ntemplate releaseWidget*(widget: GuiWidget) =\n  widget.toggled = false\n\n\nmethod release*(widget: GuiWidget) {.base.} =\n  widget.releaseWidget()\n\n\nproc disable*(widget: GuiWidget) =\n  if widget.state.isUp:\n    widget.state = GuiState.disabledUp\n  else:\n    widget.state = GuiState.disabledDown\n\n\nproc enable*(widget: GuiWidget) =\n  if widget.state == GuiState.disabledUp:\n    widget.state = GuiState.defaultUp\n  elif widget.state == GuiState.disabledDown:\n    widget.state = GuiState.defaultDown\n\n\nproc updateFocus(widget: GuiWidget, mouse: Coord): bool =\n  ##  Check if the ``mouse`` is over the ``widget``.\n  ##\n  if widget.collider != nil:\n    if mouse.collide(widget.collider):\n      widget.state = GuiState.focusedUp\n      return true\n    else:\n      widget.state = GuiState.defaultUp\n      return false\n\n\nproc eventGuiWidget*(widget: GuiWidget, e: Event) =\n  if widget.state.isEnabled:\n    case e.kind:\n    of MouseMotion:\n      let mouse: Coord = (e.motion.x.float, e.motion.y.float)\n      if widget.updateFocus(mouse):\n        for btn in MouseButton:\n          # check if button is allowed\n          if btn.down(widget.mbAllow):\n            # check if button was pressed over this widget\n            if btn.down(widget.fWasPressed):\n              widget.state = GuiState.focusedDown\n\n    of MouseButtonDown:\n      let mouse: Coord = (e.button.x.float, e.button.y.float)\n      if widget.updateFocus(mouse):\n        let btn = e.button.button.MouseButton\n        # check if button is allowed\n        if btn.down(widget.mbAllow):\n          widget.state = GuiState.focusedDown\n          widget.fWasPressed.set(btn)\n          widget.onPress()\n\n    of MouseButtonUp:\n      let mouse: Coord = (e.button.x.float, e.button.y.float)\n      let btn = e.button.button.MouseButton\n      if widget.updateFocus(mouse):\n        # check if button was pressed over this widget\n        if btn.down(widget.fWasPressed):\n          # toggle\n          if widget.toggle:\n            widget.toggled = not widget.toggled\n            widget.state = if widget.toggled:GuiState.focusedDown\n                           else: GuiState.focusedUp\n          #\n          widget.fWasPressed.set(btn, false)\n          widget.onClick(btn)\n      else:\n        if btn.down(widget.fWasPressed):\n          widget.fWasPressed.set(btn, false)\n    else:\n      discard\n    widget.state = widget.state\n\n\nmethod event*(widget: GuiWidget, e: Event) =\n  widget.eventGuiWidget(e)\n\n"
  },
  {
    "path": "nimgame2/indexedimage.nim",
    "content": "# nimgame2/indexedimage.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_image as img,\n  settings, types\n\n\ntype\n  Palette* = ptr sdl.Palette\n\n  IndexedImage* = ref object of RootObj\n    # Private\n    fSurface: Surface   ##  Source surface\n\n\n#=========#\n# Palette #\n#=========#\n\nproc free*(palette: Palette) =\n  if not (palette == nil):\n    palette.freePalette()\n\n\nproc init*(palette: var Palette, ncolors: int) =\n  palette.free()\n  palette = allocPalette(ncolors)\n\n\nproc ncolors*(palette: Palette): int =\n  ##  Get the number of colors in ``palette``.\n  ##\n  if palette == nil:\n    0\n  else:\n    palette.ncolors\n\n\nproc `[]`*(palette: Palette, i: int): Color =\n  ##  Get the ``i``'th color from the ``palette``.\n  ##\n  if (i < 0) or (i >= palette.ncolors):\n    raise newException(IndexDefect,\n      \"Palette color index \" & $i & \" is out of bounds.\")\n  ptrMath:\n    return palette.colors[i]\n\n\nproc `[]=`*(palette: Palette, i: int, colors: openarray[Color]) =\n  ##  Change ``colors`` in the ``palette`` starting with ``i``'th color.\n  ##\n  if (i < 0) or ((i + colors.len) > palette.ncolors):\n    raise newException(IndexDefect,\n      \"Palette color index range \" & $i & \"..\" & $(i + colors.len - 1) &\n      \" is out of bounds.\")\n  if palette.setPaletteColors(\n      cast[ptr Color](colors[0].unsafeAddr), i, colors.len) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Error on setting palette colors: %s\",\n                    sdl.getError())\n\n\nproc `[]=`*(palette: Palette, i: int, color: Color) =\n  ##  Change ``i``'th color in the ``palette``.\n  ##\n  if (i < 0) or (i >= palette.ncolors):\n    raise newException(IndexDefect,\n      \"Palette color index \" & $i & \" is out of bounds.\")\n  palette[i] = [color]\n\n\n#==============#\n# IndexedImage #\n#==============#\n\nproc free*(image: IndexedImage) =\n  if not (image.fSurface == nil):\n    image.fSurface.freeSurface()\n\n\nproc init*(image: IndexedImage) =\n  image.free()\n  image.fSurface = nil\n\n\nproc load*(image: IndexedImage,\n           file: string): bool =\n  ##  Load ``image``graphic source from a ``file``.\n  ##\n  result = true\n  image.free()\n  # load image\n  image.fSurface = img.load(file)\n  if image.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load indexed image %s: %s\",\n                    file, img.getError())\n    return false\n\n  if image.fSurface.format.palette == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"No palette found in image %s\",\n                    file)\n    image.fSurface.freeSurface()\n    return false\n\n\nproc load*(image: IndexedImage,\n           src: ptr RWops, freeSrc: bool = true): bool =\n  ##  Load ``image``graphic source from a ``src`` ``RWops``.\n  ##\n  result = true\n  image.free()\n  # load image\n  image.fSurface = img.loadRW(src, freeSrc)\n  if image.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load indexed image RW: %s\",\n                    img.getError())\n    return false\n\n  if image.fSurface.format.palette == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"No palette found in image RW\")\n    image.fSurface.freeSurface()\n    return false\n\n\nproc newIndexedImage*(): IndexedImage =\n  new result, free\n  result.init()\n\n\nproc newIndexedImage*(file: string): IndexedImage =\n  ##  Create a new IndexedImage and load it from a ``file``.\n  ##\n  result = newIndexedImage()\n  discard result.load(file)\n\n\nproc newIndexedImage*(src: ptr RWops, freeSrc: bool = true): IndexedImage =\n  ##  Create a new IndexedImage and load it from a ``src`` ``RWops``.\n  ##\n  result = newIndexedImage()\n  discard result.load(src, freeSrc)\n\n\nproc palette*(image: IndexedImage): Palette {.inline.} =\n  ##  Get the current palette of the ``image``.\n  ##\n  image.fSurface.format.palette\n\n\nproc `palette=`*(image: IndexedImage, palette: Palette) {.inline.} =\n  ##  Assign a new palette to the ``image``.\n  ##\n  if image.fSurface.setSurfacePalette(palette) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set the new palette: %s\",\n                    sdl.getError())\n\n\nproc render*(image: IndexedImage): Texture {.inline.} =\n  ##  ``Return`` a new ``Texture`` created from indexed ``image``.\n  ##\n  renderer.createTextureFromSurface(image.fSurface)\n\n"
  },
  {
    "path": "nimgame2/input.nim",
    "content": "# nimgame2/input.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  strutils,\n  sdl2_nim/sdl,\n  types, utils\n\n\nexport\n  sdl.Scancode, sdl.Keymod\n\n\ntype\n  MouseButton* {.size: sizeof(int32), pure.} = enum  ##  \\\n    ##  Mouse buttons.\n    ##\n    left = sdl.ButtonLeft\n    middle = sdl.ButtonMiddle\n    right = sdl.ButtonRight\n    x1 = sdl.ButtonX1\n    x2 = sdl.ButtonX2\n\n  MouseState* = int32\n\n\nconverter toInt*(button: MouseButton): int32 =\n  button.int32\n\n\nvar\n  kbd: ptr array[sdl.NumScancodes.int, uint8]\n  kbdPressed, kbdReleased: seq[Scancode]\n  mPressed, mReleased: int32\n  m: Coord2\n  mBtn: int32\n  mWheel: Coord\n  mWheelDirection: int\n\n\n#==========#\n# Keyboard #\n#==========#\n\nproc initKeyboard*() =\n  ##  Clear the buffers.\n  ##\n  ##  Called automatically from the main game cycle.\n  ##\n  kbdPressed = @[]\n  kbdReleased = @[]\n\n\nproc updateKeyboard*(event: Event) =\n  ##  Called automatically from the main game cycle.\n  ##\n  kbd = sdl.getKeyboardState(nil)\n  if event.kind == KeyDown:\n    if event.key.repeat == 0:\n      kbdPressed.add(event.key.keysym.scancode)\n  elif event.kind == KeyUp:\n    kbdReleased.add(event.key.keysym.scancode)\n\n\ntemplate down*(scancode: Scancode): bool =\n  ##  Check if ``scancode`` (keyboard key) is down.\n  ##\n  kbd[scancode.int] > 0'u8\n\n\ntemplate down*(keymod: Keymod): bool =\n  ##  Check if ``keymod`` (keyboard mod key) is down.\n  ##\n  sdl.getModState() and keymod\n\n\nproc down*(scancodes: openarray[Scancode]): bool =\n  ##  Check if any scancode in the ``scancodes`` array is down.\n  ##\n  for i in scancodes:\n    if i.down:\n      return true\n  return false\n\n\nproc down*(keymods: openarray[Keymod]): bool =\n  ##  Check if any keymod in the ``keymodes`` array is down.\n  ##\n  for i in keymods:\n    if i.down:\n      return true\n  return false\n\n\ntemplate pressed*(scancode: Scancode): bool =\n  ##  Check if ``scancode`` (keyboard key) was just pressed.\n  ##\n  (scancode in kbdPressed)\n\n\nproc pressed*(scancodes: openarray[Scancode]): bool =\n  ##  Check if any scancode in the ``scancodes`` array was just pressed.\n  ##\n  for i in scancodes:\n    if i.pressed:\n      return true\n  return false\n\n\ntemplate released*(scancode: Scancode): bool =\n  ##  Check if ``scancode`` (keyboard key) was just released.\n  ##\n  (scancode in kbdReleased)\n\n\nproc released*(scancodes: openarray[Scancode]): bool =\n  ##  Check if any scancode in the ``scancodes`` array was just released.\n  ##\n  for i in scancodes:\n    if i.released:\n      return true\n  return false\n\n\nproc clearPressed*(scancode: Scancode) =\n  ##  Remove ``scancode`` from pressed keys list.\n  ##\n  let idx = kbdPressed.find(scancode)\n  if idx < 0:\n    return\n  kbdPressed.del(idx)\n\n\nproc clearReleased*(scancode: Scancode) =\n  ##  Remove ``scancode`` from released keys list.\n  ##\n  let idx = kbdReleased.find(scancode)\n  if idx < 0:\n    return\n  kbdReleased.del(idx)\n\n\ntemplate name*(keycode: Keycode): string =\n  ##  ``Return`` a human-readable name for the ``keycode``.\n  ##\n  $getKeyName(keycode)\n\n\ntemplate name*(scancode: Scancode): string =\n  ##  ``Return`` a human-readable name for the ``scancode``.\n  ##\n  $getScancodeName(scancode)\n\n\n#=======#\n# Mouse #\n#=======#\n\ntemplate set*(state: var MouseState,\n              button: int32,\n              enable: bool = true) =\n  ##  Enable or disable specific mouse button's flag in the given ``state``.\n  ##\n  if enable:\n    state = state or sdl.button(button).int32\n  else:\n    state = state and (not sdl.button(button).int32)\n\n\nproc initMouse*() =\n  ##  Clear the buffers.\n  ##\n  ##  Called automatically from the main game cycle.\n  ##\n  mPressed = 0\n  mReleased = 0\n  mWheel = (0.0, 0.0)\n\n\nproc updateMouse*(event: Event) =\n  ##  Called automatically from the main game cycle.\n  ##\n  var ax, ay, rx, ry: cint\n  mBtn = sdl.getMouseState(addr(ax), addr(ay)).int\n  discard sdl.getRelativeMouseState(addr(rx), addr(ry))\n  m = ((ax.float, ay.float), (rx.float, ry.float))\n\n  if event.kind == MouseButtonDown:\n    mPressed.set(event.button.button.int32)\n  elif event.kind == MouseButtonUp:\n    mReleased.set(event.button.button.int32)\n  elif event.kind == MouseWheel:\n    mWheelDirection = if event.wheel.direction == MouseWheelNormal: 1\n                      else: -1\n    # In order for mouse wheel to be consistant across platforms\n    # we have to normalize the mouse wheel direction\n    mWheel += Coord(\n      (event.wheel.x.float, event.wheel.y.float) * mWheelDirection)\n\n\ntemplate mouse*(): Coord2 =\n  ##  ``Return`` current mouse position.\n  ##\n  m\n\n\ntemplate mouseWheel*(): Coord =\n  ## ``Return`` current mouse wheel motion.\n  ##\n  mWheel\n\n\ntemplate mouseWheelFlipped*(): bool =\n  ## ``Return`` `true` if mouse wheel direction is flipped.\n  ##\n  (mWheelDirection < 0)\n\n\ntemplate mouseRelative*(enabled: bool): bool =\n  ##  Set relative mouse mode.\n  ##\n  sdl.setRelativeMouseMode(enabled) == 0\n\n\ntemplate mouseCapture*(enabled: bool): bool =\n  ##  Capture or release the mouse.\n  ##\n  sdl.captureMouse(enabled) == 0\n\n\ntemplate down*(button: int32, state: MouseState = mBtn): bool =\n  ##  Check if mouse ``button`` is pressed.\n  ##\n  (sdl.button(button) and state) > 0\n\n\ntemplate down*(button: MouseButton, state: MouseState = mBtn): bool =\n  down(int32(button), state)\n\n\ntemplate pressed*(button: int32): bool =\n  ##  Check if mouse ``button`` was just pressed.\n  ##\n  (sdl.button(button) and mPressed) > 0\n\n\ntemplate pressed*(button: MouseButton): bool =\n  pressed(int32(button))\n\n\ntemplate released*(button: int32): bool =\n  ##  Check if mouse ``button`` was just released.\n  ##\n  (sdl.button(button) and mReleased) > 0\n\n\ntemplate released*(button: MouseButton): bool =\n  released(int32(button))\n\n\ntemplate clearPressed*(button: int32) =\n  ##  Remove ``button`` from pressed buttons list.\n  ##\n  mPressed.set(button, false)\n\n\ntemplate clearPressed*(button: MouseButton) =\n  clearPressed(int32(button))\n\n\ntemplate clearReleased*(button: int32) =\n  ##  Remove ``button`` from released buttons list.\n  ##\n  mReleased.set(button, false)\n\n\ntemplate clearReleased*(button: MouseButton) =\n  clearReleased(int32(button))\n\n\ntemplate mbState*(): MouseState =\n  ##  ``Return`` current mouse buttons state value.\n  ##\n  mBtn\n\n\ntemplate cursorIsVisible*(): bool =\n  ##  ``Return`` `true` if the system mouse cursor is visible,\n  ##  or `false` otherwise.\n  ##\n  (sdl.showCursor(-1) == 1)\n\n\ntemplate showCursor*() =\n  ##  Show the system mouse cursor.\n  ##\n  discard sdl.showCursor(1)\n\n\ntemplate hideCursor*() =\n  ##  Hide the system mouse cursor.\n  ##\n  discard sdl.showCursor(0)\n\n\ntemplate toggleCursor*() =\n  ##  Toggle the visibility of the system mouse cursor.\n  ##\n  discard sdl.showCursor(if cursorIsVisible: 0 else: 1)\n\n\n#==========#\n# Joystick #\n#==========#\n\nexport\n  sdl.numJoysticks, sdl.HatPosition, sdl.JoystickGUID\n\n\ntype\n  JoyAxis* = range[low(int16)..high(int16)]\n  JoyBall* = CoordInt\n  JoyHat*  = sdl.HatPosition\n\n  Joystick = ref object\n    joy: sdl.Joystick\n    guid: sdl.JoystickGUID\n    numButtons, numAxes, numBalls, numHats: int\n    pressed, released: array[uint8.high.int, int]\n\nvar\n  joysticks: seq[Joystick]\n\n\nproc joyIsOpened*(id: int): bool =\n  if id >= 0:\n    if joysticks.high < id:\n      return false\n    if joysticks[id] == nil:\n      return false\n    return true\n  else:\n    return joysticks.len > 0\n\n\niterator opened(joys: seq[Joystick]): Joystick =\n  for i in 0..joys.high:\n    if joys[i] == nil:\n      continue\n    yield joys[i]\n\n\nproc getId*(guid: JoystickGUID): int =\n  ##  ``Return`` the index of a joystick with a corresponding ``guid``,\n  ##  or `-1` otherwise.\n  ##\n  for i in 0..joysticks.high:\n    if not (joysticks[i] == nil):\n      if joysticks[i].guid == guid:\n        return i\n  return -1\n\n\nproc joyGuid*(id: int): JoystickGUID {.inline.} =\n  if joyIsOpened(id):\n    return joysticks[id].guid\n\n\nproc openJoystick*(id: int): bool =\n  let joy = joystickOpen(id)\n  if joy == nil:\n    return false\n  # init a new joystick\n  let newJoystick = new Joystick\n  newJoystick.joy = joy\n  newJoystick.guid = joystickGetGUID(joy)\n  newJoystick.numButtons = joystickNumButtons(joy)\n  newJoystick.numAxes = joystickNumAxes(joy)\n  newJoystick.numBalls = joystickNumBalls(joy)\n  newJoystick.numHats = joystickNumHats(joy)\n  # add to the ``joysticks`` sequence\n  #if joysticks == nil:\n  #  joysticks = @[]\n  if joysticks.high >= id:\n    if not (joysticks[id] == nil):\n      joystickClose(joysticks[id].joy)\n    joysticks[id] = newJoystick\n  else:\n    while joysticks.high < id:\n      joysticks.add(nil)\n    joysticks[id] = newJoystick\n  return true\n\n\nproc closeJoystick*(id: int): bool =\n  if joysticks.high < id:\n    return false\n  if joysticks[id] == nil:\n    return false\n  joystickClose(joysticks[id].joy)\n  joysticks[id] = nil\n  return true\n\n\nproc initJoysticks*() =\n  ##  Init the ``joysticks`` sequence.\n  ##\n  ##  Called automatically from the main game cycle.\n  ##\n  #if joysticks == nil:\n  #  joysticks = @[]\n  #else:\n  for j in joysticks.opened:\n    for i in 0..<j.numButtons:\n      j.pressed[i] = 0\n      j.released[i] = 0\n\n\nproc updateJoysticks*(event: Event) =\n  ##  Called automatically from the main game cycle.\n  ##\n  if event.kind == JoyButtonDown:\n    let id = event.jbutton.which\n    if joysticks.high >= id:\n      let btn = event.jbutton.button\n      inc joysticks[id].pressed[btn]\n\n  elif event.kind == JoyButtonUp:\n    let id = event.jbutton.which\n    if joysticks.high >= id:\n      let btn = event.jbutton.button\n      inc joysticks[id].released[btn]\n\n\nproc joyName*(joystick: int): string =\n  ##  ``Return`` the name of the ``joystick``, or an empty string otherwise.\n  ##\n  if not joyIsOpened(joystick):\n    return \"\"\n  let name = joysticks[joystick].joy.joystickName()\n  return if name == nil: \"Unknown Joystick\"\n         else: $name\n\n\nproc joyNumButtons*(joystick: int): int {.inline.} =\n  if not joyIsOpened(joystick):\n    return 0\n  joysticks[joystick].numButtons\n\n\nproc joyNumAxes*(joystick: int): int {.inline.} =\n  if not joyIsOpened(joystick):\n    return 0\n  joysticks[joystick].numAxes\n\n\nproc joyNumBalls*(joystick: int): int {.inline.} =\n  if not joyIsOpened(joystick):\n    return 0\n  joysticks[joystick].numBalls\n\n\nproc joyNumHats*(joystick: int): int {.inline.} =\n  if not joyIsOpened(joystick):\n    return 0\n  joysticks[joystick].numHats\n\n\nproc joyDown*(joystick: int, button: int): bool =\n  ##  Check if ``joystick`` ``button`` is down.\n  ##\n  ##  ``joystick``  Joystick ID, or `-1` to check every opened joystick.\n  ##\n  ##  ``button``  Button ID.\n  ##\n  if not joyIsOpened(joystick):\n    return false\n  if joystick >= 0:\n    if button < joysticks[joystick].numButtons:\n      return joysticks[joystick].joy.joystickGetButton(button) > 0\n    else:\n      return false\n  else:\n    for j in joysticks.opened:\n      if button < j.numButtons:\n        if j.joy.joystickGetButton(button) > 0:\n          return true\n    return false\n\n\nproc joyPressed*(joystick: int, button: int): bool =\n  ##  Check if ``joystick`` ``button`` was just pressed.\n  ##\n  ##  ``joystick``  Joystick ID, or `-1` to check every opened joystick.\n  ##\n  ##  ``button``  Joystick button ID.\n  ##\n  if not joyIsOpened(joystick):\n    return false\n  if joystick >= 0:\n    if button < joysticks[joystick].numButtons:\n      return button in joysticks[joystick].pressed\n    else:\n      return false\n  else:\n    for j in joysticks.opened:\n      if button < j.numButtons:\n        if j.pressed[button] > 0:\n          return true\n    return false\n\n\nproc joyReleased*(joystick: int, button: int): bool =\n  ##  Check if ``joystick`` ``button`` was just released.\n  ##\n  ##  ``joystick``  Joystick ID, or `-1` to check every opened joystick.\n  ##\n  ##  ``button``  Joystick button ID.\n  ##\n  if not joyIsOpened(joystick):\n    return false\n  if joystick >= 0:\n    if button < joysticks[joystick].numButtons:\n      return button in joysticks[joystick].released\n    else:\n      return false\n  else:\n    for j in joysticks.opened:\n      if button < j.numButtons:\n        if j.released[button] > 0:\n          return true\n    return false\n\n\nproc joyAxis*(joystick: int, axis: int): JoyAxis =\n  ##  Get ``joystick`` ``axis`` current position.\n  ##\n  ##  ``joystick``  Joystick ID.\n  ##\n  ##  ``axis``  Joystick axis ID.\n  ##\n  if joystick < 0:\n    return 0\n  if not joyIsOpened(joystick):\n    return 0\n  let j = joysticks[joystick]\n  if axis >= j.numAxes:\n    return 0\n  return joystickGetAxis(j.joy, axis)\n\n\nproc joyBall*(joystick: int, ball: int): JoyBall =\n  ##  Get ``joystick`` ``ball`` axis change since the last poll.\n  ##\n  ##  ``joystick``  Joystick ID.\n  ##\n  ##  ``ball``  Joystick ball ID.\n  ##\n  if joystick < 0:\n    return (0, 0)\n  if not joyIsOpened(joystick):\n    return (0, 0)\n  let j = joysticks[joystick]\n  if ball >= j.numBalls:\n    return (0, 0)\n  var dx, dy: cint\n  if joystickGetBall(j.joy, ball, addr(dx), addr(dy)) != 0:\n    return (0, 0)\n  return (dx.int, dy.int)\n\n\nproc joyHat*(joystick: int, hat: int): JoyHat =\n  ##  Get ``joystick`` ``hat`` current position.\n  ##\n  ##  ``joystick``  Joystick ID.\n  ##\n  ##  ``hat`` Joystick hat ID.\n  ##\n  if joystick < 0:\n    return HatCentered\n  if not joyIsOpened(joystick):\n    return HatCentered\n  let j = joysticks[joystick]\n  if hat >= j.numHats:\n    return HatCentered\n  return joystickGetHat(j.joy, hat)\n\n\n#===============#\n# General Input #\n#===============#\n\nimport\n  tables\n\n\nexport\n  tables\n\n\ntype\n  GeneralInputKeyboard* = object\n    key*: Scancode\n\n  GeneralInputDirection* = enum dirX, dirY\n\n  GeneralInputMouseKind* = enum mButton, mMove\n  GeneralInputMouse* = object\n    case kind*: GeneralInputMouseKind\n    of mButton: button*: MouseButton\n    of mMove: direction*: GeneralInputDirection\n\n  GeneralInputJoystickKind* = enum jButton, jAxis, jBall, jHat\n  GeneralInputJoystick* = object\n    guid*: JoystickGUID\n    case kind*: GeneralInputJoystickKind\n    of jButton: button*: int\n    of jAxis: axis*: int\n    of jBall:\n      ball*: int\n      ballDirection*: GeneralInputDirection\n    of jHat:\n      hat*: int\n      hatPosition*: HatPosition\n\n  GeneralInputKind* = enum giKeyboard, giMouse, giJoystick\n  GeneralInput* = object\n    case kind*: GeneralInputKind\n    of giKeyboard:\n      keyboard*: GeneralInputKeyboard\n    of giMouse:\n      mouse*: GeneralInputMouse\n    of giJoystick:\n      joystick*: GeneralInputJoystick\n\n  InputMap* = OrderedTableRef[string, GeneralInput]\n\n\nproc newInputMap*(): InputMap =\n  new result\n  result[] = initOrderedTable[string, GeneralInput]()\n\n\nproc addKey*(map: InputMap, name: string,\n             key: Scancode) {.inline.} =\n  map[name] = GeneralInput(kind: giKeyboard,\n    keyboard: GeneralInputKeyboard(\n      key: key))\n\n\nproc addMouseButton*(map: InputMap, name: string,\n                     button: MouseButton) {.inline.} =\n  map[name] = GeneralInput(kind: giMouse,\n    mouse: GeneralInputMouse(\n      kind: mButton, button: button))\n\n\nproc addMouseMove*(map: InputMap, name: string,\n                   direction: GeneralInputDirection) {.inline.} =\n  map[name] = GeneralInput(kind: giMouse,\n    mouse: GeneralInputMouse(\n      kind: mMove, direction: direction))\n\n\nproc addJoyButton*(map: InputMap, name: string, guid: JoystickGUID,\n                   button: int) {.inline.} =\n  map[name] = GeneralInput(kind: giJoystick,\n    joystick: GeneralInputJoystick(\n      guid: guid, kind: jButton, button: button))\n\n\nproc addJoyAxis*(map: InputMap, name: string, guid: JoystickGUID,\n                 axis: int) {.inline.} =\n  map[name] = GeneralInput(kind: giJoystick,\n    joystick: GeneralInputJoystick(\n      guid: guid, kind: jAxis, axis: axis))\n\n\nproc addJoyBall*(map: InputMap, name: string, guid: JoystickGUID,\n                 ball: int, ballDirection: GeneralInputDirection) {.inline.} =\n  map[name] = GeneralInput(kind: giJoystick,\n    joystick: GeneralInputJoystick(\n      guid: guid, kind: jBall, ball: ball, ballDirection: ballDirection))\n\n\nproc addJoyHat*(map: InputMap, name: string, guid: JoystickGUID,\n                hat: int, hatPosition: HatPosition) {.inline.} =\n  map[name] = GeneralInput(kind: giJoystick,\n    joystick: GeneralInputJoystick(\n      guid: guid, kind: jHat, hat: hat, hatPosition: hatPosition))\n\n\nconst GISep = ' '\ntemplate quoted(s: string): string = \"\\\"\" & s & \"\\\"\"\nproc `$`*(gi: GeneralInput): string =\n  return case gi.kind:\n    of giKeyboard:\n      \"KEY\" & GISep & toUpperAscii($getScancodeName(gi.keyboard.key)).quoted\n    of giMouse:\n      case gi.mouse.kind:\n      of mButton: \"MBTN\" & GISep & toUpperAscii($gi.mouse.button)\n      of mMove: \"MMOVE\" & GISep & (\n        case gi.mouse.direction:\n        of dirX: \"X\"\n        of dirY: \"Y\")\n    of giJoystick:\n      let id = gi.joystick.guid.getId()\n      \"JOY\" & GISep & $id & GISep & (case gi.joystick.kind:\n        of jButton: \"BTN\" & GISep & $gi.joystick.button\n        of jAxis: \"AXIS\" & GISep & $gi.joystick.axis\n        of jBall: \"BALL\" & GISep & $gi.joystick.ball & GISep & (\n          case gi.joystick.ballDirection:\n          of dirX: \"X\"\n          of dirY: \"Y\")\n        of jHat: \"HAT\" & GISep & $gi.joystick.hat & GISep & (\n          case gi.joystick.hatPosition:\n          of HatCentered: \"C\"\n          of HatUp: \"U\"\n          of HatRight: \"R\"\n          of HatRightUp: \"RU\"\n          of HatDown: \"D\"\n          of HatRightDown: \"RD\"\n          of HatLeft: \"L\"\n          of HatLeftUp: \"LU\"\n          of HatLeftDown: \"LD\"))\n\n\nproc load*(map: InputMap, filename: string): bool =\n  result = true\n  let csv = loadCSV[string](filename,\n                            proc(input: string): string = input,\n                            GISep)\n  if csv.len < 1:\n    return false\n\n  var\n    count = 0\n    ids: seq[int] = @[]\n    guids: seq[JoystickGUID] = @[]\n\n  for line in csv:\n    if line.len < 3:\n      continue\n    if line[0] == \"JOY\": # joystick GUID definition\n      if line.len < 4: continue\n      if line[2] != \"GUID\": continue\n      let id = (try: line[1].parseInt except: -1)\n      if id < 0: continue\n      let guid = joystickGetGUIDFromString(line[3])\n      ids.add(id)\n      guids.add(guid)\n      continue\n\n    let name = line[0]\n    case line[1]:\n    of \"KEY\":\n      let code = getScancodeFromName(line[2])\n      if code == ScancodeUnknown: continue\n      map.addKey(name, code)\n\n    of \"MBTN\":\n      case line[2]:\n      of \"LEFT\": map.addMouseButton(name, MouseButton.left)\n      of \"MIDDLE\": map.addMouseButton(name, MouseButton.middle)\n      of \"RIGHT\": map.addMouseButton(name, MouseButton.right)\n      of \"X1\": map.addMouseButton(name, MouseButton.x1)\n      of \"X2\": map.addMouseButton(name, MouseButton.x2)\n      else: continue\n\n    of \"MMOVE\":\n      case line[2]:\n      of \"X\": map.addMouseMove(name, dirX)\n      of \"Y\": map.addMouseMove(name, dirY)\n      else: continue\n\n    of \"JOY\":\n      if line.len < 5: continue\n      let id = (try: line[2].parseInt except: -1)\n      if id < 0: continue\n      let i = ids.find(id)\n      if i < 0: continue\n      let guid = guids[i]\n      let value = (try: line[4].parseInt except: -1)\n      if value < 0: continue\n      case line[3]:\n      of \"BTN\": map.addJoyButton(name, guid, value)\n      of \"AXIS\": map.addJoyAxis(name, guid, value)\n      of \"BALL\":\n        if line.len < 6: continue\n        case line[5]:\n        of \"X\": map.addJoyBall(name, guid, value, dirX)\n        of \"Y\": map.addJoyBall(name, guid, value, dirY)\n        else: continue\n      of \"HAT\":\n        if line.len < 6: continue\n        case line[5]:\n        of \"C\":   map.addJoyHat(name, guid, value, HatCentered)\n        of \"U\":   map.addJoyHat(name, guid, value, HatUp)\n        of \"R\":   map.addJoyHat(name, guid, value, HatRight)\n        of \"RU\":  map.addJoyHat(name, guid, value, HatRightUp)\n        of \"D\":   map.addJoyHat(name, guid, value, HatDown)\n        of \"RD\":  map.addJoyHat(name, guid, value, HatRightDown)\n        of \"L\":   map.addJoyHat(name, guid, value, HatLeft)\n        of \"LU\":  map.addJoyHat(name, guid, value, HatLeftUp)\n        of \"LD\":  map.addJoyHat(name, guid, value, HatLeftDown)\n        else: continue\n      else: continue\n    else:\n      continue\n\n    inc count\n\n  if count < 1:\n    return false\n\n\nproc save*(map: InputMap, filename: string): bool =\n  result = true\n  var f: File\n  if not f.open(filename, fmWrite):\n    return false\n  var guids: seq[JoystickGUID] = @[]\n  for pair in map.pairs:\n    if pair[1].kind == giJoystick:\n      if pair[1].joystick.guid notin guids:\n        f.write(\"JOY\" & GISep)\n        f.write($pair[1].joystick.guid.getId() & GISep)\n        f.write(\"GUID\" & GISep)\n        var s = alloc0(33 * sizeof(cchar))\n        pair[1].joystick.guid.joystickGetGUIDString(cast[cstring](s), 33)\n        f.write($cast[cstring](s) & \"\\n\")\n        s.dealloc()\n        guids.add(pair[1].joystick.guid)\n    f.write(pair[0].quoted & GISep)\n    f.write($pair[1] & \"\\n\")\n  f.close()\n\n\nproc down*(gi: GeneralInput): bool =\n  return case gi.kind:\n    of giKeyboard: gi.keyboard.key.down()\n    of giMouse:\n      case gi.mouse.kind:\n      of mButton: gi.mouse.button.down()\n      else: false\n    of giJoystick:\n      let id = gi.joystick.guid.getId()\n      if id < 0: false  # no such joystick opened\n      else:\n        case gi.joystick.kind:\n        of jButton:\n          joyDown(id, gi.joystick.button)\n        of jHat:\n          gi.joystick.hatPosition == joyHat(id, gi.joystick.hat)\n        else: false\n\n\nproc pressed*(gi: GeneralInput): bool =\n  return case gi.kind:\n    of giKeyboard: gi.keyboard.key.pressed()\n    of giMouse:\n      case gi.mouse.kind:\n      of mButton: gi.mouse.button.pressed()\n      else: false\n    of giJoystick:\n      let id = gi.joystick.guid.getId()\n      if id < 0: false  # no such joystick opened\n      else:\n        case gi.joystick.kind:\n        of jButton:\n          joyPressed(id, gi.joystick.button)\n        of jHat:\n          gi.joystick.hatPosition == joyHat(id, gi.joystick.hat)\n        else: false\n\n\nproc released*(gi: GeneralInput): bool =\n  return case gi.kind:\n    of giKeyboard: gi.keyboard.key.released()\n    of giMouse:\n      case gi.mouse.kind:\n      of mButton: gi.mouse.button.released()\n      else: false\n    of giJoystick:\n      let id = gi.joystick.guid.getId()\n      if id < 0: false  # no such joystick opened\n      else:\n        case gi.joystick.kind:\n        of jButton:\n          joyReleased(id, gi.joystick.button)\n        else: false\n\n\nproc movement*(gi: GeneralInput): int =\n  return case gi.kind:\n    of giMouse:\n      case gi.mouse.kind:\n      of mMove:\n        case gi.mouse.direction:\n        of dirX: mouse.rel.x.int\n        of dirY: mouse.rel.y.int\n      else: 0\n    of giJoystick:\n      let id = gi.joystick.guid.getId()\n      if id < 0: 0  # no such joystick opened\n      else:\n        case gi.joystick.kind:\n        of jAxis: joyAxis(id, gi.joystick.axis).int\n        of jBall:\n          case gi.joystick.ballDirection:\n          of dirX: joyBall(id, gi.joystick.ball).x\n          of dirY: joyBall(id, gi.joystick.ball).y\n        else: 0\n    else: 0\n\n"
  },
  {
    "path": "nimgame2/mosaic.nim",
    "content": "# nimgame2/mosaic.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_image as img,\n  settings, types\n\n\ntype\n  MosaicPattern* = seq[seq[int]]\n\n  Mosaic* = ref object of RootObj\n    # Private\n    fSurface: Surface   ##  Source surface\n    fDim: Dim           ##  Dimensions of the surface\n    # Public\n    tileDim*, offset*: Dim ## \\\n      ##  Dimensions of a single mosaic tile, and offset from the edge.\n\n\n#========#\n# Mosaic #\n#========#\n\nproc free*(mosaic: Mosaic) =\n  if not (mosaic.fSurface == nil):\n    mosaic.fSurface.freeSurface()\n  mosaic.fDim = (0, 0)\n  mosaic.tileDim = (0, 0)\n  mosaic.offset = (0, 0)\n\n\nproc init*(mosaic: Mosaic) =\n  mosaic.free()\n  mosaic.fSurface = nil\n  mosaic.fDim = (0, 0)\n  mosaic.tileDim = (0, 0)\n  mosaic.offset = (0, 0)\n\n\ntemplate afterLoad(mosaic: Mosaic, tileDIm: Dim, offset: Dim = (0, 0)) =\n  mosaic.fDim = (mosaic.fSurface.w.int, mosaic.fSurface.h.int)\n  mosaic.tileDim = tileDim\n  mosaic.offset = offset\n\n\nproc load*(mosaic: Mosaic, file: string,\n           tileDim: Dim, offset: Dim = (0, 0)): bool =\n  ##  Load ``mosaic`` graphic source from a ``file``.\n  ##\n  ##  ``tileDim`` dimensions of a single mosaic tile.\n  ##\n  ##  ``offset`` offset from the edge.\n  ##\n  ##  ``Return`` `true` on success, or `false` otherwise.\n  ##\n  result = true\n  mosaic.free()\n  # load image\n  mosaic.fSurface = img.load(file)\n  if mosaic.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load mosaic %s: %s\",\n                    file, img.getError())\n    return false\n  # after-load\n  afterLoad(mosaic, tileDim, offset)\n\n\nproc load*(mosaic: Mosaic, src: ptr RWops,\n           tileDim: Dim, offset: Dim = (0, 0),\n           freeSrc: bool = true): bool =\n  result = true\n  mosaic.free()\n  # load image\n  mosaic.fSurface = img.loadRW(src, freeSrc)\n  if mosaic.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load mosaic RW: %s\",\n                    img.getError())\n    return false\n  # after-load\n  afterLoad(mosaic, tileDim, offset)\n\n\nproc newMosaic*(): Mosaic =\n  new result, free\n  result.init()\n\n\nproc newMosaic*(file: string,\n                tileDim: Dim, offset: Dim = (0, 0)): Mosaic =\n  ##  Create a new Mosaic and load tileset from a ``file``.\n  ##\n  ##  ``tileDim`` the size of a single tile.\n  ##\n  ##  ``offset``  offset from the edge of the tileset.\n  ##\n  result = newMosaic()\n  discard result.load(file, tileDim, offset)\n\n\nproc newMosaic*(src: ptr RWops,\n                tileDim: Dim, offset: Dim = (0, 0),\n                freeSrc: bool = true): Mosaic =\n  result = newMosaic()\n  discard result.load(src, tileDim, offset, freeSrc)\n\n\nproc dim*(mosaic: Mosaic): Dim {.inline.} =\n  mosaic.fDim\n\n\nproc renderSurface*(mosaic: Mosaic, pattern: MosaicPattern): Surface =\n  ##  ``Return`` a new ``Surface`` created with ``mosaic`` tiles\n  ##  by a given ``pattern``.\n  ##\n  if mosaic.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't render nil mosaic surface\")\n    return nil\n  # calculate tiles positioning\n  let tileNum: Dim = (mosaic.fDim - mosaic.offset) / mosaic.tileDim\n  # get pattern dimensions (in tiles)\n  var patternDim: Dim = (0, 0)\n  for line in pattern:\n    inc patternDim.h\n    if line.len > patternDim.w:\n      patternDim.w = line.len\n\n  if (patternDim.w < 1) or (patternDim.h < 1):\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't create a mosaic surface of %dx%d size.\",\n                    patternDim.w, patternDim.h)\n    return nil\n  # create surface\n  let\n    dim = mosaic.tileDim * patternDim\n    surface = createRGBSurfaceWithFormat(\n      0, dim.w, dim.h,\n      mosaic.fSurface.format.BitsPerPixel.cint,\n      mosaic.fSurface.format.format)\n  if surface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't create mosaic surface: %s\",\n                    sdl.getError())\n    return nil\n\n  # blit\n  var\n    srcRect = Rect(x: 0, y: 0, w: mosaic.tileDim.w, h: mosaic.tileDim.h)\n    dstRect = Rect(x: 0, y: 0, w: mosaic.tileDim.w, h: mosaic.tileDim.h)\n  for y in 0..pattern.high:\n    for x in 0..pattern[y].high:\n      let\n        idx = pattern[y][x]\n        num: Dim = (w: idx mod tileNum.w,\n                    h: idx div tileNum.w)\n        pos: Dim = mosaic.offset + mosaic.tileDim * num\n      srcRect.x = pos.w\n      srcRect.y = pos.h\n      dstRect.x = x * mosaic.tileDim.w\n      dstRect.y = y * mosaic.tileDim.h\n      discard mosaic.fSurface.blitSurface(addr(srcRect), surface, addr(dstRect))\n  return surface\n\n\nproc render*(mosaic: Mosaic, pattern: MosaicPattern): Texture =\n  ##  ``Return`` a new ``Texture`` created with ``mosaic`` tiles\n  ##  by a given ``pattern``.\n  ##\n  let surface = mosaic.renderSurface(pattern)\n  if surface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't render mosaic pattern: %s\",\n                    sdl.getError())\n    return nil\n  result = renderer.createTextureFromSurface(surface)\n  surface.freeSurface()\n\n\n#==========#\n# Patterns #\n#==========#\n\ntype\n  RepeatPattern* = seq[tuple[rows, cols: int, data: seq[int]]]  ##  \\\n    ##  RepeatPattern meaning:\n    ##\n    ##  .. code-block:: nim\n    ##    RepeatPattern = seq[tuple[rows, cols: int, data: seq[int]]]\n    ##\n    ##  * ``rows`` repeat this row ``rows`` times\n    ##\n    ##  * ``cols`` repeat this ``data`` sequence ``cols`` times,\n    ##  gradually increasing the index.\n    ##\n    ##  * ``data`` for each ``item`` repeat increasing index ``item`` times.\n    ##\n    ##  ``Example:``\n    ##\n    ##  .. code-block:: nim\n    ##    patternRepeat(@[\n    ##      (1, 2, @[1, 2, 1]),\n    ##      (2, 2, @[1, 2, 1]),\n    ##      (1, 2, @[1, 2, 1]),\n    ##    ])\n    ##\n    ##  will return:\n    ##\n    ##  .. code-block:: nim\n    ##    @[\n    ##      @[0, 1, 1, 2, 3, 4, 4, 5],\n    ##      @[6, 7, 7, 8, 9, 10, 10, 11],\n    ##      @[6, 7, 7, 8, 9, 10, 10, 11],\n    ##      @[12, 13, 13, 14, 15, 16, 16, 17]\n    ##    ]\n    ##\n\n\nproc patternRepeat*(repeat: RepeatPattern): MosaicPattern =\n  ##  Generate a repeating pattern. Useful for generating GUI elements\n  ##  of different sizes with ``Mosaic``.\n  ##\n  ##  ``See also:`` ``RepeatPattern`` type.\n  ##\n  result = @[]\n  var idx = 0\n  for line in repeat:\n    var rowData: seq[int] = @[]\n    # repeat item times\n    for col in 0..<line.cols:\n      for item in line.data:\n        for itemCount in 0..<item:\n          rowData.add idx\n        inc idx\n    for rowCount in 0..<line.rows:\n      result.add rowData\n\n\nproc patternStretchBorder*(w, h: int, nx = 2, ny = 3): MosaicPattern =\n  ##  Generate a repeating pattern by repeating border items of 3x3 matrix\n  ##  (used for GUI buttons, etc.)\n  ##\n  ##  `w`, `h` strethed parts repeat count.\n  ##\n  ##  `nx`, `ny`  number of elements in the matrix.\n  ##\n  var pat: RepeatPattern = @[]\n  for i in 0..<ny:\n    pat.add((1, nx, @[1, w, 1]))\n    pat.add((h, nx, @[1, w, 1]))\n    pat.add((1, nx, @[1, w, 1]))\n  return patternRepeat(pat)\n\n"
  },
  {
    "path": "nimgame2/nimgame.nim",
    "content": "# nimgame2/nimgame.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  math, parseutils, random,\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_image as img,\n  sdl2_nim/sdl_ttf as ttf,\n  sdl2_nim/sdl_mixer as mix,\n  audio, draw, input, entity, scene, settings, types, utils\n\n\ntype\n  Game* = ref object\n    # Private\n    fWindow: sdl.Window\n    fSize: Dim\n    fIcon: sdl.Surface\n    # Public\n    fScene: Scene   ##  Current scene\n\n\nvar\n  game*: Game ##  Global game variable\n\n\n#======#\n# Game #\n#======#\n\nproc free*(game: Game) =\n  renderer.destroyRenderer()\n  game.fWindow.destroyWindow()\n  game.fIcon.freeSurface()\n  while mix.init(0) != 0: mix.quit()\n  let mixNumOpened = mix.querySpec(nil, nil, nil)\n  for i in 0..<mixNumOpened: mix.closeAudio()\n  ttf.quit()\n  img.quit()\n  sdl.quit()\n\n\nproc init*(\n    game: Game,\n    w, h: int,\n    title = \"Nimgame2\",\n    bgColor = sdl.Color(r: 0, g: 0, b: 0, a: 255),\n    windowFlags: uint32 = 0,\n    rendererFlags: uint32 = sdl.RendererAccelerated or sdl.RendererPresentVsync,\n    scaleQuality: range[0..2] = 0,\n    integerScale: bool = false,\n    iconSurface: sdl.Surface = nil,\n    icon: string = \"\",\n    imageFlags: cint = img.InitPNG,\n    mixerFlags: cint = mix.InitOGG,\n    mixerChannels: int = 32\n    ): bool =\n  ##  Init game.\n  ##\n  ##  ``w``, ``h``      window dimensions\n  ##\n  ##  ``title``         window title\n  ##\n  ##  ``bgColor``       window background color\n  ##\n  ##  ``windowFlags``   sdl window flags\n  ##\n  ##  ``rendererFlags`` sdl renderer flags\n  ##\n  ##  ``scaleQuality``  scale quality (pixel sampling)\n  ##\n  ##  ``integerScale``  force integer scale only\n  ##\n  ##  ``iconSurface``   window icon surface (has priority over ``icon``)\n  ##\n  ##  ``icon``          window icon file name\n  ##\n  ##  ``imageFlags``    sdl_image flags\n  ##\n  ##  ``mixerFlags``    sdl_mixer flags\n  ##\n  ##  ``mixerChannels`` Number of channels to allocate for mixing.\n  ##\n  ##  ``Return`` `true` on success, `false` otherwise.\n  ##\n  game.fSize.w = w\n  game.fSize.h = h\n  background = bgColor\n\n  # Default options\n  gameRunning = false\n  gamePaused = false\n  showInfo = false\n  fpsLimit = 0\n  updateInterval = 10\n  colliderOutline = false\n  colliderOutlineColor = sdl.Color(r: 0, g: 255, b: 0, a: 255)\n\n  # Init SDL\n  if sdl.init(sdl.InitEverything) != 0:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't initialize SDL: %s\", sdl.getError())\n    return false\n\n  # Init SDL_image\n  if img.init(imageFlags) == 0:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't initialize SDL_image: %s\", img.getError())\n    return false\n\n  # Init SDL_ttf\n  if ttf.init() != 0:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't initialize SDL_ttf: %s\", ttf.getError())\n    return false\n\n  # Open mixer\n  if mix.openAudio(mix.DefaultFrequency,\n                   mix.DefaultFormat,\n                   mix.DefaultChannels,\n                   2048) != 0:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't initialize SDL_mixer: %s\",\n      mix.getError())\n    return false\n\n  # Init SDL_mixer\n  if mix.init(mixerFlags) == 0:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't initialize SDL_mixer flags: %s\",\n      mix.getError())\n    return false\n\n  # Allocate mixing channels\n  discard allocateChannels(mixerChannels)\n\n  # Create window\n  game.fWindow = sdl.createWindow(\n    title,\n    sdl.WindowPosUndefined, sdl.WindowPosUndefined,\n    w, h,\n    windowFlags)\n  if game.fWindow == nil:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't create window: %s\", sdl.getError())\n    return false\n\n  if not (iconSurface == nil):\n    game.fIcon = iconSurface\n    game.fWindow.setWindowIcon(game.fIcon)\n  elif icon.len > 0:\n    game.fIcon = loadSurface(icon)\n    game.fWindow.setWindowIcon(game.fIcon)\n\n  # Create renderer\n  renderer = sdl.createRenderer(game.fWindow, -1, rendererFlags)\n  if renderer == nil:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't create renderer: %s\", sdl.getError())\n    return false\n\n  # Set renderer logical size\n  if renderer.renderSetLogicalSize(w, h) != 0:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't set logical size of the game renderer: %s\",\n        sdl.getError())\n\n  # Set renderer scale quality\n  discard sdl.setHint(sdl.HintRenderScaleQuality, $scaleQuality)\n  discard renderer.renderSetIntegerScale(integerScale)\n\n  # Initialize the random number generator\n  randomize()\n\n  return true\n\n\nproc newGame*(): Game =\n  new result, free\n\n\nproc title*(game: Game): string {.inline.} =\n  $game.fWindow.getWindowTitle()\n\n\nproc `title=`*(game: Game, title: string) {.inline.} =\n  game.fWindow.setWindowTitle(title)\n\n\nproc pos*(game: Game): Coord =\n  var x, y: cint\n  game.fWindow.getWindowPosition(addr(x), addr(y))\n  return (x.float, y.float)\n\n\nproc `pos=`*(game: Game, pos: Coord) =\n  if pos != game.pos:\n    game.fWindow.setWindowPosition(pos.x.cint, pos.y.cint)\n\n\nproc centrify*(game: Game, centerX = true, centerY = true) =\n  let\n    x: cint = if centerX: sdl.WindowPosCentered else: game.pos.x.cint\n    y: cint = if centerY: sdl.WindowPosCentered else: game.pos.y.cint\n  game.fWindow.setWindowPosition(x, y)\n  # check if the screen is smaller than a window\n  var\n    pos = game.pos\n    repos = false\n  if pos.x < 0:\n    pos.x = 0\n    repos = true\n  if pos.y < 0:\n    pos.y = 0\n    repos = true\n  if repos:\n    game.pos = pos\n    game.fWindow.maximizeWindow()\n\n\nproc windowSize*(game: Game): Dim =\n  ##  ``Return`` game window dimensions.\n  ##\n  var w, h: cint\n  game.fWindow.getWindowSize(addr(w), addr(h))\n  return (w.int, h.int)\n\n\nproc `windowSize=`*(game: Game, dim: Dim) {.inline.} =\n  if dim != game.windowSize:\n    game.fWindow.setWindowSize(dim.w.cint, dim.h.cint)\n\n\nproc minSize*(game: Game): Dim =\n  var w, h: cint\n  game.fWindow.getWindowMinimumSize(addr(w), addr(h))\n  return (w.int, h.int)\n\n\nproc `minSize=`*(game: Game, dim: Dim) =\n  if dim != game.minSize:\n    let\n      w: cint = if dim.w > 0: dim.w else: 1\n      h: cint = if dim.h > 0: dim.h else: 1\n    game.fWindow.setWindowMinimumSize(w, h)\n\n\nproc maxSize*(game: Game): Dim =\n  var w, h: cint\n  game.fWindow.getWindowMaximumSize(addr(w), addr(h))\n  return (w.int, h.int)\n\n\nproc `maxSize=`*(game: Game, dim: Dim) =\n  if dim != game.maxSize:\n    let\n      w: cint = if dim.w > 0: dim.w else: 1\n      h: cint = if dim.h > 0: dim.h else: 1\n    game.fWindow.setWindowMaximumSize(w, h)\n\n\nproc setBordered*(game: Game, enabled: bool) {.inline.} =\n  game.fWindow.setWindowBordered(enabled)\n\n\nproc setResizable*(game: Game, enabled: bool) {.inline.} =\n  game.fWindow.setWindowResizable(enabled)\n\n\nproc show*(game: Game) {.inline.} =\n  game.fWindow.showWindow()\n\n\nproc hide*(game: Game) {.inline.} =\n  game.fWindow.hideWindow()\n\n\nproc focus*(game: Game) {.inline.} =\n  game.fWindow.raiseWindow()\n\n\nproc maximize*(game: Game) {.inline.} =\n  game.fWindow.maximizeWindow()\n\n\nproc minimize*(game: Game) {.inline.} =\n  game.fWindow.minimizeWindow()\n\n\nproc restore*(game: Game) {.inline.} =\n  game.fWindow.restoreWindow()\n\n\nproc size*(game: Game): Dim {.inline.} =\n  ##  Get logical size of the game renderer.\n  ##\n  return game.fSize\n\n\nproc scale*(game: Game): Coord {.inline.} =\n  ##  ``Return`` the scale of the game renderer.\n  ##\n  var w, h: cfloat\n  renderer.renderGetScale(addr(w), addr(h))\n  return (w.float, h.float)\n\n\nproc icon*(game: Game): Surface {.inline.} =\n  ##  ``Return`` game icon surface.\n  ##\n  return game.fIcon\n\n\nproc `icon=`*(game: Game, icon: string) {.inline.} =\n  ##  Load new game icon from the ``icon`` file name.\n  ##\n  game.fIcon = loadSurface(icon)\n  game.fWindow.setWindowIcon(game.fIcon)\n\n\nproc `icon=`*(game: Game, surface: Surface) {.inline.} =\n  ##  Set new game icon surface.\n  ##\n  game.fIcon = surface\n  game.fWindow.setWindowIcon(game.fIcon)\n\n\nproc scene*(game: Game): Scene {.inline.} =\n  ##  ``Return`` current game scene.\n  ##\n  return game.fScene\n\n\nproc `scene=`*(game: Game, val: Scene) =\n  ##  Set a new game scene.\n  ##\n  if not (game.fScene == nil):\n    game.fScene.hide()\n  game.fScene = val\n  game.fScene.show()\n\n\nproc viewport*(game: Game): Rect =\n  ##  Get current viewport.\n  ##\n  var rect: Rect\n  renderer.renderGetViewport(addr(rect))\n  return rect\n\n\nproc `viewport=`*(game: Game, rect: Rect) =\n  ##  Set current viewport.\n  ##\n  var r: sdl.Rect = rect\n  if renderer.renderSetViewport(addr(r)) != 0:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't set viewport: %s\",\n        sdl.getError())\n\n\nproc resetViewport*(game: Game) =\n  ##  Set default viewport.\n  ##\n  if renderer.renderSetViewport(nil) != 0:\n    sdl.logCritical(\n      sdl.LogCategoryError, \"Can't reset viewport: %s\",\n        sdl.getError())\n\n\n#=====#\n# RUN #\n#=====#\n\nproc run*(game: Game) =\n  ##  Start the game.\n  ##\n  if gameRunning:\n    sdl.logError(sdl.LogCategoryError, \"Already running\")\n    return\n\n  gameRunning = true\n\n  # Init FPS and UPS managers, declare all needed variables\n  var\n    fps = newCounter()\n    ups = newCounter()\n    timePrev, timeCurr: uint64\n    elapsed, lag, msPerFrame, updateCounter: int\n    updateIntervalSec: float\n    event: sdl.Event\n\n  timePrev = sdl.getPerformanceCounter()\n  draw.setFont()\n\n  # Init input devices\n  initKeyboard()\n  initMouse()\n  initJoysticks()\n\n  # Main loop\n  while gameRunning:\n    timeCurr = sdl.getPerformanceCounter()\n    elapsed = timeDiff(timePrev, timeCurr)\n    timePrev = timeCurr\n    lag += elapsed\n    updateIntervalSec = msToSec(updateInterval)\n\n    # Update\n    updateCounter = 0\n    while lag >= updateInterval:\n      if not gamePaused:\n        game.fScene.update(updateIntervalSec)\n        # clear inputs after the first loop\n        initKeyboard()\n        initMouse()\n        initJoysticks()\n      lag -= updateInterval\n      inc(updateCounter)\n\n    # Update playlist\n    if not (playlist == nil):\n      playlist.update()\n\n    # Events handling\n    while sdl.pollEvent(addr(event)) != 0:\n      if event.kind == sdl.Quit:\n        gameRunning = false\n        break\n      else:\n        updateKeyboard(event)\n        updateMouse(event)\n        updateJoysticks(event)\n        game.fScene.event(event)\n\n    # Limit FPS\n    if fpsLimit > 0:\n      msPerFrame = 1000 div fpsLimit\n      if lag < msPerFrame:\n        sdl.delay(uint32(msPerFrame - lag))\n\n    # Clear screen\n    discard renderer.setRenderDrawColor(background)\n    discard renderer.renderClear()\n\n    # Render scene\n    if not (game.fScene == nil):\n      game.fScene.render()\n\n    # Render info\n    if showInfo:\n      # Background\n      discard box((4, 4), (260, 52), 0x000000CC'u32)\n      # Show FPS\n      discard string(\n        (8, 8), $fps.value & \" FPS\", 0xFFFFFFFF'u32)\n      # Show updates per second\n      discard string(\n        (8, 16), $ups.value & \" updates per second\", 0xFFFFFFFF'u32)\n      # Show updates per frame\n      discard string(\n        (8, 24), $updateCounter & \" updates per frame\", 0xFFFFFFFF'u32)\n      # Show entities count\n      discard string(\n        (8, 32), $game.fScene.count & \" entities\", 0xFFFFFFFF'u32)\n      # Show memory usage\n      discard string(\n        (8, 40),\n        $(getOccupiedMem() shr 10) & \" KB used of \" &\n        $(getTotalMem() shr 10) & \" KB total\",\n        0xFFFFFFFF'u32)\n\n    # Update renderer\n    renderer.renderPresent()\n\n    # Increase frame count\n    fps.update()\n    ups.update()\n  # while game.running\n\n  # Free\n  free(game)\n\n"
  },
  {
    "path": "nimgame2/perspectiveimage.nim",
    "content": "# nimgame2/perspectiveimage.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  math,\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_image as img,\n  settings, types\n\n\ntype\n  PerspectiveDirection* = enum pdHor, pdVer\n\n  PerspectiveImage* = ref object of RootObj\n    # Private\n    fDim: Dim\n    fSurface: Surface   ## Source surface\n\n\n#==================#\n# PerspectiveImage #\n#==================#\n\nproc free*(image: PerspectiveImage) =\n  if not (image.fSurface == nil):\n    image.fSurface.freeSurface()\n\n\nproc init*(image: PerspectiveImage) =\n  image.free()\n  image.fSurface = nil\n\n\ntemplate afterLoad(image: PerspectiveImage) =\n  image.fDim = (image.fSurface.w.int, image.fSurface.h.int)\n\n\nproc load*(image: PerspectiveImage,\n           file: string): bool =\n  ##  Load ``image`` graphic source from a ``file``.\n  ##\n  result = true\n  image.free()\n  # load image\n  image.fSurface = img.load(file)\n  if image.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load perspective image %s: %s\",\n                    file, img.getError())\n    return false\n  # after-load\n  afterLoad(image)\n\n\nproc load*(image: PerspectiveImage,\n           src: ptr RWops, freeSrc: bool = true): bool =\n  ##  Load ``image`` graphic source from a ``src`` ``RWops``.\n  ##\n  result = true\n  image.free()\n  # load image\n  image.fSurface = img.loadRW(src, freeSrc)\n  if image.fSurface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load perspective image RW: %s\",\n                    img.getError())\n    return false\n  # after-load\n  afterLoad(image)\n\n\nproc newPerspectiveImage*(): PerspectiveImage =\n  new result, free\n  result.init()\n\n\nproc newPerspectiveImage*(file: string): PerspectiveImage =\n  ##  Create a new PerspectiveImage and load it from a ``file``.\n  ##\n  result = newPerspectiveImage()\n  discard result.load(file)\n\n\nproc newPerspectiveImage*(\n    src: ptr RWops, freeSrc: bool = true): PerspectiveImage =\n  ##  Create a new PerspectiveImage and load it from a ``src`` ``RWops``.\n  ##\n  result = newPerspectiveImage()\n  discard result.load(src, freeSrc)\n\n\nproc dim*(image: PerspectiveImage): Dim {.inline.} =\n  image.fDim\n\n\nproc render*(image: PerspectiveImage,\n             direction: PerspectiveDirection,\n             sizeFrom, sizeTo: int,\n             sizeNormal: int = 0,\n             shift: float = 0.5): Texture =\n  ##  ``direction`` (`pdHor` or `pdVer`) direction of perspective axis.\n  ##\n  ##  ``sizeFrom``, ``sizeTo`` target scaled size\n  ##  (left and right for the `pdHor`, or top and bottom for the `pdVer`).\n  ##\n  ##  ``sizeNormal`` scaled size of the normal axis.\n  ##\n  ##  ``shift`` perspective shift (0.5 is center symmetry).\n  ##\n  ##  ``Return`` a new ``Texture`` created from the ``image``.\n  ##\n  let\n    sizeFrom =\n      if sizeFrom > 0:\n        sizeFrom\n      else:\n        case direction:\n        of pdHor: image.fDim.h\n        of pdVer: image.fDim.w\n\n    sizeTo =\n      if sizeTo > 0:\n        sizeTo\n      else:\n        case direction:\n        of pdHor: image.fDim.h\n        of pdVer: image.fDim.w\n\n    sizeNormal =\n      if sizeNormal > 0:\n        sizeNormal\n      else:\n        case direction:\n        of pdHor: image.fDim.w\n        of pdVer: image.fDim.h\n\n    maxSize = max(sizeFrom, sizeTo)\n\n    (sw, sh) = case direction:\n      of pdHor: (sizeNormal, maxSize)\n      of pdVer: (maxSize, sizeNormal)\n\n    sizeStep = (sizeFrom - sizeTo) / sizeNormal\n\n    normalStep = case direction:\n      of pdHor: image.fDim.w / sizeNormal\n      of pdVer: image.fDim.h / sizeNormal\n\n    startShift = if sizeFrom > sizeTo: 0\n                 else: cint(float(sizeTo - sizeFrom) * shift)\n\n  # create a temporary surface\n  var surface: Surface = createRGBSurfaceWithFormat(\n    0, sw, sh,\n    image.fSurface.format.BitsPerPixel.cint,\n    image.fSurface.format.format)\n\n  if surface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't create a surface: %s\",\n                    sdl.getError())\n    return nil\n\n  # rect\n  var\n    (srcRect, dstRect) = case direction:\n      of pdHor:\n        (\n          Rect(x: 0, y: 0, w: cint(round(normalStep)), h: image.fDim.h),\n          Rect(x: 0, y: 0, w: 1, h: sizeFrom)\n        )\n      of pdVer:\n        (\n          Rect(x: 0, y: 0, w: image.fDim.w, h: cint(round(normalStep))),\n          Rect(x: 0, y: 0, w: sizeFrom, h: 1)\n        )\n\n  # blit loop\n  for i in 0..<sizeNormal:\n    case direction:\n    of pdHor:\n      srcRect.x = cint(round(i.float * normalStep))\n      dstRect.x = i\n      dstRect.h = sizeFrom - cint(round(sizeStep * i.float))\n      dstRect.y = startShift + cint(round(sizeStep * i.float * shift))\n    of pdVer:\n      srcRect.y = cint(round(i.float * normalStep))\n      dstRect.y = i\n      dstRect.w = sizeFrom - cint(round(sizeStep * i.float))\n      dstRect.x = startShift + cint(round(sizeStep * i.float * shift))\n    # blit\n    discard image.fSurface.blitScaled(addr(srcRect), surface, addr(dstRect))\n\n  # return and free\n  result = renderer.createTextureFromSurface(surface)\n  surface.freeSurface()\n\n"
  },
  {
    "path": "nimgame2/plugin/mpeggraphic.nim",
    "content": "# nimgame2/mpeggraphic.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  sdl2_nim/smpeg,\n  ../graphic, ../texturegraphic, ../settings, ../types\n\n##  ``Note:`` mpg123 dynamic library should be available in the system.\n\ntype\n  MpegVolume* = range[0..100]\n  MpegGraphic* = ref object of TextureGraphic ##  \\\n    ##  See sdl2/mpeg documentation for the details of implementation.\n    # Private\n    fInfo: smpeg.Info\n    fSmpeg: smpeg.Smpeg\n    fFrame: smpeg.Frame\n    fMutex: sdl.Mutex\n    fRect: sdl.Rect\n    fVideo, fAudio, fLoop: bool\n    fVolume: MpegVolume\n    fUpdated: bool\n\n\n#=============#\n# MpegGraphic #\n#=============#\n\nmethod w*(graphic: MpegGraphic): int =\n  graphic.fRect.w\n\n\nmethod h*(graphic: MpegGraphic): int =\n  graphic.fRect.h\n\n\nmethod dim*(graphic: MpegGraphic): Dim =\n  (graphic.fRect.w.int, graphic.fRect.h.int)\n\n\nproc free*(graphic: MpegGraphic) =\n  TextureGraphic(graphic).free()\n  if graphic.fSmpeg != nil:\n    graphic.fSmpeg.delete()\n    graphic.fSmpeg = nil\n  if graphic.fMutex != nil:\n    graphic.fMutex.destroyMutex()\n    graphic.fMutex = nil\n\n\nproc update(data: pointer, frame: Frame) {.cdecl.} =\n  var graphic = cast[MpegGraphic](data)\n  graphic.fFrame = frame\n  graphic.fUpdated = true\n\n\ntemplate afterLoad(graphic: MpegGraphic) =\n  graphic.fMutex = sdl.createMutex()\n  discard graphic.assignTexture(renderer.createTexture(\n    sdl.PixelFormat_YV12, sdl.TextureAccessStreaming,\n    graphic.fInfo.width, graphic.fInfo.height))\n  graphic.fRect = sdl.Rect(\n    x: 0, y: 0, w: graphic.fInfo.width, h: graphic.fInfo.height)\n  graphic.fSmpeg.setDisplay(update, cast[pointer](graphic), graphic.fMutex)\n  graphic.fSmpeg.renderFrame(1)\n  graphic.fVideo = (graphic.fInfo.hasVideo != 0)\n  graphic.fAudio = (graphic.fInfo.hasAudio != 0)\n  graphic.fLoop = false\n  graphic.fVolume = MpegVolume.high\n\n\nproc load*(graphic: MpegGraphic, filename: string): bool =\n  ##  Load MPEG movie file.\n  ##\n  ##  ``Return`` `true` on success, `false` otherwise.\n  ##\n  result = true\n  graphic.free()\n  # load smpeg\n  graphic.fSmpeg = smpeg.new(filename, addr(graphic.fInfo), true)\n  let error = graphic.fSmpeg.error()\n  if error != nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"SMPEG error: %s\",\n                    error)\n    graphic.fSmpeg = nil\n    return false\n  # after-load\n  afterLoad(graphic)\n\n\nproc load*(graphic: MpegGraphic, src: ptr RWops, freeSrc: bool = true): bool =\n  ##  Load MPEG movie file.\n  ##\n  ##  ``Return`` `true` on success, `false` otherwise.\n  ##\n  result = true\n  graphic.free()\n  # load smpeg\n  graphic.fSmpeg = smpeg.newRWops(src, addr(graphic.fInfo), freeSrc, true)\n  let error = graphic.fSmpeg.error()\n  if error != nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"SMPEG error: %s\",\n                    error)\n    graphic.fSmpeg = nil\n    return false\n  # after-load\n  afterLoad(graphic)\n\n\nproc newMpegGraphic*(filename: string): MpegGraphic =\n  new result, free\n  if not result.load(filename):\n    result.free()\n    return nil\n\n\nproc newMpegGraphic*(src: ptr RWops, freeSrc: bool): MpegGraphic =\n  new result, free\n  if not result.load(src, freeSrc):\n    result.free()\n    return nil\n\n\nproc drawMpegGraphic*(graphic: MpegGraphic,\n                      pos: Coord = (0.0, 0.0),\n                      angle: Angle = 0.0,\n                      scale: Scale = 1.0,\n                      center: Coord = (0.0, 0.0),\n                      flip: Flip = Flip.none,\n                      region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  if graphic.fUpdated:\n    discard graphic.fMutex.mutexP() # lock\n    discard sdl.updateTexture(graphic.texture, nil, graphic.fFrame.image,\n                              graphic.fFrame.imageWidth.cint)\n    graphic.fSmpeg.getInfo(addr(graphic.fInfo))\n    graphic.fUpdated = false\n    discard graphic.fMutex.mutexV() # unlock\n  drawTextureGraphic(graphic, pos, angle, scale, center, flip, region)\n\n\nmethod draw*(graphic: MpegGraphic,\n             pos: Coord = (0.0, 0.0),\n             angle: Angle = 0.0,\n             scale: Scale = 1.0,\n             center: Coord = (0.0, 0.0),\n             flip: Flip = Flip.none,\n             region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  drawMpegGraphic(graphic, pos, angle, scale, center, flip, region)\n\n\nproc video*(graphic: MpegGraphic): bool {.inline.} =\n  graphic.fVideo\n\n\nproc `video=`*(graphic: MpegGraphic, on: bool) =\n  if graphic.fInfo.hasVideo != 0:\n    graphic.fSmpeg.enableVideo(on)\n    graphic.fVideo = on\n\n\nproc audio*(graphic: MpegGraphic): bool {.inline.} =\n  graphic.fAudio\n\n\nproc `audio=`*(graphic: MpegGraphic, on: bool) =\n  if graphic.fInfo.hasAudio != 0:\n    graphic.fSmpeg.enableAudio(on)\n    graphic.fAudio = on\n\n\nproc playing*(graphic: MpegGraphic): bool =\n  let status = graphic.fSmpeg.status()\n  return status == PLAYING\n\n\nproc volume*(graphic: MpegGraphic): MpegVolume {.inline.} =\n  graphic.fVolume\n\n\nproc `volume=`*(graphic: MpegGraphic, volume: MpegVolume) =\n  graphic.fSmpeg.setVolume(volume)\n  graphic.fVolume = volume\n\n\nproc loop*(graphic: MpegGraphic): bool {.inline.} =\n  graphic.fLoop\n\n\nproc `loop=`*(graphic: MpegGraphic, on: bool) {.inline.} =\n  graphic.fSmpeg.loop(on)\n  graphic.fLoop = on\n\n\nproc play*(graphic: MpegGraphic) {.inline.} =\n  graphic.fSmpeg.play()\n\n\nproc pause*(graphic: MpegGraphic) {.inline.} =\n  graphic.fSmpeg.pause()\n\n\nproc stop*(graphic: MpegGraphic) {.inline.} =\n  graphic.fSmpeg.stop()\n\n\nproc rewind*(graphic: MpegGraphic) {.inline.} =\n  graphic.fSmpeg.rewind()\n\n\nproc seek*(graphic: MpegGraphic, bytes: int) =\n  graphic.fSmpeg.seek(bytes)\n\n\nproc skip*(graphic: MpegGraphic, seconds: float) =\n  if (graphic.fInfo.currentTime + seconds) <= graphic.fInfo.totalTime:\n    graphic.fSmpeg.skip(seconds)\n\n\nproc currentFrame*(graphic: MpegGraphic): int {.inline.} =\n  graphic.fInfo.currentFrame\n\n\nproc currentTime*(graphic: MpegGraphic): float {.inline.} =\n  graphic.fInfo.currentTime\n\n\nproc totalTime*(graphic: MpegGraphic): float {.inline.} =\n  graphic.fInfo.totalTime\n\n\nproc renderFrame*(graphic: MpegGraphic, frame: int) =\n  if frame < 0:\n    graphic.fSmpeg.renderFinal()\n  else:\n    graphic.fSmpeg.renderFrame(frame)\n\n"
  },
  {
    "path": "nimgame2/plugin/tar.nim",
    "content": "#\n#  dxTarRead - 0.91 - public domain\n#  no warrenty implied; use at your own risk.\n#  authored from 2017 by Dmitry Hrabrov a.k.a. DeXPeriX\n#  http://dexperix.net\n#\n# ORIGINAL CODE LICENSE:\n#     This software is dual-licensed to the public domain and under the following\n#     license: you are granted a perpetual, irrevocable license to copy, modify,\n#     publish and distribute this file as you see fit.\n#\n\n##  Simple utility for reading TAR archives and loading their contents into\n##  ``sdl.RWops``. Based on ``dxTarRead`` by Dmitry Hrabrov a.k.a. DeXPeriX.\n##\n##  Original source link:\n##  https://github.com/DeXP/dxTarRead/blob/master/dxTarRead.c\n##\n\n# PRIVATE\n\ntemplate `+`[T](p: ptr T, off: int): ptr T =\n  cast[ptr type(p[])](cast[ByteAddress](p) +% off * sizeof(p[]))\n\ntemplate `[]`[T](p: ptr T, off: int): T =\n  (p + off)[]\n\ntemplate `[]=`[T](p: ptr T, off: int, val: T) =\n  (p + off)[] = val\n\nconst\n  NameOffset  = 0\n  SizeOffset  = 124\n  MagicOffset = 257\n  BlockSize   = 512\n  #NameSize    = 100\n  SzSize      = 12\n  MagicSize   = 5\n  Magic       = cast[ptr uint8](\"ustar\") # Modern GNU tar's magic const\n  Char0       = uint8('0')\n  Char9       = uint8('9')\n\n# OLD VERSION\n#[\nproc dxTarRead(data: ptr uint8, dataSize: int,\n               fileName: string, fileSize: var int): ptr uint8 =\n  fileSize = 0 #  will be zero if TAR wrong or there is no such file\n  var\n    size, mul, p, newOffset: int\n    found = false\n\n  while true: # \"Load\" data from tar - just point to passed memory\n    var name, sz: ptr uint8\n    name = data + (NameOffset + p + newOffset)\n    sz = data + (SizeOffset + p + newOffset) # size string\n    inc(p, newOffset) # pointer to current file's data in TAR\n\n    for i in 0..<MagicSize: # Check for supported TAR version\n      if data[i + MagicOffset + p] != Magic[i].uint8:\n        return nil\n\n    size = 0\n    mul = 1\n    for i in countdown(SzSize - 2, 0):\n      if (sz[i] >= '0'.uint8) and (sz[i] <= '9'.uint8):\n        inc(size, int(sz[i] - '0'.uint8) * mul)\n      mul = mul * 8\n    newOffset = (1 + size div BlockSize) * BlockSize # trim by block\n    if (size mod BlockSize) > 0: inc(newOffset, BlockSize)\n    var i = 0\n\n    # compare file's name with that a user wants\n    while (i < NameSize) and\n          (fileName[i] != '\\0') and\n          (name[i].char == fileName[i].char):\n      inc(i)\n\n    if (i > 0) and (name[i] == 0) and (fileName[i] == '\\0'):\n      found = true\n\n    if not ((not found) and (p + newOffset + BlockSize <= dataSize)):\n      break\n  # while true\n\n  if found:\n    fileSize = size\n    return data + p + BlockSize\n    #  skip header, point to data\n  else:\n    return nil # No file found in TAR - return nil\n]#\n\nproc dxTarContents(data: ptr uint8, dataSize: int): seq[tuple[name: cstring, size: int, data: ptr uint8]] =\n  result = @[]\n  var p, newOffset, size, mul: int\n\n  while true: # \"Load\" data from tar - just point to passed memory\n    inc(p, newOffset) # pointer to current file's data in TAR\n    let dataPtr = data + p\n\n    # Check for supported TAR version\n    let namePtr = dataPtr + NameOffset\n    let magic = p + MagicOffset\n    for i in 0..<MagicSize:\n      if data[magic + i] != Magic[i]:\n        return\n\n    # Calculate size\n    size = 0\n    mul = 1\n    let sizePtr = dataPtr + SizeOffset # size string\n    for i in countdown(SzSize - 2, 0):\n      if (sizePtr[i] >= Char0) and (sizePtr[i] <= Char9):\n        inc(size, int(sizePtr[i] - Char0) * mul)\n      mul = mul * 8\n    newOffset = (1 + size div BlockSize) * BlockSize # trim by block\n    if (size mod BlockSize) > 0: inc(newOffset, BlockSize)\n\n    # add new entry\n    if size > 0: # check if not directory\n      result.add((cast[cstring](namePtr), size, dataPtr + BlockSize))\n\n    if p + newOffset + BlockSize > dataSize:\n      break\n  # while true\n\nimport strutils, zip/zlib, sdl2_nim/sdl\n\n# PUBLIC\n\ntype\n  TarFile* = object\n    data: ptr uint8\n    size: int\n    contents: seq[tuple[name: cstring, size: int, data: ptr uint8]]\n\n\nproc contents*(tar: TarFile): seq[string] =\n  ##  ``Return`` a sequence of filenames (including paths) inside the ``tar``.\n  ##\n  result = @[]\n  for entry in tar.contents:\n    result.add($entry.name)\n\n\nproc contents*(tar: TarFile, sub: string, pos: int = 0): seq[string] =\n  ##  ``Return`` a sequence of filenames (including paths),\n  ##  which start with ``sub`` string, starting at ``pos`` index,\n  ##  inside the ``tar``.\n  ##  Useful for getting all files inside one archived directory.\n  ##\n  result = @[]\n  for entry in tar.contents:\n    let name = $entry.name\n    if name.find(sub, start=pos) == 0:\n      result.add(name)\n\n\nproc close*(tar: var TarFile) =\n  if tar.data != nil:\n    dealloc(tar.data)\n    tar.data = nil\n  tar.size = 0\n  tar.contents = @[]\n\n\nproc dump(filename: string, buf: var ptr uint8): int =\n  ##  Internal file dump procedure.\n  ##\n  ##  ``Return`` number of bytes read, or `-1` on errors.\n  ##\n  var f: File\n  if not f.open(filename, fmRead):\n    return -1\n  let size = f.getFileSize().int\n  buf = cast[ptr uint8](alloc(size + 1))\n  result = f.readBuffer(buf, size)\n  f.close()\n  if result != size:\n    return -1\n\n\nproc open*(tar: var TarFile, filename: string): bool =\n  ##  Open uncompressed TAR archive (eg. \"archive.tar\").\n  ##\n  ##  ``Return`` `true` on success, or `false` otherwise\n  ##  (or if no usable files found inside).\n  if tar.data != nil:\n    tar.close()\n  # load file\n  tar.size = dump(filename, tar.data)\n  if tar.size < 0:\n    return false\n  tar.data[tar.size] = 0\n  # read contents\n  tar.contents = dxTarContents(tar.data, tar.size)\n  return tar.contents.len > 0\n\n\nproc openz*(tar: var TarFile, filename: string): bool =\n  ##  Open compressed TAR archive (e.g. \"archive.tar.gz\").\n  ##\n  ##  ``Return`` `true` on success, or `false` otherwise\n  ##  (or if no usable files found inside).\n  if tar.data != nil:\n    tar.close()\n  # load file\n  var buffer: ptr uint8\n  let size = dump(filename, buffer)\n  if size < 0:\n    return false\n  # uncompress\n  var decompressed = uncompress(cast[cstring](buffer), size)\n  dealloc(buffer)\n  tar.size = decompressed.len\n  tar.data = cast[ptr uint8](cstring(decompressed))\n  # read contents\n  tar.contents = dxTarContents(tar.data, tar.size)\n  return tar.contents.len > 0\n\n\nproc index*(tar: TarFile, filename: string): int =\n  ##  ``Return`` index of ``filename`` in ``tar`` file, or `-1` if not found.\n  ##\n  for i in 0..tar.contents.high:\n    if tar.contents[i].name == filename:\n      return i\n  return -1\n\n\ntemplate exists*(tar: TarFile, filename: string): bool =\n  (tar.index(filename) >= 0)\n\n\nproc read*(tar: TarFile, filename: string): ptr RWops =\n  ##  Read ``filename`` from ``tar``\n  ##  and return its content as a new ``RWops`` pointer.\n  ##\n  let idx = tar.index(filename)\n  if idx < 0:\n    return nil\n  return rwFromMem(cast[pointer](tar.contents[idx].data), tar.contents[idx].size)\n\n"
  },
  {
    "path": "nimgame2/plugin/zzip.nim",
    "content": "#\n#    Copyright (c) 2001 Guido Draheim <guidod@gmx.de>\n#    Use freely under the restrictions of the ZLIB License\n#\n\n##  You should be able to drop it in the place of a ``sdl.rwFromFile()``.\n##  Then go to `X/share/myapp` and do\n##  ```cd graphics && zip -9r ../graphics.zip .```\n##  and rename the `graphics/` subfolder - and still all your files\n##  are found: a filepath like `X/shared/graphics/game/greetings.bmp`\n##  will open `X/shared/graphics.zip` and return the zipped file\n##  `game/greetings.bmp` in the zip-archive (for reading that is).\n##\n##  See original code at http://zziplib.sourceforge.net/zzip-sdl-rwops.html\n##\n##  ``Note:`` zzip dynamic library should be available in the system.\n\nimport\n  sdl2_nim/sdl, zip/zzip\n\n\n# PRIVATE\n\ntemplate rwopsZzipData(context: ptr RWops): untyped =\n  (context.mem.unknown.data1)\n\ntemplate rwopsZzipFile(context: ptr RWops): untyped =\n  cast[ptr Zzip_File]((context.mem.unknown.data1))\n\nproc zzipSeek*(context: ptr RWops,\n               offset: int64, whence: cint): int64 {.cdecl.} =\n  return zzipSeek(rwopsZzipFile(context), offset.int, whence)\n\nproc zzipRead*(context: ptr RWops,\n               buf: pointer, size: csize, maxnum: csize): csize {.cdecl.} =\n  return zzipRead(rwops_Zzip_File(context), buf, size * maxnum) div size\n\nproc zzipWrite*(context: ptr RWops,\n                buf: pointer; size: csize, num: csize): csize {.cdecl.} =\n  return 0 # ignored\n\nproc zzipClose*(context: ptr RWops): cint {.cdecl.} =\n  if context == nil:\n    return 0\n  zzipClose(rwops_Zzip_File(context))\n  freeRW(context)\n  return 0\n\n\n# PUBLIC\n\nproc rwFromZZip*(file, mode: string = \"r\"): ptr RWops =\n  var f: ptr ZZipFile\n  if not ('r' in mode): return rwFromFile(file, mode)\n  f = zzipFopen(file, mode)\n  if f == nil:\n    return nil\n  result = allocRW()\n  if result == nil:\n    zzipClose(f)\n    raise newException(OutOfMemDefect, \"allocRW(): out of memory\")\n  rwopsZzipData(result) = f\n  result.read = zzipRead\n  result.write = zzipWrite\n  result.seek = zzipSeek\n  result.close = zzipClose\n\n"
  },
  {
    "path": "nimgame2/private/collider.nim",
    "content": "# nimgame2/collider.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\n##  Do not import this file. It is included in `entity.nim` automatically.\n\n\n#==================#\n# Collider Private #\n#==================#\n\nfrom fenv import epsilon\nlet Eps = epsilon(float)\n\n\ntemplate position(a: Collider): Coord =\n  if a.parent.absRot == 0:\n    (a.parent.absPos + a.pos * a.parent.absScale)\n  else:\n    rotate(a.pos * a.parent.absScale, a.parent.absPos, a.parent.absRot)\n\n\ntemplate scaled(n: float, a: Collider): float =\n  (n * a.parent.absScale)\n\n\ntemplate scaled(n: int, a: Collider): int =\n  int(n.float * a.parent.absScale)\n\n\ntemplate scaled(n: Coord, a: Collider): Coord =\n  (n.x * a.parent.absScale, n.y * a.parent.absScale)\n\n\ntemplate left(b: BoxCollider): float =\n  (b.position.x - b.dim.w.scaled(b) / 2)\n\n\ntemplate right(b: BoxCollider): float =\n  (b.position.x + b.dim.w.scaled(b) / 2)\n\n\ntemplate top(b: BoxCollider): float =\n  (b.position.y - b.dim.h.scaled(b) / 2)\n\n\ntemplate bottom(b: BoxCollider): float =\n  (b.position.y + b.dim.h.scaled(b) / 2)\n\n\ntemplate pointInBox(p: Coord, b: BoxCollider): bool =\n  ##  ``Return`` `true` if ``p`` is contained in ``b``, or `false` otherwise.\n  ##\n  ( ((p.x >= b.left) and (p.x <= b.right)) and\n    ((p.y >= b.top) and (p.y <= b.bottom)) )\n\n\nproc linesIntersect(p1, p2, p3, p4: Coord): bool =\n  ##  ``Return`` `true` if line segment `p1`-`p2` intersects with `p3`-`p4`,\n  ##  or `false` otherwise.\n  ##\n  let\n    a = ( (p4.x - p3.x) * (p1.y - p3.y) -\n          (p4.y - p3.y) * (p1.x - p3.x) ) /\n        ( (p4.y - p3.y) * (p2.x - p1.x) -\n          (p4.x - p3.x) * (p2.y - p1.y) )\n    b = ( (p2.x - p1.x) * (p1.y - p3.y) -\n          (p2.y - p1.y) * (p1.x - p3.x) ) /\n        ( (p4.y - p3.y) * (p2.x - p1.x) -\n          (p4.x - p3.x) * (p2.y - p1.y) )\n  return ( a >= 0 and a <= 1 ) and (b >= 0 and b <= 1)\n\n\ntemplate farthestRadius(p: PolyCollider): float =\n  var result = 0.0\n  for point in p.points:\n    let d = distance(p.pos, point)\n    if d > result:\n      result = d\n  result\n\n\ntemplate groupCollide(g: GroupCollider, x: untyped): bool =\n  var result = false\n  for c in g.list:\n    if collide(x, c):\n      result = true\n      break\n  result\n\n\n#==================#\n# Coord collisions #\n#==================#\n\n# Coord - Coord\ntemplate collide*(pos1, pos2: Coord): bool =\n  pos1 == pos2\n\n\n# Coord - Point\nmethod collide*(pos: Coord, a: Collider): bool {.base, inline.} =\n  pos == a.position\n\n\n# Coord - Box\nmethod collide*(pos: Coord, b: BoxCollider): bool {.inline.} =\n  pointInBox(pos, b)\n\n\n# Coord - Circle\nmethod collide*(pos: Coord, c: CircleCollider): bool {.inline.} =\n  distance(pos, c.position) <= c.radius.scaled(c)\n\n\n# Coord - Line\nmethod collide*(pos: Coord, d: LineCollider): bool =\n  let\n    dpPosition = d.parent.absPos\n    dpRotation = d.parent.absRot\n    pos1 = rotate(d.pos.scaled(d), dpPosition, dpRotation)\n    pos2 = rotate(d.pos2.scaled(d), dpPosition, dpRotation)\n  if distanceToLine(pos, pos1, pos2) >= 0.5:\n    return false\n  if distance(pos, pos1) + distance(pos, pos2) >= distance(pos1, pos2) + 0.5:\n    return false\n  else:\n    return true\n\n\n# Coord - Poly\nmethod collide*(pos: Coord, p: PolyCollider): bool =\n  if p.points.len < 1:    # No points\n    return false\n  elif p.points.len < 2:  # One point\n    return collide(pos, Collider(parent: p.parent,\n                               pos: p.points[0]))\n  elif p.points.len < 3:  # Two points\n    return collide(pos, LineCollider(parent: p.parent,\n                                     pos: p.points[0],\n                                     pos2: p.points[1]))\n  else:\n    if distance(pos, p.position) > p.farthest:\n      return false\n    let\n      ppPosition = p.parent.absPos\n      ppRotation = p.parent.absRot\n    var\n      i = 0\n      j = p.points.high\n      c = 0\n    while i < p.points.len:\n      let\n        pi = rotate(p.points[i].scaled(p), ppPosition, ppRotation)\n        pj = rotate(p.points[j].scaled(p), ppPosition, ppRotation)\n      if ( ((pi.y <= pos.y) and (pos.y < pj.y)) or\n          ((pj.y <= pos.y) and (pos.y < pi.y)) ) and\n        ( pos.x < (pj.x - pi.x) * (pos.y - pi.y) / (pj.y - pi.y) + pi.x ):\n        c = if c == 0: 1 else: 0\n      # increment\n      j = i\n      inc i\n    return c > 0\n\n\n# Coord - Group\nmethod collide(pos: Coord, g: GroupCollider): bool =\n  groupCollide(g, pos)\n\n\n#==================#\n# Collider (Point) #\n#==================#\n\nproc init*(a: Collider, parent: Entity, pos: Coord = (0, 0)) =\n  a.parent = parent\n  a.pos = pos\n  a.tags = @[]\n\n\nproc newCollider*(parent: Entity, pos: Coord = (0, 0)): Collider =\n  result = new Collider\n  result.init(parent, pos)\n\n\nproc renderCollider*(a: Collider) =\n  let\n    pos = a.position\n    rad = 4.0\n  discard hline(pos - (rad, 0.0), 8, colliderOutlineColor)\n  discard vline(pos - (0.0, rad), 8, colliderOutlineColor)\n  discard circle(pos, rad, colliderOutlineColor)\n\n\nmethod render*(a: Collider) {.base.} =\n  a.renderCollider()\n\n\n# Point - Coord\nmethod collide*(a: Collider, pos: Coord): bool {.base, inline.} =\n  collide(pos, a)\n\n\n# Point - Point\nmethod collide*(a1, a2: Collider): bool {.base, inline.} =\n  collide(a1.position, a2.position)\n\n\n# Point - Box\nmethod collide*(a: Collider, b: BoxCollider): bool {.inline.} =\n  collide(a.position, b)\n\n\n# Point - Circle\nmethod collide*(a: Collider, c: CircleCollider): bool {.inline.} =\n  collide(a.position, c)\n\n\n# Point - Line\nmethod collide*(a: Collider, d: LineCollider): bool =\n  collide(a.position, d)\n\n\n# Point - Poly\nmethod collide*(a: Collider, p: PolyCollider): bool =\n  collide(a.position, p)\n\n\n# Point - Group\nmethod collide*(a: Collider, g: GroupCollider): bool =\n  groupCollide(g, a)\n\n\n#=============#\n# BoxCollider #\n#=============#\n\nproc init*(b: BoxCollider, parent: Entity, pos: Coord = (0, 0),\n           dim: Dim = (0, 0)) =\n  Collider(b).init(parent, pos)\n  b.dim = dim\n\n\nproc newBoxCollider*(parent: Entity, pos: Coord = (0, 0),\n                     dim: Dim = (0, 0)): BoxCollider =\n  result = new BoxCollider\n  result.init(parent, pos, dim)\n\n\nmethod render*(b: BoxCollider) =\n  discard rect((b.left, b.top), (b.right, b.bottom), colliderOutlineColor)\n  b.renderCollider()\n\n\n# Box - Coord\nmethod collide*(b: BoxCollider, pos: Coord): bool {.inline.} =\n  collide(pos, b)\n\n\n# Box - Point\nmethod collide*(b: BoxCollider, a: Collider): bool {.inline.} =\n  collide(a, b)\n\n\n# Box - Box\nmethod collide*(b1, b2: BoxCollider): bool =\n  if b1.left > b2.right: return false\n  if b1.right < b2.left: return false\n  if b1.top > b2.bottom: return false\n  if b1.bottom < b2.top: return false\n  return true\n\n\n# Box - Circle\nmethod collide*(b: BoxCollider, c: CircleCollider): bool =\n  let\n    left = b.left\n    right = b.right\n    top = b.top\n    bottom = b.bottom\n    cpos = c.position\n  var\n    closest: Coord\n  closest.x = if left > cpos.x: left\n              elif right < cpos.x: right\n              else: cpos.x\n  closest.y = if top > cpos.y: top\n              elif bottom < cpos.y: bottom\n              else: cpos.y\n  return distance(cpos, closest) < c.radius.scaled(c)\n\n\n# Box - Line\nmethod collide*(b: BoxCollider, d: LineCollider): bool =\n  let\n    b1 = (x: b.left, y: b.top)\n    b2 = (b.right, b1.y)\n    b3 = (b.right, b.bottom)\n    b4 = (b1.x, b.bottom)\n    dpPosition = d.parent.absPos\n    dpRotation = d.parent.absRot\n    d1 = rotate(d.pos.scaled(d), dpPosition, dpRotation)\n    d2 = rotate(d.pos2.scaled(d), dpPosition, dpRotation)\n  if pointInBox(d1, b):\n    return true\n  elif pointInBox(d2, b):\n    return true\n  elif linesIntersect(b1, b2, d1, d2):\n    return true\n  elif linesIntersect(b2, b3, d1, d2):\n    return true\n  elif linesIntersect(b3, b4, d1, d2):\n    return true\n  else:\n    return false\n\n\n# Box - Poly\nmethod collide*(b: BoxCollider, p: PolyCollider): bool =\n  if p.points.len < 1:    # No points\n    return false\n  elif p.points.len < 2:  # One point\n    return collide(b, Collider(parent: p.parent,\n                               pos: p.points[0]))\n  elif p.points.len < 3:  # Two points\n    return collide(b, LineCollider(parent: p.parent,\n                                   pos: p.points[0],\n                                   pos2: p.points[1]))\n  else:\n    if  distance(b.position, p.position) >\n        (max(b.dim.w / 2, b.dim.h / 2) + p.farthest):\n      return false\n    var\n      i = 0\n      j = p.points.high\n    while i < p.points.len:\n      if collide(b, LineCollider(parent: p.parent,\n                                pos: p.points[i],\n                                pos2: p.points[j])):\n        return true\n      # increment\n      j = i\n      inc i\n    return false\n\n\n# Box - Group\nmethod collide*(b: BoxCollider, g: GroupCollider): bool =\n  groupCollide(g, b)\n\n\n#================#\n# CircleCollider #\n#================#\n\nproc init*(c: CircleCollider, parent: Entity, pos: Coord = (0, 0),\n           radius: float = 0) =\n  Collider(c).init(parent, pos)\n  c.radius = radius\n\n\nproc newCircleCollider*(parent: Entity, pos: Coord = (0, 0),\n                        radius: float = 0): CircleCollider =\n  result = new CircleCollider\n  result.init(parent, pos, radius)\n\n\nmethod render*(c: CircleCollider) =\n  discard circle(c.position, c.radius.scaled(c), colliderOutlineColor)\n  c.renderCollider()\n\n\n# Circle - Coord\nmethod collide*(c: CircleCollider, pos: Coord): bool {.inline.} =\n  collide(pos, c)\n\n\n# Circle - Point\nmethod collide*(c: CircleCollider, a: Collider): bool {.inline.} =\n  collide(a, c)\n\n\n# Circle - Box\nmethod collide*(c: CircleCollider, b: BoxCollider): bool {.inline.} =\n  collide(b, c)\n\n\n# Circle - Circle\nmethod collide*(c1, c2: CircleCollider): bool {.inline.} =\n  distance(c1.position, c2.position) <\n    (c1.radius.scaled(c1) + c2.radius.scaled(c2))\n\n\n# Circle - Line\nmethod collide*(c: CircleCollider, d: LineCollider): bool =\n  let\n    cc = c.position\n    dpPosition = d.parent.absPos\n    dpRotation = d.parent.absRot\n    d1 = rotate(d.pos.scaled(d), dpPosition, dpRotation)\n    d2 = rotate(d.pos2.scaled(d), dpPosition, dpRotation)\n    dd = d2 - d1\n    a = pow(dd.x, 2) + pow(dd.y, 2)\n    b = 2 * (dd.x * (d1.x - cc.x) + dd.y * (d1.y - cc.y))\n    c = pow(cc.x, 2) + pow(cc.y, 2) +\n        pow(d1.x, 2) + pow(d1.y, 2) -\n        2 * (cc.x * d1.x + cc.y * d1.y) -\n        pow(c.radius.scaled(c), 2)\n    i = b * b - 4 * a * c;\n  if i < 0:\n    return false\n  elif abs(a) < Eps:\n    return false\n  else:\n    let\n      a2 = 2 * a\n      ri = sqrt(i)\n      n1 = (-b + ri) / a2\n      n2 = (-b - ri) / a2\n    if ((n1 < 0) and (n2 < 0)) or ((n1 > 1) and (n2 > 1)):\n      return false\n    else:\n      return true\n\n\n# Circle - Poly\nmethod collide*(c: CircleCollider, p: PolyCollider): bool =\n  if p.points.len < 1:    # No points\n    return false\n  elif p.points.len < 2:  # One point\n    return collide(c, Collider(parent: p.parent,\n                               pos: p.points[0]))\n  elif p.points.len < 3:  # Two points\n    return collide(c, LineCollider(parent: p.parent,\n                                   pos: p.points[0],\n                                   pos2: p.points[1]))\n  else:\n    if distance(c.position, p.position) > (c.radius + p.farthest):\n      return false\n    var\n      i = 0\n      j = p.points.high\n    while i < p.points.len:\n      if collide(c, LineCollider(parent: p.parent,\n                                pos: p.points[i],\n                                pos2: p.points[j])):\n        return true\n      # increment\n      j = i\n      inc i\n    return false\n\n\n# Circle - Group\nmethod collide*(c: CircleCollider, g: GroupCollider): bool =\n  groupCollide(g, c)\n\n\n#===============#\n# Line Collider #\n#===============#\n\nproc init*(d: LineCollider, parent: Entity, pos: Coord = (0, 0),\n           pos2: Coord = (0, 0)) =\n  Collider(d).init(parent, pos)\n  d.pos2 = pos2\n\n\nproc newLineCollider*(parent: Entity, pos: Coord = (0, 0),\n                      pos2: Coord = (0, 0)): LineCollider =\n  result = new LineCollider\n  result.init(parent, pos, pos2)\n\n\nmethod render*(d: LineCollider) =\n  let\n    dpPosition = d.parent.absPos\n    dpRotation = d.parent.absRot\n    pos1 = rotate(d.pos.scaled(d), dpPosition, dpRotation)\n    pos2 = rotate(d.pos2.scaled(d), dpPosition, dpRotation)\n  discard line(pos1, pos2, colliderOutlineColor)\n  d.renderCollider()\n\n\n# Line - Coord\nmethod collide*(d: LineCollider, pos: Coord): bool {.inline.} =\n  collide(pos, d)\n\n\n# Line - Point\nmethod collide*(d: LineCollider, a: Collider): bool {.inline.} =\n  collide(a, d)\n\n\n# Line - Box\nmethod collide*(d: LineCollider, b: BoxCollider): bool {.inline.} =\n  collide(b, d)\n\n\n# Line - Circle\nmethod collide*(d: LineCollider, c: CircleCollider): bool {.inline.} =\n  collide(c, d)\n\n\n# Line - Line\nmethod collide*(d1, d2: LineCollider): bool =\n  let\n    d1pPosition = d1.parent.absPos\n    d1pRotation = d1.parent.absRot\n    d2pPosition = d2.parent.absPos\n    d2pRotation = d2.parent.absRot\n    p1 = rotate(d1.pos.scaled(d1), d1pPosition, d1pRotation)\n    p2 = rotate(d1.pos2.scaled(d1), d1pPosition, d1pRotation)\n    p3 = rotate(d2.pos.scaled(d2), d2pPosition, d2pRotation)\n    p4 = rotate(d2.pos2.scaled(d2), d2pPosition, d2pRotation)\n  return linesIntersect(p1, p2, p3, p4)\n\n\n# Line - Poly\nmethod collide*(d: LineCollider, p: PolyCollider): bool =\n  if p.points.len < 1:    # No points\n    return false\n  elif p.points.len < 2:  # One point\n    return collide(d, Collider(parent: p.parent,\n                               pos: p.points[0]))\n  elif p.points.len < 3:  # Two points\n    return collide(d, LineCollider(parent: p.parent,\n                                   pos: p.points[0],\n                                   pos2: p.points[1]))\n  else:\n    if collide(Collider(parent: d.parent, pos: d.pos), p):\n      return true\n    if collide(Collider(parent: d.parent, pos: d.pos2), p):\n      return true\n    var\n      i = 0\n      j = p.points.high\n    while i < p.points.len:\n      if collide(d, LineCollider(parent: p.parent,\n                                pos: p.points[i],\n                                pos2: p.points[j])):\n        return true\n      # increment\n      j = i\n      inc i\n    return false\n\n\n# Line - Group\nmethod collide*(d: LineCollider, g: GroupCollider): bool =\n  groupCollide(g, d)\n\n\n#==============#\n# PolyCollider #\n#==============#\n\nproc init*(p: PolyCollider, parent: Entity, pos: Coord = (0, 0),\n           points: openarray[Coord]) =\n  Collider(p).init(parent, pos)\n  p.points = @points\n  p.farthest = farthestRadius(p)\n\n\nproc updateFarthest*(p: PolyCollider) {.inline.} =\n  ##  Call this procedure any time you changed points' coordinates.\n  ##\n  p.farthest = farthestRadius(p)\n\n\nproc newPolyCollider*(parent: Entity, pos: Coord = (0, 0),\n                      points: openarray[Coord]): PolyCollider =\n  result = new PolyCollider\n  result.init(parent, pos, points)\n\n\nmethod render*(p: PolyCollider) =\n  if p.points.len < 1:    # No points\n    return\n  elif p.points.len < 2:  # One point\n    render(Collider(parent: p.parent, pos: p.points[0]))\n  elif p.points.len < 3:  # Two points\n    render(LineCollider(parent: p.parent, pos: p.points[0], pos2: p.points[1]))\n  else:\n    let\n      ppPosition = p.parent.absPos\n      ppRotation = p.parent.absRot\n    var points: seq[Coord] = @[]\n    for point in p.points:\n      points.add(rotate(point.scaled(p), ppPosition, ppRotation))\n    discard polygon(points, colliderOutlineColor)\n    p.renderCollider()\n\n\n# Poly - Coord\nmethod collide*(p: PolyCollider, pos: Coord): bool {.inline.} =\n  collide(pos, p)\n\n\n# Poly - Point\nmethod collide*(p: PolyCollider, a: Collider): bool {.inline.} =\n  collide(a, p)\n\n\n# Poly - Box\nmethod collide*(p: PolyCollider, b: BoxCollider): bool {.inline.} =\n  collide(b, p)\n\n\n# Poly - Circle\nmethod collide*(p: PolyCollider, c: CircleCollider): bool {.inline.} =\n  collide(c, p)\n\n\n# Poly - Line\nmethod collide*(p: PolyCollider, d: LineCollider): bool {.inline.} =\n  collide(d, p)\n\n\n# Poly - Poly\nmethod collide*(p1, p2: PolyCollider): bool =\n  if p1.points.len < 1 or p2.points.len < 1:   # P1 or P2 no points\n    return false\n  elif p1.points.len < 2: # P1 one point\n    return collide(Collider(parent: p1.parent,\n                            pos: p1.points[0]),\n                   p2)\n  elif p2.points.len < 2: # P2 one point\n    return collide(Collider(parent: p2.parent,\n                            pos: p2.points[0]),\n                   p1)\n  elif p1.points.len < 3: # P1 two points\n    return collide(LineCollider(parent: p1.parent,\n                                pos: p1.points[0],\n                                pos2: p1.points[1]),\n                   p2)\n  elif p2.points.len < 3: # P2 two points\n    return collide(LineCOllider(parent: p2.parent,\n                                pos: p2.points[0],\n                                pos2: p2.points[1]),\n                   p1)\n  else:\n    if distance(p1.position, p2.position) > (p1.farthest + p2.farthest):\n      return false\n    # check for collision\n    var\n      i = 0\n      j = p1.points.high\n    while i < p1.points.len:\n      if collide(LineCollider(parent: p1.parent,\n                              pos: p1.points[i],\n                              pos2: p1.points[j]),\n                p2):\n        return true\n      # increment\n      j = i\n      inc i\n    return false\n\n\n# Poly - Group\nmethod collide*(p: LineCollider, g: GroupCollider): bool =\n  groupCollide(g, p)\n\n\n#===============#\n# GroupCollider #\n#===============#\n\nproc init*(g: GroupCollider, parent: Entity) =\n  Collider(g).init(parent, (0, 0))\n  g.list = @[]\n\n\nproc newGroupCollider*(parent: Entity): GroupCollider =\n  result = new GroupCollider\n  result.init(parent)\n\n\nmethod render*(g: GroupCollider) =\n  if g.list.len < 1:\n    return\n  for c in g.list:\n    c.render()\n\n\n# Group - Coord\nmethod collide*(g: GroupCollider, pos: Coord): bool =\n  groupCollide(g, pos)\n\n\n# Group - Point\nmethod collide*(g: GroupCollider, a: Collider): bool =\n  groupCollide(g, a)\n\n\n# Group - Box\nmethod collide*(g: GroupCollider, b: BoxCollider): bool =\n  groupCollide(g, b)\n\n\n# Group - Circle\nmethod collide*(g: GroupCollider, c: CircleCollider): bool =\n  groupCollide(g, c)\n\n\n# Group - Line\nmethod collide*(g: GroupCollider, d: LineCollider): bool =\n  groupCollide(g, d)\n\n\n# Group - Poly\nmethod collide*(g: GroupCollider, p: PolyCollider): bool =\n  groupCollide(g, p)\n\n\n#================#\n# Collider Utils #\n#================#\n\nproc intersect(a, b: seq[string]): bool =\n  ##  ``Return`` `true` if sequences have at least one identical element,\n  ##  or `false` otherwise.\n  ##\n  for item in a:\n    if item in b:\n      return true\n  return false\n\n\niterator collisions(entity: Entity, list: seq[Entity]): Entity =\n  for target in list:\n    if target.collider == nil: continue # no collider on target\n    if entity == target: continue # entity is target\n    if target in entity.colliding: continue # already collided with target\n    if entity.collider.tags.len == 0 or # no tags given\n       entity.collider.tags.intersect(target.tags): # check for needed tags\n      if collide(entity.collider, target.collider): # check for collision\n        yield target\n\n\nproc checkCollisions*(entity: Entity, list: seq[Entity]) =\n  ##  Trigger ``onCollide`` method of ``entity``\n  ##  with a given ``list`` of targets.\n  ##\n  for target in entity.collisions(list):\n    target.colliding.add(entity) # mark target as already collided with entity\n    entity.onCollide(target)\n    target.onCollide(entity)\n\n\nproc isColliding*(entity: Entity, list: seq[Entity]): bool =\n  ##  ``Return`` `true` if ``entity`` collides with one of the elements\n  ##  in the given ``list``, or `false` if no collisions occurs.\n  ##\n  for target in entity.collisions(list):\n    return true\n  return false\n\n\nproc willCollide*(entity: Entity, pos: Coord, rot: Angle, scale: Scale,\n                  list: seq[Entity]): bool =\n  ##  ``Return`` `true` if ``entity`` will collide with one of the elements\n  ##  in the given list, if ``entity``'s coordinates or dimentsions will change.\n  ##\n  let\n    originalPos = entity.pos\n    originalRot = entity.rot\n    originalScale = entity.scale\n\n  entity.pos = pos\n  entity.rot = rot\n  entity.scale = scale\n\n  defer:\n    entity.pos = originalPos\n    entity.rot = originalRot\n    entity.scale = originalScale\n\n  result = isColliding(entity, list)\n\n"
  },
  {
    "path": "nimgame2/procgraphic.nim",
    "content": "# nimgame2/procgraphic.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  graphic, types\n\n\ntype\n  ProcGraphic* = ref object of Graphic\n    # Public\n    procedure*: proc(graphic: ProcGraphic,\n                     pos: Coord,\n                     angle: Angle,\n                     scale: Scale,\n                     center: Coord,\n                     flip: Flip,\n                     region: Rect) {.locks:0.}  ##  Drawing procedure.\n    dimProcedure*: proc(): Dim {.locks:0.}  ##  Dimensions procedure.\n\n\n#=============#\n# ProcGraphic #\n#=============#\n\nproc newProcGraphic*(): ProcGraphic =\n  new result\n  result.procedure = nil\n\n\nmethod w*(graphic: ProcGraphic): int =\n  ##  ``Return`` the width of the ``graphic`` if available, or `nil` otherwise.\n  ##\n  if graphic.dimProcedure == nil:\n    return 0\n  else:\n    return graphic.dimProcedure().w\n\n\nmethod h*(graphic: ProcGraphic): int =\n  ##  ``Return`` the height of the ``graphic`` if available, or `nil` otherwise.\n  ##\n  if graphic.dimProcedure == nil:\n    return 0\n  else:\n    return graphic.dimProcedure().h\n\n\nmethod dim*(graphic: ProcGraphic): Dim =\n  ##  ``Return`` the ``graphic``'s dimensions if available, or `nil` otherwise.\n  ##\n  if graphic.dimProcedure == nil:\n    return (0, 0)\n  else:\n    return graphic.dimProcedure()\n\n\nproc drawProcGraphic*(graphic: ProcGraphic,\n                      pos: Coord = (0.0, 0.0),\n                      angle: Angle = 0.0,\n                      scale: Scale = 1.0,\n                      center: Coord = (0.0, 0.0),\n                      flip: Flip = Flip.none,\n                      region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  if graphic.procedure == nil:\n    return\n  graphic.procedure(graphic, pos, angle, scale, center, flip, region)\n\n\nmethod draw*(graphic: ProcGraphic,\n             pos: Coord = (0.0, 0.0),\n             angle: Angle = 0.0,\n             scale: Scale = 1.0,\n             center: Coord = (0.0, 0.0),\n             flip: Flip = Flip.none,\n             region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  drawProcGraphic(graphic, pos, angle, scale, center, flip, region)\n\n"
  },
  {
    "path": "nimgame2/scene.nim",
    "content": "# nimgame2/scene.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  entity, settings, types\n\n\ntype\n  Scene* = ref object of RootObj\n    # Private\n    fList, fAddList: seq[Entity]\n    # Camera\n    camera*, cameraBond*: Entity  ##  Camera and its bond Entity\n    cameraBondOffset*: Coord      ##  Camera's offstet from its bond\n\n\n#=======#\n# Scene #\n#=======#\n\nproc init*(scene: Scene) =\n  scene.camera = nil\n  scene.cameraBond = nil\n  scene.cameraBondOffset = (0.0, 0.0)\n  scene.fList = @[]\n  scene.fAddList = @[]\n\n\nproc eventScene*(scene: Scene, e: sdl.Event) =\n  for entity in scene.fList:\n    entity.event(e)\n\n\nmethod event*(scene: Scene, e: sdl.Event) {.base.} =\n  scene.eventScene(e)\n\n\nmethod show*(scene: Scene) {.base.} =\n  ##  Called when ``scene`` is set in ``Game``.\n  ##\n  discard\n\n\nmethod hide*(scene: Scene) {.base.} =\n  ##  Called when ``scene`` is replaced by other one in ``Game``.\n  ##\n  discard\n\n\nproc renderScene*(scene: Scene) =\n  ##  Default scene render procedure.\n  ##\n  ##  Call it from your scene render method.\n  ##\n  for entity in scene.fList:\n    entity.render()\n  # Should be in the scene level to be drawn on top of all entities\n  if colliderOutline:\n    for entity in scene.fList:\n      if entity.collider != nil:\n        entity.collider.render()\n\n\nmethod render*(scene: Scene) {.base.} =\n  scene.renderScene()\n\n\nproc addEntity(scene: Scene, entity: Entity) =\n  if scene.fList.len < 1:\n    scene.fList.add(entity)\n    return\n\n  if scene.fList[scene.fList.high].layer <= entity.layer:\n    scene.fList.add(entity)\n    return\n\n  var i = scene.fList.high-1\n  while i >= 0:\n    if scene.fList[i].layer <= entity.layer:\n      scene.fList.insert(entity, i+1)\n      return\n    dec i\n\n  scene.fList.insert(entity, 0)\n\n\nproc delEntity(scene: Scene, index: int) =\n  scene.fList.delete(index)\n\n\nproc add*(scene: Scene, entity: Entity) =\n  ##  Add a new ``entity`` to the ``scene``.\n  ##\n  scene.fAddList.add(entity)\n\n\ntemplate bindCameraTo*(scene: Scene, bond: Entity, offset: Coord) =\n  ##  Bind the camera to the movement of the specific ``entity``.\n  ##\n  scene.cameraBond = bond\n  scene.cameraBondOffset = offset\n\n\nproc clear*(scene: Scene) =\n  ##  Remove all entities from the scene.\n  ##\n  while scene.fList.len > 0:\n    discard scene.fList.pop()\n\n\nproc contains*(scene: Scene, entity: Entity): bool {.inline.} =\n  ##  ``Return`` `true` if the ``scene`` has the ``entity``,\n  ##  or `false` otherwise.\n  ##\n  return entity in scene.fList\n\n\nproc contains*(scene: Scene, tag: string): bool =\n  ##  ``Return`` `true` if the ``scene`` has an entity with ``tag``,\n  ##  or `false` otherwise.\n  ##\n  for entity in scene.fList:\n    if tag in entity.tags:\n      return true\n  return false\n\n\nproc count*(scene: Scene): int {.inline.} =\n  ##  ``Return`` the number of entities in the ``scene``.\n  ##\n  return scene.fList.len\n\n\nproc count*(scene: Scene, tag: string): int =\n  ##  ``Return`` the number of entities with ``tag`` in the ``scene``.\n  ##\n  result = 0\n  for entity in scene.fList:\n    if tag in entity.tags:\n      inc result\n\n\nproc del*(scene: Scene, entity: Entity): bool =\n  ##  Delete ``entity`` from the ``scene``.\n  ##\n  ##  ``Return`` `true` if ``entity`` was deleted,\n  ##  or `false` if there is no such ``entity`` in the scene.\n  ##\n  let idx = scene.fList.find(entity)\n  if idx < 0:\n    return false\n  scene.delEntity(idx)\n  return true\n\n\nproc del*(scene: Scene, tag: string) =\n  ##  Delete all entities with ``tag`` from the ``scene``.\n  ##\n  var idx = 0\n  while idx < scene.fList.len:\n    if tag in scene.fList[idx].tags:\n      scene.delEntity(idx)\n      continue\n    inc idx\n\n\nproc find*(scene: Scene, tag: string): Entity =\n  ##  ``Return`` the first entity with ``tag`` in the ``scene``,\n  ##  or `nil` otherwise.\n  ##\n  for entity in scene.fList:\n    if tag in entity.tags:\n      return entity\n  return nil\n\n\nproc findAll*(scene: Scene, tag: string): seq[Entity] =\n  ##  ``Return`` a sequence of all entities with ``tag`` in the ``scene``,\n  ##  or an empty sequence if no such entities are found.\n  ##\n  result = @[]\n  for entity in scene.fList:\n    if tag in entity.tags:\n      result.add(entity)\n\n\nproc pop*(scene: Scene): Entity {.inline.} =\n  ##  ``Return`` the top entity and remove it from the ``scene``.\n  ##\n  return scene.fList.pop()\n\n\niterator entities*(scene: Scene): Entity {.inline.} =\n  ##  Iterate through all entities in the ``scene``.\n  ##\n  for entity in scene.fList:\n    yield entity\n\n\niterator entities*(scene: Scene, tag: string): Entity {.inline.} =\n  ##  Iterate throught entities with ``tag`` in the ``scene``.\n  ##\n  for entity in scene.fList:\n    if tag in entity.tags:\n      yield entity\n\n\nproc updateScene*(scene: Scene, elapsed: float) =\n  ##  Default scene update procedure.\n  ##\n  ##  Call it from your scene update method.\n  ##\n\n  # delete\n  var\n    i = 0\n    len = scene.fList.len\n  while i < len:\n    # marked as dead\n    if scene.fList[i].dead:\n      scene.delEntity(i)\n      dec len\n      continue\n    # marked as changed layer\n    if scene.fList[i].updLayer:\n      scene.fList[i].updLayer = false\n      scene.fAddList.add(scene.fList[i])\n      scene.delEntity(i)\n      dec len\n      continue\n    inc i\n\n  # add\n  while scene.fAddList.len > 0:\n    let entity = scene.fAddList.pop()\n    entity.updLayer = false\n    scene.addEntity(entity)\n\n  # camera\n  if not (scene.cameraBond == nil):\n    scene.camera.pos = -scene.cameraBond.pos + scene.cameraBondOffset\n\n  # update\n  for entity in scene.fList:\n    entity.update(elapsed)\n    if entity.collider != nil:\n      entity.colliding = @[]\n\n  # collisions\n  for entity in scene.fList:\n    if entity.collider != nil:\n      entity.checkCollisions(scene.fList)\n\n\nmethod update*(scene: Scene, elapsed: float) {.base.} =\n  scene.updateScene(elapsed)\n\n"
  },
  {
    "path": "nimgame2/settings.nim",
    "content": "# nimgame2/settings.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl\n\n\nvar\n  background*: sdl.Color  ##  Screen clearing color\n  renderer*: sdl.Renderer ##  Game renderer pointer\n\n  gameRunning*: bool      ##  If `false` - break main loop\n  gamePaused*: bool       ##  If `true` - do not update current scene\n  showInfo*: bool         ##  Show info panel\n  fpsLimit*: int          ##  Limit frames per second to ``fpsLimit``,\\\n                          ##  if `0` - no limit\n  colliderOutline*: bool  ##  Show collider outlines\n  colliderOutlineColor*: sdl.Color  ##  Color of collider outlines\n  updateInterval*: int    ## ``update()`` is called each ``updateInterval`` ms.\n\n"
  },
  {
    "path": "nimgame2/textfield.nim",
    "content": "# nimgame2/gui/textfield.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  unicode,\n  font, graphic, textgraphic, types\n\n\nconst\n  DefaultTextFieldCursor = \"|\"\n  DefaultTextFieldLimit = 8\n\n\ntype\n  TextField* = ref object of TextGraphic\n    # Private\n    fActive: bool\n    fCursorIndex: int\n    # Public\n    cursor*: string\n    limit*: int\n\n\ntemplate cursorLen(tf: TextField): int =\n  tf.cursor.runeLen\n\n\nproc init*(tf: TextField, font: Font) =\n  TextGraphic(tf).init(font)\n  tf.fActive = false\n  tf.fCursorIndex = 0\n  tf.cursor = DefaultTextFieldCursor\n  tf.limit = DefaultTextFieldLimit\n  tf.lines = [\"\"]\n\n\nproc newTextField*(font: Font): TextField =\n  result = new TextField\n  result.init(font)\n\n\nproc text*(tf: TextField): string =\n  tf.lines[0]\n\n\nproc `text=`*(tf: TextField, val: string) =\n  tf.lines = [val]\n\n\ntemplate isActive*(tf: TextField): bool =\n  tf.fActive\n\n\ntemplate len*(tf: TextField): int =\n  tf.text.runeLen\n\n\nproc bs*(tf: TextField, index = -1) =\n  ##  Backspace text action.\n  ##\n  if not tf.fActive:\n    return\n  let\n    runes = tf.text.toRunes\n    idx = if index >= 0: index else: (tf.fCursorIndex - 1)\n  if idx >= 0 and idx < tf.len:\n    tf.text = $runes[0..(idx-1)] & $runes[(idx+1)..^1]\n    dec tf.fCursorIndex\n\n\nproc del*(tf: TextField, index = -1) =\n  ##  Delete text action.\n  ##\n  if not tf.fActive:\n    return\n  let\n    runes = tf.text.toRunes\n    idx = if index >= 0: index else: (tf.fCursorIndex + 1)\n  if (idx >= 0) and (idx < tf.len):\n    tf.text = $runes[0..(idx-1)] & $runes[(idx+1)..^1]\n\n\nproc add*(tf: TextField, str: string, index = -1) =\n  ##  Add text action.\n  ##\n  if not tf.fActive:\n    return\n  if (index >= tf.len) or ((tf.len - tf.cursorLen + str.runeLen) > tf.limit):\n    return\n  let\n    runes = tf.text.toRunes\n    idx = if index >= 0: index else: tf.fCursorIndex\n  tf.text = $runes[0..(idx-1)] & str & $runes[idx..^1]\n  inc tf.fCursorIndex\n\n\nproc left*(tf: TextField) =\n  ##  Move cursor to the left.\n  ##\n  if tf.fActive and tf.fCursorIndex > 0:\n    let\n      runes = tf.text.toRunes\n      idx = tf.fCursorIndex\n    tf.text = $runes[0..(idx-2)] &\n              tf.cursor &\n              $runes[idx-1] &\n              $runes[(idx+1)..^1]\n    dec tf.fCursorIndex\n\n\nproc right*(tf: TextField) =\n  ##  Move cursor to the right.\n  ##\n  if tf.fActive and tf.fCursorIndex < (tf.len - 1):\n    let\n      runes = tf.text.toRunes\n      idx = tf.fCursorIndex\n    tf.text = $runes[0..(idx-1)] &\n              $runes[idx+1] &\n              tf.cursor &\n              $runes[(idx+2)..^1]\n    inc tf.fCursorIndex\n\n\nproc toFirst*(tf: TextField) =\n  ##  Move cursor to the beginning.\n  ##\n  if tf.fActive:\n    while tf.fCursorIndex > 0:\n      tf.left()\n\n\nproc toLast*(tf: TextField) =\n  ##  Move cursor to the end.\n  ##\n  if tf.fActive:\n    while tf.fCursorIndex < (tf.len - 1):\n      tf.right()\n\n\nproc activate*(tf: TextField) =\n  ##  Activate text field.\n  ##\n  if not tf.fActive:\n    tf.fCursorIndex = tf.len\n    tf.text = tf.text & tf.cursor\n    tf.fActive = true\n\n\nproc deactivate*(tf: TextField) =\n  ##  Deactivate text field.\n  ##\n  if tf.fActive:\n    let\n      runes = tf.text.toRunes\n      idx = tf.fCursorIndex\n    tf.text = $runes[0..(idx-1)] & $runes[(idx+1)..^1]\n    tf.fCursorIndex = tf.len - 1\n    tf.fActive = false\n\n\nproc draw*(tf: TextField, pos: Coord) =\n  Graphic(tf).draw(pos)\n\n"
  },
  {
    "path": "nimgame2/textgraphic.nim",
    "content": "# nimgame2/textgraphic.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  strutils, unicode,\n  sdl2_nim/sdl,\n  font, texturegraphic, types\n\n\ntype\n  TextGraphic* = ref object of TextureGraphic\n    # Private\n    fLines: seq[string]\n    fAlign: TextAlign\n    fColor: Color\n    fFont: Font\n\n\n#=============#\n# TextGraphic #\n#=============#\n\nproc free*(text: TextGraphic) =\n  TextureGraphic(text).free()\n  text.fLines = @[]\n  text.fAlign = TextAlign.left\n  text.fColor = DefaultFontColor\n  text.fFont = nil\n\n\nproc init*(text: TextGraphic, font: Font) =\n  TextureGraphic(text).init()\n  text.fLines = @[]\n  text.fAlign = TextAlign.left\n  text.fColor = DefaultFontColor\n  text.fFont = font\n\n\nproc newTextGraphic*(font: Font = nil): TextGraphic =\n  new result, free\n  result.init(font)\n\n\nproc update*(text: TextGraphic) =\n  if text.fFont == nil:\n    return\n  let num = text.fLines.len\n  if num < 1:\n    discard text.assignTexture(text.fFont.renderLine(\"\"))\n  elif num < 2:\n    discard text.assignTexture(\n      text.fFont.renderLine(text.fLines[0], text.fColor))\n  else:\n    discard text.assignTexture(\n      text.fFont.renderText(text.fLines, text.fAlign, text.fColor))\n\n\nproc align*(text: TextGraphic): TextAlign {.inline.} =\n  text.fAlign\n\n\nproc `align=`*(text: TextGraphic, val: TextAlign) {.inline.} =\n  text.fAlign = val\n  text.update()\n\n\nproc color*(text: TextGraphic): Color {.inline.} =\n  text.fColor\n\n\nproc `color=`*(text: TextGraphic, val: Color) {.inline.} =\n  text.fColor = val\n  text.update()\n\n\nproc font*(text: TextGraphic): Font {.inline.} =\n  text.fFont\n\n\nproc `font=`*(text: TextGraphic, val: Font) {.inline.} =\n  text.fFont = val\n  text.update()\n\n\nproc lines*(text: TextGraphic): seq[string] {.inline.} =\n  text.fLines\n\n\nproc `lines=`*(text: TextGraphic, lines: openarray[string]) =\n  if text.fFont == nil:\n    return\n  text.fLines = @lines\n  text.freeTexture()\n  text.update()\n\n\nproc text*(text: TextGraphic): string {.inline.} =\n  ##  ``Return`` ``lines``, joined in one string.\n  ##\n  text.fLines.join(\"\\n\")\n\n\nproc wordWrap(s: string, maxLineWidth: int): seq[string] =\n\n  proc isNewLine(s: string): bool =\n    for c in s:\n      if c notin NewLines:\n        return false\n    return true\n\n  template addIfNotSpace(lines: seq[string], newLine: string) =\n    if not unicode.isSpace(newLine):\n      lines.add(newLine)\n\n  result = @[]\n  let runes = s.toRunes\n  var\n    start = 0\n    lastSep = -1\n  for i in 0..runes.high:\n    if runes[i].isWhiteSpace:\n      lastSep = i\n    if runeLen($runes[start..i]) > maxLineWidth or\n       isNewLine($runes[i]):\n      if lastSep < 0:\n        result.addIfNotSpace($runes[start..<i])\n        start = i\n      else:\n        result.addIfNotSpace($runes[start..<lastSep])\n        start = lastSep + 1\n        lastSep = -1\n  if runes.len - start > 0:\n    result.addIfNotSpace($runes[start..^1])\n\n\nproc setText*(text: TextGraphic,\n              val: string,\n              width: int = 0,\n              seps: set[char] = Whitespace) =\n  ##  Set the text ``lines``, wrapping each ``width`` characters.\n  ##\n  if width < 1:\n    text.lines = [val]\n  else:\n    text.lines = val.wordWrap(width)\n\n"
  },
  {
    "path": "nimgame2/textureatlas.nim",
    "content": "# nimgame2/textureatlas.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  math, tables,\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_image as img,\n  settings, texturegraphic, types, utils\n\n\nexport\n  tables\n\n\ntype\n  TextureAtlas* = OrderedTableRef[string, TextureGraphic]\n\n\nproc free*(atlas: TextureAtlas) =\n  for graphic in atlas.values:\n    if not (graphic == nil):\n      graphic.free()\n\n\nproc generate(source: Surface, rect: Rect): TextureGraphic =\n  var\n    srcRect = rect\n    surface: Surface = createRGBSurfaceWithFormat(\n      0, rect.w, rect.h, source.format.BitsPerPixel.cint, source.format.format)\n  if surface == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't create a surface: %s\",\n                    sdl.getError())\n    return nil\n  # blit\n  if not (source.blitSurface(addr(srcRect), surface, nil) == 0):\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't blit a surface: %s\",\n                    sdl.getError())\n    surface.freeSurface()\n    return nil\n  # return and free\n  result = newTextureGraphic()\n  discard result.assignTexture(renderer.createTextureFromSurface(surface))\n  surface.freeSurface()\n\n\nproc load(atlas: TextureAtlas, imagefile, mapfile: string): bool =\n  var source = loadSurface(imagefile)\n  if source == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load texture atlas image %s: %s\",\n                    imagefile, img.getError())\n    return\n  for mapping in mapfile.atlasValues:\n    #atlas.add(mapping.name, source.generate(mapping.rect)) # pre-nim1.4\n    atlas[mapping.name] = source.generate(mapping.rect)\n\n\nproc load(atlas: TextureAtlas, imageSrc, mapSrc: ptr RWops,\n          freeImageSrc: bool = true, freeMapSrc: bool = true): bool =\n  var source = loadSurface(imageSrc, freeImageSrc)\n  if source == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load texture atlas image RW: %s\",\n                    img.getError())\n    return\n  for mapping in mapSrc.atlasValues(\"\", freeSrc = freeMapSrc):\n    #atlas.add(mapping.name, source.generate(mapping.rect)) # pre nim1.4\n    atlas[mapping.name] = source.generate(mapping.rect)\n\n\nproc newTextureAtlas*(imagefile, mapfile: string,\n                      count: int = 64): TextureAtlas =\n  ##  Create a new ``TextureAtlas``.\n  ##\n  ##  ``imagefile`` file containging the image atlas.\n  ##\n  ##  ``mapfile`` CSV file containing atlas mapping in a format of:\n  ##\n  ##  .. code-block\n  ##    name, x, y, w, h\n  ##    ...\n  ##\n  ##  ``count`` expected mappings count.\n  ##\n  new result, free\n  result[] = initOrderedTable[string, TextureGraphic](nextPowerOfTwo(count))\n  discard result.load(imagefile, mapfile)\n\n\nproc newTextureAtlas*(imageSrc, mapSrc: ptr RWops,\n                      count: int = 64,\n                      freeImageSrc: bool = true,\n                      freeMapSrc: bool = true): TextureAtlas =\n  new result, free\n  result[] = initOrderedTable[string, TextureGraphic](nextPowerOfTwo(count))\n  discard result.load(imageSrc, mapSrc, freeImageSrc, freeMapSrc)\n\n"
  },
  {
    "path": "nimgame2/texturegraphic.nim",
    "content": "# nimgame2/texturegraphic.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_image as img,\n  graphic, settings, types\n\n\ntype\n  TextureGraphic* = ref object of Graphic\n    # Private\n    fTexture: sdl.Texture\n    fFormat: uint32\n    fSize: Dim\n\n\n#================#\n# TextureGraphic #\n#================#\n\nproc freeTexture*(graphic: TextureGraphic) =\n  if not (graphic.fTexture == nil):\n    graphic.fTexture.destroyTexture()\n    graphic.fTexture = nil\n\n\nproc free*(graphic: TextureGraphic) =\n  graphic.freeTexture()\n  graphic.fFormat = 0\n  graphic.fSize = (0, 0)\n\n\nproc init*(graphic: TextureGraphic) =\n  graphic.fTexture = nil\n  graphic.fFormat = 0\n  graphic.fSize = (0, 0)\n\n\nproc updateTexture*(graphic: TextureGraphic): bool =\n  if graphic.fTexture == nil:\n    return true\n  result = true\n  var w, h: cint\n  if graphic.fTexture.queryTexture(\n      addr(graphic.fFormat), nil, addr(w), addr(h)) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't get texture attributes: %s\",\n                    sdl.getError)\n    sdl.destroyTexture(graphic.fTexture)\n    return false\n  graphic.fSize.w = w\n  graphic.fSize.h = h\n\n\nproc format*(graphic: TextureGraphic): uint32 {.inline.} =\n  graphic.fFormat\n\n\nproc load*(\n    graphic: TextureGraphic, file: string): bool =\n  ##  Load texture from ``file``.\n  ##\n  ##  ``Return`` `true` on success, `false` otherwise.\n  ##\n  result = true\n  graphic.free()\n  # load texture\n  graphic.fTexture = renderer.loadTexture(file)\n  if graphic.fTexture == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load image %s: %s\",\n                    file, img.getError())\n    return false\n  result = graphic.updateTexture()\n\n\nproc load*(\n    graphic: TextureGraphic, rw: ptr RWops, freeSrc: bool = true): bool =\n  ##  Load texture from ``src`` ``RWops``.\n  ##\n  ##  ``Return`` `true` on success, `false` otherwise.\n  ##\n  result = true\n  graphic.free()\n  # load texture\n  graphic.fTexture = renderer.loadTextureRW(rw, freeSrc)\n  if graphic.fTexture == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load image RW: %s\",\n                    img.getError())\n    return false\n  result = graphic.updateTexture()\n\n\nproc assignTexture*(\n  graphic: TextureGraphic, texture: Texture, freeCurrent: bool = true): bool =\n  ##  Assign already created ``texture``.\n  ##\n  ##  ``freeCurrent`` Free the currently assigned texture.\n  ##  Set to `false` if it used by other objects.\n  ##\n  ##  ``ATTENTION!`` The ``texture`` will be destroyed on ``free()``.\n  ##\n  ##  ``Return`` `true` on success, `false` otherwise.\n  ##\n  if freeCurrent:\n    graphic.freeTexture()\n  graphic.fTexture = texture\n  result = graphic.updateTexture()\n\n\nproc texture*(graphic: TextureGraphic): sdl.Texture {.inline.} =\n  ##  Direct access to the ``graphic``'s texture. Be careful.\n  ##\n  graphic.fTexture\n\n\nproc newTextureGraphic*(): TextureGraphic =\n  new result, free\n  result.init()\n\n\nproc newTextureGraphic*(file: string): TextureGraphic =\n  result = newTextureGraphic()\n  discard result.load(file)\n\n\nproc newTextureGraphic*(src: ptr RWops, freeSrc: bool = true): TextureGraphic =\n  result = newTextureGraphic()\n  discard result.load(src, freeSrc)\n\n\nproc newTextureGraphic*(texture: Texture): TextureGraphic =\n  result = newTextureGraphic()\n  discard result.assignTexture(texture)\n\n\nmethod w*(graphic: TextureGraphic): int {.inline.} =\n  graphic.fSize.w\n\n\nmethod h*(graphic: TextureGraphic): int {.inline.} =\n  graphic.fSize.h\n\n\nmethod dim*(graphic: TextureGraphic): Dim {.inline.} =\n  graphic.fSize\n\n\nproc drawTextureGraphic*(graphic: TextureGraphic,\n                         pos: Coord = (0.0, 0.0),\n                         angle: Angle = 0.0,\n                         scale: Scale = 1.0,\n                         center: Coord = (0.0, 0.0),\n                         flip: Flip = Flip.none,\n                         region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  ##  Draw procedure.\n  ##\n  ##  ``pos`` Draw coordinates.\n  ##\n  ##  ``angle`` Rotation angle in degrees.\n  ##\n  ##  ``scale`` Draw scale. `1.0` for original size.\n  ##\n  ##  ``center`` Center of rendering, rotation, and scaling.\n  ##\n  ##  ``flip`` ``RendererFlip`` value, could be set to:\n  ##  ``FlipNone``, ``FlipHorizontal``, ``FlipVertical``.\n  ##\n  ##  ``region`` Source texture region to draw.\n  ##\n  if graphic.fTexture == nil:\n    return\n  if scale == 0.0:\n    return\n\n  let\n    empty = Rect(x: 0, y: 0, w: 0, h: 0)\n  var\n    size: Dim = if region == empty: graphic.dim\n                else: (region.w.int, region.h.int)\n    cntr = center\n\n  if scale != 1.0:\n    size.w = int(size.w.float * scale)\n    size.h = int(size.h.float * scale)\n    cntr *= scale\n\n  var\n    position = pos - cntr\n    dstRect = sdl.Rect(\n      x: position.x.cint, y: position.y.cint, w: size.w.cint, h: size.h.cint)\n\n  if (angle == 0.0) and flip == Flip.none:\n\n    if region == empty:\n      discard renderer.renderCopy(graphic.fTexture,\n                                  nil,\n                                  addr(dstRect))\n    else:\n      var srcRect = region\n      discard renderer.renderCopy(graphic.fTexture,\n                                  addr(srcRect),\n                                  addr(dstRect))\n\n  else: # renderCopyEx procedure\n\n    var\n      anchor: sdl.Point\n    anchor.x = cntr.x.cint\n    anchor.y = cntr.y.cint\n\n    if region == empty:\n      discard renderer.renderCopyEx(graphic.fTexture,\n                                    nil,\n                                    addr(dstRect),\n                                    angle,\n                                    addr(anchor),\n                                    flip.ord.RendererFlip)\n    else:\n      var srcRect = region\n      discard renderer.renderCopyEx(graphic.fTexture,\n                                    addr(srcRect),\n                                    addr(dstRect),\n                                    angle,\n                                    addr(anchor),\n                                    flip.ord.RendererFlip)\n\n\nmethod draw*(graphic: TextureGraphic,\n             pos: Coord = (0.0, 0.0),\n             angle: Angle = 0.0,\n             scale: Scale = 1.0,\n             center: Coord = (0.0, 0.0),\n             flip: Flip = Flip.none,\n             region: Rect = Rect(x: 0, y: 0, w: 0, h: 0)) =\n  drawTextureGraphic(graphic, pos, angle, scale, center, flip, region)\n\n\nproc drawTiled*(graphic: TextureGraphic,\n                rect: Rect,\n                region: Rect = Rect(x: 0, y: 0, w: 0, h: 0),\n                reverseX = false, reverseY = false) =\n  ##  Repeatedly draw the ``graphic`` to fill the ``rect``.\n  ##\n  ##  ``region`` Source texture region to draw.\n  ##\n  ##  ``reverseX``, ``reverseY`` Drawing progression order.\n  ##\n\n  proc drawTile(graphic: TextureGraphic, src, dst: var Rect) =\n    discard renderer.renderCopy(graphic.fTexture, addr(src), addr(dst))\n\n  proc drawLine(graphic: TextureGraphic,\n                src, dst: var Rect, deltaX, endX: int) =\n    let\n      startX = dst.x\n      lastX = endX - deltaX\n\n    if reverseX: dst.x += deltaX\n    while dst.x < lastX:\n      graphic.drawTile(src, dst)\n      dst.x += dst.w\n\n    if deltaX > 0:\n      var\n        partSrc = Rect(x: src.x, y: src.y, w: deltaX, h: src.h)\n        partDst = dst\n      if reverseX:\n        partSrc.x = src.w - deltaX\n        partSrc.y = src.y\n        partDst.x = startX\n      partDst.w = deltaX\n      graphic.drawTile(partSrc, partDst)\n\n  var srcRect, dstRect: Rect\n\n  srcRect = if region == Rect(x: 0, y: 0, w: 0, h: 0):\n              Rect(x: 0, y: 0, w: graphic.dim.w, h: graphic.dim.h)\n            else:\n              region\n  dstRect = Rect(x: rect.x, y: rect.y, w: graphic.w, h: graphic.h)\n\n  let\n    endX = rect.x + rect.w\n    endY = rect.y + rect.h\n    deltaX = rect.w mod srcRect.w\n    deltaY = rect.h mod srcRect.h\n    startY = dstRect.y\n    lastY = endY - deltaY\n\n  if reverseY: dstRect.y += deltaY\n  while dstRect.y < lastY:\n    graphic.drawLine(srcRect, dstRect, deltaX, endX)\n    dstRect.x = rect.x\n    dstRect.y += dstRect.h\n\n  if deltaY > 0:\n    srcRect.x = 0\n    srcRect.y = 0\n    if reverseY:\n      srcRect.y = srcRect.h - deltaY\n      dstRect.y = startY\n    srcRect.h = deltaY\n    dstRect.h = deltaY\n    graphic.drawLine(srcRect, dstRect, deltaX, endX)\n\n\nproc colorMod*(graphic: TextureGraphic): Color =\n  ##  ``Return`` current color modifier.\n  ##\n  var r, g, b: uint8\n  result = Color(r: 0, g: 0, b: 0, a: 0)\n\n  if graphic.fTexture.getTextureColorMod(addr(r), addr(g), addr(b)) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't get texture color mod: %s\",\n                    sdl.getError())\n    return\n\n  return Color(r: r, g: g, b: b, a: 0xFF)\n\n\nproc `colorMod=`*(graphic: TextureGraphic, color: Color) =\n  ##  Set a new color modifier.\n  ##\n  if graphic.fTexture.setTextureColorMod(color.r, color.g, color.b) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set texture color mod: %s\",\n                    sdl.getError())\n\n\nproc alphaMod*(graphic: TextureGraphic): uint8 =\n  ##  ``Return`` current alpha (transparency) modifier.\n  ##\n  var a: uint8\n  if graphic.fTexture.getTextureAlphaMod(addr(a)) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't get texture alpha mod: %s\",\n                    sdl.getError())\n    return 0xFF\n  return a\n\n\nproc `alphaMod=`*(graphic: TextureGraphic, alpha: uint8) =\n  ##  Set a new alpha (transparency) modifier.\n  ##\n  if graphic.fTexture.setTextureAlphaMod(alpha) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set texture alpha mod: %s\",\n                    sdl.getError())\n\n\nproc blendMod*(graphic: TextureGraphic): Blend =\n  ##  ``Return`` current blending mode.\n  ##\n  var blend: sdl.BlendMode\n\n  if graphic.fTexture.getTextureBlendMode(addr(blend)) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't get texture blend mode: %s\",\n                    sdl.getError())\n    return Blend.none\n  return blend.ord.Blend\n\n\nproc `blendMod=`*(graphic: TextureGraphic, blend: Blend) =\n  ##  Set a new blending mode.\n  ##\n  if graphic.fTexture.setTextureBlendMode(sdl.BlendMode(blend.ord)) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set texture blend mode: %s\",\n                    sdl.getError())\n\n"
  },
  {
    "path": "nimgame2/tilemap.nim",
    "content": "# nimgame2/tilemap.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  entity, graphic, types, utils\n\n\nconst\n  DefaultTileScale*: Scale = 1.02\n\n\ntype\n  TileShow* = tuple[x: Slice[int], y: Slice[int]]\n\n  TileMap* = ref object of Entity\n    # Public\n    map*: seq[seq[int]] ##  Two-dimensional sequence of tile indexes (y, x)\n    fShow: TileShow     ##  Slice of what part of map to show\n    hidden*: seq[int]   ##  The list of tile indexes to not render\n    passable*: seq[int] ##  The list of tile indexes without colliders\n    onlyReachableColliders*: bool ##  Do not create colliders \\\n                                  ##  for unreachable tiles\n    tileScale*: Scale   ##  \\\n      ##  The scaling of individual tiles, mostly used for gap removal. \\\n      ##  Increase on scales vastly different from `1.0`. \\\n      ##  Set to `1.0` if your map isn't rotating or scaling.\n\n  TileCollider* = ref object of BoxCollider\n    # Public\n    value*: int       ##  Tile kind value\n    index*: CoordInt  ##  Map coordinates\n\n  TileMapCollider* = ref object of Collider  ## Collider to use with TileMap\n    # Private\n    map: TileMap\n    tiles: seq[seq[TileCollider]] ##  Two-dimensional sequence of colliders \\\n                                  ##  (y, x)\n\n\n#=========#\n# TileMap #\n#=========#\n\nproc init*(tilemap: TileMap, scaleFix = false) =\n  ##  TileMap initialization.\n  ##\n  ##  ``scaleFix``  set ``tileScale`` to ``DefaultTileScale`` if `true`,\n  ##  or to `1.0` otherwise.\n  ##\n  tilemap.initEntity()\n  tilemap.map = @[]\n  tilemap.fShow = (0..0, 0..0)\n  tilemap.hidden = @[]\n  tilemap.passable = @[]\n  tilemap.tileScale = if scaleFix: DefaultTileScale else: 1.0\n\n\nproc newTileMap*(scaleFix = false): TileMap =\n  ##  Create a new TileMap.\n  ##\n  ##  ``scaleFix``  set ``tileScale`` to ``DefaultTileScale`` if `true`,\n  ##  or to `1.0` otherwise.\n  ##\n  result = new TileMap\n  result.init(scaleFix)\n\n\nproc show*(tilemap: TileMap): TileShow {.inline.} =\n  ##  ``Return`` a currently shown slices of tiles.\n  ##\n  return tilemap.fShow\n\n\nproc `show=`*(tilemap: TileMap, val: TileShow) =\n  ##  Set new values for the shown slices of tiles.\n  ##\n  if tilemap.fShow == val:\n    return\n  var show: TileShow\n  show.y.a = if val.y.a < 0: 0 else: val.y.a\n  show.y.b = if val.y.b > tilemap.map.high: tilemap.map.high else: val.y.b\n  show.x.a = if val.x.a < 0: 0 else: val.x.a\n  show.x.b = if val.x.b > tilemap.map[0].high: tilemap.map[0].high else: val.x.b\n  tilemap.fShow = show\n\n\ntemplate updateShow(tilemap: TileMap) =\n  ##  Updates ``TileMap.show`` property,\n  ##  according to ``TileMap.map`` dimensions.\n  ##\n  if tilemap.fShow == (0..0, 0..0):\n    tilemap.fShow = (x: 0..tilemap.map[0].high, y: 0..tilemap.map.high)\n\n\nproc dimTiles*(tilemap: TileMap): Dim =\n  ##  ``Return`` dimensions of the ``tilemap``, calculated from its ``map``\n  ##  (in tiles).\n  ##\n  result = (0, 0)\n  for row in tilemap.map:\n    if result.w < row.len:\n      result.w = row.len\n    inc result.h\n\n\nproc dim*(tilemap: TileMap): Dim {.inline.} =\n  ##  ``Return`` dimensions of the ``tilemap``, calculated from its ``map``\n  ##  (in pixels).\n  ##\n  result = tilemap.dimTiles * tilemap.sprite.dim\n\n\nproc centrify*(tilemap: TileMap, hor = HAlign.center, ver = VAlign.center) =\n  ##  Set ``tilemap``'s ``center``, according to the given align.\n  ##\n  ##  ``hor`` Horisontal align: left, center, or right\n  ##\n  ##  ``ver`` Vertical align: top, center, or bottom\n  ##\n  if tilemap.sprite == nil:\n    return\n\n  var dim = tilemap.dim\n\n  # horisontal align\n  tilemap.center.x = case hor:\n  of HAlign.left:   0.0\n  of HAlign.center: dim.w / 2\n  of HAlign.right:  dim.w.float - 1\n\n  # vertical align\n  tilemap.center.y = case ver:\n  of VAlign.top:    0.0\n  of VAlign.center: dim.h / 2\n  of VAlign.bottom: dim.h.float - 1\n\n\niterator tileIndex*(tilemap: TileMap, value: int): CoordInt =\n  ##  Iterate through tiles with a specific ``value``.\n  ##\n  for y in 0..tilemap.map.high:\n    for x in 0..tilemap.map[y].high:\n      if tilemap.map[y][x] == value:\n        yield (x, y)\n\n\nproc firstTileIndex*(tilemap: TileMap, value: int): CoordInt =\n  ##  ``Return`` the first tile index with a specific ``value``.\n  ##\n  for i in tilemap.tileIndex(value):\n    return i\n\n\nproc tileIndex*(tilemap: TileMap, pos: Coord): CoordInt =\n  ##  ``Return`` the tile map index of a tile\n  ##  that is located at the given screen position.\n  ##\n  let\n    dim: Coord = tilemap.sprite.dim * tilemap.absScale\n    offset: Coord = pos - tilemap.pos\n  result = (\n    int(offset.x / dim.x),\n    int(offset.y / dim.y))\n\n\nproc tilePos*(tilemap: TileMap, index: CoordInt): Coord =\n  ##  ``Return`` screen position of a tile with the given tile map index.\n  ##\n  let\n    dim: Coord = tilemap.sprite.dim * tilemap.absScale\n    offset: Coord =\n      - (tilemap.tileScale - 1) * tilemap.sprite.dim * tilemap.absScale / 2.0\n  result = (\n    index.x.float * dim.x + offset.x,\n    index.y.float * dim.y + offset.y)\n\n\ntemplate tile*(tilemap: TileMap, index: CoordInt): var int =\n  ##  Direct access to a single tile value.\n  ##\n  tilemap.map[index.y][index.x]\n\n\nproc renderTileMap*(tilemap: TileMap) =\n  if not (tilemap.graphic == nil) and\n     not (tilemap.sprite == nil) and\n     tilemap.visible:\n    var pos: Coord\n    let\n      scale = tilemap.tileScale\n      absScale = tilemap.absScale\n      drawScale = scale * absScale\n      dim: Coord = tilemap.sprite.dim * absScale\n      offset: Coord = - (scale - 1) * tilemap.sprite.dim * absScale / 2.0\n      drawCenter: Coord = tilemap.center / scale\n\n    tilemap.updateShow()\n    for y in tilemap.fShow.y:\n      pos.y = y.float * dim.y + offset.y\n\n      for x in tilemap.fShow.x:\n        pos.x = x.float * dim.x + offset.x\n\n        let val = tilemap.map[y][x]\n\n        if val in tilemap.hidden: # Do not render hidden tiles\n          continue\n\n        # Draw\n        tilemap.graphic.draw(tilemap.absPos + pos.rotate(tilemap.absRot),\n                             tilemap.absRot,\n                             drawScale,\n                             drawCenter,\n                             tilemap.flip,\n                             tilemap.sprite.frames[val])\n\n\nmethod render*(tilemap: TileMap) =\n  tilemap.renderTileMap()\n\n\n#==============#\n# TileCollider #\n#==============#\n\nproc init*(t: TileCollider,\n           parent: TileMap, pos: Coord = (0, 0), dim: Dim = (0, 0),\n           value: int, index: CoordInt) =\n  BoxCollider(t).init(parent, pos, dim)\n  t.value = value\n  t.index = index\n\n\nproc newTileCollider*(parent: TileMap, pos: Coord = (0, 0), dim: Dim = (0, 0),\n                      value: int, index: CoordInt): TileCollider =\n  new result\n  result.init(parent, pos, dim, value, index)\n\n\n#=================#\n# TileMapCollider #\n#=================#\n\nproc init*(t: TileMapCollider, parent: TileMap, pos: Coord = (0, 0),\n           dim: Dim = (0, 0)) =\n  Collider(t).init(parent, pos)\n  t.tiles = @[]\n\n  parent.updateShow()\n\n  let\n    scale = parent.tileScale\n    spriteDim: Coord = parent.sprite.dim\n    dim: Coord = spriteDim * scale\n    offset: Coord = spriteDim / 2.0 - parent.center\n\n  var\n    position: Coord\n    neighbors: seq[seq[int]]\n\n  if parent.onlyReachableColliders and parent.map.len > 0:\n    let\n      lenY = parent.map.len\n      highY = parent.map.high-1\n      lenX = parent.map[0].len\n      highX = parent.map[0].high-1\n\n    # count neighbors\n    newSeq(neighbors, lenY)\n    for y in 1..highY:\n      newSeq(neighbors[y], lenX)\n      for x in 1..highX:\n        if parent.map[y-1][x] notin parent.passable:\n          inc neighbors[y][x]\n        if parent.map[y+1][x] notin parent.passable:\n          inc neighbors[y][x]\n        if parent.map[y][x-1] notin parent.passable:\n          inc neighbors[y][x]\n        if parent.map[y][x+1] notin parent.passable:\n          inc neighbors[y][x]\n    newSeq(neighbors[0], lenX)\n    newSeq(neighbors[^1], lenX)\n\n  for y in 0..parent.map.high:\n    position.y = dim.y * y.float / scale + offset.y\n    t.tiles.add @[]\n\n    for x in 0..parent.map[y].high:\n      t.tiles[y].add nil\n      if parent.onlyReachableColliders:\n        if neighbors[y][x] > 3:\n          continue\n      if parent.map[y][x] notin parent.passable:\n        position.x = dim.x * x.float / scale + offset.x\n        t.tiles[y][x] = newTileCollider(\n          parent, position, dim, parent.map[y][x], (x, y))\n\n\nproc newTileMapCollider*(parent: TileMap,\n                         pos: Coord = (0, 0),\n                         dim: Dim = (0, 0)): TileMapCollider =\n  ##  Create a ``TileMapCollider`` for the ``parent`` ``TileMap``.\n  ##\n  ##  Most of the times you should use ``initCollider()`` instead.\n  ##\n  ##  ``pos`` Collider's relative position. Usually `(0, 0)`.\n  ##\n  ##  ``dim`` Tile dimensions.\n  ##\n  result = new TileMapCollider\n  result.init(parent, pos, dim)\n\n\niterator tileColliders*(t: TilemapCollider): TileCollider =\n  ##  Iterate through all tile colliders of ``t`` TilemapCollider.\n  ##\n  for y in t.map.show.y:\n    for x in t.map.show.x:\n      let tile = t.tiles[y][x]\n      if not (tile == nil):\n        yield tile\n\n\nmethod render*(t: TileMapCollider) =\n  for tile in t.tileColliders:\n    tile.render()\n  t.renderCollider()\n\n\nproc initCollider*(tilemap: TileMap) =\n  ##  Initialize a collider for the ``tilemap``.\n  ##\n  let collider = newTileMapCollider(tilemap, (0, 0), tilemap.sprite.dim)\n  collider.map = tilemap\n  tilemap.collider = collider\n\n\ntemplate collisionList*(t: TileMapCollider,\n                        a: typed,\n                        first: bool = false): seq[TileCollider] =\n  ##  Get a list of collided ``TileColliders``.\n  ##\n  ##  ``a`` collision target (``Coord``, any ``Collider``, etc.)\n  ##\n  ##  ``first`` If true, return after the first detected collision.\n  ##\n  var result: seq[TileCollider] = @[]\n  for tile in t.tileColliders:\n    if tile.collide(a):\n      result.add(tile)\n      if first: break\n  result\n\n\n# with Coord\n\nmethod collide*(t: TileMapCollider, pos: Coord): bool =\n  for tile in t.tileColliders:\n    if tile.collide(pos):\n      return true\n  return false\n\n\n# with Collider\n\nmethod collide*(t: TileMapCollider, a: Collider): bool =\n  for tile in t.tileColliders:\n    if tile.collide(a):\n      return true\n  return false\n\n\nmethod collide*(a: Collider, t: TileMapCollider): bool {.inline.} =\n  collide(t, a)\n\n\n# with BoxCollider\n\nmethod collide*(t: TileMapCollider, b: BoxCollider): bool =\n  for tile in t.tileColliders:\n    if tile.collide(b):\n      return true\n  return false\n\n\nmethod collide*(b: BoxCollider, t: TileMapCollider): bool {.inline.} =\n  collide(t, b)\n\n\n# with CircleCollider\n\nmethod collide*(t: TileMapCollider, c: CircleCollider): bool =\n  for tile in t.tileColliders:\n    if tile.collide(c):\n      return true\n  return false\n\n\nmethod collide*(c: CircleCollider, t: TileMapCollider): bool {.inline.} =\n  collide(t, c)\n\n\n# with LineCollider\n\nmethod collide*(t: TileMapCollider, d: LineCollider): bool =\n  for tile in t.tileColliders:\n    if tile.collide(d):\n      return true\n  return false\n\n\nmethod collide*(d: LineCollider, t: TileMapCollider): bool {.inline.} =\n  collide(t, d)\n\n\n# with PolyCollider\n\nmethod collide*(t: TileMapCollider, p: PolyCollider): bool =\n  for tile in t.tileColliders:\n    if tile.collide(p):\n      return true\n  return false\n\n\nmethod collide*(p: PolyCollider, t: TileMapCollider): bool {.inline.} =\n  collide(t, p)\n\n\n# with GroupCollider\n\n\nmethod collide*(t: TileMapCollider, g: GroupCollider): bool =\n  for c in g.list:\n    if collide(t, c):\n      return true\n  return false\n\n\nmethod collide*(g: GroupCollider, t: TilemapCollider): bool {.inline.} =\n  collide(t, g)\n\n\n# with TileMapCollider\n\nmethod collide*(t1, t2: TileMapCollider): bool =\n  for tile in t1.tileColliders:\n    if t2.collide(tile):\n      return true\n  return false\n\n"
  },
  {
    "path": "nimgame2/truetypefont.nim",
    "content": "# nimgame2/truetypefont.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  sdl2_nim/sdl,\n  sdl2_nim/sdl_ttf as ttf,\n  font, settings, types\n\n\ntype\n  TrueTypeFont* = ref object of font.Font\n    # Private\n    fFont: ttf.Font\n\n\n#==============#\n# TrueTypeFont #\n#==============#\n\nproc free*(font: TrueTypeFont) =\n  if not (font.fFont == nil):\n    font.fFont.closeFont()\n    font.fFont = nil\n\n\nproc init*(font: TrueTypeFont) =\n  font.fFont = nil\n\n\nproc newTrueTypeFont*(): TrueTypeFont =\n  new result, free\n  result.init()\n\n\nproc load*(font: TrueTypeFont, file: string, size: int): bool =\n  ##  Load ``font`` data from a ``file``.\n  ##\n  ##  ``size`` required font size.\n  ##\n  result = true\n  font.free()\n  # load font\n  font.fFont = ttf.openFont(file, size)\n  if font.fFont == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load font %s: %s\",\n                    file, ttf.getError())\n    return false\n\n\nproc load*(font: TrueTypeFont, src: ptr RWops, size: int,\n           freeSrc: bool = true): bool =\n  ##  Load ``font`` data from a ``src`` ``RWops``.\n  ##\n  ##  ``size`` required font size.\n  ##\n  result = true\n  font.free()\n  # load font\n  font.fFont = ttf.openFontRW(src, freeSrc, size)\n  if font.fFont == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load font RW: %s\",\n                    ttf.getError())\n    return false\n\n\nmethod getError*(font: TrueTypeFont): string =\n  $ttf.getError()\n\n\nmethod charH*(font: TrueTypeFont): int =\n  ##  ``Return`` a font character's height.\n  ##\n  if font.fFont == nil:\n    return 0\n  return font.fFont.fontHeight()\n\n\nmethod lineDim*(font: TrueTypeFont, line: string): Dim =\n  ##  ``Return`` dimensions of a ``line`` of text, written in ``font``.\n  ##\n  if font.fFont == nil:\n    return (0, 0)\n  var w, h: cint\n  discard font.fFont.sizeUTF8(line, addr(w), addr(h))\n  return (w.int, h.int)\n\n\nproc renderTrueTypeFont*(font: TrueTypeFont,\n                         line: string,\n                         color: Color = DefaultFontColor): Surface =\n  if font.fFont == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't render nil font\")\n    return nil\n  if line.len < 1:\n    return nil\n  result = font.fFont.renderUTF8_Blended(line, color)\n  if result.setSurfaceAlphaMod(color.a) != 0:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't set surface alpha modifier: %s\",\n                    sdl.getError())\n\n\nmethod render*(font: TrueTypeFont,\n               line: string,\n               color: Color = DefaultFontColor): Surface =\n  renderTrueTypeFont(font, line, color)\n\n"
  },
  {
    "path": "nimgame2/tween.nim",
    "content": "# nimgame2/tween.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  math\n\n\nconst\n  Pi2 = Pi / 2\n  X2Pi = Pi * 2\n  BounceTime = [1 / 2.75, 2 / 2.75,   2.5 / 2.75]\n  BounceSub =  [0.0,      1.5 / 2.75, 2.25 / 2.75,  2.625 / 2.75]\n  BounceAdd =  [0.0,      0.75,       0.9375,       0.984375]\n  BounceMul = 7.5625\n  DefaultPeriodMul = 0.3\n  DefaultBack = 1.70158\n\n\ntype\n  TweenProcedure*[V] = proc(\n    start, distance: V,\n    elapsed, duration: float,\n    amplitude, period: V, back: float): V\n\n  TweenEnder*[T,V] = proc(tween: Tween[T,V])\n\n  Tween*[T,V] = ref object of RootObj\n    # Private\n    target: T                   ##  Target object\n    get: proc(e: T): V          ##  A value getter procedure\n    set: proc(e: T, v: V)       ##  A value setter procedure\n    fStart, fFinish: V          ##  Starting and finishing values\n    fDistance: V                ##  Total distance (finish - start)\n    fElapsed, fDuration: float  ##  Elapsed and total duration (in seconds)\n    # Public\n    amplitude*, period*: V      ##  Ease elastic amplitude and period\n    back*: float                ##  Ease Back coefficient\n    loop*, loopLimit*: int      ##  Loop counter and loop limit\n    playing*: bool              ##  Playing status flag\n    procedure*: TweenProcedure[V] ##  \\\n      ##  Value changing procedure, called from the ``update()``\n    ender*: TweenEnder[T,V] ## \\\n      ##  Loop ending procedure, called from the ``update()``\n\n\n#=========#\n# Private #\n#=========#\n\ntemplate progress(elapsed, duration: float): float =\n  (elapsed / duration)\n\n\nproc nextLoop(tween: Tween): bool =\n  inc tween.loop\n  if tween.loopLimit >= 0:\n    result = tween.loop < tween.loopLimit\n  else:\n    result = true\n  tween.playing = result\n\n\n#========#\n# Public #\n#========#\n\nproc value*[T,V](tween: Tween[T,V]): V {.inline.} =\n  ##  ``Return`` the target value of ``tween``.\n  ##\n  if not (tween.get == nil):\n    return tween.get(tween.target)\n\n\nproc `value=`*[T,V](tween: Tween[T,V], val: V) {.inline.} =\n  ##  Set the target value of ``tween`` to ``val``.\n  ##\n  if not (tween.set == nil):\n    tween.set(tween.target, val)\n\n\nproc start*[T,V](tween: Tween[T,V]): V {.inline.} =\n  ##  ``Return`` starting value.\n  ##\n  return tween.fStart\n\n\nproc finish*[T,V](tween: Tween[T,V]): V {.inline.} =\n  ##  ``Return`` final value.\n  ##\n  return tween.fFinish\n\n\nproc distance*[T,V](tween: Tween[T,V]): V {.inline.} =\n  ##  ``Return`` the total distance.\n  ##\n  return tween.fDistance\n\n\nproc duration*(tween: Tween): float {.inline.} =\n  ##  ``Return`` ``tween``'s total duration.\n  ##\n  return tween.fDuration\n\n\nproc elapsed*(tween: Tween): float {.inline.} =\n  ##  ``Return`` ``tween``'s elapsed duration.\n  ##\n  return tween.fElapsed\n\n\nproc progress*(tween: Tween): float =\n  ##  ``Return`` ``tween`` progress in `0.0`..`1.0` range.\n  ##\n  return tween.fElapsed / tween.fDuration\n\n\nproc play*(tween: Tween) =\n  ##  Start playing ``tween`` with previously set params.\n  ##\n  tween.value = tween.fStart\n  tween.fElapsed = 0.0\n  tween.playing = true\n  tween.loop = 0\n\n\nproc stop*(tween: Tween) =\n  ##  Stop playing ``tween`` immediately.\n  ##\n  tween.value = tween.fFinish\n  tween.fElapsed = 0.0\n  tween.playing = false\n  tween.loop = 0\n\n\nproc setup*[T,V](tween: Tween[T,V],\n    start, finish: V, duration: float, loops = 0) =\n  ##  Set up ``tween`` params.\n  ##\n  ##  ``start``, ``finish`` Limiting values for the target variable.\n  ##\n  ##  ``duration`` Duration (in seconds).\n  ##\n  ##  ``loops`` Loop limit. `0` for one loop, `-1` for looping forever.\n  ##\n  tween.fStart = start\n  tween.fFinish = finish\n  tween.fDuration = duration\n  tween.fDistance = finish - start\n  tween.amplitude = start - start\n  tween.period = start / start * DefaultPeriodMul * duration\n  tween.back = DefaultBack\n  tween.loopLimit = loops\n\n\nproc update*(tween: Tween, elapsed: float) =\n  ##  Tween update procedure. Call it from the scene update method.\n  ##\n  if tween.playing:\n    tween.fElapsed += elapsed\n    tween.value = tween.procedure(\n      tween.start, tween.distance, tween.elapsed, tween.duration,\n      tween.amplitude, tween.period, tween.back)\n    tween.ender(tween)\n\n\n#============#\n# Procedures #\n#============#\n\n# LINEAR #\n\nproc linear*[V](start, distance: V, elapsed, duration: float,\n                amplitude, period: V, back: float): V {.procvar.} =\n  ##  Linear tween procedure.\n  ##\n  return start + distance * progress(elapsed, duration)\n\n\n# QUAD #\n\nproc inQuad*[V](start, distance: V, elapsed, duration: float,\n                amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Quadratic tween procedure.\n  ##\n  return start + distance * pow(progress(elapsed, duration), 2)\n\n\nproc outQuad*[V](start, distance: V, elapsed, duration: float,\n                 amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Quadratic tween procedure.\n  ##\n  let progress = progress(elapsed, duration)\n  return start - distance * progress * (progress - 2)\n\n\nproc inOutQuad*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Quadratic tween procedure.\n  ##\n  let x2progress = progress(elapsed, duration) * 2\n  return\n    if x2progress < 1:\n      start + distance / 2.0 * pow(x2progress, 2)\n    else:\n      start - distance / 2.0 *\n        ((x2progress - 1) * (x2progress - 3) - 1)\n\n\n# CUBIC #\n\nproc inCubic*[V](start, distance: V, elapsed, duration: float,\n                 amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Cubic tween procedure.\n  ##\n  return start + distance * pow(progress(elapsed, duration), 3)\n\n\nproc outCubic*[V](start, distance: V, elapsed, duration: float,\n                  amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Cubic tween procedure.\n  ##\n  return start + distance * (pow(progress(elapsed, duration) - 1, 3) + 1)\n\n\nproc inOutCubic*[V](start, distance: V, elapsed, duration: float,\n                    amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Cubic tween procedure.\n  ##\n  let x2progress = progress(elapsed, duration) * 2\n  return\n    if x2progress < 1:\n      start + distance / 2.0 * pow(x2progress, 3)\n    else:\n      start + distance / 2.0 * (pow(x2progress - 2, 3) + 2)\n\n\nproc outInCubic*[V](start, distance: V, elapsed, duration: float,\n                    amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out/In Cubic tween procedure.\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outCubic(start, distance2, x2elapsed, duration,\n               amplitude, period, back)\n    else:\n      inCubic(start + distance2, distance2, x2elapsed - duration, duration,\n               amplitude, period, back)\n\n\n# QUART #\n\nproc inQuart*[V](start, distance: V, elapsed, duration: float,\n                 amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Quart tween procedure.\n  ##\n  return start + distance * pow(progress(elapsed, duration), 4)\n\n\nproc outQuart*[V](start, distance: V, elapsed, duration: float,\n                  amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Quart tween procedure.\n  ##\n  return start - distance * (pow(progress(elapsed, duration) - 1, 4) - 1)\n\n\nproc inOutQuart*[V](start, distance: V, elapsed, duration: float,\n                    amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Quart tween procedure.\n  ##\n  let x2progress = progress(elapsed, duration) * 2\n  return\n    if x2progress < 1:\n      start + distance / 2.0 * pow(x2progress, 4)\n    else:\n      start - distance / 2.0 * (pow(x2progress - 2, 4) - 2)\n\n\nproc outInQuart*[V](start, distance: V, elapsed, duration: float,\n                    amplitude, period: V, back: float): V {.procvar.} =\n  ##   Ease Out/In Quart tween procedure\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outQuart(start, distance2, x2elapsed, duration,\n               amplitude, period, back)\n    else:\n      inQuart(start + distance2, distance2, x2elapsed - duration, duration,\n              amplitude, period, back)\n\n\n# QUINT #\n\nproc inQuint*[V](start, distance: V, elapsed, duration: float,\n                 amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Quint tween procedure.\n  ##\n  return start + distance * pow(progress(elapsed, duration), 5)\n\n\nproc outQuint*[V](start, distance: V, elapsed, duration: float,\n                  amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Quint tween procedure.\n  ##\n  return start + distance * (pow(progress(elapsed, duration) - 1, 5) + 1)\n\n\nproc inOutQuint*[V](start, distance: V, elapsed, duration: float,\n                    amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Quint tween procedure.\n  ##\n  let x2progress = progress(elapsed, duration) * 2\n  return\n    if x2progress < 1:\n      start + distance / 2.0 * pow(x2progress, 5)\n    else:\n      start + distance / 2.0 * (pow(x2progress - 2, 5) + 2)\n\n\nproc outInQuint*[V](start, distance: V, elapsed, duration: float,\n                    amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out/In Quint tween procedure.\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outQuint(start, distance2, x2elapsed, duration,\n               amplitude, period, back)\n    else:\n      inQuint(start + distance2, distance2, x2elapsed - duration, duration,\n              amplitude, period, back)\n\n\n# SINE #\n\nproc inSine*[V](start, distance: V, elapsed, duration: float,\n                amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Sine tween procedure.\n  ##\n  return start + distance - distance * cos(progress(elapsed, duration) * Pi2)\n\n\nproc outSine*[V](start, distance: V, elapsed, duration: float,\n                 amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Sine tween procedure.\n  ##\n  return start + distance * sin(progress(elapsed, duration) * Pi2)\n\n\nproc inOutSine*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Sine tween procedure.\n  ##\n  return start - distance / 2.0 * (cos(progress(elapsed, duration) * Pi) - 1)\n\n\nproc outInSine*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out/In Sine tween procedure.\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outSine(start, distance2, x2elapsed, duration,\n              amplitude, period, back)\n    else:\n      inSine(start + distance2, distance2, x2elapsed - duration, duration,\n             amplitude, period, back)\n\n\n# EXPO #\n\nproc inExpo*[V](start, distance: V, elapsed, duration: float,\n                amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Expo tween procedure.\n  ##\n  return\n    if elapsed == 0.0:\n      start\n    else:\n      start - distance * 0.001 + distance *\n        pow(2, 10 * (progress(elapsed, duration) - 1))\n\n\nproc outExpo*[V](start, distance: V, elapsed, duration: float,\n                 amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Expo tween procedure.\n  ##\n  return\n    if elapsed == duration:\n      start + distance\n    else:\n      start + distance * 1.001 * (-pow(2, -10 * progress(elapsed, duration)) + 1)\n\n\nproc inOutExpo*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Expo tween procedure.\n  ##\n  if elapsed == 0.0:\n    return start\n  elif elapsed == duration:\n    return start + distance\n  else:\n    let x2progress = progress(elapsed, duration) * 2\n    return\n      if x2progress < 1:\n        start - distance * 0.0005 + distance / 2.0 *\n          pow(2, 10 * (x2progress - 1))\n      else:\n        start + distance / 2.0 * 1.0005 *\n          (-pow(2, -10 * (x2progress - 1)) + 2)\n\n\nproc outInExpo*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out/In Expo tween procedure.\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outExpo(start, distance2, x2elapsed, duration,\n              amplitude, period, back)\n    else:\n      inExpo(start + distance2, distance2, x2elapsed - duration, duration,\n             amplitude, period, back)\n\n\n# CIRC #\n\nproc inCirc*[V](start, distance: V, elapsed, duration: float,\n                amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Circ tween procedure.\n  ##\n  return start - distance *\n    (sqrt(1 - pow(progress(elapsed, duration), 2)) - 1)\n\n\nproc outCirc*[V](start, distance: V, elapsed, duration: float,\n                 amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Circ tween procedure.\n  ##\n  return start + distance *\n    sqrt(1 - pow(progress(elapsed, duration) - 1, 2))\n\n\nproc inOutCirc*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Circ tween procedure.\n  ##\n  let x2progress = progress(elapsed, duration) * 2\n  return\n    if x2progress < 1:\n      start - distance / 2.0 * (sqrt(1 - pow(x2progress, 2)) - 1)\n    else:\n      start + distance / 2.0 * (sqrt(1 - pow(x2progress - 2, 2)) + 1)\n\n\nproc outInCirc*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out/In Circ tween procedure.\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outCirc(start, distance2, x2elapsed, duration,\n              amplitude, period, back)\n    else:\n      inCirc(start + distance2, distance2, x2elapsed - duration, duration,\n             amplitude, period, back)\n\n\n# BOUNCE #\n\nproc outBounce*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Bounce tween procedure.\n  ##\n  let progress = progress(elapsed, duration)\n  return\n    if progress < BounceTime[0]:\n      start + distance *\n        (BounceMul * pow(progress - BounceSub[0], 2) + BounceAdd[0])\n    elif progress < BounceTime[1]:\n      start + distance *\n        (BounceMul * pow(progress - BounceSub[1], 2) + BounceAdd[1])\n    elif progress < BounceTime[2]:\n      start + distance *\n        (BounceMul * pow(progress - BounceSub[2], 2) + BounceAdd[2])\n    else:\n      start + distance *\n        (BounceMul * pow(progress - BounceSub[3], 2) + BounceAdd[3])\n\n\nproc inBounce*[V](start, distance: V, elapsed, duration: float,\n                  amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Bounce tween procedure.\n  ##\n  return\n    start + distance -\n      outBounce(start - start, distance, duration - elapsed, duration,\n                amplitude, period, back)\n\n\nproc inOutBounce*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Bounce tween procedure.\n  ##\n  let x2elapsed = elapsed * 2\n  return\n    if x2elapsed < duration:\n      start +\n        inBounce(start - start, distance, x2elapsed, duration,\n                 amplitude, period, back) * 0.5\n    else:\n      start + distance / 2.0 +\n        outBounce(start - start, distance, x2elapsed - duration, duration,\n                  amplitude, period, back) * 0.5\n\n\nproc outInBounce*[V](start, distance: V, elapsed, duration: float,\n                     amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out/In Bounce tween procedure.\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outBounce(start, distance2, x2elapsed, duration,\n                amplitude, period, back)\n    else:\n      inBounce(start + distance2, distance2, x2elapsed - duration, duration,\n               amplitude, period, back)\n\n\n# ELASTIC #\n\nproc inElastic*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Elastic tween procedure.\n  ##\n  if elapsed == 0:\n    return start\n  if elapsed == duration:\n    return start + distance\n\n  var amp, s: V\n  if amplitude < abs(distance):\n    amp = distance\n    s = period / 4.0\n  else:\n    amp = amplitude\n    s = period / X2Pi * arcsin(distance / amp)\n\n  let progress1 = progress(elapsed, duration) - 1\n\n  return\n    start -\n      amp * pow(2, 10 * progress1) *\n      sin((progress1 * duration - s) * X2Pi / period)\n\n\nproc outElastic*[V](start, distance: V, elapsed, duration: float,\n                    amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Elastic tween procedure.\n  ##\n  if elapsed == 0:\n    return start\n  if elapsed == duration:\n    return start + distance\n\n  var amp, s: V\n  if amplitude < abs(distance):\n    amp = distance\n    s = period / 4.0\n  else:\n    amp = amplitude\n    s = period / X2Pi * arcsin(distance / amp)\n\n  let progress = progress(elapsed, duration)\n\n  return\n    start + distance +\n      amp * pow(2, -10 * progress) *\n      sin((progress * duration - s) * X2Pi / period)\n\n\nproc inOutElastic*[V](start, distance: V, elapsed, duration: float,\n                      amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Elastic tween procedure.\n  ##\n  if elapsed == 0:\n    return start\n  if elapsed == duration:\n    return start + distance\n\n  var amp, s: V\n  if amplitude < abs(distance):\n    amp = distance\n    s = period / 4.0\n  else:\n    amp = amplitude\n    s = period / X2Pi * arcsin(distance / amp)\n\n  let\n    x2progress1 = progress(elapsed, duration) * 2 - 1\n  return\n    if x2progress1 < 0:\n      start -\n        amp * pow(2, 10 * x2progress1) *\n        sin((x2progress1 * duration - s) * X2Pi / period) * 0.5\n    else:\n      start + distance +\n        amp * pow(2, -10 * x2progress1) *\n        sin((x2progress1 * duration - s) * X2Pi / period) * 0.5\n\n\nproc outInElastic*[V](start, distance: V, elapsed, duration: float,\n                      amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out/In Elastic tween procedure.\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outElastic(start, distance2, x2elapsed, duration,\n                 amplitude, period, back)\n    else:\n      inElastic(start + distance2, distance2, x2elapsed - duration, duration,\n                amplitude, period, back)\n\n\n# BACK #\n\nproc inBack*[V](start, distance: V, elapsed, duration: float,\n                amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In Back tween procedure.\n  ##\n  let progress = progress(elapsed, duration)\n  return\n    start + distance *\n      pow(progress, 2) * ((back + 1) * progress - back)\n\n\nproc outBack*[V](start, distance: V, elapsed, duration: float,\n                 amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out Back tween procedure.\n  ##\n  let progress1 = progress(elapsed, duration) - 1\n  return\n    start + distance *\n      (pow(progress1, 2) * ((back + 1) * progress1 + back) + 1)\n\n\nproc inOutBack*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease In/Out Back tween procedure.\n  ##\n  let\n    backN = back * 1.525\n    x2progress = progress(elapsed, duration) * 2\n  if x2progress < 1:\n    return\n      start + distance / 2.0 *\n        (pow(x2progress, 2) * ((backN + 1) * x2progress - backN))\n  else:\n    let x2progress2 = x2progress - 2\n    return\n      start + distance / 2.0 *\n        (pow(x2progress2, 2) * ((backN + 1) * x2progress2 + backN) + 2)\n\n\nproc outInBack*[V](start, distance: V, elapsed, duration: float,\n                   amplitude, period: V, back: float): V {.procvar.} =\n  ##  Ease Out/In Back tween procedure.\n  ##\n  let\n    x2elapsed = elapsed * 2\n    distance2 = distance / 2.0\n  return\n    if x2elapsed < duration:\n      outBack(start, distance2, x2elapsed, duration,\n              amplitude, period, back)\n    else:\n      inBack(start + distance2, distance2, x2elapsed - duration, duration,\n             amplitude, period, back)\n\n\n#========#\n# Enders #\n#========#\n\nproc reversing*(tween: Tween) {.procvar.} =\n  ##  Tween ender.\n  ##\n  ##  Reverses the direction on each loop.\n  ##\n  ##  Default option.\n  ##\n  ##  ``Note:`` each reversal counts as one loop.\n  ##\n  if tween.progress >= 1.0:\n    if tween.nextLoop():\n      swap(tween.fStart, tween.fFinish)\n      tween.fDistance = -tween.fDistance\n      tween.fElapsed = 0.0\n\n\nproc repeating*(tween: Tween) {.procvar.} =\n  ##  Tween ender.\n  ##\n  ##  Repeats from ``start`` to ``finish`` on each loop.\n  ##\n  if tween.progress >= 1.0:\n    if tween.nextLoop():\n      tween.value = tween.fStart\n      tween.fElapsed = 0.0\n\n\n#=======#\n# Tween #\n#=======#\n\nproc init*[T,V](tween: Tween[T,V],\n                target: T,\n                get: proc(e: T): V,\n                set: proc(e: T, v: V)) =\n  ##  Set new bindings for the ``tween``.\n  ##\n  ##  ``target`` The target object of this tween.\n  ##\n  ##  ``get`` A value getter procedure.\n  ##\n  ##  ``set`` A value setter procedure.\n  ##\n  tween.target = target\n  tween.get = get\n  tween.set = set\n  tween.playing = false\n  tween.procedure = linear\n  tween.ender = reversing\n\n\nproc newTween*[T,V](target: T,\n                    get: proc(e: T): V,\n                    set: proc(e: T, v: V)): Tween[T,V] =\n  ##  Create a new ``Tween``.\n  ##\n  ##  ``target`` The target object of this tween.\n  ##\n  ##  ``get`` A value getter procedure.\n  ##\n  ##  ``set`` A value setter procedure.\n  ##\n  new result\n  result.init(target, get, set)\n\n"
  },
  {
    "path": "nimgame2/types.nim",
    "content": "# nimgame2/types.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  math,\n  sdl2_nim/sdl\n\n\nexport\n  sdl.Color, sdl.Event, sdl.EventKind, sdl.Keycode, sdl.Rect, sdl.Renderer,\n  sdl.Surface, sdl.Texture\n\n\n# csize is deprecated in Nim v1.1\n# See Nim commit 99078d80d7abb1c47612bc70f7affbde8735066a\nwhen not declared(csize_t):\n  type csize_t* {.importc: \"size_t\", nodecl.} = uint\n\n\ntype\n  Coord* = tuple[x: float, y: float]  ##  Coordinates type\n  Coord2* = tuple[abs, rel: Coord]    ##  Abs + Rel coordinates type\n  CoordInt* = tuple[x: int, y: int]   ##  Integer coordinates\n  Dim* = tuple[w: int, h: int]        ##  Dimensions type\n  Angle* = float                      ##  Angle type\n  Scale* = float                      ##  Scale type\n  Transform* = tuple[pos: Coord, angle: Angle, scale: Scale] # Experimental\n  Blend* {.size: sizeof(cint), pure.} = enum\n    none  = sdl.BlendModeNone\n    blend = sdl.BlendModeBlend\n    bAdd = sdl.BlendModeAdd\n    bMod = sdl.BlendModeMod\n    bMul = sdl.BlendModeMul\n\n  Flip* {.size: sizeof(cint), pure.} = enum\n    none        = sdl.FlipNone,\n    horizontal  = sdl.FlipHorizontal,\n    vertical    = sdl.FlipVertical,\n    both        = sdl.FlipBoth\n\n  TextAlign* {.pure.} = enum left, center, right\n  Direction* {.pure.} = enum leftRight, rightLeft, topBottom, bottomTop\n  HAlign* {.pure.} = enum left, center, right\n  VAlign* {.pure.} = enum top, center, bottom\n\n\nconverter toSeq*[T](s: Slice[T]): seq[T] =\n  result = @[]\n  if s.a <= s.b:\n    for i in s:\n      result.add(i)\n  else:\n    for i in countdown(s.a, s.b):\n      result.add(i)\n\n\n#=======#\n# Color #\n#=======#\n\nconverter toUint32*(c: Color): uint32 =\n  ##  Color(r, g, b, a) to 0xRRGGBBAA\n  ##\n  uint32((c.r shl 24) or (c.g shl 16) or (c.b shl 8) or (c.a))\n\n\nconverter toColor*(u: uint32): Color =\n  ##  0xRRGGBBAA to Color(r, g, b, a)\n  ##\n  Color(r: cast[uint8](u shr 24),\n        g: cast[uint8](u shr 16),\n        b: cast[uint8](u shr 8),\n        a: cast[uint8](u))\n\n\ntemplate neg*(c: Color): Color =  ##  \\\n  ##  ``Return`` negative to color ``c``.\n  Color(r: 0xFF-c.r, g: 0xFF-c.g, b: 0xFF-c.b, a: c.a)\n\n\ntemplate colorConst(name, value) =  ##  \\\n  ##  Declare ColorName and ColourName constants from hex RGB values.\n  const\n    `Color name`* {.inject.} = (value.uint32 shl 8) + 0xFF\n    `Colour name`* {.inject.} = `Color name`\n\ncolorConst(Black, 0x000000)\ncolorConst(Navy, 0x000080)\ncolorConst(DarkBlue, 0x00008B)\ncolorConst(MediumBlue, 0x0000CD)\ncolorConst(Blue, 0x0000FF)\ncolorConst(DarkGreen, 0x006400)\ncolorConst(Green, 0x008000)\ncolorConst(Teal, 0x008080)\ncolorConst(DarkCyan, 0x008B8B)\ncolorConst(DeepSkyBlue, 0x00BFFF)\ncolorConst(DarkTurquoise, 0x00CED1)\ncolorConst(MediumSpringGreen, 0x00FA9A)\ncolorConst(Lime, 0x00FF00)\ncolorConst(SpringGreen, 0x00FF7F)\ncolorConst(Aqua, 0x00FFFF)\ncolorConst(Cyan, 0x00FFFF)\ncolorConst(MidnightBlue, 0x191970)\ncolorConst(DodgerBlue, 0x1E90FF)\ncolorConst(LightSeaGreen, 0x20B2AA)\ncolorConst(ForestGreen, 0x228B22)\ncolorConst(SeaGreen, 0x2E8B57)\ncolorConst(DarkSlateGray, 0x2F4F4F)\ncolorConst(DarkSlateGrey, 0x2F4F4F)\ncolorConst(LimeGreen, 0x32CD32)\ncolorConst(MediumSeaGreen, 0x3CB371)\ncolorConst(Turquoise, 0x40E0D0)\ncolorConst(RoyalBlue, 0x4169E1)\ncolorConst(SteelBlue, 0x4682B4)\ncolorConst(DarkSlateBlue, 0x483D8B)\ncolorConst(MediumTurquoise, 0x48D1CC)\ncolorConst(Indigo, 0x4B0082)\ncolorConst(DarkOliveGreen, 0x556B2F)\ncolorConst(CadetBlue, 0x5F9EA0)\ncolorConst(CornflowerBlue, 0x6495ED)\ncolorConst(RebeccaPurple, 0x663399)\ncolorConst(MediumAquaMarine, 0x66CDAA)\ncolorConst(DimGray, 0x696969)\ncolorConst(DimGrey, 0x696969)\ncolorConst(SlateBlue, 0x6A5ACD)\ncolorConst(OliveDrab, 0x6B8E23)\ncolorConst(SlateGray, 0x708090)\ncolorConst(SlateGrey, 0x708090)\ncolorConst(LightSlateGray, 0x778899)\ncolorConst(LightSlateGrey, 0x778899)\ncolorConst(MediumSlateBlue, 0x7B68EE)\ncolorConst(LawnGreen, 0x7CFC00)\ncolorConst(Chartreuse, 0x7FFF00)\ncolorConst(Aquamarine, 0x7FFFD4)\ncolorConst(Maroon, 0x800000)\ncolorConst(Purple, 0x800080)\ncolorConst(Olive, 0x808000)\ncolorConst(Gray, 0x808080)\ncolorConst(Grey, 0x808080)\ncolorConst(SkyBlue, 0x87CEEB)\ncolorConst(LightSkyBlue, 0x87CEFA)\ncolorConst(BlueViolet, 0x8A2BE2)\ncolorConst(DarkRed, 0x8B0000)\ncolorConst(DarkMagenta, 0x8B008B)\ncolorConst(SaddleBrown, 0x8B4513)\ncolorConst(DarkSeaGreen, 0x8FBC8F)\ncolorConst(LightGreen, 0x90EE90)\ncolorConst(MediumPurple, 0x9370DB)\ncolorConst(DarkViolet, 0x9400D3)\ncolorConst(PaleGreen, 0x98FB98)\ncolorConst(DarkOrchid, 0x9932CC)\ncolorConst(YellowGreen, 0x9ACD32)\ncolorConst(Sienna, 0xA0522D)\ncolorConst(Brown, 0xA52A2A)\ncolorConst(DarkGray, 0xA9A9A9)\ncolorConst(DarkGrey, 0xA9A9A9)\ncolorConst(LightBlue, 0xADD8E6)\ncolorConst(GreenYellow, 0xADFF2F)\ncolorConst(PaleTurquoise, 0xAFEEEE)\ncolorConst(LightSteelBlue, 0xB0C4DE)\ncolorConst(PowderBlue, 0xB0E0E6)\ncolorConst(FireBrick, 0xB22222)\ncolorConst(DarkGoldenRod, 0xB8860B)\ncolorConst(MediumOrchid, 0xBA55D3)\ncolorConst(RosyBrown, 0xBC8F8F)\ncolorConst(DarkKhaki, 0xBDB76B)\ncolorConst(Silver, 0xC0C0C0)\ncolorConst(MediumVioletRed, 0xC71585)\ncolorConst(IndianRed, 0xCD5C5C)\ncolorConst(Peru, 0xCD853F)\ncolorConst(Chocolate, 0xD2691E)\ncolorConst(Tan, 0xD2B48C)\ncolorConst(LightGray, 0xD3D3D3)\ncolorConst(LightGrey, 0xD3D3D3)\ncolorConst(Thistle, 0xD8BFD8)\ncolorConst(Orchid, 0xDA70D6)\ncolorConst(GoldenRod, 0xDAA520)\ncolorConst(PaleVioletRed, 0xDB7093)\ncolorConst(Crimson, 0xDC143C)\ncolorConst(Gainsboro, 0xDCDCDC)\ncolorConst(Plum, 0xDDA0DD)\ncolorConst(BurlyWood, 0xDEB887)\ncolorConst(LightCyan, 0xE0FFFF)\ncolorConst(Lavender, 0xE6E6FA)\ncolorConst(DarkSalmon, 0xE9967A)\ncolorConst(Violet, 0xEE82EE)\ncolorConst(PaleGoldenRod, 0xEEE8AA)\ncolorConst(LightCoral, 0xF08080)\ncolorConst(Khaki, 0xF0E68C)\ncolorConst(AliceBlue, 0xF0F8FF)\ncolorConst(HoneyDew, 0xF0FFF0)\ncolorConst(Azure, 0xF0FFFF)\ncolorConst(SandyBrown, 0xF4A460)\ncolorConst(Wheat, 0xF5DEB3)\ncolorConst(Beige, 0xF5F5DC)\ncolorConst(WhiteSmoke, 0xF5F5F5)\ncolorConst(MintCream, 0xF5FFFA)\ncolorConst(GhostWhite, 0xF8F8FF)\ncolorConst(Salmon, 0xFA8072)\ncolorConst(AntiqueWhite, 0xFAEBD7)\ncolorConst(Linen, 0xFAF0E6)\ncolorConst(LightGoldenRodYellow, 0xFAFAD2)\ncolorConst(OldLace, 0xFDF5E6)\ncolorConst(Red, 0xFF0000)\ncolorConst(Fuchsia, 0xFF00FF)\ncolorConst(Magenta, 0xFF00FF)\ncolorConst(DeepPink, 0xFF1493)\ncolorConst(OrangeRed, 0xFF4500)\ncolorConst(Tomato, 0xFF6347)\ncolorConst(HotPink, 0xFF69B4)\ncolorConst(Coral, 0xFF7F50)\ncolorConst(DarkOrange, 0xFF8C00)\ncolorConst(LightSalmon, 0xFFA07A)\ncolorConst(Orange, 0xFFA500)\ncolorConst(LightPink, 0xFFB6C1)\ncolorConst(Pink, 0xFFC0CB)\ncolorConst(Gold, 0xFFD700)\ncolorConst(PeachPuff, 0xFFDAB9)\ncolorConst(NavajoWhite, 0xFFDEAD)\ncolorConst(Moccasin, 0xFFE4B5)\ncolorConst(Bisque, 0xFFE4C4)\ncolorConst(MistyRose, 0xFFE4E1)\ncolorConst(BlanchedAlmond, 0xFFEBCD)\ncolorConst(PapayaWhip, 0xFFEFD5)\ncolorConst(LavenderBlush, 0xFFF0F5)\ncolorConst(SeaShell, 0xFFF5EE)\ncolorConst(Cornsilk, 0xFFF8DC)\ncolorConst(LemonChiffon, 0xFFFACD)\ncolorConst(FloralWhite, 0xFFFAF0)\ncolorConst(Snow, 0xFFFAFA)\ncolorConst(Yellow, 0xFFFF00)\ncolorConst(LightYellow, 0xFFFFE0)\ncolorConst(Ivory, 0xFFFFF0)\ncolorConst(White, 0xFFFFFF)\n\n\n#=======#\n# Coord #\n#=======#\n\nproc `==`*(c1, c2: Coord): bool {.inline.} =\n  return (c1.x == c2.x) and (c1.y == c2.y)\n\n\nproc `-`*(c: Coord): Coord {.inline.} =\n  return (-c.x, -c.y)\n\n\nproc `+`*(c1, c2: Coord): Coord {.inline.} =\n  result.x = c1.x + c2.x\n  result.y = c1.y + c2.y\n\n\nproc `+=`*(c1: var Coord, c2: Coord) {.inline.} =\n  c1.x += c2.x\n  c1.y += c2.y\n\n\nproc `-`*(c1, c2: Coord): Coord {.inline.} =\n  result.x = c1.x - c2.x\n  result.y = c1.y - c2.y\n\n\nproc `-=`*(c1: var Coord, c2: Coord) {.inline.} =\n  c1.x -= c2.x\n  c1.y -= c2.y\n\n\nproc `*`*(c1, c2: Coord): Coord {.inline.} =\n  result.x = c1.x * c2.x\n  result.y = c1.y * c2.y\n\n\nproc `*=`*(c1: var Coord, c2: Coord) {.inline.} =\n  c1.x *= c2.x\n  c1.y *= c2.y\n\n\nproc `/`*(c1, c2: Coord): Coord {.inline.} =\n  result.x = c1.x / c2.x\n  result.y = c1.y / c2.y\n\n\nproc `/=`*(c1: var Coord, c2: Coord) {.inline.} =\n  c1.x /= c2.x\n  c1.y /= c2.y\n\n\nproc `+`*(c: Coord, v: float): Coord {.inline.} =\n  result.x = c.x + v\n  result.y = c.y + v\n\n\ntemplate `+`*(v: float, c: Coord): Coord =\n  (c + v)\n\n\nproc `+=`*(c: var Coord, v: float) {.inline.} =\n  c.x += v\n  c.y += v\n\n\nproc `-`*(c: Coord, v: float): Coord {.inline.} =\n  result.x = c.x - v\n  result.y = c.y - v\n\n\ntemplate `-`*(v: float, c: Coord): Coord =\n  (-c + v)\n\n\nproc `-=`*(c: var Coord, v: float) {.inline.} =\n  c.x -= v\n  c.y -= v\n\n\nproc `*`*(c: Coord, v: float): Coord {.inline.} =\n  result.x = c.x * v\n  result.y = c.y * v\n\n\ntemplate `*`*(v: float, c: Coord): Coord =\n  (c * v)\n\n\nproc `*=`*(c: var Coord, v: float) {.inline.} =\n  c.x *= v\n  c.y *= v\n\n\nproc `/`*(c: Coord, v: float): Coord {.inline.} =\n  result.x = c.x / v\n  result.y = c.y / v\n\n\nproc `/=`*(c: var Coord, v: float) {.inline.} =\n  c.x /= v\n  c.y /= v\n\n\nproc abs*(c: Coord): Coord {.inline.} =\n  result.x = abs(c.x)\n  result.y = abs(c.y)\n\n\nproc sin*(c: Coord): Coord {.inline.} =\n  result.x = sin(c.x)\n  result.y = sin(c.y)\n\n\nproc arcsin*(c: Coord): Coord {.inline.} =\n  result.x = arcsin(c.x)\n  result.y = arcsin(c.y)\n\n\nconverter toDim*(c: Coord): Dim =\n  result.w = c.x.int\n  result.h = c.y.int\n\n\n#==========#\n# CoordInt #\n#==========#\n\nproc `==`*(c1, c2: CoordInt): bool {.inline.} =\n  return (c1.x == c2.x) and (c1.y == c2.y)\n\n\nproc `-`*(c: CoordInt): CoordInt {.inline.} =\n  return (-c.x, -c.y)\n\n\nproc `+`*(c1, c2: CoordInt): CoordInt {.inline.} =\n  result.x = c1.x + c2.x\n  result.y = c1.y + c2.y\n\n\nproc `+=`*(c1: var CoordInt, c2: CoordInt) {.inline.} =\n  c1.x += c2.x\n  c1.y += c2.y\n\n\nproc `-`*(c1, c2: CoordInt): CoordInt {.inline.} =\n  result.x = c1.x - c2.x\n  result.y = c1.y - c2.y\n\n\nproc `-=`*(c1: var CoordInt, c2: CoordInt) {.inline.} =\n  c1.x -= c2.x\n  c1.y -= c2.y\n\n\nproc `*`*(c1, c2: CoordInt): CoordInt {.inline.} =\n  result.x = c1.x * c2.x\n  result.y = c1.y * c2.y\n\n\nproc `*=`*(c1: var CoordInt, c2: CoordInt) {.inline.} =\n  c1.x *= c2.x\n  c1.y *= c2.y\n\n\nproc `div`*(c1, c2: CoordInt): CoordInt {.inline.} =\n  result.x = c1.x div c2.x\n  result.y = c1.y div c2.y\n\n\nproc `div=`*(c1: var CoordInt, c2: CoordInt) {.inline.} =\n  c1.x = c1.x div c2.x\n  c1.y = c1.y div c2.y\n\n\nproc `+`*(c: CoordInt, v: int): CoordInt {.inline.} =\n  result.x = c.x + v\n  result.y = c.y + v\n\n\ntemplate `+`*(v: int, c: CoordInt): CoordInt =\n  (c + v)\n\n\nproc `+=`*(c: var CoordInt, v: int) {.inline.} =\n  c.x += v\n  c.y += v\n\n\nproc `-`*(c: CoordInt, v: int): CoordInt {.inline.} =\n  result.x = c.x - v\n  result.y = c.y - v\n\n\ntemplate `-`*(v: int, c: CoordInt): CoordInt =\n  (-c + v)\n\n\nproc `-=`*(c: var CoordInt, v: int) {.inline.} =\n  c.x -= v\n  c.y -= v\n\n\nproc `*`*(c: CoordInt, v: int): CoordInt {.inline.} =\n  result.x = c.x * v\n  result.y = c.y * v\n\n\ntemplate `*`*(v: int, c: CoordInt): CoordInt =\n  (c * v)\n\n\nproc `*=`*(c: var CoordInt, v: int) {.inline.} =\n  c.x *= v\n  c.y *= v\n\n\nproc `div`*(c: CoordInt, v: int): CoordInt {.inline.} =\n  result.x = c.x div v\n  result.y = c.y div v\n\n\nproc `div=`*(c: var CoordInt, v: int) {.inline.} =\n  c.x = c.x div v\n  c.y = c.y div v\n\n\nproc abs*(c: CoordInt): CoordInt {.inline.} =\n  result.x = abs(c.x)\n  result.y = abs(c.y)\n\n\nconverter toDim*(c: CoordInt): Dim =\n  result.w = c.x\n  result.h = c.y\n\n\n#=====#\n# Dim #\n#=====#\n\nproc `==`*(d1, d2: Dim): bool {.inline.} =\n  return (d1.w == d2.w) and (d1.h == d2.h)\n\n\nproc `+`*(d1, d2: Dim): Dim {.inline.} =\n  result.w = d1.w + d2.w\n  result.h = d1.h + d2.h\n\n\nproc `+=`*(d1: var Dim, d2: Dim) {.inline.} =\n  d1.w += d2.w\n  d1.h += d2.h\n\n\nproc `-`*(d1, d2: Dim): Dim {.inline.} =\n  result.w = d1.w - d2.w\n  result.h = d1.h - d2.h\n\n\nproc `-=`*(d1: var Dim, d2: Dim) {.inline.} =\n  d1.w -= d2.w\n  d1.h -= d2.h\n\n\nproc `*`*(d1, d2: Dim): Dim {.inline.} =\n  result.w = d1.w * d2.w\n  result.h = d1.h * d2.h\n\n\nproc `*=`*(d1: var Dim, d2: Dim) {.inline.} =\n  d1.w *= d2.w\n  d1.h *= d2.h\n\n\nproc `/`*(d1, d2: Dim): Dim {.inline.} =\n  result.w = d1.w div d2.w\n  result.h = d1.h div d2.h\n\n\nproc `/=`*(d1: var Dim, d2: Dim) {.inline.} =\n  d1.w = d1.w div d2.w\n  d1.h = d1.h div d2.h\n\n\nproc `+`*(d: Dim, v: int): Dim {.inline.} =\n  result.w = d.w + v\n  result.h = d.h + v\n\n\nproc `+=`*(d: var Dim, v: int) {.inline.} =\n  d.w += v\n  d.h += v\n\n\nproc `-`*(d: Dim, v: int): Dim {.inline.} =\n  result.w = d.w - v\n  result.h = d.h - v\n\n\nproc `-=`*(d: var Dim, v: int) {.inline.} =\n  d.w -= v\n  d.h -= v\n\n\nproc `*`*(d: Dim, v: int): Dim {.inline.} =\n  result.w = d.w * v\n  result.h = d.h * v\n\n\nproc `*=`*(d: var Dim, v: int) {.inline.} =\n  d.w *= v\n  d.h *= v\n\n\nproc `/`*(d: Dim, v: int): Dim {.inline.} =\n  result.w = d.w div v\n  result.h = d.h div v\n\n\nproc `/=`*(d: var Dim, v: int): Dim {.inline.} =\n  d.w = d.w div v\n  d.h = d.h div v\n\n\nconverter toCoord*(d: Dim): Coord =\n  result.x = d.w.float\n  result.y = d.h.float\n\n\n#=============#\n#  Transform  #\n#=============#\n\nfrom utils import rotate\n\ntemplate `*`*(transform: Transform, point: Coord): Coord =\n  transform.pos + rotate(point * transform.scale, transform.angle)\n\n#[\n# experimental\ntemplate `*`*(transform: Transform, other: Transform)=\n  Transform(\n    pos = transform * other.pos,\n    angle = transform.angle + other.angle,\n    scale = transform.scale * other.scale)\n]#\n\ntemplate local*(transform: Transform): Transform =\n  ( pos: (0.0, 0.0),\n    angle: (-transform.angle) mod 360.0,\n    scale: 1.0 / transform.scale\n  ).Transform\n\n"
  },
  {
    "path": "nimgame2/typewriter.nim",
    "content": "# nimgame2/typewriter.nim\n# Copyright (c) 2016-2018 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  algorithm, strutils,\n  entity, textgraphic, types\n\n\ntype\n  Typewriter* = ref object of Entity\n    # Private\n    fText: seq[char]  ##  typewriter's queue\n    fRemainder: float ##  internal timer (in seconds)\n    # Public\n    rate*: float  ##  typewriter's rate (in seconds)\n    width*: int   ##  line width limit, no limit if `0` (default)\n\n\n#============#\n# Typewriter #\n#============#\n\nproc newTypewriter*(text: TextGraphic, rate: float): Typewriter =\n  new result\n  result.initEntity()\n  result.graphic = text\n  let tg = TextGraphic(result.graphic)\n  if tg.lines.len < 1:\n    tg.lines = [\"\"]\n  result.fText = @[]\n  result.fRemainder = 0.0\n  result.rate = rate\n  result.width = -1\n\n\nproc add*(tw: Typewriter, text: string) {.inline.} =\n  ##  Add new ``text`` to the typewriter's queue.\n  ##\n  tw.fText = reversed(text) & tw.fText\n\n\nproc dump*(tw: Typewriter): string {.inline.} =\n  ##  ``Return`` the text awaiting in the typewriter's queue.\n  ##\n  $tw.fText\n\n\nproc clear*(tw: Typewriter) {.inline.} =\n  ##  Delete the text awaiting in the typewriter's queue.\n  ##\n  tw.fText = @[]\n\n\nproc force*(tw: Typewriter, text: string = \"\") =\n  ##  Add new ``text`` to the typewriter's queue\n  ##  and then output it all immediately.\n  ##\n  if text.len > 0:\n    tw.add(text)\n  tw.fRemainder = 0.0\n  let tg = TextGraphic(tw.graphic)\n  tg.setText(tg.text & reversed(tw.fText).join())\n  tw.clear()\n\n\nproc updateTypewriter*(tw: Typewriter, elapsed: float) =\n  var str = \"\"\n  tw.fRemainder += elapsed\n  while tw.fRemainder >= tw.rate:\n    if tw.fText.len < 1: # no text to print left\n      tw.fRemainder = 0.0\n      break\n    tw.fRemainder -= tw.rate\n    str.add(tw.fText.pop())\n\n  # update textgraphic\n  if str.len > 0:\n    let tg = TextGraphic(tw.graphic)\n    tg.setText(tg.text & str, tw.width)\n\n\nmethod update*(tw: Typewriter, elapsed: float) =\n  updateTypewriter(tw, elapsed)\n\n"
  },
  {
    "path": "nimgame2/utils.nim",
    "content": "# nimgame2/utils.nim\n# Copyright (c) 2016-2020 Vladimir Arabadzhi (Vladar)\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n# vladar4@gmail.com\n# https://github.com/Vladar4\n\nimport\n  math,\n  sdl2_nim/sdl,\n  texturegraphic, types\n\n\n#==========#\n# Geometry #\n#==========#\n\ntemplate rad*(a: Angle): Angle =\n  ##  Convert degrees to radians.\n  ##\n  (a * Pi / 180)\n\n\ntemplate deg*(a: Angle): Angle =\n  ##  Convert radians to degrees.\n  ##\n  (a * 180 / Pi)\n\n\nproc distance*(a, b: Coord): float {.inline.} =\n  ##  ``Return`` distance between two coordinates.\n  ##\n  return sqrt( pow(b.x - a.x, 2) + pow(b.y - a.y, 2) )\n\n\nproc distanceToLine*(a, d1, d2: Coord): float =\n  ##  ``Return`` distance between point ``a`` and line ``d1``-``d2``.\n  ##\n  let d = d2 - d1\n  return abs( d.y * a.x - d.x * a.y + d2.x * d1.y - d2.y * d1.x ) /\n         sqrt( pow(d.y, 2) + pow(d.x, 2) )\n\n\nproc direction*(a, b: Coord): Angle =\n  ##  ``Return`` angle direction from coordinate ``a`` to ``b`` (in degrees).\n  ##\n  let\n    dx = b.x - a.x\n    dy = a.y - b.y\n  return -(arctan2(dy, dx) / Pi) * 180 + 90\n\n\nproc rotate*(a: Coord, angle: Angle): Coord =\n  ##  Rotate point ``a`` by the given ``angle`` (in degrees).\n  ##\n  if angle == 0:\n    return a\n  let\n    rot = rad(angle)\n    c = cos(rot)\n    s = sin(rot)\n  result.x = a.x * c - a.y * s\n  result.y = a.x * s + a.y * c\n\n\nproc rotate*(point, offset: Coord, angle: Angle): Coord =\n  ##  Rotate ``point`` by the given ``angle`` and with given ``offset``.\n  ##\n  ##  ``offset``  Offset coordinate (parent position)\n  ##  ``point``   Point to rotate\n  ##  ``angle``   Angle of rotation (in degrees)\n  ##\n  return\n    if angle != 0:\n      (rotate(point, angle) + offset)\n    else:\n      (offset + point)\n\n\n#==========#\n# Graphics #\n#==========#\n\nimport sdl2_nim/sdl_image as img\n\n\nproc loadSurface*(file: string): Surface =\n  ##  Load an image ``file`` to the ``sdl.Surface``.\n  ##\n  ##  ``Return`` the surface on success, or `nil` otherwise.\n  ##\n  result = img.load(file)\n  if result == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load image %s: %s\",\n                    file, img.getError())\n    return nil\n\n\nproc loadSurface*(src: ptr RWops, freeSrc: bool = true): Surface =\n  ##  Load ``src`` ``RWops`` to the ``sdl.Surface``.\n  ##\n  ##  ``Return`` the surface on success, or `nil` otherwise.\n  ##\n  result = img.loadRW(src, freeSrc)\n  if result == nil:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't load image RW: %s\",\n                    img.getError())\n    return nil\n\n\nproc textureFormats*(renderer: Renderer):\n    tuple[num: uint32, formats: array[16, uint32]] =\n  ##  ``Return`` number and array of available texture formats\n  ##  from the ``renderer``.\n  ##\n  var info: RendererInfo\n  if renderer.getRendererInfo(addr(info)) == 0:\n    return (info.num_texture_formats, info.textureFormats)\n  else:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"Can't get renderer texture format: %s\",\n                    sdl.getError())\n    return\n\n\nproc textureFormat*(renderer: Renderer, n: uint32 = 0): uint32 =\n  ##  ``Return`` ``n``'th texture format from the ``renderer``.\n  ##\n  let (num, formats) = renderer.textureFormats()\n  if n < num:\n    return formats[n]\n  else:\n    sdl.logCritical(sdl.LogCategoryError,\n                    \"No such texture format (%d) in current renderer.\", n)\n    return\n\n\n#=========#\n# Parsing #\n#=========#\n\nimport parsecsv, streams\n\n\nproc readAll*(src: ptr RWops): string =\n  const BufferSize = 1000\n  result = newString(BufferSize)\n  var r = 0\n  while true:\n    let readBytes = int rwRead(src, addr(result[r]), csize_t sizeof(uint8), BufferSize)\n    if readBytes < BufferSize:\n      setLen(result, r+readBytes)\n      break\n    inc r, BufferSize\n    setLen(result, r+BufferSize)\n\n\nproc loadCSV*[T](file: string,\n                 parse: proc(input: string): T,\n                 separator = ',',\n                 quote = '\\\"',\n                 escape = '\\0',\n                 skipInitialSpace = true): seq[seq[T]] =\n  ##  Load data from a CSV ``file``.\n  ##\n  ##  ``Return`` a two-dimensional sequence of values from the ``file``,\n  ##  or empty sequence (`@[]`) otherwise.\n  ##\n  result = @[]\n  var parser: CsvParser\n  parser.open(file, separator, quote, escape, skipInitialSpace)\n  while parser.readRow():\n    result.add(@[])\n    for item in parser.row:\n      result[^1].add(parse(item))\n  parser.close()\n\n\nproc loadCSV*[T](src: ptr RWops,\n                 file: string,\n                 parse: proc(input: string): T,\n                 separator = ',',\n                 quote = '\\\"',\n                 escape = '\\0',\n                 skipInitialSpace = true,\n                 freeSrc = true): seq[seq[T]] =\n  ##  Load data from ``src`` ``RWops``.\n  ##\n  ##  ``file`` is only used for nice error messages.\n  ##\n  ##  ``Return`` a two-dimensional sequence of values from the ``file``,\n  ##  or empty sequence (`@[]`) otherwise.\n  ##\n  result = @[]\n  var\n    parser: CsvParser\n    stream = newStringStream(src.readAll())\n  parser.open(stream, file, separator, quote, escape, skipInitialSpace)\n  while parser.readRow():\n    result.add(@[])\n    for item in parser.row:\n      result[^1].add(parse(item))\n  parser.close()\n  stream.close()\n  if freeSrc:\n    freeRW(src)\n\n\nimport\n  strutils, indexedimage\n\n\nproc loadPalette(palette: var indexedimage.Palette,\n                 parser: var CsvParser) =\n  var\n    ncolors = 0\n    colors: seq[Color] = @[]\n    r, g, b, a: int\n  while parser.readRow():\n    let cols = parser.row.len\n    if cols in {3, 4}:\n      r = parser.row[0].parseInt\n      g = parser.row[1].parseInt\n      b = parser.row[2].parseInt\n      a = if cols == 4: parser.row[3].parseInt\n          else: 255\n      inc ncolors\n    else:\n      continue\n  if ncolors > 0:\n    if not (palette == nil):\n      palette.free()\n    palette.init(ncolors)\n    palette[0] = colors\n\n\nproc loadPalette*(palette: var indexedimage.Palette,\n                  file: string,\n                  separator = ' ',\n                  quote = '\\\"',\n                  escape = '\\0',\n                  skipInitialSpace = true) =\n  ##  Load palette color data from a ``file``.\n  ##\n  ##  ``palette`` Target palette. If ``palette`` is `nil`,\n  ##  allocates a new palette, otherwise the ``palette`` will be freed.\n  ##\n  ##  Data file should be in a format of:\n  ##\n  ##  .. code-block\n  ##    rrr ggg bbb aaa\n  ##    ...\n  ##\n  ##  or\n  ##\n  ##  .. code-block\n  ##    rrr ggg bbb\n  ##\n  ##  where `rrr`, `ggg`, `bbb`, and `aaa` is in `0`..`255` range.\n  ##\n  ##  Other types of lines are ignored.\n  ##\n  var parser: CsvParser\n  parser.open(file, separator, quote, escape, skipInitialSpace)\n  loadPalette(palette, parser)\n  parser.close()\n\n\nproc loadPalette*(palette: var indexedimage.Palette,\n                  src: ptr RWops,\n                  file: string,\n                  separator = ' ',\n                  quote = '\\\"',\n                  escape = '\\0',\n                  skipInitialSpace = true,\n                  freeSrc = true) =\n  var\n    parser: CsvParser\n    stream = newStringStream(src.readAll())\n  parser.open(stream, file, separator, quote, escape, skipInitialSpace)\n  loadPalette(palette, parser)\n  parser.close()\n  stream.close()\n  if freeSrc:\n    freeRW(src)\n\n\ntemplate atlasValues(parser: CsvParser): untyped =\n  var val: tuple[name: string, rect: Rect]\n  while parser.readRow():\n    if not(parser.row.len == 5):\n      continue\n    val.name = parser.row[0]\n    val.rect.x = parser.row[1].parseInt\n    val.rect.y = parser.row[2].parseInt\n    val.rect.w = parser.row[3].parseInt\n    val.rect.h = parser.row[4].parseInt\n    yield val\n\n\niterator atlasValues*(file: string,\n                      separator = ',',\n                      quote = '\\\"',\n                      escape = '\\0',\n                      skipInitialSpace = true):\n    tuple[name: string, rect: Rect] =\n  ##  Load and iterate over atlas mapping file.\n  ##\n  ##  Mapping should be in a format of:\n  ##\n  ##  ..code-block\n  ##    name, x, y, w, h\n  ##    ...\n  ##\n  var parser: CsvParser\n  parser.open(file, separator, quote, escape, skipInitialSpace)\n  atlasValues(parser)\n  parser.close()\n\n\niterator atlasValues*(src: ptr RWops,\n                      file: string,\n                      separator = ',',\n                      quote = '\\\"',\n                      escape = '\\0',\n                      skipInitialSpace = true,\n                      freeSrc = true):\n    tuple[name: string, rect: Rect] =\n  var\n    parser: CsvParser\n    stream = newStringStream(src.readAll())\n  parser.open(stream, file, separator, quote, escape, skipInitialSpace)\n  atlasValues(parser)\n  parser.close()\n  stream.close()\n  if freeSrc:\n    freeRW(src)\n\n\n#========#\n# Random #\n#========#\n\nimport random\nexport random\n\n#== max ==#\n\nproc rand*[T](max: T, exclude: seq[T]): T =\n  ##  ``Return`` a random number in the range `0`..``max``,\n  ##  except values in the ``exclude``.\n  ##\n  result = random.rand(max)\n  while exclude.contains(result):\n    result = random.rand(max)\n\ntemplate rand*[T](max: T, exclude: openArray[T]): T =\n  rand(max, @exclude)\n\n\n#== seq ==#\n\nproc rand*[T](x, exclude: seq[T]): T =\n  ##  ``Return`` a random number in the sequence ``x``,\n  ##  except values in the ``exclude``.\n  ##\n  result = random.sample(x)\n  while exclude.contains(result):\n    result = random.sample(x)\n\ntemplate rand*[T](x, exclude: openArray[T]): T =\n  rand(@x, @exclude)\n\n\n#== slice ==#\n\nproc rand*[T](x: HSlice[T,T], exclude: seq[T]): T =\n  ##  ``Return`` a random number in the range ``min``..``max``,\n  ##  except values in the ``exclude``.\n  ##\n  result = rand(x)\n  while exclude.contains(result):\n    result = rand(x)\n\ntemplate rand*[T](x: HSlice[T,T], exclude: openArray[T]): T =\n  rand(x, @exclude)\n\n\n#== misc ==#\n\nproc randBool*(chance: float = 0.5): bool {.inline.} =\n  return random.rand(1.0) < chance.clamp(0.0, 1.0)\n\n\nproc randSign*(chance: float = 0.5): int =\n  ##  ``Return`` `1` or `-1`,\n  ##  based on the ``chance`` value (from `0.0` to `1.0`).\n  ##\n  return if randBool(chance): 1 else: -1\n\n\nproc randWeighted*[T](weights: openArray[T]): int =\n  ##  ``Return`` a random integer, based on the ``weights`` array.\n  ##\n  ##  E.g., call of randomWeighted([2, 3, 5])\n  ##  will have a 20% chance of returning `0`, 30% chance of returning `1`,\n  ##  and 50% chance of returning `2`.\n  ##\n  var total: T = 0\n  for i in weights:\n    total += i\n\n  total = rand(T(0)..total)\n  for i in 0..weights.high:\n    if total < weights[i]:\n      result = i\n      break\n    total -= weights[i]\n\n\n#======#\n# Time #\n#======#\n\ntemplate timeDiff*(first, second: untyped): untyped = ##  \\\n  ##  ``first``, ``second`` two results of ``sdl.getPerformanceCounter()``.\n  ##\n  ##  ``Return`` time difference between two time stamps (in ms).\n  ##\n  int(((second - first) * 1000) div sdl.getPerformanceFrequency())\n\n\ntemplate msToSec*(ms: int): float = (ms / 1000)\n\n\ntemplate secToMs*(sec: float): int = int(sec * 1000)\n\n\ntype\n  Counter* = ref object\n    counter, current, interval: int\n    time: uint64\n\n\nproc newCounter*(interval: int = 1000): Counter =\n  new result\n  result.counter = 0\n  result.current = 0\n  result.interval = interval\n  result.time = sdl.getPerformanceCounter()\n\n\nproc update*(counter: Counter) =\n  inc(counter.counter)\n  let time = sdl.getPerformanceCounter()\n  if timeDiff(counter.time, time) > counter.interval:\n    counter.current = counter.counter\n    counter.counter = 0\n    counter.time = time\n\n\nproc value*(counter: Counter): int {.inline.} =\n  counter.current\n\n"
  },
  {
    "path": "nimgame2.nim",
    "content": "import\n    nimgame2/nimgame,\n    nimgame2/draw,\n    nimgame2/entity,\n    nimgame2/settings,\n    nimgame2/audio,\n    nimgame2/assets,\n    nimgame2/scene,\n    nimgame2/font,\n    nimgame2/bitmapfont,\n    nimgame2/utils,\n    nimgame2/graphic,\n    nimgame2/procgraphic,\n    nimgame2/indexedimage,\n    nimgame2/perspectiveimage,\n    nimgame2/texturegraphic,\n    nimgame2/textgraphic,\n    nimgame2/textfield,\n    nimgame2/types,\n    nimgame2/mosaic,\n    nimgame2/input,\n    nimgame2/tilemap,\n    nimgame2/truetypefont,\n    nimgame2/tween,\n    nimgame2/typewriter,\n    nimgame2/emitter,\n    nimgame2/gui/widget,\n    nimgame2/gui/button,\n    nimgame2/gui/radio,\n    nimgame2/gui/textinput,\n    nimgame2/gui/progressbar,\n    nimgame2/plugin/tar,\n    nimgame2/plugin/zzip,\n    nimgame2/plugin/mpeggraphic\n\nexport nimgame,\n    draw,\n    entity,\n    settings,\n    audio,\n    assets,\n    scene,\n    utils,\n    graphic,\n    procgraphic,\n    perspectiveimage,\n    indexedimage,\n    texturegraphic,\n    textgraphic,\n    bitmapfont,\n    font,\n    types,\n    input,\n    textfield,\n    tilemap,\n    mosaic,\n    truetypefont,\n    emitter,\n    tween,\n    widget,\n    radio,\n    textinput,\n    typewriter,\n    progressbar,\n    button,\n    mpeggraphic,\n    tar,\n    zzip"
  },
  {
    "path": "nimgame2.nimble",
    "content": "# Package\n\nversion       = \"0.6.2\"\nauthor        = \"Vladar\"\ndescription   = \"A simple 2D game engine for Nim language.\"\nlicense       = \"MIT\"\n\n# Dependencies\n\nrequires \"nim >= 1.4.0\"\nrequires \"sdl2_nim >= 2.0.14.2\"\n\n# Options\n\nskipDirs = @[\"demos\"]\n\n"
  }
]