?? font_showallttfs.c
字號:
/*********************************************************************
* SEGGER MICROCONTROLLER SYSTEME GmbH *
* Solutions for real time microcontroller applications *
**********************************************************************
* *
* (c) 1996 - 2007 SEGGER Microcontroller Systeme GmbH *
* *
* Internet: www.segger.com Support: support@segger.com *
* *
**********************************************************************
** emWin V4.14 - Graphical user interface for embedded applications **
emWin is protected by international copyright laws. Knowledge of the
source code may not be used to write a similar product. This file may
only be used in accordance with a license and should not be re-
distributed in any way. We appreciate your understanding and fairness.
----------------------------------------------------------------------
File : FONT_ShowAllTTFs.c
Purpose : Demonstrates the use of TTF font files
----------------------------------------------------------------------
*/
#include <windows.h>
#include <stdio.h>
#include "GUI.h"
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
static unsigned _aHeight [] = {16, 20, 32, 48}; /* Array of heights used to show text */
static GUI_TTF_CS _aCS [GUI_COUNTOF(_aHeight)]; /* Each GUI font needs its own GUI_TTF_CS structure */
static GUI_FONT _aFont [GUI_COUNTOF(_aHeight)]; /* Array of GUI fonts */
static char _acFamily [200];
static char _acStyle [200];
/*********************************************************************
*
* Static code
*
**********************************************************************
*/
/*********************************************************************
*
* _ShowText
*/
static void _ShowText(void) {
int i;
GUI_Clear();
i = 0;
GUI_TTF_GetFamilyName(&_aFont[i], _acFamily, sizeof(_acFamily));
GUI_TTF_GetStyleName(&_aFont[i], _acStyle, sizeof(_acStyle));
GUI_SetFont(&GUI_Font20_1);
GUI_DispString(_acFamily);
GUI_DispString(", ");
GUI_DispString(_acStyle);
GUI_DispNextLine();
GUI_DrawHLine(GUI_GetDispPosY(), 0, 0xfff);
GUI_SetFont(&_aFont[i]);
GUI_DispString("abcdefghijklmnopqrstuvwxyz\n");
GUI_DispString("ABCDEFGHIJKLMNOPQRSTUVWXYZ\n");
GUI_DispString("123456789.:,;(:*!?')\n");
GUI_DrawHLine(GUI_GetDispPosY(), 0, 0xfff);
for (i = 0; i < GUI_COUNTOF(_aHeight); i++) {
GUI_SetFont(&_aFont[i]);
GUI_DispString("The quick brown fox jumps over the lazy dog. 1234567890\n");
}
GUI_Delay(1000);
}
/*********************************************************************
*
* _CreateFonts
*/
static int _CreateFonts(const U8 * pData, U32 NumBytes) {
int i;
GUI_TTF_DATA TTF_Data; /* Only one GUI_TTF_DATA structure is used per font face */
TTF_Data.pData = pData; /* Set pointer to file data */
TTF_Data.NumBytes = NumBytes; /* Set size of file */
for (i = 0; i < GUI_COUNTOF(_aHeight); i++) {
/* Initialize GUI_TTF_CS members */
_aCS[i].PixelHeight = _aHeight[i];
_aCS[i].pTTF = &TTF_Data;
/* Create GUI font */
if (GUI_TTF_CreateFont(&_aFont[i], &_aCS[i])) {
return 1;
}
}
return 0;
}
/*********************************************************************
*
* _cbFontDemo
*
* Purpose:
* The function uses the given pointer to a true type font for creating
* a couple of GUI fonts and showing the outline of the TTF font.
*
* Parameters:
* pData - Location of font file
* NumBytes - Size of font file
*/
static void _cbFontDemo(const U8 * pData, U32 NumBytes) {
_CreateFonts(pData, NumBytes); /* Create fonts */
_ShowText(); /* Show some text */
GUI_TTF_DestroyCache(); /* Clear the TTF cache */
}
/*********************************************************************
*
* _IterateOverAllFiles
*
* Purpose:
* The function iterates over all files of the given folder and the
* given mask, reads the contents of the file and calls the function
* pfDoSomething() with location and size of file data.
* Can be used under Win32 environment only.
*/
static void _IterateOverAllFiles(const char * sFolder, const char * sMask, void (* pfDoSomething)(const U8 * pData, U32 NumBytes)) {
GUI_RECT Rect = {0, 10, 1000, 1000};
char acMask[_MAX_PATH];
char acFile[_MAX_PATH];
WIN32_FIND_DATA Context;
HANDLE hFind;
HANDLE hFile;
sprintf(acMask, "%s\\%s", sFolder, sMask);
hFind = FindFirstFile(acMask, &Context);
if (hFind != INVALID_HANDLE_VALUE) {
do {
sprintf(acFile, "%s\\%s", sFolder, Context.cFileName);
hFile = CreateFile(acFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (hFile != INVALID_HANDLE_VALUE) {
U8 * pData;
DWORD NumBytes;
DWORD NumBytesRead;
NumBytes = GetFileSize(hFile, NULL);
pData = (U8 *)malloc(NumBytes);
ReadFile(hFile, pData, NumBytes, &NumBytesRead, NULL);
pfDoSomething(pData, NumBytes);
free(pData);
}
CloseHandle(hFile);
} while (FindNextFile(hFind, &Context));
}
}
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* MainTask
*/
void MainTask(void) {
char acPath[200];
GUI_Init();
/* Set colors and text mode */
GUI_SetBkColor(GUI_WHITE);
GUI_SetColor(GUI_BLACK);
GUI_SetTextMode(GUI_TM_TRANS);
/* Get windows system directory and extend it with '\Font' */
GetWindowsDirectory(acPath, sizeof(acPath));
strcat(acPath, "\\Fonts");
/* Iterate over files and call _cbFontDemo for each file */
while (1) {
_IterateOverAllFiles(acPath, "*.ttf", _cbFontDemo);
}
}
/*************************** End of file ****************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -