gxLib 내려받기Download: gxLib 0.6.7  757kb

gxLib의 설치 방법과 함수 사용 설명을 따로 모았습니다. 아래의 게시판을 참고하세요.

그래픽 라이브러리 - gxLib

gx_imagelist_create() 함수 추가

한 장의 사진을 바둑판 식으로 나누어 여러 개의 이미지를 생성하는 gx_imagelist_create()를 추가했습니다. 프로그램을 작성하다 보면, 같은 위치에 같은 크기의 이지지를 바꾸어 출력할 일이 많습니다. 예를 들어 버튼 같은 경우, 원래 버튼 모양과 커서가 올려 졌을 때와 눌렸을 때의 그림을 상태에 따라 번갈아 출력해야 하는데, 이미지를 따로따로 다른 파일로 만들어서 사용하기 보다는 하나의 이미지에 모아 놓고 나누어 사용하는 것이 편합니다.

즉, 아래와 같이 바둑판 식으로 이미지를 만들어 놓고 쪼개 사용한다는 것이죠.

이 이미지를 각각의 변수를 따로 두지 않고 "list" 변수 하나로 사용한다면 변수 사용부터 편합니다. 아래의 샘플을 실행하면 투명 효과와 함께 이미지가 차례로 변하는 것을 보실 수 있습니다.

예제

#include    <stdio.h>
#include    <unistd.h>
#include    <gx.h>
#include    <gxbdf.h>
#include    <gximagelist.h>

int   main( void)
{
    dc_t          *dc_screen;                       // 화면 Device Context
    png_t         *png_back;                        // 백그라운드 출력을 위한 png
    png_t         *png_cell;                        // 이미지 리스트를 이용할 png
    image_list_t  *list;                            // 이미지 리스트 객체 핸들
    int            ndx;

    if  ( gx_init( "/dev/fb"))                      // gxLib 초기화
        gx_print_error( "");                        // 실행 중 에러 내용을 출력
    else
    {
        if ( !( dc_screen = gx_get_screen_dc()))    // 화면 출력을 위한 스크린 DC 구함
            gx_print_error( "");                    // 실행 중 에러 내용을 출력
        else
        {
            gx_clear( dc_screen, gx_color( 0, 0, 0, 255));  // 화면을 검정으로

            if  ( !( png_back = gx_png_open( "background.png")))
                gx_print_error( "background.png");
            else
                gx_bitblt( dc_screen, 0, 0,
                            (dc_t *)png_back, 0, 0, png_back->width, png_back->height);

            // 이미지 리스트를 만들고 화면에 출력
            if ( !( list = gx_imagelist_create( "sample.png", 90, 90)))
                gx_print_error( "gx_imagelist_create()");
            else
            {
                printf( "이미지 개수 =%d\n", list->count);

                for ( ndx = 0; ndx < list->count; ndx++)
                {
                    // 이미지 리스트에서 인덱스에 해당하는 이미지를 구함
                    png_cell = gx_imagelist_get( list, ndx);
                    gx_bitblt( dc_screen, 50, 50,
                                (dc_t *)png_cell, 0, 0, png_cell->width, png_cell->height);
                    sleep(1);
                }
                gx_imagelist_close( list);
            }
            gx_release_dc( dc_screen);
        }
        gx_close();
    }
    return   0;
}

gxcolor.h 추가

(주)FALiNUX의 기술 팀장으로 계시는 오재경 팀장님께서 칼라를 좀더 편리하게 지정할 수 있는 매크로 함수를 올려 주셨는데, 이번 버전에 gxcolor.h 파일로 추가했습니다. 인수가 많아 칼라 지정이 불편하실 때, 애용하세요. ^^

#ifndef _COLOR_H_
#define _COLOR_H_

// 칼라값 정의   gx_color( red, green, blue )
#define    CL_BLACK_ALPHA(a)          gx_color(   0,   0,   0, (a) )
#define    CL_MAROON_ALPHA(a)         gx_color( 128,   0,   0, (a) )
#define    CL_GREEN_ALPHA(a)          gx_color(   0, 128,   0, (a) )
#define    CL_OLIVE_ALPHA(a)          gx_color( 128, 128,   0, (a) )
#define    CL_NAVY_ALPHA(a)           gx_color(   0,   0, 128, (a) )
#define    CL_PURPLE_ALPHA(a)         gx_color( 128,   0, 128, (a) )
#define    CL_TEAL_ALPHA(a)           gx_color(   0, 128, 128, (a) )
#define    CL_GRAY_ALPHA(a)           gx_color( 128, 128, 128, (a) )
#define    CL_SILVER_ALPHA(a)         gx_color( 192, 192, 192, (a) )
#define    CL_RED_ALPHA(a)            gx_color( 255,   0,   0, (a) )
#define    CL_LIME_ALPHA(a)           gx_color(   0, 255,   0, (a) )
#define    CL_YELLOW_ALPHA(a)         gx_color( 255, 255,   0, (a) )
#define    CL_BLUE_ALPHA(a)           gx_color( 0  ,   0, 255, (a) )
#define    CL_FUCHSIA_ALPHA(a)        gx_color( 255,   0, 255, (a) )
#define    CL_AQUA_ALPHA(a)           gx_color(   0, 255, 255, (a) )
#define    CL_WHITE_ALPHA(a)          gx_color( 255, 255, 255, (a) )
#define    CL_MONEYGREEN_ALPHA(a)     gx_color( 192, 220, 192, (a) )
#define    CL_SKYBLUE_ALPHA(a)        gx_color( 166, 202, 240, (a) )
#define    CL_CREAM_ALPHA(a)          gx_color( 255, 251, 240, (a) )
#define    CL_MEDGRAY_ALPHA(a)        gx_color( 160, 160, 164, (a) )
           
#define    CL_BLACK                   CL_BLACK_ALPHA(255)     
#define    CL_MAROON                  CL_MAROON_ALPHA(255)    
#define    CL_GREEN                   CL_GREEN_ALPHA(255)     
#define    CL_OLIVE                   CL_OLIVE_ALPHA(255)     
#define    CL_NAVY                    CL_NAVY_ALPHA(255)      
#define    CL_PURPLE                  CL_PURPLE_ALPHA(255)    
#define    CL_TEAL                    CL_TEAL_ALPHA(255)      
#define    CL_GRAY                    CL_GRAY_ALPHA(255)      
#define    CL_SILVER                  CL_SILVER_ALPHA(255)    
#define    CL_RED                     CL_RED_ALPHA(255)       
#define    CL_LIME                    CL_LIME_ALPHA(255)      
#define    CL_YELLOW                  CL_YELLOW_ALPHA(255)    
#define    CL_BLUE                    CL_BLUE_ALPHA(255)      
#define    CL_FUCHSIA                 CL_FUCHSIA_ALPHA(255)   
#define    CL_AQUA                    CL_AQUA_ALPHA(255)      
#define    CL_WHITE                   CL_WHITE_ALPHA(255)     
#define    CL_MONEYGREEN              CL_MONEYGREEN_ALPHA(255)
#define    CL_SKYBLUE                 CL_SKYBLUE_ALPHA(255)   
#define    CL_CREAM                   CL_CREAM_ALPHA(255)     
#define    CL_MEDGRAY                 CL_MEDGRAY_ALPHA(255)   


#endif