From 03c06e980deebc95487876908857e136292104ec Mon Sep 17 00:00:00 2001 From: multiSnow Date: Wed, 7 Dec 2022 02:06:00 +0800 Subject: [PATCH] remove undesired gap between pages if autofit scaling in double mode --- src/ssiv/widget/environ_draw.py | 45 ++++++++++++++++----------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/src/ssiv/widget/environ_draw.py b/src/ssiv/widget/environ_draw.py index 0bcf01c..32c8d76 100644 --- a/src/ssiv/widget/environ_draw.py +++ b/src/ssiv/widget/environ_draw.py @@ -346,29 +346,28 @@ def draw_dual_canvas(self): canvasr.draw(srcrect=srcrectr,dstrect=dstrectr) return preload_canvas(self) - else: - # autofit, downscale only if canvas is larger than output size. - # always show in left/rigt center, ignore canvas_offset - # place split gap in middle of window - srcrectl=srcrectr=None # entire texture - outer_width=max(dpl_w,dpr_w)*2 - scale=min(area_w/outer_width,area_h/dp_h,1) - pge_x=area_w/2-dpl_w*scale - pge_y=(area_h-dp_h*scale)/2 - pge_w=dp_w*scale - pge_h=dp_h*scale - dstl_x=dpl_x*scale+pge_x - dstr_x=dpr_x*scale+area_w/2 - dstl_y=dpl_y*scale+pge_y - dstr_y=dpr_y*scale+pge_y - dstl_w=srcl_w*scale*scale_l - dstl_h=srcl_h*scale*scale_l - dstr_w=srcr_w*scale*scale_r - dstr_h=srcr_h*scale*scale_r - # apply area offset - pgerect=(*map(int,(pge_x+area_x,pge_y+area_y,pge_w,pge_h)),) - dstrectl=(*map(int,(dstl_x+area_x,dstl_y+area_y,dstl_w,dstl_h)),) - dstrectr=(*map(int,(dstr_x+area_x,dstr_y+area_y,dstr_w,dstr_h)),) + # autofit, downscale only if canvas is larger than output size. + # always show in left/rigt center, ignore canvas_offset + # place split gap in middle of window + srcrectl=srcrectr=None # entire texture + outer_width=max(dpl_w,dpr_w)*2 + scale=min(area_w/outer_width,area_h/dp_h,1) + pge_x=area_w/2-dpl_w*scale + pge_y=(area_h-dp_h*scale)/2 + pge_w=dp_w*scale + pge_h=dp_h*scale + dstl_x=dpl_x*scale+pge_x + dstr_x=dpr_x*scale+area_w/2 + dstl_y=dpl_y*scale+pge_y + dstr_y=dpr_y*scale+pge_y + dstl_w=srcl_w*scale*scale_l + dstl_h=srcl_h*scale*scale_l + dstr_w=srcr_w*scale*scale_r + dstr_h=srcr_h*scale*scale_r + # apply area offset + pgerect=(*map(int,(pge_x+area_x,pge_y+area_y)),*map(ceil,(pge_w,pge_h))) + dstrectl=(*map(int,(dstl_x+area_x,dstl_y+area_y)),*map(ceil,(dstl_w,dstl_h))) + dstrectr=(*map(int,(dstr_x+area_x,dstr_y+area_y)),*map(ceil,(dstr_w,dstr_h))) if self.checker: if self.use_page and (canvasl.has_page or canvasr.has_page):