glimmer-dsl-libui 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/README.md +684 -215
- data/VERSION +1 -1
- data/examples/area_gallery.rb +36 -38
- data/examples/area_gallery2.rb +90 -92
- data/examples/area_gallery3.rb +39 -41
- data/examples/area_gallery4.rb +96 -98
- data/examples/basic_area2.rb +1 -1
- data/examples/basic_transform.rb +27 -0
- data/examples/dynamic_area.rb +1 -1
- data/examples/histogram.rb +119 -0
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/libui/arc.rb +1 -1
- data/lib/glimmer/libui/area_proxy.rb +21 -11
- data/lib/glimmer/libui/box.rb +1 -1
- data/lib/glimmer/libui/color_button_proxy.rb +67 -15
- data/lib/glimmer/libui/control_proxy.rb +4 -12
- data/lib/glimmer/libui/form_proxy.rb +1 -1
- data/lib/glimmer/libui/grid_proxy.rb +1 -1
- data/lib/glimmer/libui/matrix_proxy.rb +145 -0
- data/lib/glimmer/libui/parent.rb +36 -0
- data/lib/glimmer/libui/path_proxy.rb +14 -17
- data/lib/glimmer/libui/shape.rb +8 -9
- data/lib/glimmer/libui/transformable.rb +72 -0
- data/lib/glimmer/libui/window_proxy.rb +8 -1
- data/lib/glimmer/libui.rb +50 -0
- data/lib/glimmer-dsl-libui.rb +1 -0
- metadata +8 -2
@@ -0,0 +1,72 @@
|
|
1
|
+
# Copyright (c) 2021 Andy Maleh
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
# a copy of this software and associated documentation files (the
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
# the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be
|
12
|
+
# included in all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
22
|
+
module Glimmer
|
23
|
+
module LibUI
|
24
|
+
# This is meant to be prepended (not included) because it changes behavior of instance draw method
|
25
|
+
# Adds transform property to controls/shapes
|
26
|
+
# Automatically applies transform property at the beginning of draw operation and undoes it at the end
|
27
|
+
# Stacks up with Parent module (must include Parent beforehand)
|
28
|
+
# Expects transformable to implement redraw method
|
29
|
+
module Transformable
|
30
|
+
def post_initialize_child(child, add_child: true)
|
31
|
+
if child.is_a?(MatrixProxy)
|
32
|
+
super(child, add_child: false)
|
33
|
+
self.transform = child if child.keyword == 'transform'
|
34
|
+
else
|
35
|
+
super(child, add_child: add_child)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Returns transform or sets it. Expects transformable to implement redraw method (delegating work to area).
|
40
|
+
def transform(matrix = nil)
|
41
|
+
if matrix.nil?
|
42
|
+
@transform
|
43
|
+
else
|
44
|
+
@transform = matrix
|
45
|
+
redraw
|
46
|
+
end
|
47
|
+
end
|
48
|
+
alias transform= transform
|
49
|
+
alias set_transform transform
|
50
|
+
|
51
|
+
# Apply transform matrix to coordinate system
|
52
|
+
def apply_transform(area_draw_params)
|
53
|
+
::LibUI.draw_transform(area_draw_params[:context], @transform.libui) unless @transform.nil?
|
54
|
+
end
|
55
|
+
|
56
|
+
# Inverse of apply_transform (applies inverse transformation to undo initial transformation)
|
57
|
+
def undo_transform(area_draw_params)
|
58
|
+
unless @transform.nil?
|
59
|
+
inverse_transform = @transform.clone
|
60
|
+
inverse_transform.invert
|
61
|
+
::LibUI.draw_transform(area_draw_params[:context], inverse_transform.libui)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def draw(area_draw_params)
|
66
|
+
apply_transform(area_draw_params)
|
67
|
+
super(area_draw_params)
|
68
|
+
undo_transform(area_draw_params)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -20,6 +20,7 @@
|
|
20
20
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
21
|
|
22
22
|
require 'glimmer/libui/control_proxy'
|
23
|
+
require 'glimmer/libui/area_proxy'
|
23
24
|
|
24
25
|
module Glimmer
|
25
26
|
module LibUI
|
@@ -33,6 +34,12 @@ module Glimmer
|
|
33
34
|
DEFAULT_HAS_MENUBAR = 1
|
34
35
|
|
35
36
|
def post_initialize_child(child)
|
37
|
+
if child.is_a?(AreaProxy)
|
38
|
+
vertical_box_parent = ControlProxy.create('vertical_box', self, [])
|
39
|
+
child.instance_variable_set(:@parent_proxy, vertical_box_parent)
|
40
|
+
vertical_box_parent.post_initialize_child(child)
|
41
|
+
child = vertical_box_parent
|
42
|
+
end
|
36
43
|
::LibUI.window_set_child(@libui, child.libui)
|
37
44
|
end
|
38
45
|
|
@@ -104,7 +111,7 @@ module Glimmer
|
|
104
111
|
construction_args[1] = DEFAULT_WIDTH if construction_args.size == 1
|
105
112
|
construction_args[2] = DEFAULT_HEIGHT if construction_args.size == 2
|
106
113
|
construction_args[3] = DEFAULT_HAS_MENUBAR if construction_args.size == 3
|
107
|
-
construction_args[3] =
|
114
|
+
construction_args[3] = Glimmer::LibUI.boolean_to_integer(construction_args[3]) if construction_args.size == 4 && (construction_args[3].is_a?(TrueClass) || construction_args[3].is_a?(FalseClass))
|
108
115
|
@libui = ControlProxy.new_control(@keyword, construction_args)
|
109
116
|
@libui.tap do
|
110
117
|
handle_listener('on_closing') do
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Copyright (c) 2021 Andy Maleh
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
# a copy of this software and associated documentation files (the
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
# the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be
|
12
|
+
# included in all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
22
|
+
module Glimmer
|
23
|
+
module LibUI
|
24
|
+
class << self
|
25
|
+
def integer_to_boolean(int, allow_nil: true)
|
26
|
+
int.nil? ? (allow_nil ? nil : false) : int == 1
|
27
|
+
end
|
28
|
+
|
29
|
+
def boolean_to_integer(bool, allow_nil: true)
|
30
|
+
bool.nil? ? (allow_nil ? nil : 0) : (bool ? 1 : 0)
|
31
|
+
end
|
32
|
+
|
33
|
+
def hex_to_rgb(value)
|
34
|
+
if value.is_a?(String)
|
35
|
+
value = "0x#{value}" if !value.start_with?('0x')
|
36
|
+
value = value.to_i(16)
|
37
|
+
end
|
38
|
+
if value.is_a?(Integer)
|
39
|
+
hex_value = value
|
40
|
+
value = {
|
41
|
+
r: ((hex_value >> 16) & 0xFF),
|
42
|
+
g: ((hex_value >> 8) & 0xFF),
|
43
|
+
b: (hex_value & 0xFF),
|
44
|
+
}
|
45
|
+
end
|
46
|
+
value
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/glimmer-dsl-libui.rb
CHANGED
@@ -34,6 +34,7 @@ require 'libui'
|
|
34
34
|
# require 'ext/glimmer/config'
|
35
35
|
# require 'ext/glimmer'
|
36
36
|
require 'glimmer/dsl/libui/dsl'
|
37
|
+
require 'glimmer/libui'
|
37
38
|
Glimmer::Config.loop_max_count = -1
|
38
39
|
Glimmer::Config.excluded_keyword_checkers << lambda do |method_symbol, *args|
|
39
40
|
method = method_symbol.to_s
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-libui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glimmer
|
@@ -209,6 +209,7 @@ files:
|
|
209
209
|
- examples/basic_table_image.rb
|
210
210
|
- examples/basic_table_image_text.rb
|
211
211
|
- examples/basic_table_progress_bar.rb
|
212
|
+
- examples/basic_transform.rb
|
212
213
|
- examples/basic_window.rb
|
213
214
|
- examples/basic_window2.rb
|
214
215
|
- examples/color_button.rb
|
@@ -222,6 +223,7 @@ files:
|
|
222
223
|
- examples/form.rb
|
223
224
|
- examples/form_table.rb
|
224
225
|
- examples/grid.rb
|
226
|
+
- examples/histogram.rb
|
225
227
|
- examples/meta_example.rb
|
226
228
|
- examples/midi_player.rb
|
227
229
|
- examples/simple_notepad.rb
|
@@ -237,6 +239,7 @@ files:
|
|
237
239
|
- lib/glimmer/dsl/libui/shape_expression.rb
|
238
240
|
- lib/glimmer/dsl/libui/tab_item_expression.rb
|
239
241
|
- lib/glimmer/fiddle_consumer.rb
|
242
|
+
- lib/glimmer/libui.rb
|
240
243
|
- lib/glimmer/libui/about_menu_item_proxy.rb
|
241
244
|
- lib/glimmer/libui/arc.rb
|
242
245
|
- lib/glimmer/libui/area_proxy.rb
|
@@ -270,10 +273,12 @@ files:
|
|
270
273
|
- lib/glimmer/libui/image_text_column_proxy.rb
|
271
274
|
- lib/glimmer/libui/label_proxy.rb
|
272
275
|
- lib/glimmer/libui/line.rb
|
276
|
+
- lib/glimmer/libui/matrix_proxy.rb
|
273
277
|
- lib/glimmer/libui/menu_item_proxy.rb
|
274
278
|
- lib/glimmer/libui/menu_proxy.rb
|
275
279
|
- lib/glimmer/libui/multiline_entry_proxy.rb
|
276
280
|
- lib/glimmer/libui/non_wrapping_multiline_entry_proxy.rb
|
281
|
+
- lib/glimmer/libui/parent.rb
|
277
282
|
- lib/glimmer/libui/path_proxy.rb
|
278
283
|
- lib/glimmer/libui/preferences_menu_item_proxy.rb
|
279
284
|
- lib/glimmer/libui/progress_bar_column_proxy.rb
|
@@ -287,6 +292,7 @@ files:
|
|
287
292
|
- lib/glimmer/libui/table_proxy.rb
|
288
293
|
- lib/glimmer/libui/text_column_proxy.rb
|
289
294
|
- lib/glimmer/libui/time_picker_proxy.rb
|
295
|
+
- lib/glimmer/libui/transformable.rb
|
290
296
|
- lib/glimmer/libui/vertical_box_proxy.rb
|
291
297
|
- lib/glimmer/libui/window_proxy.rb
|
292
298
|
homepage: http://github.com/AndyObtiva/glimmer-dsl-libui
|