rubysketch 0.3.21 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,205 +0,0 @@
1
- module RubySketch
2
-
3
-
4
- class Window < Reflex::Window
5
-
6
- class CanvasView < Reflex::View
7
- def on_update(e)
8
- window.on_canvas_update e
9
- end
10
-
11
- def on_draw(e)
12
- window.on_canvas_draw e
13
- end
14
-
15
- def on_pointer(e)
16
- window.on_canvas_pointer e
17
- end
18
-
19
- def on_resize(e)
20
- window.on_canvas_resize e
21
- end
22
- end
23
-
24
- attr_accessor :setup, :update, :draw, :before_draw, :after_draw, :resize,
25
- :key_down, :key_up,
26
- :pointer_down, :pointer_up, :pointer_move, :pointer_drag,
27
- :motion
28
-
29
- attr_accessor :auto_resize
30
-
31
- attr_reader :canvas_image, :canvas_painter
32
-
33
- def initialize(width = 500, height = 500, *args, **kwargs, &block)
34
- RubySketch.instance_variable_set :@window, self
35
-
36
- @canvas_image =
37
- @canvas_painter = nil
38
- @events = []
39
- @auto_resize = true
40
- @error = nil
41
-
42
- painter.miter_limit = 10
43
- resize_canvas 1, 1
44
-
45
- @canvas_view = add CanvasView.new name: :canvas
46
-
47
- super(*args, size: [width, height], **kwargs, &block)
48
- end
49
-
50
- def start(&block)
51
- draw_canvas do
52
- block.call if block
53
- on_setup
54
- end
55
- end
56
-
57
- def event()
58
- @events.last
59
- end
60
-
61
- def on_setup()
62
- call_block @setup, nil
63
- end
64
-
65
- def on_resize(e)
66
- on_canvas_resize e
67
- end
68
-
69
- def on_draw(e)
70
- update_canvas_view
71
- end
72
-
73
- def on_key(e)
74
- block = case e.action
75
- when :down then @key_down
76
- when :up then @key_up
77
- end
78
- draw_canvas {call_block block, e} if block
79
- end
80
-
81
- def on_motion(e)
82
- draw_canvas {call_block @motion, e} if @motion
83
- end
84
-
85
- def on_canvas_update(e)
86
- call_block @update, e
87
- @canvas_view.redraw
88
- end
89
-
90
- def on_canvas_draw(e)
91
- draw_canvas {call_block @draw, e} if @draw
92
- e.painter.image @canvas_image
93
- end
94
-
95
- def on_canvas_pointer(e)
96
- block = case e.action
97
- when :down then @pointer_down
98
- when :up, :cancel then @pointer_up
99
- when :move then e.drag? ? @pointer_drag : @pointer_move
100
- end
101
- draw_canvas {call_block block, e} if block
102
- end
103
-
104
- def on_canvas_resize(e)
105
- resize_canvas e.width, e.height if @auto_resize
106
- draw_canvas {call_block @resize, e} if @resize
107
- end
108
-
109
- private
110
-
111
- def resize_canvas(width, height, pixel_density = nil)
112
- return nil if width * height == 0
113
-
114
- unless width == @canvas_image&.width &&
115
- height == @canvas_image&.height &&
116
- pixel_density == @canvas_painter&.pixel_density
117
-
118
- old_image = @canvas_image
119
- old_painter = @canvas_painter
120
- cs = old_image&.color_space || Rays::RGBA
121
- pd = pixel_density ||
122
- old_painter&.pixel_density ||
123
- painter .pixel_density
124
-
125
- @canvas_image = Rays::Image.new width, height, cs, pd
126
- @canvas_painter = @canvas_image.painter
127
-
128
- if old_image
129
- @canvas_painter.paint {image old_image}
130
- copy_painter_attributes old_painter, @canvas_painter
131
- end
132
-
133
- resize_window width, height
134
- GC.start
135
- end
136
-
137
- @canvas_painter
138
- end
139
-
140
- def copy_painter_attributes(from, to)
141
- to.fill = from.fill
142
- to.stroke = from.stroke
143
- to.stroke_width = from.stroke_width
144
- to.stroke_cap = from.stroke_cap
145
- to.stroke_join = from.stroke_join
146
- to.miter_limit = from.miter_limit
147
- to.font = from.font
148
- end
149
-
150
- def resize_window(width, height)
151
- size width, height
152
- end
153
-
154
- def update_canvas_view()
155
- scrollx, scrolly, zoom = get_scroll_and_zoom
156
- @canvas_view.scroll_to scrollx, scrolly
157
- @canvas_view.zoom zoom
158
- end
159
-
160
- def get_scroll_and_zoom()
161
- ww, wh = width.to_f, height.to_f
162
- cw, ch = @canvas_image.width.to_f, @canvas_image.height.to_f
163
- return [0, 0, 1] if ww == 0 || wh == 0 || cw == 0 || ch == 0
164
-
165
- wratio, cratio = ww / wh, cw / ch
166
- if wratio >= cratio
167
- scaled_w = wh * cratio
168
- return (ww - scaled_w) / 2, 0, scaled_w / cw
169
- else
170
- scaled_h = ww / cratio
171
- return 0, (wh - scaled_h) / 2, ww / cw
172
- end
173
- end
174
-
175
- def draw_canvas(&block)
176
- begin_draw
177
- block.call
178
- ensure
179
- end_draw
180
- end
181
-
182
- def begin_draw()
183
- @canvas_painter.__send__ :begin_paint
184
- @before_draw&.call
185
- end
186
-
187
- def end_draw()
188
- @after_draw&.call
189
- @canvas_painter.__send__ :end_paint
190
- end
191
-
192
- def call_block(block, event, *args)
193
- @events.push event
194
- block.call event, *args if block && !@error
195
- rescue Exception => e
196
- @error = e
197
- $stderr.puts e.full_message
198
- ensure
199
- @events.pop
200
- end
201
-
202
- end# Window
203
-
204
-
205
- end# RubySketch
@@ -1,11 +0,0 @@
1
- require 'rubysketch'
2
-
3
-
4
- def (RubySketch::GLSL).run(
5
- shader_source,
6
- title: 'RubySketch',
7
- width: 500, height: 500)
8
- w = RubySketch::Window.new(title: title, w: width, h: height) {start}
9
- RubySketch::GLSL::Context.new w, shader_source
10
- at_exit {RubySketch::App.new {w.show}.start unless $!}
11
- end
@@ -1,25 +0,0 @@
1
- require 'rubysketch'
2
-
3
-
4
- begin
5
- window = RubySketch::Window.new {start}
6
- context = RubySketch::Processing::Context.new window
7
-
8
- (context.methods - Object.instance_methods).each do |method|
9
- define_method method do |*args, **kwargs, &block|
10
- context.__send__ method, *args, **kwargs, &block
11
- end
12
- end
13
-
14
- context.class.constants.each do |const|
15
- self.class.const_set const, context.class.const_get(const)
16
- end
17
-
18
- window.__send__ :begin_draw
19
- at_exit do
20
- window.__send__ :end_draw
21
- RubySketch::App.new {window.show}.start unless $!
22
- end
23
-
24
- RUBYSKETCH_WINDOW = window
25
- end
data/src/RubySketch.mm DELETED
@@ -1,55 +0,0 @@
1
- #import <CRuby.h>
2
- #import "RubySketch.h"
3
- #include "../src/ios/view_controller.h"
4
-
5
-
6
- static ReflexViewController* active_reflex_view_controller = nil;
7
-
8
- static ReflexViewController*
9
- ReflexViewController_create()
10
- {
11
- return active_reflex_view_controller;
12
- }
13
-
14
- static void
15
- ReflexViewController_show (UIViewController*, ReflexViewController*)
16
- {
17
- }
18
-
19
-
20
- @implementation RubySketch
21
-
22
- + (void) setup
23
- {
24
- static BOOL done = NO;
25
- if (done) return;
26
- done = YES;
27
-
28
- [CRuby addLibrary:@"RubySketch" bundle:[NSBundle bundleForClass:RubySketch.class]];
29
-
30
- ReflexViewController_set_create_fun(ReflexViewController_create);
31
- ReflexViewController_set_show_fun(ReflexViewController_show);
32
- }
33
-
34
- + (void) start: (NSString*) path
35
- {
36
- [CRuby evaluate:[NSString stringWithFormat:@
37
- "raise 'already started' unless require 'rubysketch-processing'\n"
38
- "load '%@'\n"
39
- "RUBYSKETCH_WINDOW.__send__ :end_draw\n"
40
- "RUBYSKETCH_WINDOW.show",
41
- path
42
- ]];
43
- }
44
-
45
- + (void) setActiveReflexViewController: (id) reflexViewController
46
- {
47
- active_reflex_view_controller = reflexViewController;
48
- }
49
-
50
- + (void) resetActiveReflexViewController
51
- {
52
- active_reflex_view_controller = nil;
53
- }
54
-
55
- @end
@@ -1,34 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
-
4
- require_relative '../helper'
5
-
6
-
7
- class TestProcessingUtility < Test::Unit::TestCase
8
-
9
- def context()
10
- RubySketch::Processing::Context.new RubySketch::Window.new
11
- end
12
-
13
- def test_random()
14
- c = context
15
-
16
- assert_equal Float, c.random(1).class
17
- assert_equal Float, c.random(1.0).class
18
- assert_equal Symbol, c.random((:a..:z).to_a).class
19
-
20
- assert_not_equal c.random, c.random
21
-
22
- 10000.times do
23
- n = c.random
24
- assert 0 <= n && n < 1
25
-
26
- n = c.random 1
27
- assert 0 <= n && n < 1
28
-
29
- n = c.random 1, 2
30
- assert 1.0 <= n && n < 2.0
31
- end
32
- end
33
-
34
- end# TestProcessingUtility