papirus 0.1.1 → 0.2.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 +54 -10
- data/README.rdoc +4 -4
- data/lib/chunky.rb +1 -2
- data/lib/papirus.rb +0 -2
- metadata +3 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ea7eafaea2155d636ec9e6b712ce6310679a57e
|
4
|
+
data.tar.gz: 967ca7fb5503b8079e098b98f43c76e77c6d8477
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f99ad2bcf1bd57e4fb8504e411718654d65c456f996eb72a8540d795e6983ad437902ae869e866983880d6ae870a6b81b3c5e7ff10e251f7481adf4c90a0d4a
|
7
|
+
data.tar.gz: e97870beae1b628636cba2630a0b3f0a4b2a5b5f0b6596a42ec2804c9f90223980d605a475b969e7c448c4e04cc9e94153038be8ca9f5c1565d487e42e45d91c
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# papirus
|
2
2
|
|
3
|
-
ruby gem to talk to the
|
3
|
+
ruby gem to talk to the [PaPiRus](https://www.pi-supply.com/?s=papirus&post_type=product&tags=1&limit=5&ixwps=1) display
|
4
|
+
|
5
|
+
before you start playing make sure you got the edp-fuse setup
|
4
6
|
|
5
7
|
## epaper fuse driver installation instructions (if you have not done that already ::)
|
6
8
|
```bash
|
@@ -13,6 +15,9 @@ make rpi-install EPD_IO=epd_io.h PANEL_VERSION='V231_G2'
|
|
13
15
|
systemctl enable epd-fuse.service
|
14
16
|
systemctl start epd-fuse
|
15
17
|
```
|
18
|
+
|
19
|
+
You can find more detailed instructions [https://github.com/repaper/gratis](here)
|
20
|
+
|
16
21
|
## gem installation
|
17
22
|
|
18
23
|
```bash
|
@@ -25,13 +30,29 @@ require 'papirus'
|
|
25
30
|
|
26
31
|
# first we get ourself a display
|
27
32
|
display = PaPiRus::Display.new()
|
33
|
+
```
|
28
34
|
|
29
|
-
#
|
35
|
+
# Playing with RMagic
|
36
|
+
|
37
|
+
```
|
38
|
+
require 'rmakgick'
|
39
|
+
img = Magick::Image::read('mischa.jpg')[0]
|
40
|
+
display.show(img.resize_to_fit(display.width, display.height).quantize(2, Magick::GRAYColorspace).to_blob()
|
41
|
+
```
|
42
|
+
|
43
|
+
# Playing with Chunky_PNG
|
44
|
+
```
|
45
|
+
require_relative "lib/chunky" # add's to_bit_stream function to chucky
|
46
|
+
|
47
|
+
#lets get a clean png of the size of the display to play with using chunky_png
|
30
48
|
image = ChunkyPNG::Image.new(display.width, display.height, ChunkyPNG::Color::WHITE)
|
31
49
|
#and we draw a circle on it which is about the size of the screen
|
32
50
|
image.circle(display.width/2, display.height/2, display.height/2-2)
|
33
|
-
|
51
|
+
```
|
52
|
+
|
53
|
+
have a look at [chunky_png](https://github.com/wvanbergen/chunky_png/wiki) for more examples
|
34
54
|
|
55
|
+
```
|
35
56
|
#and last we dump the image as bitsteam to the display
|
36
57
|
display.show(image.to_bit_stream)
|
37
58
|
|
@@ -47,15 +68,35 @@ display.clear
|
|
47
68
|
image.circle(display.width/2, display.height/2, radius)
|
48
69
|
display.show(image.to_bit_stream, 'F')
|
49
70
|
end
|
71
|
+
```
|
72
|
+
|
73
|
+
## there are multiple screen commands ['F', 'P', 'U', 'C']
|
74
|
+
|
75
|
+
Full update (with screen cleaning):
|
76
|
+
|
77
|
+
```display.show(image.to_bit_stream); display.update``` or
|
78
|
+
|
79
|
+
```display.show(image.to_bit_stream, 'U')```
|
80
|
+
|
81
|
+
Fast update:
|
82
|
+
|
83
|
+
```display.show(image.to_bit_stream); display.fast_update```
|
84
|
+
```display.show(image.to_bit_stream, 'F')```
|
50
85
|
|
51
|
-
|
86
|
+
Partial update:
|
52
87
|
|
53
|
-
|
54
|
-
* you can call `display.show(image.to_bit_stream); display.fast_update` or `display.show(image.to_bit_stream, 'F')`
|
55
|
-
* you can call `display.show(image.to_bit_stream); display.partial_update` or `display.show(image.to_bit_stream, 'P')`
|
88
|
+
```display.show(image.to_bit_stream); display.partial_update``` or
|
56
89
|
|
90
|
+
```display.show(image.to_bit_stream, 'P')```
|
91
|
+
|
92
|
+
## Load an image from a png file
|
93
|
+
|
94
|
+
```
|
95
|
+
image = ChunkyPNG::Image.from_file('/some/png/file/path.png')
|
96
|
+
display.show(encode_png_pixels_to_scanline_grayscale_1bit(pixels))
|
57
97
|
```
|
58
|
-
|
98
|
+
|
99
|
+
## Testing without a PAPiRus display
|
59
100
|
|
60
101
|
If you want to test the gem, but don't have your PaPiRus available, you can do the following
|
61
102
|
|
@@ -68,12 +109,15 @@ If you want to test the gem, but don't have your PaPiRus available, you can do t
|
|
68
109
|
* when you run `display.show` the **fake** display /tmp/epd/LE/display is filled with your image
|
69
110
|
* now you can use a bin editor like xxd to have a look at the result: `xxd -b /tmp/epd/LE/display`
|
70
111
|
|
71
|
-
|
112
|
+
## TODO
|
72
113
|
|
73
114
|
* make the image.to_bit_stream routine faster (as it is now to slow to do animations with partial updates)
|
74
115
|
* add support for reading the temperature of the display
|
75
116
|
* add support for changing the update rate
|
76
|
-
* make the gem not depending on chunky_png
|
77
117
|
* make load png image with chunky_png work (now output is black)
|
78
118
|
* make a display.load(image) that takes multiple formats and figures out how to present them
|
79
119
|
* create an issue to add your own requests :)
|
120
|
+
|
121
|
+
## Other resources
|
122
|
+
|
123
|
+
* [pi supply python driver](https://github.com/PiSupply/PaPiRus)
|
data/README.rdoc
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
= papirus
|
2
2
|
|
3
|
-
|
3
|
+
This gem can be used to communicate with the {PaPiRus}[https://github.com/PiSupply/PaPiRus] display.
|
4
|
+
Checkout {GitHub}[http://github.com/mmolhoek/papirus] for examples
|
4
5
|
|
5
6
|
== Contributing to papirus
|
6
|
-
|
7
|
+
|
7
8
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
8
9
|
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
9
10
|
* Fork the project.
|
@@ -14,5 +15,4 @@ Description goes here.
|
|
14
15
|
|
15
16
|
== Copyright
|
16
17
|
|
17
|
-
Copyright (c) 2017 Mischa Molhoek. See LICENSE.txt for
|
18
|
-
further details.
|
18
|
+
Copyright (c) 2017 Mischa Molhoek. See LICENSE.txt for further details.
|
data/lib/chunky.rb
CHANGED
@@ -11,7 +11,6 @@ module ChunkyPNG::Canvas::StreamExporting
|
|
11
11
|
#as the ChunkyPNG library works with 4 bytes data per pixel (1 byte for R, G, B and transparancy)
|
12
12
|
#and the EDP needs 1 bit per pixel (on or off), we need some way to traverse over all pixels
|
13
13
|
#and add a bit to a byte stream for each pixel. so
|
14
|
-
|
15
14
|
bytes = []
|
16
15
|
#for each 8 pixels (the ChunkyPNG library keeps an array of all pixels used, containing ChunkyPNG::Color elements)
|
17
16
|
pixels.each_slice(8).map do |pixels|
|
@@ -26,6 +25,6 @@ module ChunkyPNG::Canvas::StreamExporting
|
|
26
25
|
bytes.push(byte)
|
27
26
|
end
|
28
27
|
#now we just need to pack all bytes into a file writable string
|
29
|
-
bytes.pack('C'
|
28
|
+
bytes.pack('C*')
|
30
29
|
end
|
31
30
|
end
|
data/lib/papirus.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: papirus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mischa Molhoek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: shoulda
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: chunky_png
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
83
|
description: This gem can be used to talk to the PaPiRus e-paper display
|
98
84
|
email: mischamolhoek@gmail.com
|
99
85
|
executables: []
|
@@ -130,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
116
|
version: '0'
|
131
117
|
requirements: []
|
132
118
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
119
|
+
rubygems_version: 2.5.1
|
134
120
|
signing_key:
|
135
121
|
specification_version: 4
|
136
122
|
summary: ruby gem to access the PaPiRus display
|