glimmer-dsl-libui 0.11.2 → 0.11.3
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 +4 -0
- data/README.md +2 -2
- data/VERSION +1 -1
- data/glimmer-dsl-libui.gemspec +0 -0
- data/lib/glimmer/libui/control_proxy/text_proxy.rb +75 -1
- data/lib/glimmer/libui/control_proxy/window_proxy.rb +4 -4
- data/lib/glimmer/libui/perfect_shaped.rb +2 -1
- 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: 9be2fa52f18acfaf245110441ec7c6d728cffd361f995b71f58a8e9e235c0846
|
4
|
+
data.tar.gz: b6f3cd15b385edc1839ff0da45cd22677723f1b8a91d947ad773a23a317f88bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f6ad39350772e169b0500fcb727567d884c5fab0f06945eb7e25a20c45322083d70f7b9ad8b636b7dfef12ede12afce87dce480e819567a414ad20dbf77904c
|
7
|
+
data.tar.gz: 25eabc97ed6588b7ba74d97bd352bb80a41afbcecb2e4f8d7f26f101753b81062fcfc2503d61292997ee82f856d8a5bc0b3786fd227b8a6f248da36d40a82aac
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.11.
|
1
|
+
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.11.3
|
2
2
|
## Prerequisite-Free Ruby Desktop Development Cross-Platform Native GUI Library ([Fukuoka Award Winning](http://www.digitalfukuoka.jp/topics/187?locale=ja))
|
3
3
|
### The Quickest Way From Zero To GUI
|
4
4
|
[](http://badge.fury.io/rb/glimmer-dsl-libui)
|
@@ -431,7 +431,7 @@ gem install glimmer-dsl-libui
|
|
431
431
|
Or install via Bundler `Gemfile`:
|
432
432
|
|
433
433
|
```ruby
|
434
|
-
gem 'glimmer-dsl-libui', '~> 0.11.
|
434
|
+
gem 'glimmer-dsl-libui', '~> 0.11.3'
|
435
435
|
```
|
436
436
|
|
437
437
|
Test that installation worked by running the [Glimmer Meta-Example](#examples):
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.11.
|
1
|
+
0.11.3
|
data/glimmer-dsl-libui.gemspec
CHANGED
Binary file
|
@@ -32,8 +32,9 @@ module Glimmer
|
|
32
32
|
# Follows the Proxy Design Pattern
|
33
33
|
class TextProxy < ControlProxy
|
34
34
|
include Parent
|
35
|
+
include PerfectShaped
|
35
36
|
prepend Transformable
|
36
|
-
|
37
|
+
|
37
38
|
def initialize(keyword, parent, args, &block)
|
38
39
|
@keyword = keyword
|
39
40
|
@parent_proxy = parent
|
@@ -156,6 +157,69 @@ module Glimmer
|
|
156
157
|
@draw_text_layout_params
|
157
158
|
end
|
158
159
|
|
160
|
+
def area_proxy
|
161
|
+
# TODO eventually reuse this method from Shape
|
162
|
+
find_parent_in_ancestors { |parent| parent.nil? || parent.is_a?(ControlProxy::AreaProxy) }
|
163
|
+
end
|
164
|
+
|
165
|
+
def find_parent_in_ancestors(&condition)
|
166
|
+
# TODO eventually reuse this method from Shape
|
167
|
+
found = self
|
168
|
+
until condition.call(found)
|
169
|
+
# TODO in the future, support nesting under composite shape where there is parent instead of parent_proxy
|
170
|
+
# found = found.respond_to?(:parent_proxy) ? found.parent_proxy : found.parent
|
171
|
+
found = found.parent_proxy
|
172
|
+
end
|
173
|
+
found
|
174
|
+
end
|
175
|
+
|
176
|
+
def can_handle_listener?(listener_name)
|
177
|
+
area_proxy.can_handle_listener?(listener_name)
|
178
|
+
end
|
179
|
+
|
180
|
+
def handle_listener(listener_name, &listener)
|
181
|
+
area_proxy.handle_listener(listener_name) do |event|
|
182
|
+
listener.call(event) if include?(event[:x], event[:y])
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
def perfect_shape
|
187
|
+
the_perfect_shape_dependencies = perfect_shape_dependencies
|
188
|
+
if the_perfect_shape_dependencies != @perfect_shape_dependencies
|
189
|
+
absolute_x, absolute_y, width, height = @perfect_shape_dependencies = the_perfect_shape_dependencies
|
190
|
+
@perfect_shape = PerfectShape::Rectangle.new(x: absolute_x, y: absolute_y, width: width, height: height)
|
191
|
+
end
|
192
|
+
@perfect_shape
|
193
|
+
end
|
194
|
+
|
195
|
+
def perfect_shape_dependencies
|
196
|
+
# TODO support absolute_x and absolute_y with relative positioning in the future
|
197
|
+
absolute_x = x
|
198
|
+
absolute_y = y
|
199
|
+
[absolute_x, absolute_y, extent_width, extent_height]
|
200
|
+
end
|
201
|
+
|
202
|
+
def extent_width
|
203
|
+
if @extent_width.to_f > 0
|
204
|
+
@extent_width
|
205
|
+
else
|
206
|
+
width
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
def extent_height
|
211
|
+
if @extent_height.to_f > 0
|
212
|
+
@extent_height
|
213
|
+
else
|
214
|
+
children_max_size = children.map(&:font).map {|font| font[:size] if font.respond_to?(:[]) }.compact.max
|
215
|
+
if children_max_size.to_f > 0
|
216
|
+
children_max_size
|
217
|
+
else
|
218
|
+
@default_font[:size]
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
159
223
|
private
|
160
224
|
|
161
225
|
def build_control
|
@@ -169,6 +233,16 @@ module Glimmer
|
|
169
233
|
draw_brush.B = (draw_brush_args[:b] || draw_brush_args[:blue]).to_f / 255.0
|
170
234
|
draw_brush.A = (draw_brush_args[:a] || draw_brush_args[:alpha])
|
171
235
|
end
|
236
|
+
|
237
|
+
def calculate_extents
|
238
|
+
# TODO fix implementation once libui binding project responds about this
|
239
|
+
# as it always returns 0,0 right now
|
240
|
+
extent_width = Fiddle::Pointer.malloc(Fiddle::SIZEOF_DOUBLE*8)
|
241
|
+
extent_height = Fiddle::Pointer.malloc(Fiddle::SIZEOF_DOUBLE*8)
|
242
|
+
::LibUI.draw_text_layout_extents(@libui, extent_width, extent_height)
|
243
|
+
@extent_width = extent_width[0, Fiddle::SIZEOF_DOUBLE*8].unpack1('i')
|
244
|
+
@extent_height = extent_height[0, Fiddle::SIZEOF_DOUBLE*8].unpack1('i')
|
245
|
+
end
|
172
246
|
end
|
173
247
|
end
|
174
248
|
end
|
@@ -104,11 +104,11 @@ module Glimmer
|
|
104
104
|
|
105
105
|
def content_size(*args)
|
106
106
|
if args.empty?
|
107
|
-
width = Fiddle::Pointer.malloc(
|
108
|
-
height = Fiddle::Pointer.malloc(
|
107
|
+
width = Fiddle::Pointer.malloc(64)
|
108
|
+
height = Fiddle::Pointer.malloc(64)
|
109
109
|
::LibUI.window_content_size(@libui, width, height)
|
110
|
-
width = width[0,
|
111
|
-
height = height[0,
|
110
|
+
width = width[0, 64].unpack1('i')
|
111
|
+
height = height[0, 64].unpack1('i')
|
112
112
|
[width, height]
|
113
113
|
else
|
114
114
|
args = args.first if args.size == 1 && args.first.is_a?(Array)
|
@@ -15,13 +15,14 @@ module Glimmer
|
|
15
15
|
# determining if a point lies on the outline (e.g. makes it easier to select
|
16
16
|
# a shape by mouse)
|
17
17
|
def contain?(*point, outline: false, distance_tolerance: 0)
|
18
|
+
# TODO inverse transform point with `uiDrawMatrixTransformPoint` before checking containment
|
18
19
|
perfect_shape&.contain?(*point, outline: outline, distance_tolerance: distance_tolerance)
|
19
20
|
end
|
20
21
|
|
21
22
|
# Returns if shape includes point on the inside when filled
|
22
23
|
# or if shape includes point on the outline when stroked
|
23
24
|
def include?(*point)
|
24
|
-
if fill.empty?
|
25
|
+
if respond_to?(:fill) && fill.empty?
|
25
26
|
# TODO check if distance_tolerance should be half the thickness in case it is checked against both sides of out and in
|
26
27
|
contain?(*point, outline: true, distance_tolerance: ((stroke[:thickness] || 1) - 1))
|
27
28
|
else
|
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.11.
|
4
|
+
version: 0.11.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glimmer
|