@@ -30,15 +30,20 @@ class Mode(Enum):
3030
3131
3232class 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