rubysketch 0.3.0 → 0.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a044fb62451ebcd69c89a5a9cb2781c747d4298142a9e6828f71cdbc63da999
4
- data.tar.gz: 6dade74829619df93d947160f930fdc19563cc9042b826ef7b8b4bd6015cfb00
3
+ metadata.gz: 1f63f771b469d060307fa88a2992cc373c2439cec8facf531984533303f0a023
4
+ data.tar.gz: 5787db4cf63408b746fb538a6a612c2b90f440e08c1ded38b382b69200d372c9
5
5
  SHA512:
6
- metadata.gz: 7801ba15e151b5c519047b2145b71e820428b2b9601c9fccaffd1eb6d6b67ff344b6aa7b0cd12c9151d431df01d201c5cc63e3a8ffa92d854b5934a2357fb8ec
7
- data.tar.gz: 44f7ad0c273aa88974356dfcc3fbc7d080d8bccb023ab4137db23f2d7b85b0fa2b06b590a97b487f803575d903a87a8747f26ff3e0518b5c76623f26dcafd35d
6
+ metadata.gz: 1bcb9bfe5d0f1732c7e44a509d8c5e83b5b84f28bb988fe3e4d9083cb342b6fc4cb44df48c0f176a18599cfd334583e808db41dadb377ac5c78436ed55533c29
7
+ data.tar.gz: ac78631d29b3843a32f376b7330011477523e33f40b1adb5d40dc1a66335bc294fdf91720146194b016497e4444b9531dbdc9529723c936c939c518df343c671
@@ -1,6 +1,18 @@
1
1
  # RubySketch ChangeLog
2
2
 
3
3
 
4
+ ## [0.3.1] - 2020-07-17
5
+
6
+ - add touchStarted(), touchEnded(), touchMoved() and touches()
7
+ - make all event handler drawable
8
+ - limit font max size to 256
9
+
10
+
11
+ ## [0.3.0] - 2020-05-21
12
+
13
+ - add createGraphics()
14
+
15
+
4
16
  ## [0.2.7] - 2020-04-17
5
17
 
6
18
  - add strokeCap() and strokeJoin()
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -143,6 +143,30 @@ module RubySketch
143
143
  end# TextBounds
144
144
 
145
145
 
146
+ # Touch object.
147
+ #
148
+ class Touch
149
+
150
+ # Horizontal position of touch
151
+ #
152
+ attr_reader :x
153
+
154
+ # Vertical position of touch
155
+ #
156
+ attr_reader :y
157
+
158
+ # @private
159
+ def initialize (x, y)
160
+ @x, @y = x, y
161
+ end
162
+
163
+ def id ()
164
+ raise NotImplementedError
165
+ end
166
+
167
+ end# Touch
168
+
169
+
146
170
  # Drawing context
147
171
  #
148
172
  module GraphicsContext
@@ -479,26 +503,32 @@ module RubySketch
479
503
  # Sets font.
480
504
  #
481
505
  # @param name [String] font name
482
- # @param size [Numeric] font size
506
+ # @param size [Numeric] font size (max 256)
483
507
  #
484
508
  # @return [Font] current font
485
509
  #
486
510
  def textFont (name = nil, size = nil)
487
- @painter__.font name, size if name || size
511
+ setFont__ name, size if name || size
488
512
  Font.new @painter__.font
489
513
  end
490
514
 
491
515
  # Sets text size.
492
516
  #
493
- # @param size [Numeric] font size
517
+ # @param size [Numeric] font size (max 256)
494
518
  #
495
519
  # @return [nil] nil
496
520
  #
497
521
  def textSize (size)
498
- @painter__.font @painter__.font.name, size
522
+ setFont__ @painter__.font.name, size
499
523
  nil
500
524
  end
501
525
 
526
+ # @private
527
+ def setFont__ (name, size)
528
+ size = 256 if size && size > 256
529
+ @painter__.font name, size
530
+ end
531
+
502
532
  # Clears screen.
503
533
  #
504
534
  # @overload background(str)
@@ -1262,11 +1292,10 @@ module RubySketch
1262
1292
  @loop__ = true
1263
1293
  @redraw__ = false
1264
1294
  @frameCount__ = 0
1265
- @mouseX__ =
1266
- @mouseY__ =
1267
- @mousePrevX__ =
1268
- @mousePrevY__ = 0
1295
+ @mousePos__ =
1296
+ @mousePrevPos__ = Rays::Point.new 0
1269
1297
  @mousePressed__ = false
1298
+ @touches__ = []
1270
1299
 
1271
1300
  @window__ = window
1272
1301
  @image__ = @window__.canvas
@@ -1274,58 +1303,53 @@ module RubySketch
1274
1303
 
1275
1304
  @painter__.miter_limit = 10
1276
1305
 
1277
- drawFrame = -> event {
1306
+ @window__.before_draw = proc {beginDraw}
1307
+ @window__.after_draw = proc {endDraw}
1308
+
1309
+ drawFrame = -> {
1278
1310
  @image__ = @window__.canvas
1279
1311
  @painter__ = @window__.canvas_painter
1280
1312
  begin
1281
1313
  push
1282
- @drawBlock__.call event if @drawBlock__
1314
+ @drawBlock__.call if @drawBlock__
1283
1315
  ensure
1284
1316
  pop
1285
1317
  @frameCount__ += 1
1286
1318
  end
1287
1319
  }
1288
1320
 
1289
- updateMouseState = -> x, y, pressed = nil {
1290
- @mouseX__ = x
1291
- @mouseY__ = y
1292
- @mousePressed__ = pressed if pressed != nil
1293
- }
1294
-
1295
- updateMousePrevPos = -> {
1296
- @mousePrevX__ = @mouseX__
1297
- @mousePrevY__ = @mouseY__
1298
- }
1299
-
1300
- @window__.before_draw = proc {beginDraw}
1301
- @window__.after_draw = proc {endDraw}
1302
-
1303
1321
  @window__.draw = proc do |e|
1304
1322
  if @loop__ || @redraw__
1305
1323
  @redraw__ = false
1306
- drawFrame.call e
1324
+ drawFrame.call
1307
1325
  end
1308
- updateMousePrevPos.call
1326
+ @mousePrevPos__ = @mousePos__
1309
1327
  end
1310
1328
 
1329
+ updatePointerStates = -> event, pressed = nil {
1330
+ @mousePos__ = event.pos
1331
+ @mousePressed__ = pressed if pressed != nil
1332
+ @touches__ = event.positions.map {|pos| Touch.new pos.x, pos.y}
1333
+ }
1334
+
1311
1335
  @window__.pointer_down = proc do |e|
1312
- updateMouseState.call e.x, e.y, true
1313
- @mousePressedBlock__.call e if @mousePressedBlock__
1336
+ updatePointerStates.call e, true
1337
+ (@touchStartedBlock__ || @mousePressedBlock__)&.call
1314
1338
  end
1315
1339
 
1316
1340
  @window__.pointer_up = proc do |e|
1317
- updateMouseState.call e.x, e.y, false
1318
- @mouseReleasedBlock__.call e if @mouseReleasedBlock__
1341
+ updatePointerStates.call e, false
1342
+ (@touchEndedBlock__ || @mouseReleasedBlock__)&.call
1319
1343
  end
1320
1344
 
1321
1345
  @window__.pointer_move = proc do |e|
1322
- updateMouseState.call e.x, e.y
1323
- @mouseMovedBlock__.call e if @mouseMovedBlock__
1346
+ updatePointerStates.call e
1347
+ (@touchMovedBlock__ || @mouseMovedBlock__)&.call
1324
1348
  end
1325
1349
 
1326
1350
  @window__.pointer_drag = proc do |e|
1327
- updateMouseState.call e.x, e.y
1328
- @mouseDraggedBlock__.call e if @mouseDraggedBlock__
1351
+ updatePointerStates.call e
1352
+ (@touchMovedBlock__ || @mouseDraggedBlock__)&.call
1329
1353
  end
1330
1354
  end
1331
1355
 
@@ -1368,6 +1392,21 @@ module RubySketch
1368
1392
  nil
1369
1393
  end
1370
1394
 
1395
+ def touchStarted (&block)
1396
+ @touchStartedBlock__ = block if block
1397
+ nil
1398
+ end
1399
+
1400
+ def touchEnded (&block)
1401
+ @touchEndedBlock__ = block if block
1402
+ nil
1403
+ end
1404
+
1405
+ def touchMoved (&block)
1406
+ @touchMovedBlock__ = block if block
1407
+ nil
1408
+ end
1409
+
1371
1410
  # @private
1372
1411
  private def size__ (width, height)
1373
1412
  raise 'size() must be called on startup or setup block' if @started__
@@ -1416,7 +1455,7 @@ module RubySketch
1416
1455
  # @return [Numeric] horizontal position of mouse
1417
1456
  #
1418
1457
  def mouseX ()
1419
- @mouseX__
1458
+ @mousePos__.x
1420
1459
  end
1421
1460
 
1422
1461
  # Returns mouse y position
@@ -1424,7 +1463,7 @@ module RubySketch
1424
1463
  # @return [Numeric] vertical position of mouse
1425
1464
  #
1426
1465
  def mouseY ()
1427
- @mouseY__
1466
+ @mousePos__.y
1428
1467
  end
1429
1468
 
1430
1469
  # Returns mouse x position in previous frame
@@ -1432,7 +1471,7 @@ module RubySketch
1432
1471
  # @return [Numeric] horizontal position of mouse
1433
1472
  #
1434
1473
  def pmouseX ()
1435
- @mousePrevX__
1474
+ @mousePrevPos__.x
1436
1475
  end
1437
1476
 
1438
1477
  # Returns mouse y position in previous frame
@@ -1440,7 +1479,15 @@ module RubySketch
1440
1479
  # @return [Numeric] vertical position of mouse
1441
1480
  #
1442
1481
  def pmouseY ()
1443
- @mousePrevY__
1482
+ @mousePrevPos__.y
1483
+ end
1484
+
1485
+ # Returns array of touches
1486
+ #
1487
+ # @return [Array] Touch objects
1488
+ #
1489
+ def touches ()
1490
+ @touches__
1444
1491
  end
1445
1492
 
1446
1493
  # Enables calling draw block on every frame.
@@ -42,12 +42,12 @@ module RubySketch
42
42
  end
43
43
 
44
44
  def on_draw (e)
45
- draw_canvas {call_block @draw, e}
45
+ draw_canvas {call_block @draw, e} if @draw
46
46
  e.painter.image @canvas
47
47
  end
48
48
 
49
49
  def on_key (e)
50
- call_block @key, e
50
+ draw_canvas {call_block @key, e} if @key
51
51
  end
52
52
 
53
53
  def on_pointer (e)
@@ -56,16 +56,16 @@ module RubySketch
56
56
  when :up then @pointer_up
57
57
  when :move then e.drag? ? @pointer_drag : @pointer_move
58
58
  end
59
- call_block block, e if block
59
+ draw_canvas {call_block block, e} if block
60
60
  end
61
61
 
62
62
  def on_motion (e)
63
- call_block @motion, e
63
+ draw_canvas {call_block @motion, e} if @motion
64
64
  end
65
65
 
66
66
  def on_resize (e)
67
67
  reset_canvas e.width, e.height if @auto_resize
68
- call_block @resize, e
68
+ draw_canvas {call_block @resize, e} if @resize
69
69
  end
70
70
 
71
71
  private
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.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-20 00:00:00.000000000 Z
11
+ date: 2020-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard