[완료]Freetype 라이브러리 이용해서 1bit bitmap 이미지를 찍어주고 싶습니다.
글쓴이: eyecleaner / 작성시간: 화, 2010/11/09 - 4:56오후
Freetype 라이브러리에서
bitmap 타입을 mono로 설정 했을때
bitmap 변수에 어떻게 데이터가 들어가 있는지 궁굼합니다.
API 레퍼런스를 찾아보면
FT_Bitmap 구조체를 보면 pixel_mode 라고 있는데
이 속성 값들 중에 또 FT_PIXEL_MODE_MONO 라고 정의 되어 있습니다.
A monochrome bitmap, using 1 bit per pixel.
Note that pixels are stored in most-significant order(MSB),
which means that the left-most pixel in a byte has value 128.
이라고 설명 되어 있는데 무슨 의미 이해가 잘 안됩니다.
bitmap 변수에 data 가 10110011 라고 들어가 있으면
1bit 로 뽑아낸 data기 때문에 각 bit 가 1 pixel 이 되어서
10000000
00000000
10000000
10000000
00000000
10000000
10000000
이렇게 각 pixel(bit) 를 1byte 로 만들어줘서
비트맵을 만들어야 하나요?
아니면 다른 속성을 만져줘야 하는지요...
Freetype 라이브러리를 이용해서 1bit bitmap 이미지로 출력하고 싶습니다.
Forums:
아닙니다. 올려주신
아닙니다. 올려주신 영어로 된 설명이 정확하게 나와있습니다.
MONO로 뽑은 비트맵 데이터는 각 픽셀이 1비트에 대응됩니다.
따라서 폰트 비트맵 크기가 3*3의 경우에는 아래와 같은 형식이 됩니다.
101 100 010
편의상 3비트씩 쪼갰습니다. 그냥 일련의 비트연속이라 보시면 됩니다.
하지만 우리가 익히 아는 1바이트는 8비트이므로 실제로는 아래와 같이 저장 되어있을 겁니다.
10110001 00000000
이것을 그냥 일련의 비트연속으로 보시고 FT_Bitmap의 rows, width, pitch를 이용해서 풀어내야하는 것입니다.
비트맵에서 rows, width, pitch의 의미는 검색해보면 아실겁니다.
아래는 MONO와 MONO가 아닌 경우 비트맵을 풀어내는 코드입니다.
위 코드를 보시면 아시겠지만 MONO의 경우에는 각 비트를 하나씩 풀어서 분리하는 부분이 있고
그렇지 않는 경우에는 그냥 8비트 단위로 데이터를 분리해고 있습니다.
ps. 위의 코드에서 src"["index"]"라고 되어있는 부분은 따옴표를 제거하고 그냥 올리니까 이 부분이 깨지네요.
그래서 따옴표로 감쌌습니다. 원래 코드는 따옴표를 제거한 배열 접근 부분이라고 보시면 됩니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
감사합니다!
덕분에 꽉 막혔었는데 쉽게 해결 할수 있었습니다.
출력이 되긴 하는데 1bit 라 그런지 모양이 이쁘지는 않네요 ^^
좀 더 공부해 봐야 겠네요.
댓글 달기