Module: Processing::GraphicsContext
Overview
Drawing context
Constant Summary collapse
- PI =
PI
Math::PI
- HALF_PI =
PI / 2
PI / 2
- QUARTER_PI =
PI / 4
PI / 4
- TWO_PI =
PI * 2
PI * 2
- TAU =
PI * 2
PI * 2
- PROCESSING =
Processing mode for renderMode().
:processing- P5JS =
p5.js mode for renderMode().
:p5js- RGBA =
RGBA format for createImage().
:rgba- RGB =
RGB format for createImage, or RGB mode for colorMode().
:rgb- HSB =
HSB mode for colorMode().
:hsb- RADIANS =
Radian mode for angleMode().
:radians- DEGREES =
Degree mode for angleMode().
:degrees- CORNER =
Mode for rectMode(), ellipseMode(), imageMode(), and shapeMode().
:corner- CORNERS =
Mode for rectMode(), ellipseMode(), imageMode(), and shapeMode().
:corners- CENTER =
Mode for rectMode(), ellipseMode(), imageMode(), shapeMode(), and textAlign().
:center- RADIUS =
Mode for rectMode() and ellipseMode().
:radius- PROJECT =
Mode for strokeCap().
:square- MITER =
Mode for strokeJoin().
:miter- ROUND =
Mode for strokeCap() and strokeJoin().
:round- SQUARE =
Mode for strokeCap() and strokeJoin().
:butt- BLEND =
Mode for blendMode().
:normal- ADD =
Mode for blendMode().
:add- SUBTRACT =
Mode for blendMode().
:subtract- LIGHTEST =
Mode for blendMode().
:lightest- DARKEST =
Mode for blendMode().
:darkest- EXCLUSION =
Mode for blendMode().
:exclusion- MULTIPLY =
Mode for blendMode().
:multiply- SCREEN =
Mode for blendMode().
:screen- REPLACE =
Mode for blendMode().
:replace- LEFT =
Key code or Mode for textAlign().
:left- RIGHT =
Key code or Mode for textAlign().
:right- TOP =
Mode for textAlign().
:top- BOTTOM =
Mode for textAlign().
:bottom- BASELINE =
Mode for textAlign().
:baseline- IMAGE =
Mode for textureMode().
:image- NORMAL =
Mode for textureMode().
:normal- CLAMP =
Mode for textureWrap().
:clamp- REPEAT =
Mode for textureWrap().
:repeat- THRESHOLD =
Filter type for filter()
:threshold- GRAY =
Filter type for filter()
:gray- INVERT =
Filter type for filter()
:invert- BLUR =
Filter type for filter()
:blur- LINE =
Shape mode for createShape()
:line- RECT =
Shape mode for createShape()
:rect- ELLIPSE =
Shape mode for createShape()
:ellipse- ARC =
Shape mode for createShape()
:arc- TRIANGLE =
Shape mode for createShape()
:triangle- QUAD =
Shape mode for createShape()
:quad- GROUP =
Shape mode for createShape()
:group- POINTS =
Shape mode for beginShape()
:points- LINES =
Shape mode for beginShape()
:lines- TRIANGLES =
Shape mode for beginShape()
:triangles- TRIANGLE_FAN =
Shape mode for beginShape()
:triangle_fan- TRIANGLE_STRIP =
Shape mode for beginShape()
:triangle_strip- QUADS =
Shape mode for beginShape()
:quads- QUAD_STRIP =
Shape mode for beginShape()
:quad_strip- TESS =
Shape mode for beginShape()
:tess- OPEN =
OPEN flag for endShape()
:open- CLOSE =
CLOSE flag for endShape()
:close- ENTER =
Key codes.
:enter- SPACE =
:space- TAB =
:tab- DELETE =
:delete- BACKSPACE =
:backspace- ESC =
:escape- HOME =
:home- PAGEUP =
END = :end
:pageup- PAGEDOWN =
:pagedown- CLEAR =
:clear- SHIFT =
:shift- CONTROL =
:control- ALT =
:alt- WIN =
:win- COMMAND =
:command- OPTION =
:option- FUNCTION =
:function- CAPSLOCK =
:capslock- SECTION =
:section- HELP =
:help- F1 =
:f1- F2 =
:f2- F3 =
:f3- F4 =
:f4- F5 =
:f5- F6 =
:f6- F7 =
:f7- F8 =
:f8- F9 =
:f9- F10 =
:f10- F11 =
:f11- F12 =
:f12- F13 =
:f13- F14 =
:f14- F15 =
:f15- F16 =
:f16- F17 =
:f17- F18 =
:f18- F19 =
:f19- F20 =
:f20- F21 =
:f21- F22 =
:f22- F23 =
:f23- F24 =
:f24- UP =
:up- DOWN =
:down
Instance Method Summary collapse
-
#abs(value) ⇒ Numeric
Returns the absolute number of the value.
-
#acos(value) ⇒ Numeric
Returns the inverse of cos().
-
#alpha(color) ⇒ Numeric
Returns the red value of the color.
-
#angleMode(mode = nil) ⇒ RADIANS, DEGREES
Sets angle mode.
-
#applyMatrix(*args) ⇒ nil
Reset current transformation matrix with 2x3, or 4x4 matrix.
-
#arc(a, b, c, d, start, stop) ⇒ nil
(also: #drawArc)
Draws an arc.
-
#asin(value) ⇒ Numeric
Returns the inverse of sin().
-
#atan(value) ⇒ Numeric
Returns the inverse of tan().
-
#atan2(y, x) ⇒ Numeric
Returns the angle from a specified point.
-
#background(*args) ⇒ nil
Clears screen.
-
#beginContour ⇒ nil
Begins drawing a hole inside shape.
-
#beginShape(type = nil) ⇒ nil
Begins drawing complex shapes.
-
#bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2) ⇒ nil
(also: #drawBezier)
Draws a Bezier spline curve.
-
#bezierDetail(detail) ⇒ nil
Sets the resolution at which Bezier’s curve is displayed.
-
#bezierPoint(a, b, c, d, t) ⇒ Numeric
Evaluates the Bezier at point t for points a, b, c, d.
-
#bezierTangent(a, b, c, d, t) ⇒ Numeric
Calculates the tangent of a point on a Bezier curve.
-
#bezierVertex(x2, y2, x3, y3, x4, y4) ⇒ nil
Append bezier vertex for shape polygon.
-
#blend(img = nil, sx, sy, sw, sh, dx, dy, dw, dh, mode) ⇒ nil
Blends image.
-
#blendMode(mode = nil) ⇒ nil
Sets blend mode.
-
#blue(color) ⇒ Numeric
Returns the blue value of the color.
-
#brightness(color) ⇒ Numeric
Returns the brightness value of the color.
-
#ceil(value) ⇒ Numeric
Returns the closest integer number greater than or equal to the value.
-
#circle(x, y, extent) ⇒ nil
(also: #drawCircle)
Draws a circle.
- #clear ⇒ Object
-
#clip(a, b, c, d) ⇒ nil
Limits the drawable rectangle.
-
#color(*args) ⇒ Integer
Creates color value.
-
#colorMode(mode = nil, *maxes) ⇒ RGB, HSB
Sets color mode and max color values.
-
#constrain(value, min, max) ⇒ Numeric
Constrains the number between min..max.
-
#copy(img = nil, sx, sy, sw, sh, dx, dy, dw, dh) ⇒ nil
Copies image.
-
#cos(angle) ⇒ Numeric
Returns the cosine of an angle.
-
#createCapture(*args) ⇒ Capture
Creates a camera object as a video input device.
-
#createFont(name, size) ⇒ Font
Creates a new font object.
-
#createGraphics(width, height, pixelDensity = 1) ⇒ Graphics
Creates a new off-screen graphics context object.
-
#createImage(w, h, format = RGBA) ⇒ Image
Creates a new image object.
-
#createShader(vert, frag) ⇒ Shader
Creates a shader object.
-
#createShape(kind = nil, *args) ⇒ Shape
Creates a new shape object.
-
#createVector(*args) ⇒ Vector
Creates a new vector object.
-
#curve(cx1, cy1, x1, y1, x2, y2, cx2, cy2) ⇒ nil
(also: #drawCurve)
Draws a Catmull-Rom spline curve.
-
#curveDetail(detail) ⇒ nil
Sets the resolution at which curves display.
-
#curvePoint(a, b, c, d, t) ⇒ Numeric
Evaluates the curve at point t for points a, b, c, d.
-
#curveTangent(a, b, c, d, t) ⇒ Numeric
Calculates the tangent of a point on a curve.
-
#curveTightness(tightness) ⇒ nil
Sets the quality of curve forms.
-
#curveVertex(x, y) ⇒ nil
Append curve vertex for shape polygon.
-
#degrees(radian) ⇒ Numeric
Converts radian to degree.
-
#dist(*args) ⇒ Numeric
Returns distance between 2 points.
-
#ellipse(a, b, c, d) ⇒ nil
(also: #drawEllipse)
Draws an ellipse.
-
#ellipseMode(mode) ⇒ nil
Sets ellipse mode.
-
#endContour ⇒ nil
Ends drawing a hole.
-
#endShape(mode = nil) ⇒ nil
Ends drawing complex shapes.
-
#exp(n) ⇒ Numeric
Returns Euler’s number e raised to the power of value.
-
#fill(*args) ⇒ nil
Sets fill color.
-
#filter(*args) ⇒ nil
Applies an image filter to screen.
-
#floor(value) ⇒ Numeric
Returns the closest integer number less than or equal to the value.
-
#green(color) ⇒ Numeric
Returns the green value of the color.
-
#height ⇒ Numeric
Returns the height of the graphics object.
-
#hue(color) ⇒ Numeric
Returns the hue value of the color.
-
#image(img, a, b, c = nil, d = nil) ⇒ nil
(also: #drawImage)
Draws an image.
-
#imageMode(mode) ⇒ nil
Sets image mode.
-
#lerp(start, stop, amount) ⇒ Numeric
Returns the interpolated number between range start..stop.
-
#lerpColor(color1, color2, amount) ⇒ Integer
Returns the interpolated color between color1 and color2.
-
#line(x1, y1, x2, y2) ⇒ nil
(also: #drawLine)
Draws a line.
-
#loadFont(filename) ⇒ Font
Loads font from file.
-
#loadImage(filename, extension = nil) ⇒ Image
Loads image.
-
#loadPixels ⇒ nil
Loads all pixels to the ‘pixels’ array.
-
#loadShader(fragPath, vertPath = nil) ⇒ Shader
Loads shader file.
-
#log(n) ⇒ Numeric
Returns the natural logarithm (the base-e logarithm) of a number.
-
#mag(*args) ⇒ Numeric
Returns the magnitude (or length) of a vector.
-
#map(value, start1, stop1, start2, stop2) ⇒ Numeric
Maps a number from range start1..stop1 to range start2..stop2.
-
#max(*args) ⇒ Numeric
Returns maximum value.
-
#min(*args) ⇒ Numeric
Returns minimum value.
-
#noClip ⇒ nil
Disables clipping.
-
#noFill ⇒ nil
Disables filling.
-
#noise(x, y = 0, z = 0) ⇒ Numeric
Returns the perlin noise value.
-
#noiseDetail(lod, falloff = nil) ⇒ nil
Adjusts the character and level of detail produced by the Perlin noise function.
-
#noiseSeed(seed) ⇒ nil
Sets the seed value for noise().
-
#norm(value, start, stop) ⇒ Numeric
Normalize the value from range start..stop into 0..1.
-
#noStroke ⇒ nil
Disables drawing stroke.
-
#noTint ⇒ nil
Resets tint color.
-
#pixelDensity ⇒ Numeric
Returns the pixel density of the graphics object.
-
#pixelHeight ⇒ Numeric
Returns the height of the graphics object in pixels.
-
#pixels ⇒ Array
An array of all pixels.
-
#pixelWidth ⇒ Numeric
Returns the width of the graphics object in pixels.
-
#point(x, y) ⇒ nil
(also: #drawPoint)
Draws a point.
-
#pop ⇒ nil
Restore styles and transformations from stack.
-
#popMatrix ⇒ nil
Pops the current transformation matrix from stack.
-
#popStyle ⇒ nil
Restore style values from the style stack.
-
#pow(value, exponent) ⇒ Numeric
Returns value raised to the power of exponent.
-
#printMatrix ⇒ nil
Prints matrix elements to console.
-
#push(&block) ⇒ Object
Save current styles and transformations to stack.
-
#pushMatrix(&block) ⇒ Object
Pushes the current transformation matrix to stack.
-
#pushStyle(&block) ⇒ Object
Save current style values to the style stack.
-
#quad(x1, y1, x2, y2, x3, y3, x4, y4) ⇒ nil
(also: #drawQuad)
Draws a quad.
-
#quadraticVertex(cx, cy, x3, y3) ⇒ nil
Append quadratic vertex for shape polygon.
-
#radians(degree) ⇒ Numeric
Converts degree to radian.
-
#random(*args) ⇒ Float
Returns a random number in range low…high.
-
#randomGaussian(mean = 0, sd = 1) ⇒ Float
Returns a random number fitting a Gaussian, or normal, distribution.
-
#randomSeed(seed) ⇒ nil
Sets the seed value for random().
-
#rect(a, b, c, d, *args) ⇒ nil
(also: #drawRect)
Draws a rectangle.
-
#rectMode(mode) ⇒ nil
Sets rect mode.
-
#red(color) ⇒ Numeric
Returns the red value of the color.
-
#renderMode(mode = nil) ⇒ PROCESSING, P5JS
Sets render mode.
-
#requestImage(filename, extension = nil) ⇒ Image
Loads image on a new thread.
-
#resetMatrix ⇒ nil
Reset current transformation matrix with identity matrix.
-
#resetShader ⇒ nil
Resets shader.
-
#rotate(angle) ⇒ nil
Applies rotation matrix to current transformation matrix.
-
#rotateX(angle) ⇒ nil
Applies rotation around the x-axis.
-
#rotateY(angle) ⇒ nil
Applies rotation around the y-axis.
-
#rotateZ(angle) ⇒ nil
Applies rotation around the z-axis.
-
#round(value) ⇒ Numeric
Returns the closest integer number.
-
#saturation(color) ⇒ Numeric
Returns the saturation value of the color.
-
#save(filename) ⇒ nil
Saves screen image to file.
-
#scale(x, y = nil, z = 1) ⇒ nil
Applies scale matrix to current transformation matrix.
-
#shader(shader) ⇒ nil
Sets shader.
-
#shape(shp, a = 0, b = 0, c = nil, d = nil) ⇒ nil
(also: #drawShape)
Draws a shape.
-
#shapeMode(mode) ⇒ nil
Sets shape mode.
-
#shearX(angle) ⇒ nil
Applies shear around the x-axis.
-
#shearY(angle) ⇒ nil
Applies shear around the y-axis.
-
#sin(angle) ⇒ Numeric
Returns the sine of an angle.
-
#sq(value) ⇒ Numeric
Returns squared value.
-
#sqrt(value) ⇒ Numeric
Returns squared value.
-
#square(x, y, extent) ⇒ nil
(also: #drawSquare)
Draws a square.
-
#stroke(*args) ⇒ nil
Sets stroke color.
-
#strokeCap(cap) ⇒ nil
Sets stroke cap mode.
-
#strokeJoin(join) ⇒ nil
Sets stroke join mode.
-
#strokeWeight(weight) ⇒ nil
Sets stroke weight.
-
#tan(angle) ⇒ Numeric
Returns the ratio of the sine and cosine of an angle.
-
#text(str, x, y, x2 = nil, y2 = nil) ⇒ nil
(also: #drawText)
Draws a text.
-
#textAlign(horizontal, vertical = BASELINE) ⇒ nil
Sets the alignment for drawing text.
-
#textAscent ⇒ Numeric
Returns ascent of the current font at its current size.
-
#textDescent ⇒ Numeric
Returns descent of the current font at its current size.
-
#textFont(font = nil, size = nil) ⇒ Font
Sets text font.
-
#textLeading(leading = nil) ⇒ Numeric
Sets the spacing between lines of text in units of pixels.
-
#textSize(size) ⇒ nil
Sets text size.
-
#texture(image) ⇒ nil
Sets texture.
-
#textureMode(mode) ⇒ nil
Sets the coordinate space for texture mapping.
-
#textureWrap(wrap) ⇒ nil
Sets the texture wrapping mode.
-
#textWidth(str) ⇒ Numeric
Returns the width of the text.
-
#tint(*args) ⇒ nil
Sets fill color for drawing images.
-
#translate(x, y, z = 0) ⇒ nil
Applies translation matrix to current transformation matrix.
-
#triangle(x1, y1, x2, y2, x3, y3) ⇒ nil
(also: #drawTriangle)
Draws a triangle.
-
#updatePixels(&block) ⇒ nil
Update the image pixels with the ‘pixels’ array.
-
#vertex(x, y, u = nil, v = nil) ⇒ nil
Append vertex for shape polygon.
-
#width ⇒ Numeric
Returns the width of the graphics object.
Instance Method Details
#abs(value) ⇒ Numeric
Returns the absolute number of the value.
2322 2323 2324 |
# File 'lib/processing/graphics_context.rb', line 2322 def abs(value) value.abs end |
#acos(value) ⇒ Numeric
Returns the inverse of cos().
2693 2694 2695 |
# File 'lib/processing/graphics_context.rb', line 2693 def acos(value) Math.acos value end |
#alpha(color) ⇒ Numeric
Returns the red value of the color.
586 587 588 |
# File 'lib/processing/graphics_context.rb', line 586 def alpha(color) ((color >> 24) & 0xff) / 255.0 * @colorMaxes__[3] end |
#angleMode(mode = nil) ⇒ RADIANS, DEGREES
Sets angle mode.
682 683 684 685 686 687 688 689 690 691 692 693 |
# File 'lib/processing/graphics_context.rb', line 682 def angleMode(mode = nil) if mode != nil @angleMode__ = mode @toRad__, @toDeg__, @fromRad__, @fromDeg__ = case mode.downcase.to_sym when RADIANS then [1.0, RAD2DEG__, 1.0, DEG2RAD__] when DEGREES then [DEG2RAD__, 1.0, RAD2DEG__, 1.0] else raise ArgumentError, "invalid angle mode: #{mode}" end end @angleMode__ end |
#applyMatrix(array) ⇒ nil #applyMatrix(a, b, c, d, e, f) ⇒ nil #applyMatrix(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) ⇒ nil
Reset current transformation matrix with 2x3, or 4x4 matrix.
2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 |
# File 'lib/processing/graphics_context.rb', line 2123 def applyMatrix(*args) assertDrawing__ args = args.first if args.first.kind_of?(Array) if args.size == 6 a, b, c, d, e, f = args args = [ a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, e, f, 0, 1 ] end raise ArgumentError unless args.size == 16 m = Rays::Matrix.new(*args) m.transpose! if @p5jsMode__ @painter__.matrix *= m nil end |
#arc(a, b, c, d, start, stop) ⇒ nil Also known as: drawArc
Draws an arc.
The parameters a, b, c, and d are determined by ellipseMode().
1436 1437 1438 1439 1440 1441 1442 |
# File 'lib/processing/graphics_context.rb', line 1436 def arc(a, b, c, d, start, stop) assertDrawing__ x, y, w, h = toXYWH__ @ellipseMode__, a, b, c, d from, to = toDegrees__(-start), toDegrees__(-stop) @painter__.ellipse x, y, w, h, from: from, to: to nil end |
#asin(value) ⇒ Numeric
Returns the inverse of sin().
2680 2681 2682 |
# File 'lib/processing/graphics_context.rb', line 2680 def asin(value) Math.asin value end |
#atan(value) ⇒ Numeric
Returns the inverse of tan().
2706 2707 2708 |
# File 'lib/processing/graphics_context.rb', line 2706 def atan(value) Math.atan value end |
#atan2(y, x) ⇒ Numeric
Returns the angle from a specified point.
2720 2721 2722 |
# File 'lib/processing/graphics_context.rb', line 2720 def atan2(y, x) Math.atan2 y, x end |
#background(str) ⇒ nil #background(str, alpha) ⇒ nil #background(gray) ⇒ nil #background(gray, alpha) ⇒ nil #background(r, g, b) ⇒ nil #background(r, g, b, alpha) ⇒ nil
Clears screen.
1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 |
# File 'lib/processing/graphics_context.rb', line 1286 def background(*args) assertDrawing__ rgba = toRGBA__(*args) if rgba[3] == 1 @painter__.background(*rgba) else @painter__.push fill: rgba, stroke: :none do |_| @painter__.rect 0, 0, width, height end end nil end |
#beginContour ⇒ nil
Begins drawing a hole inside shape.
1736 1737 1738 1739 |
# File 'lib/processing/graphics_context.rb', line 1736 def beginContour() (@drawingShape__ or raise "beginContour() must be called after beginShape()") .beginContour end |
#beginShape(type = nil) ⇒ nil
Begins drawing complex shapes.
1690 1691 1692 1693 1694 |
# File 'lib/processing/graphics_context.rb', line 1690 def beginShape(type = nil) raise "beginShape() cannot be called twice" if @drawingShape__ @drawingShape__ = createShape @drawingShape__.beginShape type end |
#bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2) ⇒ nil Also known as: drawBezier
Draws a Bezier spline curve.
1551 1552 1553 1554 1555 1556 1557 |
# File 'lib/processing/graphics_context.rb', line 1551 def bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2) assertDrawing__ @painter__.nsegment = @bezierDetail__ @painter__.bezier x1, y1, cx1, cy1, cx2, cy2, x2, y2 @painter__.nsegment = 0 nil end |
#bezierDetail(detail) ⇒ nil
Sets the resolution at which Bezier’s curve is displayed. The default value is 20.
975 976 977 978 979 |
# File 'lib/processing/graphics_context.rb', line 975 def bezierDetail(detail) detail = 1 if detail < 1 @bezierDetail__ = detail nil end |
#bezierPoint(a, b, c, d, t) ⇒ Numeric
Evaluates the Bezier at point t for points a, b, c, d.
2785 2786 2787 2788 2789 2790 2791 |
# File 'lib/processing/graphics_context.rb', line 2785 def bezierPoint(a, b, c, d, t) tt = 1.0 - t tt ** 3.0 * a + tt ** 2.0 * b * 3.0 * t + t ** 2.0 * c * 3.0 * tt + t ** 3.0 * d end |
#bezierTangent(a, b, c, d, t) ⇒ Numeric
Calculates the tangent of a point on a Bezier curve.
2806 2807 2808 2809 2810 2811 2812 2813 2814 |
# File 'lib/processing/graphics_context.rb', line 2806 def bezierTangent(a, b, c, d, t) tt = 1.0 - t 3.0 * d * t ** 2.0 - 3.0 * c * t ** 2.0 + 6.0 * c * tt * t - 6.0 * b * tt * t + 3.0 * b * tt ** 2.0 - 3.0 * a * tt ** 2.0 end |
#bezierVertex(x2, y2, x3, y3, x4, y4) ⇒ nil
Append bezier vertex for shape polygon.
1798 1799 1800 1801 |
# File 'lib/processing/graphics_context.rb', line 1798 def bezierVertex(x2, y2, x3, y3, x4, y4) (@drawingShape__ or raise "bezierVertex() must be called after beginShape()") .bezierVertex x2, y2, x3, y3, x4, y4 end |
#blend(sx, sy, sw, sh, dx, dy, dw, dh, mode) ⇒ nil #blend(img, sx, sy, sw, sh, dx, dy, dw, dh, mode) ⇒ nil
Blends image.
1863 1864 1865 1866 1867 1868 |
# File 'lib/processing/graphics_context.rb', line 1863 def blend(img = nil, sx, sy, sw, sh, dx, dy, dw, dh, mode) assertDrawing__ (img || self).drawImage__( @painter__, sx, sy, sw, sh, dx, dy, dw, dh, fill: getTint__, stroke: :none, blend_mode: mode) end |
#blendMode(mode = nil) ⇒ nil
Sets blend mode. Default is BLEND.
804 805 806 807 808 809 810 |
# File 'lib/processing/graphics_context.rb', line 804 def blendMode(mode = nil) if mode != nil @blendMode__ = mode @painter__.blend_mode = mode end @blendMode__ end |
#blue(color) ⇒ Numeric
Returns the blue value of the color.
573 574 575 |
# File 'lib/processing/graphics_context.rb', line 573 def blue(color) (color & 0xff) / 255.0 * @colorMaxes__[2] end |
#brightness(color) ⇒ Numeric
Returns the brightness value of the color.
627 628 629 630 |
# File 'lib/processing/graphics_context.rb', line 627 def brightness(color) _, _, b = toRawColor__(color).to_hsv b * (@hsbColor__ ? @colorMaxes__[2] : 1) end |
#ceil(value) ⇒ Numeric
Returns the closest integer number greater than or equal to the value.
2335 2336 2337 |
# File 'lib/processing/graphics_context.rb', line 2335 def ceil(value) value.ceil end |
#circle(x, y, extent) ⇒ nil Also known as: drawCircle
Draws a circle.
1414 1415 1416 |
# File 'lib/processing/graphics_context.rb', line 1414 def circle(x, y, extent) ellipse x, y, extent, extent end |
#clear ⇒ Object
1299 1300 1301 1302 1303 |
# File 'lib/processing/graphics_context.rb', line 1299 def clear() assertDrawing__ @painter__.background 0, 0 nil end |
#clip(a, b, c, d) ⇒ nil
Limits the drawable rectangle.
The parameters a, b, c, and d are determined by rectMode().
1037 1038 1039 1040 1041 |
# File 'lib/processing/graphics_context.rb', line 1037 def clip(a, b, c, d) x, y, w, h = toXYWH__ @imageMode__, a, b, c, d @painter__.clip x, y, w, h nil end |
#color(gray) ⇒ Integer #color(gray, alpha) ⇒ Integer #color(v1, v2, v3) ⇒ Integer #color(v1, v2, v3, alpha) ⇒ Integer
Creates color value.
532 533 534 535 536 |
# File 'lib/processing/graphics_context.rb', line 532 def color(*args) toRGBA__(*args) .map {|n| (n * 255).to_i.clamp 0, 255} .then {|r, g, b, a| Image.toColor__ r, g, b, a} end |
#colorMode(mode) ⇒ RGB, HSB #colorMode(mode, max) ⇒ RGB, HSB #colorMode(mode, max1, max2, max3) ⇒ RGB, HSB #colorMode(mode, max1, max2, max3, maxA) ⇒ RGB, HSB
Sets color mode and max color values.
498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 |
# File 'lib/processing/graphics_context.rb', line 498 def colorMode(mode = nil, *maxes) if mode != nil mode = mode.downcase.to_sym raise ArgumentError, "invalid color mode: #{mode}" unless [RGB, HSB].include?(mode) raise ArgumentError unless [0, 1, 3, 4].include?(maxes.size) @colorMode__ = mode @hsbColor__ = mode == HSB case maxes.size when 1 then @colorMaxes__ = [maxes.first.to_f] * 4 when 3, 4 then @colorMaxes__[0...maxes.size] = maxes.map &:to_f end end @colorMode__ end |
#constrain(value, min, max) ⇒ Numeric
Constrains the number between min..max.
2602 2603 2604 |
# File 'lib/processing/graphics_context.rb', line 2602 def constrain(value, min, max) value < min ? min : (value > max ? max : value) end |
#copy(sx, sy, sw, sh, dx, dy, dw, dh) ⇒ nil #copy(img, sx, sy, sw, sh, dx, dy, dw, dh) ⇒ nil
Copies image.
1838 1839 1840 |
# File 'lib/processing/graphics_context.rb', line 1838 def copy(img = nil, sx, sy, sw, sh, dx, dy, dw, dh) blend img, sx, sy, sw, sh, dx, dy, dw, dh, BLEND end |
#cos(angle) ⇒ Numeric
Returns the cosine of an angle.
2654 2655 2656 |
# File 'lib/processing/graphics_context.rb', line 2654 def cos(angle) Math.cos angle end |
#createCapture(*args) ⇒ Capture
Creates a camera object as a video input device.
3116 3117 3118 |
# File 'lib/processing/graphics_context.rb', line 3116 def createCapture(*args) Capture.new(*args) end |
#createFont(name, size) ⇒ Font
Creates a new font object.
2967 2968 2969 2970 |
# File 'lib/processing/graphics_context.rb', line 2967 def createFont(name, size) size = FONT_SIZE_MAX__ if size && size > FONT_SIZE_MAX__ Font.new Rays::Font.new(name, size || FONT_SIZE_DEFAULT__) end |
#createGraphics(width, height, pixelDensity = 1) ⇒ Graphics
Creates a new off-screen graphics context object.
3068 3069 3070 |
# File 'lib/processing/graphics_context.rb', line 3068 def createGraphics(width, height, pixelDensity = 1) Graphics.new width, height, pixelDensity end |
#createImage(w, h) ⇒ Image #createImage(w, h, format) ⇒ Image
Creates a new image object.
2986 2987 2988 2989 2990 |
# File 'lib/processing/graphics_context.rb', line 2986 def createImage(w, h, format = RGBA) colorspace = {RGB => Rays::RGB, RGBA => Rays::RGBA}[format] raise ArgumentError, "Unknown image format" unless colorspace Image.new Rays::Image.new(w, h, colorspace).paint {background 0, 0} end |
#createShader(vertPath, fragPath) ⇒ Shader #createShader(vertSource, fragSource) ⇒ Shader
Creates a shader object.
Passing nil for a vertex shader parameter causes the following default vertex shader to be used. “‘ attribute vec3 position; attribute vec3 texCoord; attribute vec4 color; varying vec4 vertPosition; varying vec4 vertTexCoord; varying vec4 vertColor; uniform mat4 transform; uniform mat4 texMatrix; void main ()
vec4 pos__ = vec4(position, 1.0);
vertPosition = pos__;
vertTexCoord = texMatrix * vec4(texCoord, 1.0);
vertColor = color;
gl_Position = transform * pos__;
“‘
3106 3107 3108 3109 3110 |
# File 'lib/processing/graphics_context.rb', line 3106 def createShader(vert, frag) vert = File.read if vert && File.exist?(vert) frag = File.read if frag && File.exist?(frag) Shader.new vert, frag end |
#createShape ⇒ Shape #createShape(LINE, x1, y1, x2, y2) ⇒ Shape #createShape(RECT, a, b, c, d) ⇒ Shape #createShape(ELLIPSE, a, b, c, d) ⇒ Shape #createShape(ARC, a, b, c, d, start, stop) ⇒ Shape #createShape(TRIANGLE, x1, y1, x2, y2, x3, y3) ⇒ Shape #createShape(QUAD, x1, y1, x2, y2, x3, y3, x4, y4) ⇒ Shape #createShape(GROUP) ⇒ Shape
Creates a new shape object.
3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 |
# File 'lib/processing/graphics_context.rb', line 3009 def createShape(kind = nil, *args) case kind when LINE then createLineShape__( *args) when RECT then createRectShape__( *args) when ELLIPSE then createEllipseShape__( *args) when ARC then createArcShape__( *args) when TRIANGLE then createTriangleShape__(*args) when QUAD then createQuadShape__( *args) when GROUP then Shape.new nil, [], context: self when nil then Shape.new context: self else raise ArgumentError, "Unknown shape kind '#{kind}'" end end |
#createVector ⇒ Vector #createVector(x, y) ⇒ Vector #createVector(x, y, z) ⇒ Vector
Creates a new vector object.
2954 2955 2956 |
# File 'lib/processing/graphics_context.rb', line 2954 def createVector(*args) Vector.new(*args, context: self) end |
#curve(cx1, cy1, x1, y1, x2, y2, cx2, cy2) ⇒ nil Also known as: drawCurve
Draws a Catmull-Rom spline curve.
1525 1526 1527 1528 1529 1530 1531 |
# File 'lib/processing/graphics_context.rb', line 1525 def curve(cx1, cy1, x1, y1, x2, y2, cx2, cy2) assertDrawing__ @painter__.nsegment = @curveDetail__ @painter__.curve cx1, cy1, x1, y1, x2, y2, cx2, cy2 @painter__.nsegment = 0 nil end |
#curveDetail(detail) ⇒ nil
Sets the resolution at which curves display. The default value is 20 while the minimum value is 3.
945 946 947 948 949 |
# File 'lib/processing/graphics_context.rb', line 945 def curveDetail(detail) detail = 3 if detail < 3 @curveDetail__ = detail nil end |
#curvePoint(a, b, c, d, t) ⇒ Numeric
Evaluates the curve at point t for points a, b, c, d.
2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 |
# File 'lib/processing/graphics_context.rb', line 2737 def curvePoint(a, b, c, d, t) s = @curveTightness__ t3 = t * t * t t2 = t * t f1 = ( s - 1.0) / 2.0 * t3 + ( 1.0 - s) * t2 + (s - 1.0) / 2.0 * t f2 = ( s + 3.0) / 2.0 * t3 + (-5.0 - s) / 2.0 * t2 + 1.0 f3 = (-3.0 - s) / 2.0 * t3 + ( s + 2.0) * t2 + (1.0 - s) / 2.0 * t f4 = ( 1.0 - s) / 2.0 * t3 + ( s - 1.0) / 2.0 * t2 a * f1 + b * f2 + c * f3 + d * f4 end |
#curveTangent(a, b, c, d, t) ⇒ Numeric
Calculates the tangent of a point on a curve.
2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 |
# File 'lib/processing/graphics_context.rb', line 2761 def curveTangent(a, b, c, d, t) s = @curveTightness__ tt3 = t * t * 3.0 t2 = t * 2.0 f1 = ( s - 1.0) / 2.0 * tt3 + ( 1.0 - s) * t2 + (s - 1.0) / 2.0 f2 = ( s + 3.0) / 2.0 * tt3 + (-5.0 - s) / 2.0 * t2 f3 = (-3.0 - s) / 2.0 * tt3 + ( s + 2.0) * t2 + (1.0 - s) / 2.0 f4 = ( 1.0 - s) / 2.0 * tt3 + ( s - 1.0) / 2.0 * t2 a * f1 + b * f2 + c * f3 + d * f4 end |
#curveTightness(tightness) ⇒ nil
Sets the quality of curve forms.
960 961 962 963 |
# File 'lib/processing/graphics_context.rb', line 960 def curveTightness(tightness) @curveTightness__ = tightness nil end |
#curveVertex(x, y) ⇒ nil
Append curve vertex for shape polygon.
1783 1784 1785 1786 |
# File 'lib/processing/graphics_context.rb', line 1783 def curveVertex(x, y) (@drawingShape__ or raise "curveVertex() must be called after beginShape()") .curveVertex x, y end |
#degrees(radian) ⇒ Numeric
Converts radian to degree.
2628 2629 2630 |
# File 'lib/processing/graphics_context.rb', line 2628 def degrees(radian) radian * RAD2DEG__ end |
#dist(x1, y1, x2, y2) ⇒ Numeric #dist(x1, y1, z1, x2, y2, z2) ⇒ Numeric
Returns distance between 2 points.
2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 |
# File 'lib/processing/graphics_context.rb', line 2471 def dist(*args) case args.size when 4 x1, y1, x2, y2 = *args xx, yy = x2 - x1, y2 - y1 Math.sqrt xx * xx + yy * yy when 3 x1, y1, z1, x2, y2, z2 = *args xx, yy, zz = x2 - x1, y2 - y1, z2 - z1 Math.sqrt xx * xx + yy * yy + zz * zz else raise ArgumentError end end |
#ellipse(a, b, c, d) ⇒ nil Also known as: drawEllipse
Draws an ellipse.
The parameters a, b, c, and d are determined by ellipseMode().
1394 1395 1396 1397 1398 1399 |
# File 'lib/processing/graphics_context.rb', line 1394 def ellipse(a, b, c, d) assertDrawing__ x, y, w, h = toXYWH__ @ellipseMode__, a, b, c, d @painter__.ellipse x, y, w, h nil end |
#ellipseMode(mode) ⇒ nil
Sets ellipse mode. Default is CENTER.
CORNER -> ellipse(left, top, width, height) CORNERS -> ellipse(left, top, right, bottom) CENTER -> ellipse(centerX, centerY, width, height) RADIUS -> ellipse(centerX, centerY, radiusH, radiusV)
747 748 749 |
# File 'lib/processing/graphics_context.rb', line 747 def ellipseMode(mode) @ellipseMode__ = mode end |
#endContour ⇒ nil
Ends drawing a hole.
1748 1749 1750 1751 |
# File 'lib/processing/graphics_context.rb', line 1748 def endContour() (@drawingShape__ or raise "endContour() must be called after beginShape()") .endContour end |
#endShape ⇒ nil #endShape(CLOSE) ⇒ nil
Ends drawing complex shapes.
1707 1708 1709 1710 1711 1712 1713 |
# File 'lib/processing/graphics_context.rb', line 1707 def endShape(mode = nil) s = @drawingShape__ or raise "endShape() must be called after beginShape()" s.endShape mode shape s @drawingShape__ = nil nil end |
#exp(n) ⇒ Numeric
Returns Euler’s number e raised to the power of value.
2387 2388 2389 |
# File 'lib/processing/graphics_context.rb', line 2387 def exp(n) Math.exp n end |
#fill(rgb) ⇒ nil #fill(rgb, alpha) ⇒ nil #fill(gray) ⇒ nil #fill(gray, alpha) ⇒ nil #fill(r, g, b) ⇒ nil #fill(r, g, b, alpha) ⇒ nil
Sets fill color.
833 834 835 836 |
# File 'lib/processing/graphics_context.rb', line 833 def fill(*args) @painter__.fill(*toRGBA__(*args)) nil end |
#filter(*args) ⇒ nil
Applies an image filter to screen.
overload filter(shader) overload filter(type) overload filter(type, param)
1260 1261 1262 1263 |
# File 'lib/processing/graphics_context.rb', line 1260 def filter(*args) @filter__ = Shader.createFilter__(*args) nil end |
#floor(value) ⇒ Numeric
Returns the closest integer number less than or equal to the value.
2348 2349 2350 |
# File 'lib/processing/graphics_context.rb', line 2348 def floor(value) value.floor end |
#green(color) ⇒ Numeric
Returns the green value of the color.
560 561 562 |
# File 'lib/processing/graphics_context.rb', line 560 def green(color) ((color >> 8) & 0xff) / 255.0 * @colorMaxes__[1] end |
#height ⇒ Numeric
Returns the height of the graphics object.
430 431 432 |
# File 'lib/processing/graphics_context.rb', line 430 def height() getInternal__.height end |
#hue(color) ⇒ Numeric
Returns the hue value of the color.
599 600 601 602 |
# File 'lib/processing/graphics_context.rb', line 599 def hue(color) h, = toRawColor__(color).to_hsv h * (@hsbColor__ ? @colorMaxes__[0] : 1) end |
#image(img, a, b) ⇒ nil #image(img, a, b, c, d) ⇒ nil Also known as: drawImage
Draws an image.
The parameters a, b, c, and d are determined by imageMode().
1623 1624 1625 1626 1627 1628 |
# File 'lib/processing/graphics_context.rb', line 1623 def image(img, a, b, c = nil, d = nil) assertDrawing__ x, y, w, h = toXYWH__ @imageMode__, a, b, c || img.width, d || img.height img.drawImage__ @painter__, x, y, w, h, fill: getTint__, stroke: :none nil end |
#imageMode(mode) ⇒ nil
Sets image mode. Default is CORNER.
CORNER -> image(img, left, top, width, height) CORNERS -> image(img, left, top, right, bottom) CENTER -> image(img, centerX, centerY, width, height)
764 765 766 |
# File 'lib/processing/graphics_context.rb', line 764 def imageMode(mode) @imageMode__ = mode end |
#lerp(start, stop, amount) ⇒ Numeric
Returns the interpolated number between range start..stop.
2511 2512 2513 |
# File 'lib/processing/graphics_context.rb', line 2511 def lerp(start, stop, amount) start + (stop - start) * amount end |
#lerpColor(color1, color2, amount) ⇒ Integer
Returns the interpolated color between color1 and color2.
2526 2527 2528 2529 2530 2531 2532 |
# File 'lib/processing/graphics_context.rb', line 2526 def lerpColor(color1, color2, amount) color( lerp(red( color1), red( color2), amount), lerp(green(color1), green(color2), amount), lerp(blue( color1), blue( color2), amount), lerp(alpha(color1), alpha(color2), amount)) end |
#line(x1, y1, x2, y2) ⇒ nil Also known as: drawLine
Draws a line.
1335 1336 1337 1338 1339 |
# File 'lib/processing/graphics_context.rb', line 1335 def line(x1, y1, x2, y2) assertDrawing__ @painter__.line x1, y1, x2, y2 nil end |
#loadFont(filename) ⇒ Font
Loads font from file.
3129 3130 3131 3132 3133 3134 3135 |
# File 'lib/processing/graphics_context.rb', line 3129 def loadFont(filename) ext = File.extname filename raise "unsupported font type -- '#{ext}'" unless ext =~ /^\.?(ttf|otf)$/i filename = httpGet__ filename, ext if filename =~ %r|^https?://| Font.new Rays::Font.load filename end |
#loadImage(filename, extension = nil) ⇒ Image
Loads image.
3147 3148 3149 3150 3151 3152 3153 |
# File 'lib/processing/graphics_context.rb', line 3147 def loadImage(filename, extension = nil) ext = extension || File.extname(filename) raise "unsupported image type -- '#{ext}'" unless ext =~ /^\.?(png|jpg|gif)$/i filename = httpGet__ filename, ext if filename =~ %r|^https?://| Image.new Rays::Image.load filename end |
#loadPixels ⇒ nil
Loads all pixels to the ‘pixels’ array.
1877 1878 1879 |
# File 'lib/processing/graphics_context.rb', line 1877 def loadPixels() @pixels__ = getInternal__.pixels end |
#loadShader(fragPath) ⇒ Shader #loadShader(fragPath, vertPath) ⇒ Shader
Loads shader file.
3190 3191 3192 |
# File 'lib/processing/graphics_context.rb', line 3190 def loadShader(fragPath, vertPath = nil) createShader vertPath, fragPath end |
#log(n) ⇒ Numeric
Returns the natural logarithm (the base-e logarithm) of a number.
2374 2375 2376 |
# File 'lib/processing/graphics_context.rb', line 2374 def log(n) Math.log n end |
#mag(x, y) ⇒ Numeric #mag(x, y, z) ⇒ Numeric
Returns the magnitude (or length) of a vector.
2445 2446 2447 2448 2449 2450 2451 2452 |
# File 'lib/processing/graphics_context.rb', line 2445 def mag(*args) x, y, z = *args case args.size when 2 then Math.sqrt x * x + y * y when 3 then Math.sqrt x * x + y * y + z * z else raise ArgumentError end end |
#map(value, start1, stop1, start2, stop2) ⇒ Numeric
Maps a number from range start1..stop1 to range start2..stop2.
2547 2548 2549 |
# File 'lib/processing/graphics_context.rb', line 2547 def map(value, start1, stop1, start2, stop2) lerp start2, stop2, norm(value, start1, stop1) end |
#max(a, b) ⇒ Numeric #max(a, b, c) ⇒ Numeric #max(array) ⇒ Numeric
Returns maximum value.
2587 2588 2589 |
# File 'lib/processing/graphics_context.rb', line 2587 def max(*args) args.flatten.max end |
#min(a, b) ⇒ Numeric #min(a, b, c) ⇒ Numeric #min(array) ⇒ Numeric
Returns minimum value.
2567 2568 2569 |
# File 'lib/processing/graphics_context.rb', line 2567 def min(*args) args.flatten.min end |
#noClip ⇒ nil
Disables clipping.
1049 1050 1051 1052 |
# File 'lib/processing/graphics_context.rb', line 1049 def noClip() @painter__.no_clip nil end |
#noFill ⇒ nil
Disables filling.
850 851 852 853 |
# File 'lib/processing/graphics_context.rb', line 850 def noFill() @painter__.fill nil nil end |
#noise(x) ⇒ Numeric #noise(x, y) ⇒ Numeric #noise(x, y, z) ⇒ Numeric
Returns the perlin noise value.
2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 |
# File 'lib/processing/graphics_context.rb', line 2831 def noise(x, y = 0, z = 0) seed, falloff = @noiseSeed__, @noiseFallOff__ amp = 0.5 @noiseOctaves__.times.reduce(0) do |sum| value = (Rays.perlin(x, y, z, seed) / 2.0 + 0.5) * amp x *= 2 y *= 2 z *= 2 amp *= falloff sum + value end end |
#noiseDetail(lod, falloff = nil) ⇒ nil
Adjusts the character and level of detail produced by the Perlin noise function.
2867 2868 2869 2870 |
# File 'lib/processing/graphics_context.rb', line 2867 def noiseDetail(lod, falloff = nil) @noiseOctaves__ = lod if lod && lod > 0 @noiseFallOff__ = falloff if falloff && falloff > 0 end |
#noiseSeed(seed) ⇒ nil
Sets the seed value for noise()
2853 2854 2855 |
# File 'lib/processing/graphics_context.rb', line 2853 def noiseSeed(seed) @noiseSeed__ = Random.new(seed).rand 0.0..1.0 end |
#norm(value, start, stop) ⇒ Numeric
Normalize the value from range start..stop into 0..1.
2496 2497 2498 |
# File 'lib/processing/graphics_context.rb', line 2496 def norm(value, start, stop) (value.to_f - start.to_f) / (stop.to_f - start.to_f) end |
#noStroke ⇒ nil
Disables drawing stroke.
888 889 890 891 |
# File 'lib/processing/graphics_context.rb', line 888 def noStroke() @painter__.stroke nil nil end |
#noTint ⇒ nil
Resets tint color.
1014 1015 1016 |
# File 'lib/processing/graphics_context.rb', line 1014 def noTint() @tint__ = nil end |
#pixelDensity ⇒ Numeric
Returns the pixel density of the graphics object.
461 462 463 |
# File 'lib/processing/graphics_context.rb', line 461 def pixelDensity() @painter__.pixel_density end |
#pixelHeight ⇒ Numeric
Returns the height of the graphics object in pixels.
450 451 452 |
# File 'lib/processing/graphics_context.rb', line 450 def pixelHeight() height * pixelDensity end |
#pixels ⇒ Array
An array of all pixels. Call loadPixels() before accessing the array.
1909 1910 1911 |
# File 'lib/processing/graphics_context.rb', line 1909 def pixels() @pixels__ end |
#pixelWidth ⇒ Numeric
Returns the width of the graphics object in pixels.
440 441 442 |
# File 'lib/processing/graphics_context.rb', line 440 def pixelWidth() width * pixelDensity end |
#point(x, y) ⇒ nil Also known as: drawPoint
Draws a point.
1315 1316 1317 1318 1319 |
# File 'lib/processing/graphics_context.rb', line 1315 def point(x, y) assertDrawing__ @painter__.point x, y nil end |
#pop ⇒ nil
Restore styles and transformations from stack.
2286 2287 2288 2289 |
# File 'lib/processing/graphics_context.rb', line 2286 def pop() popMatrix popStyle end |
#popMatrix ⇒ nil
Pops the current transformation matrix from stack.
2087 2088 2089 2090 2091 2092 |
# File 'lib/processing/graphics_context.rb', line 2087 def popMatrix() assertDrawing__ raise "matrix stack underflow" if @matrixStack__.empty? @painter__.matrix = @matrixStack__.pop nil end |
#popStyle ⇒ nil
Restore style values from the style stack.
2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 |
# File 'lib/processing/graphics_context.rb', line 2223 def popStyle() assertDrawing__ raise "style stack underflow" if @styleStack__.empty? @painter__.fill, @painter__.stroke, @painter__.stroke_width, @painter__.stroke_cap, @painter__.stroke_join, @painter__.miter_limit, @painter__.line_height, @painter__.clip, @painter__.blend_mode, @painter__.font, @painter__.texture, @painter__.texcoord_mode, @painter__.texcoord_wrap, @painter__.shader, @colorMode__, @hsbColor__, @colorMaxes__, @angleMode__, @toRad__, @toDeg__, @fromRad__, @fromDeg__, @rectMode__, @ellipseMode__, @imageMode__, @shapeMode__, @blendMode__, @curveDetail__, @curveTightness__, @bezierDetail__, @textAlignH__, @textAlignV__, @textFont__, @tint__ = @styleStack__.pop @textFont__.setSize__ @painter__.font.size nil end |
#pow(value, exponent) ⇒ Numeric
Returns value raised to the power of exponent.
2401 2402 2403 |
# File 'lib/processing/graphics_context.rb', line 2401 def pow(value, exponent) value ** exponent end |
#printMatrix ⇒ nil
Prints matrix elements to console.
2161 2162 2163 2164 2165 2166 |
# File 'lib/processing/graphics_context.rb', line 2161 def printMatrix() m = @painter__.matrix m.transpose! if @p5jsMode__ print "%f %f %f %f\n%f %f %f %f\n%f %f %f %f\n%f %f %f %f\n" % m.to_a nil end |
#push(&block) ⇒ Object
Save current styles and transformations to stack.
2271 2272 2273 2274 2275 2276 2277 |
# File 'lib/processing/graphics_context.rb', line 2271 def push(&block) pushMatrix pushStyle block.call if block ensure pop if block end |
#pushMatrix(&block) ⇒ Object
Pushes the current transformation matrix to stack.
2073 2074 2075 2076 2077 2078 2079 |
# File 'lib/processing/graphics_context.rb', line 2073 def pushMatrix(&block) assertDrawing__ @matrixStack__.push @painter__.matrix block.call if block ensure popMatrix if block end |
#pushStyle(&block) ⇒ Object
Save current style values to the style stack.
2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 |
# File 'lib/processing/graphics_context.rb', line 2174 def pushStyle(&block) assertDrawing__ @styleStack__.push [ @painter__.fill, @painter__.stroke, @painter__.stroke_width, @painter__.stroke_cap, @painter__.stroke_join, @painter__.miter_limit, @painter__.line_height!, @painter__.clip, @painter__.blend_mode, @painter__.font, @painter__.texture, @painter__.texcoord_mode, @painter__.texcoord_wrap, @painter__.shader, @colorMode__, @hsbColor__, @colorMaxes__, @angleMode__, @toRad__, @toDeg__, @fromRad__, @fromDeg__, @rectMode__, @ellipseMode__, @imageMode__, @shapeMode__, @blendMode__, @curveDetail__, @curveTightness__, @bezierDetail__, @textAlignH__, @textAlignV__, @textFont__, @tint__, ] block.call if block ensure popStyle if block end |
#quad(x1, y1, x2, y2, x3, y3, x4, y4) ⇒ nil Also known as: drawQuad
Draws a quad.
1501 1502 1503 1504 1505 |
# File 'lib/processing/graphics_context.rb', line 1501 def quad(x1, y1, x2, y2, x3, y3, x4, y4) assertDrawing__ @painter__.line x1, y1, x2, y2, x3, y3, x4, y4, loop: true nil end |
#quadraticVertex(cx, cy, x3, y3) ⇒ nil
Append quadratic vertex for shape polygon.
1813 1814 1815 1816 |
# File 'lib/processing/graphics_context.rb', line 1813 def quadraticVertex(cx, cy, x3, y3) (@drawingShape__ or raise "quadraticVertex() must be called after beginShape()") .quadraticVertex cx, cy, x3, y3 end |
#radians(degree) ⇒ Numeric
Converts degree to radian.
2615 2616 2617 |
# File 'lib/processing/graphics_context.rb', line 2615 def radians(degree) degree * DEG2RAD__ end |
#random(high) ⇒ Float #random(low, high) ⇒ Float #random(choices) ⇒ Float
Returns a random number in range low…high
2887 2888 2889 2890 2891 2892 2893 2894 2895 |
# File 'lib/processing/graphics_context.rb', line 2887 def random(*args) if args.first.kind_of? Array a = args.first a.empty? ? nil : a[@random__.rand a.size] else high, low = args.reverse @random__.rand (low || 0).to_f...(high || 1).to_f end end |
#randomGaussian(mean = 0, sd = 1) ⇒ Float
Returns a random number fitting a Gaussian, or normal, distribution.
2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 |
# File 'lib/processing/graphics_context.rb', line 2921 def randomGaussian(mean = 0, sd = 1) value = if @nextGaussian__ x, @nextGaussian__ = @nextGaussian__, nil x else a, b, w = 0, 0, 1 until w < 1 a = random(2) - 1 b = random(2) - 1 w = a ** 2 + b ** 2 end w = Math.sqrt(-2 * Math.log(w) / w) @randomGaussian__ = a * w b * w end value * sd + mean end |
#randomSeed(seed) ⇒ nil
Sets the seed value for random()
2906 2907 2908 2909 |
# File 'lib/processing/graphics_context.rb', line 2906 def randomSeed(seed) @random__ = Random.new seed @nextGaussian__ = nil end |
#rect(a, b, c, d) ⇒ nil #rect(a, b, c, d, r) ⇒ nil #rect(a, b, c, d, tl, tr, br, bl) ⇒ nil Also known as: drawRect
Draws a rectangle.
The parameters a, b, c, and d are determined by rectMode().
1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 |
# File 'lib/processing/graphics_context.rb', line 1366 def rect(a, b, c, d, *args) assertDrawing__ x, y, w, h = toXYWH__ @rectMode__, a, b, c, d case args.size when 0 then @painter__.rect x, y, w, h when 1 then @painter__.rect x, y, w, h, round: args[0] when 4 then @painter__.rect x, y, w, h, lt: args[0], rt: args[1], rb: args[2], lb: args[3] else raise ArgumentError # ToDo: refine error message end nil end |
#rectMode(mode) ⇒ nil
Sets rect mode. Default is CORNER.
CORNER -> rect(left, top, width, height) CORNERS -> rect(left, top, right, bottom) CENTER -> rect(centerX, centerY, width, height) RADIUS -> rect(centerX, centerY, radiusH, radiusV)
729 730 731 |
# File 'lib/processing/graphics_context.rb', line 729 def rectMode(mode) @rectMode__ = mode end |
#red(color) ⇒ Numeric
Returns the red value of the color.
547 548 549 |
# File 'lib/processing/graphics_context.rb', line 547 def red(color) ((color >> 16) & 0xff) / 255.0 * @colorMaxes__[0] end |
#renderMode(mode = nil) ⇒ PROCESSING, P5JS
Sets render mode.
471 472 473 474 475 476 477 |
# File 'lib/processing/graphics_context.rb', line 471 def renderMode(mode = nil) if mode @renderMode__ = mode @p5jsMode__ = mode == P5JS end @renderMode__ end |
#requestImage(filename, extension = nil) ⇒ Image
Loads image on a new thread. When the image is loading, its width and height will be 0. If an error occurs while loading the image, its width and height wil be -1.
3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 |
# File 'lib/processing/graphics_context.rb', line 3166 def requestImage(filename, extension = nil) img = Image.new nil Thread.new filename, extension do |fn, ext| loaded = loadImage(fn, ext) or raise img.setInternal__ loaded.getInternal__ rescue img.setInternal__ nil, true end img end |
#resetMatrix ⇒ nil
Reset current transformation matrix with identity matrix.
2149 2150 2151 2152 2153 |
# File 'lib/processing/graphics_context.rb', line 2149 def resetMatrix() assertDrawing__ @painter__.matrix = 1 nil end |
#resetShader ⇒ nil
Resets shader.
1240 1241 1242 1243 |
# File 'lib/processing/graphics_context.rb', line 1240 def resetShader() @painter__.no_shader nil end |
#rotate(angle) ⇒ nil
Applies rotation matrix to current transformation matrix.
1978 1979 1980 1981 1982 |
# File 'lib/processing/graphics_context.rb', line 1978 def rotate(angle) assertDrawing__ @painter__.rotate toDegrees__ angle nil end |
#rotateX(angle) ⇒ nil
Applies rotation around the x-axis.
1993 1994 1995 1996 1997 |
# File 'lib/processing/graphics_context.rb', line 1993 def rotateX(angle) assertDrawing__ @painter__.rotate toDegrees__(angle), 1, 0, 0 nil end |
#rotateY(angle) ⇒ nil
Applies rotation around the y-axis.
2008 2009 2010 2011 2012 |
# File 'lib/processing/graphics_context.rb', line 2008 def rotateY(angle) assertDrawing__ @painter__.rotate toDegrees__(angle), 0, 1, 0 nil end |
#rotateZ(angle) ⇒ nil
Applies rotation around the z-axis.
2023 2024 2025 2026 2027 |
# File 'lib/processing/graphics_context.rb', line 2023 def rotateZ(angle) assertDrawing__ @painter__.rotate toDegrees__(angle), 0, 0, 1 nil end |
#round(value) ⇒ Numeric
Returns the closest integer number.
2361 2362 2363 |
# File 'lib/processing/graphics_context.rb', line 2361 def round(value) value.round end |
#saturation(color) ⇒ Numeric
Returns the saturation value of the color.
613 614 615 616 |
# File 'lib/processing/graphics_context.rb', line 613 def saturation(color) _, s, = toRawColor__(color).to_hsv s * (@hsbColor__ ? @colorMaxes__[1] : 1) end |
#save(filename) ⇒ nil
Saves screen image to file.
1922 1923 1924 1925 |
# File 'lib/processing/graphics_context.rb', line 1922 def save(filename) getInternal__.save filename nil end |
#scale(s) ⇒ nil #scale(x, y) ⇒ nil #scale(x, y, z) ⇒ nil
Applies scale matrix to current transformation matrix.
1963 1964 1965 1966 1967 |
# File 'lib/processing/graphics_context.rb', line 1963 def scale(x, y = nil, z = 1) assertDrawing__ @painter__.scale x, (y || x), z nil end |
#shader(shader) ⇒ nil
Sets shader.
1228 1229 1230 1231 |
# File 'lib/processing/graphics_context.rb', line 1228 def shader(shader) @painter__.shader shader&.getInternal__ nil end |
#shape(img, a, b) ⇒ nil #shape(img, a, b, c, d) ⇒ nil Also known as: drawShape
Draws a shape.
The parameters a, b, c, and d are determined by shapeMode().
1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 |
# File 'lib/processing/graphics_context.rb', line 1649 def shape(shp, a = 0, b = 0, c = nil, d = nil) assertDrawing__ return nil unless shp.isVisible drawWithTexture__ do |_| if c || d || @shapeMode__ != CORNER x, y, w, h = toXYWH__ @shapeMode__, a, b, c || shp.width, d || shp.height shp.draw__ @painter__, x, y, w, h else shp.draw__ @painter__, a, b end end nil end |
#shapeMode(mode) ⇒ nil
Sets shape mode. Default is CORNER.
CORNER -> shape(shp, left, top, width, height) CORNERS -> shape(shp, left, top, right, bottom) CENTER -> shape(shp, centerX, centerY, width, height)
780 781 782 |
# File 'lib/processing/graphics_context.rb', line 780 def shapeMode(mode) @shapeMode__ = mode end |
#shearX(angle) ⇒ nil
Applies shear around the x-axis.
2038 2039 2040 2041 2042 2043 2044 2045 2046 |
# File 'lib/processing/graphics_context.rb', line 2038 def shearX(angle) t = Math.tan toRadians__(angle) @painter__.matrix *= Rays::Matrix.new( 1, t, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) nil end |
#shearY(angle) ⇒ nil
Applies shear around the y-axis.
2057 2058 2059 2060 2061 2062 2063 2064 2065 |
# File 'lib/processing/graphics_context.rb', line 2057 def shearY(angle) t = Math.tan toRadians__(angle) @painter__.matrix *= Rays::Matrix.new( 1, 0, 0, 0, t, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) nil end |
#sin(angle) ⇒ Numeric
Returns the sine of an angle.
2641 2642 2643 |
# File 'lib/processing/graphics_context.rb', line 2641 def sin(angle) Math.sin angle end |
#sq(value) ⇒ Numeric
Returns squared value.
2414 2415 2416 |
# File 'lib/processing/graphics_context.rb', line 2414 def sq(value) value * value end |
#sqrt(value) ⇒ Numeric
Returns squared value.
2427 2428 2429 |
# File 'lib/processing/graphics_context.rb', line 2427 def sqrt(value) Math.sqrt value end |
#square(x, y, extent) ⇒ nil Also known as: drawSquare
Draws a square.
1457 1458 1459 |
# File 'lib/processing/graphics_context.rb', line 1457 def square(x, y, extent) rect x, y, extent, extent end |
#stroke(rgb) ⇒ nil #stroke(rgb, alpha) ⇒ nil #stroke(gray) ⇒ nil #stroke(gray, alpha) ⇒ nil #stroke(r, g, b) ⇒ nil #stroke(r, g, b, alpha) ⇒ nil
Sets stroke color.
876 877 878 879 |
# File 'lib/processing/graphics_context.rb', line 876 def stroke(*args) @painter__.stroke(*toRGBA__(*args)) nil end |
#strokeCap(cap) ⇒ nil
Sets stroke cap mode.
916 917 918 919 |
# File 'lib/processing/graphics_context.rb', line 916 def strokeCap(cap) @painter__.stroke_cap cap nil end |
#strokeJoin(join) ⇒ nil
Sets stroke join mode.
930 931 932 933 |
# File 'lib/processing/graphics_context.rb', line 930 def strokeJoin(join) @painter__.stroke_join join nil end |
#strokeWeight(weight) ⇒ nil
Sets stroke weight.
902 903 904 905 |
# File 'lib/processing/graphics_context.rb', line 902 def strokeWeight(weight) @painter__.stroke_width weight nil end |
#tan(angle) ⇒ Numeric
Returns the ratio of the sine and cosine of an angle.
2667 2668 2669 |
# File 'lib/processing/graphics_context.rb', line 2667 def tan(angle) Math.tan angle end |
#text(str) ⇒ nil #text(str, x, y) ⇒ nil #text(str, a, b, c, d) ⇒ nil Also known as: drawText
Draws a text.
The parameters a, b, c, and d are determined by rectMode().
1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 |
# File 'lib/processing/graphics_context.rb', line 1582 def text(str, x, y, x2 = nil, y2 = nil) assertDrawing__ if x2 raise ArgumentError, "missing y2 parameter" unless y2 x, y, w, h = toXYWH__ @rectMode__, x, y, x2, y2 case @textAlignH__ when RIGHT then x += w - @painter__.font.width(str) when CENTER then x += (w - @painter__.font.width(str)) / 2 end case @textAlignV__ when BOTTOM then y += h - @painter__.font.height when CENTER then y += (h - @painter__.font.height) / 2 else end else y -= @painter__.font.ascent end @painter__.text str, x, y nil end |
#textAlign(horizontal, vertical = BASELINE) ⇒ nil
Sets the alignment for drawing text.
1145 1146 1147 1148 1149 |
# File 'lib/processing/graphics_context.rb', line 1145 def textAlign(horizontal, vertical = BASELINE) @textAlignH__ = horizontal @textAlignV__ = vertical nil end |
#textAscent ⇒ Numeric
Returns ascent of the current font at its current size.
1120 1121 1122 |
# File 'lib/processing/graphics_context.rb', line 1120 def textAscent() @painter__.font.ascent end |
#textDescent ⇒ Numeric
Returns descent of the current font at its current size.
1131 1132 1133 |
# File 'lib/processing/graphics_context.rb', line 1131 def textDescent() @painter__.font.descent end |
#textFont ⇒ Font #textFont(font) ⇒ Font #textFont(name) ⇒ Font #textFont(font, size) ⇒ Font #textFont(name, size) ⇒ Font
Sets text font. (Passing a font name as the first parameter is deprecated)
1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 |
# File 'lib/processing/graphics_context.rb', line 1072 def textFont(font = nil, size = nil) if font != nil || size != nil size = FONT_SIZE_MAX__ if size && size > FONT_SIZE_MAX__ if font.nil? || font.kind_of?(String) font = createFont font, size elsif size font.setSize__ size end @painter__.font = font.getInternal__ @textFont__ = font end @textFont__ end |
#textLeading ⇒ Numeric #textLeading(leading) ⇒ Numeric
Sets the spacing between lines of text in units of pixels.
1163 1164 1165 1166 |
# File 'lib/processing/graphics_context.rb', line 1163 def textLeading(leading = nil) @painter__.line_height = leading if leading @painter__.line_height end |
#textSize(size) ⇒ nil
Sets text size.
1095 1096 1097 1098 |
# File 'lib/processing/graphics_context.rb', line 1095 def textSize(size) textFont @textFont__, size nil end |
#texture(image) ⇒ nil
Sets texture.
1177 1178 1179 1180 |
# File 'lib/processing/graphics_context.rb', line 1177 def texture(image) @painter__.texture image&.getInternal__ nil end |
#textureMode(mode) ⇒ nil
Sets the coordinate space for texture mapping.
1200 1201 1202 1203 |
# File 'lib/processing/graphics_context.rb', line 1200 def textureMode(mode) @painter__.texcoord_mode = mode nil end |
#textureWrap(wrap) ⇒ nil
Sets the texture wrapping mode.
1214 1215 1216 1217 |
# File 'lib/processing/graphics_context.rb', line 1214 def textureWrap(wrap) @painter__.texcoord_wrap = wrap nil end |
#textWidth(str) ⇒ Numeric
Returns the width of the text.
1109 1110 1111 |
# File 'lib/processing/graphics_context.rb', line 1109 def textWidth(str) @painter__.font.width str end |
#tint(rgb) ⇒ nil #tint(rgb, alpha) ⇒ nil #tint(gray) ⇒ nil #tint(gray, alpha) ⇒ nil #tint(r, g, b) ⇒ nil #tint(r, g, b, alpha) ⇒ nil
Sets fill color for drawing images.
1002 1003 1004 1005 |
# File 'lib/processing/graphics_context.rb', line 1002 def tint(*args) @tint__ = args nil end |
#translate(x, y) ⇒ nil #translate(x, y, z) ⇒ nil
Applies translation matrix to current transformation matrix.
1941 1942 1943 1944 1945 |
# File 'lib/processing/graphics_context.rb', line 1941 def translate(x, y, z = 0) assertDrawing__ @painter__.translate x, y, z nil end |
#triangle(x1, y1, x2, y2, x3, y3) ⇒ nil Also known as: drawTriangle
Draws a triangle.
1477 1478 1479 1480 1481 |
# File 'lib/processing/graphics_context.rb', line 1477 def triangle(x1, y1, x2, y2, x3, y3) assertDrawing__ @painter__.line x1, y1, x2, y2, x3, y3, loop: true nil end |
#updatePixels(&block) ⇒ nil
Update the image pixels with the ‘pixels’ array.
1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 |
# File 'lib/processing/graphics_context.rb', line 1888 def updatePixels(&block) return if !block && !@pixels__ if block loadPixels block.call pixels end getInternal__.tap do |img| img.pixels = @pixels__ img.paint {} # update texture and set modifiied end @pixels__ = nil end |
#vertex(x, y) ⇒ nil #vertex(x, y, u, v) ⇒ nil
Append vertex for shape polygon.
1768 1769 1770 1771 |
# File 'lib/processing/graphics_context.rb', line 1768 def vertex(x, y, u = nil, v = nil) (@drawingShape__ or raise "vertex() must be called after beginShape()") .vertex x, y, u, v end |
#width ⇒ Numeric
Returns the width of the graphics object.
419 420 421 |
# File 'lib/processing/graphics_context.rb', line 419 def width() getInternal__.width end |