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에 대한 정보가 담겨져 있으므로 다음과 같은 별도의 처리가 필요합니다.

	/*
	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