Fix links in markdown.

Fix links in markdown.

--- api-3.0.0.clj
+++ api-3.0.0.clj
@@ -9,7 +9,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/rotateX_.html",
   :docstring
-  "
Rotates a shape around the x-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0 to\n(* PI 2)) or converted to radians with the radians function. Objects\nare always rotated around their relative position to the origin and\npositive numbers rotate objects in a counterclockwise\ndirection. Transformations apply to everything that happens after\nand subsequent calls to the function accumulates the effect. For\nexample, calling (rotate-x HALF-PI) and then (rotate-x HALF-PI) is\nthe same as (rotate-x PI). If rotate-x is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction requires either the :p3d or :opengl renderer.
\n",
+  "
Rotates a shape around the x-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0 to\n(* PI 2)) or converted to radians with the radians function. Objects\nare always rotated around their relative position to the origin and\npositive numbers rotate objects in a counterclockwise\ndirection. Transformations apply to everything that happens after\nand subsequent calls to the function accumulates the effect. For\nexample, calling (rotate-x HALF-PI) and then (rotate-x HALF-PI) is\nthe same as (rotate-x PI). If rotate-x is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction requires either the :p3d or :opengl renderer.
\n",
   :what :fn},
  set-uniform
  {:args #{[shader uniform-name data]},
@@ -74,7 +74,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/text_.html",
   :docstring
-  "
Draws a char to the screen in the specified position. See the\ntext function for more details.
\n",
+  "
Draws a char to the screen in the specified position. See the\ntext function for more details.
\n",
   :what :fn},
  display-filter
  {:args
@@ -101,7 +101,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/rotateZ_.html",
   :docstring
-  "
Rotates a shape around the z-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0\nto (* PI 2)) or converted to radians with the radians function.\nObjects are always rotated around their relative position to the\norigin and positive numbers rotate objects in a counterclockwise\ndirection. Transformations apply to everything that happens after\nand subsequent calls to the function accumulates the effect. For\nexample, calling (rotate-z HALF-PI) and then (rotate-z HALF-PI) is\nthe same as (rotate-z PI). If rotate-y is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction requires either the :p3d or :opengl renderer.
\n",
+  "
Rotates a shape around the z-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0\nto (* PI 2)) or converted to radians with the radians function.\nObjects are always rotated around their relative position to the\norigin and positive numbers rotate objects in a counterclockwise\ndirection. Transformations apply to everything that happens after\nand subsequent calls to the function accumulates the effect. For\nexample, calling (rotate-z HALF-PI) and then (rotate-z HALF-PI) is\nthe same as (rotate-z PI). If rotate-y is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction requires either the :p3d or :opengl renderer.
\n",
   :what :fn},
  random-gaussian
  {:args ({:value [], :type :both}),
@@ -114,7 +114,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/randomGaussian_.html",
   :docstring
-  "
Returns a float from a random series of numbers having a mean of 0 and\nstandard deviation of 1. Each time the random-gaussian function is called,\nit returns a number fitting a Gaussian, or normal, distribution.\nThere is theoretically no minimum or maximum value that random-gaussian\nmight return. Rather, there is just a very low probability that values far\nfrom the mean will be returned; and a higher probability that numbers near\nthe mean will be returned.
\n",
+  "
Returns a float from a random series of numbers having a mean of 0 and\nstandard deviation of 1. Each time the random-gaussian function is called,\nit returns a number fitting a Gaussian, or normal, distribution.\nThere is theoretically no minimum or maximum value that random-gaussian\nmight return. Rather, there is just a very low probability that values far\nfrom the mean will be returned; and a higher probability that numbers near\nthe mean will be returned.
\n",
   :what :fn},
  blend
  {:args
@@ -133,7 +133,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/blend_.html",
   :docstring
-  "
Blends a region of pixels from one image into another with full alpha\nchannel support. If src is not specified it defaults to current-graphics.\nIf dest is not specified it defaults to current-graphics.
\n
Note: it is recommended to use the blend-mode function instead of this one.
\n
Available blend modes are:
\n
\n
:blend      - linear interpolation of colours: C = A*factor + B
\n
:add        - additive blending with white clip:\nC = min(A*factor + B, 255)
\n
:darkest    - only the darkest colour succeeds:\nC = min(A*factor, B)
\n
:lightest   - only the lightest colour succeeds:\nC = max(A*factor, B)
\n
:difference - subtract colors from underlying image.
\n
:exclusion  - similar to :difference, but less extreme.
\n
:multiply   - Multiply the colors, result will always be darker.
\n
:screen     - Opposite multiply, uses inverse values of the colors.
\n
:overlay    - A mix of :multiply and :screen. Multiplies dark values\nand screens light values.
\n
:hard-light - :screen when greater than 50% gray, :multiply when\nlower.
\n
:soft-light - Mix of :darkest and :lightest. Works like :overlay,\nbut not as harsh.
\n
:dodge      - Lightens light tones and increases contrast, ignores\ndarks.\nCalled "Color Dodge" in Illustrator and Photoshop.
\n
:burn       - Darker areas are applied, increasing contrast, ignores\nlights. Called "Color Burn" in Illustrator and\nPhotoshop.
\n
\n
In clj the following blend modes are also supported:\n:subtract   - subtractive blending with black clip:\nC = max(B - A*factor, 0)
\n
In cljs the following blend modes are also supported:\n:replace    - the pixels entirely replace the others and don't utilize\nalpha (transparency) values.
\n",
+  "
Blends a region of pixels from one image into another with full alpha\nchannel support. If src is not specified it defaults to current-graphics.\nIf dest is not specified it defaults to current-graphics.
\n
Note: it is recommended to use the blend-mode function instead of this one.
\n
Available blend modes are:
\n
\n
:blend      - linear interpolation of colours: C = A*factor + B
\n
:add        - additive blending with white clip:\nC = min(A*factor + B, 255)
\n
:darkest    - only the darkest colour succeeds:\nC = min(A*factor, B)
\n
:lightest   - only the lightest colour succeeds:\nC = max(A*factor, B)
\n
:difference - subtract colors from underlying image.
\n
:exclusion  - similar to :difference, but less extreme.
\n
:multiply   - Multiply the colors, result will always be darker.
\n
:screen     - Opposite multiply, uses inverse values of the colors.
\n
:overlay    - A mix of :multiply and :screen. Multiplies dark values\nand screens light values.
\n
:hard-light - :screen when greater than 50% gray, :multiply when\nlower.
\n
:soft-light - Mix of :darkest and :lightest. Works like :overlay,\nbut not as harsh.
\n
:dodge      - Lightens light tones and increases contrast, ignores\ndarks.\nCalled "Color Dodge" in Illustrator and Photoshop.
\n
:burn       - Darker areas are applied, increasing contrast, ignores\nlights. Called "Color Burn" in Illustrator and\nPhotoshop.
\n
\n
In clj the following blend modes are also supported:\n:subtract   - subtractive blending with black clip:\nC = max(B - A*factor, 0)
\n
In cljs the following blend modes are also supported:\n:replace    - the pixels entirely replace the others and don't utilize\nalpha (transparency) values.
\n",
   :what :fn},
  frame-count
  {:args ({:value [], :type :both}),
@@ -158,7 +158,7 @@
   :requires-bindings true,
   :link nil,
   :docstring
-  "
All subsequent calls of any drawing function will draw on given\ngraphics. with-graphics cannot be nested (you can draw simultaneously\nonly on 1 graphics)
\n",
+  "
All subsequent calls of any drawing function will draw on given\ngraphics. with-graphics cannot be nested (you can draw simultaneously\nonly on 1 graphics)
\n",
   :what :macro},
  loaded?
  {:args ({:value [object], :type :both}),
@@ -225,7 +225,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/createGraphics_.html",
   :docstring
-  "
Creates and returns a new PGraphics object of the types :p2d, :p3d,\n:java2d, :pdf. By default :java2d is used. Use this class if you\nneed to draw into an off-screen graphics buffer. It's not possible\nto use create-graphics with the :opengl renderer, because it doesn't\nallow offscreen use. The :pdf renderer requires the filename parameter.
\n
Note: don't use create-graphics in draw in clojurescript, it leaks memory.\nYou should create graphic in setup and reuse it in draw instead of creating\na new one.
\n
It's important to call any drawing commands between (.beginDraw graphics) and\n(.endDraw graphics) statements or use with-graphics macro. This is also true\nfor any commands that affect drawing, such as smooth or color-mode.
\n
If you're using :pdf renderer - don't forget to call (.dispose graphics)\nas last command inside with-graphics macro, otherwise graphics won't be\nsaved.
\n
Unlike the main drawing surface which is completely opaque, surfaces\ncreated with create-graphics can have transparency. This makes it\npossible to draw into a graphics and maintain the alpha channel. By\nusing save to write a PNG or TGA file, the transparency of the\ngraphics object will be honored.
\n",
+  "
Creates and returns a new PGraphics object of the types :p2d, :p3d,\n:java2d, :pdf. By default :java2d is used. Use this class if you\nneed to draw into an off-screen graphics buffer. It's not possible\nto use create-graphics with the :opengl renderer, because it doesn't\nallow offscreen use. The :pdf renderer requires the filename parameter.
\n
Note: don't use create-graphics in draw in clojurescript, it leaks memory.\nYou should create graphic in setup and reuse it in draw instead of creating\na new one.
\n
It's important to call any drawing commands between (.beginDraw graphics) and\n(.endDraw graphics) statements or use with-graphics macro. This is also true\nfor any commands that affect drawing, such as smooth or color-mode.
\n
If you're using :pdf renderer - don't forget to call (.dispose graphics)\nas last command inside with-graphics macro, otherwise graphics won't be\nsaved.
\n
Unlike the main drawing surface which is completely opaque, surfaces\ncreated with create-graphics can have transparency. This makes it\npossible to draw into a graphics and maintain the alpha channel. By\nusing save to write a PNG or TGA file, the transparency of the\ngraphics object will be honored.
\n",
   :what :fn},
  update-pixels
  {:args ({:value [img], :type :both} {:value [], :type :both}),
@@ -238,7 +238,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/updatePixels_.html",
   :docstring
-  "
Updates the display window or image with the data in the pixels array.\nUse in conjunction with pixels. If you're only reading pixels from\nthe array, there's no need to call update-pixels unless there are\nchanges.
\n
Certain renderers may or may not seem to require pixels or\nupdate-pixels. However, the rule is that any time you want to\nmanipulate the pixels array, you must first call pixels, and\nafter changes have been made, call update-pixels. Even if the\nrenderer may not seem to use this function in the current Processing\nrelease, this will always be subject to change.
\n",
+  "
Updates the display window or image with the data in the pixels array.\nUse in conjunction with pixels. If you're only reading pixels from\nthe array, there's no need to call update-pixels unless there are\nchanges.
\n
Certain renderers may or may not seem to require pixels or\nupdate-pixels. However, the rule is that any time you want to\nmanipulate the pixels array, you must first call pixels, and\nafter changes have been made, call update-pixels. Even if the\nrenderer may not seem to use this function in the current Processing\nrelease, this will always be subject to change.
\n",
   :what :fn},
  text-size
  {:args ({:value [size], :type :both}),
@@ -251,7 +251,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/textSize_.html",
   :docstring
-  "
Sets the current font size. This size will be used in all\nsubsequent calls to the text function. Font size is measured in\nunits of pixels.
\n",
+  "
Sets the current font size. This size will be used in all\nsubsequent calls to the text function. Font size is measured in\nunits of pixels.
\n",
   :what :fn},
  pixels
  {:args ({:value [img], :type :both} {:value [], :type :both}),
@@ -264,7 +264,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/pixels.html",
   :docstring
-  "
Array containing the values for all the pixels in the display\nwindow or image. This array is therefore the size of the display window. If\nthis array is modified, the update-pixels function must be called to\nupdate the changes. Calls .loadPixels before obtaining the pixel array.
\n",
+  "
Array containing the values for all the pixels in the display\nwindow or image. This array is therefore the size of the display window. If\nthis array is modified, the update-pixels function must be called to\nupdate the changes. Calls .loadPixels before obtaining the pixel array.
\n",
   :what :fn},
  font-available?
  {:args #{[font-str]},
@@ -303,7 +303,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/resetShader_.html",
   :docstring
-  "
Restores the default shaders. Code that runs after reset-shader will\nnot be affected by previously defined shaders. Optional kind parameter -\ntype of shader, either :points, :lines, or :triangles
\n",
+  "
Restores the default shaders. Code that runs after reset-shader will\nnot be affected by previously defined shaders. Optional kind parameter -\ntype of shader, either :points, :lines, or :triangles
\n",
   :what :fn},
  rect
  {:args
@@ -328,7 +328,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/rect_.html",
   :docstring
-  "
Draws a rectangle to the screen. A rectangle is a four-sided shape\nwith every angle at ninety degrees. By default, the first two\nparameters set the location of the upper-left corner, the third\nsets the width, and the fourth sets the height. These parameters\nmay be changed with rect-mode.
\n
To draw a rounded rectangle, add a fifth parameter, which is used as\nthe radius value for all four corners. To use a different radius value\nfor each corner, include eight parameters.
\n",
+  "
Draws a rectangle to the screen. A rectangle is a four-sided shape\nwith every angle at ninety degrees. By default, the first two\nparameters set the location of the upper-left corner, the third\nsets the width, and the fourth sets the height. These parameters\nmay be changed with rect-mode.
\n
To draw a rounded rectangle, add a fifth parameter, which is used as\nthe radius value for all four corners. To use a different radius value\nfor each corner, include eight parameters.
\n",
   :what :fn},
  log
  {:args ({:value [val], :type :both}),
@@ -354,7 +354,7 @@
   :requires-bindings true,
   :link nil,
   :docstring
-  "
Temporarily set the stroke color for the body of this macro.\nThe code outside of the with-stroke form will have the previous\nstroke color set.
\n
A stroke argument of nil disables the stroke.
\n
Examples:
\n
(with-stroke 255 ...)\n(with-stroke [10 80 98] ...)\n(with-stroke nil ...)\n
\n",
+  "
Temporarily set the stroke color for the body of this macro.\nThe code outside of the with-stroke form will have the previous\nstroke color set.
\n
A stroke argument of nil disables the stroke.
\n
Examples:
\n
(with-stroke 255 ...)\n(with-stroke [10 80 98] ...)\n(with-stroke nil ...)\n
\n",
   :what :macro},
  key-modifiers
  {:args #{[]},
@@ -380,7 +380,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/endRaw_.html",
   :docstring
-  "
Complement to begin-raw; they must always be used together. See\nthe begin-raw docstring for details.
\n",
+  "
Complement to begin-raw; they must always be used together. See\nthe begin-raw docstring for details.
\n",
   :what :fn},
  radians
  {:args ({:value [degrees], :type :both}),
@@ -419,7 +419,7 @@
   :requires-bindings false,
   :link "https://processing.org/reference/acos_.html",
   :docstring
-  "
The inverse of cos, returns the arc cosine of a value. This\nfunction expects the values in the range of -1 to 1 and values are\nreturned in the range 0 to Math/PI (3.1415927).
\n",
+  "
The inverse of cos, returns the arc cosine of a value. This\nfunction expects the values in the range of -1 to 1 and values are\nreturned in the range 0 to Math/PI (3.1415927).
\n",
   :what :fn},
  angle-mode
  {:args #{[mode]},
@@ -458,7 +458,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/texture_.html",
   :docstring
-  "
Sets a texture to be applied to vertex points. The texture function must\nbe called between begin-shape and end-shape and before any calls to\nvertex.
\n
When textures are in use, the fill color is ignored. Instead, use\ntint to specify the color of the texture as it is applied to the\nshape.
\n",
+  "
Sets a texture to be applied to vertex points. The texture function must\nbe called between begin-shape and end-shape and before any calls to\nvertex.
\n
When textures are in use, the fill color is ignored. Instead, use\ntint to specify the color of the texture as it is applied to the\nshape.
\n",
   :what :fn},
  print-camera
  {:args #{[]},
@@ -497,7 +497,7 @@
   :requires-bindings false,
   :link "https://processing.org/reference/atan2_.html",
   :docstring
-  "
Calculates the angle (in radians) from a specified point to the\ncoordinate origin as measured from the positive x-axis. Values are\nreturned as a float in the range from PI to -PI. The atan2 function\nis most often used for orienting geometry to the position of the\ncursor. Note: The y-coordinate of the point is the first parameter\nand the x-coordinate is the second due to the structure of\ncalculating the tangent.
\n",
+  "
Calculates the angle (in radians) from a specified point to the\ncoordinate origin as measured from the positive x-axis. Values are\nreturned as a float in the range from PI to -PI. The atan2 function\nis most often used for orienting geometry to the position of the\ncursor. Note: The y-coordinate of the point is the first parameter\nand the x-coordinate is the second due to the structure of\ncalculating the tangent.
\n",
   :what :fn},
  shader
  {:args
@@ -550,7 +550,7 @@
   :requires-bindings false,
   :link nil,
   :docstring
-  "
Enables navigation over 2D sketch. Drag mouse to change the center of the\nsketch and mouse wheel controls zoom. This middleware requires fun-mode.
\n
Customization
\n
You can customize this middleware by providing a map as\n:navigation-2d option in quil.sketch/defsketch/quil.sketch/sketch.\nThe map can have the following optional keys:
\n
\n
\n
:position - vector of 2 numbers, x and y - center of the screen.\nDefault is width/2, height/2.
\n
\n
\n
:zoom - number indicating current zoom level. Default is 1.
\n
\n
\n
Accessing position information from sketch
\n
navigation-2d uses fun-mode under the hood so all position-related\ninformation is stored in the state map. It means that you can access in\ndraw/update/any handler and modify it if you need to. Position\ninformation is a map which is stored under :navigation-2d key in the\nstate map. Position consists of 2 values: :position and :zoom.\nSee "Customization" section above for more details.
\n
Usage example:
\n
(q/defsketch my-sketch\n  ...\n  :middleware [m/fun-mode m/navigation-2d])\n
\n",
+  "
Enables navigation over 2D sketch. Drag mouse to change the center of the\nsketch and mouse wheel controls zoom. This middleware requires fun-mode.
\n
Customization
\n
You can customize this middleware by providing map as\n:navigation-2d option in defsketch/sketch. Map can have following\noptional keys:
\n
:position - vector of 2 numbers, x and y - center of the screen.\nDefault is width/2, height/2.
\n
:zoom - number indicating current zoom level. Default is 1.
\n
Accessing position information from sketch
\n
navigation-2d uses fun-mode under the hood so all position-related\ninformation is stored in the state map. It means that you can access in\ndraw/update/any handler and modify it if you need to. Position\ninformation is a map which is stored under :navigation-2d key in the\nstate map. Position consists of 2 values: :position and :zoom.\nSee "Customization" section above for more details.
\n
Usage example:
\n
(q/defsketch my-sketch\n...\n:middleware [m/fun-mode m/navigation-2d])
\n",
   :what :fn},
  color-mode
  {:args
@@ -567,7 +567,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/colorMode_.html",
   :docstring
-  "
Changes the way Processing interprets color data. Available modes\nare :rgb and :hsb (and :hsl in clojurescript).\nBy default, the parameters for fill, stroke,\nbackground, and color are defined by values between 0 and 255 using\nthe :rgb color model. The color-mode function is used to change the\nnumerical range used for specifying colors and to switch color\nsystems. For example, calling\n(color-mode :rgb 1.0) will specify that values are specified between\n0 and 1. The limits for defining colors are altered by setting the\nparameters range1, range2, range3, and range 4.
\n",
+  "
Changes the way Processing interprets color data. Available modes\nare :rgb and :hsb (and :hsl in clojurescript).\nBy default, the parameters for fill, stroke,\nbackground, and color are defined by values between 0 and 255 using\nthe :rgb color model. The color-mode function is used to change the\nnumerical range used for specifying colors and to switch color\nsystems. For example, calling\n(color-mode :rgb 1.0) will specify that values are specified between\n0 and 1. The limits for defining colors are altered by setting the\nparameters range1, range2, range3, and range 4.
\n",
   :what :fn},
  create-image
  {:args
@@ -581,7 +581,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/createImage_.html",
   :docstring
-  "
Creates a new datatype for storing images (PImage for clj and\nImage for cljs). This provides a fresh buffer of pixels to play\nwith. Set the size of the buffer with the width and height\nparameters.
\n
In clj the format parameter defines how the pixels are stored.\nSee the PImage reference for more information.\nPossible formats: :rgb, :argb, :alpha (grayscale alpha channel)
\n
Prefer using create-image over initialising new PImage (or Image)\ninstances directly.
\n",
+  "
Creates a new datatype for storing images (PImage for clj and\nImage for cljs). This provides a fresh buffer of pixels to play\nwith. Set the size of the buffer with the width and height\nparameters.
\n
In clj the format parameter defines how the pixels are stored.\nSee the PImage reference for more information.\nPossible formats: :rgb, :argb, :alpha (grayscale alpha channel)
\n
Prefer using create-image over initialising new PImage (or Image)\ninstances directly.
\n",
   :what :fn},
  sq
  {:args ({:value [a], :type :both}),
@@ -621,7 +621,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/noLoop_.html",
   :docstring
-  "
Stops Processing from continuously executing the code within\ndraw. If start-loop is called, the code in draw will begin to run\ncontinuously again. If using no-loop in setup, it should be the last\nline inside the block.
\n
When no-loop is used, it's not possible to manipulate or access the\nscreen inside event handling functions such as mouse-pressed or\nkey-pressed. Instead, use those functions to call redraw or\nloop which will run draw, which can update the screen\nproperly. This means that when no-loop has been called, no drawing\ncan happen, and functions like save-frame may not be used.
\n
Note that if the sketch is resized, redraw will be called to\nupdate the sketch, even after no-loop has been\nspecified. Otherwise, the sketch would enter an odd state until\nloop was called.
\n",
+  "
Stops Processing from continuously executing the code within\ndraw. If start-loop is called, the code in draw will begin to run\ncontinuously again. If using no-loop in setup, it should be the last\nline inside the block.
\n
When no-loop is used, it's not possible to manipulate or access the\nscreen inside event handling functions such as mouse-pressed? or\nkey-pressed?. Instead, use those functions to call redraw or\nloop which will run draw, which can update the screen\nproperly. This means that when no-loop has been called, no drawing\ncan happen, and functions like save-frame may not be used.
\n
Note that if the sketch is resized, redraw will be called to\nupdate the sketch, even after no-loop has been\nspecified. Otherwise, the sketch would enter an odd state until\nloop was called.
\n",
   :what :fn},
  minute
  {:args ({:value [], :type :both}),
@@ -663,7 +663,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/text_.html",
   :docstring
-  "
Draws text to the screen in the position specified by the x and y\nparameters (and the optional z parameter in clj). A default font will be used\nunless a font is set with the text-font function. Change the color of the\ntext with the fill function. The text displays in relation to the\ntext-align function, which gives the option to draw to the left, right, and\ncenter of the coordinates.
\n
The x1, y1, x2 and y2 parameters define a\nrectangular area to display within and may only be used with string\ndata. For text drawn inside a rectangle, the coordinates are\ninterpreted based on the current rect-mode setting.
\n",
+  "
Draws text to the screen in the position specified by the x and y\nparameters (and the optional z parameter in clj). A default font will be used\nunless a font is set with the text-font function. Change the color of the\ntext with the fill function. The text displays in relation to the\ntext-align function, which gives the option to draw to the left, right, and\ncenter of the coordinates.
\n
The x1, y1, x2 and y2 parameters define a\nrectangular area to display within and may only be used with string\ndata. For text drawn inside a rectangle, the coordinates are\ninterpreted based on the current rect-mode setting.
\n",
   :what :fn},
  available-fonts
  {:args #{[]},
@@ -689,7 +689,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/clear_.html",
   :docstring
-  "
Clears the pixels within a buffer. This function only works on\ngraphics objects created with the create-graphics function meaning\nthat you should call it only inside with-graphics macro. Unlike\nthe main graphics context (the display window), pixels in additional\ngraphics areas created with create-graphics can be entirely or\npartially transparent. This function clears everything in a graphics\nobject to make all of the pixels 100% transparent.
\n",
+  "
Clears the pixels within a buffer. This function only works on\ngraphics objects created with the create-graphics function meaning\nthat you should call it only inside with-graphics macro. Unlike\nthe main graphics context (the display window), pixels in additional\ngraphics areas created with create-graphics can be entirely or\npartially transparent. This function clears everything in a graphics\nobject to make all of the pixels 100% transparent.
\n",
   :what :fn},
  binary
  {:args
@@ -729,7 +729,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/popMatrix_.html",
   :docstring
-  "
Pops the current transformation matrix off the matrix\nstack. Understanding pushing and popping requires understanding the\nconcept of a matrix stack. The push-matrix function saves the current\ncoordinate system to the stack and pop-matrix restores the prior\ncoordinate system. push-matrix and pop-matrix are used in conjunction\nwith the other transformation methods and may be embedded to control\nthe scope of the transformations.
\n",
+  "
Pops the current transformation matrix off the matrix\nstack. Understanding pushing and popping requires understanding the\nconcept of a matrix stack. The push-matrix function saves the current\ncoordinate system to the stack and pop-matrix restores the prior\ncoordinate system. push-matrix and pop-matrix are used in conjunction\nwith the other transformation methods and may be embedded to control\nthe scope of the transformations.
\n",
   :what :fn},
  ceil
  {:args ({:value [n], :type :both}),
@@ -755,7 +755,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/keyCode.html",
   :docstring
-  "
The variable keyCode is used to detect special keys such as the UP,\nDOWN, LEFT, RIGHT arrow keys and ALT, CONTROL, SHIFT. When checking\nfor these keys, it's first necessary to check and see if the key is\ncoded. This is done with the conditional (= (key) CODED).
\n
The keys included in the ASCII specification (BACKSPACE, TAB, ENTER,\nRETURN, ESC, and DELETE) do not require checking to see if they key\nis coded, and you should simply use the key variable instead of\nkey-code. If you're making cross-platform projects, note that the\nENTER key is commonly used on PCs and Unix and the RETURN key is\nused instead on Macintosh. Check for both ENTER and RETURN to make\nsure your program will work for all platforms.
\n
For users familiar with Java, the values for UP and DOWN are simply\nshorter versions of Java's KeyEvent.VK_UP and\nKeyEvent.VK_DOWN. Other keyCode values can be found in the Java\nKeyEvent reference.
\n",
+  "
The variable keyCode is used to detect special keys such as the UP,\nDOWN, LEFT, RIGHT arrow keys and ALT, CONTROL, SHIFT. When checking\nfor these keys, it's first necessary to check and see if the key is\ncoded. This is done with the conditional (= (key) CODED).
\n
The keys included in the ASCII specification (BACKSPACE, TAB, ENTER,\nRETURN, ESC, and DELETE) do not require checking to see if they key\nis coded, and you should simply use the key variable instead of\nkey-code. If you're making cross-platform projects, note that the\nENTER key is commonly used on PCs and Unix and the RETURN key is\nused instead on Macintosh. Check for both ENTER and RETURN to make\nsure your program will work for all platforms.
\n
For users familiar with Java, the values for UP and DOWN are simply\nshorter versions of Java's KeyEvent.VK_UP and\nKeyEvent.VK_DOWN. Other keyCode values can be found in the Java\nKeyEvent reference.
\n",
   :what :fn},
  sphere
  {:args ({:value [radius], :type :both}),
@@ -793,7 +793,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/loop_.html",
   :docstring
-  "
Causes Processing to continuously execute the code within\ndraw. If no-loop is called, the code in draw stops executing.
\n",
+  "
Causes Processing to continuously execute the code within\ndraw. If no-loop is called, the code in draw stops executing.
\n",
   :what :fn},
  orbit-control
  {:args #{[]},
@@ -819,7 +819,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/curveVertex_.html",
   :docstring
-  "
Specifies vertex coordinates for curves. This function may only be\nused between begin-shape and end-shape and only when there is no\nmode keyword specified to begin-shape. The first and last points in a\nseries of curve-vertex lines will be used to guide the beginning and\nend of a the curve. A minimum of four points is required to draw a\ntiny curve between the second and third points. Adding a fifth point\nwith curve-vertex will draw the curve between the second, third, and\nfourth points. The curve-vertex function is an implementation of\nCatmull-Rom splines.
\n",
+  "
Specifies vertex coordinates for curves. This function may only be\nused between begin-shape and end-shape and only when there is no\nmode keyword specified to begin-shape. The first and last points in a\nseries of curve-vertex lines will be used to guide the beginning and\nend of a the curve. A minimum of four points is required to draw a\ntiny curve between the second and third points. Adding a fifth point\nwith curve-vertex will draw the curve between the second, third, and\nfourth points. The curve-vertex function is an implementation of\nCatmull-Rom splines.
\n",
   :what :fn},
  state-atom
  {:args ({:value [], :type :both}),
@@ -844,7 +844,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/loadImage_.html",
   :docstring
-  "
Loads an image into a variable of type PImage. Four types of\nimages (.gif, .jpg, .tga, .png) may be loaded. To load\ncorrectly, images must be located in the data directory of the\ncurrent sketch. In most cases, load all images in setup to preload\nthem at the start of the program. Loading images inside draw will\nreduce the speed of a program.
\n
The filename parameter can also be a URL to a file found online.
\n
Image is loaded asynchronously. In order to check whether image\nfinished loading use loaded?.
\n",
+  "
Loads an image into a variable of type PImage. Four types of\nimages (.gif, .jpg, .tga, .png) may be loaded. To load\ncorrectly, images must be located in the data directory of the\ncurrent sketch. In most cases, load all images in setup to preload\nthem at the start of the program. Loading images inside draw will\nreduce the speed of a program.
\n
The filename parameter can also be a URL to a file found online.
\n
Image is loaded asynchronously. In order to check whether image\nfinished loading use loaded?.
\n",
   :what :fn},
  bezier
  {:args
@@ -872,7 +872,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/smooth_.html",
   :docstring
-  "
Draws all geometry with smooth (anti-aliased) edges. This will slow\ndown the frame rate of the application, but will enhance the visual\nrefinement.
\n
Must be called inside :settings handler.
\n
The level parameter (int) increases the level of smoothness with the\n:p2d and :p3d renderers. This is the level of over sampling applied to\nthe graphics buffer. The value 2 will double the rendering size\nbefore scaling it down to the display size. This is called 2x anti-aliasing. The value 4 is used for 4x anti-aliasing and 8 is\nspecified for 8x anti-aliasing. If level is set to 0, it will disable\nall smoothing; it's the equivalent of the function no-smooth.\nThe maximum anti-aliasing level is determined by the hardware of the\nmachine that is running the software.
\n
Note that smooth will also improve image quality of resized images.
\n",
+  "
Draws all geometry with smooth (anti-aliased) edges. This will slow\ndown the frame rate of the application, but will enhance the visual\nrefinement.
\n
Must be called inside :settings handler.
\n
The level parameter (int) increases the level of smoothness with the\n:p2d and :p3d renderers. This is the level of over sampling applied to\nthe graphics buffer. The value 2 will double the rendering size\nbefore scaling it down to the display size. This is called 2x anti-aliasing. The value 4 is used for 4x anti-aliasing and 8 is\nspecified for 8x anti-aliasing. If level is set to 0, it will disable\nall smoothing; it's the equivalent of the function no-smooth.\nThe maximum anti-aliasing level is determined by the hardware of the\nmachine that is running the software.
\n
Note that smooth will also improve image quality of resized images.
\n",
   :what :fn},
  shear-x
  {:args ({:value [angle], :type :both}),
@@ -885,7 +885,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/shearX_.html",
   :docstring
-  "
Shears a shape around the x-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0 to\nPI*2) or converted to radians with the radians function. Objects\nare always sheared around their relative position to the origin and\npositive numbers shear objects in a clockwise direction.\nTransformations apply to everything that happens after and\nsubsequent calls to the function accumulates the effect. For\nexample, calling (shear-x (/ PI 2)) and then (shear-x (/ PI 2)) is\nthe same as (shear-x PI). If shear-x is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction works in P2D or JAVA2D mode.
\n
Technically, shear-x multiplies the current transformation matrix\nby a rotation matrix. This function can be further controlled by the\npush-matrix and pop-matrix functions.
\n",
+  "
Shears a shape around the x-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0 to\nPI*2) or converted to radians with the radians function. Objects\nare always sheared around their relative position to the origin and\npositive numbers shear objects in a clockwise direction.\nTransformations apply to everything that happens after and\nsubsequent calls to the function accumulates the effect. For\nexample, calling (shear-x (/ PI 2)) and then (shear-x (/ PI 2)) is\nthe same as (shear-x PI). If shear-x is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction works in P2D or JAVA2D mode.
\n
Technically, shear-x multiplies the current transformation matrix\nby a rotation matrix. This function can be further controlled by the\npush-matrix and pop-matrix functions.
\n",
   :what :fn},
  stroke-weight
  {:args ({:value [weight], :type :both}),
@@ -937,7 +937,7 @@
   :requires-bindings false,
   :link nil,
   :docstring
-  "
Pauses sketch if any of the user-provided handlers throws an error.\nIt allows to fix the error on the fly and continue sketch.\nMay be good alternative to default '500ms pause if exception'\nbehaviour.
\n",
+  "
Pauses sketch if any of user-provided handlers throws error.\nIt allows to fix the error on the fly and continue sketch.\nMay be good alternative to default '500ms pause if exception'\nbehaviour.
\n",
   :what :fn},
  hour
  {:args ({:value [], :type :both}),
@@ -963,7 +963,7 @@
   :requires-bindings false,
   :link "https://processing.org/reference/atan_.html",
   :docstring
-  "
The inverse of tan, returns the arc tangent of a value. This\nfunction expects the values in the range of -Infinity to\nInfinity (exclusive) and values are returned in the range -PI/2 to\nPI/2.
\n",
+  "
The inverse of tan, returns the arc tangent of a value. This\nfunction expects the values in the range of -Infinity to\nInfinity (exclusive) and values are returned in the range -PI/2 to\nPI/2.
\n",
   :what :fn},
  rotate-y
  {:args ({:value [angle], :type :both}),
@@ -976,7 +976,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/rotateY_.html",
   :docstring
-  "
Rotates a shape around the y-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0\nto (* PI 2)) or converted to radians with the radians function.\nObjects are always rotated around their relative position to the\norigin and positive numbers rotate objects in a counterclockwise\ndirection. Transformations apply to everything that happens after\nand subsequent calls to the function accumulates the effect. For\nexample, calling (rotate-y HALF-PI) and then (rotate-y HALF-PI) is\nthe same as (rotate-y PI). If rotate-y is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction requires either the :p3d or :opengl renderer.
\n",
+  "
Rotates a shape around the y-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0\nto (* PI 2)) or converted to radians with the radians function.\nObjects are always rotated around their relative position to the\norigin and positive numbers rotate objects in a counterclockwise\ndirection. Transformations apply to everything that happens after\nand subsequent calls to the function accumulates the effect. For\nexample, calling (rotate-y HALF-PI) and then (rotate-y HALF-PI) is\nthe same as (rotate-y PI). If rotate-y is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction requires either the :p3d or :opengl renderer.
\n",
   :what :fn},
  day
  {:args ({:value [], :type :both}),
@@ -1002,7 +1002,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/pointLight_.html",
   :docstring
-  "
Adds a point light. Lights need to be included in the draw() to\nremain persistent in a looping program. Placing them in the setup()\nof a looping program will cause them to only have an effect the\nfirst time through the loop. The affect of the r, g, and b\nparameters is determined by the current color-mode. The x, y, and z\nparameters set the position of the light
\n",
+  "
Adds a point light. Lights need to be included in the draw() to\nremain persistent in a looping program. Placing them in the setup()\nof a looping program will cause them to only have an effect the\nfirst time through the loop. The affect of the r, g, and b\nparameters is determined by the current color-mode. The x, y, and z\nparameters set the position of the light
\n",
   :what :fn},
  pmouse-x
  {:args ({:value [], :type :both}),
@@ -1045,7 +1045,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/stroke_.html",
   :docstring
-  "
Sets the color used to draw lines and borders around shapes. This\ncolor is either specified in terms of the RGB or HSB color depending\non the current color-mode (the default color space is RGB, with\neach value in the range from 0 to 255).\nIf nil is passed it removes any fill color; equivalent to no-stroke.
\n",
+  "
Sets the color used to draw lines and borders around shapes. This\ncolor is either specified in terms of the RGB or HSB color depending\non the current color-mode (the default color space is RGB, with\neach value in the range from 0 to 255).\nIf nil is passed it removes any fill color; equivalent to no-stroke.
\n",
   :what :fn},
  mouse-pressed?
  {:args ({:value [], :type :both}),
@@ -1084,7 +1084,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/displayDensity_.html",
   :docstring
-  "
This function returns the number 2 if the screen is a high-density\nscreen (called a Retina display on OS X or high-dpi on Windows and\nLinux) and a 1 if not. This information is useful for a program to\nadapt to run at double the pixel density on a screen that supports\nit. Can be used in conjunction with pixel-density.
\n",
+  "
This function returns the number 2 if the screen is a high-density\nscreen (called a Retina display on OS X or high-dpi on Windows and\nLinux) and a 1 if not. This information is useful for a program to\nadapt to run at double the pixel density on a screen that supports\nit. Can be used in conjunction with pixel-density.
\n",
   :what :fn},
  quadratic-vertex
  {:args
@@ -1099,7 +1099,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/quadraticVertex_.html",
   :docstring
-  "
Specifies vertex coordinates for quadratic Bezier curves. Each call to\nquadratic-vertex defines the position of one control points and one\nanchor point of a Bezier curve, adding a new segment to a line or shape.\nThe first time quadratic-vertex is used within a begin-shape call, it\nmust be prefaced with a call to vertex to set the first anchor point.\nThis function must be used between begin-shape and end-shape and only\nwhen there is no MODE parameter specified to begin-shape. Using the 3D\nversion requires rendering with :p3d.
\n",
+  "
Specifies vertex coordinates for quadratic Bezier curves. Each call to\nquadratic-vertex defines the position of one control points and one\nanchor point of a Bezier curve, adding a new segment to a line or shape.\nThe first time quadratic-vertex is used within a begin-shape call, it\nmust be prefaced with a call to vertex to set the first anchor point.\nThis function must be used between begin-shape and end-shape and only\nwhen there is no MODE parameter specified to begin-shape. Using the 3D\nversion requires rendering with :p3d.
\n",
   :what :fn},
  clip
  {:args #{[x y w h]},
@@ -1112,7 +1112,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/clip_.html",
   :docstring
-  "
Limits the rendering to the boundaries of a rectangle defined by\nthe parameters. The boundaries are drawn based on the state of\nthe image-mode function, either :corner, :corners, or :center.\nTo disable use no-clip.
\n",
+  "
Limits the rendering to the boundaries of a rectangle defined by\nthe parameters. The boundaries are drawn based on the state of\nthe image-mode function, either :corner, :corners, or :center.\nTo disable use no-clip.
\n",
   :what :fn},
  pixel-density
  {:args ({:value [density], :type :both}),
@@ -1125,7 +1125,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/pixelDensity_.html",
   :docstring
-  "
It makes it possible for Processing to render using all of the pixels\non high resolutions screens like Apple Retina displays and Windows\nHigh-DPI displays. Possible values 1 or 2. Must be called only from\n:settings handler. To get density of the current screen you can use\nthe display-density function.
\n",
+  "
It makes it possible for Processing to render using all of the pixels\non high resolutions screens like Apple Retina displays and Windows\nHigh-DPI displays. Possible values 1 or 2. Must be called only from\n:settings handler. To get density of the current screen you can use\nthe display-density function.
\n",
   :what :fn},
  begin-raw
  {:args #{[renderer filename]},
@@ -1138,7 +1138,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/beginRaw_.html",
   :docstring
-  "
Enables the creation of vectors from 3D data. Requires\ncorresponding end-raw command. These commands will grab the shape\ndata just before it is rendered to the screen. At this stage, your\nentire scene is nothing but a long list of individual lines and\ntriangles. This means that a shape created with sphere method will\nbe made up of hundreds of triangles, rather than a single object. Or\nthat a multi-segment line shape (such as a curve) will be rendered\nas individual segments.
\n",
+  "
Enables the creation of vectors from 3D data. Requires\ncorresponding end-raw command. These commands will grab the shape\ndata just before it is rendered to the screen. At this stage, your\nentire scene is nothing but a long list of individual lines and\ntriangles. This means that a shape created with sphere method will\nbe made up of hundreds of triangles, rather than a single object. Or\nthat a multi-segment line shape (such as a curve) will be rendered\nas individual segments.
\n",
   :what :fn},
  noise-seed
  {:args ({:value [val], :type :both}),
@@ -1189,7 +1189,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/copy_.html",
   :docstring
-  "
Copies a region of pixels from one image to another. If src-img\nis not specified it defaults to current-graphics. If dest-img is not\nspecified - it defaults to current-graphics. If the source\nand destination regions aren't the same size, it will automatically\nresize the source pixels to fit the specified target region. No\nalpha information is used in the process, however if the source\nimage has an alpha channel set, it will be copied as well.
\n",
+  "
Copies a region of pixels from one image to another. If src-img\nis not specified it defaults to current-graphics. If dest-img is not\nspecified - it defaults to current-graphics. If the source\nand destination regions aren't the same size, it will automatically\nresize the source pixels to fit the specified target region. No\nalpha information is used in the process, however if the source\nimage has an alpha channel set, it will be copied as well.
\n",
   :what :fn},
  random-3d
  {:args ({:value [], :type :both}),
@@ -1215,7 +1215,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/beginShape_.html",
   :docstring
-  "
Enables the creation of complex forms. begin-shape begins recording\nvertices for a shape and end-shape stops recording. Use the mode\nkeyword to specify which shape to create from the provided\nvertices. With no mode specified, the shape can be any irregular\npolygon.
\n
The available mode keywords are :points, :lines, :triangles,\n:triangle-fan, :triangle-strip,\n:quads, :quad-strip.
\n
After calling the begin-shape function, a series of vertex commands\nmust follow. To stop drawing the shape, call end-shape. The vertex\nfunction with two parameters specifies a position in 2D and the\nvertex function with three parameters specifies a position in\n3D. Each shape will be outlined with the current stroke color and\nfilled with the fill color.
\n
Transformations such as translate, rotate, and scale do not work\nwithin begin-shape. It is also not possible to use other shapes,\nsuch as ellipse or rect within begin-shape.
\n",
+  "
Enables the creation of complex forms. begin-shape begins recording\nvertices. With no mode specified, the shape can be any irregular\npolygon.
\n
The available mode keywords are :points, :lines, :triangles,\n:triangle-fan, :triangle-strip,\n:quads, :quad-strip.
\n
After calling the begin-shape function, a series of vertex commands\nmust follow. To stop drawing the shape, call end-shape. The vertex\nfunction with two parameters specifies a position in 2D and the\nvertex function with three parameters specifies a position in\n3D. Each shape will be outlined with the current-stroke color and\nfilled with the fill color.
\n
Transformations such as translate, rotate, and scale do not work\nwithin begin-shape. It is also not possible to use other shapes,\nsuch as ellipse or rect within begin-shape.
\n",
   :what :fn},
  set-state!
  {:args ({:value [& state-vals], :type :both}),
@@ -1266,7 +1266,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/curveTightness_.html",
   :docstring
-  "
Modifies the quality of forms created with curve and\ncurve-vertex. The parameter tightness determines how the curve fits\nto the vertex points. The value 0.0 is the default value for\ntightness (this value defines the curves to be Catmull-Rom splines)\nand the value 1.0 connects all the points with straight\nlines. Values within the range -5.0 and 5.0 will deform the curves\nbut will leave them recognizable and as values increase in\nmagnitude, they will continue to deform.
\n",
+  "
Modifies the quality of forms created with curve and\ncurve-vertex. The parameter tightness determines how the curve fits\nto the vertex points. The value 0.0 is the default value for\ntightness (this value defines the curves to be Catmull-Rom splines)\nand the value 1.0 connects all the points with straight\nlines. Values within the range -5.0 and 5.0 will deform the curves\nbut will leave them recognizable and as values increase in\nmagnitude, they will continue to deform.
\n",
   :what :fn},
  tan
  {:args ({:value [angle], :type :both}),
@@ -1305,7 +1305,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/emissive_.html",
   :docstring
-  "
Sets the emissive color of the material used for drawing shapes\ndrawn to the screen. Used in combination with ambient, specular, and\nshininess in setting the material properties of shapes.
\n
If passed one arg it is assumed to be an int (i.e. a color),\nmultiple args are converted to floats.
\n",
+  "
Sets the emissive color of the material used for drawing shapes\ndrawn to the screen. Used in combination with ambient, specular, and\nshininess in setting the material properties of shapes.
\n
If passed one arg it is assumed to be an int (i.e. a color),\nmultiple args are converted to floats.
\n",
   :what :fn},
  sketch
  {:args ({:value [& opts], :type :both}),
@@ -1317,7 +1317,7 @@
   :requires-bindings false,
   :link nil,
   :docstring
-  "
Create and start a new visualisation applet. Can be used to create\nnew sketches programmatically. See documentation for defsketch for\nlist of available options.
\n",
+  "
Create and start a new visualisation applet. Can be used to create\nnew sketches programmatically. See documentation for defsketch for\nlist of available options.
\n",
   :what :fn},
  color
  {:args
@@ -1334,7 +1334,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/color_.html",
   :docstring
-  "
Creates an integer representation of a color. The parameters are\ninterpreted as RGB or HSB values depending on the current\ncolor-mode. The default mode is RGB values from 0 to 255 and\ntherefore, the function call (color 255 204 0) will return a bright\nyellow. Args are cast to floats.
\n
\n
r - red or hue value
\n
g - green or saturation value
\n
b - blue or brightness value
\n
a - alpha value
\n
\n",
+  "
Creates an integer representation of a color. The parameters are\ninterpreted as RGB or HSB values depending on the current\ncolor-mode. The default mode is RGB values from 0 to 255 and\ntherefore, the function call (color 255 204 0) will return a bright\nyellow. Args are cast to floats.
\n
\n
r - red or hue value
\n
g - green or saturation value
\n
b - blue or brightness value
\n
a - alpha value
\n
\n",
   :what :fn},
  arc
  {:args
@@ -1349,7 +1349,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/arc_.html",
   :docstring
-  "
Draws an arc in the display window. Arcs are drawn along the outer\nedge of an ellipse defined by the x, y, width and height\nparameters. The origin or the arc's ellipse may be changed with the\nellipse-mode function. The start and stop parameters specify the\nangles at which to draw the arc. The mode is either :open, :chord or :pie.
\n",
+  "
Draws an arc in the display window. Arcs are drawn along the outer\nedge of an ellipse defined by the x, y, width and height\nparameters. The origin or the arc's ellipse may be changed with the\nellipse-mode function. The start and stop parameters specify the\nangles at which to draw the arc. The mode is either :open, :chord or :pie.
\n",
   :what :fn},
  text-align
  {:args
@@ -1364,7 +1364,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/textAlign_.html",
   :docstring
-  "
Sets the current alignment for drawing text. Available modes are:
\n
horizontal - :left, :center, and :right\nvertical   - :top, :bottom, :center, and :baseline
\n
An optional second parameter specifies the vertical alignment\nmode. :baseline is the default. The :top and :center parameters are\nstraightforward. The :bottom parameter offsets the line based on the\ncurrent text-descent. For multiple lines, the final line will be\naligned to the bottom, with the previous lines appearing above it.
\n
When using text with width and height parameters, :baseline is\nignored, and treated as :top. (Otherwise, text would by default draw\noutside the box, since :baseline is the default setting. :baseline is\nnot a useful drawing mode for text drawn in a rectangle.)
\n
The vertical alignment is based on the value of text-ascent, which\nmany fonts do not specify correctly. It may be necessary to use a\nhack and offset by a few pixels by hand so that the offset looks\ncorrect. To do this as less of a hack, use some percentage of\ntext-ascent or text-descent so that the hack works even if you\nchange the size of the font.
\n",
+  "
Sets the current alignment for drawing text. Available modes are:
\n
horizontal - :left, :center, and :right\nvertical   - :top, :bottom, :center, and :baseline
\n
An optional second parameter specifies the vertical alignment\nmode. :baseline is the default. The :top and :center parameters are\nstraightforward. The :bottom parameter offsets the line based on the\ncurrent text-descent. For multiple lines, the final line will be\naligned to the bottom, with the previous lines appearing above it.
\n
When using text with width and height parameters, :baseline is\nignored, and treated as :top. (Otherwise, text would by default draw\noutside the box, since :baseline is the default setting. :baseline is\nnot a useful drawing mode for text drawn in a rectangle.)
\n
The vertical alignment is based on the value of text-ascent, which\nmany fonts do not specify correctly. It may be necessary to use a\nhack and offset by a few pixels by hand so that the offset looks\ncorrect. To do this as less of a hack, use some percentage of\ntext-ascent or text-descent so that the hack works even if you\nchange the size of the font.
\n",
   :what :fn},
  text-width
  {:args ({:value [data], :type :both}),
@@ -1402,7 +1402,7 @@
   :requires-bindings false,
   :link "https://processing.org/reference/mag_.html",
   :docstring
-  "
Calculates the magnitude (or length) of a vector. A vector is a\ndirection in space commonly used in computer graphics and linear\nalgebra. Because it has no start position, the magnitude of a vector\ncan be thought of as the distance from coordinate (0,0) to its (x,y)\nvalue. Therefore, mag is a shortcut for writing (dist 0 0 x y).
\n",
+  "
Calculates the magnitude (or length) of a vector. A vector is a\ndirection in space commonly used in computer graphics and linear\nalgebra. Because it has no start position, the magnitude of a vector\ncan be thought of as the distance from coordinate (0,0) to its (x,y)\nvalue. Therefore, mag is a shortcut for writing (dist 0 0 x y).
\n",
   :what :fn},
  exit
  {:args ({:value [], :type :both}),
@@ -1415,7 +1415,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/exit_.html",
   :docstring
-  "
Quits/stops/exits the program. Rather than terminating\nimmediately, exit will cause the sketch to exit after draw has\ncompleted (or after setup completes if called during the setup\nmethod).
\n",
+  "
Quits/stops/exits the program. Rather than terminating\nimmediately, exit will cause the sketch to exit after draw has\ncompleted (or after setup completes if called during the setup\nmethod).
\n",
   :what :fn},
  map-range
  {:args ({:value [val low1 high1 low2 high2], :type :both}),
@@ -1467,7 +1467,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/textFont_.html",
   :docstring
-  "
Sets the current font that will be drawn with the text\nfunction. Fonts must be loaded with load-font before it can be\nused. This font will be used in all subsequent calls to the text\nfunction. If no size parameter is input, the font will appear at its\noriginal size until it is changed with text-size.
\n
Because fonts are usually bitmaped, you should create fonts at the\nsizes that will be used most commonly. Using text-font without the\nsize parameter will result in the cleanest-looking text.
\n
With the default (JAVA2D) and PDF renderers, it's also possible to\nenable the use of native fonts via the command\n(hint :enable-native-fonts). This will produce vector text in JAVA2D\nsketches and PDF output in cases where the vector data is available:\nwhen the font is still installed, or the font is created via the\ncreate-font function.
\n",
+  "
Sets the current font that will be drawn with the text\nfunction. Fonts must be loaded with load-font before it can be\nused. This font will be used in all subsequent calls to the text\nfunction. If no size parameter is input, the font will appear at its\noriginal size until it is changed with text-size.
\n
Because fonts are usually bitmaped, you should create fonts at the\nsizes that will be used most commonly. Using text-font without the\nsize parameter will result in the cleanest-looking text.
\n
With the default (JAVA2D) and PDF renderers, it's also possible to\nenable the use of native fonts via the command\n(hint :enable-native-fonts). This will produce vector text in JAVA2D\nsketches and PDF output in cases where the vector data is available:\nwhen the font is still installed, or the font is created via the\ncreate-font function.
\n",
   :what :fn},
  scale
  {:args
@@ -1483,7 +1483,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/scale_.html",
   :docstring
-  "
Increases or decreases the size of a shape by expanding and\ncontracting vertices. Objects always scale from their relative\norigin to the coordinate system. Scale values are specified as\ndecimal percentages. For example, the function call (scale 2)\nincreases the dimension of a shape by 200%. Transformations apply to\neverything that happens after and subsequent calls to the function\nmultiply the effect. For example, calling (scale 2) and then\n(scale 1.5) is the same as (scale 3). If scale is called within\ndraw, the transformation is reset when the loop begins again. Using\nthis function with the sz parameter requires specifying :p3d or :opengl\nas the renderer. This function can be further controlled by\npush-matrix and pop-matrix.
\n",
+  "
Increases or decreases the size of a shape by expanding and\ncontracting vertices. Objects always scale from their relative\norigin to the coordinate system. Scale values are specified as\ndecimal percentages. For example, the function call (scale 2)\nincreases the dimension of a shape by 200%. Transformations apply to\neverything that happens after and subsequent calls to the function\nmultiply the effect. For example, calling (scale 2) and then\n(scale 1.5) is the same as (scale 3). If scale is called within\ndraw, the transformation is reset when the loop begins again. Using\nthis function with the sz parameter requires specifying :p3d or :opengl\nas the renderer. This function can be further controlled by\npush-matrix and pop-matrix.
\n",
   :what :fn},
  defsketch
  {:args ({:value [app-name & options], :type :both}),
@@ -1495,7 +1495,7 @@
   :requires-bindings false,
   :link nil,
   :docstring
-  "
Define and start a sketch and bind it to a var with the symbol\napp-name. If any of the options to the various callbacks are\nsymbols, it wraps them in a call to var to ensure they aren't\ninlined and that redefinitions to the original functions are reflected in\nthe visualisation.
\n
\n
:size           - A vector of width and height for the sketch or :fullscreen.\nDefaults to [500 300]. If you're using :fullscreen you may\nwant to enable present mode - :features [:present].\n:fullscreen size works only in Clojure. In ClojureScript\nall sketches are support fullscreen when you press F11.
\n
:renderer       - Specifies the renderer type. One of :p2d, :p3d, :java2d,\n:opengl, :pdf, :svg). Defaults to :java2d. :dxf renderer\ncan't be used as sketch renderer. Use begin-raw method\ninstead. In clojurescript only :p2d and :p3d renderers\nare supported.
\n
:output-file    - Specifies an output file path. Only used in :pdf and :svg\nmodes. Not supported in clojurescript. When writing to a\nfile, call exit at the end of the draw call to end\nthe sketch and not write repeatedly to the file.
\n
:title          - A string which will be displayed at the top of\nthe sketch window. Not supported in clojurescript.
\n
:features       - A vector of keywords customizing sketch behaviour.\nSupported features:\n
\n
:keep-on-top   - Sketch window will always be above other windows.\nNote: some platforms might not support always-on-top windows.\nNot supported in clojurescript.
\n
:exit-on-close - Shutdown JVM  when sketch is closed.\nNot supported in clojurescript.
\n
:resizable     - Makes sketch resizable. Not supported in clojurescript.
\n
:no-safe-fns   - Do not catch and print exceptions thrown inside functions\nprovided to sketch (like draw, mouse-click,\nkey-pressed and others). By default all exceptions\nthrown inside these functions are caught. This prevents\nsketch from breaking when bad function was provided and\nallows you to fix it and reload it on fly. You can\ndisable this behaviour by enabling :no-safe-fns\nfeature. Not supported in clojurescript.
\n
:present       - Switch to present mode (fullscreen without borders, OS\npanels). You may want to use this feature together with\n:size :fullscreen. Not supported in ClojureScript. In\nClojureScript fullscreen is enabled by pressing F11 and\nit's enabled on all sketches automatically.
\n
:no-start      - Disables autostart if sketch was created using defsketch\nmacro. To start sketch you have to call function created\ndefsketch. Supported only in ClojureScript.\nUsage example: :features [:keep-on-top :present]
\n
\n
\n
:bgcolor        - Sets background color for unused space in present mode.\nColor is specified in hex format for example\n:bgcolor "#00FFFF" (cyan background)\nNot supported in ClojureScript.
\n
:display        - Sets what display should be used by this sketch.\nDisplays are numbered starting from 0. Example: :display 1.\nNot supported in ClojureScript.
\n
:setup          - A function to be called once when setting the sketch up.
\n
:draw           - A function to be repeatedly called at most n times per\nsecond where n is the target frame-rate set for\nthe visualisation.
\n
:host           - String id of canvas element or DOM element itself.\nSpecifies host for the sketch. Must be specified in sketch,\nmay be omitted in defsketch. If omitted in defsketch,\n:host is set to the name of the sketch. If element with\nspecified id is not found on the page and page is empty -\nnew canvas element will be created. Used in ClojureScript.
\n
:focus-gained   - Called when the sketch gains focus.\nNot supported in ClojureScript.
\n
:focus-lost     - Called when the sketch loses focus.\nNot supported in ClojureScript.
\n
:mouse-entered  - Called when the mouse enters the sketch window.
\n
:mouse-exited   - Called when the mouse leaves the sketch window
\n
:mouse-pressed  - Called every time a mouse button is pressed.
\n
:mouse-released - Called every time a mouse button is released.
\n
:mouse-clicked  - Called once after a mouse button has been pressed\nand then released.
\n
:mouse-moved    - Called every time the mouse moves and a button is\nnot pressed.
\n
:mouse-dragged  - Called every time the mouse moves and a button is\npressed.
\n
:mouse-wheel    - Called every time mouse wheel is rotated.\nTakes 1 argument - wheel rotation, an int.\nNegative values if the mouse wheel was rotated\nup/away from the user, and positive values\nif the mouse wheel was rotated down/ towards the user
\n
:key-pressed    - Called every time any key is pressed.
\n
:key-released   - Called every time any key is released.
\n
:key-typed      - Called once every time non-modifier keys are\npressed.
\n
:on-close       - Called once, when sketch is closed.\nNot supported in ClojureScript.
\n
:middleware     - Vector of middleware to be applied to the sketch.\nMiddleware will be applied in the same order as in comp\nfunction: [f g] will be applied as (f (g options)).
\n
:settings       - Cousin of :setup. A function to be called once when\nsetting sketch up. Should be used only for smooth and\nno-smooth. Due to Processing limitations these functions\ncannot be used neither in :setup nor in :draw.
\n
\n",
+  "
Define and start a sketch and bind it to a var with the symbol\napp-name. If any of the options to the various callbacks are\nsymbols, it wraps them in a call to var to ensure they aren't\ninlined and that redefinitions to the original functions are reflected in\nthe visualisation.
\n
\n
:size           - A vector of width and height for the sketch or :fullscreen.\nDefaults to [500 300]. If you're using :fullscreen you may\nwant to enable present mode - :features [:present].\n:fullscreen size works only in Clojure. In ClojureScript\nall sketches are support fullscreen when you press F11.
\n
:renderer       - Specifies the renderer type. One of :p2d, :p3d, :java2d,\n:opengl, :pdf, :svg). Defaults to :java2d. :dxf renderer\ncan't be used as sketch renderer. Use begin-raw method\ninstead. In clojurescript only :p2d and :p3d renderers\nare supported.
\n
:output-file    - Specifies an output file path. Only used in :pdf and :svg\nmodes. Not supported in clojurescript. When writing to a\nfile, call exit at the end of the draw call to end\nthe sketch and not write repeatedly to the file.
\n
:title          - A string which will be displayed at the top of\nthe sketch window. Not supported in clojurescript.
\n
:features       - A vector of keywords customizing sketch behaviour.\nSupported features:\n
\n
:keep-on-top   - Sketch window will always be above other windows.\nNote: some platforms might not support always-on-top windows.\nNot supported in clojurescript.
\n
:exit-on-close - Shutdown JVM  when sketch is closed.\nNot supported in clojurescript.
\n
:resizable     - Makes sketch resizable. Not supported in clojurescript.
\n
:no-safe-fns   - Do not catch and print exceptions thrown inside functions\nprovided to sketch (like draw, mouse-clicked?,\nkey-pressed? and others). By default all exceptions\nthrown inside these functions are caught. This prevents\nsketch from breaking when bad function was provided and\nallows you to fix it and reload it on fly. You can\ndisable this behaviour by enabling :no-safe-fns\nfeature. Not supported in clojurescript.
\n
:present       - Switch to present mode (fullscreen without borders, OS\npanels). You may want to use this feature together with\n:size :fullscreen. Not supported in ClojureScript. In\nClojureScript fullscreen is enabled by pressing F11 and\nit's enabled on all sketches automatically.
\n
:no-start      - Disables autostart if sketch was created using defsketch\nmacro. To start sketch you have to call function created\ndefsketch. Supported only in ClojureScript.\nUsage example: :features [:keep-on-top :present]
\n
\n
\n
:bgcolor        - Sets background color for unused space in present mode.\nColor is specified in hex format for example\n:bgcolor "#00FFFF" (cyan background)\nNot supported in ClojureScript.
\n
:display        - Sets what display should be used by this sketch.\nDisplays are numbered starting from 0. Example: :display 1.\nNot supported in ClojureScript.
\n
:setup          - A function to be called once when setting the sketch up.
\n
:draw           - A function to be repeatedly called at most n times per\nsecond where n is the target frame-rate set for\nthe visualisation.
\n
:host           - String id of canvas element or DOM element itself.\nSpecifies host for the sketch. Must be specified in sketch,\nmay be omitted in defsketch. If omitted in defsketch,\n:host is set to the name of the sketch. If element with\nspecified id is not found on the page and page is empty -\nnew canvas element will be created. Used in ClojureScript.
\n
:focus-gained   - Called when the sketch gains focus.\nNot supported in ClojureScript.
\n
:focus-lost     - Called when the sketch loses focus.\nNot supported in ClojureScript.
\n
:mouse-entered  - Called when the mouse enters the sketch window.
\n
:mouse-exited   - Called when the mouse leaves the sketch window
\n
:mouse-pressed  - Called every time a mouse button is pressed.
\n
:mouse-released - Called every time a mouse button is released.
\n
:mouse-clicked  - Called once after a mouse button has been pressed\nand then released.
\n
:mouse-moved    - Called every time the mouse moves and a button is\nnot pressed.
\n
:mouse-dragged  - Called every time the mouse moves and a button is\npressed.
\n
:mouse-wheel    - Called every time mouse wheel is rotated.\nTakes 1 argument - wheel rotation, an int.\nNegative values if the mouse wheel was rotated\nup/away from the user, and positive values\nif the mouse wheel was rotated down/ towards the user
\n
:key-pressed    - Called every time any key is pressed.
\n
:key-released   - Called every time any key is released.
\n
:key-typed      - Called once every time non-modifier keys are\npressed.
\n
:on-close       - Called once, when sketch is closed.\nNot supported in ClojureScript.
\n
:middleware     - Vector of middleware to be applied to the sketch.\nMiddleware will be applied in the same order as in comp\nfunction: [f g] will be applied as (f (g options)).
\n
:settings       - Cousin of :setup. A function to be called once when\nsetting sketch up. Should be used only for smooth and\nno-smooth. Due to Processing limitations these functions\ncannot be used neither in :setup nor in :draw.
\n
\n",
   :what :macro},
  no-stroke
  {:args ({:value [], :type :both}),
@@ -1508,7 +1508,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/noStroke_.html",
   :docstring
-  "
Disables drawing the stroke (outline). If both no-stroke and\nno-fill are called, nothing will be drawn to the screen.
\n",
+  "
Disables drawing the stroke (outline). If both no-stroke and\nno-fill are called, nothing will be drawn to the screen.
\n",
   :what :fn},
  random-seed
  {:args ({:value [w], :type :both}),
@@ -1534,7 +1534,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/lightSpecular_.html",
   :docstring
-  "
Sets the specular color for lights. Like fill, it affects only the\nelements which are created after it in the code. Specular refers to\nlight which bounces off a surface in a preferred direction (rather\nthan bouncing in all directions like a diffuse light) and is used\nfor creating highlights. The specular quality of a light interacts\nwith the specular material qualities set through the specular and\nshininess functions.
\n",
+  "
Sets the specular color for lights. Like fill, it affects only the\nelements which are created after it in the code. Specular refers to\nlight which bounces off a surface in a preferred direction (rather\nthan bouncing in all directions like a diffuse light) and is used\nfor creating highlights. The specular quality of a light interacts\nwith the specular material qualities set through the specular and\nshininess functions.
\n",
   :what :fn},
  plane
  {:args #{[width height]},
@@ -1613,7 +1613,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/endShape_.html",
   :docstring
-  "
May only be called after begin-shape. When end-shape is called,\nall of image data defined since the previous call to begin-shape is\nwritten into the image buffer. The keyword :close may be passed to\nclose the shape (to connect the beginning and the end).
\n",
+  "
May only be called after begin-shape. When end-shape is called,\nall of image data defined since the previous call to begin-shape is\nwritten into the image buffer. The keyword :close may be passed to\nclose the shape (to connect the beginning and the end).
\n",
   :what :fn},
  fill
  {:args
@@ -1630,7 +1630,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/fill_.html",
   :docstring
-  "
Sets the color used to fill shapes. For example, if you run (fill 204 102 0),\nall subsequent shapes will be filled with orange.  This function casts all\ninput as a float. If nil is passed it removes any fill color; equivalent to\ncalling no-fill.
\n",
+  "
Sets the color used to fill shapes. For example, if you run (fill 204 102 0),\nall subsequent shapes will be filled with orange.  This function casts all\ninput as a float. If nil is passed it removes any fill color; equivalent to\ncalling no-fill.
\n",
   :what :fn},
  with-translation
  {:args ({:value [translation-vector & body], :type :both}),
@@ -1670,7 +1670,7 @@
   :requires-bindings false,
   :link "https://processing.org/reference/PImage_mask_.html",
   :docstring
-  "
Masks part of an image from displaying by loading another image and\nusing it as an alpha channel. This mask image should only contain\ngrayscale data. The mask image needs to be the same size as the image\nto which it is applied.
\n
If single argument function is used - masked image is sketch itself\nor graphics if used inside with-graphics macro. If you're passing\ngraphics to this function - it works only with :p3d and :opengl renderers.
\n
This method is useful for creating dynamically generated alpha\nmasks.
\n",
+  "
Masks part of an image from displaying by loading another image and\nusing it as an alpha channel. This mask image should only contain\ngrayscale data. The mask image needs to be the same size as the image\nto which it is applied.
\n
If single argument function is used - masked image is sketch itself\nor graphics if used inside with-graphics macro. If you're passing\ngraphics to this function - it works only with :p3d and :opengl renderers.
\n
This method is useful for creating dynamically generated alpha\nmasks.
\n",
   :what :fn},
  green
  {:args ({:value [col], :type :both}),
@@ -1683,7 +1683,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/green_.html",
   :docstring
-  "
Extracts the green value from a color, scaled to match current\ncolor-mode. This value is always returned as a float so be careful\nnot to assign it to an int value.
\n",
+  "
Extracts the green value from a color, scaled to match current\ncolor-mode. This value is always returned as a float so be careful\nnot to assign it to an int value.
\n",
   :what :fn},
  begin-contour
  {:args ({:value [], :type :both}),
@@ -1696,7 +1696,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/beginContour_.html",
   :docstring
-  "
Use the begin-contour and end-contour function to create negative\nshapes within shapes. These functions can only be used within a\nbegin-shape/end-shape pair and they only work with the :p2d and :p3d\nrenderers.
\n",
+  "
Use the begin-contour and end-contour function to create negative\nshapes within shapes. These functions can only be used within a\nbegin-shape/end-shape pair and they only work with the :p2d and :p3d\nrenderers.
\n",
   :what :fn},
  pow
  {:args ({:value [num exponent], :type :both}),
@@ -1709,7 +1709,7 @@
   :requires-bindings false,
   :link "https://processing.org/reference/pow_.html",
   :docstring
-  "
Facilitates exponential expressions. The pow function is an\nefficient way of multiplying numbers by themselves (or their\nreciprocal) in large quantities. For example, (pow 3 5) is\nequivalent to the expression (* 3 3 3 3 3) and (pow 3 -5) is\nequivalent to (/ 1 (* 3 3 3 3 3)).
\n",
+  "
Facilitates exponential expressions. The pow function is an\nefficient way of multiplying numbers by themselves (or their\nreciprocal) in large quantities. For example, (pow 3 5) is\nequivalent to the expression (* 3 3 3 3 3) and (pow 3 -5) is\nequivalent to (/ 1 (* 3 3 3 3 3)).
\n",
   :what :fn},
  box
  {:args
@@ -1749,7 +1749,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/textAscent_.html",
   :docstring
-  "
Returns the ascent of the current font at its current size. This\ninformation is useful for determining the height of the font above\nthe baseline. For example, adding the text-ascent and text-descent\nvalues will give you the total height of the line.
\n",
+  "
Returns the ascent of the current font at its current size. This\ninformation is useful for determining the height of the font above\nthe baseline. For example, adding the text-ascent and text-descent\nvalues will give you the total height of the line.
\n",
   :what :fn},
  shininess
  {:args #{[shine]},
@@ -1762,7 +1762,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/shininess_.html",
   :docstring
-  "
Sets the amount of gloss in the surface of shapes. Used in\ncombination with ambient, specular, and emissive in setting\nthe material properties of shapes.
\n",
+  "
Sets the amount of gloss in the surface of shapes. Used in\ncombination with ambient, specular, and emissive in setting\nthe material properties of shapes.
\n",
   :what :fn},
  rect-mode
  {:args ({:value [mode], :type :both}),
@@ -1775,7 +1775,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/rectMode_.html",
   :docstring
-  "
Modifies the location from which rectangles draw. The default mode\nis :corner. Available modes are:
\n
\n
:corner  - Specifies the location to be the upper left corner of the\nshape and uses the third and fourth parameters of rect to\nspecify the width and height.
\n
:corners - Uses the first and second parameters of rect to set the\nlocation of one corner and uses the third and fourth\nparameters to set the opposite corner.
\n
:center  - Draws the image from its center point and uses the third\nand fourth parameters of rect to specify the image's width\nand height.
\n
:radius  - Draws the image from its center point and uses the third\nand forth parameters of rect to specify half of the\nimage's width and height.
\n
\n",
+  "
Modifies the location from which rectangles draw. The default mode\nis :corner. Available modes are:
\n
\n
:corner  - Specifies the location to be the upper left corner of the\nshape and uses the third and fourth parameters of rect to\nspecify the width and height.
\n
:corners - Uses the first and second parameters of rect to set the\nlocation of one corner and uses the third and fourth\nparameters to set the opposite corner.
\n
:center  - Draws the image from its center point and uses the third\nand fourth parameters of rect to specify the image's width\nand height.
\n
:radius  - Draws the image from its center point and uses the third\nand forth parameters of rect to specify half of the\nimage's width and height.
\n
\n",
   :what :fn},
  ellipse-mode
  {:args ({:value [mode], :type :both}),
@@ -1832,7 +1832,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/background_.html",
   :docstring
-  "
Sets the color used for the background of the Processing\nwindow. The default background is light gray. In the draw function,\nthe background color is used to clear the display window at the\nbeginning of each frame.
\n
It is not possible to use transparency (alpha) in background colors\nwith the main drawing surface, however they will work properly with\ncreate-graphics. Converts args to floats.
\n",
+  "
Sets the color used for the background of the Processing\nwindow. The default background is light gray. In the draw function,\nthe background color is used to clear the display window at the\nbeginning of each frame.
\n
It is not possible to use transparency (alpha) in background colors\nwith the main drawing surface, however they will work properly with\ncreate-graphics. Converts args to floats.
\n",
   :what :fn},
  ortho
  {:args
@@ -1861,7 +1861,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/noClip_.html",
   :docstring
-  "
Disables the clipping previously started by the clip function.
\n",
+  "
Disables the clipping previously started by the clip function.
\n",
   :what :fn},
  brightness
  {:args ({:value [color], :type :both}),
@@ -1899,7 +1899,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/specular_.html",
   :docstring
-  "
Sets the specular color of the materials used for shapes drawn to\nthe screen, which sets the color of highlights. Specular refers to\nlight which bounces off a surface in a preferred direction (rather\nthan bouncing in all directions like a diffuse light). Used in\ncombination with emissive, ambient, and shininess in setting\nthe material properties of shapes.
\n",
+  "
Sets the specular color of the materials used for shapes drawn to\nthe screen, which sets the color of highlights. Specular refers to\nlight which bounces off a surface in a preferred direction (rather\nthan bouncing in all directions like a diffuse light). Used in\ncombination with emissive, ambient, and shininess in setting\nthe material properties of shapes.
\n",
   :what :fn},
  save-frame
  {:args #{[name]},
@@ -1925,7 +1925,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/cursor_.html",
   :docstring
-  "
Sets the cursor to a predefined symbol or makes it\nvisible if already hidden (after no-cursor was called).
\n
Available modes: :arrow, :cross, :hand, :move, :text, :wait
\n
See cursor-image for specifying a generic image as the cursor\nsymbol (clj only).
\n",
+  "
Sets the cursor to a predefined symbol or makes it\nvisible if already hidden (after no-cursor was called).
\n
Available modes: :arrow, :cross, :hand, :move, :text, :wait
\n
See cursor-image for specifying a generic image as the cursor\nsymbol (clj only).
\n",
   :what :fn},
  noise
  {:args
@@ -1954,7 +1954,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/pushStyle_.html",
   :docstring
-  "
Saves the current style settings onto a 'style stack'. Use with\npop-style which restores the prior settings. Note that these\nfunctions are always used together. They allow you to change the\nstyle settings and later return to what you had. When a new style is\nstarted with push-style, it builds on the current style\ninformation. The push-style and pop-style functions can be\nembedded to provide more control.
\n
The style information controlled by the following functions are\nincluded in the style: fill, stroke, tint, stroke-weight,\nstroke-cap, stroke-join, image-mode, rect-mode, ellipse-mode,\nshape-mode, color-mode, text-align, text-font, text-mode, text-size,\ntext-leading, emissive, specular, shininess, and ambient.
\n",
+  "
Saves the current style settings onto a 'style stack'. Use with\npop-style which restores the prior settings. Note that these\nfunctions are always used together. They allow you to change the\nstyle settings and later return to what you had. When a new style is\nstarted with push-style, it builds on the current style\ninformation. The push-style and pop-style functions can be\nembedded to provide more control.
\n
The style information controlled by the following functions are\nincluded in the style: fill, stroke, tint, stroke-weight,\nstroke-cap, stroke-join, image-mode, rect-mode, ellipse-mode,\nshape-mode, color-mode, text-align, text-font, text-mode, text-size,\ntext-leading, emissive, specular, shininess, and ambient.
\n",
   :what :fn},
  bezier-vertex
  {:args
@@ -1969,7 +1969,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/bezierVertex_.html",
   :docstring
-  "
Specifies vertex coordinates for Bezier curves. Each call to\nbezier-vertex defines the position of two control points and one\nanchor point of a Bezier curve, adding a new segment to a line or\nshape. The first time bezier-vertex is used within a begin-shape\ncall, it must be prefaced with a call to vertex to set the first\nanchor point. This function must be used between begin-shape and\nend-shape and only when there is no parameter specified to\nbegin-shape.
\n",
+  "
Specifies vertex coordinates for Bezier curves. Each call to\nbezier-vertex defines the position of two control points and one\nanchor point of a Bezier curve, adding a new segment to a line or\nshape. The first time bezier-vertex is used within a begin-shape\ncall, it must be prefaced with a call to vertex to set the first\nanchor point. This function must be used between begin-shape and\nend-shape and only when there is no parameter specified to\nbegin-shape.
\n",
   :what :fn},
  light-falloff
  {:args #{[constant linear quadratic]},
@@ -2010,7 +2010,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/save_.html",
   :docstring
-  "
Saves an image from the display window. Images are saved in TIFF,\nTARGA, JPEG, and PNG format depending on the extension within the\nfilename parameter. For example, image.tif will have a TIFF image\nand image.png will save a PNG image. If no extension is included in\nthe filename, the image will save in TIFF format and .tif will be\nadded to the name. All images saved from the main drawing window\nwill be opaque. To save images without a background, use\ncreate-graphics.
\n",
+  "
Saves an image from the display window. Images are saved in TIFF,\nTARGA, JPEG, and PNG format depending on the extension within the\nfilename parameter. For example, image.tif will have a TIFF image\nand image.png will save a PNG image. If no extension is included in\nthe filename, the image will save in TIFF format and .tif will be\nadded to the name. All images saved from the main drawing window\nwill be opaque. To save images without a background, use\ncreate-graphics.
\n",
   :what :fn},
  curve-point
  {:args ({:value [a b c d t], :type :both}),
@@ -2119,7 +2119,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/sphereDetail_.html",
   :docstring
-  "
Controls the detail used to render a sphere by adjusting the number\nof vertices of the sphere mesh. The default resolution is 30, which\ncreates a fairly detailed sphere definition with vertices every\n360/30 = 12 degrees. If you're going to render a great number of\nspheres per frame, it is advised to reduce the level of detail using\nthis function. The setting stays active until sphere-detail is\ncalled again with a new parameter and so should not be called prior\nto every sphere statement, unless you wish to render spheres with\ndifferent settings, e.g. using less detail for smaller spheres or\nones further away from the camera. To control the detail of the\nhorizontal and vertical resolution independently, use the version of\nthe functions with two parameters.
\n",
+  "
Controls the detail used to render a sphere by adjusting the number\nof vertices of the sphere mesh. The default resolution is 30, which\ncreates a fairly detailed sphere definition with vertices every\n360/30 = 12 degrees. If you're going to render a great number of\nspheres per frame, it is advised to reduce the level of detail using\nthis function. The setting stays active until sphere-detail is\ncalled again with a new parameter and so should not be called prior\nto every sphere statement, unless you wish to render spheres with\ndifferent settings, e.g. using less detail for smaller spheres or\nones further away from the camera. To control the detail of the\nhorizontal and vertical resolution independently, use the version of\nthe functions with two parameters.
\n",
   :what :fn},
  vertex
  {:args
@@ -2136,7 +2136,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/vertex_.html",
   :docstring
-  "
All shapes are constructed by connecting a series of\nvertices. vertex is used to specify the vertex coordinates for\npoints, lines, triangles, quads, and polygons and is used\nexclusively within the begin-shape and end-shape functions.
\n
Drawing a vertex in 3D using the z parameter requires the :p3d or\n:opengl renderers to be used.
\n
This function is also used to map a texture onto the geometry. The\ntexture function declares the texture to apply to the geometry and the u\nand v coordinates set define the mapping of this texture to the\nform. By default, the coordinates used for u and v are specified in\nrelation to the image's size in pixels, but this relation can be\nchanged with texture-mode.
\n",
+  "
All shapes are constructed by connecting a series of\nvertices. vertex is used to specify the vertex coordinates for\npoints, lines, triangles, quads, and polygons and is used\nexclusively within the begin-shape and end-shape functions.
\n
Drawing a vertex in 3D using the z parameter requires the :p3d or\n:opengl renderers to be used.
\n
This function is also used to map a texture onto the geometry. The\ntexture function declares the texture to apply to the geometry and the u\nand v coordinates set define the mapping of this texture to the\nform. By default, the coordinates used for u and v are specified in\nrelation to the image's size in pixels, but this relation can be\nchanged with texture-mode.
\n",
   :what :fn},
  delay-frame
  {:args #{[freeze-ms]},
@@ -2150,7 +2150,7 @@
   :requires-bindings true,
   :link nil,
   :docstring
-  "
Forces the program to stop running for a specified time. Delay\ntimes are specified in thousandths of a second, therefore the\nfunction call (delay 3000) will stop the program for three\nseconds. Because the screen is updated only at the end of draw,\nthe program may appear to 'freeze', because the screen will not\nupdate when the delay-frame function is used. This function\nhas no effect inside setup.
\n",
+  "
Forces the program to stop running for a specified time. Delay\ntimes are specified in thousandths of a second, therefore the\nfunction call (delay 3000) will stop the program for three\nseconds. Because the screen is updated only at the end of draw,\nthe program may appear to 'freeze', because the screen will not\nupdate when the delay-frame function is used. This function\nhas no effect inside setup.
\n",
   :what :fn},
  spot-light
  {:args
@@ -2165,7 +2165,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/spotLight_.html",
   :docstring
-  "
Adds a spot light. Lights need to be included in the draw to\nremain persistent in a looping program. Placing them in the setup\nof a looping program will cause them to only have an effect the\nfirst time through the loop. The affect of the r, g, and b\nparameters is determined by the current color-mode. The x, y, and z\nparameters specify the position of the light and nx, ny, nz specify\nthe direction or light. The angle parameter affects the angle of the\nspotlight cone.
\n",
+  "
Adds a spot light. Lights need to be included in the draw to\nremain persistent in a looping program. Placing them in the setup\nof a looping program will cause them to only have an effect the\nfirst time through the loop. The affect of the r, g, and b\nparameters is determined by the current color-mode. The x, y, and z\nparameters specify the position of the light and nx, ny, nz specify\nthe direction or light. The angle parameter affects the angle of the\nspotlight cone.
\n",
   :what :fn},
  target-frame-rate
  {:args ({:value [], :type :both}),
@@ -2177,7 +2177,7 @@
   :requires-bindings true,
   :link nil,
   :docstring
-  "
Returns the target framerate specified with the function frame-rate
\n",
+  "
Returns the target framerate specified with the function frame-rate
\n",
   :what :fn},
  tint
  {:args
@@ -2194,7 +2194,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/tint_.html",
   :docstring
-  "
Sets the fill value for displaying images. Images can be tinted to\nspecified colors or made transparent by setting the alpha.
\n
To make an image transparent, but not change it's color, use white\nas the tint color and specify an alpha value. For instance,\n(tint 255 128) will make an image 50% transparent (unless\ncolor-mode has been used).
\n
The value for the parameter gray must be less than or equal to the\ncurrent maximum value as specified by color-mode. The default\nmaximum value is 255.
\n
Also used to control the coloring of textures in 3D.
\n",
+  "
Sets the fill value for displaying images. Images can be tinted to\nspecified colors or made transparent by setting the alpha.
\n
To make an image transparent, but not change it's color, use white\nas the tint color and specify an alpha value. For instance,\n(tint 255 128) will make an image 50% transparent (unless\ncolor-mode has been used).
\n
The value for the parameter gray must be less than or equal to the\ncurrent maximum value as specified by color-mode. The default\nmaximum value is 255.
\n
Also used to control the coloring of textures in 3D.
\n",
   :what :fn},
  bezier-tangent
  {:args ({:value [a b c d t], :type :both}),
@@ -2220,7 +2220,7 @@
   :requires-bindings false,
   :link "https://processing.org/reference/asin_.html",
   :docstring
-  "
The inverse of sin, returns the arc sine of a value. This function\nexpects the values in the range of -1 to 1 and values are returned\nin the range -PI/2 to PI/2.
\n",
+  "
The inverse of sin, returns the arc sine of a value. This function\nexpects the values in the range of -1 to 1 and values are returned\nin the range -PI/2 to PI/2.
\n",
   :what :fn},
  lerp
  {:args ({:value [start stop amt], :type :both}),
@@ -2259,7 +2259,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/text_.html",
   :docstring
-  "
Draws a number to the screen in the specified position. See the\ntext function for more details.
\n",
+  "
Draws a number to the screen in the specified position. See the\ntext function for more details.
\n",
   :what :fn},
  round
  {:args ({:value [val], :type :both}),
@@ -2285,7 +2285,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/background_.html",
   :docstring
-  "
Specify an image to be used as the background for a sketch. Its\nwidth and height must be the same size as the sketch window. Images\nused as background will ignore the current tint setting.
\n",
+  "
Specify an image to be used as the background for a sketch. Its\nwidth and height must be the same size as the sketch window. Images\nused as background will ignore the current tint setting.
\n",
   :what :fn},
  load-shape
  {:args ({:value [filename], :type :both}),
@@ -2338,7 +2338,7 @@
   :requires-bindings false,
   :link nil,
   :docstring
-  "
Introduces function mode. Adds update function which takes current\nstate and returns new state. Makes all other functions (setup, draw,\nmouse-click, etc) state-aware. See wiki for more details.
\n",
+  "
Introduces function mode. Adds 'update' function which takes current\nstate and returns new state. Makes all other functions (setup, draw,\nmouse-click, etc) state-aware. See wiki for more details.
\n",
   :what :fn},
  stroke-cap
  {:args ({:value [cap-mode], :type :both}),
@@ -2364,7 +2364,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/noFill_.html",
   :docstring
-  "
Disables filling geometry. If both no-stroke and no-fill are called,\nnothing will be drawn to the screen.
\n",
+  "
Disables filling geometry. If both no-stroke and no-fill are called,\nnothing will be drawn to the screen.
\n",
   :what :fn},
  resize-sketch
  {:require-bindings true,
@@ -2401,7 +2401,7 @@
   :requires-bindings false,
   :link nil,
   :docstring
-  "
Returns true if char c is a coded char i.e. it is necessary to\nfetch the key-code as an integer and use that to determine the\nspecific key pressed. See key-as-keyword.
\n",
+  "
Returns true if char c is a coded char i.e. it is necessary to\nfetch the key-code as an integer and use that to determine the\nspecific key pressed. See key-as-keyword.
\n",
   :what :fn},
  curve-tangent
  {:args ({:value [a b c d t], :type :both}),
@@ -2453,7 +2453,7 @@
   :requires-bindings true,
   :link nil,
   :docstring
-  "
Temporarily set the fill color for the body of this macro.\nThe code outside of the with-fill form will have the previous\nfill color set.
\n
A fill argument of nil disables the fill.
\n
Examples:
\n
(with-fill 255 ...)\n(with-fill [10 80 98] ...)\n(with-fill nil ...)\n
\n",
+  "
Temporarily set the fill color for the body of this macro.\nThe code outside of the with-fill form will have the previous\nfill color set.
\n
A fill argument of nil disables the fill.
\n
Examples:
\n
(with-fill 255 ...)\n(with-fill [10 80 98] ...)\n(with-fill nil ...)\n
\n",
   :what :macro},
  ellipsoid
  {:args
@@ -2507,7 +2507,7 @@
   :link nil,
   :tag PGraphics,
   :docstring
-  "
Graphics currently used for drawing. By default it is sketch graphics,\nbut if called inside with-graphics macro - graphics passed to the macro\nis returned. This method should be used if you need to call some methods\nthat are not implemented by quil.
\n
Example:
\n
(.beginDraw (current-graphics))\n
\n",
+  "
Graphics currently used for drawing. By default it is sketch graphics,\nbut if called inside with-graphics macro - graphics passed to the macro\nis returned. This method should be used if you need to call some methods\nthat are not implemented by quil.
\n
Example:
\n
(.beginDraw (current-graphics))\n
\n",
   :what :fn},
  abs
  {:args ({:value [n], :type :both}),
@@ -2533,7 +2533,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/popStyle_.html",
   :docstring
-  "
Restores the prior settings on the 'style stack'. Used in\nconjunction with push-style. Together they allow you to change the\nstyle settings and later return to what you had. When a new style is\nstarted with push-style, it builds on the current style information.\nThe push-style and pop-style functions can be nested to provide more\ncontrol
\n",
+  "
Restores the prior settings on the 'style stack'. Used in\nconjunction with push-style. Together they allow you to change the\nstyle settings and later return to what you had. When a new style is\nstarted with push-style, it builds on the current style information.\nThe push-style and pop-style functions can be nested to provide more\ncontrol
\n",
   :what :fn},
  focused
  {:args ({:value [], :type :both}),
@@ -2603,7 +2603,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/line_.html",
   :docstring
-  "
Draws a line (a direct path between two points) to the screen. The\nversion of line with four parameters draws the line in 2D. To color\na line, use the stroke function. A line cannot be filled, therefore\nthe fill method will not affect the color of a line. 2D lines are\ndrawn with a width of one pixel by default, but this can be changed\nwith the stroke-weight function. The version with six parameters\nallows the line to be placed anywhere within XYZ space.
\n",
+  "
Draws a line (a direct path between two points) to the screen. The\nversion of line with four parameters draws the line in 2D. To color\na line, use the stroke function. A line cannot be filled, therefore\nthe fill method will not affect the color of a line. 2D lines are\ndrawn with a width of one pixel by default, but this can be changed\nwith the stroke-weight function. The version with six parameters\nallows the line to be placed anywhere within XYZ space.
\n",
   :what :fn},
  do-record
  {:args ({:value [graphics & body], :type :both}),
@@ -2616,7 +2616,7 @@
   :requires-bindings true,
   :link nil,
   :docstring
-  "
Macro for drawing on graphics which saves result in the file at the end.\nSimilar to with-graphics macro. do-record assumed to be used with :pdf\ngraphics.
\n
Example:
\n
(q/do-record (q/create-graphics 200 200 :pdf "output.pdf")\n  (q/fill 250 0 0)\n  (q/ellipse 100 100 150 150))\n
\n",
+  "
Macro for drawing on graphics which saves result in the file at the end.\nSimilar to with-graphics macro. do-record assumed to be used with :pdf\ngraphics.
\n
Example:
\n
(q/do-record (q/create-graphics 200 200 :pdf "output.pdf")\n  (q/fill 250 0 0)\n  (q/ellipse 100 100 150 150))\n
\n",
   :what :macro},
  red
  {:args ({:value [c], :type :both}),
@@ -2629,7 +2629,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/red_.html",
   :docstring
-  "
Extracts the red value from a color, scaled to match the current\ncolor-mode.
\n",
+  "
Extracts the red value from a color, scaled to match the current\ncolor-mode.
\n",
   :what :fn},
  current-fill
  {:args ({:value [], :type :both}),
@@ -2710,7 +2710,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/ambientLight_.html",
   :docstring
-  "
Adds an ambient light. Ambient light doesn't come from a specific direction,\nthe rays of light have bounced around so much that objects are\nevenly lit from all sides. Ambient lights are almost always used in\ncombination with other types of lights. Lights need to be included\nin the draw to remain persistent in a looping program. Placing them\nin the setup of a looping program will cause them to only have an\neffect the first time through the loop. The effect of the\nparameters is determined by the current color-mode.
\n",
+  "
Adds an ambient light. Ambient light doesn't come from a specific direction,\nthe rays of light have bounced around so much that objects are\nevenly lit from all sides. Ambient lights are almost always used in\ncombination with other types of lights. Lights need to be included\nin the draw to remain persistent in a looping program. Placing them\nin the setup of a looping program will cause them to only have an\neffect the first time through the loop. The effect of the\nparameters is determined by the current color-mode.
\n",
   :what :fn},
  bezier-point
  {:args ({:value [a b c d t], :type :both}),
@@ -2762,7 +2762,7 @@
   :requires-bindings false,
   :link nil,
   :docstring
-  "
Enables navigation in 3D space. Similar to how it is done in\nshooters: WASD navigation, space is go up, drag mouse to look around.\nThis middleware requires fun-mode.
\n
Navigation
\n
\n
\n
Drag mouse to look around. You can change settings to bind\nmouse-moved instead of mouse-dragged to look around. See\ncustomization info below.
\n
\n
\n
Keyboard:
\n
\n
w - go forward
\n
s - go backward
\n
a - strafe left
\n
d - strafe right
\n
space - go up
\n
z - go down, can't bind to ctrl, limitation of Processing
\n
\n
\n
\n
Customization
\n
You can customize this middleware by providing a map as\n:navigation-3d option in quil.sketch/defsketch/quil.sketch/sketch.\nThe map can have the following optional keys:
\n
\n
\n
:position - vector of 3 numbers, initial camera position. Default\nis the same as in quil.core/camera function.
\n
\n
\n
:straight - vector of 3 numbers, direction you'll be looking at.\nDefault is [0 0 -1] (looking down).
\n
\n
\n
:up - vector of 3 numbers, 'up' direction. Default is [0 1 0].
\n
\n
\n
:pixels-in-360 - number, mouse sensitivity. Defines how many pixels\nyou need to move/drag you mouse to rotate 360 degrees.\nThe less the number the more sensitive is mouse.\nDefault is 1000.
\n
\n
\n
:step-size - number, number of pixels you move on each key event (wasd).\nDefault is 20.
\n
\n
\n
:rotate-on - keyword, either :mouse-dragged or :mouse-moved. Specifies\non which mouse event camera should rotate. Default is\n:mouse-dragged.
\n
\n
\n
Accessing position information from a sketch
\n
navigation-3d uses fun-mode under the hood so all position-related\ninformation is stored in the state map. It means that you can access in\ndraw/update/any handler and modify it if you need to. Position\ninformation is a map which is stored under :navigation-3d key in the\nstate map. Position consists of 3 values: :position, :straight and :up.\nSee "Customization" section above for more details.
\n
Usage example:
\n
(q/defsketch my-sketch\n  ...\n  :middleware [m/fun-mode m/navigation-3d])\n
\n
See wiki article for more(?) details:\nhttps://github.com/quil/quil/wiki/Navigation-3D
\n",
+  "
Enables navigation in 3D space. Similar to how it is done in\nshooters: WASD navigation, space is go up, drag mouse to look around.\nThis middleware requires fun-mode.
\n
Navigation
\n
\n
\n
Drag mouse to look around. You can change settings to bind\nmouse-moved instead of mouse-dragged to look around. See\ncustomization info below.
\n
\n
\n
Keyboard:
\n
\n
w - go forward
\n
s - go backward
\n
a - strafe left
\n
d - strafe right
\n
space - go up
\n
z - go down, can't bind to ctrl, limitation of Processing
\n
\n
\n
\n
Customization
\n
You can customize this middleware by providing map as\n:navigation-3d option in defsketch/sketch. Map can have following\noptional keys:
\n
:position - vector of 3 numbers, initial camera position. Default\nis the same as in 'camera' function.
\n
:straight - vector of 3 numbers, direction you'll be looking at.\nDefault is [0 0 -1] (looking down).
\n
:up - vector of 3 numbers, 'up' direction. Default is [0 1 0].
\n
:pixels-in-360 - number, mouse sensitivity. Defines how many pixels\nyou need to move/drag you mouse to rotate 360 degrees.\nThe less the number the more sensitive is mouse.\nDefault is 1000.
\n
:step-size - number, number of pixels you move on each key event (wasd).\nDefault is 20.
\n
:rotate-on - keyword, either :mouse-dragged or :mouse-moved. Specifies\non which mouse event camera should rotate. Default is\n:mouse-dragged.
\n
Accessing position information from sketch
\n
navigation-3d uses fun-mode under the hood  so all position-related\ninformation is stored in the state map. It means that you can access in\ndraw/update/any handler and modify it if you need to. Position\ninformation is a map which is stored under :navigation-3d key in the\nstate map. Position consists of 3 values: :position, :straight and :up.\nSee "Customization" section above for more details.
\n
Usage example:
\n
(q/defsketch my-sketch\n...\n:middleware [m/fun-mode m/navigation-3d])
\n
See wiki article for more(?) details:\nhttps://github.com/quil/quil/wiki/Navigation-3D
\n",
   :what :fn},
  lights
  {:args #{[]},
@@ -2853,7 +2853,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/endContour_.html",
   :docstring
-  "
Use the begin-contour and end-contour function to create negative\nshapes within shapes. These functions can only be within a\nbegin-shape/end-shape pair and they only work with the :p2d and :p3d\nrenderers.
\n",
+  "
Use the begin-contour and end-contour function to create negative\nshapes within shapes. These functions can only be within a\nbegin-shape/end-shape pair and they only work with the :p2d and :p3d\nrenderers.
\n",
   :what :fn},
  sin
  {:args ({:value [angle], :type :both}),
@@ -2923,7 +2923,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/curve_.html",
   :docstring
-  "
Draws a curved line on the screen. The first and second parameters\nspecify the beginning control point and the last two parameters\nspecify the ending control point. The middle parameters specify the\nstart and stop of the curve. Longer curves can be created by putting\na series of curve functions together or using curve-vertex. An additional\nfunction called curve-tightness provides control for the visual quality\nof the curve. The curve function is an implementation of Catmull-Rom\nsplines.
\n",
+  "
Draws a curved line on the screen. The first and second parameters\nspecify the beginning control point and the last two parameters\nspecify the ending control point. The middle parameters specify the\nstart and stop of the curve. Longer curves can be created by putting\na series of curve functions together or using curve-vertex. An additional\nfunction called curve-tightness provides control for the visual quality\nof the curve. The curve function is an implementation of Catmull-Rom\nsplines.
\n",
   :what :fn},
  shape
  {:args
@@ -2939,7 +2939,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/shape_.html",
   :docstring
-  "
Displays shapes to the screen. The shapes must have been loaded\nwith load-shape. Processing currently works with SVG shapes\nonly. The sh parameter specifies the shape to display and the x and\ny parameters define the location of the shape from its upper-left\ncorner. The shape is displayed at its original size unless the width\nand height parameters specify a different size. The shape-mode\nfunction changes the way the parameters work. A call to\n(shape-mode :corners) for example, will change the width and height\nparameters to define the x and y values of the opposite corner of\nthe shape.
\n
Note complex shapes may draw awkwardly with the renderers :p2d, :p3d, and\n:opengl. Those renderers do not yet support shapes that have holes\nor complicated breaks.
\n",
+  "
Displays shapes to the screen. The shapes must have been loaded\nwith load-shape. Processing currently works with SVG shapes\nonly. The sh parameter specifies the shape to display and the x and\ny parameters define the location of the shape from its upper-left\ncorner. The shape is displayed at its original size unless the width\nand height parameters specify a different size. The shape-mode\nfunction changes the way the parameters work. A call to\n(shape-mode :corners) for example, will change the width and height\nparameters to define the x and y values of the opposite corner of\nthe shape.
\n
Note complex shapes may draw awkwardly with the renderers :p2d, :p3d, and\n:opengl. Those renderers do not yet support shapes that have holes\nor complicated breaks.
\n",
   :what :fn},
  text-descent
  {:args ({:value [], :type :both}),
@@ -2952,7 +2952,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/textDescent_.html",
   :docstring
-  "
Returns descent of the current font at its current size. This\ninformation is useful for determining the height of the font below\nthe baseline. For example, adding the text-ascent and text-descent\nvalues will give you the total height of the line.
\n",
+  "
Returns descent of the current font at its current size. This\ninformation is useful for determining the height of the font below\nthe baseline. For example, adding the text-ascent and text-descent\nvalues will give you the total height of the line.
\n",
   :what :fn},
  ellipse
  {:args ({:value [x y width height], :type :both}),
@@ -2965,7 +2965,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/ellipse_.html",
   :docstring
-  "
Draws an ellipse (oval) in the display window. An ellipse with an\nequal width and height is a circle. The origin may be changed with\nthe ellipse-mode function.
\n",
+  "
Draws an ellipse (oval) in the display window. An ellipse with an\nequal width and height is a circle. The origin may be changed with\nthe ellipse-mode function.
\n",
   :what :fn},
  text-leading
  {:args ({:value [leading], :type :both}),
@@ -2978,7 +2978,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/textLeading_.html",
   :docstring
-  "
Sets the spacing between lines of text in units of pixels. This\nsetting will be used in all subsequent calls to the text function.
\n",
+  "
Sets the spacing between lines of text in units of pixels. This\nsetting will be used in all subsequent calls to the text function.
\n",
   :what :fn},
  image-filter
  {:args
@@ -3032,7 +3032,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/redraw_.html",
   :docstring
-  "
Executes the code within the draw function one time (or n times in cljs).\nThis function allows the program to update the display window only\nwhen necessary, for example when an event registered by mouse-pressed or\nkey-pressed occurs.
\n
In structuring a program, it only makes sense to call redraw\nwithin events such as mouse-pressed. This is because redraw does\nnot run draw immediately (it only sets a flag that indicates an\nupdate is needed).
\n
Calling redraw within draw has no effect because draw is\ncontinuously called anyway.
\n",
+  "
Executes the code within the draw function one time (or n times in cljs).\nThis function allows the program to update the display window only\nwhen necessary, for example when an event registered by mouse-pressed? or\nkey-pressed? occurs.
\n
In structuring a program, it only makes sense to call redraw\nwithin events such as mouse-pressed?. This is because redraw does\nnot run draw immediately (it only sets a flag that indicates an\nupdate is needed).
\n
Calling redraw within draw has no effect because draw is\ncontinuously called anyway.
\n",
   :what :fn},
  get-pixel
  {:args
@@ -3051,7 +3051,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/get_.html",
   :docstring
-  "
Reads the color of any pixel or grabs a section of an image. If no\nparameters are specified, a copy of entire image is returned. Get the\nvalue of one pixel by specifying an x,y coordinate. Get a section of\nthe image by specifying an additional width and height parameter.\nIf the pixel requested is outside of the image window, black is returned.\nThe numbers returned are scaled according to the current color ranges,\nbut only RGB values are returned by this function. For example, even though\nyou may have drawn a shape with (color-mode :hsb), the numbers returned\nwill be in RGB.
\n
Getting the color of a single pixel with (get x y) is easy, but not\nas fast as grabbing the data directly using the pixels function.
\n
If no img specified - current-graphics is used.
\n",
+  "
Reads the color of any pixel or grabs a section of an image. If no\nparameters are specified, a copy of entire image is returned. Get the\nvalue of one pixel by specifying an x,y coordinate. Get a section of\nthe image by specifying an additional width and height parameter.\nIf the pixel requested is outside of the image window, black is returned.\nThe numbers returned are scaled according to the current color ranges,\nbut only RGB values are returned by this function. For example, even though\nyou may have drawn a shape with (color-mode :hsb), the numbers returned\nwill be in RGB.
\n
Getting the color of a single pixel with (get x y) is easy, but not\nas fast as grabbing the data directly using the pixels function.
\n
If no img specified - current-graphics is used.
\n",
   :what :fn},
  rotate
  {:args
@@ -3066,7 +3066,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/rotate_.html",
   :docstring
-  "
Rotates a shape the amount specified by the angle parameter. Angles\nshould be specified in radians (values from 0 to TWO-PI) or\nconverted to radians with the radians function.
\n
Objects are always rotated around their relative position to the\norigin and positive numbers rotate objects in a clockwise\ndirection. Transformations apply to everything that happens after\nand subsequent calls to the function accumulates the effect. For\nexample, calling (rotate HALF-PI) and then (rotate HALF-PI) is the\nsame as (rotate PI). All transformations are reset when draw begins\nagain.
\n
Technically, rotate multiplies the current transformation matrix by\na rotation matrix. This function can be further controlled by the\npush-matrix and pop-matrix functions.
\n
When 4 arguments are provided it produces a rotation of angle degrees\naround the vector vx vy vz. Check examples to better understand.\nThis rotation follows the right-hand rule, so if the vector x y z points\ntoward the user, the rotation will be counterclockwise.
\n",
+  "
Rotates a shape the amount specified by the angle parameter. Angles\nshould be specified in radians (values from 0 to TWO-PI) or\nconverted to radians with the radians function.
\n
Objects are always rotated around their relative position to the\norigin and positive numbers rotate objects in a clockwise\ndirection. Transformations apply to everything that happens after\nand subsequent calls to the function accumulates the effect. For\nexample, calling (rotate HALF-PI) and then (rotate HALF-PI) is the\nsame as (rotate PI). All transformations are reset when draw begins\nagain.
\n
Technically, rotate multiplies the current transformation matrix by\na rotation matrix. This function can be further controlled by the\npush-matrix and pop-matrix functions.
\n
When 4 arguments are provided it produces a rotation of angle degrees\naround the vector vx vy vz. Check examples to better understand.\nThis rotation follows the right-hand rule, so if the vector x y z points\ntoward the user, the rotation will be counterclockwise.
\n",
   :what :fn},
  set-pixel
  {:args
@@ -3080,7 +3080,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/set_.html",
   :docstring
-  "
Changes the color of any pixel in the display window. The x and y\nparameters specify the pixel to change and the c parameter\nspecifies the color value. The color parameter is affected by the\ncurrent color-mode (the default is RGB values from 0 to 255).
\n
Setting the color of a single pixel with (set-pixel x y) is easy, but not\nas fast as putting the data directly into pixels.
\n
This function ignores image-mode.
\n
Due to what appears to be a bug in Apple's Java implementation, the\npoint and set-pixel methods are extremely slow in some circumstances\nwhen used with the default renderer. Using :p2d or :p3d will fix the\nproblem. Grouping many calls to point or set-pixel together can also\nhelp. (Bug 1094)
\n",
+  "
Changes the color of any pixel in the display window. The x and y\nparameters specify the pixel to change and the c parameter\nspecifies the color value. The color parameter is affected by the\ncurrent color-mode (the default is RGB values from 0 to 255).
\n
Setting the color of a single pixel with (set-pixel x y) is easy, but not\nas fast as putting the data directly into pixels.
\n
This function ignores image-mode.
\n
Due to what appears to be a bug in Apple's Java implementation, the\npoint and set-pixel methods are extremely slow in some circumstances\nwhen used with the default renderer. Using :p2d or :p3d will fix the\nproblem. Grouping many calls to point or set-pixel together can also\nhelp. (Bug 1094)
\n",
   :what :fn},
  push-matrix
  {:args ({:value [], :type :both}),
@@ -3093,7 +3093,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/pushMatrix_.html",
   :docstring
-  "
Pushes the current transformation matrix onto the matrix\nstack. Understanding [push-matrix and pop-matrix requires\nunderstanding the concept of a matrix stack. The push-matrix\nfunction saves the current coordinate system to the stack and\npop-matrix restores the prior coordinate system. push-matrix and\npop-matrix are used in conjunction with the other transformation\nmethods and may be embedded to control the scope of the\ntransformations.
\n",
+  "
Pushes the current transformation matrix onto the matrix\nstack. Understanding [push-matrix and pop-matrix requires\nunderstanding the concept of a matrix stack. The push-matrix\nfunction saves the current coordinate system to the stack and\npop-matrix restores the prior coordinate system. push-matrix and\npop-matrix are used in conjunction with the other transformation\nmethods and may be embedded to control the scope of the\ntransformations.
\n",
   :what :fn},
  no-smooth
  {:args ({:value [], :type :both}),
@@ -3150,7 +3150,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/translate_.html",
   :docstring
-  "
Specifies an amount to displace objects within the display\nwindow. The tx parameter specifies left/right translation, the ty\nparameter specifies up/down translation, and the tz parameter\nspecifies translations toward/away from the screen.  Transformations\napply to everything that happens after and subsequent calls to the\nfunction accumulates the effect. For example, calling (translate 50 0) and then (translate 20, 0) is the same as (translate 70, 0). If\ntranslate is called within draw, the transformation is reset when\nthe loop begins again. This function can be further controlled by\nthe push-matrix and pop-matrix functions.
\n",
+  "
Specifies an amount to displace objects within the display\nwindow. The tx parameter specifies left/right translation, the ty\nparameter specifies up/down translation, and the tz parameter\nspecifies translations toward/away from the screen.  Transformations\napply to everything that happens after and subsequent calls to the\nfunction accumulates the effect. For example, calling (translate 50 0) and then (translate 20, 0) is the same as (translate 70, 0). If\ntranslate is called within draw, the transformation is reset when\nthe loop begins again. This function can be further controlled by\nthe push-matrix and pop-matrix functions.
\n",
   :what :fn},
  load-font
  {:args ({:value [filename], :type :both}),
@@ -3163,7 +3163,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/loadFont_.html",
   :docstring
-  "
Loads a font into a variable of type PFont. To load correctly,\nfonts must be located in the data directory of the current sketch.\nTo create a font to use with Processing use the create-font function.
\n
Like load-image and other methods that load data, the load-font\nfunction should not be used inside draw, because it will slow down the sketch\nconsiderably, as the font will be re-loaded from the disk (or\nnetwork) on each frame.
\n
For most renderers, Processing displays fonts using the .vlw font\nformat, which uses images for each letter, rather than defining them\nthrough vector data. When hint :enable-native-fonts is used with the\nJAVA2D renderer, the native version of a font will be used if it is\ninstalled on the user's machine.
\n
Using create-font (instead of load-font) enables vector data to be\nused with the JAVA2D (default) renderer setting. This can be helpful\nwhen many font sizes are needed, or when using any renderer based on\nJAVA2D, such as the PDF library.
\n",
+  "
Loads a font into a variable of type PFont. To load correctly,\nfonts must be located in the data directory of the current sketch.\nTo create a font to use with Processing use the create-font function.
\n
Like load-image and other methods that load data, the load-font\nfunction should not be used inside draw, because it will slow down the sketch\nconsiderably, as the font will be re-loaded from the disk (or\nnetwork) on each frame.
\n
For most renderers, Processing displays fonts using the .vlw font\nformat, which uses images for each letter, rather than defining them\nthrough vector data. When hint :enable-native-fonts is used with the\nJAVA2D renderer, the native version of a font will be used if it is\ninstalled on the user's machine.
\n
Using create-font (instead of load-font) enables vector data to be\nused with the JAVA2D (default) renderer setting. This can be helpful\nwhen many font sizes are needed, or when using any renderer based on\nJAVA2D, such as the PDF library.
\n",
   :what :fn},
  ambient
  {:args ({:value [gray], :type :both} {:value [r g b], :type :both}),
@@ -3176,7 +3176,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/ambient_.html",
   :docstring
-  "
Sets the ambient reflectance for shapes drawn to the screen. This\nis combined with the ambient light component of environment. The\ncolor components set through the parameters define the\nreflectance. For example in the default color-mode, setting r=255, g=126, b=0, would cause all the red light to reflect and half of the\ngreen light to reflect. Used in combination with emissive, specular,\nand shininess in setting the material properties of shapes.
\n",
+  "
Sets the ambient reflectance for shapes drawn to the screen. This\nis combined with the ambient light component of environment. The\ncolor components set through the parameters define the\nreflectance. For example in the default color-mode, setting r=255, g=126, b=0, would cause all the red light to reflect and half of the\ngreen light to reflect. Used in combination with emissive, specular,\nand shininess in setting the material properties of shapes.
\n",
   :what :fn},
  shear-y
  {:args ({:value [angle], :type :both}),
@@ -3189,7 +3189,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/shearY_.html",
   :docstring
-  "
Shears a shape around the y-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0 to\nPI*2) or converted to radians with the radians function. Objects\nare always sheared around their relative position to the origin and\npositive numbers shear objects in a clockwise direction.\nTransformations apply to everything that happens after and\nsubsequent calls to the function accumulates the effect. For\nexample, calling (shear-y (/ PI 2)) and then (shear-y (/ PI 2)) is\nthe same as (shear-y PI). If shear-y is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction works in P2D or JAVA2D mode.
\n
Technically, shear-y multiplies the current transformation matrix\nby a rotation matrix. This function can be further controlled by the\npush-matrix and pop-matrix functions.
\n",
+  "
Shears a shape around the y-axis the amount specified by the angle\nparameter. Angles should be specified in radians (values from 0 to\nPI*2) or converted to radians with the radians function. Objects\nare always sheared around their relative position to the origin and\npositive numbers shear objects in a clockwise direction.\nTransformations apply to everything that happens after and\nsubsequent calls to the function accumulates the effect. For\nexample, calling (shear-y (/ PI 2)) and then (shear-y (/ PI 2)) is\nthe same as (shear-y PI). If shear-y is called within the draw\nfunction, the transformation is reset when the loop begins again. This\nfunction works in P2D or JAVA2D mode.
\n
Technically, shear-y multiplies the current transformation matrix\nby a rotation matrix. This function can be further controlled by the\npush-matrix and pop-matrix functions.
\n",
   :what :fn},
  mouse-y
  {:args ({:value [], :type :both}),
@@ -3229,7 +3229,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/image_.html",
   :docstring
-  "
Displays images to the screen. Processing currently works with GIF,\nJPEG, and Targa images. The color of an image may be modified with\nthe tint function and if a GIF has transparency, it will maintain\nits transparency. The img parameter specifies the image to display\nand the x and y parameters define the location of the image from its\nupper-left corner. The image is displayed at its original size\nunless the width and height parameters specify a different size. The\nimage-mode function changes the way the parameters work. A call to\n(image-mode :corners) will change the width and height parameters to\ndefine the x and y values of the opposite corner of the image.
\n",
+  "
Displays images to the screen. Processing currently works with GIF,\nJPEG, and Targa images. The color of an image may be modified with\nthe tint function and if a GIF has transparency, it will maintain\nits transparency. The img parameter specifies the image to display\nand the x and y parameters define the location of the image from its\nupper-left corner. The image is displayed at its original size\nunless the width and height parameters specify a different size. The\nimage-mode function changes the way the parameters work. A call to\n(image-mode :corners) will change the width and height parameters to\ndefine the x and y values of the opposite corner of the image.
\n",
   :what :fn},
  unbinary
  {:args ({:value [str-val], :type :both}),
@@ -3242,7 +3242,7 @@
   :processing-name "unbinary()",
   :link "https://processing.org/reference/unbinary_.html",
   :docstring
-  "
Unpack a binary string to an integer. See binary for converting\nintegers to strings.
\n",
+  "
Unpack a binary string to an integer. See binary for converting\nintegers to strings.
\n",
   :what :fn},
  no-tint
  {:args ({:value [], :type :both}),
@@ -3268,7 +3268,7 @@
   :requires-bindings true,
   :link "https://processing.org/reference/noLights_.html",
   :docstring
-  "
Disable all lighting. Lighting is turned off by default and enabled\nwith the lights function. This function can be used to disable lighting so\nthat 2D geometry (which does not require lighting) can be drawn\nafter a set of lighted 3D geometry.
\n",
+  "
Disable all lighting. Lighting is turned off by default and enabled\nwith the lights function. This function can be used to disable lighting so\nthat 2D geometry (which does not require lighting) can be drawn\nafter a set of lighted 3D geometry.
\n",
   :what :fn},
  point
  {:args ({:value [x y], :type :both} {:value [x y z], :type :both}),