From 5518111c6ba7d7c7499b1ec16a640ff1fed15c84 Mon Sep 17 00:00:00 2001 From: gijsio <67470426+gijsio@users.noreply.github.com> Date: Fri, 3 Sep 2021 13:54:53 +0200 Subject: [PATCH] Create framebuf.md --- content/firmwareapi/micropython/framebuf.md | 89 +++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 content/firmwareapi/micropython/framebuf.md diff --git a/content/firmwareapi/micropython/framebuf.md b/content/firmwareapi/micropython/framebuf.md new file mode 100644 index 0000000..dbf7a8d --- /dev/null +++ b/content/firmwareapi/micropython/framebuf.md @@ -0,0 +1,89 @@ +--- +title: "Framebuf" +--- + +Frame buffer manipulation + +Quick example: +```python +import framebuf +fbuf = framebuf.FrameBuffer(bytearray(10*100*2), 10, 100, framebuf.RGB565) + +fbuf.fill(0) +fbuf.text('Pycom!', 10,10, 0xffff) +fbuf.hline(0, 20, 96, 0xffff) + +``` + +## Constructor + +### framebuf.FrameBuffer(buffer, width, height, format [, stride=width]) + +Constructs a FrameBuffer object with parameters +* `framebuffer`: A bytearray object large enough to contain every pixel +* `width`: The width of the FrameBuffer in pixels +* `height`: The height of the FrameBuffer in pixels +* `format`: The type of pixel used in the Framebuffer and can be one of the following constants: + * `framebuf.GS2_HMSB`: 2-bt grayscale + * `framebuf.GS4_HMSB`: 4-bit grayscale + * `framebuf.GS8`: 8-bit grayscale + * `framebuf.MONO_HLSB`: monochrome, horizontally mapped, LSB + * `framebuf.MONO_HMSB`: monochrome, horizontally mapped, MSB + * `framebuf.MONO_VLSB`: monochrhome, vertically mapped, LSB + * `framebuf.MVLSB`: Same as `MONO_VLSB` + * `framebuf.RGB565`: 16-bit RGB color (5 bits red, 6 bits blue, 5 buts green) +* `stride`: The number of pixels between each horizontal line of pixels in the FrameBuffer. + + +The coordinates in the following methods are defined with `(0, 0)` in the upper left-hand corner, with `x` on the horizontal axis, and `y` on the vertical axis. +The color arguments is a small int that depends the `format` color order. + +### framebuf.FrameBuffer1(buffer, width, height, format) + +Provides compatibility with the legacy FrameBuffer class. + +## Methods + +### fbuf.fill(c) + +Fills the entire FrameBuffer with the specified color + +### fbuf.pixel(x, y [, c]) + +Gets or sets the color at the specified pixel. + +### fbuf.hline(x, y, w, c) + +Draws a 1-pixel wide horizontal line starting at `x, y` with width `w` and color `c` + +### fbuf.vline(x, y, h, c) + +Draws a 1-pixel wide vertical line starting at `x, y` with height `h` and color `c` + +### fbuf.line(x1, y1, x2, y2, c) + +Draws a 1-pixel wide line starting at `x1, y1` to `x2, y2` with color `c` + +### fbuf.rect(x, y, w, y, c) + +Draws a 1-pixel rectangle outline with starting corner `x, y`, width `w`, height `h` and color `c` + +### fbuf.fill_rect(x, y, w, h, c) + +Draws a colored rectangle with starting corner `x, y`, width `w`, height `h` and color `c` + +### fbuf.text(s, x, y, [, c = 1]) + +Write text to the FrameBuffer with characters of 8 by 8 pixels, with `x, y` in the top left hand corner and `c` as the color. +At the moment, it is not possible to change either the font, or its size. + +### fbuf.scroll(xstep, ystep) + +Shifts the contents of the FrameBuffer by the given step size in x and y. The pixels will **not** roll around to the other side. + +### fbuf.blit(fbuf, x, y [, key]) + +Draw another FrameBuffer on top of the current one at the given coordinates. If a `key` is specified, the passed FrameBuffer will be considered transparent for that color. All pixels of that color will not be drawn. + +## Constants +format: `GS2_HMSB`, `GS4_HMSB`, `GS8`, `MONO_HLSB`, `MONO_HMSB`, `MONO_VLSB`, `MVLSB`, `RGB565` \ No newline at end of file