PackedColorModel — 패킹 색 모델 추상 클래스
PackedColorModel — 패킹 색 모델 추상 클래스 (java.awt.image)
색과 알파 정보를 별도의 샘플로 나타내고 단일 픽셀의 모든 샘플을 단일 int, short, byte 양으로 패킹하는 픽셀 값과 함께 동작하는 추상 ColorModel 클래스예요.
본문
PackedColorModel은 java.awt.image.ColorModel을 확장하고 Transparency를 구현해요. 직접 알려진 서브클래스로 DirectColorModel이 있어요.
이 클래스는 임의의 ColorSpace와 함께 쓸 수 있어요. 픽셀 값의 색 샘플 수는 ColorSpace의 색 컴포넌트 수와 같아야 하고, 단일 알파 샘플이 있을 수 있어요. transferType 원시 배열 픽셀 표현을 쓰는 메서드의 배열 길이는 항상 1이에요. 지원 transfer type은 DataBuffer.TYPE_BYTE, TYPE_USHORT, TYPE_INT예요.
색·알파 샘플은 비트 마스크가 나타내는 비트에 배열의 단일 요소에 저장돼요. 각 마스크는 연속적이고 겹치면 안 돼요. 마스크와 샘플의 대응:
- 마스크는 0부터
getNumComponents - 1까지의 인덱스로 식별돼요. - 처음
getNumColorComponents개의 인덱스가 색 샘플을 가리켜요. - 알파 샘플이 있으면 마지막 인덱스에 대응해요.
- 색 인덱스의 순서는
ColorSpace가 지정해요(예: TYPE_RGB면 0=빨강, 1=초록, 2=파랑).
PackedColorModel은 보통 마스크로 패킹된 샘플을 정의하는 이미지 데이터와 함께 쓰이는데, 예를 들어 SinglePixelPackedSampleModel과 함께 BufferedImage를 구성할 수 있어요. 색 해석은 ColorModel의 마스크에 따라 이루어져요.
단일 int 표현은 항상 가능하므로 그 표현을 쓰는 메서드는 잘못된 픽셀 값 때문에 IllegalArgumentException을 던지지 않아요. DirectColorModel은 X11 TrueColor 비주얼과 비슷한 서브클래스예요.
생성자
public PackedColorModel(ColorSpace space, int bits, int[] colorMaskArray, int alphaMask,
boolean isAlphaPremultiplied, int trans, int transferType)
색 마스크 배열과 알파 마스크로 구성해요. colorMaskArray의 길이는 ColorSpace의 컴포넌트 수여야 해요. 여러 마스크의 비트는 연속적이고 int 픽셀의 지정된 하위 비트 수에 들어맞아야 해요. alphaMask가 0이면 알파 없음.
예외: IllegalArgumentException — bits가 1보다 작거나 32보다 클 때
public PackedColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask,
boolean isAlphaPremultiplied, int trans, int transferType)
알파·빨강·초록·파랑 색 샘플을 포함하는 int 픽셀의 비트를 나타내는 마스크들로 구성해요. space는 TYPE_RGB 타입이어야 해요. amask가 0이면 알파 없음.
예외: IllegalArgumentException — space가 TYPE_RGB가 아닐 때
메서드 상세
getMask(int index) / getMasks()
public final int getMask(int index)
public final int[] getMasks()
지정된 색/알파 샘플(또는 모든 샘플)을 포함하는 픽셀의 비트를 나타내는 마스크를 반환해요. 색 샘플의 경우 index는 색 공간에서의 색 샘플 이름 배치에 대응해요(예: CMYK에서 0=시안, 1=마젠타).
예외: ArrayIndexOutOfBoundsException — index가 컴포넌트 수-1보다 크거나 0보다 작을 때
createCompatibleSampleModel(int w, int h)
public SampleModel createCompatibleSampleModel(int w, int h)
이 ColorModel과 호환되는 데이터 레이아웃을 가진 지정된 너비·높이의 SampleModel을 만들어요.
예외: IllegalArgumentException — w·h가 0보다 크지 않을 때
isCompatibleSampleModel(SampleModel sm)
public boolean isCompatibleSampleModel(SampleModel sm)
지정된 SampleModel이 이 ColorModel과 호환되는지 검사해요. sm이 null이면 false를 반환해요.
getAlphaRaster(WritableRaster raster)
public WritableRaster getAlphaRaster(WritableRaster raster)
입력 WritableRaster에서 추출한 이미지의 알파 채널을 나타내는 WritableRaster를 반환해요. 알파 밴드는 있으면 이미지 데이터의 마지막 밴드로 저장된다고 가정해요. 별도 공간 알파 채널이 없으면 null을 반환해요. 새 WritableRaster를 만들지만 데이터 배열은 공유해요.
equals(Object) / hashCode()
지정된 객체가 PackedColorModel 인스턴스이고 이 객체와 같은지 검사하고, 해시 코드를 반환해요.