Class: Processing::App

Inherits:
PApplet
  • Object
show all
Includes:
Math, MathTool, HelperMethods
Defined in:
lib/jruby_art/app.rb

Overview

All sketches extend this class

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HelperMethods

#blend_color, #buffer, #color, #dist, #find_method, #frame_rate, #grid, #java_self, #kamera, #key, #key_pressed?, #lerp_color, #load_strings, #max, #min, #mouse_pressed?, #proxy_java_fields, #save_strings, #sketch_path, #thread

Constructor Details

#initialize(options = {}) ⇒ App

Since processing-3.0 you should prefer setting the sketch width and height and renderer using the size method in the settings loop of the sketch (as with vanilla processing) but is hidden see created java. Options are no longer relevant, define post_initialize method to use custom options (see Sandi Metz POODR)



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/jruby_art/app.rb', line 99

def initialize(options = {})
  super()
  post_initialize(options) # for anyone wishing to pass options
  $app = self
  proxy_java_fields
  mix_proxy_into_inner_classes
  java.lang.Thread.default_uncaught_exception_handler = proc do |_thread_, exception|
    puts(exception.class.to_s)
    puts(exception.message)
    puts(exception.backtrace.map { |trace| "\t#{trace}" })
    close
  end
  # NB: this is the processing runSketch() method as used by processing.py
  run_sketch
end

Class Attribute Details

.library_loaderObject

Handy getters and setters on the class go here:



61
62
63
# File 'lib/jruby_art/app.rb', line 61

def library_loader
  @library_loader
end

.sketch_classObject

Handy getters and setters on the class go here:



61
62
63
# File 'lib/jruby_art/app.rb', line 61

def sketch_class
  @sketch_class
end

Class Method Details

.inherited(subclass) ⇒ Object

Keep track of what inherits from the Processing::App, because we’re going to want to instantiate one.



54
55
56
57
# File 'lib/jruby_art/app.rb', line 54

def self.inherited(subclass)
  super(subclass)
  @sketch_class = subclass
end

.library_loaded?(library_name) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/jruby_art/app.rb', line 69

def library_loaded?(library_name)
  library_loader.library_loaded?(library_name)
end

.load_java_library(*args) ⇒ Object



77
78
79
# File 'lib/jruby_art/app.rb', line 77

def load_java_library(*args)
  library_loader.load_java_library(*args)
end

.load_libraries(*args) ⇒ Object Also known as: load_library



63
64
65
66
# File 'lib/jruby_art/app.rb', line 63

def load_libraries(*args)
  library_loader ||= LibraryLoader.new
  library_loader.load_library(*args)
end

.load_ruby_library(*args) ⇒ Object



73
74
75
# File 'lib/jruby_art/app.rb', line 73

def load_ruby_library(*args)
  library_loader.load_ruby_library(*args)
end

.method_added(method_name) ⇒ Object

When certain special methods get added to the sketch, we need to let Processing call them by their expected Java names.



83
84
85
86
# File 'lib/jruby_art/app.rb', line 83

def method_added(method_name) #:nodoc:
  return unless METHODS_TO_ALIAS.key?(method_name)
  alias_method METHODS_TO_ALIAS[method_name], method_name
end

Instance Method Details

#closeObject

Close and shutter a running sketch. But don’t exit. way of disposing of sketch window…



147
148
149
150
151
152
# File 'lib/jruby_art/app.rb', line 147

def close
  control_panel.remove if respond_to?(:control_panel)
  surface.stopThread
  surface.setVisible(false) if surface.isStopped()
  dispose
end

#exitObject



154
155
156
157
# File 'lib/jruby_art/app.rb', line 154

def exit
  control_panel.remove if respond_to?(:control_panel)
  super()
end

#library_loaded?(library_name) ⇒ Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/jruby_art/app.rb', line 89

def library_loaded?(library_name)
  self.class.library_loaded?(library_name)
end

#on_top(arg = true) ⇒ Object



136
137
138
# File 'lib/jruby_art/app.rb', line 136

def on_top(arg = true)
  surface.set_always_on_top(arg)
end

#post_initialize(_args) ⇒ Object



140
141
142
# File 'lib/jruby_art/app.rb', line 140

def post_initialize(_args)
  nil
end

#resizable(arg = true) ⇒ Object



132
133
134
# File 'lib/jruby_art/app.rb', line 132

def resizable(arg = true)
  surface.set_resizable(arg)
end

#size(*args) ⇒ Object



115
116
117
118
119
120
121
122
# File 'lib/jruby_art/app.rb', line 115

def size(*args)
  w, h, mode = *args
  @width ||= w
  @height ||= h
  @render_mode ||= mode
  import_opengl if /opengl/ =~ mode
  super(*args)
end

#sketch_classObject



48
49
50
# File 'lib/jruby_art/app.rb', line 48

def sketch_class
  self.class.sketch_class
end

#sketch_size(x, y) ⇒ Object



128
129
130
# File 'lib/jruby_art/app.rb', line 128

def sketch_size(x, y)
  surface.set_size(x, y)
end

#sketch_title(title) ⇒ Object



124
125
126
# File 'lib/jruby_art/app.rb', line 124

def sketch_title(title)
  surface.set_title(title)
end