SWT/PaletteData

위클립스
< SWT
이동: 둘러보기, 찾기

팔레트 데이터(PaletteData)ImageData의 각 픽셀 값이 어떻게 실제 RGB색상으로 매핑되는 지를 결정한다. 팔레트 데이터는 순수 자바 객체로 리소스가 아니며, 디스포즈 할 필요가 없다.

팔레트 데이터는 크게 두 종류로 나뉜다.

[편집] 인덱스 기반 팔레트 데이터

인덱스 기반 팔레트 데이터는 각 픽셀 값을 인덱스로 이용하여, 배열을 이용해 각 인덱스마다 특정 RGB가 매핑된 형태이다. 아래의 코드는 픽셀 값이 0일 경우 빨강, 1일 경우 녹색을 갖는 팔레트 이다:

PaletteData paletteData = new PaletteData(new RGB[] {new RGB(255,0,0), new RGB(0,255,0)});

그리고 이 팔레트를 이용해 이미지 데이터를 생성하는 코드는 다음과 같다:

  1. ImageData imageData = new ImageData(/*너비*/ 48, /*높이*/ 48, /*깊이*/ 1, paletteData);
  2.  
  3. for(int x=11;x<35;x++){
  4.    for(int y=11;y<35;y++){
  5.       imageData.setPixel(x,y,1);
  6.    }
  7. }
  8.  
  9. Image image = new Image(display,imageData);

예제의 팔레트는 색상이 2개 뿐이므로, ImageData11비트()의 깊이를 이용했다.

5에서 픽셀 값을 지정하는데, 예제의 경우 팔레트에 색상이 둘 뿐이므로, 이 경우 0 또는 1만 지정할 수 있다. 일반적으로 256 색상 이하의 이미지를 다룰 때 인덱스 기반의 팔레트 데이터를 이용한다. 따라서 GIF파일등을 로드 한 경우 인덱스 기반 팔레트 데이터를 이용한 이미지임을 상기하는 것이 좋다.

RGB값으로 부터 픽셀 인덱스 값을 얻기 위해 getRGB(int pixel)을 이용할 수 있고, 반대로 RGB값으로 부터 픽셀 값을 얻기 위해 getPixel(RGB)를 이용할 수 있다.

[편집] Direct PaletteData

Construct-icon.png 이문서는 공사중입니다. 직접 작성해 보시는 것은 어떨까요?
개인 도구
이름공간
변수
행위
포탈
탐색
도움
도구모음