From 9090119f68fd02ae96198f7a436544e457289351 Mon Sep 17 00:00:00 2001 From: dahanzimin <353767514@qq.com> Date: Fri, 30 May 2025 17:55:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0uframebuf=E7=9A=84=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E4=BD=BF=E7=94=A8=E3=80=82=E5=88=86=E7=A6=BB=E7=82=B9?= =?UTF-8?q?=E9=98=B5=E5=92=8C=E6=B6=B2=E6=99=B6=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../micropython/origin/build/lib/uframebuf.py | 52 +++++++++++++++---- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/boards/default_src/micropython/origin/build/lib/uframebuf.py b/boards/default_src/micropython/origin/build/lib/uframebuf.py index b12b9163..bf3647df 100644 --- a/boards/default_src/micropython/origin/build/lib/uframebuf.py +++ b/boards/default_src/micropython/origin/build/lib/uframebuf.py @@ -168,26 +168,53 @@ class FrameBuffer_Base(FrameBuffer): def write(self): self.show() - def shift(self, x, y, sync=True): + def shift(self, x, y, rotate=False, sync=True): """Shift pixels by x and y""" - super().scroll(x, y) + if x > 0: # Shift Right + for _ in range(x): + for row in range(0, self.height): + last_pixel = super().pixel(self.width - 1, row) if rotate else 0 + for col in range(self.width - 1, 0, -1): + super().pixel(col, row, super().pixel(col - 1, row)) + super().pixel(0, row, last_pixel) + elif x < 0: # Shift Left + for _ in range(-x): + for row in range(0, self.height): + last_pixel = super().pixel(0, row) if rotate else 0 + for col in range(0, self.width - 1): + super().pixel(col, row, super().pixel(col + 1, row)) + super().pixel(self.width - 1, row, last_pixel) + if y > 0: # Shift Up + for _ in range(y): + for col in range(0, self.width): + last_pixel = super().pixel(col, self.height - 1) if rotate else 0 + for row in range(self.height - 1, 0, -1): + super().pixel(col, row, super().pixel(col, row - 1)) + super().pixel(col, 0, last_pixel) + elif y < 0: # Shift Down + for _ in range(-y): + for col in range(0, self.width): + last_pixel = super().pixel(col, 0) if rotate else 0 + for row in range(0, self.height - 1): + super().pixel(col, row, super().pixel(col, row + 1)) + super().pixel(col, self.height - 1, last_pixel) if sync: self.show() - def shift_right(self, num, sync=True): + def shift_right(self, num, rotate=False, sync=True): """Shift all pixels right""" - self.shift(num, 0, sync) + self.shift(num, 0, rotate, sync) - def shift_left(self, num, sync=True): + def shift_left(self, num, rotate=False, sync=True): """Shift all pixels left""" - self.shift(-num, 0, sync) + self.shift(-num, 0, rotate, sync) - def shift_up(self, num, sync=True): + def shift_up(self, num, rotate=False, sync=True): """Shift all pixels up""" - self.shift(0, -num, sync) + self.shift(0, -num, rotate, sync) - def shift_down(self, num, sync=True): + def shift_down(self, num, rotate=False, sync=True): """Shift all pixels down""" - self.shift(0, num, sync) + self.shift(0, num, rotate, sync) def map_invert(self, own): """Graph invert operation""" @@ -339,6 +366,11 @@ class FrameBuffer_Uincode(FrameBuffer_Base): """Font selection or externally defined font code""" self._font = Font_Uincode(font_address) + def shift(self, x, y, rotate=False, sync=True): + '''Reshaping Inheritance Methods''' + super().scroll(x, y) + if sync: self.show() + def image(self, path, x=None, y=None, size=None, invert=0, color=0xffff, bold=0, sync=True): """Set buffer to value of Python Imaging Library image""" if type(path) is str :