rubysketch 0.3.10 → 0.3.11
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.
- checksums.yaml +4 -4
- data/ChangeLog.md +5 -0
- data/README.md +9 -1
- data/VERSION +1 -1
- data/lib/rubysketch/processing.rb +68 -29
- data/lib/rubysketch/window.rb +50 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9d6862ce564503738c10d66ea1b76000d57ffa7100a0e47bf0b96c8083e02dd
|
4
|
+
data.tar.gz: 44825a802755cd03c1efa129ec0a0349872f330795433839f2232ef2b9b83a24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed6efaf98ea1b9e816d337ebf82d57516f3f2fb30877d693f2a18c42d24d85eaf981fa804c1f1761ec0bd86ec73e8a5f88fcb50103c5bd5979e46bf58a2c0162
|
7
|
+
data.tar.gz: 5d8d25591fdbc056dc0f793d5a8c93cae50547731e10128c6ec27e9432491f238d5e547f9cc74701beb85903a39114da045cd320cf1903f235afa7975bef42ca
|
data/ChangeLog.md
CHANGED
data/README.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.11
|
@@ -913,10 +913,7 @@ module RubySketch
|
|
913
913
|
#
|
914
914
|
SQUARE = :square
|
915
915
|
|
916
|
-
def
|
917
|
-
@painter__ = painter
|
918
|
-
@painter__.miter_limit = 10
|
919
|
-
|
916
|
+
def init__ (image, painter)
|
920
917
|
@drawing__ = false
|
921
918
|
@hsbColor__ = false
|
922
919
|
@colorMaxes__ = [1.0] * 4
|
@@ -929,6 +926,8 @@ module RubySketch
|
|
929
926
|
@matrixStack__ = []
|
930
927
|
@styleStack__ = []
|
931
928
|
|
929
|
+
updateCanvas__ image, painter
|
930
|
+
|
932
931
|
colorMode RGB, 255
|
933
932
|
angleMode RADIANS
|
934
933
|
rectMode CORNER
|
@@ -940,6 +939,10 @@ module RubySketch
|
|
940
939
|
stroke 0
|
941
940
|
end
|
942
941
|
|
942
|
+
def updateCanvas__ (image, painter)
|
943
|
+
@image__, @painter__ = image, painter
|
944
|
+
end
|
945
|
+
|
943
946
|
# @private
|
944
947
|
def beginDraw__ ()
|
945
948
|
@matrixStack__.clear
|
@@ -1712,8 +1715,8 @@ module RubySketch
|
|
1712
1715
|
# Initialize graphics object.
|
1713
1716
|
#
|
1714
1717
|
def initialize (width, height)
|
1715
|
-
|
1716
|
-
|
1718
|
+
image = Rays::Image.new width, height
|
1719
|
+
init__ image, image.painter
|
1717
1720
|
end
|
1718
1721
|
|
1719
1722
|
# Start drawing.
|
@@ -1762,14 +1765,13 @@ module RubySketch
|
|
1762
1765
|
@@context__ = self
|
1763
1766
|
|
1764
1767
|
@window__ = window
|
1765
|
-
@
|
1766
|
-
setup__ @window__.canvas_painter.paint {background 0.8}
|
1768
|
+
init__ @window__.canvas, @window__.canvas_painter.paint {background 0.8}
|
1767
1769
|
|
1768
1770
|
@loop__ = true
|
1769
1771
|
@redraw__ = false
|
1770
1772
|
@frameCount__ = 0
|
1771
1773
|
@mousePos__ =
|
1772
|
-
@mousePrevPos__ =
|
1774
|
+
@mousePrevPos__ = [0, 0]
|
1773
1775
|
@mousePressed__ = false
|
1774
1776
|
@touches__ = []
|
1775
1777
|
|
@@ -1777,8 +1779,7 @@ module RubySketch
|
|
1777
1779
|
@window__.after_draw = proc {endDraw__}
|
1778
1780
|
|
1779
1781
|
drawFrame = -> {
|
1780
|
-
@
|
1781
|
-
@painter__ = @window__.canvas_painter
|
1782
|
+
updateCanvas__ @window__.canvas, @window__.canvas_painter
|
1782
1783
|
begin
|
1783
1784
|
push
|
1784
1785
|
@drawBlock__.call if @drawBlock__
|
@@ -1797,9 +1798,11 @@ module RubySketch
|
|
1797
1798
|
end
|
1798
1799
|
|
1799
1800
|
updatePointerStates = -> event, pressed = nil {
|
1800
|
-
@mousePos__ = event.pos
|
1801
|
+
@mousePos__ = @window__.to_canvas_coord event.pos.x, event.pos.y
|
1801
1802
|
@mousePressed__ = pressed if pressed != nil
|
1802
|
-
@touches__ = event.positions.map {|pos|
|
1803
|
+
@touches__ = event.positions.map {|pos|
|
1804
|
+
Touch.new *@window__.to_canvas_coord(pos.x, pos.y)
|
1805
|
+
}
|
1803
1806
|
}
|
1804
1807
|
|
1805
1808
|
@window__.pointer_down = proc do |e|
|
@@ -1877,15 +1880,59 @@ module RubySketch
|
|
1877
1880
|
nil
|
1878
1881
|
end
|
1879
1882
|
|
1883
|
+
# Changes canvas size.
|
1884
|
+
#
|
1885
|
+
# @param width [Integer] new width
|
1886
|
+
# @param height [Integer] new height
|
1887
|
+
#
|
1888
|
+
# @return [nil] nil
|
1889
|
+
#
|
1890
|
+
def size (width, height)
|
1891
|
+
resizeCanvas__ :size, width, height, pixelDensity
|
1892
|
+
nil
|
1893
|
+
end
|
1894
|
+
|
1895
|
+
# Changes canvas size.
|
1896
|
+
#
|
1897
|
+
# @param width [Integer] new width
|
1898
|
+
# @param height [Integer] new height
|
1899
|
+
#
|
1900
|
+
# @return [nil] nil
|
1901
|
+
#
|
1902
|
+
def createCanvas (width, height)
|
1903
|
+
resizeCanvas__ :createCanvas, width, height, pixelDensity
|
1904
|
+
nil
|
1905
|
+
end
|
1906
|
+
|
1907
|
+
# Changes and returns canvas pixel density.
|
1908
|
+
#
|
1909
|
+
# @param density [Numeric] new pixel density
|
1910
|
+
#
|
1911
|
+
# @return [Numeric] current pixel density
|
1912
|
+
#
|
1913
|
+
def pixelDensity (density = nil)
|
1914
|
+
resizeCanvas__ :pixelDensity, width, height, density if density
|
1915
|
+
@painter__.pixel_density
|
1916
|
+
end
|
1917
|
+
|
1880
1918
|
# @private
|
1881
|
-
|
1882
|
-
raise '
|
1919
|
+
def resizeCanvas__ (name, width, height, pixelDensity)
|
1920
|
+
raise '#{name}() must be called on startup or setup block' if @started__
|
1883
1921
|
|
1884
1922
|
@painter__.__send__ :end_paint
|
1885
|
-
@window__.__send__ :
|
1923
|
+
@window__.__send__ :resize_canvas, width, height, pixelDensity
|
1924
|
+
updateCanvas__ @window__.canvas, @window__.canvas_painter
|
1886
1925
|
@painter__.__send__ :begin_paint
|
1887
1926
|
|
1888
|
-
@
|
1927
|
+
@window__.auto_resize = false
|
1928
|
+
end
|
1929
|
+
|
1930
|
+
# Returns pixel density of display.
|
1931
|
+
#
|
1932
|
+
# @return [Numeric] pixel density
|
1933
|
+
#
|
1934
|
+
def displayDensity ()
|
1935
|
+
@window__.painter.pixel_density
|
1889
1936
|
end
|
1890
1937
|
|
1891
1938
|
def windowWidth ()
|
@@ -1912,20 +1959,12 @@ module RubySketch
|
|
1912
1959
|
@window__.event.fps
|
1913
1960
|
end
|
1914
1961
|
|
1915
|
-
# Returns pixel density
|
1916
|
-
#
|
1917
|
-
# @return [Numeric] pixel density
|
1918
|
-
#
|
1919
|
-
def displayDensity ()
|
1920
|
-
@painter__.pixel_density
|
1921
|
-
end
|
1922
|
-
|
1923
1962
|
# Returns mouse x position
|
1924
1963
|
#
|
1925
1964
|
# @return [Numeric] horizontal position of mouse
|
1926
1965
|
#
|
1927
1966
|
def mouseX ()
|
1928
|
-
@mousePos__
|
1967
|
+
@mousePos__[0]
|
1929
1968
|
end
|
1930
1969
|
|
1931
1970
|
# Returns mouse y position
|
@@ -1933,7 +1972,7 @@ module RubySketch
|
|
1933
1972
|
# @return [Numeric] vertical position of mouse
|
1934
1973
|
#
|
1935
1974
|
def mouseY ()
|
1936
|
-
@mousePos__
|
1975
|
+
@mousePos__[1]
|
1937
1976
|
end
|
1938
1977
|
|
1939
1978
|
# Returns mouse x position in previous frame
|
@@ -1941,7 +1980,7 @@ module RubySketch
|
|
1941
1980
|
# @return [Numeric] horizontal position of mouse
|
1942
1981
|
#
|
1943
1982
|
def pmouseX ()
|
1944
|
-
@mousePrevPos__
|
1983
|
+
@mousePrevPos__[0]
|
1945
1984
|
end
|
1946
1985
|
|
1947
1986
|
# Returns mouse y position in previous frame
|
@@ -1949,7 +1988,7 @@ module RubySketch
|
|
1949
1988
|
# @return [Numeric] vertical position of mouse
|
1950
1989
|
#
|
1951
1990
|
def pmouseY ()
|
1952
|
-
@mousePrevPos__
|
1991
|
+
@mousePrevPos__[1]
|
1953
1992
|
end
|
1954
1993
|
|
1955
1994
|
# Returns array of touches
|
data/lib/rubysketch/window.rb
CHANGED
@@ -16,7 +16,8 @@ module RubySketch
|
|
16
16
|
@auto_resize = true
|
17
17
|
@error = nil
|
18
18
|
|
19
|
-
|
19
|
+
painter.miter_limit = 10
|
20
|
+
resize_canvas 1, 1
|
20
21
|
|
21
22
|
super *args, size: [width, height], &block
|
22
23
|
end
|
@@ -43,7 +44,9 @@ module RubySketch
|
|
43
44
|
|
44
45
|
def on_draw (e)
|
45
46
|
draw_canvas {call_block @draw, e} if @draw
|
46
|
-
|
47
|
+
|
48
|
+
x, y, w, h = coord_converter
|
49
|
+
e.painter.image @canvas, x, y, @canvas.width * w, @canvas.height * h
|
47
50
|
end
|
48
51
|
|
49
52
|
def on_key (e)
|
@@ -64,27 +67,45 @@ module RubySketch
|
|
64
67
|
end
|
65
68
|
|
66
69
|
def on_resize (e)
|
67
|
-
|
70
|
+
resize_canvas e.width, e.height if @auto_resize
|
68
71
|
draw_canvas {call_block @resize, e} if @resize
|
69
72
|
end
|
70
73
|
|
74
|
+
def to_canvas_coord (x, y)
|
75
|
+
xx, yy, ww, hh = coord_converter
|
76
|
+
return (x - xx) / ww, (y - yy) / hh
|
77
|
+
end
|
78
|
+
|
71
79
|
private
|
72
80
|
|
73
|
-
def
|
74
|
-
return if width * height == 0
|
75
|
-
return if width == @canvas&.width && height == @canvas&.height
|
81
|
+
def resize_canvas (width, height, pixel_density = nil)
|
82
|
+
return nil if width * height == 0
|
76
83
|
|
77
|
-
|
78
|
-
|
84
|
+
unless width == @canvas&.width &&
|
85
|
+
height == @canvas&.height &&
|
86
|
+
pixel_density == @canvas_painter&.pixel_density
|
79
87
|
|
80
|
-
|
81
|
-
|
82
|
-
@canvas_painter = @canvas.painter
|
88
|
+
old_canvas = @canvas
|
89
|
+
old_painter = @canvas_painter
|
83
90
|
|
84
|
-
|
85
|
-
|
86
|
-
|
91
|
+
cs = old_canvas&.color_space || Rays::RGBA
|
92
|
+
pd = pixel_density || painter.pixel_density
|
93
|
+
@canvas = Rays::Image.new width, height, cs, pd
|
94
|
+
@canvas_painter = @canvas.painter
|
95
|
+
|
96
|
+
if old_canvas
|
97
|
+
@canvas_painter.paint {image old_canvas}
|
98
|
+
copy_painter_attributes old_painter, @canvas_painter
|
99
|
+
end
|
100
|
+
|
101
|
+
resize_window width, height
|
87
102
|
end
|
103
|
+
|
104
|
+
@canvas_painter
|
105
|
+
end
|
106
|
+
|
107
|
+
def resize_window (width, height)
|
108
|
+
size width, height
|
88
109
|
end
|
89
110
|
|
90
111
|
def copy_painter_attributes (from, to)
|
@@ -97,6 +118,21 @@ module RubySketch
|
|
97
118
|
to.font = from.font
|
98
119
|
end
|
99
120
|
|
121
|
+
def coord_converter ()
|
122
|
+
ww, wh = width.to_f, height.to_f
|
123
|
+
cw, ch = @canvas.width.to_f, @canvas.height.to_f
|
124
|
+
return [0, 0, 1, 1] if ww == 0 || wh == 0 || cw == 0 || ch == 0
|
125
|
+
|
126
|
+
wratio, cratio = ww / wh, cw / ch
|
127
|
+
if wratio >= cratio
|
128
|
+
scaled_w = wh * cratio
|
129
|
+
return (ww - scaled_w) / 2, 0, scaled_w / cw, wh / ch
|
130
|
+
else
|
131
|
+
scaled_h = ww / cratio
|
132
|
+
return 0, (wh - scaled_h) / 2, ww / cw, scaled_h / ch
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
100
136
|
def draw_canvas (&block)
|
101
137
|
begin_draw
|
102
138
|
block.call
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysketch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reflexion
|