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 SEAFOAM = 8 INDIGO = 9 MAGENTA = 10 FUSCHIA = 11