<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/shared-module/displayio/Group.c, branch 6.2.0-beta.2</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=6.2.0-beta.2</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=6.2.0-beta.2'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2020-05-10T22:36:23+00:00</updated>
<entry>
<title>vectorio: clean up after group removal</title>
<updated>2020-05-10T22:36:23+00:00</updated>
<author>
<name>warriorofwire</name>
<email>3454741+WarriorOfWire@users.noreply.github.com</email>
</author>
<published>2020-05-10T22:36:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=58c8e00745064bd290fc9ec18a838960b27c1eea'/>
<id>urn:sha1:58c8e00745064bd290fc9ec18a838960b27c1eea</id>
<content type='text'>
VectorShape tells the Group to redraw whatever it left behind when it is removed now.
</content>
</entry>
<entry>
<title>vectorio: respect display transpose and mirror.</title>
<updated>2020-05-10T21:18:13+00:00</updated>
<author>
<name>warriorofwire</name>
<email>3454741+WarriorOfWire@users.noreply.github.com</email>
</author>
<published>2020-05-10T21:17:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=6660311a96f063e935e85a228f8b12e3a07ca95c'/>
<id>urn:sha1:6660311a96f063e935e85a228f8b12e3a07ca95c</id>
<content type='text'>
VectorShape now just uses the Group's and Display's absolute transforms.
</content>
</entry>
<entry>
<title>vectorio: switch per-shape transform to Display</title>
<updated>2020-05-10T05:15:51+00:00</updated>
<author>
<name>warriorofwire</name>
<email>3454741+WarriorOfWire@users.noreply.github.com</email>
</author>
<published>2020-05-09T06:03:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=4086600b61f14e043f02c1b8771e7780b82f313c'/>
<id>urn:sha1:4086600b61f14e043f02c1b8771e7780b82f313c</id>
<content type='text'>
Rather than maintain a transform per-shape, we'll just use whatever
  settings are on the Display.  Currently only transpose is done.
</content>
</entry>
<entry>
<title>Add vectorio: for drawing shapes</title>
<updated>2020-05-09T22:38:22+00:00</updated>
<author>
<name>warriorofwire</name>
<email>3454741+WarriorOfWire@users.noreply.github.com</email>
</author>
<published>2020-05-02T09:21:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=206d0e598adb66e2b23a39a7d11e2f5087513205'/>
<id>urn:sha1:206d0e598adb66e2b23a39a7d11e2f5087513205</id>
<content type='text'>
vectorio builds on m4 express feather

Concrete shapes are composed into a VectorShape which is put into a displayio Group for display.

VectorShape provides transpose and x/y positioning for shape implementations.

Included Shapes:

* Circle
  - A radius; Circle is positioned at its axis in the VectorShape.
  - You can freely modify the radius to grow and shrink the circle in-place.

* Polygon
  - An ordered list of points.
  - Beteween each successive point an edge is inferred.  A final edge closing the shape is inferred between the last
    point and the first point.
  - You can modify the points in a Polygon.  The points' coordinate system is relative to (0, 0) so if you'd like a
      top-center justified 10x20 rectangle you can do points [(-5, 0), (5, 0), (5, 20), (0, 20)] and your VectorShape
      x and y properties will position the rectangle relative to its top center point

* Rectangle
  A width and a height.
</content>
</entry>
<entry>
<title>Add .hidden to TileGrid and Group</title>
<updated>2019-09-03T23:15:27+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott@tannewt.org</email>
</author>
<published>2019-08-27T23:03:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=949f8761b8c41ecbf8660bcd5a333890a37e426e'/>
<id>urn:sha1:949f8761b8c41ecbf8660bcd5a333890a37e426e</id>
<content type='text'>
This allows for one to preserve ordering within a Group while
hiding something temporarily.

Fixes #1688
</content>
</entry>
<entry>
<title>Add support for grayscale displays that are &lt; 8 bit depth.</title>
<updated>2019-07-19T23:06:11+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott@tannewt.org</email>
</author>
<published>2019-07-06T02:01:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=6797ec6ed396f65916fe816f8b2b49114253dd86'/>
<id>urn:sha1:6797ec6ed396f65916fe816f8b2b49114253dd86</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>Minor tweaks based on Dan's feedback</title>
<updated>2019-06-13T07:34:19+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott@tannewt.org</email>
</author>
<published>2019-06-13T07:34:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=6f6dcafd906b2ac49291f4220f3fcc7cea6112e1'/>
<id>urn:sha1:6f6dcafd906b2ac49291f4220f3fcc7cea6112e1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add partial display update support.</title>
<updated>2019-06-12T18:32:39+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott@tannewt.org</email>
</author>
<published>2019-06-06T22:11:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=eb21fc3e31790cee094d5c11811b55a57625340a'/>
<id>urn:sha1:eb21fc3e31790cee094d5c11811b55a57625340a</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Make point 2 in areas exclusive and simplify full_coverage.</title>
<updated>2019-05-22T22:00:47+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott@tannewt.org</email>
</author>
<published>2019-05-22T22:00:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=7a117f52ed81999261fae3d43dfeb572c5e9887e'/>
<id>urn:sha1:7a117f52ed81999261fae3d43dfeb572c5e9887e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rework the pixel computation to use areas</title>
<updated>2019-05-22T00:41:06+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott@tannewt.org</email>
</author>
<published>2019-05-16T23:45:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=3fad7de8db7f1f317ab6d00a00a82e406ec6fb33'/>
<id>urn:sha1:3fad7de8db7f1f317ab6d00a00a82e406ec6fb33</id>
<content type='text'>
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.
</content>
</entry>
</feed>
