Code cleanup.

pull/1/head
Yusuke Shinyama 2013-11-11 20:46:30 +09:00
parent 0a4bc9dee9
commit acad011e3f
1 changed files with 45 additions and 39 deletions

View File

@ -202,7 +202,8 @@ class LTAnno(LTItem, LTText):
## ##
class LTChar(LTComponent, LTText): class LTChar(LTComponent, LTText):
def __init__(self, matrix, font, fontsize, scaling, rise, text, textwidth, textdisp): def __init__(self, matrix, font, fontsize, scaling, rise,
text, textwidth, textdisp):
LTText.__init__(self) LTText.__init__(self)
self._text = text self._text = text
self.matrix = matrix self.matrix = matrix
@ -478,52 +479,57 @@ class LTLayoutContainer(LTContainer):
line = None line = None
for obj1 in objs: for obj1 in objs:
if obj0 is not None: if obj0 is not None:
k = 0 # halign: obj0 and obj1 is horizontally aligned.
if (obj0.is_compatible(obj1) and obj0.is_voverlap(obj1) and #
min(obj0.height, obj1.height) * laparams.line_overlap < obj0.voverlap(obj1) and # +------+ - - -
obj0.hdistance(obj1) < max(obj0.width, obj1.width) * laparams.char_margin): # | obj0 | - - +------+ -
# obj0 and obj1 is horizontally aligned: # | | | obj1 | | (line_overlap)
# # +------+ - - | | -
# +------+ - - - # - - - +------+
# | obj0 | - - +------+ - #
# | | | obj1 | | (line_overlap) # |<--->|
# +------+ - - | | - # (char_margin)
# - - - +------+ halign = (obj0.is_compatible(obj1) and
# obj0.is_voverlap(obj1) and
# |<--->| (min(obj0.height, obj1.height) * laparams.line_overlap <
# (char_margin) obj0.voverlap(obj1)) and
k |= 1 (obj0.hdistance(obj1) <
if (laparams.detect_vertical and max(obj0.width, obj1.width) * laparams.char_margin))
obj0.is_compatible(obj1) and obj0.is_hoverlap(obj1) and
min(obj0.width, obj1.width) * laparams.line_overlap < obj0.hoverlap(obj1) and # valign: obj0 and obj1 is vertically aligned.
obj0.vdistance(obj1) < max(obj0.height, obj1.height) * laparams.char_margin): #
# obj0 and obj1 is vertically aligned: # +------+
# # | obj0 |
# +------+ # | |
# | obj0 | # +------+ - - -
# | | # | | | (char_margin)
# +------+ - - - # +------+ - -
# | | | (char_margin) # | obj1 |
# +------+ - - # | |
# | obj1 | # +------+
# | | #
# +------+ # |<-->|
# # (line_overlap)
# |<-->| valign = (laparams.detect_vertical and
# (line_overlap) obj0.is_compatible(obj1) and
k |= 2 obj0.is_hoverlap(obj1) and
if ((k & 1 and isinstance(line, LTTextLineHorizontal)) or (min(obj0.width, obj1.width) * laparams.line_overlap <
(k & 2 and isinstance(line, LTTextLineVertical))): obj0.hoverlap(obj1)) and
(obj0.vdistance(obj1) <
max(obj0.height, obj1.height) * laparams.char_margin))
if ((halign and isinstance(line, LTTextLineHorizontal)) or
(valign and isinstance(line, LTTextLineVertical))):
line.add(obj1) line.add(obj1)
elif line is not None: elif line is not None:
yield line yield line
line = None line = None
else: else:
if k == 2: if valign and not halign:
line = LTTextLineVertical(laparams.word_margin) line = LTTextLineVertical(laparams.word_margin)
line.add(obj0) line.add(obj0)
line.add(obj1) line.add(obj1)
elif k == 1: elif halign and not valign:
line = LTTextLineHorizontal(laparams.word_margin) line = LTTextLineHorizontal(laparams.word_margin)
line.add(obj0) line.add(obj0)
line.add(obj1) line.add(obj1)