Commit 08c47887 authored by dmMaze's avatar dmMaze
Browse files

Squeeze textblock on font size changed

parent 71cee8a1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ class Canvas(QGraphicsScene):
    format_textblks = Signal()
    layout_textblks = Signal()
    reset_angle = Signal()
    squeeze_blk = Signal()

    run_blktrans = Signal(int)

@@ -751,6 +752,7 @@ class Canvas(QGraphicsScene):
            format_act = menu.addAction(self.tr("Apply font formatting"))
            layout_act = menu.addAction(self.tr("Auto layout"))
            angle_act = menu.addAction(self.tr("Reset Angle"))
            squeeze_act = menu.addAction(self.tr("Squeeze"))
            menu.addSeparator()
            translate_act = menu.addAction(self.tr("translate"))
            ocr_act = menu.addAction(self.tr("OCR"))
@@ -778,6 +780,8 @@ class Canvas(QGraphicsScene):
                self.layout_textblks.emit()
            elif rst == angle_act:
                self.reset_angle.emit()
            elif rst == squeeze_act:
                self.squeeze_blk.emit()
            elif rst == translate_act:
                self.run_blktrans.emit(-1)
            elif rst == ocr_act:
+2 −2
Original line number Diff line number Diff line
@@ -136,12 +136,12 @@ def ffmt_change_stroke_width(param_name: str, values: float, act_ffmt: FontForma
        blkitem.setStrokeWidth(value, **set_kwargs)

@font_formating()
def ffmt_change_size(param_name: str, values: float, act_ffmt: FontFormat, is_global: bool, blkitems: List[TextBlkItem], **kwargs):
def ffmt_change_size(param_name: str, values: float, act_ffmt: FontFormat, is_global: bool, blkitems: List[TextBlkItem], clip_size=False, **kwargs):
    set_kwargs = global_default_set_kwargs if is_global else local_default_set_kwargs
    for blkitem, value in zip(blkitems, values):
        if value < 0:
            continue
        blkitem.setFontSize(value, **set_kwargs)
        blkitem.setFontSize(value, clip_size=clip_size, **set_kwargs)

@font_formating(push_undostack=True)
def ffmt_change_alignment(param_name: str, values: float, act_ffmt: FontFormat, is_global: bool, blkitems: List[TextBlkItem], **kwargs):
+5 −2
Original line number Diff line number Diff line
@@ -1071,11 +1071,14 @@ class FontFormatPanel(Widget):

    def on_param_changed(self, param_name: str, value):
        func = FM.handle_ffmt_change.get(param_name)
        func_kwargs = {}
        if param_name == 'size':
            func_kwargs['clip_size'] = True
        if self.global_mode():
            func(param_name, value, self.global_format, is_global=True)
            func(param_name, value, self.global_format, is_global=True, **func_kwargs)
            self.update_text_style_label()
        else:
            func(param_name, value, C.active_format, is_global=False, blkitems=self.textblk_item, set_focus=True)
            func(param_name, value, C.active_format, is_global=False, blkitems=self.textblk_item, set_focus=True, **func_kwargs)

    def update_text_style_label(self):
        if self.global_mode():
+1 −1
Original line number Diff line number Diff line
@@ -946,7 +946,7 @@ class MainWindow(mainwindow_cls):

        if not pcfg.module.enable_detect:
            for blkitem in self.st_manager.textblk_item_list:
                blkitem.shrinkSize()
                blkitem.squeezeBoundingRect()

        if page_index + 1 == self.imgtrans_proj.num_pages:
            self.st_manager.auto_textlayout_flag = False
+2 −3
Original line number Diff line number Diff line
@@ -710,7 +710,6 @@ class VerticalTextDocumentLayout(SceneTextLayout):
                for _ in range(num_rspaces):
                    char_yoffset_lst.append(min(char_yoffset_lst[-1] + space_w, available_height))
                line_bottom = char_yoffset_lst[-1]
                shrink_height = available_height
            else:
                cfmt = self.get_char_fontfmt(block_no, char_idx)
                if cfmt is not None:
@@ -773,8 +772,8 @@ class VerticalTextDocumentLayout(SceneTextLayout):
        tl.endLayout()
            
        self.layout_left = x_offset - self.draw_shifted
        self.shrink_width = max(self.max_width - self.layout_left, self.shrink_width)
        self.shrink_height = max(shrink_height, self.shrink_height)
        self.shrink_width = max(self.max_width - self.layout_left - doc_margin + 0.01, self.shrink_width)
        self.shrink_height = max(shrink_height + 0.01, self.shrink_height)
        self.x_offset_lst.append(x_offset)
        self.y_offset_lst.append(blk_char_yoffset)
        self.line_spaces_lst.append(blk_line_spaces)
Loading