Source code for psd_tools.constants

"""
Various constants for psd_tools
"""
from enum import Enum, IntEnum, auto

class CompatibilityMode(Enum):
    """
    Compatibility modes that describe how compositing and
    layer control should attempt to behave.
    """
    PHOTOSHOP = auto()
    PAINT_TOOL_SAI = auto()
    CLIP_STUDIO_PAINT = auto()
    GIMP = auto()
    KRITA = auto()

    DEFAULT = PHOTOSHOP

[docs]class ColorMode(IntEnum): """ Color mode. """ BITMAP = 0 GRAYSCALE = 1 INDEXED = 2 RGB = 3 CMYK = 4 MULTICHANNEL = 7 DUOTONE = 8 LAB = 9
[docs] @staticmethod def channels(value, alpha=False): return { ColorMode.BITMAP: 1, ColorMode.GRAYSCALE: 1, ColorMode.INDEXED: 1, ColorMode.RGB: 3, ColorMode.CMYK: 4, ColorMode.MULTICHANNEL: 1, ColorMode.DUOTONE: 1, ColorMode.LAB: 3, }.get(value) + alpha
[docs]class ColorSpaceID(IntEnum): """ Color space types. """ RGB = 0 HSB = 1 CMYK = 2 LAB = 7 GRAYSCALE = 8
[docs]class Resource(IntEnum): """ Image resource keys. Note the following is not defined for performance reasons. * PATH_INFO_10 to PATH_INFO_989 corresponding to 2010 - 2989 * PLUGIN_RESOURCES_10 to PLUGIN_RESOURCES_989 corresponding to 4010 - 4989 """ OBSOLETE1 = 1000 MAC_PRINT_MANAGER_INFO = 1001 MAC_PAGE_FORMAT_INFO = 1002 OBSOLETE2 = 1003 RESOLUTION_INFO = 1005 ALPHA_NAMES_PASCAL = 1006 DISPLAY_INFO_OBSOLETE = 1007 CAPTION_PASCAL = 1008 BORDER_INFO = 1009 BACKGROUND_COLOR = 1010 PRINT_FLAGS = 1011 GRAYSCALE_HALFTONING_INFO = 1012 COLOR_HALFTONING_INFO = 1013 DUOTONE_HALFTONING_INFO = 1014 GRAYSCALE_TRANSFER_FUNCTION = 1015 COLOR_TRANSFER_FUNCTION = 1016 DUOTONE_TRANSFER_FUNCTION = 1017 DUOTONE_IMAGE_INFO = 1018 EFFECTIVE_BW = 1019 OBSOLETE3 = 1020 EPS_OPTIONS = 1021 QUICK_MASK_INFO = 1022 OBSOLETE4 = 1023 LAYER_STATE_INFO = 1024 WORKING_PATH = 1025 LAYER_GROUP_INFO = 1026 OBSOLETE5 = 1027 IPTC_NAA = 1028 IMAGE_MODE_RAW = 1029 JPEG_QUALITY = 1030 GRID_AND_GUIDES_INFO = 1032 THUMBNAIL_RESOURCE_PS4 = 1033 COPYRIGHT_FLAG = 1034 URL = 1035 THUMBNAIL_RESOURCE = 1036 GLOBAL_ANGLE = 1037 COLOR_SAMPLERS_RESOURCE_OBSOLETE = 1038 ICC_PROFILE = 1039 WATERMARK = 1040 ICC_UNTAGGED_PROFILE = 1041 EFFECTS_VISIBLE = 1042 SPOT_HALFTONE = 1043 IDS_SEED_NUMBER = 1044 ALPHA_NAMES_UNICODE = 1045 INDEXED_COLOR_TABLE_COUNT = 1046 TRANSPARENCY_INDEX = 1047 GLOBAL_ALTITUDE = 1049 SLICES = 1050 WORKFLOW_URL = 1051 JUMP_TO_XPEP = 1052 ALPHA_IDENTIFIERS = 1053 URL_LIST = 1054 VERSION_INFO = 1057 EXIF_DATA_1 = 1058 EXIF_DATA_3 = 1059 XMP_METADATA = 1060 CAPTION_DIGEST = 1061 PRINT_SCALE = 1062 PIXEL_ASPECT_RATIO = 1064 LAYER_COMPS = 1065 ALTERNATE_DUOTONE_COLORS = 1066 ALTERNATE_SPOT_COLORS = 1067 LAYER_SELECTION_IDS = 1069 HDR_TONING_INFO = 1070 PRINT_INFO_CS2 = 1071 LAYER_GROUPS_ENABLED_ID = 1072 COLOR_SAMPLERS_RESOURCE = 1073 MEASUREMENT_SCALE = 1074 TIMELINE_INFO = 1075 SHEET_DISCLOSURE = 1076 DISPLAY_INFO = 1077 ONION_SKINS = 1078 COUNT_INFO = 1080 PRINT_INFO_CS5 = 1082 PRINT_STYLE = 1083 MAC_NSPRINTINFO = 1084 WINDOWS_DEVMODE = 1085 AUTO_SAVE_FILE_PATH = 1086 AUTO_SAVE_FORMAT = 1087 PATH_SELECTION_STATE = 1088 PATH_INFO_0 = 2000 PATH_INFO_1 = 2001 PATH_INFO_2 = 2002 PATH_INFO_3 = 2003 PATH_INFO_4 = 2004 PATH_INFO_5 = 2005 PATH_INFO_6 = 2006 PATH_INFO_7 = 2007 PATH_INFO_8 = 2008 PATH_INFO_9 = 2009 # PATH_INFO 2010-2989 is not defined for performance reasons. PATH_INFO_990 = 2990 PATH_INFO_991 = 2991 PATH_INFO_992 = 2992 PATH_INFO_993 = 2993 PATH_INFO_994 = 2994 PATH_INFO_995 = 2995 PATH_INFO_996 = 2996 PATH_INFO_997 = 2997 CLIPPING_PATH_NAME = 2999 ORIGIN_PATH_INFO = 3000 PLUGIN_RESOURCE_0 = 4000 PLUGIN_RESOURCE_1 = 4001 PLUGIN_RESOURCE_2 = 4002 PLUGIN_RESOURCE_3 = 4003 PLUGIN_RESOURCE_4 = 4004 PLUGIN_RESOURCE_5 = 4005 PLUGIN_RESOURCE_6 = 4006 PLUGIN_RESOURCE_7 = 4007 PLUGIN_RESOURCE_8 = 4008 PLUGIN_RESOURCE_9 = 4009 # PLUGIN_RESOURCE 4010-4989 is not defined for performance reasons. PLUGIN_RESOURCE_4990 = 4990 PLUGIN_RESOURCE_4991 = 4991 PLUGIN_RESOURCE_4992 = 4992 PLUGIN_RESOURCE_4993 = 4993 PLUGIN_RESOURCE_4994 = 4994 PLUGIN_RESOURCE_4995 = 4995 PLUGIN_RESOURCE_4996 = 4996 PLUGIN_RESOURCE_4997 = 4997 PLUGIN_RESOURCE_4998 = 4998 PLUGIN_RESOURCE_4999 = 4990 IMAGE_READY_VARIABLES = 7000 IMAGE_READY_DATA_SETS = 7001 IMAGE_READY_DEFAULT_SELECTED_STATE = 7002 IMAGE_READY_7_ROLLOVER_EXPANDED_STATE = 7003 IMAGE_READY_ROLLOVER_EXPANDED_STATE = 7004 IMAGE_READY_SAVE_LAYER_SETTINGS = 7005 IMAGE_READY_VERSION = 7006 LIGHTROOM_WORKFLOW = 8000 PRINT_FLAGS_INFO = 10000
[docs] @staticmethod def is_path_info(value): return 2000 <= value and value <= 2997
[docs] @staticmethod def is_plugin_resource(value): return 4000 <= value and value <= 4999
ImageResourceID = Resource # For backward compatibility.
[docs]class LinkedLayerType(bytes, Enum): """ Linked layer types. """ DATA = b'liFD' EXTERNAL = b'liFE' ALIAS = b'liFA'
[docs]class ChannelID(IntEnum): """ Channel types. """ CHANNEL_0 = 0 # Red, Cyan, Gray, ... CHANNEL_1 = 1 # Green, Magenta, ... CHANNEL_2 = 2 # Blue, Yellow, ... CHANNEL_3 = 3 # Black, ... CHANNEL_4 = 4 CHANNEL_5 = 5 CHANNEL_6 = 6 CHANNEL_7 = 7 CHANNEL_8 = 8 CHANNEL_9 = 9 TRANSPARENCY_MASK = -1 USER_LAYER_MASK = -2 REAL_USER_LAYER_MASK = -3
[docs]class Clipping(IntEnum): """Clipping.""" BASE = 0 NON_BASE = 1
[docs]class BlendMode(bytes, Enum): """ Blend modes. """ PASS_THROUGH = b'pass' NORMAL = b'norm' DISSOLVE = b'diss' DARKEN = b'dark' MULTIPLY = b'mul ' COLOR_BURN = b'idiv' LINEAR_BURN = b'lbrn' DARKER_COLOR = b'dkCl' LIGHTEN = b'lite' SCREEN = b'scrn' COLOR_DODGE = b'div ' LINEAR_DODGE = b'lddg' LIGHTER_COLOR = b'lgCl' OVERLAY = b'over' SOFT_LIGHT = b'sLit' HARD_LIGHT = b'hLit' VIVID_LIGHT = b'vLit' LINEAR_LIGHT = b'lLit' PIN_LIGHT = b'pLit' HARD_MIX = b'hMix' DIFFERENCE = b'diff' EXCLUSION = b'smud' SUBTRACT = b'fsub' DIVIDE = b'fdiv' HUE = b'hue ' SATURATION = b'sat ' COLOR = b'colr' LUMINOSITY = b'lum '
[docs]class GlobalLayerMaskKind(IntEnum): """Global layer mask kind.""" COLOR_SELECTED = 0 COLOR_PROTECTED = 1 PER_LAYER = 128
# others options are possible in beta versions.
[docs]class Compression(IntEnum): """ Compression modes. Compression. 0 = Raw Data, 1 = RLE compressed, 2 = ZIP without prediction, 3 = ZIP with prediction. """ RAW = 0 RLE = 1 ZIP = 2 ZIP_WITH_PREDICTION = 3
[docs]class Tag(bytes, Enum): """Tagged blocks keys.""" ALPHA = b'Alph' # Undocumented. ANIMATION_EFFECTS = b'anFX' ANNOTATIONS = b'Anno' ARTBOARD_DATA1 = b'artb' ARTBOARD_DATA2 = b'artd' ARTBOARD_DATA3 = b'abdd' BLACK_AND_WHITE = b'blwh' BLEND_CLIPPING_ELEMENTS = b'clbl' BLEND_FILL_OPACITY = b'iOpa' # Undocumented. BLEND_INTERIOR_ELEMENTS = b'infx' BRIGHTNESS_AND_CONTRAST = b'brit' CHANNEL_BLENDING_RESTRICTIONS_SETTING = b'brst' CHANNEL_MIXER = b'mixr' COLOR_BALANCE = b'blnc' COLOR_LOOKUP = b'clrL' COMPOSITOR_INFO = b'cinf' # Undocumented. CONTENT_GENERATOR_EXTRA_DATA = b'CgEd' CURVES = b'curv' EFFECTS_LAYER = b'lrFX' EXPORT_SETTING1 = b'extd' # Undocumented. EXPORT_SETTING2 = b'extn' # Undocumented. EXPOSURE = b'expA' FILTER_EFFECTS1 = b'FXid' FILTER_EFFECTS2 = b'FEid' FILTER_EFFECTS3 = b'FELS' # Undocumented. FILTER_MASK = b'FMsk' FOREIGN_EFFECT_ID = b'ffxi' FRAMED_GROUP = b'frgb' # Undocumented, Frame tool in CC 2019? GRADIENT_FILL_SETTING = b'GdFl' GRADIENT_MAP = b'grdm' HUE_SATURATION = b'hue2' HUE_SATURATION_V4 = b'hue ' INVERT = b'nvrt' KNOCKOUT_SETTING = b'knko' LAYER = b'Layr' LAYER_16 = b'Lr16' LAYER_32 = b'Lr32' LAYER_ID = b'lyid' LAYER_MASK_AS_GLOBAL_MASK = b'lmgm' LAYER_NAME_SOURCE_SETTING = b'lnsr' LAYER_VERSION = b'lyvr' LEVELS = b'levl' LINKED_LAYER1 = b'lnkD' LINKED_LAYER2 = b'lnk2' LINKED_LAYER3 = b'lnk3' LINKED_LAYER_EXTERNAL = b'lnkE' METADATA_SETTING = b'shmd' NESTED_SECTION_DIVIDER_SETTING = b'lsdk' OBJECT_BASED_EFFECTS_LAYER_INFO = b'lfx2' OBJECT_BASED_EFFECTS_LAYER_INFO_V0 = b'lmfx' # Undocumented. OBJECT_BASED_EFFECTS_LAYER_INFO_V1 = b'lfxs' # Undocumented. PATTERNS1 = b'Patt' PATTERNS2 = b'Pat2' PATTERNS3 = b'Pat3' PATTERN_DATA = b'shpa' PATTERN_FILL_SETTING = b'PtFl' PHOTO_FILTER = b'phfl' PIXEL_SOURCE_DATA1 = b'PxSc' PIXEL_SOURCE_DATA2 = b'PxSD' PLACED_LAYER1 = b'plLd' PLACED_LAYER2 = b'PlLd' POSTERIZE = b'post' PROTECTED_SETTING = b'lspf' REFERENCE_POINT = b'fxrp' SAVING_MERGED_TRANSPARENCY = b'Mtrn' SAVING_MERGED_TRANSPARENCY16 = b'Mt16' SAVING_MERGED_TRANSPARENCY32 = b'Mt32' SECTION_DIVIDER_SETTING = b'lsct' SELECTIVE_COLOR = b'selc' SHEET_COLOR_SETTING = b'lclr' SMART_OBJECT_LAYER_DATA1 = b'SoLd' SMART_OBJECT_LAYER_DATA2 = b'SoLE' SOLID_COLOR_SHEET_SETTING = b'SoCo' TEXT_ENGINE_DATA = b'Txt2' THRESHOLD = b'thrs' TRANSPARENCY_SHAPES_LAYER = b'tsly' TYPE_TOOL_INFO = b'tySh' TYPE_TOOL_OBJECT_SETTING = b'TySh' UNICODE_LAYER_NAME = b'luni' UNICODE_PATH_NAME = b'pths' USER_MASK = b'LMsk' USING_ALIGNED_RENDERING = b'sn2P' VECTOR_MASK_AS_GLOBAL_MASK = b'vmgm' VECTOR_MASK_SETTING1 = b'vmsk' VECTOR_MASK_SETTING2 = b'vsms' VECTOR_ORIGINATION_DATA = b'vogk' VECTOR_ORIGINATION_UNKNOWN = b'vowv' VECTOR_STROKE_DATA = b'vstk' VECTOR_STROKE_CONTENT_DATA = b'vscg' VIBRANCE = b'vibA' # Unknown PATT = b'patt'
TaggedBlockID = Tag # For backward compatibility.
[docs]class PrintScaleStyle(IntEnum): """Print scale style.""" CENTERED = 0 SIZE_TO_FIT = 1 USER_DEFINED = 2
class OSType(bytes, Enum): """ Descriptor OSTypes and reference OSTypes. """ # OS types REFERENCE = b'obj ' DESCRIPTOR = b'Objc' LIST = b'VlLs' DOUBLE = b'doub' UNIT_FLOAT = b'UntF' UNIT_FLOATS = b'UnFl' # Undocumented STRING = b'TEXT' ENUMERATED = b'enum' INTEGER = b'long' LARGE_INTEGER = b'comp' BOOLEAN = b'bool' GLOBAL_OBJECT = b'GlbO' CLASS1 = b'type' CLASS2 = b'GlbC' ALIAS = b'alis' RAW_DATA = b'tdta' OBJECT_ARRAY = b'ObAr' # Undocumented PATH = b'Pth ' # Undocumented # Reference OS types PROPERTY = b'prop' CLASS3 = b'Clss' ENUMERATED_REFERENCE = b'Enmr' OFFSET = b'rele' IDENTIFIER = b'Idnt' INDEX = b'indx' NAME = b'name'
[docs]class EffectOSType(bytes, Enum): """ OS Type keys for Layer Effects. """ COMMON_STATE = b'cmnS' DROP_SHADOW = b'dsdw' INNER_SHADOW = b'isdw' OUTER_GLOW = b'oglw' INNER_GLOW = b'iglw' BEVEL = b'bevl' SOLID_FILL = b'sofi'
[docs]class PathResourceID(IntEnum): CLOSED_LENGTH = 0 CLOSED_KNOT_LINKED = 1 CLOSED_KNOT_UNLINKED = 2 OPEN_LENGTH = 3 OPEN_KNOT_LINKED = 4 OPEN_KNOT_UNLINKED = 5 PATH_FILL = 6 CLIPBOARD = 7 INITIAL_FILL = 8
[docs]class PlacedLayerType(IntEnum): UNKNOWN = 0 VECTOR = 1 RASTER = 2 IMAGE_STACK = 3
[docs]class SectionDivider(IntEnum): OTHER = 0 OPEN_FOLDER = 1 CLOSED_FOLDER = 2 BOUNDING_SECTION_DIVIDER = 3
class SheetColorType(IntEnum): NO_COLOR = 0 RED = 1 ORANGE = 2 YELLOW = 3 GREEN = 4 BLUE = 5 VIOLET = 6 GRAY = 7