style: Add plumbing for handling physical/logical corner values.

Bug: 1520684
Reviewed-by: emilio
This commit is contained in:
Mats Palmgren 2019-01-17 21:49:07 +01:00 committed by Emilio Cobos Álvarez
parent 50babf81f8
commit beb4ad91af
3 changed files with 72 additions and 3 deletions

View file

@ -8,10 +8,13 @@ PHYSICAL_SIDES = ["top", "right", "bottom", "left"]
LOGICAL_SIDES = ["block-start", "block-end", "inline-start", "inline-end"]
PHYSICAL_SIZES = ["width", "height"]
LOGICAL_SIZES = ["block-size", "inline-size"]
PHYSICAL_CORNERS = ["top-left", "top-right", "bottom-right", "bottom-left"]
LOGICAL_CORNERS = ["start-start", "start-end", "end-start", "end-end"]
# bool is True when logical
ALL_SIDES = [(side, False) for side in PHYSICAL_SIDES] + [(side, True) for side in LOGICAL_SIDES]
ALL_SIZES = [(size, False) for size in PHYSICAL_SIZES] + [(size, True) for size in LOGICAL_SIZES]
ALL_CORNERS = [(corner, False) for corner in PHYSICAL_CORNERS] + [(corner, True) for corner in LOGICAL_CORNERS]
SYSTEM_FONT_LONGHANDS = """font_family font_size font_style
font_variant_caps font_stretch font_kerning
@ -239,12 +242,14 @@ class Longhand(object):
def all_physical_mapped_properties(self):
assert self.logical
logical_side = None
for s in LOGICAL_SIDES + LOGICAL_SIZES:
for s in LOGICAL_SIDES + LOGICAL_SIZES + LOGICAL_CORNERS:
if s in self.name:
assert not logical_side
logical_side = s
assert logical_side
physical = PHYSICAL_SIDES if logical_side in LOGICAL_SIDES else PHYSICAL_SIZES
physical = PHYSICAL_SIDES if logical_side in LOGICAL_SIDES else \
PHYSICAL_SIZES if logical_side in LOGICAL_SIZES else \
LOGICAL_CORNERS
return [self.name.replace(logical_side, physical_side).replace("inset-", "")
for physical_side in physical]