adafruit-circuitpython-qualia 2.1.3__tar.gz → 2.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/PKG-INFO +1 -1
  2. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_circuitpython_qualia.egg-info/PKG-INFO +1 -1
  3. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/__init__.py +1 -1
  4. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/__init__.py +80 -3
  5. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/graphics.py +12 -2
  6. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/network.py +1 -1
  7. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/peripherals.py +1 -1
  8. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/pyproject.toml +1 -1
  9. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.gitattributes +0 -0
  10. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.github/PULL_REQUEST_TEMPLATE/adafruit_circuitpython_pr.md +0 -0
  11. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.github/workflows/build.yml +0 -0
  12. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.github/workflows/failure-help-text.yml +0 -0
  13. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.github/workflows/release_gh.yml +0 -0
  14. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.github/workflows/release_pypi.yml +0 -0
  15. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.gitignore +0 -0
  16. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.pre-commit-config.yaml +0 -0
  17. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/.readthedocs.yaml +0 -0
  18. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/CODE_OF_CONDUCT.md +0 -0
  19. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/LICENSE +0 -0
  20. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/LICENSES/CC-BY-4.0.txt +0 -0
  21. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/LICENSES/MIT.txt +0 -0
  22. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/LICENSES/Unlicense.txt +0 -0
  23. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/README.rst +0 -0
  24. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/README.rst.license +0 -0
  25. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_circuitpython_qualia.egg-info/SOURCES.txt +0 -0
  26. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_circuitpython_qualia.egg-info/dependency_links.txt +0 -0
  27. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_circuitpython_qualia.egg-info/requires.txt +0 -0
  28. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_circuitpython_qualia.egg-info/top_level.txt +0 -0
  29. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/bar240x960.py +0 -0
  30. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/bar320x820.py +0 -0
  31. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/bar320x960.py +0 -0
  32. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/round21.py +0 -0
  33. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/round28.py +0 -0
  34. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/round40.py +0 -0
  35. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/square34.py +0 -0
  36. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/square40.py +0 -0
  37. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/adafruit_qualia/displays/square40_480x480.py +0 -0
  38. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/_static/custom.css +0 -0
  39. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/_static/favicon.ico +0 -0
  40. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/_static/favicon.ico.license +0 -0
  41. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/api.rst +0 -0
  42. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/api.rst.license +0 -0
  43. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/conf.py +0 -0
  44. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/examples.rst +0 -0
  45. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/examples.rst.license +0 -0
  46. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/index.rst +0 -0
  47. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/index.rst.license +0 -0
  48. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/docs/requirements.txt +0 -0
  49. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/examples/qualia_paint.py +0 -0
  50. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/examples/qualia_qrcode_generation.py +0 -0
  51. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/examples/qualia_quotes.py +0 -0
  52. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/examples/qualia_simpletest.py +0 -0
  53. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/optional_requirements.txt +0 -0
  54. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/requirements.txt +0 -0
  55. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/ruff.toml +0 -0
  56. {adafruit_circuitpython_qualia-2.1.3 → adafruit_circuitpython_qualia-2.2.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adafruit-circuitpython-qualia
3
- Version: 2.1.3
3
+ Version: 2.2.0
4
4
  Summary: Portal Style Library for the Adafruit Qualia ESP32-S3
5
5
  Author-email: Adafruit Industries <circuitpython@adafruit.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adafruit-circuitpython-qualia
3
- Version: 2.1.3
3
+ Version: 2.2.0
4
4
  Summary: Portal Style Library for the Adafruit Qualia ESP32-S3
5
5
  Author-email: Adafruit Industries <circuitpython@adafruit.com>
6
6
  License: MIT
@@ -40,7 +40,7 @@ try:
40
40
  except ImportError:
41
41
  pass
42
42
 
43
- __version__ = "2.1.3"
43
+ __version__ = "2.2.0"
44
44
  __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_Qualia.git"
45
45
 
46
46
 
@@ -31,6 +31,54 @@ TOUCH_CST826 = Adafruit_CST8XX
31
31
  TOUCH_INIT_DELAY = 0.1 # 100ms
32
32
 
33
33
 
34
+ class Touch:
35
+ """Simple passthrough touch class that allows rotation transformation"""
36
+
37
+ def __init__(self, touch_driver, display, rotation=0):
38
+ self._driver = touch_driver
39
+ self._width = display.width
40
+ self._height = display.height
41
+ self._rotation = rotation
42
+
43
+ def transform(self, x, y):
44
+ """Transform touch coordinates based on rotation"""
45
+ if self._rotation == 0:
46
+ return x, y
47
+ elif self._rotation == 90:
48
+ return y, self._height - x
49
+ elif self._rotation == 180:
50
+ return self._width - x, self._height - y
51
+ elif self._rotation == 270:
52
+ return self._width - y, x
53
+ else:
54
+ raise ValueError("Rotation must be 0, 90, 180, or 270")
55
+
56
+ @property
57
+ def rotation(self):
58
+ """Return the rotation"""
59
+ return self._rotation
60
+
61
+ @rotation.setter
62
+ def rotation(self, value):
63
+ """Set the rotation"""
64
+ if value not in {0, 90, 180, 270}:
65
+ raise ValueError("Rotation must be 0, 90, 180, or 270")
66
+ self._rotation = value
67
+
68
+ @property
69
+ def touches(self):
70
+ """Return the number of touches"""
71
+ touches = self._driver.touches
72
+ for touch in touches:
73
+ touch["x"], touch["y"] = self.transform(touch["x"], touch["y"])
74
+ return touches
75
+
76
+ @property
77
+ def touched(self):
78
+ """Return whether the screen is touched"""
79
+ return self._driver.touched
80
+
81
+
34
82
  class DotClockDisplay:
35
83
  """DotClock Display Base Class for the Adafruit Qualia ESP32-S3 Library"""
36
84
 
@@ -43,7 +91,7 @@ class DotClockDisplay:
43
91
  self._touch_driver = TOUCH_FOCALTOUCH
44
92
  self._touch_address = 0x38
45
93
  self.display = None
46
- self.touch = None
94
+ self._touch = None
47
95
  self._i2c = None
48
96
  self._round = False
49
97
 
@@ -73,9 +121,14 @@ class DotClockDisplay:
73
121
  self._i2c = busio.I2C(board.SCL, board.SDA)
74
122
  time.sleep(TOUCH_INIT_DELAY) # Wait for Focaltouch Chip to finish resetting
75
123
  try:
76
- self.touch = self._touch_driver(self._i2c, self._touch_address)
124
+ self._touch = Touch(self._touch_driver(self._i2c, self._touch_address), self.display)
125
+
77
126
  except (RuntimeError, ValueError):
78
- self.touch = None
127
+ self._touch = None
128
+
129
+ def _transform_touch(self, x, y):
130
+ """Transform touch coordinates if needed"""
131
+ return x, y
79
132
 
80
133
  @property
81
134
  def width(self):
@@ -102,3 +155,27 @@ class DotClockDisplay:
102
155
  def round(self):
103
156
  """Return whether the display is circular"""
104
157
  return self._round
158
+
159
+ @property
160
+ def rotation(self):
161
+ """Return the display touch rotation"""
162
+ display_rotation = self.display.rotation if self.display is not None else 0
163
+ touch_rotation = self._touch.rotation if self._touch is not None else 0
164
+ if display_rotation != touch_rotation:
165
+ raise ValueError("Display and touch rotation do not match")
166
+ return self._touch.rotation
167
+
168
+ @rotation.setter
169
+ def rotation(self, value: int):
170
+ """Set the display rotation"""
171
+ if value not in {0, 90, 180, 270}:
172
+ raise ValueError("Rotation must be 0, 90, 180, or 270")
173
+ self._touch.rotation = value
174
+ # Update the display rotation if already initialized
175
+ if self.display is not None:
176
+ self.display.rotation = value
177
+
178
+ @property
179
+ def touch(self):
180
+ """Return the touch driver"""
181
+ return self._touch
@@ -31,7 +31,7 @@ import os
31
31
 
32
32
  from adafruit_portalbase.graphics import GraphicsBase
33
33
 
34
- __version__ = "2.1.3"
34
+ __version__ = "2.2.0"
35
35
  __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_Qualia.git"
36
36
 
37
37
 
@@ -90,7 +90,7 @@ class Graphics(GraphicsBase):
90
90
  scale=scale,
91
91
  debug=debug,
92
92
  )
93
- self.display.rotation = rotation
93
+ self._dotclock_display.rotation = rotation
94
94
 
95
95
  def init_display(self, display_type: str, *, auto_refresh: bool = True):
96
96
  """Load the Display Class, then initialize the display and touch driver"""
@@ -134,3 +134,13 @@ class Graphics(GraphicsBase):
134
134
  def dotclockdisplay(self):
135
135
  """Return the dotclock display object"""
136
136
  return self._dotclock_display
137
+
138
+ @property
139
+ def rotation(self):
140
+ """Return the rotation"""
141
+ return self._dotclock_display.rotation
142
+
143
+ @rotation.setter
144
+ def rotation(self, value):
145
+ """Set the rotation"""
146
+ self._dotclock_display.rotation = value
@@ -40,7 +40,7 @@ try:
40
40
  except ImportError:
41
41
  pass
42
42
 
43
- __version__ = "2.1.3"
43
+ __version__ = "2.2.0"
44
44
  __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_Qualia.git"
45
45
 
46
46
  IO_MQTT_BROKER = "io.adafruit.com"
@@ -35,7 +35,7 @@ import board
35
35
  import busio
36
36
  from digitalio import Pull
37
37
 
38
- __version__ = "2.1.3"
38
+ __version__ = "2.2.0"
39
39
  __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_Qualia.git"
40
40
 
41
41
 
@@ -13,7 +13,7 @@ requires = [
13
13
  [project]
14
14
  name = "adafruit-circuitpython-qualia"
15
15
  description = "Portal Style Library for the Adafruit Qualia ESP32-S3"
16
- version = "2.1.3"
16
+ version = "2.2.0"
17
17
  readme = "README.rst"
18
18
  authors = [
19
19
  {name = "Adafruit Industries", email = "circuitpython@adafruit.com"}