<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/shared-module/framebufferio, branch 6.0.0-beta.1</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=6.0.0-beta.1</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=6.0.0-beta.1'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2020-09-01T16:00:22+00:00</updated>
<entry>
<title>FramebufferDisplay: Don't set rotation via core_construct</title>
<updated>2020-09-01T16:00:22+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-09-01T15:30:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=71c63c2812ce63ceabdc74aac1b2dda5eb1ca338'/>
<id>urn:sha1:71c63c2812ce63ceabdc74aac1b2dda5eb1ca338</id>
<content type='text'>
The expectations of displayio.Display and frambufferio.FramebufferDisplay
are different when it comes to rotation.

In displayio.Display, if you call core_construct with a WxH = 64x32
and rotation=90, you get something that is 32 pixels wide and 64 pixels
tall in the LCD's coordinate system.

This is fine, as the existing definitions were written to work like this.
With framebuffer displays, however, the underlying framebuffer (such as
RGBMatrix) says "I am WxH pixels wide in my coordinate system" and the
constructor is given a rotation; when the rotation indicates a transpose
that means "exchange rows and columns, so that to the Groups displayed
on it, there is an effectively HxW pixel region for use".

Happily, we already have a set_rotation method.  Thus (modulo the time
spent debugging things anyway:) the fix is simple: Always request no
rotation from core_construct, then immediately fix up the rotation
to match what was requested.

Testing performed: 32x16 RGBMatrix on Metro M4 Express (but using
the Airlift firmware, as this is the configuration the error was reported
on):
 * initially construct display at 0, 90, 180, 270 degrees
 * later change angle to 0, 90, 180, 270 degrees
 * no garbled display
 * no safe mode crashes
</content>
</entry>
<entry>
<title>Split pulseio.PWMOut into pwmio</title>
<updated>2020-08-18T20:08:33+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott@tannewt.org</email>
</author>
<published>2020-08-18T20:08:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=6857f984269149b46d1cd4283506420f341b2601'/>
<id>urn:sha1:6857f984269149b46d1cd4283506420f341b2601</id>
<content type='text'>
This gives us better granularity when implementing new ports because
PWMOut is commonly implemented before PulseIn and PulseOut.

Fixes #3211
</content>
</entry>
<entry>
<title>Update shared-module/framebufferio/FramebufferDisplay.h</title>
<updated>2020-08-12T17:50:08+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-08-12T17:50:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=d61f66d173c956b10679e83b93d7f84fbc6f0bb4'/>
<id>urn:sha1:d61f66d173c956b10679e83b93d7f84fbc6f0bb4</id>
<content type='text'>
Co-authored-by: Scott Shawcroft &lt;scott@tannewt.org&gt;</content>
</entry>
<entry>
<title>sharpmemory: Implement support for Sharp Memory Displays in framebufferio</title>
<updated>2020-08-12T12:32:18+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-08-06T21:03:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=c1400bae9bbdd55f650ddfe24edf6778f08c35b8'/>
<id>urn:sha1:c1400bae9bbdd55f650ddfe24edf6778f08c35b8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>framebufferio: add dirty row tracking</title>
<updated>2020-08-12T12:32:18+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-08-06T19:51:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=9c4f644641400c7b7eea37ace73782bc1cec2691'/>
<id>urn:sha1:9c4f644641400c7b7eea37ace73782bc1cec2691</id>
<content type='text'>
</content>
</entry>
<entry>
<title>framebufferio: Add getters for remaining displayio_display_core_construct arguments</title>
<updated>2020-08-12T12:32:18+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-08-06T19:46:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=5e4ed9341586c3444409feeb61237e86a5c74c6f'/>
<id>urn:sha1:5e4ed9341586c3444409feeb61237e86a5c74c6f</id>
<content type='text'>
.. and introduce a convenience macro that helps many of them be required
(if their values match defaults or are inapplicable)
</content>
</entry>
<entry>
<title>framebufferio: Check early if framebuffer is big enough</title>
<updated>2020-08-12T12:32:18+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-08-06T19:28:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=1ee2062c1b64ecfda0af49cb0f721573aad7dea4'/>
<id>urn:sha1:1ee2062c1b64ecfda0af49cb0f721573aad7dea4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>framebufferio: add "first pixel offset" and "row stride"</title>
<updated>2020-08-12T12:32:18+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-08-06T19:28:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=a33e48c065093212729e620bb22da5ca327fabe4'/>
<id>urn:sha1:a33e48c065093212729e620bb22da5ca327fabe4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>framebufferio: handle sharp memory displays</title>
<updated>2020-08-12T12:32:18+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-07-31T20:46:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=8021f3b4cbb96e0edaf139fa88ea7273c92a5493'/>
<id>urn:sha1:8021f3b4cbb96e0edaf139fa88ea7273c92a5493</id>
<content type='text'>
A bit of cheating; we need to add a protocol getter for
reverse_bytes_in_word
</content>
</entry>
<entry>
<title>framebufferio: Handle 1 (tested), 2, and 4 bpp displays</title>
<updated>2020-08-12T12:32:18+00:00</updated>
<author>
<name>Jeff Epler</name>
<email>jepler@gmail.com</email>
</author>
<published>2020-07-31T20:46:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=a84cc19499e1cb71387cb5be379676d0c8b84f9a'/>
<id>urn:sha1:a84cc19499e1cb71387cb5be379676d0c8b84f9a</id>
<content type='text'>
</content>
</entry>
</feed>
