# Workshop This workshop is designed to go over the **most commonly used functions** with [Ronin](https://github.com/hundredrabbits/Ronin). The list of all available functions and their usage is located [here](https://github.com/hundredrabbits/Ronin/#library). - **Part 1**: [Images](#Images) `(open)`, `(import)`, `(crop)`, `(export)` - **Part 2**: [Draw](#Draw) `(stroke)`, `(fill)`, `(gradient)`, `(clear)` - **Part 3**: [Filters](#Filters) `(pixels)`, `(saturation)`, `(convolve)`, `(sharpen)` - **Part 4**: [Events](#Events) `(on)`, `(on "mouse-move")`, `(on "animate")`, `(on "/a")` ## Images This section will teach the basics of opening, cropping and saving an image file. You can use the `$path` help to quickly get an image's path into Ronin, by writing `$path` and dragging a file onto the Ronin window. ### Open To import an image, and resize the canvas to fit the image size, type the following text, drag an image file onto the Ronin window and press `cmd+r`: ``` (open $path) ``` ### Import To import an image onto the current canvas, type the following text, drag an image file onto the Ronin window, trace a shape in the canvas and press `cmd+r`: ``` (import $path (guide $rect)) ``` The previous code will import an image, and preserve its ratio. Alternatively, you could use a `$line` to stretch the image, or a `$pos` to simply draw the image at its original size. ``` (import $path (guide $line)) ``` ### Crop To crop the canvas, type the following text, drag an image file onto the Ronin window press `cmd+r`: ``` (import $path (pos 0 0)) (crop (rect 50 50 300 300)) ``` ### Export To export the resulting image, type the following text, drag an image file onto the Ronin window, then drag a folder and add the new file's name, and press `cmd+r`: ``` (import $path) (export $path) ``` For example, a version of that same code with file paths, might look something like the following, notice how the `(rect)` is omitted: ``` (import "~/Desktop/photo.jpg") (export "~/Desktop/export.png") ``` ## Draw This section will show how to draw some basic shapes and colorize them. ### Stroke To draw the outline of any shape, wrap the shape(rect, line, circle, ..) inside of a `(stroke shape width color)` function, like: ``` (stroke (rect 100 100 300 200) 10 "red") ``` ### Fill To fill the inside of any shape, wrap the shape(rect, line, circle, ..) inside of a `(fill shape color)` function, like: ``` (fill (rect 100 100 300 200) "orange") ``` ### Gradient To colorize a stroke or a fill with a gradient, use the `(gradient line color)`: ``` (clear) (fill (circle 300 300 200) (gradient (line 0 0 500 500) ("white" "black"))) ``` To better understand how the line affects the coloring of the circle, wrap the `$line` inside a `(guide)`, as follows: ``` (clear) (fill (circle 300 300 200) (gradient (guide $line) ("white" "black"))) ``` ### Clear In the previous example, we used the `(clear)` function which clears the canvas, but it can also be used to clear only a part of the canvas: ``` (clear) (fill (frame) "red") (clear (rect 100 100 300 300)) ``` ## Pixels ### Pixels ### saturation ### convolve ### sharpen ## Events ### On ### MouseMove ### Animate ### OSC