From ff1d46637515efc239337415b7015afa741e0a58 Mon Sep 17 00:00:00 2001 From: Johannes Bildstein Date: Thu, 23 Mar 2017 16:35:15 +0100 Subject: [PATCH] add missing documentation for enums --- .../Profiles/ICC/Enums/IccDeviceAttribute.cs | 2 + .../Profiles/ICC/Enums/IccProfileClass.cs | 44 ++++++ .../Profiles/ICC/Enums/IccProfileFlag.cs | 4 +- .../Profiles/ICC/Enums/IccRenderingIntent.cs | 26 ++++ .../Profiles/ICC/Enums/IccSignatureName.cs | 96 ++++++++++++ .../Profiles/ICC/Enums/IccTypeSignature.cs | 138 +++++++++++++++++- 6 files changed, 305 insertions(+), 5 deletions(-) diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccDeviceAttribute.cs b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccDeviceAttribute.cs index 0a12dea0b8..3172c1d19b 100644 --- a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccDeviceAttribute.cs +++ b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccDeviceAttribute.cs @@ -9,6 +9,8 @@ namespace ImageSharp /// /// Device attributes. Can be combined with a logical OR + /// The least-significant 32 bits are defined by the ICC, + /// the rest can be used for vendor specific values /// [Flags] internal enum IccDeviceAttribute : long diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccProfileClass.cs b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccProfileClass.cs index bd2f5b1c02..1ce781d082 100644 --- a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccProfileClass.cs +++ b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccProfileClass.cs @@ -10,12 +10,56 @@ namespace ImageSharp /// internal enum IccProfileClass : uint { + /// + /// Input profiles are generally used with devices such as scanners and + /// digital cameras. The types of profiles available for use as Input + /// profiles are N-component LUT-based, Three-component matrix-based, + /// and monochrome. + /// InputDevice = 0x73636E72, // scnr + + /// + /// This class of profiles represents display devices such as monitors. + /// The types of profiles available for use as Display profiles are + /// N-component LUT-based, Three-component matrix-based, and monochrome. + /// DisplayDevice = 0x6D6E7472, // mntr + + /// + /// Output profiles are used to support devices such as printers and + /// film recorders. The types of profiles available for use as Output + /// profiles are N-component LUT-based and Monochrome. + /// OutputDevice = 0x70727472, // prtr + + /// + /// This profile contains a pre-evaluated transform that cannot be undone, + /// which represents a one-way link or connection between devices. It does + /// not represent any device model nor can it be embedded into images. + /// DeviceLink = 0x6C696E6B, // link + + /// + /// This profile provides the relevant information to perform a transformation + /// between colour encodings and the PCS. This type of profile is based on + /// modelling rather than device measurement or characterization data. + /// ColorSpace profiles may be embedded in images. + /// ColorSpace = 0x73706163, // spac + + /// + /// This profile represents abstract transforms and does not represent any + /// device model. Colour transformations using Abstract profiles are performed + /// from PCS to PCS. Abstract profiles cannot be embedded in images. + /// Abstract = 0x61627374, // abst + + /// + /// NamedColor profiles can be thought of as sibling profiles to device profiles. + /// For a given device there would be one or more device profiles to handle + /// process colour conversions and one or more named colour profiles to handle + /// named colours. + /// NamedColor = 0x6E6D636C, // nmcl } } diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccProfileFlag.cs b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccProfileFlag.cs index 1ad3204f93..ffd423b23b 100644 --- a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccProfileFlag.cs +++ b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccProfileFlag.cs @@ -8,7 +8,9 @@ namespace ImageSharp using System; /// - /// Profile flags. Can be combined with a logical OR + /// Profile flags. Can be combined with a logical OR. + /// The least-significant 16 bits are reserved for the ICC, + /// the rest can be used for vendor specific values /// [Flags] internal enum IccProfileFlag : int diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccRenderingIntent.cs b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccRenderingIntent.cs index 8ff74d07af..8f6abf7276 100644 --- a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccRenderingIntent.cs +++ b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccRenderingIntent.cs @@ -10,9 +10,35 @@ namespace ImageSharp /// internal enum IccRenderingIntent : uint { + /// + /// In perceptual transforms the PCS values represent hypothetical + /// measurements of a colour reproduction on the reference reflective + /// medium. By extension, for the perceptual intent, the PCS represents + /// the appearance of that reproduction as viewed in the reference viewing + /// environment by a human observer adapted to that environment. The exact + /// colour rendering of the perceptual intent is vendor specific. + /// Perceptual = 0, + + /// + /// Transformations for this intent shall re-scale the in-gamut, + /// chromatically adapted tristimulus values such that the white + /// point of the actual medium is mapped to the PCS white point + /// (for either input or output) + /// MediaRelativeColorimetric = 1, + + /// + /// The exact colour rendering of the saturation intent is vendor + /// specific and involves compromises such as trading off + /// preservation of hue in order to preserve the vividness of pure colours. + /// Saturation = 2, + + /// + /// Transformations for this intent shall leave the chromatically + /// adapted nCIEXYZ tristimulus values of the in-gamut colours unchanged. + /// AbsoluteColorimetric = 3, } } diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccSignatureName.cs b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccSignatureName.cs index 9755441ce5..5fc2fa228c 100644 --- a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccSignatureName.cs +++ b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccSignatureName.cs @@ -15,68 +15,164 @@ namespace ImageSharp /// Unknown = 0, + /// + /// Scene Colorimetry Estimates + /// SceneColorimetryEstimates = 0x73636F65, // scoe + /// + /// Scene Appearance Estimates + /// SceneAppearanceEstimates = 0x73617065, // sape + /// + /// Focal Plane Colorimetry Estimates + /// FocalPlaneColorimetryEstimates = 0x66706365, // fpce + /// + /// Reflection Hardcopy Original Colorimetry + /// ReflectionHardcopyOriginalColorimetry = 0x72686F63, // rhoc + /// + /// Reflection Print Output Colorimetry + /// ReflectionPrintOutputColorimetry = 0x72706F63, // rpoc + /// + /// Perceptual Reference Medium Gamut + /// PerceptualReferenceMediumGamut = 0x70726D67, // prmg + /// + /// Film Scanner + /// FilmScanner = 0x6673636E, // fscn + /// + /// Digital Camera + /// DigitalCamera = 0x6463616D, // dcam + /// + /// Reflective Scanner + /// ReflectiveScanner = 0x7273636E, // rscn + /// + /// InkJet Printer + /// InkJetPrinter = 0x696A6574, // ijet + /// + /// Thermal Wax Printer + /// ThermalWaxPrinter = 0x74776178, // twax + /// + /// Electrophotographic Printer + /// ElectrophotographicPrinter = 0x6570686F, // epho + /// + /// Electrostatic Printer + /// ElectrostaticPrinter = 0x65737461, // esta + /// + /// Dye Sublimation Printer + /// DyeSublimationPrinter = 0x64737562, // dsub + /// + /// Photographic Paper Printer + /// PhotographicPaperPrinter = 0x7270686F, // rpho + /// + /// Film Writer + /// FilmWriter = 0x6670726E, // fprn + /// + /// Video Monitor + /// VideoMonitor = 0x7669646D, // vidm + /// + /// Video Camera + /// VideoCamera = 0x76696463, // vidc + /// + /// Projection Television + /// ProjectionTelevision = 0x706A7476, // pjtv + /// + /// Cathode Ray Tube Display + /// CathodeRayTubeDisplay = 0x43525420, // CRT + /// + /// Passive Matrix Display + /// PassiveMatrixDisplay = 0x504D4420, // PMD + /// + /// Active Matrix Display + /// ActiveMatrixDisplay = 0x414D4420, // AMD + /// + /// Photo CD + /// PhotoCD = 0x4B504344, // KPCD + /// + /// Photographic Image Setter + /// PhotographicImageSetter = 0x696D6773, // imgs + /// + /// Gravure + /// Gravure = 0x67726176, // grav + /// + /// Offset Lithography + /// OffsetLithography = 0x6F666673, // offs + /// + /// Silkscreen + /// Silkscreen = 0x73696C6B, // silk + /// + /// Flexography + /// Flexography = 0x666C6578, // flex + /// + /// Motion Picture Film Scanner + /// MotionPictureFilmScanner = 0x6D706673, // mpfs + /// + /// Motion Picture Film Recorder + /// MotionPictureFilmRecorder = 0x6D706672, // mpfr + /// + /// Digital Motion Picture Camera + /// DigitalMotionPictureCamera = 0x646D7063, // dmpc + /// + /// Digital Cinema Projector + /// DigitalCinemaProjector = 0x64636A70, // dcpj } } diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccTypeSignature.cs b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccTypeSignature.cs index 7f7c32d1e5..73c260a7ac 100644 --- a/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccTypeSignature.cs +++ b/src/ImageSharp/MetaData/Profiles/ICC/Enums/IccTypeSignature.cs @@ -15,52 +15,164 @@ namespace ImageSharp /// Unknown, + /// + /// The chromaticity tag type provides basic chromaticity data and type of + /// phosphors or colorants of a monitor to applications and utilities + /// Chromaticity = 0x6368726D, + /// + /// This is an optional tag which specifies the laydown order in which colorants + /// will be printed on an n-colorant device. The laydown order may be the same + /// as the channel generation order listed in the colorantTableTag or the channel + /// order of a colour encoding type such as CMYK, in which case this tag is not + /// needed. When this is not the case (for example, ink-towers sometimes use + /// the order KCMY), this tag may be used to specify the laydown order of the + /// colorants + /// ColorantOrder = 0x636c726f, + /// + /// The purpose of this tag is to identify the colorants used in the profile + /// by a unique name and set of PCSXYZ or PCSLAB values to give the colorant + /// an unambiguous value. The first colorant listed is the colorant of the + /// first device channel of a LUT tag. The second colorant listed is the + /// colorant of the second device channel of a LUT tag, and so on + /// ColorantTable = 0x636c7274, + /// + /// The curveType embodies a one-dimensional function which maps an input + /// value in the domain of the function to an output value in the range + /// of the function + /// Curve = 0x63757276, + /// + /// The dataType is a simple data structure that contains either 7-bit ASCII + /// or binary data + /// Data = 0x64617461, /// - /// Date and time defined by 6 unsigned 16bit integers (year, month, day, hour, minute, second) + /// Date and time defined by 6 unsigned 16bit integers + /// (year, month, day, hour, minute, second) /// DateTime = 0x6474696D, /// - /// Lookup table with 16bit unsigned integers (ushort) + /// This structure represents a colour transform using tables with 16-bit + /// precision. This type contains four processing elements: a 3 × 3 matrix + /// (which shall be the identity matrix unless the input colour space is + /// PCSXYZ), a set of one-dimensional input tables, a multi-dimensional + /// lookup table, and a set of one-dimensional output tables /// Lut16 = 0x6D667432, /// - /// Lookup table with 8bit unsigned integers (byte) + /// This structure represents a colour transform using tables of 8-bit + /// precision. This type contains four processing elements: a 3 × 3 matrix + /// (which shall be the identity matrix unless the input colour space is + /// PCSXYZ), a set of one-dimensional input tables, a multi-dimensional + /// lookup table, and a set of one-dimensional output tables. /// Lut8 = 0x6D667431, + /// + /// This structure represents a colour transform. The type contains up + /// to five processing elements which are stored in the AToBTag tag + /// in the following order: a set of one-dimensional curves, a 3 × 3 + /// matrix with offset terms, a set of one-dimensional curves, a + /// multi-dimensional lookup table, and a set of one-dimensional + /// output curves + /// LutAToB = 0x6D414220, + /// + /// This structure represents a colour transform. The type contains + /// up to five processing elements which are stored in the BToATag + /// in the following order: a set of one-dimensional curves, a 3 × 3 + /// matrix with offset terms, a set of one-dimensional curves, a + /// multi-dimensional lookup table, and a set of one-dimensional curves. + /// LutBToA = 0x6D424120, + /// + /// This information refers only to the internal + /// profile data and is meant to provide profile makers an alternative + /// to the default measurement specifications + /// Measurement = 0x6D656173, /// - /// Unicode text in one or more languages + /// This tag structure contains a set of records each referencing a + /// multilingual Unicode string associated with a profile. Each string + /// is referenced in a separate record with the information about what + /// language and region the string is for. /// MultiLocalizedUnicode = 0x6D6C7563, + /// + /// This structure represents a colour transform, containing a sequence + /// of processing elements. The processing elements contained in the + /// structure are defined in the structure itself, allowing for a flexible + /// structure. Currently supported processing elements are: a set of one + /// dimensional curves, a matrix with offset terms, and a multidimensional + /// lookup table (CLUT). Other processing element types may be added in + /// the future. Each type of processing element may be contained any + /// number of times in the structure. + /// MultiProcessElements = 0x6D706574, + /// + /// This type is a count value and array of structures that provide colour + /// coordinates for colour names. For each named colour, a PCS and optional + /// device representation of the colour are given. Both representations are + /// 16-bit values and PCS values shall be relative colorimetric. The device + /// representation corresponds to the header’s "data colour space" field. + /// This representation should be consistent with the "number of device + /// coordinates" field in the namedColor2Type. If this field is 0, device + /// coordinates are not provided. The PCS representation corresponds to the + /// header's PCS field. The PCS representation is always provided. Colour + /// names are fixed-length, 32-byte fields including null termination. In + /// order to maintain maximum portability, it is strongly recommended that + /// special characters of the 7-bit ASCII set not be used. + /// NamedColor2 = 0x6E636C32, + /// + /// This type describes a one-dimensional curve by specifying one of a + /// predefined set of functions using the parameters. + /// ParametricCurve = 0x70617261, + /// + /// This type is an array of structures, each of which contains information + /// from the header fields and tags from the original profiles which were + /// combined to create the final profile. The order of the structures is + /// the order in which the profiles were combined and includes a structure + /// for the final profile. This provides a description of the profile + /// sequence from source to destination, typically used with the DeviceLink + /// profile. + /// ProfileSequenceDesc = 0x70736571, + /// + /// This type is an array of structures, each of which contains information + /// for identification of a profile used in a sequence. + /// ProfileSequenceIdentifier = 0x70736964, + /// + /// The purpose of this tag type is to provide a mechanism to relate physical + /// colorant amounts with the normalized device codes produced by lut8Type, + /// lut16Type, lutAToBType, lutBToAType or multiProcessElementsType tags + /// so that corrections can be made for variation in the device without + /// having to produce a new profile. The mechanism can be used by applications + /// to allow users with relatively inexpensive and readily available + /// instrumentation to apply corrections to individual output colour + /// channels in order to achieve consistent results. + /// ResponseCurveSet16 = 0x72637332, /// @@ -68,6 +180,12 @@ namespace ImageSharp /// S15Fixed16Array = 0x73663332, + /// + /// The signatureType contains a 4-byte sequence. Sequences of less than four + /// characters are padded at the end with spaces. Typically this type is used + /// for registered tags that can be displayed on many development systems as + /// a sequence of four characters. + /// Signature = 0x73696720, /// @@ -100,6 +218,9 @@ namespace ImageSharp /// UInt8Array = 0x75693038, + /// + /// This type represents a set of viewing condition parameters. + /// ViewingConditions = 0x76696577, /// @@ -107,6 +228,15 @@ namespace ImageSharp /// Xyz = 0x58595A20, + /// + /// The textDescriptionType is a complex structure that contains three types of + /// text description structures: 7-bit ASCII, Unicode and ScriptCode. Since no + /// single standard method for specifying localizable character sets exists across + /// the major platform vendors, including all three provides access for the major + /// operating systems. The 7-bit ASCII description is to be an invariant, + /// nonlocalizable name for consistent reference. It is preferred that both the + /// Unicode and ScriptCode structures be properly localized. + /// TextDescription = 0x64657363, } }