Understanding A JRubyArt Sketch

Ruby-processing and now JRubyArt have both taken advantage of ruby language features to create a DSL like experience when coding processing in ruby, to the extent that

background 0

is a valid sketch (ie you can write static sketches in ruby). Like vanilla processing we wrap this code before it is run but unlike vanilla processing we don’t use a preprocessor.

What you can/should write (like a vanilla processing sketch) avoids much boilerplate.

bare.rb

# load_library :my_library # jruby_art method
# include_package 'org.package' # JRuby method
def settings
  size 200, 200 # size 'mode' or fullscreen 'mode' goes here
  # pixel_density(2) # only for HiDpi screens
  # see https://processing.org/reference/pixelDensity_.html
  # smooth # useless unless you enter a figure 2, 3, 4 or 8
  # for default renderer default is 3 for P2D and P3D it is 2
  # see https://processing.org/reference/smooth_.html
end

def setup
  sketch_title 'Bare Sketch' # jruby_art method
end

def draw
  # draw loop
end

When you run/watch this sketch using:-

k9 -r bare.rb # run
# or
k9 -w bare.rb # watch

It gets wrapped for you see below:-

# frozen_string_literal: false
require 'jruby_art'
module Processing
  class Sketch < App # App is a subclass of processing.core.PApplet

    # begin bare sketch ###########################################
    # load_library :my_library # jruby_art method
    # include_package 'org.package' # JRuby method
    def settings
      size 200, 200 # since processing-3.0 size 'mode' go here
    end

    def setup
      sketch_title 'Bare Sketch' # jruby_art method
    end

    def draw
      # draw loop
    end    
    # end bare sketch ###########################################
  end
  Sketch.new
end

class_sketch.rb

An explicitly class wrapped sketch can actually be run directly with jruby, but you should prefer propane for that.

# frozen_string_literal: false
require 'jruby_art'

class MySketch < Processing::App
  # load_library :my_library # jruby_art method
  # include_package 'org.package' # JRuby method
  def settings
    size 200, 200 # since processing-3.0 size 'mode' go here
  end

  def setup
    sketch_title 'Explicit JRubyArt Sketch' # jruby_art method
  end

  def draw
    # draw loop
  end
end

MySketch.new

See more at JRubyArt github pages