Skip to content

Commit e25dcad

Browse files
authored
Merge pull request #4 from KS-HTK/feature/text-to-framebuffer
added use of setting a Display to be flipped upside down
2 parents cf68b20 + f414360 commit e25dcad

2 files changed

Lines changed: 28 additions & 6 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
dots.py
22
__pycache__
33
venv
4+
.venv
45

56
.idea
67
src/python_fluepdot.egg-info

src/fluepdot/fluepdot.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,20 @@ class Mode(Enum):
3030

3131

3232
class Fluepdot:
33-
def __init__(self, baseURL: str, width: int = 115, height: int = 16):
33+
def __init__(self, baseURL: str, width: int = 115, height: int = 16, flipped: bool = False):
3434
self.baseURL = baseURL
3535
self.width = width
3636
self.height = height
3737
self.fonts: Optional[List[str]] = None
38+
self.flipped: bool = flipped
3839

3940
def set_url(self, url: str):
4041
self.baseURL = url
4142

43+
def clear(self, inverted: bool = False) -> None:
44+
self.post_frame([[inverted]*115]*16)
45+
46+
4247
def post_time(self) -> None:
4348
import datetime
4449
dt: str = ""
@@ -56,23 +61,31 @@ def get_size(self) -> tuple[int, int]:
5661

5762
def get_frame(self) -> List[str]:
5863
r = self._get(frameURL)
59-
return r.text.split('\n')
64+
if self.flipped:
65+
return r.text[-2::-1].split('\n')
66+
return r.text.split('\n')[:-1]
6067

6168
def get_pixel(self, x: int = 0, y: int = 0) -> bool | None:
69+
if self.flipped:
70+
y = self.height - 1 - y
71+
x = self.width - 1 - x
6272
r = self._get(pixelURL, get={"x": x, "y": y})
6373
rtn = True if r.text == "X" else False if r.text == " " else None
6474
return rtn
6575

66-
def get_fonts(self) -> None:
76+
def get_fonts(self) -> list[str]:
6777
r = self._get(fontURL)
68-
fonts = r.text.split("\n")
69-
print(fonts)
78+
return r.text.split("\n")
7079

7180
def get_mode(self) -> Mode:
7281
r = self._get(modeURL)
73-
return Mode(int(r.text))
82+
text = r.text.split("\n")[0]
83+
return Mode(int(text))
7484

7585
def post_text(self, text: str, x: int = 0, y: int = 0, font: str = "DejaVuSans12") -> Response:
86+
if self.flipped:
87+
self._post(textURL, get={"x": x, "y": y, "font": font}, post=text)
88+
return self.post_frame_raw(frame="\n".join(self.get_frame())+"\n")
7689
return self._post(textURL, get={"x": x, "y": y, "font": font}, post=text)
7790

7891
def post_frame_raw(self, frame: str) -> Response:
@@ -98,9 +111,17 @@ def post_frame(self, frame: List[List[bool]], center: bool = False) -> Response:
98111
return self._post(frameURL, post=outStr)
99112

100113
def set_pixel(self, x: int = 0, y: int = 0) -> Response:
114+
y = self.height - 1 - y
115+
if self.flipped:
116+
x = self.width - 1 - x
117+
y = self.height - 1 - y
101118
return self._post(pixelURL, get={"x": x, "y": y})
102119

103120
def unset_pixel(self, x: int = 0, y: int = 0) -> Response:
121+
y = self.height - 1 - y
122+
if self.flipped:
123+
y = self.height - 1 - y
124+
x = self.width - 1 - x
104125
return self._delete(pixelURL, get={"x": x, "y": y})
105126

106127
def set_mode(self, mode: Mode = Mode.FULL) -> Response:

0 commit comments

Comments
 (0)