glimmer-dsl-gtk 0.0.6 → 0.0.7
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 +6 -0
- data/README.md +58 -3
- data/VERSION +1 -1
- data/glimmer-dsl-gtk.gemspec +0 -0
- data/lib/glimmer/gtk/shape/path.rb +22 -0
- data/lib/glimmer/gtk/shape.rb +27 -7
- data/samples/cairo/text.rb +46 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c811aaa03169f5bb7754c7c07721bea6c1084d652878d55c75a9aa28f0fa6e56
|
4
|
+
data.tar.gz: 5c4ef408d97778f9defaa1f2fdd0df2f83e2d218fa0147317f8d3a68f69205f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95e9f024283b4cb606f766f5230436d0caef9b55733ad7347cb45f3ef10e1d7d9555d375b177fe0d5d08091414572804f20b3ba9856f7946df7ccfc894b3428b
|
7
|
+
data.tar.gz: 0f381c56c69281dcd1bb9e6ec0391f58f101169da99e1c72ef14193425c7c3728b51cdd1b13169ac418d38ea3197c8adcc2c486b9586cd09aff4e07af2f86315
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.0.7
|
4
|
+
|
5
|
+
- samples/cairo/text.rb
|
6
|
+
- Support for `path` nested `show_text`, `text_path`, `show_glyphs`, `glyph_path`, `new_sub_path` operations
|
7
|
+
|
3
8
|
## 0.0.6
|
4
9
|
|
5
10
|
- samples/cairo/clip_image.rb
|
@@ -18,6 +23,7 @@
|
|
18
23
|
- Support declarative `fill`/`paint` of `image, x, y` in cairo graphics
|
19
24
|
- Support declarative transforms on cairo graphics shapes: `translate`, `scale`, `rotate`
|
20
25
|
- Support applying transform on `drawing_area` `paint`
|
26
|
+
- Support for `path` nested `rectangle`, `rounded_rectangle`, and `arc_negative` operations
|
21
27
|
|
22
28
|
## 0.0.5
|
23
29
|
|
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
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 GTK 0.0.
|
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 GTK 0.0.7
|
2
2
|
## Ruby-GNOME Desktop Development GUI Library
|
3
3
|
[](http://badge.fury.io/rb/glimmer-dsl-gtk)
|
4
4
|
[](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
5
5
|
|
6
|
-
[Glimmer](https://github.com/AndyObtiva/glimmer) DSL for [GTK](https://www.gtk.org/) enables building desktop applications with [Ruby-GNOME](https://github.com/ruby-gnome/ruby-gnome).
|
6
|
+
[Glimmer](https://github.com/AndyObtiva/glimmer) DSL for [GTK](https://www.gtk.org/) enables building desktop applications with [Ruby-GNOME](https://github.com/ruby-gnome/ruby-gnome) (including [Cairo graphics](#declarative-cairo-graphics)).
|
7
7
|
|
8
8
|
[GTK](https://www.gtk.org/) (aka GIMP-Toolkit or [incorrectly] GNOME-Toolkit) is the premiere desktop GUI toolkit on [Linux](https://www.gtk.org/docs/installations/linux/), which also runs on [Mac](https://www.gtk.org/docs/installations/macos/) ([Quartz GTK+](https://wiki.gnome.org/Projects/GTK/OSX)) and [Windows](https://www.gtk.org/docs/installations/windows).
|
9
9
|
|
@@ -80,7 +80,7 @@ gem install glimmer-dsl-gtk
|
|
80
80
|
|
81
81
|
Add the following to `Gemfile`:
|
82
82
|
```
|
83
|
-
gem 'glimmer-dsl-gtk', '~> 0.0.
|
83
|
+
gem 'glimmer-dsl-gtk', '~> 0.0.7'
|
84
84
|
```
|
85
85
|
|
86
86
|
And, then run:
|
@@ -820,6 +820,61 @@ window {
|
|
820
820
|
|
821
821
|

|
822
822
|
|
823
|
+
### Text
|
824
|
+
|
825
|
+
[samples/cairo/text.rb](/samples/cairo/text.rb)
|
826
|
+
|
827
|
+
```ruby
|
828
|
+
require 'glimmer-dsl-gtk'
|
829
|
+
|
830
|
+
include Glimmer
|
831
|
+
|
832
|
+
window {
|
833
|
+
title 'Text'
|
834
|
+
default_size 256, 256
|
835
|
+
|
836
|
+
drawing_area {
|
837
|
+
paint 242.25, 242.25, 242.25
|
838
|
+
|
839
|
+
font_family = OS.linux? ? 'Sans' : (OS.mac? ? 'Helvetica' : 'Arial')
|
840
|
+
|
841
|
+
# The main code
|
842
|
+
path {
|
843
|
+
move_to 10.0, 135.0
|
844
|
+
show_text 'Hello'
|
845
|
+
|
846
|
+
font_face font_family, Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD
|
847
|
+
font_size 90.0
|
848
|
+
line_width 2.56
|
849
|
+
fill 0, 0, 0
|
850
|
+
stroke 0, 0, 0
|
851
|
+
}
|
852
|
+
|
853
|
+
path {
|
854
|
+
move_to 70.0, 165.0
|
855
|
+
text_path 'void'
|
856
|
+
|
857
|
+
font_face font_family, Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD
|
858
|
+
font_size 90.0
|
859
|
+
line_width 2.56
|
860
|
+
fill 127.5, 127.5, 255
|
861
|
+
stroke 0, 0, 0
|
862
|
+
}
|
863
|
+
|
864
|
+
# draw helping lines
|
865
|
+
path {
|
866
|
+
arc 10.0, 135.0, 5.12, 0, 2*Math::PI
|
867
|
+
close_path
|
868
|
+
arc 70.0, 165.0, 5.12, 0, 2*Math::PI
|
869
|
+
|
870
|
+
fill 255, 51, 51, 0.6
|
871
|
+
}
|
872
|
+
}
|
873
|
+
}.show
|
874
|
+
```
|
875
|
+
|
876
|
+

|
877
|
+
|
823
878
|
## Girb (Glimmer IRB)
|
824
879
|
|
825
880
|
You can run the `girb` command (`bin/girb` if you cloned the project locally):
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.7
|
data/glimmer-dsl-gtk.gemspec
CHANGED
Binary file
|
@@ -93,6 +93,12 @@ module Glimmer
|
|
93
93
|
cairo_context.set_matrix(previous_matrix)
|
94
94
|
end
|
95
95
|
|
96
|
+
# TODO look into a way to generalize the declaration of the methods below (or perform code reuse)
|
97
|
+
|
98
|
+
def new_sub_path(*args)
|
99
|
+
@drawing_operations << [:new_sub_path, args]
|
100
|
+
end
|
101
|
+
|
96
102
|
def arc(*args)
|
97
103
|
@drawing_operations << [:arc, args]
|
98
104
|
end
|
@@ -109,6 +115,22 @@ module Glimmer
|
|
109
115
|
@drawing_operations << [:rounded_rectangle, args]
|
110
116
|
end
|
111
117
|
|
118
|
+
def text_path(*args)
|
119
|
+
@drawing_operations << [:text_path, args]
|
120
|
+
end
|
121
|
+
|
122
|
+
def show_text(*args)
|
123
|
+
@drawing_operations << [:show_text, args]
|
124
|
+
end
|
125
|
+
|
126
|
+
def glyph_path(*args)
|
127
|
+
@drawing_operations << [:text_path, args]
|
128
|
+
end
|
129
|
+
|
130
|
+
def show_glyphs(*args)
|
131
|
+
@drawing_operations << [:show_text, args]
|
132
|
+
end
|
133
|
+
|
112
134
|
def move_to(*args)
|
113
135
|
@drawing_operations << [:move_to, args]
|
114
136
|
end
|
data/lib/glimmer/gtk/shape.rb
CHANGED
@@ -125,12 +125,13 @@ module Glimmer
|
|
125
125
|
prepend Transformable
|
126
126
|
|
127
127
|
SHAPE_FILL_PROPERTIES = [:fill_rule]
|
128
|
-
SHAPE_STROKE_PROPERTIES = [:dash, :
|
128
|
+
SHAPE_STROKE_PROPERTIES = [:dash, :line_cap, :line_join, :line_width, :miter_limit, :scaled_font]
|
129
129
|
SHAPE_GENERAL_PROPERTIES = [:matrix, :operator, :tolerance]
|
130
|
+
SHAPE_FONT_PROPERTIES = [:font_face, :font_matrix, :font_options, :font_size]
|
130
131
|
|
131
132
|
attr_reader :parent, :args, :keyword, :block
|
132
133
|
attr_accessor :fill, :stroke, :clip
|
133
|
-
attr_accessor *(SHAPE_FILL_PROPERTIES + SHAPE_STROKE_PROPERTIES + SHAPE_GENERAL_PROPERTIES)
|
134
|
+
attr_accessor *(SHAPE_FILL_PROPERTIES + SHAPE_STROKE_PROPERTIES + SHAPE_GENERAL_PROPERTIES + SHAPE_FONT_PROPERTIES)
|
134
135
|
# TODO consider automatically setting attribute accessors by looking up set_xyz methods on cairo context
|
135
136
|
|
136
137
|
def initialize(keyword, parent, args, &block)
|
@@ -162,16 +163,19 @@ module Glimmer
|
|
162
163
|
# Subclasses must either implement draw_shape hook method or override this method directly
|
163
164
|
def draw(drawing_area_widget, cairo_context)
|
164
165
|
if fill
|
166
|
+
draw_font(drawing_area_widget, cairo_context)
|
165
167
|
draw_shape(drawing_area_widget, cairo_context)
|
166
168
|
draw_fill(drawing_area_widget, cairo_context)
|
167
169
|
end
|
168
170
|
|
169
171
|
if stroke
|
172
|
+
draw_font(drawing_area_widget, cairo_context)
|
170
173
|
draw_shape(drawing_area_widget, cairo_context)
|
171
174
|
draw_stroke(drawing_area_widget, cairo_context)
|
172
175
|
end
|
173
176
|
|
174
177
|
if clip
|
178
|
+
draw_font(drawing_area_widget, cairo_context)
|
175
179
|
draw_shape(drawing_area_widget, cairo_context)
|
176
180
|
draw_clip(drawing_area_widget, cairo_context)
|
177
181
|
end
|
@@ -194,19 +198,25 @@ module Glimmer
|
|
194
198
|
previous_matrix = cairo_context.matrix
|
195
199
|
apply_transforms(cairo_context, target: :fill)
|
196
200
|
self.class.set_source_dynamically(cairo_context, fill)
|
197
|
-
(
|
198
|
-
cairo_context
|
201
|
+
(SHAPE_GENERAL_PROPERTIES + SHAPE_FILL_PROPERTIES).each do |property|
|
202
|
+
apply_property(cairo_context, property)
|
199
203
|
end
|
200
204
|
cairo_context.fill
|
201
205
|
cairo_context.set_matrix(previous_matrix)
|
202
206
|
end
|
203
207
|
|
208
|
+
def draw_font(drawing_area_widget, cairo_context)
|
209
|
+
SHAPE_FONT_PROPERTIES.each do |property|
|
210
|
+
apply_property(cairo_context, property)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
204
214
|
def draw_stroke(drawing_area_widget, cairo_context)
|
205
215
|
previous_matrix = cairo_context.matrix
|
206
216
|
apply_transforms(cairo_context, target: :stroke)
|
207
217
|
self.class.set_source_dynamically(cairo_context, stroke)
|
208
|
-
(
|
209
|
-
cairo_context
|
218
|
+
(SHAPE_GENERAL_PROPERTIES + SHAPE_STROKE_PROPERTIES).each do |property|
|
219
|
+
apply_property(cairo_context, property)
|
210
220
|
end
|
211
221
|
cairo_context.stroke
|
212
222
|
cairo_context.set_matrix(previous_matrix)
|
@@ -216,12 +226,22 @@ module Glimmer
|
|
216
226
|
previous_matrix = cairo_context.matrix
|
217
227
|
apply_transforms(cairo_context, target: :clip)
|
218
228
|
SHAPE_GENERAL_PROPERTIES.each do |property|
|
219
|
-
cairo_context
|
229
|
+
apply_property(cairo_context, property)
|
220
230
|
end
|
221
231
|
cairo_context.clip
|
222
232
|
cairo_context.set_matrix(previous_matrix)
|
223
233
|
end
|
224
234
|
|
235
|
+
def apply_property(cairo_context, property)
|
236
|
+
if send(property)
|
237
|
+
if property == :font_face
|
238
|
+
cairo_context.send("select_#{property}", *send(property))
|
239
|
+
else
|
240
|
+
cairo_context.send("set_#{property}", *send(property))
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
225
245
|
def respond_to?(method_name, include_private = false, &block)
|
226
246
|
method_name = method_name.to_s
|
227
247
|
(method_name.start_with?('set_') && super("#{method_name.sub('set_', '')}=", include_private)) ||
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'glimmer-dsl-gtk'
|
2
|
+
|
3
|
+
include Glimmer
|
4
|
+
|
5
|
+
window {
|
6
|
+
title 'Text'
|
7
|
+
default_size 256, 256
|
8
|
+
|
9
|
+
drawing_area {
|
10
|
+
paint 242.25, 242.25, 242.25
|
11
|
+
|
12
|
+
font_family = OS.linux? ? 'Sans' : (OS.mac? ? 'Helvetica' : 'Arial')
|
13
|
+
|
14
|
+
# The main code
|
15
|
+
path {
|
16
|
+
move_to 10.0, 135.0
|
17
|
+
show_text 'Hello'
|
18
|
+
|
19
|
+
font_face font_family, Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD
|
20
|
+
font_size 90.0
|
21
|
+
line_width 2.56
|
22
|
+
fill 0, 0, 0
|
23
|
+
stroke 0, 0, 0
|
24
|
+
}
|
25
|
+
|
26
|
+
path {
|
27
|
+
move_to 70.0, 165.0
|
28
|
+
text_path 'void'
|
29
|
+
|
30
|
+
font_face font_family, Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD
|
31
|
+
font_size 90.0
|
32
|
+
line_width 2.56
|
33
|
+
fill 127.5, 127.5, 255
|
34
|
+
stroke 0, 0, 0
|
35
|
+
}
|
36
|
+
|
37
|
+
# draw helping lines
|
38
|
+
path {
|
39
|
+
arc 10.0, 135.0, 5.12, 0, 2*Math::PI
|
40
|
+
close_path
|
41
|
+
arc 70.0, 165.0, 5.12, 0, 2*Math::PI
|
42
|
+
|
43
|
+
fill 255, 51, 51, 0.6
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}.show
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-gtk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
@@ -142,7 +142,8 @@ dependencies:
|
|
142
142
|
- - ">"
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
|
-
description: Glimmer DSL for GTK - Ruby-GNOME Desktop Development GUI Library
|
145
|
+
description: Glimmer DSL for GTK - Ruby-GNOME Desktop Development GUI Library - Supports
|
146
|
+
all GTK widgets and Cairo graphics
|
146
147
|
email: andy.am@gmail.com
|
147
148
|
executables:
|
148
149
|
- girb
|
@@ -202,6 +203,7 @@ files:
|
|
202
203
|
- samples/cairo/rounded_rectangle.rb
|
203
204
|
- samples/cairo/set_line_cap.rb
|
204
205
|
- samples/cairo/set_line_join.rb
|
206
|
+
- samples/cairo/text.rb
|
205
207
|
- samples/elaborate/tetris.rb
|
206
208
|
- samples/elaborate/tetris/model/block.rb
|
207
209
|
- samples/elaborate/tetris/model/game.rb
|