rubysketch 0.3.1 → 0.3.2

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: 1f63f771b469d060307fa88a2992cc373c2439cec8facf531984533303f0a023
4
- data.tar.gz: 5787db4cf63408b746fb538a6a612c2b90f440e08c1ded38b382b69200d372c9
3
+ metadata.gz: 83aecf951db1320693714768446ccc95aa0a87f23012e02fff31b032c88be3c6
4
+ data.tar.gz: 6d1f67cbe65c15468cb606666acceacf19f56bf8c83dd1abae2a1b21d7daf94b
5
5
  SHA512:
6
- metadata.gz: 1bcb9bfe5d0f1732c7e44a509d8c5e83b5b84f28bb988fe3e4d9083cb342b6fc4cb44df48c0f176a18599cfd334583e808db41dadb377ac5c78436ed55533c29
7
- data.tar.gz: ac78631d29b3843a32f376b7330011477523e33f40b1adb5d40dc1a66335bc294fdf91720146194b016497e4444b9531dbdc9529723c936c939c518df343c671
6
+ metadata.gz: 9946ba3029ce56a90042daa9be9e6c2f74f5d7ef7d318b5263b10c03ca35c26f5f7e67c61e6f78bd90f4224c267f732dcb937d86030adbe2b0ac51350a225f6e
7
+ data.tar.gz: 627eb17aa1e83da474f9ab9457b449b278ecf95d84956f98b82d3185c6bc87fa9b5788ad65c1144f80364171b14a4f7322d86a42066925ccbca8f2e19ff46cc3
@@ -1,6 +1,14 @@
1
1
  # RubySketch ChangeLog
2
2
 
3
3
 
4
+ ## [0.3.2] - 2020-07-22
5
+
6
+ - text() draws to the baseline by default
7
+ - add textWidth(), textAscent(), textDescent() and textAlign()
8
+ - change initial color for fill() and stroke()
9
+ - change initial background color to grayscale 0.8
10
+
11
+
4
12
  ## [0.3.1] - 2020-07-17
5
13
 
6
14
  - add touchStarted(), touchEnded(), touchMoved() and touches()
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.3.2
@@ -211,7 +211,7 @@ module RubySketch
211
211
  #
212
212
  CORNERS = :CORNERS
213
213
 
214
- # Mode for rectMode(), ellipseMode() and imageMode().
214
+ # Mode for rectMode(), ellipseMode(), imageMode() and textAlign().
215
215
  #
216
216
  CENTER = :CENTER
217
217
 
@@ -219,6 +219,21 @@ module RubySketch
219
219
  #
220
220
  RADIUS = :RADIUS
221
221
 
222
+ # Mode for textAlign().
223
+ LEFT = :LEFT
224
+
225
+ # Mode for textAlign().
226
+ RIGHT = :RIGHT
227
+
228
+ # Mode for textAlign().
229
+ TOP = :TOP
230
+
231
+ # Mode for textAlign().
232
+ BOTTOM = :BOTTOM
233
+
234
+ # Mode for textAlign().
235
+ BASELINE = :BASELINE
236
+
222
237
  # Mode for strokeCap().
223
238
  #
224
239
  BUTT = :butt
@@ -235,7 +250,10 @@ module RubySketch
235
250
  #
236
251
  SQUARE = :square
237
252
 
238
- def setup__ ()
253
+ def setup__ (painter)
254
+ @painter__ = painter
255
+ @painter__.miter_limit = 10
256
+
239
257
  @drawing = false
240
258
  @hsbColor__ = false
241
259
  @colorMaxes__ = [1.0] * 4
@@ -243,6 +261,8 @@ module RubySketch
243
261
  @rectMode__ = nil
244
262
  @ellipseMode__ = nil
245
263
  @imageMode__ = nil
264
+ @textAlignH__ = nil
265
+ @textAlignV__ = nil
246
266
  @matrixStack__ = []
247
267
  @styleStack__ = []
248
268
 
@@ -251,6 +271,10 @@ module RubySketch
251
271
  rectMode CORNER
252
272
  ellipseMode CENTER
253
273
  imageMode CORNER
274
+ textAlign LEFT
275
+
276
+ fill 255
277
+ stroke 0
254
278
  end
255
279
 
256
280
  def beginDraw ()
@@ -288,10 +312,11 @@ module RubySketch
288
312
  # @return [nil] nil
289
313
  #
290
314
  def colorMode (mode, *maxes)
315
+ mode = mode.upcase.to_sym
291
316
  raise ArgumentError, "invalid color mode: #{mode}" unless [RGB, HSB].include?(mode)
292
317
  raise ArgumentError unless [0, 1, 3, 4].include?(maxes.size)
293
318
 
294
- @hsbColor__ = mode.upcase == HSB
319
+ @hsbColor__ = mode == HSB
295
320
  case maxes.size
296
321
  when 1 then @colorMaxes__ = [maxes.first.to_f] * 4
297
322
  when 3, 4 then @colorMaxes__[0...maxes.size] = maxes.map &:to_f
@@ -335,7 +360,7 @@ module RubySketch
335
360
  # @return [nil] nil
336
361
  #
337
362
  def angleMode (mode)
338
- @angleScale__ = case mode
363
+ @angleScale__ = case mode.upcase.to_sym
339
364
  when RADIANS then Utility::RAD2DEG__
340
365
  when DEGREES then 1.0
341
366
  else raise ArgumentError, "invalid angle mode: #{mode}"
@@ -523,6 +548,23 @@ module RubySketch
523
548
  nil
524
549
  end
525
550
 
551
+ def textWidth (str)
552
+ @painter__.font.width str
553
+ end
554
+
555
+ def textAscent ()
556
+ @painter__.font.ascent
557
+ end
558
+
559
+ def textDescent ()
560
+ @painter__.font.descent
561
+ end
562
+
563
+ def textAlign (horizontal, vertical = BASELINE)
564
+ @textAlignH__ = horizontal
565
+ @textAlignV__ = vertical
566
+ end
567
+
526
568
  # @private
527
569
  def setFont__ (name, size)
528
570
  size = 256 if size && size > 256
@@ -758,15 +800,35 @@ module RubySketch
758
800
  #
759
801
  # @overload text(str)
760
802
  # @overload text(str, x, y)
803
+ # @overload text(str, a, b, c, d)
761
804
  #
762
805
  # @param str [String] text to draw
763
806
  # @param x [Numeric] horizontal position of the text
764
807
  # @param y [Numeric] vertical position of the text
808
+ # @param a [Numeric] equivalent to parameters of the rect(), see rectMode()
809
+ # @param b [Numeric] equivalent to parameters of the rect(), see rectMode()
810
+ # @param c [Numeric] equivalent to parameters of the rect(), see rectMode()
811
+ # @param d [Numeric] equivalent to parameters of the rect(), see rectMode()
765
812
  #
766
813
  # @return [nil] nil
767
814
  #
768
- def text (str, x, y)
815
+ def text (str, x, y, x2 = nil, y2 = nil)
769
816
  assertDrawing__
817
+ if x2
818
+ raise ArgumentError, "missing y2 parameter" unless y2
819
+ x, y, w, h = toXYWH__ @rectMode__, x, y, x2, y2
820
+ case @textAlignH__
821
+ when RIGHT then x += w - @painter__.font.width(str)
822
+ when CENTER then x += (w - @painter__.font.width(str)) / 2
823
+ end
824
+ case @textAlignV__
825
+ when BOTTOM then y += h - @painter__.font.height
826
+ when CENTER then y += (h - @painter__.font.height) / 2
827
+ else
828
+ end
829
+ else
830
+ y -= @painter__.font.ascent
831
+ end
770
832
  @painter__.text str, x, y
771
833
  nil
772
834
  end
@@ -982,9 +1044,8 @@ module RubySketch
982
1044
  include GraphicsContext
983
1045
 
984
1046
  def initialize (width, height)
985
- setup__
986
- @image__ = Rays::Image.new width, height
987
- @painter__ = @image__.painter
1047
+ @image__ = Rays::Image.new width, height
1048
+ setup__ @image__.painter
988
1049
  end
989
1050
 
990
1051
  def beginDraw ()
@@ -1288,7 +1349,10 @@ module RubySketch
1288
1349
 
1289
1350
  # @private
1290
1351
  def setup__ (window)
1291
- super()
1352
+ @window__ = window
1353
+ @image__ = @window__.canvas
1354
+ super @window__.canvas_painter.paint {background 0.8}
1355
+
1292
1356
  @loop__ = true
1293
1357
  @redraw__ = false
1294
1358
  @frameCount__ = 0
@@ -1297,12 +1361,6 @@ module RubySketch
1297
1361
  @mousePressed__ = false
1298
1362
  @touches__ = []
1299
1363
 
1300
- @window__ = window
1301
- @image__ = @window__.canvas
1302
- @painter__ = @window__.canvas_painter
1303
-
1304
- @painter__.miter_limit = 10
1305
-
1306
1364
  @window__.before_draw = proc {beginDraw}
1307
1365
  @window__.after_draw = proc {endDraw}
1308
1366
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysketch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-16 00:00:00.000000000 Z
11
+ date: 2020-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard