그래픽 & 멀티미디어
글 수 111
2008.11.17 20:26:12 (*.239.59.251)
56495
gxLib가 PNG의 알파 부분을 처리하는 기능을 추가하면서, gxLib 0.6.3으로 업그레이드했습니다. 샘플을 실행하면 0 <= alpha <= 255 처리가 되면서 이미지가 출력되는 것을 보실 수 있습니다.
- int gx_print_error ( char *remark)
인수에 에러 내용과 함께 출력할 수 있는 문자열을 받는 char *remark를 추가했습니다. - png 출력에 0 < alpha < 255 처리를 추가했습니다.
png 출력을 조금이라도 빠르게 하기 위해 gx_bitblt() 부분을 0 = alpha, 255 = alpha,
0 < alpha < 255 부분으로 나누어 루틴을 구성했습니다. - 이전 버전에서는 gx_bitblt() 에서, 같은 타입의 DC에 대해 같은 갈라 깊이라면 빠른 복사를 위해 b1_, b4_, b8, b_16, b_24, b_32별로 메모리 복사해 주는 함수를 따로 두었지만, b8부터 b32까지는 모두 byte_bitblt()로 모두 처리할 수 있도록 했습니다.
- 이외 자잔한 코드를 수정했습니다.
아울러 푸른수염님께서 숨어 있는 버그를 올바르게 잡아 주셨습니다. 역시 같이 작업하니 너무 좋군요. 앞으로 많은 분들이 같이 참여해 주시기를 바라고 또 바랍니다. 푸른수염님께서 잡아 주시 내용은 아래와 같습니다.
- void gx_bitblt()에서 switch() 구문
칼라 깊이 지정이 32를 36으로 작성된 오류 - bitmap_t *gx_bmp_open( char *filename)
아주 심각한 버그가 있었네요. Bitmap 파일을 모두 읽은 후 파일을 종료해야 하는데 누락되었네요.
하단에 fclose(fp); 추가를 지적해 주셨습니다. - png_t *gx_png_open( char *filename) 에서 pBackground 안전 확복
pBackground = NULL; 코드 추가 및 png_get_bKGD(png_ptr, info_ptr, &pBackground); 호출 후에 NULL 여부를 확인을 하는 if 절을 추가해 주셨습니다.
if( pBackground != NULL )
{
:
} - gx.c 에서 byte_bitblt() 캐스트 연산자 추가
char *pdest = (char*)dc_dest->mapped +dc_dest->bytes_per_line*dest_y +dest_x*bytes_per_pixel;
char *psour = (char*)dc_sour->mapped +dc_sour->bytes_per_line*sour_y +sour_x*bytes_per_pixel;
이렇게 gxLib를 함께 고심해 주시고 수고를 마다하지 않아 주신 푸른수염님께 감사드립니다. 그리고 기쁘게도 곧 푸른수염님께서 JPEG를 처리할 수 있는 루틴을 추가해 주신다고 하셨습니다. 곧 즐거운 소식을 전해 드릴 것으로 생각됩니다. 많이 기대해 주세요. ^^