Class: Processing::App

Inherits:
PApplet
  • Object
show all
Includes:
FastNoise, Math, MathTool, HelperMethods, Render
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, #hsb_color, #int_to_ruby_colors, #java_self, #kamera, #key, #key_pressed?, #lerp_color, #load_strings, #max, #min, #mouse_pressed?, #p52ruby, #perspektiv, #proxy_java_fields, #save_strings, #thread, #web_to_color_array

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)



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/jruby_art/app.rb', line 106

def initialize(options = {})
  super()
  Processing.app = self
  post_initialize(options)
  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
  @surface = get_surface
  # NB: this is the processing runSketch() method as used by processing.py
  run_sketch
end

Class Attribute Details

.library_loaderObject (readonly)

Handy getters and setters on the class go here:



67
68
69
# File 'lib/jruby_art/app.rb', line 67

def library_loader
  @library_loader
end

.sketch_classObject (readonly)

Handy getters and setters on the class go here:



67
68
69
# File 'lib/jruby_art/app.rb', line 67

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.



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

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

.library_loaded?(library_name) ⇒ Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/jruby_art/app.rb', line 75

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

.load_java_library(*args) ⇒ Object



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

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

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



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

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

.load_ruby_library(*args) ⇒ Object



79
80
81
# File 'lib/jruby_art/app.rb', line 79

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.



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

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…



167
168
169
170
171
172
173
# File 'lib/jruby_art/app.rb', line 167

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

#data_path(dat) ⇒ Object



142
143
144
145
146
# File 'lib/jruby_art/app.rb', line 142

def data_path(dat)
  dat_root = File.join(SKETCH_ROOT, 'data')
  Dir.mkdir(dat_root) unless File.exist?(dat_root)
  File.join(dat_root, dat)
end

#exitObject



175
176
177
178
# File 'lib/jruby_art/app.rb', line 175

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

#library_loaded?(library_name) ⇒ Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/jruby_art/app.rb', line 96

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

#on_top(arg = true) ⇒ Object



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

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

#post_initialize(_args) ⇒ Object



160
161
162
# File 'lib/jruby_art/app.rb', line 160

def post_initialize(_args)
  nil
end

#resizable(arg = true) ⇒ Object



152
153
154
# File 'lib/jruby_art/app.rb', line 152

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

#size(*args) ⇒ Object



123
124
125
126
127
128
129
130
# File 'lib/jruby_art/app.rb', line 123

def size(*args)
  width, height, mode = *args
  @width ||= width
  @height ||= height
  @render_mode ||= mode
  import_opengl if /opengl/.match?(mode)
  super(*args)
end

#sketch_classObject



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

def sketch_class
  self.class.sketch_class
end

#sketch_path(spath = '') ⇒ Object



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

def sketch_path(spath = '')
  return super() if spath.empty?

  super(spath)
end

#sketch_size(x, y) ⇒ Object



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

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

#sketch_title(title) ⇒ Object



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

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