rubysketch 0.3.21 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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