?? guicharm.c
字號(hào):
/*********************************************************************************************************** uC/GUI* Universal graphic software for embedded applications** (c) Copyright 2002, Micrium Inc., Weston, FL* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH** 礐/GUI 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 redistributed* in any way. We appreciate your understanding and fairness.*----------------------------------------------------------------------File : GUIChar.CPurpose : Implementation of memory devices----------------------------------------------------------------------Version-Date---Author-Explanation----------------------------------------------------------------------*/#include <stddef.h> /* needed for definition of NULL */#include "GUI_Private.H" /* *********************************************************** * * * Monospaced Font * * * ***********************************************************This is the routine that displays a character. It is used by allother routines which display characters as a subroutine.Parameters: c character to display*/void GUIMONO_DispChar(U16P c) { int c0, c1; U8 * pd; int x = GUI_Context.DispPosX; int y = GUI_Context.DispPosY;/* do some checking if drawing is actually necessary ... */ const GUI_FONT_MONO* pMono = GUI_Context.pAFont->p.pMono; unsigned int FirstChar = pMono->FirstChar; /* translate character into 2 characters to display : c0,c1 Check if regular character first. */ if ((c >= (U16P)FirstChar) &&(c <= (U16P)pMono->LastChar)) { pd = (U8*)pMono->pData; c0 = ((int)c) - FirstChar; c1 = -1; } else { /* Check if character is in translation table */ GUI_FONT_TRANSINFO const* pti = pMono->pTrans; pd = (U8*)pMono->pTransData; if (pti) { FirstChar = pti->FirstChar; if ((c >= (U16P)FirstChar) && (c <= (U16P)pti->LastChar)) { GUI_FONT_TRANSLIST const* ptl; c -= pti->FirstChar; ptl = pti->pList; ptl += c; c0 = ptl->c0; c1 = ptl->c1; } else { c0 = c1 = -1; } } else { c0 = c1 = -1; } }/* Draw first character if it is valid*/ if (c0!=-1) { int BytesPerChar = GUI_Context.pAFont->YSize*pMono->BytesPerLine; GUI_DRAWMODE DrawMode; int XSize = pMono->XSize; int YSize = GUI_Context.pAFont->YSize;/* Select the right drawing mode */ DrawMode = GUI_Context.TextMode;/* call drawing routine */ { U8 OldMode = LCD_SetDrawMode(DrawMode); LCD_DrawBitmap( x, y, XSize, YSize, GUI_Context.pAFont->XMag, GUI_Context.pAFont->YMag, 1, /* Bits per Pixel */ pMono->BytesPerLine, pd + c0* BytesPerChar, NULL /* no palette means default palette */ ); if (c1 != -1) { LCD_SetDrawMode(DrawMode | LCD_DRAWMODE_TRANS); LCD_DrawBitmap( x, y, XSize, YSize, GUI_Context.pAFont->XMag, GUI_Context.pAFont->YMag, 1, /* Bits per Pixel */ pMono->BytesPerLine, pd + c1* BytesPerChar, NULL /* no palette means default palette */ ); } /* Fill empty pixel lines */ if (GUI_Context.pAFont->YDist > GUI_Context.pAFont->YSize) { int YMag = GUI_Context.pAFont->YMag; int YDist = GUI_Context.pAFont->YDist * YMag; int YSize = GUI_Context.pAFont->YSize * YMag; if (DrawMode != LCD_DRAWMODE_TRANS) { LCD_SetDrawMode(DrawMode ^ LCD_DRAWMODE_REV); /* Reverse so we can fill with BkColor */ LCD_FillRect(x, y + YSize, x + XSize, y + YDist); } } LCD_SetDrawMode(OldMode); } } GUI_Context.DispPosX+=pMono->XDist;}int GUIMONO_GetCharDistX(U16P c) { const GUI_FONT_MONO* pMono = GUI_Context.pAFont->p.pMono; GUI_USE_PARA(c); return pMono->XDist;}void GUIMONO_GetFontInfo(void* pFont, GUI_FONTINFO* pfi) { GUI_USE_PARA(pFont); pfi->Flags = GUI_FONTINFO_FLAG_MONO;}char GUIMONO_IsInFont(void* pFont, U16 c) { const GUI_FONT_MONO* pMono = ((GUI_FONT*)pFont)->p.pMono; unsigned int FirstChar = pMono->FirstChar; /* Check if regular character first. */ if ((c >= (U16P)FirstChar) &&(c <= (U16P)pMono->LastChar)) { return 1; /* Yes, we have it ! */ } else { /* Check if character is in translation table */ GUI_FONT_TRANSINFO const* pti = pMono->pTrans; if (pti) { if ((c >= pti->FirstChar) && (c <= pti->LastChar)) { return 1; /* Yes, we have it ! */ } } } return 0; /* No, we can not display this character */}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -