반응형
Freetype에서 특정 크기 이하의 폰트는 MONO Bitmap을 리턴하며
Pixel Mode를 통해 (FT_PIXEL_MODE_MONO) 확인이 가능합니다.
이 경우 1 Byte에 8 Pixel에 대한 정보가 담겨져 있으므로 다음과 같은 별도의 처리가 필요합니다.
Pixel Mode를 통해 (FT_PIXEL_MODE_MONO) 확인이 가능합니다.
이 경우 1 Byte에 8 Pixel에 대한 정보가 담겨져 있으므로 다음과 같은 별도의 처리가 필요합니다.
/* Src : FreeType의 Bitmap Dest : Texture\ (현재 A4R4G4B4) startX, startY : 글자 영역의 위치 baselienX, baselineY : 글자 모양의 Baseline */ WORD* pTextureData = NULL; BYTE* pDestAddr = (BYTE*)pDest->pBits; int offsetX = startX + baselineX; int offsetY = startY + baselineY; switch(pSrc->pixel_mode) { case FT_PIXEL_MODE_MONO: { for (int i = 0; i < srcHeight; ++i) { int indexY = offsetY + i; if (0 > indexY) continue; if (destHeight <= indexY) break; pTextureData = (WORD*)(&pDestAddr[indexY * pDest->Pitch]); for (int j = 0; j < srcWidth; ++j) { indexX = offsetX + j; if (0 > indexX) continue; if (destWidth <= indexX) break; if (pSrc->buffer[i * pSrc->pitch + (j>>3)] & (0x80 >> (j%8))) { pTextureData[indexX] = Color; } } } } break; }
반응형
'Game Dev > Article' 카테고리의 다른 글
Send Stream to Notepad (0) | 2008.06.09 |
---|---|
Accurately Profiling Direct3D API Calls (Direct3D 9) (0) | 2008.06.09 |
File 존재 여부 검사 (0) | 2008.06.03 |
Process 중복 실행 방지 (0) | 2008.06.03 |