glimmer-dsl-libui 0.4.22 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc2ebc159948cf7110cdc9113b219809789a6b73c5412435364998c5633afe26
4
- data.tar.gz: f6f988f09d76f8cbe72bc76fc2440c426def14ecbd4405270d70d05012d4d183
3
+ metadata.gz: 40d0cbf805427a73645a86c95d7fa1c36f030c24ca6a19b1273f7b37c2426f05
4
+ data.tar.gz: f8e728ea7b9e8b3a4393e8ba02d2958b5330d8d4292ed694a8ed02b0b651a1c9
5
5
  SHA512:
6
- metadata.gz: f9d5a3a2232050cc372235a7e97d47ab26fdf5a39c87e1d77614e029b938c9d745f2ba01caf4d26158f0c2334035db63e5226fd6e1d9cf61df656a293c81c3b6
7
- data.tar.gz: 77ff5efbc0945a2be47f0e2241025c6a9eb83e122c42581cb704c3a540d1d7ac6cd224d6a25b58e6894ccee852b32f3ba65daedaab6b27d53a4808bda163ed2a
6
+ metadata.gz: b79c4c8bb0138fb0059cd9bc0a9dfd5327245214c1eb1c4270c914b31065f832d065b73a6f365643eb7807c92420ed222ee91b8324dfde599c8047d6d2fc45ff
7
+ data.tar.gz: c2583ac2d4f84aa26f8a6528e49392c1bc2e7fea908f62787bf9378929093adc1e4058450e687e5d61cbf2ed58157b59a34300d70a1f44ea4714f757324fb399
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.5.0
4
+
5
+ - Upgrade to glimmer 2.6.0
6
+ - Support `rectangle` `bounding_box` (minx, miny, width, height), `contain?` method (checking if shape contains point inside) and `include?` method (checking on outline if stroked and inside if filled?)
7
+ - Support `square` `bounding_box` (minx, miny, width, height), `contain?` method (checking if shape contains point inside) and `include?` method (checking on outline if stroked and inside if filled?)
8
+
3
9
  ## 0.4.22
4
10
 
5
11
  - examples/tetris.rb "Show Next Block Preview" menu item under "View" menu
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.4.22
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.5.0
2
2
  ## Prerequisite-Free Ruby Desktop Development GUI Library
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-libui.svg)](http://badge.fury.io/rb/glimmer-dsl-libui)
4
4
  [![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -330,7 +330,7 @@ Mac | Windows | Linux
330
330
 
331
331
  ![glimmer-dsl-libui-mac-tetris.gif](images/glimmer-dsl-libui-mac-tetris.gif)
332
332
 
333
- NOTE: [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) is 100% feature-complete and in beta mode (though the C [libui](https://github.com/andlabs/libui) is still mid-alpha). Please help make better by contributing, adopting for small or low risk projects, and providing feedback. The more feedback and issues you report the better.
333
+ NOTE: [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) is 100% feature-complete with regards to covering the C [libui](https://github.com/andlabs/libui) library API and in beta mode (though the C [libui](https://github.com/andlabs/libui) is still mid-alpha, which is why [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) cannot be declared v1.0.0 yet). Please help make better by contributing, adopting for small or low risk projects, and providing feedback. The more feedback and issues you report the better.
334
334
 
335
335
  **[Glimmer](https://rubygems.org/gems/glimmer) DSL Comparison Table:**
336
336
  DSL | Platforms | Native? | Vector Graphics? | Pros | Cons | Prereqs
@@ -519,7 +519,7 @@ gem install glimmer-dsl-libui
519
519
  Or install via Bundler `Gemfile`:
520
520
 
521
521
  ```ruby
522
- gem 'glimmer-dsl-libui', '~> 0.4.22'
522
+ gem 'glimmer-dsl-libui', '~> 0.5.0'
523
523
  ```
524
524
 
525
525
  Test that installation worked by running the [Meta-Example](#examples):
@@ -1008,15 +1008,49 @@ To draw `text` in an `area`, you simply nest a `text(x, y, width)` control direc
1008
1008
  Example (you may copy/paste in [`girb`](#girb-glimmer-irb)):
1009
1009
 
1010
1010
  ```ruby
1011
+ require 'glimmer-dsl-libui'
1012
+
1013
+ include Glimmer
1014
+
1011
1015
  window('area text drawing') {
1012
1016
  area {
1013
1017
  text {
1014
1018
  default_font family: 'Helvetica', size: 12, weight: :normal, italic: :normal, stretch: :normal
1015
1019
 
1020
+ string('This ') {
1021
+ font size: 20, weight: :bold, italic: :normal, stretch: :normal
1022
+ color r: 128, g: 0, b: 0, a: 1
1023
+ }
1024
+
1025
+ string('is ') {
1026
+ font size: 20, weight: :bold, italic: :normal, stretch: :normal
1027
+ color r: 0, g: 128, b: 0, a: 1
1028
+ }
1029
+
1030
+ string('a ') {
1031
+ font size: 20, weight: :bold, italic: :normal, stretch: :normal
1032
+ color r: 0, g: 0, b: 128, a: 1
1033
+ }
1034
+
1035
+ string('short ') {
1036
+ font size: 20, weight: :bold, italic: :italic, stretch: :normal
1037
+ color r: 128, g: 128, b: 0, a: 1
1038
+ }
1039
+
1040
+ string('attributed ') {
1041
+ font size: 20, weight: :bold, italic: :normal, stretch: :normal
1042
+ color r: 0, g: 128, b: 128, a: 1
1043
+ }
1044
+
1045
+ string("string \n\n") {
1046
+ font size: 20, weight: :bold, italic: :normal, stretch: :normal
1047
+ color r: 128, g: 0, b: 128, a: 1
1048
+ }
1049
+
1016
1050
  string {
1017
1051
  font family: 'Georgia', size: 13, weight: :medium, italic: :normal, stretch: :normal
1018
- color r: 230, g: 100, b: 50, a: 0.5
1019
- background r: 230, g: 200, b: 250, a: 0.8
1052
+ color r: 0, g: 128, b: 255, a: 1
1053
+ background r: 255, g: 255, b: 0, a: 0.5
1020
1054
  underline :single
1021
1055
  underline_color :spelling
1022
1056
  open_type_features {
@@ -1029,13 +1063,14 @@ window('area text drawing') {
1029
1063
  "attributed string\n" \
1030
1064
  "spanning multiple lines\n\n"
1031
1065
  }
1032
-
1033
- string('This is a short unattributed string')
1034
1066
  }
1035
1067
  }
1036
1068
  }.show
1037
1069
  ```
1038
1070
 
1071
+ ![glimmer-dsl-libui-mac-area-text-drawing.png](/images/glimmer-dsl-libui-mac-area-text-drawing.png)
1072
+
1073
+
1039
1074
  You may checkout [examples/basic_draw_text.rb](#basic-draw-text) and [examples/custom_draw_text.rb](#custom-draw-text) for examples of using `text` inside `area`.
1040
1075
 
1041
1076
  Mac | Windows | Linux
@@ -1853,6 +1888,8 @@ For Mac, consider [Platypus](https://github.com/sveinbjornt/Platypus) (builds a
1853
1888
 
1854
1889
  For Linux, simply package your app as a [Ruby Gem](https://guides.rubygems.org/what-is-a-gem/) and [build rpm package from Ruby Gem](https://www.redpill-linpro.com/sysadvent/2015/12/07/building-rpms-from-gems.html) or [build deb package from Ruby Gem](https://openpreservation.org/blogs/building-debian-package-ruby-program/).
1855
1890
 
1891
+ Also, there is a promising project called [ruby-packer](https://github.com/pmq20/ruby-packer) that supports all platforms.
1892
+
1856
1893
  ## Glimmer Style Guide
1857
1894
 
1858
1895
  **1 - Control arguments are always wrapped by parentheses.**
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.22
1
+ 0.5.0
Binary file
@@ -33,8 +33,13 @@ module Glimmer
33
33
  super
34
34
  end
35
35
 
36
- def include?(x, y)
37
- x.between?(self.x, self.x + width) && y.between?(self.y, self.y + height)
36
+ def perfect_shape
37
+ perfect_shape_dependencies = [x, y, width, height]
38
+ if perfect_shape_dependencies != @perfect_shape_dependencies
39
+ @perfect_shape_dependencies = perfect_shape_dependencies
40
+ @perfect_shape = PerfectShape::Rectangle.new(x: @perfect_shape_dependencies[0], y: @perfect_shape_dependencies[1], width: @perfect_shape_dependencies[2], height: @perfect_shape_dependencies[3])
41
+ end
42
+ @perfect_shape
38
43
  end
39
44
  end
40
45
  end
@@ -33,8 +33,15 @@ module Glimmer
33
33
  super
34
34
  end
35
35
 
36
- def include?(x, y)
37
- x.between?(self.x, self.x + length) && y.between?(self.y, self.y + length)
36
+ # TODO look into refactoring/unifying code with Rectangle
37
+
38
+ def perfect_shape
39
+ perfect_shape_dependencies = [x, y, length]
40
+ if perfect_shape_dependencies != @perfect_shape_dependencies
41
+ @perfect_shape_dependencies = perfect_shape_dependencies
42
+ @perfect_shape = PerfectShape::Square.new(x: @perfect_shape_dependencies[0], y: @perfect_shape_dependencies[1], length: @perfect_shape_dependencies[2])
43
+ end
44
+ @perfect_shape
38
45
  end
39
46
  end
40
47
  end
@@ -145,6 +145,42 @@ module Glimmer
145
145
  end
146
146
  alias transform= transform
147
147
  alias set_transform transform
148
+
149
+ # Returns if shape contains point on the inside
150
+ def contain?(*point)
151
+ perfect_shape&.contain?(*point)
152
+ end
153
+
154
+ # Returns if shape includes point on the inside when filled
155
+ # or if shape includes point on the outline when stroked
156
+ def include?(*point)
157
+ if fill.empty?
158
+ perfect_shape&.contain?(*point, outline: true, distance_tolerance: ((stroke[:thickness] || 1) - 1))
159
+ else
160
+ perfect_shape&.contain?(*point)
161
+ end
162
+ end
163
+
164
+ # Returns bounding box Array consisting of
165
+ # [minx, miny, width, height]
166
+ def bounding_box
167
+ perfect_shape_bounding_box = perfect_shape&.bounding_box
168
+ return if perfect_shape_bounding_box.nil?
169
+ [
170
+ perfect_shape_bounding_box.x,
171
+ perfect_shape_bounding_box.y,
172
+ perfect_shape_bounding_box.width,
173
+ perfect_shape_bounding_box.height,
174
+ ]
175
+ end
176
+
177
+ # Returns PerfectShape object matching this shape to enable
178
+ # executing computational geometry algorithms
179
+ #
180
+ # Subclasses must implement
181
+ def perfect_shape
182
+ # No Op
183
+ end
148
184
 
149
185
  def respond_to?(method_name, *args, &block)
150
186
  self.class.parameters.include?(method_name.to_s.sub(/=$/, '').sub(/^set_/, '').to_sym) or
@@ -23,6 +23,7 @@ $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
23
23
 
24
24
  # External requires
25
25
  require 'glimmer'
26
+ require 'perfect-shape'
26
27
  # require 'logging'
27
28
  # require 'puts_debuggerer' if ENV['pd'].to_s.downcase == 'true'
28
29
  # require 'super_module'
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.4.22
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-05 00:00:00.000000000 Z
11
+ date: 2022-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.5.5
19
+ version: 2.6.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.5.5
26
+ version: 2.6.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: perfect-shape
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: os
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -205,12 +219,13 @@ dependencies:
205
219
  - !ruby/object:Gem::Version
206
220
  version: 0.7.0
207
221
  description: Glimmer DSL for LibUI (Prerequisite-Free Ruby Desktop Development GUI
208
- Library) - No need to pre-install any prerequisites. Just install the gem and have
209
- platform-independent native GUI that just works! Glimmer DSL for LibUI aims to provide
210
- declarative DSL syntax that visually maps to GUI control hierarchy, convention over
211
- configuration via smart defaults, automation of low-level details, requiring the
212
- least amount of syntax possible to build GUI, bidirectional data-binding, and custom
213
- keyword support.
222
+ Library) - Winner of Fukuoka Ruby Award Competition 2022 Special Award - No need
223
+ to pre-install any prerequisites. Just install the gem and have platform-independent
224
+ native GUI that just works! Glimmer DSL for LibUI aims to provide declarative DSL
225
+ syntax that visually maps to GUI control hierarchy, convention over configuration
226
+ via smart defaults, automation of low-level details, requiring the least amount
227
+ of syntax possible to build GUI, bidirectional data-binding, and custom keyword
228
+ support.
214
229
  email: andy.am@gmail.com
215
230
  executables:
216
231
  - girb