doc: renamed project
This commit is contained in:
committed by
Sylvan Arnold
parent
244e516bd8
commit
32618389d1
434
pico-sensor/McuLib/src/McuFontDisplay.c
Normal file
434
pico-sensor/McuLib/src/McuFontDisplay.c
Normal file
@@ -0,0 +1,434 @@
|
||||
/* ###################################################################
|
||||
** This component module is generated by Processor Expert. Do not modify it.
|
||||
** Filename : McuFontDisplay.h
|
||||
** Project : FRDM-K64F_Generator
|
||||
** Processor : MK64FN1M0VLL12
|
||||
** Component : FontDisplay
|
||||
** Version : Component 01.201, Driver 01.00, CPU db: 3.00.000
|
||||
** Compiler : GNU C Compiler
|
||||
** Date/Time : 2023-12-20, 18:09, # CodeGen: 825
|
||||
** Abstract :
|
||||
** Driver to write fonts using GFont component
|
||||
** Settings :
|
||||
** Bean name : McuFontDisplay
|
||||
** System :
|
||||
** InhGDisplay : McuGDisplaySSD1306
|
||||
** Contents :
|
||||
** GetFontHeight - void McuFontDisplay_GetFontHeight(McuFontDisplay_Font *font,...
|
||||
** GetStringHeight - McuFontDisplay_PixelDim McuFontDisplay_GetStringHeight(uint8_t *str,...
|
||||
** GetCharWidth - void McuFontDisplay_GetCharWidth(uint8_t ch, McuFontDisplay_PixelDim...
|
||||
** GetStringWidth - McuFontDisplay_PixelDim McuFontDisplay_GetStringWidth(uint8_t *str,...
|
||||
** WriteString - void McuFontDisplay_WriteString(uint8_t *str, McuFontDisplay_PixelColor...
|
||||
** WriteStringWidth - void McuFontDisplay_WriteStringWidth(uint8_t *str, McuFontDisplay_PixelColor...
|
||||
** WriteChar - void McuFontDisplay_WriteChar(uint8_t ch, McuFontDisplay_PixelColor color,...
|
||||
** Deinit - void McuFontDisplay_Deinit(void);
|
||||
** Init - void McuFontDisplay_Init(void);
|
||||
**
|
||||
** * Copyright (c) 2011-2020, Erich Styger
|
||||
** * Web: https://mcuoneclipse.com
|
||||
** * SourceForge: https://sourceforge.net/projects/mcuoneclipse
|
||||
** * Git: https://github.com/ErichStyger/McuOnEclipse_PEx
|
||||
** * All rights reserved.
|
||||
** *
|
||||
** * Redistribution and use in source and binary forms, with or without modification,
|
||||
** * are permitted provided that the following conditions are met:
|
||||
** *
|
||||
** * - Redistributions of source code must retain the above copyright notice, this list
|
||||
** * of conditions and the following disclaimer.
|
||||
** *
|
||||
** * - Redistributions in binary form must reproduce the above copyright notice, this
|
||||
** * list of conditions and the following disclaimer in the documentation and/or
|
||||
** * other materials provided with the distribution.
|
||||
** *
|
||||
** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
** * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
** * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
** * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
** * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
** * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
** * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
** * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
** ###################################################################*/
|
||||
/*!
|
||||
** @file McuFontDisplay.h
|
||||
** @version 01.00
|
||||
** @brief
|
||||
** Driver to write fonts using GFont component
|
||||
*/
|
||||
/*!
|
||||
** @addtogroup McuFontDisplay_module McuFontDisplay module documentation
|
||||
** @{
|
||||
*/
|
||||
|
||||
/* MODULE McuFontDisplay. */
|
||||
|
||||
#include "McuFontDisplay.h"
|
||||
#include <stddef.h> /* for NULL */
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : WriteChar (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** Function to write a character at the start point. Set the
|
||||
** start point with the function setCursor.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** ch - the character to print
|
||||
** color - Foreground color to be used (for the
|
||||
** character pixels)
|
||||
** * xCursor - Pointer to x position of character
|
||||
** (upper left corner). On return this will
|
||||
** contain the next x position.
|
||||
** * yCursor - Pointer to y position of character
|
||||
** (upper left corner). On return this will
|
||||
** contain the next y position.
|
||||
** * font - Pointer to font information
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuFontDisplay_WriteChar(uint8_t ch, McuFontDisplay_PixelColor color, McuFontDisplay_PixelDim *xCursor, McuFontDisplay_PixelDim *yCursor, McuFontDisplay_Font *font)
|
||||
{
|
||||
PGFONT_CharInfo charStruct; /* font information */
|
||||
uint8_t *data; /* actual character of string text[] */
|
||||
uint8_t w; /* counter variable row bits of character */
|
||||
uint8_t h; /* counter variable column bits of character */
|
||||
McuFontDisplay_PixelDim currY;
|
||||
McuFontDisplay_PixelDim currX;
|
||||
signed char b; /* bit position in byte stream */
|
||||
|
||||
if (ch=='\t') { /* tabulator */
|
||||
ch = ' '; /* use a space instead */
|
||||
}
|
||||
charStruct = font->GetFontChar((uint8_t)ch);
|
||||
if (ch=='\n') { /* move to a new line */
|
||||
*yCursor += font->boundingBoxHeight; /* set next cursor position */
|
||||
return;
|
||||
}
|
||||
if (ch=='\r') { /* move to beginning of line */
|
||||
return; /* do nothing. Only the caller may know what the beginning of line is */
|
||||
}
|
||||
data = (uint8_t*)charStruct->CharBMP; /* get the pointer */
|
||||
if (data != NULL) { /* printable character. Only if we have a character info. This is not the case e.g. for \n */
|
||||
currY = (McuFontDisplay_PixelDim)(*yCursor
|
||||
+ font->boundingBoxHeight /* height of box. This includes the space between lines plus the space under the base line */
|
||||
- font->lineSpaceBoxHeight /* space between two lines */
|
||||
- font->underlineBoxHeight /* space below the base line */
|
||||
- charStruct->offsetY
|
||||
- charStruct->height);
|
||||
currX = (McuFontDisplay_PixelDim)(*xCursor + charStruct->offsetX);
|
||||
h = 0;
|
||||
for(;;) { /* breaks, process line by line */
|
||||
w = 0; /* width position */
|
||||
b = 7; /* bit position, MSB first */
|
||||
for(;;) { /* breaks, prints one pixel line */
|
||||
if ((((*data)&(1<<b))>>b)==1) { /* note that we do not change the background pixels */
|
||||
McuGDisplaySSD1306_PutPixel((McuFontDisplay_PixelDim)(currX+w), currY, color);
|
||||
}
|
||||
w++; /* width counter */
|
||||
b--; /* next pixel */
|
||||
if((b==-1)||(w==charStruct->width)) { /* last bit of byte reached or last bit of the width reached */
|
||||
if(w==charStruct->width) { /* last bit of the row from the current character */
|
||||
break; /* out of while loop */
|
||||
} else {
|
||||
b = 7;
|
||||
data++; /* next byte */
|
||||
}
|
||||
}
|
||||
} /* for */
|
||||
data++; /* next byte */
|
||||
h++; /* height counter increment */
|
||||
currY++; /* one row up */
|
||||
if(h==(charStruct->height)){ /* finished character */
|
||||
break;
|
||||
} /* next row of character */
|
||||
} /* for */
|
||||
*xCursor += charStruct->dwidth; /* set next cursor position */
|
||||
} /* if printable character */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : WriteString (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** Function to write a string or character at the startpoint.
|
||||
** Set the startpoint with the function setCursor.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** * str - Pointer to the character string
|
||||
** color - Foreground color to be used (for the
|
||||
** character pixels)
|
||||
** * xCursor - Pointer to x position of first
|
||||
** character (upper left corner). On return
|
||||
** this will contain the next y position.
|
||||
** * yCursor - Pointer to y position of character
|
||||
** (upper left corner). On return this will
|
||||
** contain the next y position.
|
||||
** * font - Pointer to font information
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuFontDisplay_WriteString(uint8_t *str, McuFontDisplay_PixelColor color, McuFontDisplay_PixelDim *xCursor, McuFontDisplay_PixelDim *yCursor, McuFontDisplay_Font *font)
|
||||
{
|
||||
McuFontDisplay_PixelDim x = *xCursor;
|
||||
|
||||
while(*str!='\0') {
|
||||
if (*str=='\r') {
|
||||
*xCursor = x;
|
||||
} else if (*str=='\n') {
|
||||
*xCursor = x;
|
||||
*yCursor += font->boundingBoxHeight;
|
||||
} else {
|
||||
McuFontDisplay_WriteChar(*str, color, xCursor, yCursor, font);
|
||||
}
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : WriteStringWidth (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** Function to write a string or character at the startpoint.
|
||||
** Set the startpoint with the function setCursor. If the
|
||||
** string reaches the given width, the text gets wrapped to a
|
||||
** new line.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** * str - Pointer to the character string
|
||||
** color - Foreground color to be used (for the
|
||||
** character pixels)
|
||||
** * xCursor - Pointer to x position of first
|
||||
** character (upper left corner). On return
|
||||
** this will contain the next y position.
|
||||
** * yCursor - Pointer to y position of character
|
||||
** (upper left corner). On return this will
|
||||
** contain the next y position.
|
||||
** * font - Pointer to font information
|
||||
** width - Maximum of width of the text box. If
|
||||
** text reaches the end of the box, the text
|
||||
** gets wrapped to a new line.
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuFontDisplay_WriteStringWidth(uint8_t *str, McuFontDisplay_PixelColor color, McuFontDisplay_PixelDim *xCursor, McuFontDisplay_PixelDim *yCursor, McuFontDisplay_Font *font, McuFontDisplay_PixelDim width)
|
||||
{
|
||||
McuFontDisplay_PixelDim x = *xCursor;
|
||||
|
||||
while(*str!='\0') {
|
||||
if (*str=='\r') {
|
||||
*xCursor = x;
|
||||
} else if (*str=='\n') {
|
||||
*xCursor = x;
|
||||
*yCursor += font->boundingBoxHeight;
|
||||
} else {
|
||||
if ((McuFontDisplay_PixelDim)((*xCursor - x) + ((PGFONT_CharInfo)(font->GetFontChar((uint8_t)*str)))->dwidth) >= width)
|
||||
{ /* check if we would reach the end of the box: wrap to a new line */
|
||||
*xCursor = x;
|
||||
*yCursor += font->boundingBoxHeight;
|
||||
}
|
||||
McuFontDisplay_WriteChar(*str, color, xCursor, yCursor, font);
|
||||
}
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : GetCharWidth (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** returns the width (in pixels) of a font character.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** ch - character for which to calculate the width
|
||||
** * charWidth - Pointer to width of the
|
||||
** character in pixels (this is only for the
|
||||
** character, without the space after the
|
||||
** character)
|
||||
** * totalWidth - Pointer to the total width
|
||||
** of the character, including to the space
|
||||
** after the character.
|
||||
** * font - Pointer to font information
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuFontDisplay_GetCharWidth(uint8_t ch, McuFontDisplay_PixelDim *charWidth, McuFontDisplay_PixelDim *totalWidth, McuFontDisplay_Font *font)
|
||||
{
|
||||
PGFONT_CharInfo charStruct;
|
||||
|
||||
charStruct = font->GetFontChar((uint8_t)ch);
|
||||
if (charStruct != NULL) {
|
||||
*charWidth = (McuFontDisplay_PixelDim)(charStruct->width+charStruct->offsetX);
|
||||
*totalWidth = (McuFontDisplay_PixelDim)charStruct->dwidth;
|
||||
} else {
|
||||
*charWidth = 0;
|
||||
*totalWidth = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : GetStringWidth (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** returns the width (in pixels) of a font string. For multiple
|
||||
** line strings (separated by \
|
||||
** ) or for strings with \r it returns the longest string
|
||||
** length.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** * str - Pointer to the string.
|
||||
** * font - Pointer to font information
|
||||
** * lastCharSpace - Pointer to the width
|
||||
** of the last character space, useful if you
|
||||
** combine multiple strings. The pointer may
|
||||
** be NULL.
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
McuFontDisplay_PixelDim McuFontDisplay_GetStringWidth(uint8_t *str, McuFontDisplay_Font *font, McuFontDisplay_PixelDim *lastCharSpace)
|
||||
{
|
||||
unsigned char *p; /* pointer to the actual character */
|
||||
McuFontDisplay_PixelDim currWidth; /* current width of string */
|
||||
McuFontDisplay_PixelDim maxWidth; /* maximum width of string */
|
||||
McuFontDisplay_PixelDim maxWidthSpace; /* last space of maximum string */
|
||||
McuFontDisplay_PixelDim charSpace; /* last character space */
|
||||
McuFontDisplay_PixelDim charWidth, totalWidth; /* character and total width of character */
|
||||
|
||||
currWidth = maxWidth = 0;
|
||||
charWidth = totalWidth = 0;
|
||||
charSpace = maxWidthSpace = 0;
|
||||
p = str;
|
||||
for (;;) { /* breaks */
|
||||
if (*p=='\n' || *p=='\r' || *p=='\0') { /* multi-line string */
|
||||
currWidth -= charSpace; /* subtract last space */
|
||||
if (currWidth > maxWidth) { /* remember maximum line */
|
||||
maxWidth = currWidth;
|
||||
maxWidthSpace = charSpace;
|
||||
}
|
||||
currWidth = charSpace = 0;
|
||||
if (*p == '\0') {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
McuFontDisplay_GetCharWidth(*p, &charWidth, &totalWidth, font);
|
||||
currWidth += totalWidth;
|
||||
charSpace = (McuFontDisplay_PixelDim)(totalWidth-charWidth); /* calculate space of last/current character */
|
||||
}
|
||||
p++; /* next character */
|
||||
} /* for */
|
||||
if (lastCharSpace != NULL) {
|
||||
*lastCharSpace = maxWidthSpace;
|
||||
}
|
||||
return maxWidth; /* return width */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : GetFontHeight (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** returns the height (in pixels) of a font.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** * font - Pointer to font information
|
||||
** * charHeight - Pointer to height of the
|
||||
** character in pixels.
|
||||
** * totalHeight - Pointer to the total
|
||||
** height of the character, including to the
|
||||
** space below the character.
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuFontDisplay_GetFontHeight(McuFontDisplay_Font *font, McuFontDisplay_PixelDim *charHeight, McuFontDisplay_PixelDim *totalHeight)
|
||||
{
|
||||
*charHeight = (McuFontDisplay_PixelDim)(font->boundingBoxHeight-font->lineSpaceBoxHeight);
|
||||
*totalHeight = font->boundingBoxHeight;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : GetStringHeight (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** returns the height (in pixels) of a font string. For
|
||||
** multiple line strings (separated by newline) or for strings
|
||||
** with \r it returns the longest list.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** * str - Pointer to the string.
|
||||
** * font - Pointer to font information
|
||||
** * lastLineSpace - Pointer to the height
|
||||
** of the last line space, useful if you
|
||||
** combine multiple strings. The pointer may
|
||||
** be NULL.
|
||||
** Returns :
|
||||
** --- - Error code
|
||||
** ===================================================================
|
||||
*/
|
||||
McuFontDisplay_PixelDim McuFontDisplay_GetStringHeight(uint8_t *str, McuFontDisplay_Font *font, McuFontDisplay_PixelDim *lastLineSpace)
|
||||
{
|
||||
uint16_t nofLines;
|
||||
McuFontDisplay_PixelDim charHeight, totalHeight;
|
||||
|
||||
if (*str == '\0') {
|
||||
if (lastLineSpace != NULL) {
|
||||
*lastLineSpace = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
nofLines = 1;
|
||||
while (*str != '\0') { /* breaks */
|
||||
if (*str=='\n') { /* multi-line string */
|
||||
nofLines++;
|
||||
}
|
||||
str++; /* next character */
|
||||
}
|
||||
McuFontDisplay_GetFontHeight(font, &charHeight, &totalHeight);
|
||||
if (lastLineSpace != NULL) {
|
||||
*lastLineSpace = (McuFontDisplay_PixelDim)(totalHeight-charHeight);
|
||||
}
|
||||
return (McuFontDisplay_PixelDim)((nofLines-1)*totalHeight + charHeight); /* return height */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : Deinit (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** Driver de-initialization
|
||||
** Parameters : None
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuFontDisplay_Deinit(void)
|
||||
{
|
||||
/* nothing needed */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : Init (component FontDisplay)
|
||||
**
|
||||
** Description :
|
||||
** Driver initialization
|
||||
** Parameters : None
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuFontDisplay_Init(void)
|
||||
{
|
||||
/* nothing needed */
|
||||
}
|
||||
|
||||
/* END McuFontDisplay. */
|
||||
|
||||
/*!
|
||||
** @}
|
||||
*/
|
||||
Reference in New Issue
Block a user