Game Dev/Article
FreeType에서 FT_PIXEL_MODE_MONO 처리
AKer
2008. 6. 4. 10:53
반응형
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;
}
반응형