oekaki 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README +2 -2
  3. data/lib/oekaki.rb +53 -6
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8bb8651b65f22522f8e0ae781362a842be83c3fe
4
- data.tar.gz: 5b2618380ae75526a375a29104b9bd506dc7da96
3
+ metadata.gz: 1a9b7f41a63f1b438df88aa087ebe4546566673a
4
+ data.tar.gz: 44906bda39c48649ad8a32cc7a5357e5d5b455e6
5
5
  SHA512:
6
- metadata.gz: cd60b1fdb992d66a759eab9bc8d324b3f4ee1a3a616b64495e6ac57b9e3199b548d64760373104702c9357aeb7bf33eb030863ad868de9652eae5b79c599b7f9
7
- data.tar.gz: 785d66f52b20bf89d3b6550038d536d76f972b2987557e61e622fa8e58306decaccb98b1728a20cfc3af361eb823513c1ee8a75aec464a2871956646d20c2caf
6
+ metadata.gz: b2ece5210210178d34ff7143aee2190137f5aeefecd7cdc0eec2e36757daff4a8c000592290c24c61d395e73be31320f2eb65b8771514df864464bfec5317ae4
7
+ data.tar.gz: ac0d3795a5c1ffd2608b303f607210db3ba1807c1deb56001ad6e9bea8290a4c01d8467f9ad317935e01fc12f83fa8c22ddb6b0a71e9189aca528f99aa0862d5
data/README CHANGED
@@ -93,8 +93,8 @@
93
93
  end
94
94
 
95
95
  quit_window = proc do
96
- make_window do
97
- title = ""
96
+ make_window do |w|
97
+ w.title = ""
98
98
  b = button do
99
99
  set_size_request(120, 40)
100
100
  add(Gtk::Label.new.set_markup('<span size="x-large">Quit!</span>'))
@@ -2,7 +2,7 @@ require 'gtk2'
2
2
 
3
3
  module Oekaki
4
4
  W = Gtk::Window.new
5
- class Tool
5
+ class Tool < Gtk::Window
6
6
  def initialize
7
7
  @window = W
8
8
  @drawable = W.window
@@ -79,6 +79,11 @@ module Oekaki
79
79
  def get_pic(x, y, width, height)
80
80
  GdkPixbuf::Pixbuf.from_drawable(nil, @drawable, x, y, width, height)
81
81
  end
82
+
83
+ def star(fill, x1, y1, x2, y2, color = nil)
84
+ set_color(color)
85
+ Star.new(fill, x1, y1, x2, y2, @color).draw
86
+ end
82
87
  end
83
88
 
84
89
  class Event < Tool
@@ -109,6 +114,49 @@ module Oekaki
109
114
  w.show_all
110
115
  w
111
116
  end
117
+
118
+ def button(&bk)
119
+ b = Gtk::Button.new
120
+ b.instance_eval(&bk)
121
+ b
122
+ end
123
+ end
124
+
125
+ class Star < Tool
126
+ def initialize(fill, x1, y1, x2, y2, color)
127
+ @fill = fill
128
+ @o = []; @a = []; @b = []
129
+ @o[0], @o[1] = x1, y1
130
+ @a[0] = Vector[x2 - x1, y1 - y2]
131
+ θ = PI / 5
132
+ rt1 = Matrix[[cos(θ), -sin(θ)], [sin(θ), cos(θ)]]
133
+ rt2 = rt1 * rt1
134
+ 1.upto(4) {|i| @a[i] = rt2 * @a[i - 1]}
135
+ t = cos(2 * θ) / cos(θ)
136
+ @b[0] = rt1 * @a[0] * t
137
+ 1.upto(4) {|i| @b[i] = rt2 * @b[i - 1]}
138
+ super()
139
+ @color = color
140
+ end
141
+
142
+ def draw_triangle(n)
143
+ ar = [@a[n].to_w(@o), @b[n].to_w(@o), @b[(n - 1) % 5].to_w(@o)]
144
+ polygon(@fill, ar)
145
+ end
146
+ private :draw_triangle
147
+
148
+ def draw
149
+ if @fill
150
+ 5.times {|i| draw_triangle(i)}
151
+ ar = []
152
+ 5.times {|i| ar << @b[i].to_w(@o)}
153
+ polygon(@fill, ar)
154
+ else
155
+ ar = []
156
+ 5.times {|i| ar << @a[i].to_w(@o); ar << @b[i].to_w(@o)}
157
+ polygon(@fill, ar)
158
+ end
159
+ end
112
160
  end
113
161
 
114
162
  def self.app(width: 300, height: 300, title: "oekaki", &bk)
@@ -125,10 +173,9 @@ module Oekaki
125
173
  end
126
174
  end
127
175
 
128
- class Gtk::Window
129
- def button(&bk)
130
- b = Gtk::Button.new
131
- b.instance_eval(&bk)
132
- b
176
+ class Vector
177
+ def to_w(o)
178
+ v = self
179
+ [o[0] + v[0], o[1] - v[1]]
133
180
  end
134
181
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oekaki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - obelisk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-23 00:00:00.000000000 Z
11
+ date: 2017-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gtk2