88================================================================================
99
1010Save 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.
1212
1313
1414* Author(s): Dave Astels, Matt Land
2626
2727"""
2828
29- # imports
29+ # pylint: disable=ungrouped- imports
3030
3131import gc
3232import struct
3333import 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
3540
3641try :
3742 from typing import Tuple , Optional , Union
@@ -67,9 +72,11 @@ def _bytes_per_row(source_width: int) -> int:
6772 return pixel_bytes + padding_bytes
6873
6974
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 ]:
7178 # 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 ):
7380 return pixel_source .height , pixel_source .width
7481 return pixel_source .width , pixel_source .height
7582
@@ -111,7 +118,7 @@ def rgb565_to_rgb888(rgb565):
111118# pylint:disable=too-many-locals
112119def _write_pixels (
113120 output_file : BufferedWriter ,
114- pixel_source : Union [Bitmap , Display ],
121+ pixel_source : Union [Bitmap , BusDisplay ],
115122 palette : Optional [Union [Palette , ColorConverter ]],
116123) -> None :
117124 saving_bitmap = isinstance (pixel_source , Bitmap )
@@ -156,7 +163,7 @@ def _write_pixels(
156163
157164def save_pixels (
158165 file_or_filename : Union [str , BufferedWriter ],
159- pixel_source : Union [Display , Bitmap ] = None ,
166+ pixel_source : Union [BusDisplay , Bitmap ] = None ,
160167 palette : Optional [Union [Palette , ColorConverter ]] = None ,
161168) -> None :
162169 """Save pixels to a 24 bit per pixel BMP file.
@@ -177,7 +184,7 @@ def save_pixels(
177184 raise ValueError (
178185 "Third argument must be a Palette or ColorConverter for a Bitmap save"
179186 )
180- elif not isinstance (pixel_source , Display ):
187+ elif not isinstance (pixel_source , BusDisplay ):
181188 raise ValueError ("Second argument must be a Bitmap or Display" )
182189 try :
183190 if isinstance (file_or_filename , str ):
0 commit comments