8
8
================================================================================
9
9
10
10
Save a displayio.Bitmap (and associated displayio.Palette) in a BMP file.
11
- Make a screenshot (the contents of a displayio.Display ) and save in a BMP file.
11
+ Make a screenshot (the contents of a busdisplay.BusDisplay ) and save in a BMP file.
12
12
13
13
14
14
* Author(s): Dave Astels, Matt Land
26
26
27
27
"""
28
28
29
- # imports
29
+ # pylint: disable=ungrouped- imports
30
30
31
31
import gc
32
32
import struct
33
33
import board
34
- from displayio import Bitmap , Palette , Display , ColorConverter
34
+ from displayio import Bitmap , Palette , ColorConverter
35
+
36
+ try :
37
+ from busdisplay import BusDisplay
38
+ except ImportError :
39
+ from displayio import Display as BusDisplay
35
40
36
41
try :
37
42
from typing import Tuple , Optional , Union
@@ -67,9 +72,11 @@ def _bytes_per_row(source_width: int) -> int:
67
72
return pixel_bytes + padding_bytes
68
73
69
74
70
- def _rotated_height_and_width (pixel_source : Union [Bitmap , Display ]) -> Tuple [int , int ]:
75
+ def _rotated_height_and_width (
76
+ pixel_source : Union [Bitmap , BusDisplay ]
77
+ ) -> Tuple [int , int ]:
71
78
# flip axis if the display is rotated
72
- if isinstance (pixel_source , Display ) and (pixel_source .rotation % 180 != 0 ):
79
+ if isinstance (pixel_source , BusDisplay ) and (pixel_source .rotation % 180 != 0 ):
73
80
return pixel_source .height , pixel_source .width
74
81
return pixel_source .width , pixel_source .height
75
82
@@ -111,7 +118,7 @@ def rgb565_to_rgb888(rgb565):
111
118
# pylint:disable=too-many-locals
112
119
def _write_pixels (
113
120
output_file : BufferedWriter ,
114
- pixel_source : Union [Bitmap , Display ],
121
+ pixel_source : Union [Bitmap , BusDisplay ],
115
122
palette : Optional [Union [Palette , ColorConverter ]],
116
123
) -> None :
117
124
saving_bitmap = isinstance (pixel_source , Bitmap )
@@ -156,7 +163,7 @@ def _write_pixels(
156
163
157
164
def save_pixels (
158
165
file_or_filename : Union [str , BufferedWriter ],
159
- pixel_source : Union [Display , Bitmap ] = None ,
166
+ pixel_source : Union [BusDisplay , Bitmap ] = None ,
160
167
palette : Optional [Union [Palette , ColorConverter ]] = None ,
161
168
) -> None :
162
169
"""Save pixels to a 24 bit per pixel BMP file.
@@ -177,7 +184,7 @@ def save_pixels(
177
184
raise ValueError (
178
185
"Third argument must be a Palette or ColorConverter for a Bitmap save"
179
186
)
180
- elif not isinstance (pixel_source , Display ):
187
+ elif not isinstance (pixel_source , BusDisplay ):
181
188
raise ValueError ("Second argument must be a Bitmap or Display" )
182
189
try :
183
190
if isinstance (file_or_filename , str ):
0 commit comments