peter_pan 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -7
- data/Gemfile +2 -0
- data/README.md +45 -28
- data/examples/bouncer_dream_cheeky.rb +62 -0
- data/examples/{dream_cheeky.rb → pan_dream_cheeky.rb} +0 -0
- data/examples/{to_screen.rb → pan_to_screen.rb} +0 -0
- data/lib/peter_pan.rb +4 -4
- data/peter_pan.gemspec +2 -2
- metadata +53 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 32dacbc0c05b114896f17cdcc1bae4f34be30ebb
|
4
|
+
data.tar.gz: 39d8c536659d1a6cb8646fb244f20f94858f2e58
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 08d0925b4cc12dfe91b09b6ec9c3a87be9c872f3d5633ba2ed48202991ce46672ef1110d74b47e1ad897918d48078cc4e478e8dbc2e48d5c6a53ab9628d30813
|
7
|
+
data.tar.gz: 54457998b07f238e54e25ab7fba97596fd09aecbebfde19f2f94c83b0493525ad85f054d75036f81e87d32ddf28a4d8775a1c49f040a9e802f91d6eff8aa2f45
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,46 +1,42 @@
|
|
1
|
-
|
1
|
+
### Peter Pan - a Ruby gem providing a virtual screen buffer with viewport panning. For the Dream Cheeky LED sign and others, also works just fine with computer screen.
|
2
2
|
|
3
3
|
Peter Pan gives you a large, virtual text frame buffer and a virtual
|
4
4
|
viewport you can move around over it. You can plot points or draw text in the
|
5
5
|
buffer and scroll the viewport over it to simulate scrolling text or scrolling
|
6
6
|
graphics.
|
7
7
|
|
8
|
-
|
9
|
-
it'll work for any thing that that accepts a formatted text string as input.
|
8
|
+
![Animated image of words panning over an LED display](https://github.com/xunker/peter_pan/raw/master/panning_text_example.gif)
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
It was written to make it easier to get text on the Dream Cheeky LED sign, but
|
11
|
+
it'll work for any thing that that accepts a formatted text string as input. It
|
12
|
+
will also work just fine on your computer screen.
|
14
13
|
|
15
|
-
This gem uses the "transpo" font from Lewis Clayton's dcled_ruby project
|
16
|
-
(https://github.com/Lewis-Clayton/dcled_ruby).
|
14
|
+
This gem uses the "transpo" font from Lewis Clayton's [dcled_ruby](https://github.com/Lewis-Clayton/dcled_ruby) project.
|
17
15
|
|
18
16
|
## Installation
|
19
17
|
|
20
|
-
Install normally:
|
18
|
+
Install normally: `$ gem install peter_pan`
|
21
19
|
|
22
|
-
|
20
|
+
And then require it normally: `require 'peter_pan'`
|
23
21
|
|
24
|
-
|
22
|
+
To write to a Dream Cheeky LED sign using `examples/*.rb`, also
|
23
|
+
install the most current version of the [dream-cheeky-led](https://github.com/Aupajo/dream-cheeky-led) gem:
|
25
24
|
|
26
|
-
```
|
27
|
-
|
25
|
+
```shell
|
26
|
+
$ gem install dream-cheeky-led --pre
|
28
27
|
```
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
$ gem install dream-cheeky-led --pre
|
29
|
+
If you are using Bundler to install the dependencies, version "0.0.1.pre2" or
|
30
|
+
greater will be installed automatically
|
34
31
|
|
35
32
|
## Examples
|
36
33
|
|
37
|
-
There are basic examples in the `examples/` directory
|
34
|
+
There are basic examples in the `examples/` directory that illustrate basic
|
35
|
+
concepts of drawing text to the buffer and panning the viewport over the it.
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
These examples show the basic concepts of drawing text to the buffer and
|
43
|
-
panning the viewport over the buffer.
|
37
|
+
* `bouncer_dream_cheeky.rb` - A pixel that bounces around the Dream Cheeky LED sign.
|
38
|
+
* `pan_dream_cheeky.rb` - Pans the Dream Cheeky LED sign over a larger virtual buffer.
|
39
|
+
* `pan_to_screen.rb` - Same as _pan_dream_cheeky.rb_, but outputs to screen -- no Dream Cheeky LED sign required!
|
44
40
|
|
45
41
|
## Usage
|
46
42
|
|
@@ -148,10 +144,10 @@ To print the buffer and viewport without the ascii-art borders, replace
|
|
148
144
|
> p = PeterPan.new( viewport_width: 5, viewport_height: 5 )
|
149
145
|
> p.write(0, 0, "Hello.")
|
150
146
|
> puts p.show_viewport(5,0)
|
151
|
-
|
152
|
-
|
147
|
+
|
148
|
+
|
153
149
|
***
|
154
|
-
*
|
150
|
+
*
|
155
151
|
****
|
156
152
|
```
|
157
153
|
|
@@ -160,8 +156,29 @@ without the enclosing border.
|
|
160
156
|
|
161
157
|
### Animated panning the viewport
|
162
158
|
|
163
|
-
|
159
|
+
Check out `examples/pan_dream_cheeky.rb` and `examples/pan_to_screen.rb` to see
|
160
|
+
how to animate the movement of the viewport over the buffer.
|
161
|
+
|
162
|
+
[This animated image](https://github.com/xunker/peter_pan/raw/master/panning_text_example.gif) shows how `examples/pan_dream_cheeky.rb` looks when running on an actual Dream Cheeky LED sign.
|
164
163
|
|
165
164
|
## Documentation
|
166
165
|
|
167
|
-
|
166
|
+
Detailed docs available [at rubydoc.org](http://rubydoc.org/github/xunker/peter_pan/master/frames)
|
167
|
+
|
168
|
+
|
169
|
+
## Source
|
170
|
+
|
171
|
+
Source lives on Github: [xunker/peter_pan](https://github.com/xunker/peter_pan).
|
172
|
+
|
173
|
+
## Contributing
|
174
|
+
|
175
|
+
You'll notice there are no tests in this repo, and that's my fault. That means
|
176
|
+
that if you'd like to make some changes or fix some bug, you don't need to
|
177
|
+
write tests if you don't want to! Yay!
|
178
|
+
|
179
|
+
Here's the process if you'd like to contribute:
|
180
|
+
|
181
|
+
* Fork the repo.
|
182
|
+
* Make your changes. If you can, please make your changes in a topic branch, not master.
|
183
|
+
* Test your changes as well as you can. I'll believe you if you say you did.
|
184
|
+
* Make a pull request.
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Makes a virtual "ball" bounce around the screen. Uses the peter_pan gem and
|
4
|
+
# dream-cheeky-led gem (https://github.com/Aupajo/dream-cheeky-led).
|
5
|
+
require 'peter_pan'
|
6
|
+
require 'dream-cheeky/led'
|
7
|
+
|
8
|
+
message_board = DreamCheeky::LEDMessageBoard.first
|
9
|
+
|
10
|
+
height = 7
|
11
|
+
width = 21
|
12
|
+
|
13
|
+
p = PeterPan.new(
|
14
|
+
viewport_width: width,
|
15
|
+
viewport_height: height,
|
16
|
+
buffer_width: width,
|
17
|
+
buffer_height: height
|
18
|
+
)
|
19
|
+
|
20
|
+
position_x = rand(6)
|
21
|
+
position_y = rand(20)
|
22
|
+
|
23
|
+
direction_x = 1
|
24
|
+
direction_y = 1
|
25
|
+
|
26
|
+
buffer = []
|
27
|
+
height.times do
|
28
|
+
buffer << []
|
29
|
+
width.times do
|
30
|
+
buffer.last << 0
|
31
|
+
end
|
32
|
+
end
|
33
|
+
loop do
|
34
|
+
buffer.each_with_index do |bx, i|
|
35
|
+
buffer[i] = bx.map{|v| v -= 1 if v > 0; v}
|
36
|
+
end
|
37
|
+
|
38
|
+
direction_x = -1 if position_x >= (height-1)
|
39
|
+
direction_y = -1 if position_y >= (width-1)
|
40
|
+
direction_x = 1 if position_x <= 0
|
41
|
+
direction_y = 1 if position_y <= 0
|
42
|
+
|
43
|
+
position_x += direction_x
|
44
|
+
position_y += direction_y
|
45
|
+
|
46
|
+
buffer[position_x][position_y] = 8
|
47
|
+
|
48
|
+
buffer.each_with_index do |bx, i|
|
49
|
+
# puts bx.map{|v|(v == 0 ? ' ' : v)}.join
|
50
|
+
bx.each_with_index do |by, ii|
|
51
|
+
p.plot(ii,i, (by > 0 ? by : ' '))
|
52
|
+
end
|
53
|
+
end
|
54
|
+
puts p.show_buffer
|
55
|
+
|
56
|
+
message_board.draw(p.show_buffer)
|
57
|
+
|
58
|
+
# message_board.draw_pixels(buffer)
|
59
|
+
# message_board.draw_pixels(buffer.map{|b|b.map{|v|(v>0?1:0)}})
|
60
|
+
sleep 0.04
|
61
|
+
print "\e[2J\e[f" # clear screen
|
62
|
+
end
|
File without changes
|
File without changes
|
data/lib/peter_pan.rb
CHANGED
@@ -11,7 +11,7 @@ require 'yaml'
|
|
11
11
|
class PeterPan
|
12
12
|
attr_reader :viewport_width, :viewport_height, :empty_point_character
|
13
13
|
|
14
|
-
VERSION = "1.0.
|
14
|
+
VERSION = "1.0.1"
|
15
15
|
|
16
16
|
# Possible Options:
|
17
17
|
#
|
@@ -155,7 +155,7 @@ class PeterPan
|
|
155
155
|
# clears everything out of the buffer.
|
156
156
|
# By default, sets the buffer dimensions to 0x0. Optionally, you can pass
|
157
157
|
# :width and :height args and the buffer dimentions will be set accordingly.
|
158
|
-
# By default the buffer will be filled with space character, but you can
|
158
|
+
# By default the buffer will be filled with space character, but you can
|
159
159
|
# set the char to be used by passing :clear_with
|
160
160
|
def clear_buffer!(opts={})
|
161
161
|
opts = { :width => 0, :height => 0, :clear_with => @empty_point_character }.merge(opts)
|
@@ -171,7 +171,7 @@ class PeterPan
|
|
171
171
|
|
172
172
|
# returns a data structure representing the current font used by #write.
|
173
173
|
def font
|
174
|
-
@font ||= YAML.load(File.new("
|
174
|
+
@font ||= YAML.load(File.new("#{Gem.loaded_specs['peter_pan'].full_gem_path}/fonts/#{@font_name}.yml").read)
|
175
175
|
end
|
176
176
|
|
177
177
|
private
|
@@ -192,7 +192,7 @@ private
|
|
192
192
|
(by.size-1).upto(buffer_width-1) do |i|
|
193
193
|
by[i] = @empty_point_character
|
194
194
|
end
|
195
|
-
end
|
195
|
+
end
|
196
196
|
end
|
197
197
|
|
198
198
|
buffer_changed!
|
data/peter_pan.gemspec
CHANGED
@@ -13,11 +13,11 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = "https://github.com/xunker/peter_pan"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
|
-
spec.files = `git ls-files`.split($/)
|
16
|
+
spec.files = `git ls-files`.split($/).reject{|fn| fn =~ /\.gif$/}
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
-
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rake", "~> 0"
|
23
23
|
end
|
metadata
CHANGED
@@ -1,79 +1,85 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: peter_pan
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Matthew Nielsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2015-07-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
version: "1.3"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
22
20
|
type: :development
|
23
|
-
version_requirements: *id001
|
24
|
-
- !ruby/object:Gem::Dependency
|
25
|
-
name: rake
|
26
21
|
prerelease: false
|
27
|
-
|
28
|
-
requirements:
|
29
|
-
-
|
30
|
-
-
|
31
|
-
|
32
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
33
34
|
type: :development
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: A virtual screen buffer with viewport panning. For the Dream Cheeky LED
|
42
|
+
sign and others.
|
43
|
+
email:
|
37
44
|
- xunker@pyxidis.org
|
38
45
|
executables: []
|
39
|
-
|
40
46
|
extensions: []
|
41
|
-
|
42
47
|
extra_rdoc_files: []
|
43
|
-
|
44
|
-
|
45
|
-
- .gitignore
|
48
|
+
files:
|
49
|
+
- ".gitignore"
|
46
50
|
- Gemfile
|
47
51
|
- LICENSE.txt
|
48
52
|
- README.md
|
49
53
|
- Rakefile
|
50
|
-
- examples/
|
51
|
-
- examples/
|
54
|
+
- examples/bouncer_dream_cheeky.rb
|
55
|
+
- examples/pan_dream_cheeky.rb
|
56
|
+
- examples/pan_to_screen.rb
|
52
57
|
- fonts/transpo.yml
|
53
58
|
- lib/peter_pan.rb
|
54
59
|
- peter_pan.gemspec
|
55
60
|
homepage: https://github.com/xunker/peter_pan
|
56
|
-
licenses:
|
61
|
+
licenses:
|
57
62
|
- MIT
|
58
63
|
metadata: {}
|
59
|
-
|
60
64
|
post_install_message:
|
61
65
|
rdoc_options: []
|
62
|
-
|
63
|
-
require_paths:
|
66
|
+
require_paths:
|
64
67
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
-
|
68
|
-
|
69
|
-
|
70
|
-
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
71
78
|
requirements: []
|
72
|
-
|
73
79
|
rubyforge_project:
|
74
|
-
rubygems_version: 2.
|
80
|
+
rubygems_version: 2.2.2
|
75
81
|
signing_key:
|
76
82
|
specification_version: 4
|
77
|
-
summary: A virtual screen buffer with viewport panning. For the Dream Cheeky LED sign
|
83
|
+
summary: A virtual screen buffer with viewport panning. For the Dream Cheeky LED sign
|
84
|
+
and others.
|
78
85
|
test_files: []
|
79
|
-
|