설명

gx_compatible_dc()는 인수로 받은 DC에 대한 복사본을 만들어 줍니다. DC와 DC의 복사본을 이용하면 gx_bitblt() 나 gx_bitblt_mask()를 사용할 때, 색상 bit단위가 아닌 byte 단위로 복사 되기 때문에 매우 빠르게 복사를 진행할 수 있어, 보다 빠른 그래픽 출력을 연출할 수 있습니다.

 

헤더 gx.h
형태 dc_t *gx_get_compatible_dc( dc_t *dc)
인수
dc_t *dc 복사 대상 dt_t
반환
dc_t *dc 복사 결과물

예제

int main( void)
{
    dc_t       *dc_screen;      // 화면 Device Context
    dc_t       *dc_fore;        // 평소 출력할 이미지
    dc_t       *dc_back;        // 색상이 선택되었을 때 출력할 이미지
    dc_t       *dc_mask;        // mask 이미지
    
    color_t     color;

    gx_init( "/dev/fb");
    dc_screen = gx_get_screen_dc();

    dc_fore = gx_get_compatible_dc( dc_screen);
    dc_back = gx_get_compatible_dc( dc_screen);
    dc_mask = gx_get_compatible_dc( dc_screen);

    gx_open_file( dc_fore, "gx_bitblt_mask_fore.bmp");
    gx_open_file( dc_back, "gx_bitblt_mask_back.bmp");
    gx_open_file( dc_mask, "gx_bitblt_mask_mask.bmp");
    
    gx_bitblt( dc_screen, 0, 0, dc_fore, 0, 0, dc_screen->width, dc_screen->height);
    getchar();

    gx_get_pixel( dc_mask, 200, 300, &color);

    gx_bitblt_mask( dc_screen, dc_back, dc_mask, color, 24, 45, 530, 414);
    getchar();
    gx_bitblt_mask( dc_screen, dc_fore, dc_mask, color, 24, 45, 530, 414);
    getchar();

    gx_get_pixel( dc_mask, 365, 165, &color);

    gx_bitblt_mask( dc_screen, dc_back, dc_mask, color, 333, 133, 82, 89);
    getchar();
    gx_bitblt_mask( dc_screen, dc_fore, dc_mask, color, 333, 133, 82, 89);
    
    gx_release_dc( dc_back);
    gx_release_dc( dc_mask);
    gx_release_dc( dc_fore);
    
    gx_release_dc( dc_screen);
    gx_close();    
}

실행 결과