Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
IWICDevelopRaw
Интерфейс IWICDevelopRaw предоставляет параметры обработки, относящиеся к обработке необработанных образов. Все необработанные кодеки должны поддерживать интерфейс IWICDevelopRaw. Некоторые необработанные кодеки могут не поддерживать все параметры, предоставляемые этим интерфейсом, но следует поддерживать все параметры, которые кодек может выполнять. Как минимум, каждый необработанный кодек должен реализовать методы SetRotation и SetRenderMode.
Кроме того, некоторые методы и интерфейсы, которые являются необязательными для других кодеков, настоятельно рекомендуется использовать для необработанных кодеков. К ним относятся методы GetPreview и GetThumbnail в классе декодера уровня контейнера, а также интерфейс IWICBitmapSourceTransform в классе декодера на уровне кадра.
Параметры, заданные с помощью методов IWICDevelopRaw, должны сохраняться кодеком таким образом, чтобы они соответствовали тому, как сохраняются другие метаданные, но не следует перезаписывать исходные параметры "As Shot". Сохраняя метаданные и реализуя LoadParameterSet и GetCurrentParameterSet, можно разрешить необработанным приложениям обработки получать и применять параметры обработки в сеансах.
Основной целью интерфейса IWICDevelopRaw является позволить разработчикам приложений создавать пользовательский интерфейс для настройки RAW-параметров, которые будут работать как можно более согласованно в разных кодеках. Предположим, что конечный пользователь будет настраивать параметры с помощью ползунка с минимальными и максимальными значениями, сопоставленными с минимальными и максимальными диапазонами для параметра. Для поддержки этого необходимо предпринять все усилия для обработки всех диапазонов параметров как линейных. Чтобы гарантировать, что элементы управления ползунка не слишком чувствительны, следует также поддерживать максимально широкий диапазон для каждого параметра, охватывая по крайней мере 50 процентов максимально возможного диапазона. Например, если максимальный диапазон контрастности — от чистого серого до чистого черного и белого, с значением по умолчанию, сопоставленным с 0,0, минимальный диапазон, поддерживаемый кодеком, будет от по крайней мере на полпути между значением по умолчанию и чистым серым цветом на нижнем конце (–1,0), по крайней мере на полпути между значением по умолчанию и чистым черным и белым на высоком конце (+1,0).
interface IWICDevelopRaw : IWICBitmapFrameDecode
{
HRESULT QueryRawCapabilitiesInfo ( WICRawCapabilitiesInfo *pInfo );
HRESULT LoadParameterSet ( WICRawParameterSet ParameterSet );
HRESULT GetCurrentParameterSet ( IPropertyBag2 **ppCurrentParameterSet );
HRESULT SetExposureCompensation ( double ev );
HRESULT GetExposureCompensation ( double *pEV );
HRESULT SetWhitePointRGB ( UINT Red, UINT Green, UINT Blue );
HRESULT GetWhitePointRGB ( UINT *pRed, UINT *pGreen, UINT *pBlue );
HRESULT SetNamedWhitePoint ( WICNamedWhitePoint WhitePoint );
HRESULT GetNamedWhitePoint ( WICNamedWhitePoint *pWhitePoint );
HRESULT SetWhitePointKelvin ( UINT WhitePointKelvin );
HRESULT GetWhitePointKelvin ( UINT *pWhitePointKelvin );
HRESULT GetKelvinRangeInfo ( UINT *pMinKelvinTemp,
UINT *pMaxKelvinTemp,
UINT *pKelvinTempStepValue );
HRESULT SetContrast ( double Contrast );
HRESULT GetContrast ( double *pContrast );
HRESULT SetGamma ( double Gamma );
HRESULT GetGamma ( double *pGamma );
HRESULT SetSharpness ( double Sharpness );
HRESULT GetSharpness ( double *pSharpness );
HRESULT SetSaturation ( double Saturation );
HRESULT GetSaturation ( double *pSaturation );
HRESULT SetTint ( double Tint );
HRESULT GetTint ( double *pTint );
HRESULT SetNoiseReduction ( double NoiseReduction );
HRESULT GetNoiseReduction ( double *pNoiseReduction );
HRESULT SetDestinationColorContext (const IWICColorContext *pColorContext );
HRESULT SetToneCurve ( UINT cbToneCurveSize,
const WICRawToneCurve *pToneCurve );
HRESULT GetToneCurve ( UINT cbToneCurveBufferSize,
WICRawToneCurve *pToneCurve,
UINT *pcbActualToneCurveBufferSize );
HRESULT SetRotation ( double Rotation );
HRESULT GetRotation ( double *pRotation );
HRESULT SetRenderMode ( WICRawRenderMode RenderMode );
HRESULT GetRenderMode ( WICRawRenderMode *pRenderMode );
HRESULT SetNotificationCallback ( IWICDevelopRawNotificationCallback
*pCallback );
}
- QueryRawCapabilitiesInfo
- LoadParameterSet
- GetCurrentParameterSet
- Установить/Получить Экспокоррекцию
- Set/GetCurrentParameterRGB, Set/GetNamedWhitePoint, Set/GetwhitePointKelvin
- Установить/ПолучитьКонтрастность
- Set/GetGamma
- Настроить/Получить резкость
- Установить/Получить насыщенность
- Set/GetTint
- Установить/ПолучитьУменьшениеШума
- SetDestinationColorContext
- Установить/ПолучитьТонКривую
- Установить/ПолучитьВращение
- Set/GetRenderMode
- SetNotificationCallback
QueryRawCapabilitiesInfo
QueryRawCapabilitiesInfo возвращает набор поддерживаемых возможностей для этого необработанного файла. Структура WICRawCapabilitiesInfo определяется следующим образом:
struct WICRawCapabilitiesInfo
{
UINT cbSize;
UINT CodecMajorVersion;
UINT CodecMinorVersion;
WICRawCapabilities ExposureCompensationSupport;
WICRawCapabilities ContrastSupport;
WICRawCapabilities RGBWhitePointSupport;
WICRawCapabilities NamedWhitePointSupport;
UINT NamedWhitePointSupportMask;
WICRawCapabilities KelvinWhitePointSupport;
WICRawCapabilities GammaSupport;
WICRawCapabilities TintSupport;
WICRawCapabilities SaturationSupport;
WICRawCapabilities SharpnessSupport;
WICRawCapabilities NoiseReductionSupport;
WICRawCapabilities DestinationColorProfileSupport;
WICRawCapabilities ToneCurveSupport;
WICRawRotationCapabilities RotationSupport;
}
Перечисление WICRawCapabilities, используемое в этой структуре, определяется следующим образом:
enum WICRawCapabilities
{
WICRawCapabilityNotSupported,
WICRawCapabilityGetSupported,
WICRawCapabilityFullySupported
}
Финальное поле — это перечисление WICRawRotationCapabilities, определенное следующим образом:
enum WICRawRotationCapabilities
{
WICRawRotationCapabilityNotSupported,
WICRawRotationCapabilityGetSupported,
WICRawRotationCapabilityNinetyDegreesSupported
WICRawRotationCapabilityFullySupported
}
НаборПараметровЗагрузки
LoadParameterSet позволяет пользователю указать, следует ли использовать параметры As Shot, использовать настраиваемые пользователем параметры или запрашивать декодирования для автоматического исправления изображения.
enum WICRawParameterSet
{
WICAsShotParameterSet,
WICUserAdjustedParameterSet,
WICAutoAdjustedParameterSet
}
GetCurrentParameterSet (ПолучитьТекущийНаборПараметров)
GetCurrentParameterSet возвращает IPropertyBag2 с текущим набором параметров. Вызывающий объект затем может передать этот параметр кодировщику для использования в качестве параметров кодировщика.
Установить/Получить компенсацию экспозиции
GetExposureCompensation и SetExposureCompensation определяют и устанавливают компенсацию экспозиции, применяемую к окончательному результату. Допустимый диапазон для EV составляет от –5,0 до +5.0.
Set/GetCurrentParameterRGB, Set/GetNamedWhitePoint, Set/GetwhitePointKelvin
Все эти функции предоставляют способы получения и задания белой точки в виде значения RGB, предустановленного именованного значения или значения Кельвина. Допустимый диапазон для Келвина составляет 1500 – 30 000.
Set/GetКонтрастность
GetContrast и SetContrast указывают на контрастность, применяемую к выходным данным. Допустимый диапазон для указания контрастности — –1.0 до +1.0, а контрастность по умолчанию — 0,0.
Set/GetGamma
GetGamma и SetGamma указывают гамму для применения. Допустимый диапазон для Гамма составляет от 0,2 до 5.0, а значение по умолчанию — 1.0. Гамма обычно реализуется с использованием традиционной степенной гамма-функции (линейной степенной функции с коэффициентом усиления, равным единице). Яркость увеличивается с увеличением гамма-и уменьшается, как гамма приближается к нулю. (Обратите внимание, что минимальное значение не равно нулю, так как ноль приведет к ошибке деления на ноль в традиционных вычислениях Гамма. Логическое минимальное ограничение равно 1/max, поэтому минимальное значение равно 0,2.)
Установить/Получить резкость
GetSharpness и SetSharpness указывают степень резкости для применения. Допустимый диапазон равен –1.0 до +1.0, а значение 0,0 — значение по умолчанию, а –1,0 — без резкости.
Установить/ПолучитьНасыщенность
GetSaturation и SetSaturation указывают количество насыщенности для применения. Допустимый диапазон, указывающий насыщенность: –1.0 до +1.0, а 0,0 — обычная насыщенность, –1.0, представляющая полную денасиацию и +1,0, представляющую полную насыщенность.
Установить/ПолучитьОттенок
GetTint и SetTint указывают на тон, который следует применить, со смещением в сторону зеленого/пурпурного. Допустимый диапазон равен –1,0 до +1,0, при этом зеленый цвет находится на отрицательной стороне шкалы и магенды на положительном. Шкала оттенка определяется как ортогональная к цветовой температуре.
Установить/ПолучитьШумоподавление
GetNoiseReduction и SetNoiseReduction указывают количество шумоподавления, которое нужно применить. Допустимый диапазон равен –1.0 до +1.0, с 0,0, указывающим объем шума по умолчанию, –1.0, указывающий на отсутствие снижения шума и +1,0, указывающий максимальное снижение шума.
УстановитьКонтекстЦветаНазначения
SetDestinationColorContext указывает профиль цвета для применения к изображению. Чтобы получить текущий профиль цвета, можно вызвать GetColorContexts.
Set/GetToneCurve (Установить/Получить кривую тона)
GetToneCurve и SetToneCurve укажите кривую тонов для применения. Предположим, что линейная интерполяция осуществляется между точками. pToneCurve представляет собой структуру WICRawToneCurve, которая содержит массив структур WICRawToneCurvePoint и число точек в массиве.
struct WICRawToneCurve
{
UINT cPoints;
WICRawToneCurvePoint aPoints[];
}
WICRawToneCurvePoint содержит входное значение и выходное значение.
struct WICRawToneCurvePoint
{
double Input;
double Output;
}
Когда вызывающий объект передает NULL в параметре pToneCurve, необходимо передать требуемый размер WICRawToneCurve в параметре pcbActualToneCurveBufferSize.
Установить/ПолучитьВращение
GetRotation и SetRotation указывают значения степени поворота для применения. Поворот 90,0 будет указывать поворот 90 градусов по часовой стрелке. Разница между использованием SetRotation и настройкой поворота с помощью метода CopyPixels заключается в том, что угол поворота, заданный с помощью SetRotation, должен сохраняться кодеком, в то время как настройка поворота через CopyPixels приводит только к повороту изображения в памяти.)
Установить/ПолучитьРежимОтображения
GetRenderMode и SetRenderMode указывают уровень качества выходных данных, который требуется вызывающему объекту. Когда пользователь настраивает параметры, приложение должно отображать очень быстрое приближение того, что будет выглядеть фактическое изображение, если изменения применяются. Для этого изображение обычно отображается в разрешении экрана или меньше, а не фактическом разрешении изображений, чтобы предоставить пользователю немедленную обратную связь. Это происходит, когда приложение запрашивает качество режима черновика, поэтому это должно быть очень быстро. Когда пользователь вносил все изменения, просматривал их в режиме черновика и решил декодировать полный образ с текущими параметрами, приложение запрашивает декодирование наилучшего качества. Обычно это запрашивается для печати. Если требуется разумный компромисс между скоростью качества, приложение запрашивает нормальное качество.
enum WICRawRenderMode
{
WICRawRenderModeDraftMode,
WICRawRenderModeNormalQuality ,
WICRawRenderModeBestQuality
}
SetNotificationCallback
SetNotificationCallback регистрирует функцию обратного вызова, которую декодировщик вызывает при изменении любых сырых параметров обработки. Сигнатура для IWICDevelopRawNotificationCallback имеет только один метод, который называется Notify. Notify имеет единственный параметр, представляющий собой маску, которая указывает, какие из сырых параметров изменились.
HRESULT Notify ( UINT NotificationMask );
Операция OR выполняется со следующими значениями для NotificationMask.
WICRawChangeNotification_ExposureCompensation
WICRawChangeNotification_NamedWhitePoint
WICRawChangeNotification_KelvinWhitePoint
WICRawChangeNotification_RGBWhitePoint
WICRawChangeNotification_Contrast
WICRawChangeNotification_Gamma
WICRawChangeNotification_Sharpness
WICRawChangeNotification_Saturation
WICRawChangeNotification_Tint
WICRawChangeNotification_NoiseReduction
WICRawChangeNotification_DestinationColorContext
WICRawChangeNotification_ToneCurve
WICRawChangeNotification_Rotation
WICRawChangeNotification_RenderMode
Связанные разделы
-
Справочник
-
концептуальный