"""All enumerations."""
from typing import Union
from typing_extensions import TypeAlias
from strenum import StrEnum
[docs]
def get_enum_value(enum_class: StrEnum, value: str) -> str:
"""Get the value of an enumeration."""
if isinstance(value, enum_class):
res = value.value
else:
res = enum_class[value.upper()].value
return res
# Tag text alignment options
# Used for TikZ. VaLUeS are case sensitive.
[docs]
class Align(StrEnum):
"""Align is used to set the alignment of the text in tags."""
CENTER = "center"
FLUSH_CENTER = "flush center"
FLUSH_LEFT = "flush left"
FLUSH_RIGHT = "flush right"
JUSTIFY = "justify"
LEFT = "left"
RIGHT = "right"
# Anchor points
# Used for TikZ. VaLUeS are case sensitive.
[docs]
class Anchor(StrEnum):
"""Anchor is used to set the anchor point of the shapes
relative to the boundary box of shapes/batches or
frames of tag objects."""
BASE = "base" # FOR TAGS ONLY
BASE_EAST = "base east" # FOR TAGS ONLY
BASE_WEST = "base west" # FOR TAGS ONLY
BOTTOM = "bottom"
CENTER = "center"
EAST = "east"
LEFT = "left"
MID = "mid"
MIDEAST = "mid east"
MIDWEST = "mid west"
NORTH = "north"
NORTHEAST = "north east"
NORTHWEST = "north west"
RIGHT = "right"
SOUTH = "south"
SOUTHEAST = "south east"
SOUTHWEST = "south west"
TEXT = "text"
TOP = "top"
WEST = "west"
[docs]
class CurveMode(StrEnum):
OPEN = "OPEN"
CHORD = "CHORD"
PIE = "PIE"
[docs]
class ArrowLine(StrEnum):
"""ArrowLine is used to set the type of arrow line."""
FLATBASE_END = "flatbase end" # FLAT BASE, ARROW AT THE END
FLATBASE_MIDDLE = "flatbase middle" # FLAT BASE, ARROW AT THE MIDDLE
FLATBASE_START = "flatbase start" # FLAT BASE, ARROW AT THE START
FLATBOTH_END = "flatboth end"
FLATBOTH_MIDDLE = "flatboth middle"
FLATBOTH_START = "flatboth start"
FLATTOP_END = "flattop end" # FLAT TOP, ARROW AT THE END
FLATTOP_MIDDLE = "flattop middle"
FLATTOP_START = "flattop start"
STRAIGHT_END = "straight end" # DEFAULT, STRAIGHT LINE, ARROW AT THE END
STRAIGHT_MIDDLE = "straight middle" # STRAIGHT LINE, ARROW AT THE MIDDLE
STRAIGHT_START = "straight start" # STRAIGHT LINE, ARROW AT THE START
[docs]
class Axis(StrEnum):
"""Cartesian coordinate system axes."""
X = "x"
Y = "y"
# Used for shapes, canvas, and tags
[docs]
class BackStyle(StrEnum):
"""BackStyle is used to set the background style of a shape or tag.
If shape.fill is True, then background will be drawn according to
the shape.back_style value.
"""
COLOR = "COLOR"
COLOR_AND_GRID = "COLOR_AND_GRID"
EMPTY = "EMPTY"
GRIDLINES = "GRIDLINES"
PATTERN = "PATTERN"
SHADING = "SHADING"
SHADING_AND_GRID = "SHADING_AND_GRID"
[docs]
class BlendMode(StrEnum):
"""BlendMode is used to set the blend mode of the colors."""
COLOR = "color"
COLORBURN = "colorburn"
COLORDODGE = "colordodge"
DARKEN = "darken"
DIFFERENCE = "difference"
EXCLUSION = "exclusion"
HARDLIGHT = "hardlight"
HUE = "hue"
LIGHTEN = "lighten"
LUMINOSITY = "luminosity"
MULTIPLY = "multiply"
NORMAL = "normal"
OVERLAY = "overlay"
SATURATION = "saturation"
SCREEN = "screen"
SOFTLIGHT = "softlight"
[docs]
class ColorSpace(StrEnum):
"""ColorSpace is used to set the color space of the colors."""
CMYK = "CMYK"
GRAY = "GRAY"
HCL = "HCL"
HLS = "HLS"
HSV = "HSV"
LAB = "LAB"
RGB = "RGB"
YIQ = "YIQ"
[docs]
class Connection(StrEnum):
"""Connection is used to set the connection type of the shapes."""
CHAIN = "CHAIN"
COINCIDENT = "COINCIDENT"
COLL_CHAIN = "COLL_CHAIN"
CONGRUENT = "CONGRUENT"
CONTAINS = "CONTAINS"
COVERS = "COVERS"
DISJOINT = "DISJOINT"
END_END = "END_END"
END_START = "END_START"
FLIPPED = "FLIPPED"
INTERSECT = "INTERSECT"
NONE = "NONE"
OVERLAPS = "OVERLAPS"
PARALLEL = "PARALLEL"
START_END = "START_END"
START_START = "START_START"
TOUCHES = "TOUCHES"
WITHIN = "WITHIN"
YJOINT = "YJOINT"
[docs]
class Connector(StrEnum):
"""Connector is used to set the connector type of the shapes."""
ARC = "ARC"
ARROW_LINE = "ARROW_LINE"
CURVE = "CURVE"
ELLIPSE = "ELLIPSE"
LINE = "LINE"
DOUBLE_LINE = "DOUBLE_LINE"
# squigly
# zigzag
# squigly_arrow
# zigzag_arrow
# double_arrow
# double_squigly
[docs]
class ConstraintType(StrEnum):
"""Constraint is used to set the constraint type of the shapes."""
COLLINEAR = "COLLINEAR"
DISTANCE = "DISTANCE"
LINE_ANGLE = "LINE_ANGLE"
PARALLEL = "PARALLEL"
PERPENDICULAR = "PERPENDICULAR"
EQUAL_SIZE = "EQUAL_SIZE"
EQUAL_VALUE = "EQUAL_VALUE"
INNER_TANGENT = "INNER_TANGENT"
OUTER_TANGENT = "OUTER_TANGENT"
[docs]
class Compiler(StrEnum):
"""Used for the LaTeX compiler."""
LATEX = "LATEX"
PDFLATEX = "PDFLATEX"
XELATEX = "XELATEX"
LUALATEX = "LUALATEX"
[docs]
class Control(StrEnum):
"""Used for the modifiers of a bounding box"""
INITIAL = "INITIAL"
PAUSE = "PAUSE"
RESTART = "RESTART"
RESUME = "RESUME"
STOP = "STOP"
[docs]
class Conway(StrEnum):
"""Frieze groups in Conway notation."""
HOP = "HOP"
JUMP = "JUMP"
SIDLE = "SIDLE"
SPINNING_HOP = "SPINNING_HOP"
SPINNING_JUMP = "SPINNING_JUMP"
SPINNING_SIDLE = "SPINNING_SIDLE"
STEP = "STEP"
# Document classes for the output files
# These come from LaTeX
# Canvas uses these classes to generate output files
[docs]
class DocumentClass(StrEnum):
"""DocumentClass is used to set the class of the document."""
ARTICLE = "article"
BEAMER = "beamer"
BOOK = "book"
IEEETRAN = "ieeetran"
LETTER = "letter"
REPORT = "report"
SCRARTCL = "scrartcl"
SLIDES = "slides"
STANDALONE = "standalone"
[docs]
class FillMode(StrEnum):
"""FillMode is used to set the fill mode of the shape."""
EVENODD = "even odd"
NONZERO = "non zero"
[docs]
class FontFamily(StrEnum):
"""FontFamily is used to set the family of the font."""
CURSIVE = "cursive"
FANTASY = "fantasy"
MONOSPACE = "monospace" # \ttfamily, \texttt
SERIF = "serif" # serif \rmfamily, \textrm
SANSSERIF = "sansserif" # \sffamily, \textsf
[docs]
class FontSize(StrEnum):
"""FontSize is used to set the size of the font."""
FOOTNOTESIZE = "footnotesize"
HUGE = "huge" # \huge
HUGE2 = "Huge" # \Huge
LARGE = "large" # \large
LARGE2 = "Large" # \Large
LARGE3 = "LARGE" # \LARGE
NORMAL = "normalsize" # \normalsize
SCRIPTSIZE = "scriptsize" # \scriptsize
SMALL = "small" # \small
TINY = "tiny" # \tiny
[docs]
class FontStretch(StrEnum):
"""FontStretch is used to set the stretch of the font."""
CONDENSED = "condensed"
EXPANDED = "expanded"
EXTRA_CONDENSED = "extracondensed"
EXTRA_EXPANDED = "extraexpanded"
NORMAL = "normal"
SEMI_CONDENSED = "semicondensed"
SEMI_EXPANDED = "semiexpanded"
ULTRA_CONDENSED = "ultracondensed"
ULTRA_EXPANDED = "ultraexpanded"
[docs]
class FontStrike(StrEnum):
"""FontStrike is used to set the strike of the font."""
OVERLINE = "overline"
THROUGH = "through"
UNDERLINE = "underline"
[docs]
class FontWeight(StrEnum):
"""FontWeight is used to set the weight of the font."""
BOLD = "bold"
MEDIUM = "medium"
NORMAL = "normal"
[docs]
class FrameShape(StrEnum):
"""FrameShape is used to set the shape of the frame."""
# frame can be a rectangle, circle, ellipse
# size is width and height for rectangle,
# radius for circle
# (radius_x, radius_y) for ellipse
CIRCLE = "circle"
DIAMOND = "diamond"
ELLIPSE = "ellipse"
FORBIDDEN = "forbidden"
PARALLELOGRAM = "parallelogram"
POLYGON = "polygon"
RECTANGLE = "rectangle"
RHOMBUS = "rhombus"
SPLITCIRCLE = "split circle"
SQUARE = "square"
STAR = "star"
TRAPEZOID = "trapezoid"
[docs]
class Graph(StrEnum):
"""Graph is used to set the type of graph."""
DIRECTED = "DIRECTED"
DIRECTEDWEIGHTED = "DIRECTEDWEIGHTED"
UNDIRECTED = "UNDIRECTED"
UNDIRECTEDWEIGHTED = "UNDIRECTEDWEIGHTED"
# arrow head positions
[docs]
class HeadPos(StrEnum):
"""Arrow head positions."""
BOTH = "BOTH"
END = "END"
MIDDLE = "MIDDLE"
START = "START"
NONE = "NONE"
[docs]
class IUC(StrEnum):
"""IUC notation for frieze groups."""
P1 = "P1"
P11G = "P11G"
P11M = "P11M"
P1M1 = "P1M1"
P2 = "P2"
P2MG = "P2MG"
P2MM = "P2MM"
[docs]
class LineCap(StrEnum):
"""LineCap is used to set the type of line cap."""
BUTT = "butt"
ROUND = "round"
SQUARE = "square"
[docs]
class LineDashArray(StrEnum):
"""LineDashArray is used to set the type of dashed-line."""
DASHDOT = "dashdot"
DASHDOTDOT = "dashdotdot"
DASHED = "dashed"
DENSELY_DASHED = "densely dashed"
DENSELY_DOTTED = "densely dotted"
DOTTED = "dotted"
LOOSELY_DASHED = "loosely dashed"
LOOSELY_DOTTED = "loosely dotted"
SOLID = "solid"
[docs]
class LineJoin(StrEnum):
"""LineJoin is used to set the type of line join."""
BEVEL = "bevel"
MITER = "miter"
ROUND = "round"
[docs]
class LineWidth(StrEnum):
'''LineWidth is used to set the width of the line.'''
SEMITHICK = "semithick"
THICK = "thick"
THIN = "thin"
ULTRA_THICK = "ultra thick"
ULTRA_THIN = "ultra thin"
VERY_THICK = "very thick"
VERY_THIN = "very thin"
[docs]
class MarkerPos(StrEnum):
"""MarkerPos is used to set the position of the marker."""
CONCAVEHULL = "CONCAVEHULL"
CONVEXHULL = "CONVEXHULL"
MAINX = "MAINX"
OFFSETX = "OFFSETX"
[docs]
class MarkerType(StrEnum):
"""MarkerType is used to set the type of marker."""
ASTERISK = "asterisk"
BAR = "|"
CIRCLE = "o"
CROSS = "x"
DIAMOND = "diamond"
DIAMOND_F = "diamond*"
EMPTY = ""
FCIRCLE = "*"
HALF_CIRCLE = "halfcircle"
HALF_CIRCLE_F = "halfcircle*"
HALF_DIAMOND = "halfdiamond"
HALF_DIAMOND_F = "halfdiamond*"
HALF_SQUARE = "halfsquare"
HALF_SQUARE_F = "halfsquare*"
HEXAGON = "hexagon"
HEXAGON_F = "hexagon*"
INDICES = "indices"
MINUS = "-"
OPLUS = "oplus"
OPLUS_F = "oplus*"
O_TIMES = "otimes"
O_TIMES_F = "otimes*"
PENTAGON = "pentagon"
PENTAGON_F = "pentagon*"
PLUS = "+"
SQUARE = "square"
SQUARE_F = "square*"
STAR = "star"
STAR2 = "star2"
STAR3 = "star3"
TEXT = "text"
TRIANGLE = "triangle"
TRIANGLE_F = "triangle*"
[docs]
class Orientation(StrEnum):
"""Orientation is used to set the orientation of the dimension
lines."""
ANGLED = "ANGLED"
HORIZONTAL = "HORIZONTAL"
VERTICAL = "VERTICAL"
# Page margins for the output files
# These come from LaTeX
# Canvas uses these margins to generate output files
# Used in Page class
[docs]
class PageMargins(StrEnum):
"""Page margins for the LaTeX documents."""
CUSTOM = "custom"
NARROW = "narrow"
STANDARD = "standard"
WIDE = "wide"
# Page numbering for the output files
# These come from LaTeX
# Canvas uses these numbering to generate output files
# Used in Page class
[docs]
class PageNumbering(StrEnum):
"""Page numbering style for the LaTeX documents."""
ALPH = "alph"
ALPHUPPER = "ALPH"
ARABIC = "arabic"
NONE = "none"
ROMAN = "roman"
ROMAN_UPPER = "ROMAN"
# Page number position for the output files
# These come from LaTeX
# Canvas uses these positions to generate output files
# Used in Page class
[docs]
class PageNumberPosition(StrEnum):
"""Page number positions for the LaTeX documents."""
BOTTOM_CENTER = "bottom"
BOTTOM_LEFT = "bottom left"
BOTTOM_RIGHT = "bottom right"
CUSTOM = "custom"
TOP_CENTER = "top"
TOP_LEFT = "top left"
TOP_RIGHT = "top right"
# Page orientations for the output files
# These come from LaTeX
# Canvas uses these orientations to generate output files
# Used in Page class
[docs]
class PageOrientation(StrEnum):
"""Page orientations for the LaTeX documents."""
LANDSCAPE = "landscape"
PORTRAIT = "portrait"
# Page sizes for the output files
# These come from LaTeX
# Canvas uses these sizes to generate output files
# Used in Page class
[docs]
class PageSize(StrEnum):
"""Page sizes for the LaTeX documents."""
LETTER = "letterpaper"
LEGAL = "legalpaper"
EXECUTIVE = "executivepaper"
B0 = "b0paper"
B1 = "b1paper"
B2 = "b2paper"
B3 = "b3paper"
B4 = "b4paper"
B5 = "b5paper"
B6 = "b6paper"
B7 = "b7paper"
B8 = "b8paper"
B9 = "b9paper"
B10 = "b10paper"
B11 = "b11paper"
B12 = "b12paper"
B13 = "b13paper"
A0 = "a0paper"
A1 = "a1paper"
A2 = "a2paper"
A3 = "a3paper"
A4 = "a4paper"
A5 = "a5paper"
A6 = "a6paper"
[docs]
class PathOperation(StrEnum):
"""PathOperation is used to set the type of path operation."""
ARC = "ARC"
ARC_TO = "ARC"
BLEND_ARC = "BLEND_ARC"
BLEND_CUBIC = "BLEND_CUBIC"
BLEND_QUAD = "BLEND_QUAD"
CATMULL_TO = "CATMULL_TO"
CIRCLE = "CIRCLE"
CLOSE = "CLOSE"
CLOSE_CATMULL = "CLOSE_CATMULL"
CLOSE_HOBBY = "CLOSE_HOBBY"
CONNECTOR = "CONNECTOR"
CUBIC_TO = "CURVE"
ELLIPSE = "ELLIPSE"
FORWARD = "FORWARD"
GRID = "GRID"
HLINE = "HLINE"
HOBBY_TO = "HOBBY_TO"
LINE_TO = "LINE"
MOVE_TO = "MOVE"
POLYGON = "POLYGON"
QUAD_TO = "QUAD_TO"
RECTANGLE = "RECTANGLE"
RLINE = "RLINE"
RMOVE = "RMOVE"
SECTOR = "SECTOR"
SHAPE = "SHAPE"
STYLE = "STYLE"
TAG = "TAG"
VLINE = "VLINE"
[docs]
class PatternType(StrEnum):
"""PatternType is used to set the type of pattern."""
BRICKS = "bricks"
CHECKERBOARD = "checkerboard"
CROSSHATCH = "crosshatch"
CROSSHATCH_DOTS = "crosshatch dots"
DOTS = "dots"
FIVE_POINTED_STARS = "fivepointed stars"
GRID = "grid"
HORIZONTAL_LINES = "horizontal lines"
NORTHEAST = "north east lines"
NORTHWEST = "north west lines"
SIX_POINTED_STARS = "sixpointed stars"
VERTICAL_LINES = "vertical lines"
# Tag placement options
[docs]
class Placement(StrEnum):
"""Placement is used to set the placement of the tags
relative to another object."""
ABOVE = "above"
ABOVE_LEFT = "above left"
ABOVE_RIGHT = "above right"
BELOW = "below"
BELOW_LEFT = "below left"
BELOW_RIGHT = "below right"
CENTERED = "centered"
INSIDE = "inside"
LEFT = "left"
OUTSIDE = "outside"
RIGHT = "right"
[docs]
class Render(StrEnum):
"""Render is used to set the type of rendering."""
EPS = "EPS"
PDF = "PDF"
SVG = "SVG"
TEX = "TEX"
[docs]
class Result(StrEnum):
"""Result is used for the return values of the functions."""
FAILURE = "FAILURE"
GO = "GO"
NOPAGES = "NO_PAGES"
OVERWRITE = "OVERWRITE"
SAVED = "SAVED"
STOP = "STOP"
SUCCESS = "SUCCESS"
[docs]
class ShadeType(StrEnum):
"""ShadeType is used to set the type of shading."""
AXIS_LEFT_RIGHT = "axis left right"
AXIS_TOP_BOTTOM = "axis top bottom"
AXIS_LEFT_MIDDLE = "axis left middle"
AXIS_RIGHT_MIDDLE = "axis right middle"
AXIS_TOP_MIDDLE = "axis top middle"
AXIS_BOTTOM_MIDDLE = "axis bottom middle"
BALL = "ball"
BILINEAR = "bilinear"
COLORWHEEL = "color wheel"
COLORWHEEL_BLACK = "color wheel black center"
COLORWHEEL_WHITE = "color wheel white center"
RADIAL_INNER = "radial inner"
RADIAL_OUTER = "radial outer"
RADIAL_INNER_OUTER = "radial inner outer"
# Anchor lines are called sides.
[docs]
class Side(StrEnum):
"""Side is used to with boundary boxes."""
BASE = "BASE"
BOTTOM = "BOTTOM"
DIAGONAL1 = "DIAGONAL1"
DIAGONAL2 = "DIAGONAL2"
H_CENTERLINE = "H_CENTERLINE"
LEFT = "LEFT"
MID = "MID"
RIGHT = "RIGHT"
TOP = "TOP"
V_CENTERLINE = "V_CENTERLINE"
[docs]
class State(StrEnum):
"""State is used for modifiers.
Not implemented yet."""
INITIAL = "INITIAL"
PAUSED = "PAUSED"
RESTARTING = "RESTARTING"
RUNNING = "RUNNING"
STOPPED = "STOPPED"
# Not implemented yet.
[docs]
class TexLoc(StrEnum):
"""TexLoc is used to set the location of the TeX related
objects."""
DOCUMENT = "DOCUMENT" # BETWEEN \BEGIN{DOCUMENT} AND \BEGIN{TIKZPICTURE}
PICTURE = "PICTURE" # AFTER \BEGIN{PICTURE}
PREAMBLE = "PREAMBLE" # BEFORE \BEGIN{DOCUMENT}
[docs]
class Topology(StrEnum):
"""Topology is used to set the type of topology."""
CLOSED = "CLOSED"
COLLINEAR = "COLLINEAR"
CONGRUENT = "CONGRUENT"
FOLDED = "FOLDED"
INTERSECTING = "INTERSECTING"
OPEN = "OPEN"
SELF_INTERSECTING = "SELF_INTERSECTING"
SIMPLE = "SIMPLE"
YJOINT = "YJOINT"
# object types and subtypes
[docs]
class Types(StrEnum):
"""All objects in simetri.graphics has type and subtype
properties."""
# to do: use snake-case for the names
ANGULAR_DIMENSION = "ANGULAR DIMENSION"
ANNOTATION = "ANNOTATION"
ARC = "ARC"
ARC_ARROW = "ARC_ARROW"
ARC_SKETCH = "ARC_SKETCH"
ARROW = "ARROW"
ARROW_HEAD = "ARROW_HEAD"
AXIS = "AXIS"
BATCH = "BATCH"
BATCH_SKETCH = "BATCH_SKETCH"
BEZIER = "BEZIER"
BEZIER_SKETCH = "BEZIER_SKETCH"
BBOX_SKETCH = "BBOX_SKETCH"
BOUNDING_BOX = "BOUNDING_BOX"
BRACE = "BRACE"
CANVAS = "CANVAS"
CIRCLE = "CIRCLE"
CIRCLE_SKETCH = "CIRCLE_SKETCH"
CIRCULAR_GRID = "CIRCULAR_GRID"
COLOR = "COLOR"
CS = "CS"
CURVE = "CURVE"
CURVE_SKETCH = "CURVE_SKETCH"
DIMENSION = "DIMENSION"
DIRECTED = "DIRECTED_GRAPH"
DIVISION = "DIVISION"
DOT = "DOT"
DOTS = "DOTS"
EDGE = "EDGE"
ELLIPSE = "ELLIPSE"
ELLIPSE_SKETCH = "ELLIPSE_SKETCH"
ELLIPTIC_ARC = "ELLIPTIC_ARC"
FILL_STYLE = "FILL_STYLE"
FONT = "FONT"
FONTSKETCH = "FONT_SKETCH"
FONT_STYLE = "FONT_STYLE"
FRAGMENT = "FRAGMENT"
FRAGMENT_SKETCH = "FRAGMENT_SKETCH"
FRAME = "FRAME"
FRAMESKETCH = "FRAME_SKETCH"
FRAME_STYLE = "FRAME_STYLE"
GRADIENT = "GRADIENT"
GRID = "GRID"
GRID_STYLE = "GRID_STYLE"
HANDLE = "HANDLE"
HEXAGONAL = "HEXAGONAL"
ICANVAS = "ICANVAS"
INTERSECTION = "INTERSECTION"
LABEL = "LABEL"
LACE = "LACE"
LACESKETCH = "LACE_SKETCH"
LINE = "LINE"
LINEAR = "LINEAR"
LINE_SKETCH = "LINE_SKETCH"
LINE_STYLE = "LINE_STYLE"
LOOM = "LOOM"
MARKER = "MARKER"
MARKER_STYLE = "MARKER_STYLE"
MASK = "MASK"
NONE = "NONE"
OBLIQUE = "OBLIQUE"
OUTLINE = "OUTLINE"
OVERLAP = "OVERLAP"
PAGE = "PAGE"
PAGE_GRID = "PAGE_GRID"
PARALLEL_POLYLINE = "PARALLEL_POLYLINE"
PART = "PART"
PATH = "PATH"
PATH_OPERATION = "PATH_OPERATION"
PATH_SKETCH = "PATH_SKETCH"
PATTERN_SKETCH = "PATTERN_SKETCH"
PATTERN_STYLE = "PATTERN_STYLE"
PETAL = "PETAL"
PLAIT = "PLAIT"
PLAIT_SKETCH = "PLAIT_SKETCH"
POINT = "POINT"
POINTS = "POINTS"
POLYLINE = "POLYLINE"
Q_BEZIER = "Q_BEZIER"
RADIAL = "RADIAL"
RECT_SKETCH = "RECT_SKETCH"
RECTANGLE = "RECTANGLE"
RECTANGULAR = "RECTANGULAR"
REG_POLY = "REGPOLY"
REG_POLY_SKETCH = "REGPOLY_SKETCH"
REGULAR_POLYGON = "REGULAR_POLYGON"
RHOMBIC = "RHOMBIC"
SECTION = "SECTION"
SEGMENT = "SEGMENT"
SEGMENTS = "SEGMENTS"
SHADE_STYLE = "SHADE_STYLE"
SHAPE = "SHAPE"
SHAPE_SKETCH = "SHAPE_SKETCH"
SHAPE_STYLE = "SHAPE_STYLE"
SKETCH = "SKETCH"
SKETCH_STYLE = "SKETCH_STYLE"
SQUARE = "SQUARE"
STAR = "STAR"
STYLE = "STYLE"
SVG_PATH = "SVG_PATH"
SVG_PATH_SKETCH = "SVG_PATH_SKETCH"
TAG = "TAG"
TAG_SKETCH = "TAG_SKETCH"
TAG_STYLE = "TAG_STYLE"
TEX = "TEX" # USED FOR GENERATING OUTPUTFILE.TEX
TEX_SKETCH = "TEX_SKETCH"
TEXT = "TEXT"
TEXTANCHOR = "TEXT_ANCHOR"
TEXT_ANCHOR_LINE = "TEXT_ANCHORLINE"
TEXT_ANCHOR_POINT = "TEXT_ANCHORPOINT"
THREAD = "THREAD"
TRIANGLE = "TRIANGLE"
TURTLE = "TURTLE"
UNDIRECTED = "UNDIRECTED_GRAPH"
VERTEX = "VERTEX"
WARP = "WARP"
WEFT = "WEFT"
WEIGHTED = "WEIGHTED_GRAPH"
drawable_types = [
Types.ARC,
Types.ARC_ARROW,
Types.ARROW,
Types.ARROW_HEAD,
Types.BEZIER,
Types.BATCH,
Types.BOUNDING_BOX,
Types.CIRCLE,
Types.DIMENSION,
Types.DIVISION,
Types.DOT,
Types.DOTS,
Types.EDGE,
Types.ELLIPSE,
Types.FRAGMENT,
Types.INTERSECTION,
Types.LACE,
Types.OUTLINE,
Types.OVERLAP,
Types.PARALLEL_POLYLINE,
Types.PATH,
Types.PLAIT,
Types.Q_BEZIER,
Types.POLYLINE,
Types.RECTANGLE,
Types.SECTION,
Types.SEGMENT,
Types.SHAPE,
Types.STAR,
Types.SVG_PATH,
Types.TAG,
Types.TURTLE
]
shape_types = [
Types.ARC,
Types.ARROW_HEAD,
Types.BEZIER,
Types.BRACE,
Types.CIRCLE,
Types.CURVE,
Types.DIVISION,
Types.ELLIPSE,
Types.FRAME,
Types.INTERSECTION,
Types.LINE,
Types.POLYLINE,
Types.Q_BEZIER,
Types.SECTION,
Types.SHAPE,
]
batch_types = [
Types.ANGULAR_DIMENSION,
Types.ANNOTATION,
Types.ARC_ARROW,
Types.ARROW,
Types.BATCH,
Types.DIMENSION,
Types.DOTS,
Types.LACE,
Types.MARKER,
Types.OVERLAP,
Types.PARALLEL_POLYLINE,
Types.PATH,
Types.STAR,
Types.SVG_PATH,
Types.TURTLE
]
# Python Version 3.9 cannot handle Union[*drawable_types]
Drawable: TypeAlias = Union[
Types.ARC,
Types.ARC_ARROW,
Types.ARROW,
Types.ARROW_HEAD,
Types.BATCH,
Types.CIRCLE,
Types.DIMENSION,
Types.DOT,
Types.DOTS,
Types.EDGE,
Types.ELLIPSE,
Types.FRAGMENT,
Types.INTERSECTION,
Types.LACE,
Types.OUTLINE,
Types.OVERLAP,
Types.PARALLEL_POLYLINE,
Types.PATH,
Types.PLAIT,
Types.POLYLINE,
Types.RECTANGLE,
Types.SECTION,
Types.SEGMENT,
Types.SHAPE,
Types.STAR,
Types.SVG_PATH,
Types.TAG,
Types.TURTLE
]