Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/peter-l5/framebuf2
MicroPython FrameBuffer extension: larger and rotated font, triangles and circles
https://github.com/peter-l5/framebuf2
circle font framebuffer large-font micropython size triangle
Last synced: 3 months ago
JSON representation
MicroPython FrameBuffer extension: larger and rotated font, triangles and circles
- Host: GitHub
- URL: https://github.com/peter-l5/framebuf2
- Owner: peter-l5
- License: mit
- Created: 2022-08-28T13:52:47.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-30T09:33:30.000Z (over 1 year ago)
- Last Synced: 2024-04-29T11:33:54.976Z (6 months ago)
- Topics: circle, font, framebuffer, large-font, micropython, size, triangle
- Language: Python
- Homepage:
- Size: 21.5 KB
- Stars: 9
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-micropython - framebuf2 - MicroPython FrameBuffer extension: larger and rotated font, triangles and circles. (Libraries / Display)
README
# framebuf2
## MicroPython FrameBuffer large and rotated font, triangle and circle extension
This module extends the `FrameBuffer` class in MicroPython's [framebuf module](https://docs.micropython.org/en/latest/library/framebuf.html "MicroPython documentation"). It enables drawing of double, triple, quadruple, and larger size text to FrameBuffer objects using the built-in font provided in the framebuf module.
Also included are methods to draw triangles and circles. These can be outlines only or filled.
The module has been tested on a Raspberry Pi Pico with a 128x128 pixel SH1107 display. It should work with all MicroPython FrameBuffer objects.## Methods
**`large_text(s, x, y, m [, c=1] [, r=0 [, t=None]])`**
Write text, `s`, to a FrameBuffer using the the `x` and `y` coordinates as the upper-left corner of the text. The colour of the text can be defined by the optional argument, `c`, but is otherwise a default value of 1. The parameter `m` sets the size multiple for the text. The normal size for text with the 'FrameBuffer.text()' method is 8x8 pixels. This would be a multiple of 1. To obtain larger text output, with 16x16 pixel characters, for example, use 2 for the m parameter. The optional parameter r controls the rotation of the text, 0 degrees is the default, 90, 180 and 270 degrees are possible. In addition the t parameter enables individual characters within a string to be independently rotated to 0, 90, 180 or 270 degrees.
**`circle(x0, y0, radius, c [, f:bool] )`**
Draw a circle centred on `x0, y0` with the specified `radius` and border colour, `c` (integer). Optionally fill the circle by adding `f=True`.
**`triangle(x0, y0, x1, y1, x2, y2, c [, f:bool] )`**
Draw a triangle with vertices at points `x0,y0` , `x1,y1` and `x2,y2` and border colour, `c` (integer). Optionally fill the circle by adding `f=True`.
## Usage
Example use:
```
# display is a framebuffer object
display.large_text('double', 0, 0, 2, 1) # double size text
display.large_text('size!', 0, 16, 2, 1)
display.large_text('HUGE', 0, 32, 4, 1) # quadruple size text# draw a circle centred at point (x=64, y=64) with radius 56 and colour 1.
display.circle(64, 64, 56 , c=1)
display.circle(64, 64, 48 , c=1, f=True) # filled circle# draw a filled triangle with corners at (x=0, y=0), (x=0, y=127) and (x=127, y=127)
# filled with colour 1.
display.triangle(0, 0, 0, 127, 127, 127, c=1, f=True)
```
Additional examples are included in the example code for this [SH1107](https://github.com/peter-l5/SH1107 "SH1107 OLED display driver") display driver## Loading the module
Use the following to import the module and extend the FrameBuffer class.
`import framebuf2 as framebuf`
The FrameBuffer class will then offer these additional methods besides all the standard methods.## Requirements
Works with MicroPython version 1.19.1. Will also work with other versions.
## Release notes
#### v209
- code formatted to [PEP8](https://peps.python.org/pep-0008/) standards using [black](https://pypi.org/project/black/)
#### v208
- fix for issue #1
- fix for an issue where filled triangles were not drawn properly around the middle vertex (middle in vertical order)#### v206
- large_text() enhanced by the addition of rotation parameter
- substantial speed improvements to the large_text() method#### v202
- triangle() and circle() drawing methods added