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 +4 -4
- data/lib/pixelflow_canvas/version.rb +1 -1
- data/lib/pixelflow_canvas.rb +40 -0
- data/test-sirds.rb +10 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9d986c038fa69c140029fb55018d3417eddc28c56ae7a52e07ea026f3a5baae
|
4
|
+
data.tar.gz: 7ba95e9cae2debb5e558792c71cb50928d04f0224c2f619d855f640a4865cf47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12f44c4d681080c1d484a2608bfff247c3b9359d786c197b14c5eaead40fb4211fb037abf11cb5e2325e6566858f997a706730e4cf57fe78cf2f1a67e526bd46
|
7
|
+
data.tar.gz: 724177d21f3a1fc53600e9b1728c8f472eee08821c0ead60f83ab5805943d8d7c215e9e79934ee028f7f148b2db3a50d929d570bca1c86ce39eff80699d8afaf
|
data/lib/pixelflow_canvas.rb
CHANGED
@@ -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
|
-
|
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
|