pixelflow_canvas 0.7.4 → 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 +22 -10
  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.4"
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
@@ -276,6 +277,17 @@ module Pixelflow
276
277
  r = 255 if r > 255
277
278
  g = 255 if g > 255
278
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
279
291
  end
280
292
  @screen[offset + 0] = r
281
293
  @screen[offset + 1] = g
@@ -447,7 +459,7 @@ module Pixelflow
447
459
  fa2 = 4 * a2
448
460
  fb2 = 4 * b2
449
461
  x0 = 0
450
- y0 = b
462
+ y0 = rb
451
463
  sigma = 2 * b2 + a2 * (1 - 2 * rb)
452
464
  while b2 * x0 <= a2 * y0
453
465
  set_pixel(x + x0, y + y0)
@@ -461,7 +473,7 @@ module Pixelflow
461
473
  sigma += b2 * ((4 * x0) + 6)
462
474
  x0 += 1
463
475
  end
464
- x0 = a
476
+ x0 = ra
465
477
  y0 = 0
466
478
  sigma = 2 * a2 + b2 * (1 - 2 * ra)
467
479
  while a2 * y0 <= b2 * x0
@@ -488,7 +500,7 @@ module Pixelflow
488
500
  fa2 = 4 * a2
489
501
  fb2 = 4 * b2
490
502
  x0 = 0
491
- y0 = b
503
+ y0 = rb
492
504
  sigma = 2 * b2 + a2 * (1 - 2 * rb)
493
505
  while b2 * x0 <= a2 * y0
494
506
  (x - x0..x + x0).each do |i|
@@ -502,7 +514,7 @@ module Pixelflow
502
514
  sigma += b2 * ((4 * x0) + 6)
503
515
  x0 += 1
504
516
  end
505
- x0 = a
517
+ x0 = ra
506
518
  y0 = 0
507
519
  sigma = 2 * a2 + b2 * (1 - 2 * ra)
508
520
  while a2 * y0 <= b2 * x0
@@ -743,13 +755,13 @@ module Pixelflow
743
755
  end
744
756
  end
745
757
 
746
- def self.text_width(s, font, options = {})
758
+ def text_width(s, font, scale = 1)
747
759
  Canvas.load_font(font)
748
760
  width = 0
749
761
  s.each_char do |c|
750
762
  glyph = @@cypher_fonts[font][c.ord]
751
763
  if glyph
752
- width += glyph[:width]
764
+ width += glyph[:width] * scale
753
765
  end
754
766
  end
755
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.4
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
-