Scott Shawcroft
b3de7efc07
Fix I2CDisplay lifecycle and splash lifecycle.
...
Fixes https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SSD1306/issues/2
2019-08-14 15:53:58 -07:00
Jeff Epler
e3c0428838
shared-module: Use RUN_BACKGROUND_TASKS
2019-08-11 08:53:02 -05:00
Scott Shawcroft
26f64dd8ec
Merge remote-tracking branch 'adafruit/4.1.x' into merge_in_410
2019-08-05 17:53:08 -07:00
Dave Astels
cd092df9d8
Merge remote-tracking branch 'adafruit/master' into displayio_fill_area
2019-07-31 18:46:41 -04:00
Dave Astels
1f9cb44fa3
Expose rotation with a property
2019-07-31 15:00:21 -04:00
Scott Shawcroft
af8cfbedfb
Add knobs for SSD1322 and two fixes.
...
* Fix terminal clear after first successful code.py run.
* Fix transmitting too many bytes for column constraint with single
byte bounds.
2019-07-25 15:41:12 -07:00
Scott Shawcroft
1d1b8703b6
Review feedback including NO_BRIGHTNESS_COMMAND macro
2019-07-19 16:11:13 -07:00
Scott Shawcroft
6797ec6ed3
Add support for grayscale displays that are < 8 bit depth.
...
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-07-19 16:06:11 -07:00
Scott Shawcroft
d9089f52ce
Fix it's -> its
2019-07-19 10:42:20 -07:00
Scott Shawcroft
4a6bdb6fe4
Track a dirty area for in-memory bitmaps
...
This fixes the bug that bitmap changes do not cause screen updates
and optimizes the refresh when the bitmap is simply shown on the
screen. If the bitmap is used in tiles, then changing it will
cause all TileGrids using it to do a full refresh.
Fixes #1981
2019-07-18 16:47:28 -07:00
Dan Halbert
6a001786a9
merge from master
2019-07-09 08:58:49 -04:00
Scott Shawcroft
13c3d06c6a
Merge pull request #1952 from tannewt/fixup_tilegrid_dirty
...
Fix TileGrid's dirty tracking when changing top left
2019-06-18 10:29:12 -07:00
Dan Halbert
1356819de1
Handle None for BLE name; fix ScanEntry bug; compile issue
2019-06-17 23:16:40 -04:00
Scott Shawcroft
4013bcde9e
Add baudrate to FourWire and shorten delay.
2019-06-17 17:48:05 -07:00
Scott Shawcroft
7490adf8e9
Use width for x. Thanks @deshipu
2019-06-17 16:23:38 -07:00
Scott Shawcroft
da3d75f7b1
Fix TileGrid's dirty tracking when changing top left
2019-06-17 16:23:37 -07:00
Scott Shawcroft
6f6dcafd90
Minor tweaks based on Dan's feedback
2019-06-13 00:34:19 -07:00
Scott Shawcroft
a35d9b469d
Refactor deinit check to reduce code size.
2019-06-12 11:36:43 -07:00
Scott Shawcroft
eb21fc3e31
Add partial display update support.
...
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-06-12 11:32:39 -07:00
Dan Halbert
4fc189b60c
Merge latest 4.0.x fixes into master
2019-06-11 16:16:29 -04:00
Dan Halbert
62de2506e4
Include display objects in gc.
2019-06-06 17:49:32 -04:00
Scott Shawcroft
5d0791cafb
Fix off-by-one error
...
It caused the bottom and right edges to be one pixel short.
2019-05-31 15:50:55 -07:00
Scott Shawcroft
7a117f52ed
Make point 2 in areas exclusive and simplify full_coverage.
2019-05-22 15:00:47 -07:00
Scott Shawcroft
3fad7de8db
Rework the pixel computation to use areas
...
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-05-21 17:41:06 -07:00
Scott Shawcroft
00c39805f1
Remove old comment
2019-05-15 14:17:09 -07:00
Scott Shawcroft
5608e273a0
Add index and remove to Group.
2019-05-15 11:33:16 -07:00
Scott Shawcroft
e64bbc41ec
Handle -scale to 0 correctly in Group
...
Fixes #1839
2019-05-09 11:38:30 -07:00
Scott Shawcroft
f548305c07
Merge pull request #1815 from dhalbert/stop-flicker
...
Turn off auto_brightness if brightness is set
2019-04-18 15:48:39 -07:00
Dan Halbert
0113e0970e
add Display.__init__() args for brightness and auto_brightness
2019-04-18 15:59:16 -04:00
Scott Shawcroft
c372567330
Fix off by one error in OnDiskBitmap
...
It resulted in the first row of pixels being pulled for out of bounds.
Fixes #1801
2019-04-17 15:17:11 -07:00
Scott Shawcroft
72992070c5
Fix boards with no shared busses.
2019-04-09 11:36:10 -07:00
Scott Shawcroft
de48e4b262
Merge remote-tracking branch 'adafruit/master' into fix_cpx_display
2019-04-08 17:15:08 -07:00
Scott Shawcroft
0f003ac5b8
Reorganize board busses into shared-bindings and shared-module.
2019-04-08 16:58:50 -07:00
Radomir Dopieralski
8323721232
Stop hard-coding SPI frequency in FourWire
...
Instead remember and use the frequency, polarity and phase that was
set when the bus was first created.
2019-04-06 15:15:29 +02:00
Scott Shawcroft
7686f93ef4
Fix crash when getting board.SPI outside the VM
...
If one of the default pins was already in use it would crash.
The internal API has been refined to allow us to get the value
without causing an init of the singleton.
Fixes #1753
2019-04-05 19:06:37 -07:00
Melissa LeBlanc-Williams
97baa7899f
Added comment regarding parameter loop
2019-04-05 11:11:27 -07:00
Melissa LeBlanc-Williams
8f1fc6c07d
Added option to easily treat SPI parameter data as commands
2019-04-04 23:15:00 -07:00
Scott Shawcroft
6fcda1dec4
Support multi-byte values with Bitmap
...
It also corrects the behavior of single byte values.
Fixes #1744
2019-04-04 12:50:35 -07:00
caternuson
5298119aa2
change direction of shift right
2019-04-03 09:21:34 -07:00
Melissa LeBlanc-Williams
f1e4a2ffb9
Removed unnecessary bit-ANDing
2019-04-01 19:52:35 -07:00
Melissa LeBlanc-Williams
8b4ca24e56
Improved readability of Single Byte Bounds code
2019-03-31 14:17:54 -07:00
Melissa LeBlanc-Williams
8087cb41e5
Merge branch 'master' of https://github.com/adafruit/circuitpython into ssd1351-fix
2019-03-27 20:18:37 -07:00
Melissa LeBlanc-Williams
2e0268cb09
Simplified cs toggling into fourwire only
2019-03-27 20:17:22 -07:00
Melissa LeBlanc-Williams
f3ec0514cd
Simplified into fourwire only
2019-03-27 20:11:32 -07:00
Dan Halbert
374f210771
TileGrid: pixel_shader is not always a palette
2019-03-27 10:55:50 -04:00
Melissa LeBlanc-Williams
f4cede4747
Removed parameter so CS is always toggled
2019-03-26 18:46:13 -07:00
Melissa LeBlanc-Williams
b2ad16f5c8
Removed parameter so CS is always toggled
2019-03-26 18:34:07 -07:00
Melissa LeBlanc-Williams
a54493b4ae
Added small delay inside toggle for edge cases
2019-03-26 07:45:17 -07:00
Melissa LeBlanc-Williams
09a1f06bbf
Added small delay inside toggle for edge cases
2019-03-26 07:39:40 -07:00
Melissa LeBlanc-Williams
cc96c39e6d
Fixed wrong operator
2019-03-25 23:58:58 -07:00
Melissa LeBlanc-Williams
c3329e224d
Added Single Byte Boundaries option for certain displays
2019-03-24 23:59:28 -07:00
Melissa LeBlanc-Williams
b25c4baeec
Moving Toggle to before command fixes driver issue
2019-03-23 21:04:25 -07:00
Melissa LeBlanc-Williams
fadb5a1024
Added option to toggle cs in displayio init sequence
2019-03-23 18:34:42 -07:00
Dan Halbert
26262cd477
Merge pull request #1670 from tannewt/fontio
...
Move Glyph and BuiltinFont into fontio
2019-03-20 17:36:04 -04:00
Scott Shawcroft
9f3ca66f97
Merge pull request #1676 from pewpew-game/bug1671
...
Make displayio.Palette support more than 255 colors
2019-03-20 14:13:18 -07:00
Radomir Dopieralski
f5cfd6e1f1
Make displayio.Palette support more than 255 colors
...
Fix #1671
2019-03-20 20:36:05 +01:00
Scott Shawcroft
5e2fec714c
Move Glyph and BuiltinFont into fontio
...
It was confusing in displayio.
Fixes #1662
2019-03-19 16:22:09 -07:00
Dan Halbert
43915133a1
after code.py runs, flush filesystem before resetting heap
2019-03-16 16:49:32 -04:00
Scott Shawcroft
224e9b1009
Standardize TileGrid to x and y properties over position
...
This brings it inline with Group. Also fixes #1613
This also includes a number of fixes for where a method is called
through a subclass. We now correctly get the native object.
Fixes #1567
Lastly, this adds subscript support to TileGrid for changing tile
indices. Similar to Bitmap, it accepts ints or 2-tuples.
2019-03-12 17:18:33 -07:00
Scott Shawcroft
ea45877ca5
Accept x and y kwargs into Group for initial position.
2019-03-12 17:17:32 -07:00
Dan Halbert
1f31877d55
Rework background display task to allow reads from SPI SD card during display. Clarify code. Handle multiple displays better.
2019-03-07 00:08:16 -05:00
Dan Halbert
c854f6617a
check display-bus transaction status and act accordingly
2019-03-06 13:45:48 -05:00
Dan Halbert
2eaa98ad71
Merge pull request #1601 from penguindustin/master
...
added height and width attributes for displayio
2019-03-06 12:43:55 -05:00
Dustin Mendoza
4145f87fcd
changed from mp_int_t to uint16_t
2019-03-05 21:25:09 -08:00
Dan Halbert
146271fa58
Merge pull request #1604 from dhalbert/display_wait_for_frame-check-interrupts
...
Don't wait for display frame if interrupt pending
2019-03-04 13:55:13 -05:00
Bryan Siepert
76dc8e1ac8
fixed typo
2019-03-01 07:32:46 -08:00
Bryan Siepert
014595bff5
fixed whitespace, clarified variable name, and updated error messages
2019-03-01 07:17:50 -08:00
Bryan Siepert
398c7060f8
added monochrome, 8bpp indexed, and 32bpp ARGB BMPs
2019-02-28 23:08:12 -08:00
Dan Halbert
ced37c1001
Don't wait for display frame if interrupt pending
2019-02-28 22:36:50 -05:00
Dustin Mendoza
f127be4dd2
added height and width attributes for displayio
2019-02-25 16:39:20 -08:00
Bryan Siepert
b81072e750
(fork rebuild) Initial support for 16bpp 555&565 and 8bpp grayscale bitmaps
2019-02-23 10:58:46 -08:00
Scott Shawcroft
08158a7c34
Tweak the backlight PWM rate to be higher that audio range. Fixes #1571
2019-02-21 12:02:01 -08:00
Scott Shawcroft
b1e8c43679
Fix reload while display is updating.
2019-02-19 14:51:39 -08:00
Scott Shawcroft
46fd60c703
Prevent infinite display update recursion and fix VFS mounting
...
Fixes #1529
2019-02-19 14:50:31 -08:00
Scott Shawcroft
c9f036ed40
Store the original layer in Group
...
As is we would return the native superclass object only.
Fixes #1551
2019-02-15 14:29:59 -08:00
Scott Shawcroft
473bdf48f6
A safe mode fix and displayio fixes
...
* Fixes safe mode on the SAMD51. The "preserved" value was being
clobbered by the bootloader.
* Fixes auto-reload loop when in safe mode.
* Fixes reading Group children with [].
* Check that a TileGrid actually moves before queueing a refresh.
2019-02-13 15:31:06 -08:00
Dan Halbert
66b0c67f54
Merge pull request #1536 from TG-Techie/patch-4
...
DISPIO: end_x can't be > height of shape
2019-02-12 19:17:10 -05:00
TG-Techie
4fbbb999b9
DISPIO: end_x can't be > height of shape
...
an author must have forgotten to change from height to width after copy paste.
2019-02-12 17:53:11 -05:00
Scott Shawcroft
1e16b3e134
Tweaks based on dhalbert's feedback.
2019-02-12 14:18:53 -08:00
Scott Shawcroft
c17f147be9
A variety of displayio improvements
...
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-02-11 20:55:05 -08:00
Scott Shawcroft
448ae64d8e
Add support for display rotation and raw commands
...
Display rotation is relative to the scan order of the display.
The scan order can be found by scrolling the display with command
0x37 `display_bus.send(0x37, struct.pack(">H", i % 128))`
Fixes #1504
2019-02-01 00:32:03 -08:00
Scott Shawcroft
354a26963b
Correctly handle no backlight pin.
2019-01-31 11:42:15 -08:00
Scott Shawcroft
2c069a5685
Polish up comments
2019-01-31 11:42:15 -08:00
Scott Shawcroft
4672866eec
Remove Sprite references
2019-01-31 11:42:14 -08:00
Scott Shawcroft
601a910f4e
More improvements to Terminal:
...
* Fix Hallowing.
* Fix builds without displayio.
* Fix y bounds that appears as untrollable row of pixels.
* Add scrolling to TileGrid.
* Remove Sprite to save space. TileGrid is a drop in replacement.
2019-01-31 11:42:14 -08:00
Scott Shawcroft
6145f08cc8
Support adjustable backlight brightness
2019-01-31 11:42:14 -08:00
Scott Shawcroft
69bc5e189b
Rudamentary backlight support
2019-01-31 11:42:14 -08:00
Scott Shawcroft
1a1dbef992
Hook up the terminal based on the first display.
2019-01-31 11:42:14 -08:00
Scott Shawcroft
590e029198
Begin font parsing and packing for terminal
2019-01-31 11:42:13 -08:00
Scott Shawcroft
fb0970ec6e
Add terminalio
2019-01-31 11:42:13 -08:00
Scott Shawcroft
73cf490635
Add TileGrid
2019-01-31 11:42:13 -08:00
Scott Shawcroft
b2f2abcb22
Make palette color ordering consistent with ColorConvertes and fix blinka.
2019-01-23 14:44:46 -08:00
Scott Shawcroft
3139d0dc20
Use common delay function during display init so we don't starve background tasks.
2019-01-23 14:43:54 -08:00
Bryan Siepert
ab2ad7ba45
adding height and width to OnDiskBitmap for #1460
2019-01-20 22:33:22 -08:00
Scott Shawcroft
ae52c964c2
Cleanup display rework for PR.
...
Fixes #1465 . Fixes #1337 . Fixes #1168
2019-01-18 13:47:40 -08:00
Scott Shawcroft
fddc98858a
fix nonetype handling and nrf never reset
2019-01-17 18:51:40 -08:00
Scott Shawcroft
6404aaf411
Fix up nrf and using board.SPI in FourWire
2019-01-17 18:19:07 -08:00
Scott Shawcroft
760bd8d8a4
share fourwire and make nrf compile
2019-01-17 15:15:59 -08:00
Scott Shawcroft
2d136d58bf
Fix other builds and hallowing
2019-01-17 14:45:29 -08:00
Scott Shawcroft
5277138c99
pyportal compiles and tweak blinka colors
2019-01-17 10:57:05 -08:00
Scott Shawcroft
84292ad890
External fourwire works and blinka splash after
2019-01-17 00:20:16 -08:00
Scott Shawcroft
05d8885a1a
Rework displays in prep for dynamic support and 8bit parallel.
2019-01-16 12:05:20 -08:00
Scott Shawcroft
bfd531281a
Fix default values on last line.
2019-01-15 10:15:55 -08:00
Scott Shawcroft
747f2cfe26
Add subclass support to displayio.
...
Also, swap make_news to accept a kwarg map and refine param checking.
Fixes #1237
2019-01-14 17:29:19 -08:00
Scott Shawcroft
a14762a16c
Add support for rendering a shape.
...
Fixes #1171
2019-01-14 17:29:15 -08:00
Scott Shawcroft
6594937a65
Support rendering groups inside groups
2019-01-10 17:30:16 -08:00
Scott Shawcroft
76008ce304
Introduce audioio.Mixer which can mix multiple audio samples
...
to produce a single sample.
Only works with 16 bit samples on the M4.
Fixes #987
2018-10-05 15:12:23 -07:00
Scott Shawcroft
75d497bcc8
More explicit init in Group
2018-09-13 10:42:12 -07:00
Scott Shawcroft
f21cf15c38
Add OnDiskBitmap which loads pixel data straight from disk.
...
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-09-12 15:25:59 -07:00
Scott Shawcroft
1683eb913d
Minor tweaks based on feedback
2018-09-06 14:49:49 -07:00
Scott Shawcroft
121903b6ee
Tweaks based on feedback
2018-08-31 14:21:48 -07:00
Scott Shawcroft
6697544cdf
Introduce displayio to render graphics to displays.
...
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.
2018-08-31 12:31:52 -07:00