pixelflow_canvas 0.5.0 → 0.7.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/README.md +27 -21
- data/lib/pixelflow_canvas/palettes.yaml +2527 -0
- data/lib/pixelflow_canvas/version.rb +1 -1
- data/lib/pixelflow_canvas.rb +64 -0
- data/test-sirds.rb +10 -1
- metadata +2 -1
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
|
|
@@ -168,6 +169,30 @@ module Pixelflow
|
|
168
169
|
@socket.flush
|
169
170
|
end
|
170
171
|
|
172
|
+
def set_predefined_palette(key)
|
173
|
+
if key == :vga
|
174
|
+
@palette = VGA_PALETTE.dup
|
175
|
+
(0..255).each do |i|
|
176
|
+
@socket.write([3, i, @palette[i * 3 + 0], @palette[i * 3 + 1], @palette[i * 3 + 2]].pack('CCCCC'))
|
177
|
+
end
|
178
|
+
@socket.flush
|
179
|
+
else
|
180
|
+
@@palettes ||= YAML.load(File.read(File.join(File.dirname(__FILE__), 'pixelflow_canvas', 'palettes.yaml')))
|
181
|
+
if @@palettes[key]
|
182
|
+
@palette = [0] * 768
|
183
|
+
@@palettes[key].each_with_index do |color, i|
|
184
|
+
@palette[i * 3 + 0] = color[1, 2].to_i(16)
|
185
|
+
@palette[i * 3 + 1] = color[3, 2].to_i(16)
|
186
|
+
@palette[i * 3 + 2] = color[5, 2].to_i(16)
|
187
|
+
@socket.write([3, i, @palette[i * 3 + 0], @palette[i * 3 + 1], @palette[i * 3 + 2]].pack('CCCCC'))
|
188
|
+
end
|
189
|
+
@socket.flush
|
190
|
+
else
|
191
|
+
raise "Invalid predefined palette: #{key}"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
171
196
|
def move_to(x, y)
|
172
197
|
x = x.to_i
|
173
198
|
y = y.to_i
|
@@ -486,6 +511,7 @@ module Pixelflow
|
|
486
511
|
end
|
487
512
|
|
488
513
|
# FONT RENDERING
|
514
|
+
|
489
515
|
def self.load_font(font)
|
490
516
|
@@cypher_fonts ||= {}
|
491
517
|
return if @@cypher_fonts[font]
|
@@ -551,6 +577,44 @@ module Pixelflow
|
|
551
577
|
end
|
552
578
|
width
|
553
579
|
end
|
580
|
+
|
581
|
+
# EVENT POLLING
|
582
|
+
|
583
|
+
class Event
|
584
|
+
def initialize(data)
|
585
|
+
@data = data
|
586
|
+
end
|
587
|
+
|
588
|
+
attr_reader :data
|
589
|
+
|
590
|
+
def on(type, &block)
|
591
|
+
if type == :mouse_move && @data[0] == 3
|
592
|
+
yield(@data[1], @data[2])
|
593
|
+
end
|
594
|
+
end
|
595
|
+
end
|
596
|
+
|
597
|
+
def fetch_events(&block)
|
598
|
+
@socket.write([9].pack('C'))
|
599
|
+
@socket.flush
|
600
|
+
json = ''
|
601
|
+
loop do
|
602
|
+
begin
|
603
|
+
buffer = @socket.recv_nonblock(1024)
|
604
|
+
json += buffer
|
605
|
+
rescue IO::WaitReadable
|
606
|
+
break
|
607
|
+
end
|
608
|
+
end
|
609
|
+
return if json.empty?
|
610
|
+
json.split("\r\n").each do |line|
|
611
|
+
line.strip!
|
612
|
+
next if line.empty?
|
613
|
+
JSON.parse(line).each do |event|
|
614
|
+
yield Event.new(event)
|
615
|
+
end
|
616
|
+
end
|
617
|
+
end
|
554
618
|
end
|
555
619
|
|
556
620
|
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
|
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.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Specht
|
@@ -44,6 +44,7 @@ files:
|
|
44
44
|
- lib/pixelflow_canvas/fonts/8x13B.bdf
|
45
45
|
- lib/pixelflow_canvas/fonts/9x15.bdf
|
46
46
|
- lib/pixelflow_canvas/fonts/9x15B.bdf
|
47
|
+
- lib/pixelflow_canvas/palettes.yaml
|
47
48
|
- lib/pixelflow_canvas/version.rb
|
48
49
|
- lib/pixelflow_canvas/vga_palette.rb
|
49
50
|
- sig/pixelflow_canvas.rbs
|