Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class AlphaComposite extends Object implements Composite
AlphaComposite
класс реализует основные альфа-правила составления композита для того, чтобы объединить источник и целевые цвета, чтобы достигнуть смешивания и эффектов прозрачности с графикой и изображениями. Определенные правила, реализованные этим классом, являются основным набором 12 правил, описанных в Т. Портере и Т. Даффе, "Составляя Цифровые Изображения", SIGGRAPH 84, 253-259. Остальная часть этой документации принимает некоторое знакомство с определениями и понятиями, обрисованными в общих чертах в той газете. Этот класс расширяет стандартные уравнения, определенные Швейцаром и Варёным пудингом, чтобы включать один дополнительный фактор. Экземпляр AlphaComposite
класс может содержать альфа-значение, которое используется, чтобы изменить непрозрачность или покрытие каждого исходного пикселя прежде, чем это будет использоваться в смешивающихся уравнениях.
Важно отметить, что уравнения, определенные бумагой Швейцара и Варёного пудинга, все определяются, чтобы работать на компонентах цвета, которые предварительно умножаются на их соответствующие альфа-компоненты. Начиная с ColorModel
и Raster
классы позволяют хранение пиксельных данных или в предварительно умноженной или в!P непредварительно умноженной форме, все входные данные должны быть нормализованы в предварительно умноженную форму прежде, чем применить уравнения, и все результаты, возможно, должны были бы быть скорректированы назад к форме, требуемой местом назначения прежде, чем пиксельные значения будут сохранены.
Также отметьте, что этот класс определяет только уравнения для того, чтобы объединить цвет и альфа-значения в просто математическом смысле. Точное приложение его уравнений зависит от способа, которым данные получаются из его источников и хранятся в его местах назначения. См. Протесты Реализации для дополнительной информации.
Следующие факторы используются в описании смешивающегося уравнения в газете Швейцара и Варёного пудинга:
Фактор Определение Как альфа-компонент исходного пикселя Cs компонент цвета исходного пикселя в предварительно умноженной форме Объявление альфа-компонент целевого пикселя Cd компонент цвета целевого пикселя в предварительно умноженной форме Фс часть исходного пикселя, который способствует выводу Fd часть целевого пикселя, который способствует выводу Площадь альфа-компонент результата Cr компонент цвета результата в предварительно умноженной форме
Используя эти факторы, Швейцар и Варёный пудинг определяют 12 способов выбрать смешивающиеся факторы Fs и Fd, чтобы произвести каждый из 12 требуемых визуальных эффектов. Уравнения для того, чтобы определить Fs и Fd даются в описаниях 12 статических полей, которые определяют визуальные эффекты. Например, описание для SRC_OVER
определяет что Фс = 1 и Fd = (1 - Как). Как только ряд уравнений для того, чтобы определить смешивающиеся факторы известен, они могут тогда быть применены к каждому пикселю, чтобы привести к результату, используя следующую систему уравнений:
Fs = f(Ad) Fd = f(As) Ar = As*Fs + Ad*Fd Cr = Cs*Fs + Cd*Fd
Следующие факторы будут использоваться, чтобы обсудить наши расширения смешивающегося уравнения в газете Швейцара и Варёного пудинга:
Фактор Определение Csr один из необработанных компонентов цвета исходного пикселя Командир один из необработанных компонентов цвета целевого пикселя Aac "дополнительный" альфа-компонент от экземпляра AlphaComposite Asr необработанный альфа-компонент исходного пикселя Adr необработанный альфа-компонент целевого пикселя Автоматическое радиопеленгование заключительный альфа-компонент сохранен в месте назначения Cdf заключительный необработанный компонент цвета сохранен в месте назначения
AlphaComposite
класс определяет дополнительное альфа-значение, которое применяется к исходной альфе. Это значение применяется, как будто неявное правило SRC_IN было сначала применено к исходному пикселю против пикселя с обозначенной альфой, умножая и необработанную исходную альфу и необработанные исходные цвета альфой в AlphaComposite
. Это приводит к следующему уравнению для того, чтобы произвести альфу, используемую в уравнении смешивания Швейцара и Варёного пудинга:
As = Asr * AacВсе необработанные исходные компоненты цвета должны быть умножены на альфу в
AlphaComposite
экземпляр. Дополнительно, если бы источник не был в предварительно умноженной форме тогда, то компоненты цвета также должны быть умножены на исходную альфу. Таким образом уравнение для того, чтобы произвести исходные компоненты цвета для уравнения Швейцара и Варёного пудинга зависит от того, предварительно ли исходные пиксели умножаются или нет: Cs = Csr * Asr * Aac (if source is not premultiplied) Cs = Csr * Aac (if source is premultiplied)Никакая корректировка не должна быть внесена в целевую альфу:
Ad = Adr
Целевые компоненты цвета должны быть скорректированы, только если они не находятся в предварительно умноженной форме:
Cd = Cdr * Ad (if destination is not premultiplied) Cd = Cdr (if destination is premultiplied)
Скорректированные Как, Объявление, Cs, и Cd используются в стандартных уравнениях Швейцара и Варёного пудинга, чтобы вычислить смешивающиеся факторы Fs и Fd и затем получающиеся предварительно умноженные компоненты Ar и Cr.
Результаты только должны быть скорректированы, если они должны быть сохранены назад в целевой буфер, который содержит данные, которые не предварительно умножаются, используя следующие уравнения:
Adf = Ar Cdf = Cr (if dest is premultiplied) Cdf = Cr / Ar (if dest is not premultiplied)Отметьте, что, так как подразделение неопределено, если получающаяся альфа является нулем, подразделение в этом случае опускается, чтобы избежать, "делятся на нуль", и компоненты цвета оставляют как все нули.
По причинам производительности это - preferrable это Raster
объекты, которые передают к compose
метод a CompositeContext
объект, создаваемый AlphaComposite
класс предварительно умножил данные. Если любой источник Raster
или место назначения Raster
не предварительно умножается, однако, соответствующие преобразования выполняются прежде и после составляющей композит работы.
BufferedImage
класс, не храните альфа-значения для их пикселей. Такие источники предоставляют альфу 1.0 для всех их пикселей.
BufferedImage.TYPE_BYTE_INDEXED
не должен использоваться в качестве места назначения для смешивающейся работы, потому что каждая работа может представить большие ошибки, из-за потребности выбрать пиксель из ограниченной палитры, чтобы соответствовать результаты смешивающихся уравнений.
Обычно целочисленные значения связываются со значениями с плавающей точкой таким способом, которым целое число 0 приравнивается к значению с плавающей точкой 0.0 и целому числу 2^n-1 (где n является числом битов в представлении), приравнивается к 1.0. Для 8-разрядных представлений это означает, что 0x00 представляет 0.0, и 0xff представляет 1.0.
(A, R, G, B) = (0x01, 0xb0, 0x00, 0x00)
Если целочисленная математика использовалась, и это значение составлялись в SRC
режим без дополнительной альфы, тогда математика указала бы, что результаты были (в целочисленном формате):
(A, R, G, B) = (0x01, 0x01, 0x00, 0x00)
Отметьте, что промежуточное звено оценивает, которые всегда находятся в предварительно умноженной форме, только позволил бы целочисленному красному компоненту быть или 0x00 или 0x01. Когда мы пытаемся сохранить этот результат назад в место назначения, которое не предварительно умножается, отделяя альфу даст нам очень немного вариантов для!P непредварительно умноженного красного значения. В этом случае реализация, которая выполняет математику в целочисленном пространстве без ярлыков, вероятно, закончится с заключительными пиксельными значениями:
(A, R, G, B) = (0x01, 0xff, 0x00, 0x00)
(Отметьте, что 0x01, разделенный на 0x01, дает Вам 1.0, который эквивалентен значению 0xff в 8-разрядном формате хранения.)
Поочередно, реализация, которая использует математические операции с плавающей точкой, могла бы привести к более точным результатам и закончить тем, что возвратилась к исходному пиксельному значению с немного, если таковые вообще имеются, ошибка округления. Или, реализация, используя целочисленную математику могла бы решить, что, так как уравнения сводятся к виртуальному ТОЛЬКО ДЛЯ УКАЗАННЫХ ЦЕЛЕЙ на значениях цвета если выполняющийся в пространстве с плавающей точкой, это может передать пиксель, нетронутый месту назначения, и избежать всей математики полностью.
Эти реализации вся попытка соблюдать те же самые уравнения, но использовать различные компромиссы целочисленных и математических операций с плавающей точкой и уменьшенных или полных уравнений. Чтобы учесть такие различия, вероятно, лучше ожидать только что предварительно умноженная форма результатов соответствовать между реализациями и форматами изображения. В этом случае оба ответа, выраженные в предварительно умноженной форме, приравнялись бы к:
(A, R, G, B) = (0x01, 0x01, 0x00, 0x00)
и таким образом они все соответствовали бы.
Composite
, CompositeContext
Модификатор и Тип | Поле и Описание |
---|---|
static AlphaComposite |
Очистить
AlphaComposite возразите, что реализует непрозрачное ЧЕТКОЕ правило с альфой 1.0f. |
static int |
ОЧИСТИТЬ
И цвет и альфа места назначения очищаются (Варёный пудинг швейцара Четкое правило).
|
static AlphaComposite |
Dst
AlphaComposite возразите, что реализует непрозрачное правило DST с альфой 1.0f. |
static int |
DST
Место назначения оставляют нетронутым (Целевое правило Варёного пудинга швейцара).
|
static int |
DST_ATOP
Часть места назначения, лежащего в источнике, составляется по источнику и заменяет место назначения (Место назначения Варёного пудинга швейцара На Исходном правиле).
|
static int |
DST_IN
Часть места назначения, лежащего в источнике, заменяет место назначения (Место назначения Варёного пудинга швейцара В Исходном правиле).
|
static int |
DST_OUT
Часть места назначения, лежащего за пределами источника, заменяет место назначения (Место назначения Варёного пудинга швейцара, Протянутое По исходному правилу).
|
static int |
DST_OVER
Место назначения составляется по источнику, и результат заменяет место назначения (Место назначения Варёного пудинга швейцара По Исходному правилу).
|
static AlphaComposite |
DstAtop
AlphaComposite возразите, что реализует непрозрачное правило DST_ATOP с альфой 1.0f. |
static AlphaComposite |
DstIn
AlphaComposite возразите, что реализует непрозрачное правило DST_IN с альфой 1.0f. |
static AlphaComposite |
DstOut
AlphaComposite возразите, что реализует непрозрачное правило DST_OUT с альфой 1.0f. |
static AlphaComposite |
DstOver
AlphaComposite возразите, что реализует непрозрачное правило DST_OVER с альфой 1.0f. |
static AlphaComposite |
Src
AlphaComposite возразите, что реализует непрозрачное правило SRC с альфой 1.0f. |
static int |
SRC
Источник копируется в место назначения (Исходное правило Варёного пудинга швейцара).
|
static int |
SRC_ATOP
Часть источника, лежащего в месте назначения, составляется на место назначения (Источник Варёного пудинга швейцара На Целевом правиле).
|
static int |
SRC_IN
Часть источника, лежащего в месте назначения, заменяет место назначения (Источник Варёного пудинга швейцара В Целевом правиле).
|
static int |
SRC_OUT
Часть источника, лежащего за пределами места назначения, заменяет место назначения (Источник Варёного пудинга швейцара, Протянутый По Целевому правилу).
|
static int |
SRC_OVER
Источник составляется по месту назначения (Источник Варёного пудинга швейцара По Целевому правилу).
|
static AlphaComposite |
SrcAtop
AlphaComposite возразите, что реализует непрозрачное правило SRC_ATOP с альфой 1.0f. |
static AlphaComposite |
SrcIn
AlphaComposite возразите, что реализует непрозрачное правило SRC_IN с альфой 1.0f. |
static AlphaComposite |
SrcOut
AlphaComposite возразите, что реализует непрозрачное правило SRC_OUT с альфой 1.0f. |
static AlphaComposite |
SrcOver
AlphaComposite возразите, что реализует непрозрачное правило SRC_OVER с альфой 1.0f. |
static AlphaComposite |
Xor
AlphaComposite возразите, что реализует непрозрачное правило XOR с альфой 1.0f. |
static int |
XOR
Часть источника, который находится за пределами места назначения, объединяется с частью места назначения, которое лежит за пределами источника (Варёный пудинг швейцара правило Соерса Ксора Дестинэйшна).
|
Модификатор и Тип | Метод и Описание |
---|---|
CompositeContext |
createContext(ColorModel srcColorModel, ColorModel dstColorModel, RenderingHints hints)
Создает контекст для составляющей композит работы.
|
AlphaComposite |
derive(float alpha)
Возвращает подобное
AlphaComposite возразите, что использует указанное альфа-значение. |
AlphaComposite |
derive(int rule)
Возвращает подобное
AlphaComposite возразите, что использует указанное правило составления композита. |
boolean |
equals(Object obj)
Определяет, равен ли указанный объект этому
AlphaComposite . |
float |
getAlpha()
Возвращает альфа-значение этого
AlphaComposite . |
static AlphaComposite |
getInstance(int rule)
Создает
AlphaComposite объект с указанным правилом. |
static AlphaComposite |
getInstance(int rule, float alpha)
Создает
AlphaComposite объект с указанным правилом и постоянной альфой, чтобы умножиться с альфой источника. |
int |
getRule()
Возвращает составляющее композит правило этого
AlphaComposite . |
int |
hashCode()
Возвращает хэш-код для этого составного объекта.
|
public static final int CLEAR
Фс = 0 и Fd = 0, таким образом:
Ar = 0 Cr = 0
public static final int SRC
Фс = 1 и Fd = 0, таким образом:
Ar = As Cr = Cs
public static final int DST
Фс = 0 и Fd = 1, таким образом:
Ar = Ad Cr = Cd
public static final int SRC_OVER
Фс = 1 и Fd = (1 - Как), таким образом:
Ar = As + Ad*(1-As) Cr = Cs + Cd*(1-As)
public static final int DST_OVER
Фс = (1 объявление) и Fd = 1, таким образом:
Ar = As*(1-Ad) + Ad Cr = Cs*(1-Ad) + Cd
public static final int SRC_IN
Фс = Эд и Фд = 0, таким образом:
Ar = As*Ad Cr = Cs*Ad
public static final int DST_IN
Фс = 0 и Fd = Как, таким образом:
Ar = Ad*As Cr = Cd*As
public static final int SRC_OUT
Фс = (1 объявление) и Fd = 0, таким образом:
Ar = As*(1-Ad) Cr = Cs*(1-Ad)
public static final int DST_OUT
Фс = 0 и Fd = (1 - Как), таким образом:
Ar = Ad*(1-As) Cr = Cd*(1-As)
public static final int SRC_ATOP
Фс = Эд и Фд = (1 - Как), таким образом:
Ar = As*Ad + Ad*(1-As) = Ad Cr = Cs*Ad + Cd*(1-As)
public static final int DST_ATOP
Фс = (1 объявление) и Fd = Как, таким образом:
Ar = As*(1-Ad) + Ad*As = As Cr = Cs*(1-Ad) + Cd*As
public static final int XOR
Фс = (1 объявление) и Fd = (1 - Как), таким образом:
Ar = As*(1-Ad) + Ad*(1-As) Cr = Cs*(1-Ad) + Cd*(1-As)
public static final AlphaComposite Clear
AlphaComposite
возразите, что реализует непрозрачное ЧЕТКОЕ правило с альфой 1.0f.CLEAR
public static final AlphaComposite Src
AlphaComposite
возразите, что реализует непрозрачное правило SRC с альфой 1.0f.SRC
public static final AlphaComposite Dst
AlphaComposite
возразите, что реализует непрозрачное правило DST с альфой 1.0f.DST
public static final AlphaComposite SrcOver
AlphaComposite
возразите, что реализует непрозрачное правило SRC_OVER с альфой 1.0f.SRC_OVER
public static final AlphaComposite DstOver
AlphaComposite
возразите, что реализует непрозрачное правило DST_OVER с альфой 1.0f.DST_OVER
public static final AlphaComposite SrcIn
AlphaComposite
возразите, что реализует непрозрачное правило SRC_IN с альфой 1.0f.SRC_IN
public static final AlphaComposite DstIn
AlphaComposite
возразите, что реализует непрозрачное правило DST_IN с альфой 1.0f.DST_IN
public static final AlphaComposite SrcOut
AlphaComposite
возразите, что реализует непрозрачное правило SRC_OUT с альфой 1.0f.SRC_OUT
public static final AlphaComposite DstOut
AlphaComposite
возразите, что реализует непрозрачное правило DST_OUT с альфой 1.0f.DST_OUT
public static final AlphaComposite SrcAtop
AlphaComposite
возразите, что реализует непрозрачное правило SRC_ATOP с альфой 1.0f.SRC_ATOP
public static final AlphaComposite DstAtop
AlphaComposite
возразите, что реализует непрозрачное правило DST_ATOP с альфой 1.0f.DST_ATOP
public static final AlphaComposite Xor
AlphaComposite
возразите, что реализует непрозрачное правило XOR с альфой 1.0f.XOR
public static AlphaComposite getInstance(int rule)
AlphaComposite
объект с указанным правилом.public static AlphaComposite getInstance(int rule, float alpha)
AlphaComposite
объект с указанным правилом и постоянной альфой, чтобы умножиться с альфой источника. Источник умножается с указанной альфой прежде, чем быть составленным с местом назначения.rule
- составляющее композит правилоalpha
- постоянная альфа, которая будет умножена с альфой источника. alpha
должно быть число с плавающей точкой в содержащем диапазоне [0.0, 1.0].IllegalArgumentException
- если alpha
меньше чем 0.0 или больше чем 1.0, или если rule
не одно из следующего: CLEAR
, SRC
, DST
, SRC_OVER
, DST_OVER
, SRC_IN
, DST_IN
, SRC_OUT
, DST_OUT
, SRC_ATOP
, DST_ATOP
, или XOR
public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel, RenderingHints hints)
createContext
в интерфейсе Composite
srcColorModel
- ColorModel
из источникаdstColorModel
- ColorModel
из места назначенияhints
- подсказка, что использование объекта контекста, чтобы выбрать между рендерингом альтернативCompositeContext
объект, который будет использоваться, чтобы выполнить составляющие композит операции.public float getAlpha()
AlphaComposite
. Если это AlphaComposite
не имеет альфа-значения, 1.0 возвращается.AlphaComposite
.public int getRule()
AlphaComposite
.AlphaComposite
.public AlphaComposite derive(int rule)
AlphaComposite
возразите, что использует указанное правило составления композита. Если этот объект уже использует указанное правило составления композита, этот объект возвращается.rule
- составляющее композит правилоAlphaComposite
объект, полученный из этого объекта, который использует указанное правило составления композита.IllegalArgumentException
- если rule
не одно из следующего: CLEAR
, SRC
, DST
, SRC_OVER
, DST_OVER
, SRC_IN
, DST_IN
, SRC_OUT
, DST_OUT
, SRC_ATOP
, DST_ATOP
, или XOR
public AlphaComposite derive(float alpha)
AlphaComposite
возразите, что использует указанное альфа-значение. Если у этого объекта уже есть указанное альфа-значение, этот объект возвращается.alpha
- постоянная альфа, которая будет умножена с альфой источника. alpha
должно быть число с плавающей точкой в содержащем диапазоне [0.0, 1.0].AlphaComposite
объект, полученный из этого объекта, который использует указанное альфа-значение.IllegalArgumentException
- если alpha
меньше чем 0.0 или больше чем 1.0public int hashCode()
hashCode
в классе Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
AlphaComposite
. Результат true
если и только если параметр не null
и AlphaComposite
объект, у которого есть то же самое правило составления композита и альфа-значение как этот объект.
equals
в классе Object
obj
- Object
протестировать на равенствоtrue
если obj
равняется этому AlphaComposite
; false
иначе.Object.hashCode()
, HashMap
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.