Loading modules/textdetector/textblock.py +28 −9 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ class TextBlock(object): _bounding_rect: List = None, accumulate_color = True, default_stroke_width = 0.2, stroke_decide_by_colordiff: bool = True, font_weight = 50, _target_lang: str = "", opacity: float = 1., Loading Loading @@ -94,6 +95,7 @@ class TextBlock(object): self._bounding_rect = _bounding_rect self.default_stroke_width = default_stroke_width self.stroke_decide_by_colordiff = stroke_decide_by_colordiff self.font_weight = font_weight self.accumulate_color = accumulate_color Loading Loading @@ -276,13 +278,29 @@ class TextBlock(object): return text.strip() def set_font_colors(self, frgb, srgb, accumulate=True): def set_font_colors(self, frgb=None, srgb=None, accumulate=True): num_lines = max(1, len(self.lines)) if self.accumulate_color != accumulate: if self.accumulate_color: mul = 1 / num_lines else: mul = num_lines if frgb is None: self.fg_r, self.fg_g, self.fg_b = int(self.fg_r * mul), int(self.fg_g * mul), int(self.fg_b * mul) if srgb is None: self.bg_r, self.bg_g, self.bg_b = int(self.bg_r * mul), int(self.bg_g * mul), int(self.bg_b * mul) self.accumulate_color = accumulate num_lines = len(self.lines) if accumulate and len(self.lines) > 0 else 1 # set font color if frgb is not None: frgb = np.array(frgb) * num_lines self.fg_r, self.fg_g, self.fg_b = frgb # set stroke color if srgb is not None: srgb = np.array(srgb) * num_lines self.bg_r, self.bg_g, self.bg_b = srgb Loading Loading @@ -332,10 +350,11 @@ class TextBlock(object): @property def stroke_width(self): if self.stroke_decide_by_colordiff: diff = color_difference(*self.get_font_colors()) if diff > 15: return self.default_stroke_width if diff < 15: return 0 return self.default_stroke_width def adjust_pos(self, dx: int, dy: int): self.xyxy[0] += dx Loading ui/configpanel.py +12 −4 Original line number Diff line number Diff line Loading @@ -341,14 +341,18 @@ class ConfigPanel(Widget): self.let_fntsize_combox, letblk_0 = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('font size')) self.let_fntsize_combox.currentIndexChanged.connect(self.on_fntsize_flag_changed) self.let_fntstroke_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('stroke'), target_block=letblk_0) self.let_fntstroke_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('stroke size'), target_block=letblk_0) self.let_fntstroke_combox.currentIndexChanged.connect(self.on_fntstroke_flag_changed) self.let_fntcolor_combox, letblk_1 = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('font & stroke color')) self.let_fntcolor_combox, letblk_1 = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('font color')) self.let_fntcolor_combox.currentIndexChanged.connect(self.on_fontcolor_flag_changed) self.let_alignment_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('alignment'), target_block=letblk_1) self.let_alignment_combox.currentIndexChanged.connect(self.on_alignment_flag_changed) self.let_fnt_scolor_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('stroke color'), target_block=letblk_1) self.let_fnt_scolor_combox.currentIndexChanged.connect(self.on_font_scolor_flag_changed) self.let_effect_combox, letblk_2 = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('effect')) self.let_effect_combox.currentIndexChanged.connect(self.on_effect_flag_changed) self.let_alignment_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('alignment'), target_block=letblk_2) self.let_alignment_combox.currentIndexChanged.connect(self.on_alignment_flag_changed) self.let_autolayout_checker = generalConfigPanel.addCheckBox(self.tr('Auto layout'), discription=self.tr('Split translation into multi-lines according to the extracted balloon region. The font size will be adaptively resized if it is set to \"decide by program.\"')) Loading Loading @@ -436,6 +440,9 @@ class ConfigPanel(Widget): def on_fontcolor_flag_changed(self): self.config.let_fntcolor_flag = self.let_fntcolor_combox.currentIndex() def on_font_scolor_flag_changed(self): self.config.let_fnt_scolor_flag = self.let_fnt_scolor_combox.currentIndex() def on_alignment_flag_changed(self): self.config.let_alignment_flag = self.let_alignment_combox.currentIndex() Loading Loading @@ -482,6 +489,7 @@ class ConfigPanel(Widget): self.let_fntsize_combox.setCurrentIndex(config.let_fntsize_flag) self.let_fntstroke_combox.setCurrentIndex(config.let_fntstroke_flag) self.let_fntcolor_combox.setCurrentIndex(config.let_fntcolor_flag) self.let_fnt_scolor_combox.setCurrentIndex(config.let_fnt_scolor_flag) self.let_alignment_combox.setCurrentIndex(config.let_alignment_flag) self.let_autolayout_checker.setChecked(config.let_autolayout_flag) self.selectext_minimenu_checker.setChecked(config.textselect_mini_menu) Loading ui/mainwindow.py +5 −1 Original line number Diff line number Diff line Loading @@ -873,6 +873,7 @@ class MainWindow(FramelessWindow): override_fnt_size = self.config.let_fntsize_flag == 1 override_fnt_stroke = self.config.let_fntstroke_flag == 1 override_fnt_color = self.config.let_fntcolor_flag == 1 override_fnt_scolor = self.config.let_fnt_scolor_flag == 1 override_alignment = self.config.let_alignment_flag == 1 override_effect = self.config.let_fnteffect_flag == 1 gf = self.textPanel.formatpanel.global_format Loading @@ -882,8 +883,11 @@ class MainWindow(FramelessWindow): blk.font_size = pt2px(gf.size) if override_fnt_stroke: blk.default_stroke_width = gf.stroke_width blk.stroke_decide_by_colordiff = False if override_fnt_color: blk.set_font_colors(gf.frgb, gf.srgb, accumulate=False) blk.set_font_colors(frgb=gf.frgb, accumulate=False) if override_fnt_scolor: blk.set_font_colors(srgb=gf.srgb, accumulate=False) if override_alignment: blk._alignment = gf.alignment if override_effect: Loading ui/misc.py +2 −0 Original line number Diff line number Diff line Loading @@ -259,6 +259,7 @@ class ProgramConfig: let_fntsize_flag: int = 0, let_fntstroke_flag: int = 0, let_fntcolor_flag: int = 0, let_fnt_scolor_flag: int = 0, let_fnteffect_flag: int = 1, let_alignment_flag: int = 0, let_autolayout_flag: bool = True, Loading Loading @@ -311,6 +312,7 @@ class ProgramConfig: self.let_fntsize_flag = let_fntsize_flag self.let_fntstroke_flag = let_fntstroke_flag self.let_fntcolor_flag = let_fntcolor_flag self.let_fnt_scolor_flag = let_fnt_scolor_flag self.let_fnteffect_flag = let_fnteffect_flag self.let_alignment_flag = let_alignment_flag self.let_autolayout_flag = let_autolayout_flag Loading Loading
modules/textdetector/textblock.py +28 −9 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ class TextBlock(object): _bounding_rect: List = None, accumulate_color = True, default_stroke_width = 0.2, stroke_decide_by_colordiff: bool = True, font_weight = 50, _target_lang: str = "", opacity: float = 1., Loading Loading @@ -94,6 +95,7 @@ class TextBlock(object): self._bounding_rect = _bounding_rect self.default_stroke_width = default_stroke_width self.stroke_decide_by_colordiff = stroke_decide_by_colordiff self.font_weight = font_weight self.accumulate_color = accumulate_color Loading Loading @@ -276,13 +278,29 @@ class TextBlock(object): return text.strip() def set_font_colors(self, frgb, srgb, accumulate=True): def set_font_colors(self, frgb=None, srgb=None, accumulate=True): num_lines = max(1, len(self.lines)) if self.accumulate_color != accumulate: if self.accumulate_color: mul = 1 / num_lines else: mul = num_lines if frgb is None: self.fg_r, self.fg_g, self.fg_b = int(self.fg_r * mul), int(self.fg_g * mul), int(self.fg_b * mul) if srgb is None: self.bg_r, self.bg_g, self.bg_b = int(self.bg_r * mul), int(self.bg_g * mul), int(self.bg_b * mul) self.accumulate_color = accumulate num_lines = len(self.lines) if accumulate and len(self.lines) > 0 else 1 # set font color if frgb is not None: frgb = np.array(frgb) * num_lines self.fg_r, self.fg_g, self.fg_b = frgb # set stroke color if srgb is not None: srgb = np.array(srgb) * num_lines self.bg_r, self.bg_g, self.bg_b = srgb Loading Loading @@ -332,10 +350,11 @@ class TextBlock(object): @property def stroke_width(self): if self.stroke_decide_by_colordiff: diff = color_difference(*self.get_font_colors()) if diff > 15: return self.default_stroke_width if diff < 15: return 0 return self.default_stroke_width def adjust_pos(self, dx: int, dy: int): self.xyxy[0] += dx Loading
ui/configpanel.py +12 −4 Original line number Diff line number Diff line Loading @@ -341,14 +341,18 @@ class ConfigPanel(Widget): self.let_fntsize_combox, letblk_0 = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('font size')) self.let_fntsize_combox.currentIndexChanged.connect(self.on_fntsize_flag_changed) self.let_fntstroke_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('stroke'), target_block=letblk_0) self.let_fntstroke_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('stroke size'), target_block=letblk_0) self.let_fntstroke_combox.currentIndexChanged.connect(self.on_fntstroke_flag_changed) self.let_fntcolor_combox, letblk_1 = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('font & stroke color')) self.let_fntcolor_combox, letblk_1 = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('font color')) self.let_fntcolor_combox.currentIndexChanged.connect(self.on_fontcolor_flag_changed) self.let_alignment_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('alignment'), target_block=letblk_1) self.let_alignment_combox.currentIndexChanged.connect(self.on_alignment_flag_changed) self.let_fnt_scolor_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('stroke color'), target_block=letblk_1) self.let_fnt_scolor_combox.currentIndexChanged.connect(self.on_font_scolor_flag_changed) self.let_effect_combox, letblk_2 = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('effect')) self.let_effect_combox.currentIndexChanged.connect(self.on_effect_flag_changed) self.let_alignment_combox, _ = generalConfigPanel.addCombobox([dec_program_str, use_global_str], self.tr('alignment'), target_block=letblk_2) self.let_alignment_combox.currentIndexChanged.connect(self.on_alignment_flag_changed) self.let_autolayout_checker = generalConfigPanel.addCheckBox(self.tr('Auto layout'), discription=self.tr('Split translation into multi-lines according to the extracted balloon region. The font size will be adaptively resized if it is set to \"decide by program.\"')) Loading Loading @@ -436,6 +440,9 @@ class ConfigPanel(Widget): def on_fontcolor_flag_changed(self): self.config.let_fntcolor_flag = self.let_fntcolor_combox.currentIndex() def on_font_scolor_flag_changed(self): self.config.let_fnt_scolor_flag = self.let_fnt_scolor_combox.currentIndex() def on_alignment_flag_changed(self): self.config.let_alignment_flag = self.let_alignment_combox.currentIndex() Loading Loading @@ -482,6 +489,7 @@ class ConfigPanel(Widget): self.let_fntsize_combox.setCurrentIndex(config.let_fntsize_flag) self.let_fntstroke_combox.setCurrentIndex(config.let_fntstroke_flag) self.let_fntcolor_combox.setCurrentIndex(config.let_fntcolor_flag) self.let_fnt_scolor_combox.setCurrentIndex(config.let_fnt_scolor_flag) self.let_alignment_combox.setCurrentIndex(config.let_alignment_flag) self.let_autolayout_checker.setChecked(config.let_autolayout_flag) self.selectext_minimenu_checker.setChecked(config.textselect_mini_menu) Loading
ui/mainwindow.py +5 −1 Original line number Diff line number Diff line Loading @@ -873,6 +873,7 @@ class MainWindow(FramelessWindow): override_fnt_size = self.config.let_fntsize_flag == 1 override_fnt_stroke = self.config.let_fntstroke_flag == 1 override_fnt_color = self.config.let_fntcolor_flag == 1 override_fnt_scolor = self.config.let_fnt_scolor_flag == 1 override_alignment = self.config.let_alignment_flag == 1 override_effect = self.config.let_fnteffect_flag == 1 gf = self.textPanel.formatpanel.global_format Loading @@ -882,8 +883,11 @@ class MainWindow(FramelessWindow): blk.font_size = pt2px(gf.size) if override_fnt_stroke: blk.default_stroke_width = gf.stroke_width blk.stroke_decide_by_colordiff = False if override_fnt_color: blk.set_font_colors(gf.frgb, gf.srgb, accumulate=False) blk.set_font_colors(frgb=gf.frgb, accumulate=False) if override_fnt_scolor: blk.set_font_colors(srgb=gf.srgb, accumulate=False) if override_alignment: blk._alignment = gf.alignment if override_effect: Loading
ui/misc.py +2 −0 Original line number Diff line number Diff line Loading @@ -259,6 +259,7 @@ class ProgramConfig: let_fntsize_flag: int = 0, let_fntstroke_flag: int = 0, let_fntcolor_flag: int = 0, let_fnt_scolor_flag: int = 0, let_fnteffect_flag: int = 1, let_alignment_flag: int = 0, let_autolayout_flag: bool = True, Loading Loading @@ -311,6 +312,7 @@ class ProgramConfig: self.let_fntsize_flag = let_fntsize_flag self.let_fntstroke_flag = let_fntstroke_flag self.let_fntcolor_flag = let_fntcolor_flag self.let_fnt_scolor_flag = let_fnt_scolor_flag self.let_fnteffect_flag = let_fnteffect_flag self.let_alignment_flag = let_alignment_flag self.let_autolayout_flag = let_autolayout_flag Loading