@@ -238,6 +238,8 @@ def __init__(self) -> None: # pylint: disable=too-many-statements
238
238
self .overlay_transparency_color = None
239
239
self .overlay_bmp = None
240
240
self .combined_bmp = None
241
+ self .preview_scale = None
242
+ self .overlay_position = [None , None ]
241
243
self .splash = displayio .Group ()
242
244
243
245
# Reset display and I/O expander
@@ -645,6 +647,8 @@ def resolution(self, res):
645
647
microcontroller .nvm [_NVM_RESOLUTION ] = res
646
648
self ._resolution = res
647
649
self ._res_label .text = self .resolutions [res ]
650
+ _width = int (self .resolutions [self .resolution ].split ("x" )[0 ])
651
+ self .preview_scale = 240 / _width
648
652
self .display .refresh ()
649
653
650
654
@property
@@ -928,8 +932,8 @@ def blit_overlay_into_last_capture(self):
928
932
bitmaptools .blit (
929
933
photo_bitmap ,
930
934
self .overlay_bmp ,
931
- 0 ,
932
- 0 ,
935
+ self . overlay_position [ 0 ] if self . overlay_position [ 0 ] is not None else 0 ,
936
+ self . overlay_position [ 1 ] if self . overlay_position [ 1 ] is not None else 0 ,
933
937
skip_source_index = self .overlay_transparency_color ,
934
938
skip_dest_index = None ,
935
939
)
@@ -1003,8 +1007,16 @@ def blit(self, bitmap, x_offset=0, y_offset=32):
1003
1007
bitmaptools .rotozoom (
1004
1008
self .combined_bmp ,
1005
1009
self .overlay_bmp ,
1006
- scale = 0.75 ,
1010
+ scale = self . preview_scale ,
1007
1011
skip_index = self .overlay_transparency_color ,
1012
+ ox = int (self .overlay_position [0 ] * self .preview_scale )
1013
+ if self .overlay_position [0 ] is not None
1014
+ else None ,
1015
+ oy = int (self .overlay_position [1 ] * self .preview_scale )
1016
+ if self .overlay_position [1 ] is not None
1017
+ else None ,
1018
+ px = 0 if self .overlay_position [0 ] is not None else None ,
1019
+ py = 0 if self .overlay_position [1 ] is not None else None ,
1008
1020
)
1009
1021
bitmap = self .combined_bmp
1010
1022
0 commit comments