1
0
Fork 0
inkscape/share/extensions/cgm_enums.py
Daniel Baumann 02d935e272
Adding upstream version 1.4.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 23:40:13 +02:00

264 lines
4.6 KiB
Python

#!/usr/bin/env python3
# coding=utf-8
#
# Copyright (c) 2024 jonathan.neuhauser@outlook.com
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"""
Enums and data structures for CGM files
"""
from dataclasses import dataclass, field
from enum import Enum
from typing import Optional, Union
Enum.__repr__ = lambda self: self.__class__.__name__ + "." + self.name # type: ignore
class RealTypeEnum(Enum):
FLOATING_POINT = 0
FIXED_POINT = 1
class ScalingModeEnum(Enum):
ABSTRACT = 0
METRIC = 1
class VDCTypeEnum(Enum):
INTEGER = 0
REAL = 1
class ColourSelectionModeEnum(Enum):
INDEXED = 0
DIRECT = 1
class WidthSpecificationModeEnum(Enum):
ABSOLUTE = 0
SCALED = 1
FRACTIONAL = 2
MM = 3
class InteriorStyleEnum(Enum):
HOLLOW = 0
SOLID = 1
PATTERN = 2
HATCH = 3
EMPTY = 4
GEOMETRIC_PATTERN = 5
INTERPOLATED = 6
class ColourModelEnum(Enum):
RGB = 1
CIELAB = 2
CIELUV = 3
CMYK = 4
RGB_RELATED = 5
@dataclass
class Point:
x: Union[float, int]
y: Union[float, int]
def __complex__(self):
return self.x + self.y * 1j
class Colour:
pass
@dataclass
class DirectColour(Colour):
v1: int
v2: int
v3: int
v4: Optional[int] = field(default=0)
colour_model: ColourModelEnum = field(default=ColourModelEnum.RGB, init=False)
@dataclass
class IndexColour(Colour):
index: int
class PolygonSetLineTypeEnum(Enum):
INVISIBLE = 0
VISIBLE = 1
CLOSE_INVISIBLE = 2
CLOSE_VISIBLE = 3
@dataclass
class PolygonSetEntry:
pt: Point
linetype: PolygonSetLineTypeEnum
class ClipIndicatorEnum(Enum):
OFF = 0
ON = 1
class TextPrecisionEnum(Enum):
STRING = 0
CHARACTER = 1
STROKE = 2
class TextFinalFlag(Enum):
NOT_FINAL = 0
FINAL = 1
class TextHorizontalAlignmentEnum(Enum):
NORMAL_HORIZONTAL = 0
LEFT = 1
CENTER = 2
RIGHT = 3
CONTINUOUS_HORIZONTAL = 4
class TextVerticalAlignmentEnum(Enum):
NORMAL_VERTICAL = 0
TOP = 1
CAP = 2
HALF = 3
BASE = 4
BOTTOM = 5
CONTINUOUS_VERTICAL = 6
class TextPathEnum(Enum):
RIGHT = 0
LEFT = 1
UP = 2
DOWN = 3
class LineTypeEnum(Enum):
SOLID = 1
DASH = 2
DOT = 3
DASH_DOT = 4
DASH_DOT_DOT = 5
PRIVATE = -1
@classmethod
def _missing_(cls, value):
return cls.PRIVATE
class EdgeVisibilityEnum(Enum):
OFF = 0
ON = 1
class CharacterSetTypeEnum(Enum):
G_SET_94 = 0
G_SET_96 = 1
MULTIBYTE_G_SET_94 = 2
MULTIBYTE_G_SET_96 = 3
COMPLETE = 4
class CharacterCodingEnum(Enum):
BASIC_7BIT = 0
BASIC_8BIT = 1
EXTENDED_7BIT = 2
EXTENDED_8BIT = 3
class ArcClosureEnum(Enum):
PIE = 0
CHORD = 1
class TransparencyEnum(Enum):
OFF = 0
ON = 1
class ASFTypeEnum(Enum):
LINE_TYPE_ASF = 0
LINE_WIDTH_ASF = 1
LINE_COLOUR_ASF = 2
MARKER_TYPE_ASF = 3
MARKER_SIZE_ASF = 4
MARKER_COLOUR_ASF = 5
TEXT_FONT_INDEX_ASF = 6
TEXT_PRECISION_ASF = 7
CHARACTER_EXPANSION_FACTOR_ASF = 8
CHARACTER_SPACING_ASF = 9
TEXT_COLOUR_ASF = 10
INTERIOR_STYLE_ASF = 11
FILL_COLOUR_ASF = 12
HATCH_INDEX_ASF = 13
PATTERN_INDEX_ASF = 14
EDGE_TYPE_ASF = 15
EDGE_WIDTH_ASF = 16
EDGE_COLOUR_ASF = 17
class ASFValue(Enum):
INDIVIDUAL = 0
BUNDLED = 1
class MarkerTypeEnum(Enum):
DOT = 1
PLUS = 2
ASTERISK = 3
CIRCLE = 4
CROSS = 5
PRIVATE = -1
@classmethod
def _missing_(cls, value):
return cls.PRIVATE
class PolybezierContinuityEnum(Enum):
DISCONTINUOUS = 1
CONTINUOUS = 2
class CapIndicatorEnum(Enum):
UNSPECIFIED = 1
BUTT = 2
ROUND = 3
PROJECTING_SQUARE = 4
TRIANGLE = 5
class DashCapIndicatorEnum(Enum):
UNSPECIFIED = 1
BUTT = 2
MATCH = 3
class RestrictionTypeEnum(Enum):
BASIC = 1
BOXED_CAP = 2
BOXED_ALL = 3
ISOTROPIC_CAP = 4
ISOTROPIC_ALL = 5
JUSTIFIED = 6