pixelflow_canvas 0.7.3 → 0.7.5

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +674 -0
  3. data/docs/.gitignore +15 -0
  4. data/docs/Gemfile +7 -0
  5. data/docs/Gemfile.lock +92 -0
  6. data/{LICENSE.txt → docs/LICENSE} +6 -6
  7. data/docs/README.md +174 -0
  8. data/docs/_config.yml +11 -0
  9. data/docs/advanced_use.md +37 -0
  10. data/docs/drawing_things.md +296 -0
  11. data/docs/images/4x6.png +0 -0
  12. data/docs/images/6x10.png +0 -0
  13. data/docs/images/7x13.png +0 -0
  14. data/docs/images/7x13B.png +0 -0
  15. data/docs/images/8x13.png +0 -0
  16. data/docs/images/8x13B.png +0 -0
  17. data/docs/images/9x15.png +0 -0
  18. data/docs/images/9x15B.png +0 -0
  19. data/docs/images/code/0ba813cd6b7e0ae0.png +0 -0
  20. data/docs/images/code/30c5ac94e5fa22ba.png +0 -0
  21. data/docs/images/code/3871051301832e44.png +0 -0
  22. data/docs/images/code/40acf0284459aa0e.png +0 -0
  23. data/docs/images/code/4eb9d4f97e05c739.png +0 -0
  24. data/docs/images/code/584e2ee3b7526718.png +0 -0
  25. data/docs/images/code/7fa15cea8c83a542.png +0 -0
  26. data/docs/images/code/809d9ce7d7a8ce6c.png +0 -0
  27. data/docs/images/code/85abc3576f6d78b1.png +0 -0
  28. data/docs/images/code/ec32331b354119d2.png +0 -0
  29. data/docs/images/code/ef667cfe7ff65c27.png +0 -0
  30. data/docs/index.md +126 -0
  31. data/docs/palettes.md +3192 -0
  32. data/docs/render-docs.rb +98 -0
  33. data/lib/pixelflow_canvas/palettes.yaml +257 -0
  34. data/lib/pixelflow_canvas/version.rb +1 -1
  35. data/lib/pixelflow_canvas.rb +28 -13
  36. metadata +33 -9
  37. data/sig/pixelflow_canvas.rbs +0 -4
  38. data/test-anaglyph.rb +0 -15
  39. data/test-sirds.rb +0 -46
  40. data/test-triangle.rb +0 -25
  41. data/test-turtle.rb +0 -14
  42. data/test.rb +0 -36
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'stringio'
4
+ require 'yaml'
5
+ require '../lib/pixelflow_canvas'
6
+ require 'digest'
7
+ require 'fileutils'
8
+
9
+ palettes = YAML.load(File.read('../lib/pixelflow_canvas/palettes.yaml'))
10
+
11
+ s = StringIO.open do |io|
12
+ palettes.each do |name, palette|
13
+ io.puts
14
+ io.puts "#### #{name}"
15
+ io.puts
16
+ io.puts "<div class='swatches'>"
17
+ palette.each.with_index do |color, i|
18
+ io.puts "<span style='background-color: #{color}'><span>#{i}</span></span>"
19
+ end
20
+ io.puts "</div>"
21
+ end
22
+ io.string
23
+ end
24
+
25
+ readme = File.read('palettes.md')
26
+ readme.sub!(/<!-- palettes start -->(.*?)<!-- palettes end -->/m, "<!-- palettes start -->\n#{s}\n<!-- palettes end -->")
27
+ File.write('palettes.md', readme)
28
+
29
+ s = StringIO.open do |io|
30
+ Dir['../lib/pixelflow_canvas/fonts/*.bdf'].sort.each do |path|
31
+ font = File.basename(path).split('.').first
32
+ width = font.split('x').first.to_i
33
+ height = font.split('x').last.to_i + 1
34
+ scale = 8
35
+ png_path = "images/#{font}.png"
36
+ unless File.exist?(png_path)
37
+ Pixelflow::Canvas.new(width * 26 * scale + 2 * scale, height * 4 * scale + 2 * scale, :palette) do
38
+ set_draw_mode(:buffered)
39
+ set_color(15)
40
+ fill_rect(0, 0, width * 26 * scale + 2 * scale, height * 4 * scale + 2 * scale)
41
+ set_color(0)
42
+ draw_text(scale, scale, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', font, 8)
43
+ draw_text(scale, height * 8 + scale, 'abcdefghijklmnopqrstuvwxyz', font, 8)
44
+ draw_text(scale, height * 8 * 2 + scale, '`1234567890-=~!@#$%^&*()_+', font, 8)
45
+ draw_text(scale, height * 8 * 3 + scale, ',./<>?;\':"[]{}|\\äöüÄÖÜß°éµ', font, 8)
46
+ flip()
47
+ save_as_png(png_path)
48
+ end
49
+ end
50
+ io.puts
51
+ io.puts "#### #{font}"
52
+ io.puts
53
+ io.puts "<img src='#{png_path}' alt='#{font}'>"
54
+ end
55
+ io.string
56
+ end
57
+
58
+ readme = File.read('drawing_things.md')
59
+ readme.sub!(/<!-- fonts start -->(.*?)<!-- fonts end -->/m, "<!-- fonts start -->\n#{s}\n<!-- fonts end -->")
60
+ File.write('drawing_things.md', readme)
61
+
62
+ Dir['*.md'].each do |path|
63
+ s = File.read(path)
64
+ i = 0
65
+ loop do
66
+ i0 = s.index('<!-- code begin', i)
67
+ break unless i0
68
+ i = i0 + 1
69
+ i1 = s.index('code end -->', i0)
70
+ snippet = s[i0+15..i1-1]
71
+ snippet.strip!
72
+ sha1 = Digest::SHA1.hexdigest(snippet)[0, 16]
73
+ png_path = "images/code/#{sha1}.png"
74
+ code = StringIO.open do |io|
75
+ io.puts "require 'pixelflow_canvas'"
76
+ io.print "canvas = "
77
+ io.puts snippet
78
+ io.puts "canvas.save_as_png('#{png_path}')"
79
+ io.string
80
+ end
81
+ puts '-' * 20
82
+ puts code
83
+ puts '-' * 20
84
+ unless File.exist?(png_path)
85
+ FileUtils.mkpath(File.dirname(png_path))
86
+ puts "CREATING #{png_path}"
87
+ puts code
88
+ IO.popen('ruby', 'r+') do |io|
89
+ io.write(code)
90
+ io.close_write
91
+ io.read
92
+ end
93
+ end
94
+ newline_index = s.index("\n", i1)
95
+ s[i1+12..newline_index] = "<img class='full' src='#{png_path}'>\n"
96
+ end
97
+ File.open(path, 'w') { |f| f.write(s) }
98
+ end
@@ -2419,6 +2419,263 @@
2419
2419
  - "#85c448"
2420
2420
  - "#439d40"
2421
2421
  - "#29694e"
2422
+ :vga:
2423
+ - "#000000"
2424
+ - "#0000aa"
2425
+ - "#00aa00"
2426
+ - "#00aaaa"
2427
+ - "#aa0000"
2428
+ - "#aa00aa"
2429
+ - "#aa5500"
2430
+ - "#aaaaaa"
2431
+ - "#555555"
2432
+ - "#5555ff"
2433
+ - "#55ff55"
2434
+ - "#55ffff"
2435
+ - "#ff5555"
2436
+ - "#ff55ff"
2437
+ - "#ffff55"
2438
+ - "#ffffff"
2439
+ - "#000000"
2440
+ - "#141414"
2441
+ - "#202020"
2442
+ - "#2c2c2c"
2443
+ - "#383838"
2444
+ - "#454545"
2445
+ - "#515151"
2446
+ - "#616161"
2447
+ - "#717171"
2448
+ - "#828282"
2449
+ - "#929292"
2450
+ - "#a2a2a2"
2451
+ - "#b6b6b6"
2452
+ - "#cbcbcb"
2453
+ - "#e3e3e3"
2454
+ - "#ffffff"
2455
+ - "#0000ff"
2456
+ - "#4100ff"
2457
+ - "#7d00ff"
2458
+ - "#be00ff"
2459
+ - "#ff00ff"
2460
+ - "#ff00be"
2461
+ - "#ff007d"
2462
+ - "#ff0041"
2463
+ - "#ff0000"
2464
+ - "#ff4100"
2465
+ - "#ff7d00"
2466
+ - "#ffbe00"
2467
+ - "#ffff00"
2468
+ - "#beff00"
2469
+ - "#7dff00"
2470
+ - "#41ff00"
2471
+ - "#00ff00"
2472
+ - "#00ff41"
2473
+ - "#00ff7d"
2474
+ - "#00ffbe"
2475
+ - "#00ffff"
2476
+ - "#00beff"
2477
+ - "#007dff"
2478
+ - "#0041ff"
2479
+ - "#7d7dff"
2480
+ - "#9e7dff"
2481
+ - "#be7dff"
2482
+ - "#df7dff"
2483
+ - "#ff7dff"
2484
+ - "#ff7ddf"
2485
+ - "#ff7dbe"
2486
+ - "#ff7d9e"
2487
+ - "#ff7d7d"
2488
+ - "#ff9e7d"
2489
+ - "#ffbe7d"
2490
+ - "#ffdf7d"
2491
+ - "#ffff7d"
2492
+ - "#dfff7d"
2493
+ - "#beff7d"
2494
+ - "#9eff7d"
2495
+ - "#7dff7d"
2496
+ - "#7dff9e"
2497
+ - "#7dffbe"
2498
+ - "#7dffdf"
2499
+ - "#7dffff"
2500
+ - "#7ddfff"
2501
+ - "#7dbeff"
2502
+ - "#7d9eff"
2503
+ - "#b6b6ff"
2504
+ - "#c7b6ff"
2505
+ - "#dbb6ff"
2506
+ - "#ebb6ff"
2507
+ - "#ffb6ff"
2508
+ - "#ffb6eb"
2509
+ - "#ffb6db"
2510
+ - "#ffb6c7"
2511
+ - "#ffb6b6"
2512
+ - "#ffc7b6"
2513
+ - "#ffdbb6"
2514
+ - "#ffebb6"
2515
+ - "#ffffb6"
2516
+ - "#ebffb6"
2517
+ - "#dbffb6"
2518
+ - "#c7ffb6"
2519
+ - "#b6ffb6"
2520
+ - "#b6ffc7"
2521
+ - "#b6ffdb"
2522
+ - "#b6ffeb"
2523
+ - "#b6ffff"
2524
+ - "#b6ebff"
2525
+ - "#b6dbff"
2526
+ - "#b6c7ff"
2527
+ - "#000071"
2528
+ - "#1c0071"
2529
+ - "#380071"
2530
+ - "#550071"
2531
+ - "#710071"
2532
+ - "#710055"
2533
+ - "#710038"
2534
+ - "#71001c"
2535
+ - "#710000"
2536
+ - "#711c00"
2537
+ - "#713800"
2538
+ - "#715500"
2539
+ - "#717100"
2540
+ - "#557100"
2541
+ - "#387100"
2542
+ - "#1c7100"
2543
+ - "#007100"
2544
+ - "#00711c"
2545
+ - "#007138"
2546
+ - "#007155"
2547
+ - "#007171"
2548
+ - "#005571"
2549
+ - "#003871"
2550
+ - "#001c71"
2551
+ - "#383871"
2552
+ - "#453871"
2553
+ - "#553871"
2554
+ - "#613871"
2555
+ - "#713871"
2556
+ - "#713861"
2557
+ - "#713855"
2558
+ - "#713845"
2559
+ - "#713838"
2560
+ - "#714538"
2561
+ - "#715538"
2562
+ - "#716138"
2563
+ - "#717138"
2564
+ - "#617138"
2565
+ - "#557138"
2566
+ - "#457138"
2567
+ - "#387138"
2568
+ - "#387145"
2569
+ - "#387155"
2570
+ - "#387161"
2571
+ - "#387171"
2572
+ - "#386171"
2573
+ - "#385571"
2574
+ - "#384571"
2575
+ - "#515171"
2576
+ - "#595171"
2577
+ - "#615171"
2578
+ - "#695171"
2579
+ - "#715171"
2580
+ - "#715169"
2581
+ - "#715161"
2582
+ - "#715159"
2583
+ - "#715151"
2584
+ - "#715951"
2585
+ - "#716151"
2586
+ - "#716951"
2587
+ - "#717151"
2588
+ - "#697151"
2589
+ - "#617151"
2590
+ - "#597151"
2591
+ - "#517151"
2592
+ - "#517159"
2593
+ - "#517161"
2594
+ - "#517169"
2595
+ - "#517171"
2596
+ - "#516971"
2597
+ - "#516171"
2598
+ - "#515971"
2599
+ - "#000041"
2600
+ - "#100041"
2601
+ - "#200041"
2602
+ - "#300041"
2603
+ - "#410041"
2604
+ - "#410030"
2605
+ - "#410020"
2606
+ - "#410010"
2607
+ - "#410000"
2608
+ - "#411000"
2609
+ - "#412000"
2610
+ - "#413000"
2611
+ - "#414100"
2612
+ - "#304100"
2613
+ - "#204100"
2614
+ - "#104100"
2615
+ - "#004100"
2616
+ - "#004110"
2617
+ - "#004120"
2618
+ - "#004130"
2619
+ - "#004141"
2620
+ - "#003041"
2621
+ - "#002041"
2622
+ - "#001041"
2623
+ - "#202041"
2624
+ - "#282041"
2625
+ - "#302041"
2626
+ - "#382041"
2627
+ - "#412041"
2628
+ - "#412038"
2629
+ - "#412030"
2630
+ - "#412028"
2631
+ - "#412020"
2632
+ - "#412820"
2633
+ - "#413020"
2634
+ - "#413820"
2635
+ - "#414120"
2636
+ - "#384120"
2637
+ - "#304120"
2638
+ - "#284120"
2639
+ - "#204120"
2640
+ - "#204128"
2641
+ - "#204130"
2642
+ - "#204138"
2643
+ - "#204141"
2644
+ - "#203841"
2645
+ - "#203041"
2646
+ - "#202841"
2647
+ - "#2c2c41"
2648
+ - "#302c41"
2649
+ - "#342c41"
2650
+ - "#3c2c41"
2651
+ - "#412c41"
2652
+ - "#412c3c"
2653
+ - "#412c34"
2654
+ - "#412c30"
2655
+ - "#412c2c"
2656
+ - "#41302c"
2657
+ - "#41342c"
2658
+ - "#413c2c"
2659
+ - "#41412c"
2660
+ - "#3c412c"
2661
+ - "#34412c"
2662
+ - "#30412c"
2663
+ - "#2c412c"
2664
+ - "#2c4130"
2665
+ - "#2c4134"
2666
+ - "#2c413c"
2667
+ - "#2c4141"
2668
+ - "#2c3c41"
2669
+ - "#2c3441"
2670
+ - "#2c3041"
2671
+ - "#000000"
2672
+ - "#000000"
2673
+ - "#000000"
2674
+ - "#000000"
2675
+ - "#000000"
2676
+ - "#000000"
2677
+ - "#000000"
2678
+ - "#000000"
2422
2679
  :vines_flexible_linear_ramps:
2423
2680
  - "#150a1f"
2424
2681
  - "#280b26"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PixelflowCanvas
4
- VERSION = "0.7.3"
4
+ VERSION = "0.7.5"
5
5
  end
@@ -23,9 +23,10 @@ module Pixelflow
23
23
  :buffered => 1
24
24
  }
25
25
  COMPOSE_MODES = {
26
- :over => 0,
26
+ :copy => 0,
27
27
  :add => 1,
28
- :subtract => 2
28
+ :subtract => 2,
29
+ :multiply => 3,
29
30
  }
30
31
  INTERPOLATION_MODES = {
31
32
  :nearest => 0,
@@ -43,7 +44,7 @@ module Pixelflow
43
44
  @color_mode = :rgb
44
45
  @advance_mode = :right
45
46
  @draw_mode = :direct
46
- @compose_mode = :over
47
+ @compose_mode = :copy
47
48
  @palette = VGA_PALETTE.dup
48
49
  @socket = TCPSocket.new('127.0.0.1', 19223)
49
50
  set_size(width, height)
@@ -107,7 +108,7 @@ module Pixelflow
107
108
  unless COMPOSE_MODES.keys.include?(mode)
108
109
  raise "Invalid compose mode: #{mode}"
109
110
  end
110
- if mode != :over && @color_mode != :rgb
111
+ if mode != :copy && @color_mode != :rgb
111
112
  raise "Cannot switch compose mode to #{mode} in palette color mode!"
112
113
  end
113
114
  @compose_mode = mode
@@ -148,9 +149,9 @@ module Pixelflow
148
149
  (0...@height).each do |y|
149
150
  (0...@width).each do |x|
150
151
  i = @screen[source]
151
- buffer[offset + 0] = @palette[i + 0]
152
- buffer[offset + 1] = @palette[i + 1]
153
- buffer[offset + 2] = @palette[i + 2]
152
+ buffer[offset + 0] = @palette[i * 3+ 0]
153
+ buffer[offset + 1] = @palette[i * 3 + 1]
154
+ buffer[offset + 2] = @palette[i * 3 + 2]
154
155
  source += 1
155
156
  offset += 3
156
157
  end
@@ -197,6 +198,9 @@ module Pixelflow
197
198
  end
198
199
 
199
200
  def set_color(r, g = 0, b = 0)
201
+ r = r.to_i.clamp(0, 255)
202
+ g = g.to_i.clamp(0, 255)
203
+ b = b.to_i.clamp(0, 255)
200
204
  @r = r
201
205
  @g = g
202
206
  @b = b
@@ -273,6 +277,17 @@ module Pixelflow
273
277
  r = 255 if r > 255
274
278
  g = 255 if g > 255
275
279
  b = 255 if b > 255
280
+ elsif @compose_mode == :subtract
281
+ r = @screen[offset + 0] - r
282
+ g = @screen[offset + 1] - g
283
+ b = @screen[offset + 2] - b
284
+ r = 0 if r < 0
285
+ g = 0 if g < 0
286
+ b = 0 if b < 0
287
+ elsif @compose_mode == :multiply
288
+ r = (@screen[offset + 0] * r) / 255
289
+ g = (@screen[offset + 1] * g) / 255
290
+ b = (@screen[offset + 2] * b) / 255
276
291
  end
277
292
  @screen[offset + 0] = r
278
293
  @screen[offset + 1] = g
@@ -444,7 +459,7 @@ module Pixelflow
444
459
  fa2 = 4 * a2
445
460
  fb2 = 4 * b2
446
461
  x0 = 0
447
- y0 = b
462
+ y0 = rb
448
463
  sigma = 2 * b2 + a2 * (1 - 2 * rb)
449
464
  while b2 * x0 <= a2 * y0
450
465
  set_pixel(x + x0, y + y0)
@@ -458,7 +473,7 @@ module Pixelflow
458
473
  sigma += b2 * ((4 * x0) + 6)
459
474
  x0 += 1
460
475
  end
461
- x0 = a
476
+ x0 = ra
462
477
  y0 = 0
463
478
  sigma = 2 * a2 + b2 * (1 - 2 * ra)
464
479
  while a2 * y0 <= b2 * x0
@@ -485,7 +500,7 @@ module Pixelflow
485
500
  fa2 = 4 * a2
486
501
  fb2 = 4 * b2
487
502
  x0 = 0
488
- y0 = b
503
+ y0 = rb
489
504
  sigma = 2 * b2 + a2 * (1 - 2 * rb)
490
505
  while b2 * x0 <= a2 * y0
491
506
  (x - x0..x + x0).each do |i|
@@ -499,7 +514,7 @@ module Pixelflow
499
514
  sigma += b2 * ((4 * x0) + 6)
500
515
  x0 += 1
501
516
  end
502
- x0 = a
517
+ x0 = ra
503
518
  y0 = 0
504
519
  sigma = 2 * a2 + b2 * (1 - 2 * ra)
505
520
  while a2 * y0 <= b2 * x0
@@ -740,13 +755,13 @@ module Pixelflow
740
755
  end
741
756
  end
742
757
 
743
- def self.text_width(s, font, options = {})
758
+ def text_width(s, font, scale = 1)
744
759
  Canvas.load_font(font)
745
760
  width = 0
746
761
  s.each_char do |c|
747
762
  glyph = @@cypher_fonts[font][c.ord]
748
763
  if glyph
749
- width += glyph[:width]
764
+ width += glyph[:width] * scale
750
765
  end
751
766
  end
752
767
  width
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixelflow_canvas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Specht
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-28 00:00:00.000000000 Z
11
+ date: 2024-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chunky_png
@@ -32,9 +32,39 @@ executables: []
32
32
  extensions: []
33
33
  extra_rdoc_files: []
34
34
  files:
35
- - LICENSE.txt
35
+ - LICENSE
36
36
  - README.md
37
37
  - Rakefile
38
+ - docs/.gitignore
39
+ - docs/Gemfile
40
+ - docs/Gemfile.lock
41
+ - docs/LICENSE
42
+ - docs/README.md
43
+ - docs/_config.yml
44
+ - docs/advanced_use.md
45
+ - docs/drawing_things.md
46
+ - docs/images/4x6.png
47
+ - docs/images/6x10.png
48
+ - docs/images/7x13.png
49
+ - docs/images/7x13B.png
50
+ - docs/images/8x13.png
51
+ - docs/images/8x13B.png
52
+ - docs/images/9x15.png
53
+ - docs/images/9x15B.png
54
+ - docs/images/code/0ba813cd6b7e0ae0.png
55
+ - docs/images/code/30c5ac94e5fa22ba.png
56
+ - docs/images/code/3871051301832e44.png
57
+ - docs/images/code/40acf0284459aa0e.png
58
+ - docs/images/code/4eb9d4f97e05c739.png
59
+ - docs/images/code/584e2ee3b7526718.png
60
+ - docs/images/code/7fa15cea8c83a542.png
61
+ - docs/images/code/809d9ce7d7a8ce6c.png
62
+ - docs/images/code/85abc3576f6d78b1.png
63
+ - docs/images/code/ec32331b354119d2.png
64
+ - docs/images/code/ef667cfe7ff65c27.png
65
+ - docs/index.md
66
+ - docs/palettes.md
67
+ - docs/render-docs.rb
38
68
  - lib/pixelflow_canvas.rb
39
69
  - lib/pixelflow_canvas/fonts/4x6.bdf
40
70
  - lib/pixelflow_canvas/fonts/6x10.bdf
@@ -47,12 +77,6 @@ files:
47
77
  - lib/pixelflow_canvas/palettes.yaml
48
78
  - lib/pixelflow_canvas/version.rb
49
79
  - lib/pixelflow_canvas/vga_palette.rb
50
- - sig/pixelflow_canvas.rbs
51
- - test-anaglyph.rb
52
- - test-sirds.rb
53
- - test-triangle.rb
54
- - test-turtle.rb
55
- - test.rb
56
80
  homepage: https://github.com/specht/pixelflow_canvas_ruby
57
81
  licenses:
58
82
  - GPL-3.0-only
@@ -1,4 +0,0 @@
1
- module PixelflowCanvas
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
- end
data/test-anaglyph.rb DELETED
@@ -1,15 +0,0 @@
1
- require './lib/pixelflow_canvas.rb'
2
-
3
- width = 256
4
- height = 256
5
-
6
- canvas = Pixelflow::Canvas.new(width, height, :rgb)
7
- canvas.set_compose_mode(:add)
8
-
9
- canvas.set_color(255, 0, 0)
10
- canvas.draw_line(10, 10, 100, 200)
11
-
12
- canvas.set_color(0, 255, 0)
13
- canvas.draw_line(20, 10, 90, 200)
14
-
15
- canvas.save_as_png('anaglyph.png')
data/test-sirds.rb DELETED
@@ -1,46 +0,0 @@
1
- require './lib/pixelflow_canvas.rb'
2
- require 'json'
3
-
4
- def depth(x, y)
5
- r = (x - 128) ** 2 + (y - 128) ** 2
6
- return 10 if r < 5000
7
- r * 0.001
8
- end
9
-
10
- width = 256
11
- height = 256
12
-
13
- canvas = Pixelflow::Canvas.new(width, height, :palette)
14
- (0...64).each { |i| canvas.set_palette(i, i * 4, i * 4, i * 4) }
15
- (0...height).each do |y|
16
- (0...48).each do |x|
17
- canvas.set_pixel(x, y, rand(64))
18
- end
19
- end
20
- (0...height).each do |y|
21
- sx = 0
22
- dx = 48
23
- while dx < width
24
- c = canvas.get_pixel(sx, y)
25
- canvas.set_pixel(dx, y, c)
26
- dx += 1
27
- sx = dx - 48 + depth(dx - 24, y)
28
- end
29
- end
30
-
31
- # (0...height).each do |y|
32
- # (0...width).each do |x|
33
- # d = depth(x, y)
34
- # canvas.set_pixel(x, y, d)
35
- # end
36
- # end
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
data/test-triangle.rb DELETED
@@ -1,25 +0,0 @@
1
- require './lib/pixelflow_canvas.rb'
2
-
3
- width = 256
4
- height = 256
5
-
6
- canvas = Pixelflow::Canvas.new(width, height, :palette)
7
- turtle = Pixelflow::Turtle.new(canvas)
8
- turtle.set_color(13)
9
-
10
- def draw(canvas, x0, y0, x1, y1, x2, y2, level)
11
- canvas.draw_triangle(x0, y0, x1, y1, x2, y2)
12
- mx0 = (x0 + x1) / 2
13
- my0 = (y0 + y1) / 2
14
- mx1 = (x1 + x2) / 2
15
- my1 = (y1 + y2) / 2
16
- mx2 = (x2 + x0) / 2
17
- my2 = (y2 + y0) / 2
18
- if level > 0
19
- draw(canvas, x0, y0, mx0, my0, mx2, my2, level - 1)
20
- draw(canvas, x1, y1, mx1, my1, mx0, my0, level - 1)
21
- draw(canvas, x2, y2, mx2, my2, mx1, my1, level - 1)
22
- end
23
- end
24
-
25
- draw(canvas, 128, 10, 10, 186, 246, 246, 5)
data/test-turtle.rb DELETED
@@ -1,14 +0,0 @@
1
- require './lib/pixelflow_canvas.rb'
2
-
3
- width = 256
4
- height = 256
5
-
6
- canvas = Pixelflow::Canvas.new(width, height, :palette)
7
- turtle = Pixelflow::Turtle.new(canvas)
8
- turtle.set_color(13)
9
-
10
- turtle.forward(10)
11
- turtle.turn_right(90)
12
- turtle.forward(10)
13
- turtle.turn_right(90)
14
- turtle.forward(10)
data/test.rb DELETED
@@ -1,36 +0,0 @@
1
- require './lib/pixelflow_canvas.rb'
2
-
3
- def depth(x, y)
4
- r = (x - 128) ** 2 + (y - 128) ** 2
5
- return 10 if r < 5000
6
- r * 0.001
7
- end
8
-
9
- width = 256
10
- height = 256
11
-
12
- canvas = Pixelflow::Canvas.new(width, height, :palette)
13
- (0...64).each { |i| canvas.set_palette(i, i, i, i) }
14
- (0...height).each do |y|
15
- (0...48).each do |x|
16
- canvas.set_pixel(x, y, rand(64))
17
- end
18
- end
19
- (0...height).each do |y|
20
- sx = 0
21
- dx = 48
22
- while dx < width
23
- c = canvas.get_pixel(sx, y)
24
- canvas.set_pixel(dx, y, c)
25
- dx += 1
26
- sx = dx - 48 + depth(dx - 24, y)
27
- end
28
- end
29
-
30
- # (0...height).each do |y|
31
- # (0...width).each do |x|
32
- # d = depth(x, y)
33
- # canvas.set_pixel(x, y, d)
34
- # end
35
- # end
36
-