컬러의 활용
오늘부터는 Object Graphics 체계하에서 컬러를 다루는 방법에 관하여 기술하기로 하겠다. Direct Graphics에서 컬러를 다루던 기억을 잠시 떠올려보면, 그 유명한 device, decomposed=0(또는 1)과 같은 명령을 사용하여, 컬러체계를 24비트 혹은 8비트로 설정을 해놓고 컬러를 사용한다는 사실을 IDL 유저들은 이미 잘 알려져있으리라 생각된다. 이와 같은 24비트 혹은 8비트와 같은 컬러모드는 Object Graphics체계에서도 여전히 유효하다. 다만 컬러를 설정하는 방법이나 체계는 좀 다르므로, Direct Graphics 체계에 익숙했던 사용자들에게는 처음에는 아마 좀 생소하게 느껴지리라 여겨진다. Object Graphics 체계하에서의 컬러는 그래픽 디바이스 객체(윈도우, 프린터 등)의 컬러모델(Color Model)과 하위 그래픽 객체들(플롯, 이미지 등)의 컬러(Color) 사이의 상호작용의 결과물이라고 볼 수 있다. 즉, 그래픽 디바이스 객체가 갖는 컬러모델(24비트 혹은 8비트)과 개별 그래픽 객체가 갖는 컬러가 서로 같거나 다를 수 있기 때문에, 각각의 경우 최종적으로 우리 눈에 보이게 되는 컬러가 어떤 식으로 구현되어 나타나는가에 대한 이해가 먼저 필요하다. 아마 이 설명만으로는 명확한 내용 전달이 어려울 것 같다. 이제 좀 더 세부적인 내용으로 들어가서, 이 얘기가 과연 무슨 얘기인지를 찬찬히 살펴보기로 하자. 인덱스 및 RGB 컬러모델 (Indexed and RGB Color Model) Object Graphics에서는 두 종류의 컬러모델이 존재한다. 첫 번째는 인덱스 컬러모델(Indexed Color Model)이라고 하는데, 이는 Direct Graphics에서 사용되는 8비트 컬러모드와 같다고 보면 된다. 즉, 데이터의 값 자체가 화소값이 되고, 이 화소값에 대응하는 컬러가 표현되는 방식이다. 예를 들어, 화소값이 100인데 이 값에 해당되는 색이 붉은색이라면, 2차원 공간상에서 이 화소값을 갖는 화소들은 모두 붉은색으로 표출된다. 두 번째는 RGB 컬러모델이라고 하는데, 이는 곧 24비트 컬러모드 즉 색상을 항상 Red, Green, Blue 3개의 채널로 표현하는 방식이다. 그래픽 디바이스 객체를 처음 생성할 때, 이 객체가 어떤 컬러모델을 가질 것인가를 사용자가 설정할 수 있다. 즉, 어떤 윈도우 객체를 생성하면서 이 윈도우가 갖게 될 컬러모델을 사용자 임의로 지정할 수 있다. 기본적으로 컬러모델은 그래픽 디바이스 객체(Destination Objects)들만이 갖는 속성이다. 사용하고자 하는 윈도우 객체에 대하여 컬러모델 속성을 설정하려면, COLOR_MODEL이라는 키워드를 사용한다. 인덱스 컬러모델을 사용하려면 이 키워드에 1이란 값을 부여하고, RGB 컬러모델을 사용하려면 0이란 값을 부여하면 된다. 다음과 같이 객체를 처음 선언할 때 이 키워드를 사용한다. myWindow = OBJ_NEW(‘IDLgrWindow’, COLOR_MODEL=1) 이와 같이 인덱스 컬러모델을 사용할 경우, 이것은 8비트 컬러체계에 해당되므로 마치 Direct Graphics에서 컬러테이블과 같은 역할을 하는 팔레트(Palette) 객체를 사용할 수 있다. 그래서 윈도우 객체의 PALETTE 속성에 대하여 팔레트 객체를 부여하면, 이에 따른 컬러 인덱스를 사용하게 된다. 만약 팔레트 객체를 따로 지정해주지않으면 기본 컬러테이블인 흑백 컬러테이블을 사용하게 된다. myPalette = OBJ_NEW(‘IDLgrPalette’) myPalette -> LOADCT, 5 myWindow -> SetProperty, PALETTE=myPalette RGB 컬러테이블을 사용하려면 다음과 같이 해주면 된다. myWindow = OBJ_NEW(‘IDLgrWindow’, COLOR_MODEL=0) 만약 COLOR_MODEL 속성을 따로 지정해주지 않으면 기본설정은 RGB 컬러모델을 사용하도록 되어있다. 그리고 이 속성은 그래픽 디바이스 객체를 처음 선언할 때에만 설정 가능하며, 일단 선언이 된 후에는 속성의 변경이 불가함을 유념해야 한다.
'IDL > Object Graphics' 카테고리의 다른 글
Object Graphics in IDL [27] (0) | 2011.02.25 |
---|---|
Object Graphics in IDL [26] (0) | 2011.02.22 |
IDL 8.0에서 새로 도입된 Object 관련 문법 (0) | 2011.02.07 |
Object Graphics in IDL [24] (0) | 2011.02.05 |
Object Graphics in IDL [23] (0) | 2011.01.31 |