pixelflow_canvas 0.5.0 → 0.6.0

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: 1a859ae22e0f7d77595982f921f79fb9b71f1592b2e5a86d46c9ddcc7871744d
4
- data.tar.gz: c221a28c640d7952cd8ae52e2c003fe225c61898fcdc20b54f91bd30637fa3f8
3
+ metadata.gz: b9d986c038fa69c140029fb55018d3417eddc28c56ae7a52e07ea026f3a5baae
4
+ data.tar.gz: 7ba95e9cae2debb5e558792c71cb50928d04f0224c2f619d855f640a4865cf47
5
5
  SHA512:
6
- metadata.gz: ec1b3aa5cfdf55cb36ff108f0076760cddc469550a910a9b708c33029bbbe8483b37d66dd3c056ddb80f4d8194619f4f0a9722ef2f90981ad4fd8ff89e8a0cd6
7
- data.tar.gz: 354fce2d31d7cd6dece91d3c4e6529c8b004f2c65dcee162ca50602f514a2635493b61df59736ff577911f54447edacebadbdc245d05f10fa6b8e9146299cbf6
6
+ metadata.gz: 12f44c4d681080c1d484a2608bfff247c3b9359d786c197b14c5eaead40fb4211fb037abf11cb5e2325e6566858f997a706730e4cf57fe78cf2f1a67e526bd46
7
+ data.tar.gz: 724177d21f3a1fc53600e9b1728c8f472eee08821c0ead60f83ab5805943d8d7c215e9e79934ee028f7f148b2db3a50d929d570bca1c86ce39eff80699d8afaf
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PixelflowCanvas
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  end
@@ -3,6 +3,7 @@
3
3
  require_relative "pixelflow_canvas/version"
4
4
  require_relative "pixelflow_canvas/vga_palette.rb"
5
5
  require 'chunky_png'
6
+ require 'json'
6
7
  require 'socket'
7
8
  require 'time'
8
9
 
@@ -486,6 +487,7 @@ module Pixelflow
486
487
  end
487
488
 
488
489
  # FONT RENDERING
490
+
489
491
  def self.load_font(font)
490
492
  @@cypher_fonts ||= {}
491
493
  return if @@cypher_fonts[font]
@@ -551,6 +553,44 @@ module Pixelflow
551
553
  end
552
554
  width
553
555
  end
556
+
557
+ # EVENT POLLING
558
+
559
+ class Event
560
+ def initialize(data)
561
+ @data = data
562
+ end
563
+
564
+ attr_reader :data
565
+
566
+ def on(type, &block)
567
+ if type == :mouse_move && @data[0] == 3
568
+ yield(@data[1], @data[2])
569
+ end
570
+ end
571
+ end
572
+
573
+ def fetch_events(&block)
574
+ @socket.write([9].pack('C'))
575
+ @socket.flush
576
+ json = ''
577
+ loop do
578
+ begin
579
+ buffer = @socket.recv_nonblock(1024)
580
+ json += buffer
581
+ rescue IO::WaitReadable
582
+ break
583
+ end
584
+ end
585
+ return if json.empty?
586
+ json.split("\r\n").each do |line|
587
+ line.strip!
588
+ next if line.empty?
589
+ JSON.parse(line).each do |event|
590
+ yield Event.new(event)
591
+ end
592
+ end
593
+ end
554
594
  end
555
595
 
556
596
  class Turtle
data/test-sirds.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require './lib/pixelflow_canvas.rb'
2
+ require 'json'
2
3
 
3
4
  def depth(x, y)
4
5
  r = (x - 128) ** 2 + (y - 128) ** 2
@@ -34,4 +35,12 @@ end
34
35
  # end
35
36
  # end
36
37
 
37
- canvas.save_as_png('sirds.png')
38
+ i = 0
39
+ loop do
40
+ canvas.fetch_events do |event|
41
+ STDERR.puts event.to_json
42
+ end
43
+ canvas.ensure_max_fps(30)
44
+ i += 1
45
+ # STDERR.puts "\r #{i}"
46
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixelflow_canvas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Specht