@@ -238,6 +238,8 @@ def __init__(self) -> None: # pylint: disable=too-many-statements
238238 self .overlay_transparency_color = None
239239 self .overlay_bmp = None
240240 self .combined_bmp = None
241+ self .preview_scale = None
242+ self .overlay_position = [None , None ]
241243 self .splash = displayio .Group ()
242244
243245 # Reset display and I/O expander
@@ -645,6 +647,8 @@ def resolution(self, res):
645647 microcontroller .nvm [_NVM_RESOLUTION ] = res
646648 self ._resolution = res
647649 self ._res_label .text = self .resolutions [res ]
650+ _width = int (self .resolutions [self .resolution ].split ("x" )[0 ])
651+ self .preview_scale = 240 / _width
648652 self .display .refresh ()
649653
650654 @property
@@ -928,8 +932,8 @@ def blit_overlay_into_last_capture(self):
928932 bitmaptools .blit (
929933 photo_bitmap ,
930934 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 ,
933937 skip_source_index = self .overlay_transparency_color ,
934938 skip_dest_index = None ,
935939 )
@@ -1003,8 +1007,16 @@ def blit(self, bitmap, x_offset=0, y_offset=32):
10031007 bitmaptools .rotozoom (
10041008 self .combined_bmp ,
10051009 self .overlay_bmp ,
1006- scale = 0.75 ,
1010+ scale = self . preview_scale ,
10071011 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 ,
10081020 )
10091021 bitmap = self .combined_bmp
10101022
0 commit comments