Описание переменных в ICM . Структуры.

 

1. Введение

Большинство структур в ICM  понятны и не требуют особых объяснений. Исключение составляют структура COLORMATCHSETUP используемая в функции SetupColorMatching() и следующие структуры определенные в Wingdi.h:

BITMAPV5HEADER (см. п.3)

LOGCOLORSPACE

CIEXYZ

CIEXYZTRIPLE

2. Наиболее важные структуры ICM 

CIEXYZ

CIEXYZTRIPLE

ICM Color Structures

COLORMATCHSETUP

ENUMTYPE

LOGCOLORSPACE (связано с BITMAPV5HEADER)

NAMED_PROFILE_INFO

PROFILE

PROFILEHEADER

2.1 CIEXYZ

Определена в wingdi.h.

Эта структура содержит три координаты (x, y, z) определенного цвета в определенном цветовом пространстве.

typedef struct tagCIEXYZ

{

FXPT2DOT30 ciexyzX;

FXPT2DOT30 ciexyzY;

FXPT2DOT30 ciexyzZ;

} CIEXYZ;

typedef CIEXYZ FAR* LPCIEXYZ;

Переменная FXPT2DOT30 определена тоже в wingdi.h:

typedef long FXPT2DOT30;

Элементы структуры: ciexyzX – координата по Х в фиксированной точке (2. 30), ciexyzY – координата по Y в фиксированной точке (2. 30), ciexyzZ – координата по Z в фиксированной точке (2. 30). (?)

2.2 CIEXYZTRIPLE.

Определена в wingdi.h.

Структура содержит три координаты (x, y, z) трех цветов, которые совпадают с красной, зеленой и синей конечными точками указанного логического цветового пространства.

typedeg struct tagCIEXYZTRIPLE

{

CIEXYZ ciexyzRed;

CIEXYZ ciexyzGreen;

CIEXYZ ciexyzBlue;

} CIEXYZTRIPLE;

typedef CIEXYZTRIPLE FAR* LPCIEXYZTRIPLE;

Элементы структуры: ciexyzRed – координаты x, y, z красной конечной точки…

2.3 Цветовые структуры ICM.

Это группа структур для описания цветов при преобразовании.

struct GRAYCOLOR {

WORD gray;

};

struct RGBCOLOR {

WORD red;

WORD green;

WORD blue;

};

struct CMYKCOLOR {

WORD cyan;

WORD magenta;

WORD yellow;

WORD black;

};

struct XYZCOLOR {

WORD X;

WORD Y;

WORD Z;

};

struct YxyCOLOR {

WORD Y;

WORD x;

WORD y;

};

(The L*a*bCOLOR Structure)

struct LabCOLOR {

WORD L;

WORD a;

WORD b;

};

struct GENERIC3CHANNEL {

WORD ch1;

WORD ch2;

WORD ch3;

};

struct NAMEDCOLOR {

DWORD dwIndex;

};

struct HiFiCOLOR {

BYTE channel[MAX_COLOR_CHANNELS];

};

typedef union tagCOLOR {

struct GRAYCOLOR gray;

struct RGBCOLOR rgb;

struct CMYKCOLOR cmyk;

struct XYZCOLOR XYZ;

struct YxyCOLOR Yxy;

struct LabCOLOR Lab;

struct GENERIC3CHANNEL gen3ch;

struct NAMEDCOLOR named;

struct HiFiCOLOR hifi;

} COLOR;

Переменная типа COLOR доступна так же как доступны цвета поддерживаемых цветовых пространств посредством доступа к соответствующему члену объединения. Например объявив переменную:

COLOR aColor;

можно описать цвет, задав составляющие

aColor.rgb.red=100;

aColor.rgb.green=50;

aColor.rgb.blue=2;

2.4 COLORMATCHSETUP.

Определена в icm.h

Структура содержит информацию, которую использует функция SetupColorMatching() для инициализации диалого окна Работы с цветом. После закрытия окна пользователем функция возвращает информацию о выборе пользователя в этой структуре.

typedef struct _tagCOLORMATCHSETUP {

DWORD dwSize;

DWORD dwVersion;

DWORD dwFlags;

HWND hwndOwner;

PCTSTR pSourceName;

PCTSTR pDisplayName;

PCTSTR pPrinterName;

DWORD dwRenderIntent;

DWORD dwProofingIntent;

PTSTR pMonitorProfile;

DWORD ccMonitorProfile;

PTSTR pPrinterProfile;

DWORD ccPrinterProfile;

PTSTR pTargetProfile;

DWORD ccTargetProfile;

DLGPROC lpfnHook;

LPARAM lParam;

PCMSCALLBACKA lpfnApplyCallback;

LPARAM lParamApplyCallback;

} COLORMATCHSETUP;

Элементы структуры:

dwSize – размер сруктуры. Нужно приравнять к sizeof(COLORMATCHSETUP).

dwVersion – версия структуры. Нужно приравнять к COLOR_MATCH_VERSION.

dwFlags – набор битовых флагов для инициализации диалогового окна. Если =0, все контрольные флаги устанавливаются по умолчанию. При выходе их диалога, флаги показывают что было выбрано пользователем.

Флаг Что означает

CMS_DISABLEICM Установленный на входе показывает, что окно выбора “разрешить обработку цвета” очищено, остальные контрольные окна недоступны. Установленный на выходе – пользователь не хочет преобразовывать цвета.

CMS_ENABLEPROOFING На входе -> “разрешить обработку цвета” выбрано, контрольные окна активны. На выходе – пользователь хочет преобразовать цвет с другим конечным устройством вместо выбранного принтера.

CMS_SETRENDERINTENT На входе -> элемент dwRenderIntent содержит значение, которым надо инициализировать контроль рендеринга, иначе по умолчанию Perceptual rendering. На выходе этот флаг обозначает, что ICM разрешено приступить к работе.

CMS_SETPROOFINTENT Игнорируется если не установлен и CMS_ENABLEPROOFING. Если оба установлены – элемент dwProofingIntent послужит для инициализации контроля Target rendering intent. Иначе – по умолчанию Perceptual rendering. На выходе показывает, что активизирован предварительный просмотр.

CMS_SETMONITORPROFILE На входе -> профиль монитора берется из элемента pMonitorProfile. Если указан ошибочный профиль флаг игнорируется и используется профиль монитора по умолчанию.

CMS_SETPRINTERPROFILE Аналогично предыдущему, но с профилем принтера и элементом pPrinterProfile.

CMS_SETTARGETPROFILE На входе – для инициализации профиля конечного устройства используется элемент pTargetProfile. Если указанного профиля нет, то флаг игнорируется и используется профиль (принтера) по умолчанию. Если у принтера нет профиля по умолчанию, используется первый в алфавитном порядке.

CMS_USEHOOK Флаг указывает, что элемент lpfnHook содержит адрес хук-процедуры и элемент lParam содержит параметры которые будут переданы хук-процедуре когда посылается сообщение WM_INITDIALOG.

CMS_MONITOROVERFLOW Флаг устанавливается на выходе, если запущена обработка цвета, но размер буфера указанный в ccMonitorProfile не годится для выбранного профиля. В этом случае GetLastError возвращает ERROR_INSUFFICIENT_BUFFER.

CMS_PRINTEROVERFLOW Аналогично предыдущему для буфера в ccPrinterProfile.

CMS_TARGETOVERFLOW Аналогично предыдущему для проверочной обработки (proofing) и буфера в ccTargetProfile.

CMS_USEAPPLYCALLBACK На входе означает, что функция SetupColorMatching() вызовет функцию ApplyCallbackFunction. Адрес callback-функции содержится в lpfnApplyCallback.

hwndOwner – хэндл окна для владельца (?) окна диалога или NULL если владельца нет.

pSourceName – указатель на определенную в приложении строку, которая содержит описание профиля источника изображения для которого должна проводиться обработка цвета. Если = NULL – окно Image Source покажет названия цветового профиля Windows по умолчанию.

pDisplayName – указатель на строку, содержащая имя монитора используемого в обработке цвета. Если имя некорректно, используется первый в перечне мониторов.

pPrinterName – указатель на строку, содержащую имя принтера, на котором будет выдаваться изображение. Если имя некорректное, используется принтер по умолчанию и его имя указывается в диалоге.

dwRenderIntent – тип обработки цвета. Допустимые значения:

INTENT_PERCEPTUAL

INTENT_SATURATION

INTENT_RELATIVE_COLORIMETRIC

INTENT_ABSOLUTE_COLORIMETRIC

dwProofingIntent – аналогично предыдущему для обработки цветов пробного изображения.

pMonitorProfile – указатель на буфер, в который должен быть помещено имя выбранного пользователем профиля монитора. Использование флага CMS_SETMONITORPROFILE позволяет выбрать в диалоге имя профиля отличного от профиля монитора по умолчанию.

ccMonitorProfile – размер буфера, на который указывает pMonitorProfile, в байтах.Если буфер мал, то выбранное имя урезается и возвращается значение ошибки ERROR_INSUFFICIENT_BUFFER. Всегда достаточно размера MAX_PATH.

pPrinterProfile – аналогично pMonitorProfile, флаг CMS_SETPRINTERPROFILE.

ccPrinterProfile – аналогично ccMonitorProfile, элемент pPrinterProfile.

pTargetProfile – указатель на буфер в который помещается имя выбранного пользователем профиля пробной печати. Если флаг CMS_SETTARGETPROFILE выбран можно назначить в диалоге имя профиля отличного от профиля принтера по умолчанию.

ccTargetProfile – аналогично ccMonitorProfile, с элементом pTargetProfile.

lpfnHook – если флаг CMS_USEHOOK установлен, этот элемент содержит адрес диалоговой процедуры ( см. DialogProc()), которая управляет сообщениями диалогу. Хук-процедура не получает сообщений, до события WM_INITDIALOG. Она вызывается при сообщении WM_INITDIALOG, после его обработки системной диалоговой процедурой. Все остальные сообщения хук-процедура получает раньше системной процедуры обработки. Если хук-процедура возвращает этим сообщениям TRUE, системная процедура не вызывается.

Хук-процедура может вызвать функцию EndDialog().

lParam - если флаг CMS_USEHOOK установлен, этот элемент передается хук-процедуре в качестве параметра lParam когда обрабатывается сообщение WM_INITDIALOG.

lpfnApplyCallback – содержит указатель на callback-функцию, которая вызывается когда выбрана кнопка Apply в диалоговом окне управления цветом. Если нет такой функции, этот элемент должен быть равен NULL.

lParamApplyCallback – этот элемент передается функции ApplyCallbackFunction() как параметр lParam. Смысл и содержание значения элемента определяется приложением.

2.5 ENUMTYPE

Определена в icm.h.

Структура содержит информацию определяющую перечень констант профиля.

typedef struct tagENUMTYPE {

DWORD dwSize;

DWORD dwVersion;

DWORD dwFields;

PCTSTR pDeviceName;

DWORD dwMediaType;

DWORD dwDitheringMode;

DWORD dwResolution[2];

DWORD dwCMMType;

DWORD dwClass;

DWORD dwDataColorSpace;

DWORD dwConnectionSpace;

DWORD dwSignature;

DWORD dwPlatform;

DWORD dwProfileFlags;

DWORD dwManufacturer;

DWORD dwModel;

DWORD dwAttributes[2];

DWORD dwRenderingIntent;

DWORD dwCreator;

DWORD dwDeviceClass;

} ENUMTYPE, *PENUMTYPE, *LPENUMTYPE;

Элементы структуры:

dwSize – размер структуры в байтах

dwVersion – номер версии структуры, должен быть установлен в ENUM_TYPE_VERSION.

DwFields – показывает какие поля этой структуры используются. Устанавливается в любую комбинацию следующих значений:

ET_DEVICENAME

 

ET_MEDIATYPE

 

ET_DITHERMODE

 

ET_RESOLUTION

 

ET_CMMTYPE

 

ET_CLASS

 

ET_DATACOLORSPACE

 

ET_CONNECTIONSPACE

 

ET_SIGNATURE

 

ET_PLATFORM

 

ET_PROFILEFLAGS

 

ET_MANUFACTURER

 

ET_MODEL

 

ET_ATTRIBUTES

 

ET_RENDERINGINTENT

 

ET_CREATOR

 

ET_DEVICECLASS

 

pDeviceName – название устройства для пользователя.

dwMediaType – показывает какой тип носителя указан для профиля, такие как принтер или экран.

dwDitheringMode – указывает стиль смешивания (соединения) цветов, при отображении картинки.

dwResolution – горизонтальное (x) и вертикальное (y) разрешение в пикселах устройства, на которое будет выводиться изображение. Разрешение по x хранится в dwResolution[0], разрешение по y хранится в dwResolution[1].

dwCMMType – номер СММ (color management module) используемый в профиле. Эти номера регистрируются ICC.

dwClass – показывает класс профиля.Может принимать следующие значения:

Класс профиля Сигнатура

Профиль устройства ввода CLASS_SCANNER

Профиль (устройства) монитора CLASS_MONITOR

Профиль устройства вывода CLASS_PRINTER

Профиль связи устройств CLASS_LINK

Профиль преобразования цветового пространства CLASS_COLORSPACE

Абстрактный профиль CLASS_ABSTRACT

Профиль именованных цветов CLASS_NAMED

dwDataColorSpace – сигнатура обозначающая цветовое пространство в котором определены данные профиля. Может принимать следующие значения:

Класс профиля

Сигнатура

XYZ

SPACE_XYZ

Lab

SPACE_Lab

Luv

SPACE_Luv

YCbCr

SPACE_YCbCr

Yxy

SPACE_Yxy

RGB

SPACE_RGB

Grayscale

SPACE_GRAY

HSV

SPACE_HSV

HLS

SPACE_HLS

CMYK

SPACE_CMYK

CMY

SPACE_CMY

dwConnectionSpace – сигнатура цветового пространства в котором определено соединительное пространство профиля (PCS). Принимает след. значения:

Класс профиля   Сигнатура

XYZ SPACE_        XYZ

Lab SPACE          _Lab

Когда элемент dwClass установлен в CLASS_LINK, соединительное пространство профиля (PCS) берется из элемента dwDataColorSpace.

dwSignature – резервируется для внутреннего использования.

dwPlatform – платформа на которой создан профиль. Принимает след. значения:

Платформа

Сигнатура

Apple Computer, Inc.

'APPL'

Microsoft Corp.

'MSFT'

Silicon Graphics, Inc.

'SGI'

Sun Microsystems, Inc.

'SUNW'

Taligent

'TGNT'

dwProfileFlags – битовые флаги которые CMM использует, чтобы интерпретировать данные профиля, и которые можно установить в одно из следующих значений:

Константа                                 Смысл

FLAG_EMBEDDEDPROFILE Профиль встроен в битмаповский файл

FLAG_DEPENDENTONDATA Профиль нельзя использовать отдельно от встроенных цветовых данных. Используется для профилей, которые встроены в bitmap-файлы.

dwManufacturer – идентификационный номер производителя профиля устройства. Все идентификационные номера производителей регистрируются ICC.

dwModel – номер модели устройства производителя устройства. Идентификационные номера моделей устройств регистрируются ICC.

dwAttributes – атрибуты профиля, которые могут быть следующими:

Константа                              Смысл

ATTRIB_TRANSPARENCY Включает опцию прозрачности. Если этот флаг не используется, значение по умолчанию непрозрачная (отражающая).

ATTRIB_MATTE Включает опцию матовости. По умолчанию значение “гладкий”.

dwRenderingIntent – режим обработки изображения профиля, может принимать одно из следующих значений:

INTENT_PERCEPTUAL

INTENT_SATURATION

INTENT_RELATIVE_COLORIMETRIC

INTENT_ABSOLUTE_COLORIMETRIC

dwCreator – сигнатура программного обеспечения создавшего профиль, регистрируется ICC.

dwDeviceClass – указывает класс устройства, может принимать следующие значения:

Тип профиля

Сигнатура

Профиль устройства ввода

CLASS_SCANNER

Профиль дисплея

CLASS_MONITOR

Профиль устройства вывода

CLASS_PRINTER


2.6 LOGCOLORSPACE

Определена в wingdi.h

Структура содержит информацию, которая определяет логическое цветовое пространство.

typedef struct tagLOGCOLORSPACE {

DWORD lcsSignature;

DWORD lcsVersion;

DWORD lcsSize;

LCSCSTYPE lcsCSType;

LCSGAMUTMATCH lcsIntent;

CIEXYZTRIPLE lcsEndpoints;

DWORD lcsGammaRed;

DWORD lcsGammaGreen;

DWORD lcsGammaBlue;

TCHAR lcsFilename[MAX_PATH];

} LOGCOLORSPACE, *LPLOGCOLORSPACE;

Элементы структуры

lcsSignature – сигнатура цветового пространства. В настоящее время должна быть всегда равна LCS_SIGNATURE

lcsVersion – номер версии; должна быть равна 0х400

lcsSize – размер структуры в байтах

lcsCSType – тип цветового пространства. Может принимать одно из значений:

Константа                           Смысл

LCS_CALIBRATED_RGB Составляющие цвета – это калиброванные RGB значения. Значения транслируются с использованием конечных точек, заданных элементом lcsEndpoints перед тем как отправиться на приемное устройство.

LCS_sRGB Составляющие цвета – значения RGB.

LCS_WINDOWS_COLOR_SPACE Составляющие цвета это составляющие цвета в цветовом пространстве по умолчанию (в Windows)

Если не указан LCS_CALIBRATED_RGB, то элемент lcsEndpoints игнорируется.

lcsIntent – метод наложения диапазона. Может принимать одно из значений:

Константа          Смысл

LCS_GM_ABS_COLORIMETRIC Сохраняет белую точку. Каждому цвету подбирается ближайший в диапазоне устройства назначения.

LCS_GM_BUSINESS Сохраняет насыщенность. Используется для деловой графики и т.п., где рекомендуются чистые хорошо различимые цвета.

LCS_GM_GRAPHICS Сохраняет соответствие цвета. Используется для графического дизайна и при использовании именованных цветов.

LCS_GM_IMAGES Сохраняет контраст. Используется для фотографий и реалистических изображений.

Эти методы преобразования диапазона цвета один к одному соответствуют методам рендеринга определенным спецификацией формата ICC профиля.

LCS_GM_ABS_COLORIMETRIC - absolute colorimetric rendering intent

LCS_GM_BUSINESS - saturation rendering intent

LCS_GM_GRAPHICS - relative colorimetric intent

LCS_GM_IMAGES - perceptual rendering intent

lcsEndpoints – Красная, зеленая и синяя конечные точки.

lcsGammaRed – Масштаб красного канала.

lcsGammaGreen – Масштаб зеленого канала.

lcsGammaBlue – Масштаб синего канала.

lcsFilename – строка в стиле Си с именем цветового профиля. Обычно этот элемент приравнен нулю, но может использоваться, чтобы цветовое пространство было точно таким же как описано в профиле. Это полезно если устройств, которые вводят значения цветов для особого принтера (?), или если используется устанавливаемое соответствие цветов (?). Если задан профиль, все остальные элементы структуры должны иметь разумное значение, даже если значения не вполне точны.

Примечания

Если элемент lcsCSType равен LCS_sRGB или LCS_WINDOWS_COLOR_SPACE остальные элементы структуры игнорируются и ICM использует цветовое пространство sRGB. Элементы lcsEndpoints, lcsGammaRed, lcsGammaGreen и lcsGammaBlue используются для описания логического пространства. Элемент lcsEndpoints представляет из себя структуру CIEXYZTRIPLE содержащую координаты x, y, z конечной точки цветового пространства RGB.

Если элемент lcsFilename содержит имя файла и элемент lcsCSType установлен в LCS_CALIBRATED_RGB, ICM игнорирует все остальные элементы рассматриваемой структуры. Используется цветовое пространство файла, как то цветовое пространство которое описывается структурой LOGCOLORSPACE.

Координаты (?) X, Y, Z связаны с значениями цветов x, y, z следующим образом:

x=X/(X+Y+Z)

y=Y/(X+Y+Z)

z=Z/(X+Y+Z)

2.7 NAMED_PROFILE_INFO

Определена в icm.h

Структура используется для хранения информации о именованном цветовом профиле.

typedef struct tagNAMED_PROFILE_INFO{

DWORD dwFlags;

DWORD dwCount;

DWORD dwCountDevCoordinates;

COLOR_NAME szPrefix;

COLOR_NAME szSuffix;

} NAMED_PROFILE_INFO;

Элементы структуры:

dwFlags – флаги контроля пользователя за созданием (?) трансформации. Эти флаги носят характер общих указаний, СММ решают сами как наилучшим способом использовать эти флаги.

Присвойте второму (high-order) WORD значение ENABLE_GAMUT_CHECKING, если трансформация будет использоваться для проверки диапазона.

Первое (low-order) WORD может иметь одно из следующих значений: PROOF_MODE, NORMAL_MODE, BEST_MODE. Эти значения перечислены по мере улучшения качества изображения на выводе и замедления скорости трансформации (как правило).

dwCount – общее число именованных цветов профиля.

dwCountDevCoordinates – общее число координат устройства для каждого именованного цвета (?).

szPrefix – указатель на строку, содержащую префикс для каждого имени цвета.

szSuffix – указатель на строку содержащую суффикс для каждого имени цвета.

2.8 PROFILE

Определена в icm.h

Структура содержит информацию которая определяет цветовой профиль.

typedef struct tagPROFILE {

DWORD dwType;

PVOID pProfileData;

DWORD cbDataSize;

} PROFILE;

Элементы структуры:

dwType – должен быть установлен в одно из следующих значений

Константа                              Смысл

PROFILE_FILENAME Указывает на то, что элемент pProfileData содержит строку с нуль-символом – имя файла с профилем устройства

PROFILE_MEMBUFFER Указывает на то, что элемент pProfileData содержит указатель на профиль устройства в буфере.

pProfileData – содержимое этого элемента определяется элементом dwType (см. выше).

cbDataSize – размер в байтах буфера данных на который указывает элемент pProfileData.

2.9 PROFILEHEADER

Определена в icm.h

Структура содержит информацию описывающую содержимое файла профиля устройства. Этот хэдер расположен в начале файла профиля устройства.

typedef struct tagPROFILEHEADER {

DWORD phSize;

DWORD phCMMType;

DWORD phVersion;

DWORD phClass;

DWORD phDataColorSpace;

DWORD phConnectionSpace;

DWORD phDateTime[3];

DWORD phSignature;

DWORD phPlatform;

DWORD phProfileFlags;

DWORD phManufacturer;

DWORD phModel;

DWORD phAttributes[2];

DWORD phRenderingIntent;

CIEXYZ phIlluminant;

DWORD phCreator;

BYTE phReserved[44];

} PROFILEHEADER;

Элементы структуры:

phSize – размер профиля в байтах

phCMMType – идентификационный номер СММ который используется в профиле. Эти номера зарегистрированы в ICC.

phVersion – номер версии профиля, определено ICC. Например для версии 2.0 : номер версии – 02h, уточняющий номер – 10h. Оба номера записываются в виде бинарно закодированного десятичного числа (BCD). Размещаются они следующим образом:

Номер байта Содержание

0 Номер версии в BCD

1 Уточняющий номер версии в более значимом сегменте байта. Bug fix version (?) в менее значимом

2 Зарезервирован. Должен быть установлен в 0

3 Зарезервирован. Должен быть установлен в 0

phClass – указывает класс профиля. Может принимать следующие значения:

Класс профайла           Сигнатура

Профиль устройства ввода CLASS_SCANNER

Профиль монитора CLASS_MONITOR

Профиль устройства вывода CLASS_PRINTER

Профиль связи устройств CLASS_LINK

Профиль преобразования цветового CLASS_COLORSPAC

пространства

Абстрактный профиль CLASS_ABSTRACT

Профиль для именованных цветов CLASS_NAMED

phDataColorSpace – указывает цветовое пространство, в котором определены данные профиля. Может принимать следующие значения сигнатуры:

Пространство Сигнатура

XYZ

SPACE_XYZ

Lab

SPACE_Lab

Luv

SPACE_Luv

YCbCr

SPACE_YCbCr

Yxy

SPACE_Yxy

RGB

SPACE_RGB

Grayscale

SPACE_GRAY

HSV

SPACE_HSV

HLS

SPACE_HLS

CMYK

SPACE_CMYK

CMY

SPACE_CMY

phConnectionSpace – указывает цветовое пространство в котором определено пространство связи профиля (PCS). Может принимать следующие значения сигнатуры

Пространство Сигнатура

XYZ SPACE_XYZ

Lab SPACE_Lab

Когда элемент phClass имеет значение CLASS_LINK, PCS берется из элемента phDataColorSpace.

phDateTime – дата и время, когда был создан профиль.

phSignature – резервируется для внутреннего использования.

phPlatform – первичная платформа для которой создавался профиль. Может принимать следующие значения.

Платформа            Сигнатура

Apple Computer, Inc.

'APPL'

Microsoft Corp.

'MSFT'

Silicon Graphics, Inc.

'SGI'

Sun Microsystems, Inc.

'SUNW'

Taligent

'TGNT'

phProfileFlags – битовые флаги, которые подсказывают СММ как интерпретировать данные профиля. Может принимать следующие значения:

Константа         Смысл

FLAG_EMBEDDEDPROFILE профиль встроен в bitmap-файл

FLAG_DEPENDENTONDATA профиль не может использоваться независимо от встроенных цветовых (?) данных. Используется для профилей встроенных в bitmap-файлы

phManufacturer – идентификационный номер создателя профиля устройства. Все такие номера регистрируются ICC.

phModel – идентификационный номер устройства, данный производителем устройства. Все такие номера регистрируются ICC.

phAttributes – атрибуты профиля. Могут принимать следующие значения:

Константа                   Смысл

ATTRIB_TRANSPARENCY Включает прозрачность. По умолчанию непрозрачное.

ATTRIB_MATTE Включает матовость. По умолчанию глянцевый.

phRenderingIntent – тип рендеринга. Принимает одно из следующих значений

INTENT_PERCEPTUAL

INTENT_SATURATION

INTENT_RELATIVE_COLORIMETRIC

INTENT_ABSOLUTE_COLORIMETRIC

phIlluminant – источник света (покрытие экрана, светимость ?) в профиле.

phCreator – сигнатура программного обеспечения создавшего профиль. Сигнатуры регистрируются ICC.

phReserved – зарезервировано.

3.Структура BITMAPV5HEADER

Определена в wingdi.h.

Структуры заголовка Windows Bitmap файла.

ICM  позволяет связывать или встраивать ICC профиля в аппаратно-независимые растровые изображения (bitmaps) (DIBs). Это позволяет более точно чем ранее представить цвета DIB. BITMAPV5HEADER – новая структура заголовка, вместо BITMAPINFOHEADER которая позволяет использовать изображение JPEG как исходный для функции StretchDIBs(). Для Windows 95 и NT 4.0 используется структура BITMAPV4HEADER. Эти структуры можно преобразовывать одну в другую с помощью процедуры в командной строке bitmap.exe.

typedef struct {

DWORD bV5Size;

LONG bV5Width;

LONG bV5Height;

WORD bV5Planes;

WORD bV5BitCount;

DWORD bV5Compression;

DWORD bV5SizeImage;

LONG bV5XPelsPerMeter;

LONG bV5YPelsPerMeter;

DWORD bV5ClrUsed;

DWORD bV5ClrImportant;

DWORD bV5RedMask;

DWORD bV5GreenMask;

DWORD bV5BlueMask;

DWORD bV5AlphaMask;

DWORD bV5CSType;

CIEXYZTRIPLE bV5Endpoints;

DWORD bV5GammaRed;

DWORD bV5GammaGreen;

DWORD bV5GammaBlue;

DWORD bV5Intent; // Rendering intent for bitmap

DWORD bV5ProfileData; // Offset to profile data

DWORD bV5ProfileSize; // Size of embedded profile data

DWORD bV5Reserved; // For future use - should be zero

} BITMAPV5HEADER, FAR *LPBITMAPV5HEADER, *PBITMAPV5HEADER;

#define BI_JPEG 4L

Элементы структуры

bV5Size – размер структуры в байтах. Используется приложениями, для определения с какой структурой оно имеет дело.

bV5Width – ширина изображения (bitmap) в пикселях. Если bV5Compression = BI_JPEG это ширина в пикселях после декомпрессии.

bV5Height – высота изображения в пикселях. Если она > 0, то отсчет снизу вверх и начало отсчета – левый нижний угол, если она < 0, то отсчет сверху вниз и начало отсчета левый верхний угол. Если она < 0, bV5Compression должна быть или BI_RGB или BI_BITFIELDS, то есть сжатие невозможно. Если bV5Compression = BI_JPEG это высота в пикселях после декомпрессии.

bV5Planes – количество плоскостей (?) устройства. Должно равняться 1.

bV5BitCount – определяет количество бит на пиксель и максимальное количество цветов bitmap. Принимает следующие значения :

0 W98&NT5.0 – количество бит на пиксель определяется форматом JPEG.

1 Монохромное изображение, элемент bmiColors имеет два значения в цветовой таблице. Если бит=0 – пиксель окрашивается в первый цвет, если бит=1 – во второй.

4 Максимум 16 цветов, bmiColors имеет до 16 значений в таблице. Каждый пиксель представлен 4-х битным индексом. Например если первый байт 0х1F – первый пиксель имеет второй цвет из таблицы, а второй пиксель – 16-ый цвет.

8 Максимум 256 цветов, таблица содержит до 256 цветов, каждый байт представляет пиксель.

16 Максимум 2 в 16 степени цветов.

bV5Compression –

bV5SizeImage –

bV5XPelsPerMeter -

bV5YPelsPerMeter –

bV5ClrUsed –

bV5ClrImportant –

bV5RedMask -

bV5GreenMask –

bV5BlueMask –

bV5AlphaMask –

bV5CSType –

bV5EndPoints –

bV5GammaRed –

bV5GammaGreen –

bV5GammaBlue –

bV5Intent –

bV5ProfileData –

bV5ProfileSize –

bV5Reserved –

Примечания:

Структура BITMAPINFO хранит BITMAPV5HEADER и таблицу цветов для полного определения параметров и цветов DIB. Приложение может использовать информацию из элемента bV5Size для размещения таблицы цветов в BITMAPINFO следующим образом :

pColor = ((LPSTR) pBitmapInfo + (WORD) (pBitmapInfo -> bmiHeader.biSize));

и пр.

Информация с сайта: afazan.narod.ru

назад вверх далее