summaryrefslogtreecommitdiff
path: root/shared-module/displayio/Group.h
AgeCommit message (Collapse)Author
2021-03-15run code formatting scriptmicroDev
2021-02-27Remove unused typedef for group childrenRadomir Dopieralski
2021-02-27Replace displaio.Group.children with a python listRadomir Dopieralski
This is a first go at it, done by naive replacing of all array operations with corresponding operations on the list. Note that there is a lot of unnecessary type conversions, here. Also, list_pop has been copied, because it's decalerd STATIC in py/objlist.h
2021-02-27displaio: don't store group children native objectRadomir Dopieralski
Since we want to expose the list of group's children to the user, we should only have the original objects in it, without any other additional data, and compute the native object as needed.
2019-09-04Bitpack bools in TileGrid and GroupScott Shawcroft
2019-09-03Add .hidden to TileGrid and GroupScott Shawcroft
This allows for one to preserve ordering within a Group while hiding something temporarily. Fixes #1688
2019-07-19Add support for grayscale displays that are < 8 bit depth.Scott Shawcroft
This also improves Palette so it stores the original RGB888 colors. Lastly, it adds I2CDisplay as a display bus to talk over I2C. Particularly useful for the SSD1306. Fixes #1828. Fixes #1956
2019-06-12Refactor deinit check to reduce code size.Scott Shawcroft
2019-06-12Add partial display update support.Scott Shawcroft
Different operations to the display tree have different costs. Be aware of these costs when optimizing your code. * Changing tiles indices in a TileGrid will update an area covering them all. * Changing a palette will refresh every object that references it. * Moving a TileGrid will update both where it was and where it moved to. * Adding something to a Group will refresh each individual area it covers. * Removing things from a Group will refresh one area that covers all previous locations. (Not separate areas like add.) * Setting a new top level Group will refresh the entire display. Only TileGrid moves are optimized for overlap. All other overlaps cause sending of duplicate pixels. This also adds flip_x, flip_y and transpose_xy to TileGrid. They change the direction of the pixels but not the location. Fixes #1169. Fixes #1705. Fixes #1923.
2019-05-21Rework the pixel computation to use areasScott Shawcroft
This changes the displayio pixel computation from per-pixel to per-area. This is precursor work to updating portions of the screen (#1169). It should provide mild speedups because bounds checks are done once per area rather than once per pixel. Filling by area also allows TileGrid to maintain a row-associative fill pattern even when the display's refresh is orthogonal to it.
2019-03-12Accept x and y kwargs into Group for initial position.Scott Shawcroft
2019-02-15Store the original layer in GroupScott Shawcroft
As is we would return the native superclass object only. Fixes #1551
2019-02-11A variety of displayio improvementsScott Shawcroft
This changes a number of things in displayio: * Introduces BuiltinFont and Glyph so the built in font can be used by libraries. For boards with a font it is available as board.TERMINAL_FONT. Fixes #1172 * Remove _load_row from Bitmap in favor of bitmap[] access. Index can be x/y tuple or overall index. Fixes #1191 * Add width and height properties to Bitmap. * Add insert and [] access to Group. Fixes #1518 * Add index param to pop on Group. * Terminal no longer takes unicode character info. It takes a BuiltinFont instead. * Fix Terminal's handling of [###D vt100 commands used when up arrowing into repl history. * Add x and y positions to Group plus scale as well. * Add bitmap accessor for BuiltinFont
2019-01-17pyportal compiles and tweak blinka colorsScott Shawcroft
2018-09-12Add OnDiskBitmap which loads pixel data straight from disk.Scott Shawcroft
Also, renamed Sprite's palette to pixel_shader so it can be anything that produces colors based on values (including color values). Added a ColorConverter that converts RGB888 (found in bitmaps) to RGB565 for the display. Fixes #1182
2018-08-31Introduce displayio to render graphics to displays.Scott Shawcroft
It's designed to minimize RAM footprint by using Sprites to represent objects on the screen. The object model also facilitates partial screen updating which reduces the bandwidth needed to display. This is all handled in C. Python simply manipulates the objects with the ability to synchronize to frame timing.