glimmer-dsl-gtk 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/glimmer-dsl-gtk.svg)](http://badge.fury.io/rb/glimmer-dsl-gtk)
|
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)
|
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
|
![Set line join](/screenshots/glimmer-dsl-gtk-mac-cairo-set-line-join.png)
|
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
|
+
![Text](/screenshots/glimmer-dsl-gtk-mac-cairo-text.png)
|
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
|