위와 같이 간단히 타겟이 되는 디바이스의 틀 모양의 종이조각 만으로도
실제 구성을 표현 해 볼 수 있다.
어떤 방식으로 차례로 진행되는 것을 간략히 그리고 자르고 오려붙여서
표현하면서 머릿속의 추상화된 아이디어 들을 점점 실재감 있게
구체화 하는 과정을 거친다.



- 정리 -
실제로 자신이 상상하는 것들을 현실감 있게 표현하는 능력은 대단히 중요한 듯 하다.
상상력이 부족한 사람들을 대상으로 뭔가를 설득하고자 할 때는 이런 방법들을 동원하는 것도
좋은 방법일 듯 하고, 또한 자신의 생각을 구체적으로 정리 할 수 있는 좋은 습관일 것이다,,


운영체제 : ingenient 제공 micro kernel.

기존 8but OSD를 16bit OSD로 변경하고,
기본적인 Graphic API를 구성하고, (dot, line, box, drawing)
확장 API를 추가한다. (alpha blending, sliding, etc..)


다음과 같이 16bit 모드로 레지스터를 설정해준다.

OSD_win_disable(&wc0);
 OSD_win_set_rgb16_ex(&wc0,1);
 OSD_win_set_blend_ratio(&wc0,OSD_WIN_BLEND_0);
 //Transparency Enable for ODS window
 OSD_win_set_transparency(&wc0,OSD_WIN_TRANSPARENCY_ENABLE);
 //set window rotation
 memset(wc0.buf,0,wc0.disp_width*wc0.disp_height*2);
 //OSD_win_set_rgb16(&wc0,1);
 OSD_win_enable(&wc0);


일반적으로 포토샵 등에서 저장한 16bit BMP는  

GGGB BBBB   // low byte

 XRRR RRGG  // high byte 

와 같이 배열되어 있다.  RGB 가 각각 5,5,5

 

DM320에서는 RGB가 5,6,5 형태로 되어 있으므로,

GGGB BBBB  // low byte

RRRR RGGG // high byte 

와 같이 배열되어 있음을 알 수 있다.

 

여기서 Green color를 처리해주기 위해 low byte의 6번째 비트를 1로 셋팅해주며,

1~5번째 비트는 소스의 1~5번째 비트를 사용하도록 구성해본다.

 

타겟 low = (((low<<1)&0xC0)|0x20)|(low&0x1F);
//(UINT8)((low&0x1F)|((low&0x07)<<5)); 
               //    GGGB BBBB

타겟 high = (high<<1)|((low&0x8F)>>7);
//(UINT8)(((Green&0x38)>>3)|((Red&0x1F)<<3)); 
            //    RRRR RGGG


           

위와 같은 처리를 하게되면, 최대한 비슷한 color의 화면 display 처리가 가능하다.

문제는 0x00 0x00 을 가지는 transparency 칼라 처리가 되지 않는다는 것이다..

0xc0, 0x00 와 같이 항상 처리가 되어버린다.

 

그래서 MASK 용 color를 따로 지정해 주는 방법을 써보자..

color 중에 자주 쓰이지 않는 자주색을 MASK color로 써본다.

+ Recent posts