254 lines
7.1 KiB
Python
254 lines
7.1 KiB
Python
# Copyright (c) 2021, Manfred Moitzi
|
|
# License: MIT License
|
|
from enum import IntEnum, IntFlag, Enum, auto
|
|
from ezdxf.lldxf import const
|
|
|
|
|
|
class TextHAlign(IntEnum):
|
|
"""Enumeration for DXF attribute: :attr:`ezdxf.entities.Text.dxf.halign`"""
|
|
|
|
LEFT = const.LEFT
|
|
CENTER = const.CENTER
|
|
RIGHT = const.RIGHT
|
|
ALIGNED = const.ALIGNED
|
|
MIDDLE = 4
|
|
FIT = const.FIT
|
|
|
|
|
|
class TextVAlign(IntEnum):
|
|
"""Enumeration for DXF attribute: :attr:`ezdxf.entities.Text.dxf.valign`"""
|
|
|
|
BASELINE = const.BASELINE
|
|
BOTTOM = const.BOTTOM
|
|
MIDDLE = const.MIDDLE
|
|
TOP = const.TOP
|
|
|
|
|
|
# noinspection PyArgumentList
|
|
class TextEntityAlignment(Enum):
|
|
"""Text alignment enum for the :class:`~ezdxf.entities.Text`,
|
|
:class:`~ezdxf.entities.Attrib` and :class:`~ezdxf.entities.AttDef`
|
|
entities.
|
|
"""
|
|
|
|
LEFT = auto()
|
|
CENTER = auto()
|
|
RIGHT = auto()
|
|
ALIGNED = auto()
|
|
MIDDLE = auto()
|
|
FIT = auto()
|
|
BOTTOM_LEFT = auto()
|
|
BOTTOM_CENTER = auto()
|
|
BOTTOM_RIGHT = auto()
|
|
MIDDLE_LEFT = auto()
|
|
MIDDLE_CENTER = auto()
|
|
MIDDLE_RIGHT = auto()
|
|
TOP_LEFT = auto()
|
|
TOP_CENTER = auto()
|
|
TOP_RIGHT = auto()
|
|
|
|
|
|
MAP_TEXT_ENUM_TO_ALIGN_FLAGS = {
|
|
TextEntityAlignment.LEFT: (TextHAlign.LEFT, TextVAlign.BASELINE),
|
|
TextEntityAlignment.CENTER: (TextHAlign.CENTER, TextVAlign.BASELINE),
|
|
TextEntityAlignment.RIGHT: (TextHAlign.RIGHT, TextVAlign.BASELINE),
|
|
TextEntityAlignment.ALIGNED: (TextHAlign.ALIGNED, TextVAlign.BASELINE),
|
|
TextEntityAlignment.MIDDLE: (TextHAlign.MIDDLE, TextVAlign.BASELINE),
|
|
TextEntityAlignment.FIT: (TextHAlign.FIT, TextVAlign.BASELINE),
|
|
TextEntityAlignment.BOTTOM_LEFT: (TextHAlign.LEFT, TextVAlign.BOTTOM),
|
|
TextEntityAlignment.BOTTOM_CENTER: (TextHAlign.CENTER, TextVAlign.BOTTOM),
|
|
TextEntityAlignment.BOTTOM_RIGHT: (TextHAlign.RIGHT, TextVAlign.BOTTOM),
|
|
TextEntityAlignment.MIDDLE_LEFT: (TextHAlign.LEFT, TextVAlign.MIDDLE),
|
|
TextEntityAlignment.MIDDLE_CENTER: (TextHAlign.CENTER, TextVAlign.MIDDLE),
|
|
TextEntityAlignment.MIDDLE_RIGHT: (TextHAlign.RIGHT, TextVAlign.MIDDLE),
|
|
TextEntityAlignment.TOP_LEFT: (TextHAlign.LEFT, TextVAlign.TOP),
|
|
TextEntityAlignment.TOP_CENTER: (TextHAlign.CENTER, TextVAlign.TOP),
|
|
TextEntityAlignment.TOP_RIGHT: (TextHAlign.RIGHT, TextVAlign.TOP),
|
|
}
|
|
MAP_TEXT_ALIGN_FLAGS_TO_ENUM = dict(
|
|
(flags, enum) for enum, flags in MAP_TEXT_ENUM_TO_ALIGN_FLAGS.items()
|
|
)
|
|
|
|
# Used by legacy add-ons MText and Table!
|
|
MAP_STRING_ALIGN_TO_FLAGS = {
|
|
"LEFT": (TextHAlign.LEFT, TextVAlign.BASELINE),
|
|
"CENTER": (TextHAlign.CENTER, TextVAlign.BASELINE),
|
|
"RIGHT": (TextHAlign.RIGHT, TextVAlign.BASELINE),
|
|
"ALIGNED": (TextHAlign.ALIGNED, TextVAlign.BASELINE),
|
|
"MIDDLE": (TextHAlign.MIDDLE, TextVAlign.BASELINE),
|
|
"FIT": (TextHAlign.FIT, TextVAlign.BASELINE),
|
|
"BOTTOM_LEFT": (TextHAlign.LEFT, TextVAlign.BOTTOM),
|
|
"BOTTOM_CENTER": (TextHAlign.CENTER, TextVAlign.BOTTOM),
|
|
"BOTTOM_RIGHT": (TextHAlign.RIGHT, TextVAlign.BOTTOM),
|
|
"MIDDLE_LEFT": (TextHAlign.LEFT, TextVAlign.MIDDLE),
|
|
"MIDDLE_CENTER": (TextHAlign.CENTER, TextVAlign.MIDDLE),
|
|
"MIDDLE_RIGHT": (TextHAlign.RIGHT, TextVAlign.MIDDLE),
|
|
"TOP_LEFT": (TextHAlign.LEFT, TextVAlign.TOP),
|
|
"TOP_CENTER": (TextHAlign.CENTER, TextVAlign.TOP),
|
|
"TOP_RIGHT": (TextHAlign.RIGHT, TextVAlign.TOP),
|
|
}
|
|
MAP_FLAGS_TO_STRING_ALIGN = dict(
|
|
(flags, name) for name, flags in MAP_STRING_ALIGN_TO_FLAGS.items()
|
|
)
|
|
|
|
|
|
class MTextEntityAlignment(IntEnum):
|
|
"""Text alignment enum for the :class:`~ezdxf.entities.MText` entity."""
|
|
|
|
TOP_LEFT = const.MTEXT_TOP_LEFT
|
|
TOP_CENTER = const.MTEXT_TOP_CENTER
|
|
TOP_RIGHT = const.MTEXT_TOP_RIGHT
|
|
MIDDLE_LEFT = const.MTEXT_MIDDLE_LEFT
|
|
MIDDLE_CENTER = const.MTEXT_MIDDLE_CENTER
|
|
MIDDLE_RIGHT = const.MTEXT_MIDDLE_RIGHT
|
|
BOTTOM_LEFT = const.MTEXT_BOTTOM_LEFT
|
|
BOTTOM_CENTER = const.MTEXT_BOTTOM_CENTER
|
|
BOTTOM_RIGHT = const.MTEXT_BOTTOM_RIGHT
|
|
|
|
|
|
MAP_MTEXT_ALIGN_TO_FLAGS = {
|
|
MTextEntityAlignment.TOP_LEFT: (TextHAlign.LEFT, TextVAlign.TOP),
|
|
MTextEntityAlignment.TOP_CENTER: (TextHAlign.CENTER, TextVAlign.TOP),
|
|
MTextEntityAlignment.TOP_RIGHT: (TextHAlign.RIGHT, TextVAlign.TOP),
|
|
MTextEntityAlignment.MIDDLE_LEFT: (TextHAlign.LEFT, TextVAlign.MIDDLE),
|
|
MTextEntityAlignment.MIDDLE_CENTER: (TextHAlign.CENTER, TextVAlign.MIDDLE),
|
|
MTextEntityAlignment.MIDDLE_RIGHT: (TextHAlign.RIGHT, TextVAlign.MIDDLE),
|
|
MTextEntityAlignment.BOTTOM_LEFT: (TextHAlign.LEFT, TextVAlign.BOTTOM),
|
|
MTextEntityAlignment.BOTTOM_CENTER: (TextHAlign.CENTER, TextVAlign.BOTTOM),
|
|
MTextEntityAlignment.BOTTOM_RIGHT: (TextHAlign.RIGHT, TextVAlign.BOTTOM),
|
|
}
|
|
|
|
|
|
class MTextParagraphAlignment(IntEnum):
|
|
DEFAULT = 0
|
|
LEFT = 1
|
|
RIGHT = 2
|
|
CENTER = 3
|
|
JUSTIFIED = 4
|
|
DISTRIBUTED = 5
|
|
|
|
|
|
class MTextFlowDirection(IntEnum):
|
|
LEFT_TO_RIGHT = const.MTEXT_LEFT_TO_RIGHT
|
|
TOP_TO_BOTTOM = const.MTEXT_TOP_TO_BOTTOM
|
|
BY_STYLE = const.MTEXT_BY_STYLE
|
|
|
|
|
|
class MTextLineAlignment(IntEnum): # exclusive state
|
|
BOTTOM = 0
|
|
MIDDLE = 1
|
|
TOP = 2
|
|
|
|
|
|
class MTextStroke(IntFlag):
|
|
"""Combination of flags is supported: UNDERLINE + STRIKE_THROUGH"""
|
|
|
|
UNDERLINE = 1
|
|
STRIKE_THROUGH = 2
|
|
OVERLINE = 4
|
|
|
|
|
|
class MTextLineSpacing(IntEnum):
|
|
AT_LEAST = const.MTEXT_AT_LEAST
|
|
EXACT = const.MTEXT_EXACT
|
|
|
|
|
|
class MTextBackgroundColor(IntEnum):
|
|
OFF = const.MTEXT_BG_OFF
|
|
COLOR = const.MTEXT_BG_COLOR
|
|
WINDOW = const.MTEXT_BG_WINDOW_COLOR
|
|
CANVAS = const.MTEXT_BG_CANVAS_COLOR
|
|
|
|
|
|
class InsertUnits(IntEnum):
|
|
Unitless = 0
|
|
Inches = 1
|
|
Feet = 2
|
|
Miles = 3
|
|
Millimeters = 4
|
|
Centimeters = 5
|
|
Meters = 6
|
|
Kilometers = 7
|
|
Microinches = 8
|
|
Mils = 9
|
|
Yards = 10
|
|
Angstroms = 11
|
|
Nanometers = 12
|
|
Microns = 13
|
|
Decimeters = 14
|
|
Decameters = 15
|
|
Hectometers = 16
|
|
Gigameters = 17
|
|
AstronomicalUnits = 18
|
|
Lightyears = 19
|
|
Parsecs = 20
|
|
USSurveyFeet = 21
|
|
USSurveyInch = 22
|
|
USSurveyYard = 23
|
|
USSurveyMile = 24
|
|
|
|
|
|
class Measurement(IntEnum):
|
|
Imperial = 0
|
|
Metric = 1
|
|
|
|
|
|
class LengthUnits(IntEnum):
|
|
Scientific = 1
|
|
Decimal = 2
|
|
Engineering = 3
|
|
Architectural = 4
|
|
Fractional = 5
|
|
|
|
|
|
class AngularUnits(IntEnum):
|
|
DecimalDegrees = 0
|
|
DegreesMinutesSeconds = 1
|
|
Grad = 2
|
|
Radians = 3
|
|
|
|
|
|
class SortEntities(IntFlag):
|
|
DISABLE = 0
|
|
SELECTION = 1 # 1 = Sorts for object selection
|
|
SNAP = 2 # 2 = Sorts for object snap
|
|
REDRAW = 4 # 4 = Sorts for redraws; obsolete
|
|
MSLIDE = 8 # 8 = Sorts for MSLIDE command slide creation; obsolete
|
|
REGEN = 16 # 16 = Sorts for REGEN commands
|
|
PLOT = 32 # 32 = Sorts for plotting
|
|
POSTSCRIPT = 64 # 64 = Sorts for PostScript output; obsolete
|
|
|
|
|
|
class ACI(IntEnum):
|
|
"""AutoCAD Color Index"""
|
|
|
|
BYBLOCK = 0
|
|
BYLAYER = 256
|
|
BYOBJECT = 257
|
|
RED = 1
|
|
YELLOW = 2
|
|
GREEN = 3
|
|
CYAN = 4
|
|
BLUE = 5
|
|
MAGENTA = 6
|
|
BLACK = 7
|
|
WHITE = 7
|
|
GRAY = 8
|
|
LIGHT_GRAY = 9
|
|
|
|
|
|
class EndCaps(IntEnum):
|
|
""" Lineweight end caps setting for new objects. """
|
|
NONE = 0
|
|
ROUND = 1
|
|
ANGLE = 2
|
|
SQUARE = 3
|
|
|
|
|
|
class JoinStyle(IntEnum):
|
|
""" Lineweight joint setting for new objects. """
|
|
NONE = 0
|
|
ROUND = 1
|
|
ANGLE = 2
|
|
FLAT = 3
|