Graphical demo for the LPC4088 Experiment Base Board with one of the Display Expansion Kits. This program displays how to write text in different fonts.

Dependencies:   EALib mbed

TextDemo.cpp

Committer:
embeddedartists
Date:
2015-06-25
Revision:
0:5e5e9ec91fc8

File content as of revision 0:5e5e9ec91fc8:

/******************************************************************************
 * Includes
 *****************************************************************************/

#include "mbed.h"

#include "LcdController.h"
#include "EaLcdBoard.h"
#include "TextDemo.h"
#include "lpc_winfreesystem14x16.h"
#include "lpc_rom8x8.h"
#include "lpc_rom8x16.h"
#include "lpc_x5x7.h"
#include "lpc_x6x13.h"
#include "lpc_helvr10.h"

/******************************************************************************
 * Typedefs and defines
 *****************************************************************************/

#define NUM_TO_TEST (sizeof(BKGCOLORS)/sizeof(BKGCOLORS[0]))  

/******************************************************************************
 * Local variables
 *****************************************************************************/

static const COLOR_T BKGCOLORS[] = { BLUE, RED, GREEN, YELLOW, CYAN, MAGENTA, LIGHTGRAY };
static const COLOR_T PENCOLORS[] = { WHITE, WHITE, BLACK, BLACK, BLACK, WHITE, RED };

/******************************************************************************
 * Public functions
 *****************************************************************************/
TextDemo::TextDemo(uint8_t *pFrameBuf, uint16_t dispWidth, uint16_t dispHeight)
{
  swim_window_open(&this->_win, 
                   dispWidth, dispHeight,        // full screen
                   (COLOR_T*)pFrameBuf,
                   0,0,dispWidth-1,dispHeight-1, // window position and size
                   0,                            // border
                   WHITE, BLUE, BLACK);          // colors: pen, backgr, forgr
}

void TextDemo::run(EaLcdBoardGPIO& lcdBoard, uint32_t loops, uint32_t delayMs)
{
  printf("TextDemo, %d loops, %dms delay\n", loops, delayMs);
    
  //update framebuffer
  lcdBoard.setFrameBuffer((uint32_t)this->_win.fb);
  
  // Draw strings with the different fonts in different color combinations    
  for (int i = 0; i < NUM_TO_TEST; i++) {
    swim_set_bkg_color(&this->_win, BKGCOLORS[i]);
    swim_set_pen_color(&this->_win, PENCOLORS[i]);
    swim_clear_screen(&this->_win, this->_win.bkg);
    
    int incr = 30;
    int y = incr;
    swim_put_text_xy(&this->_win, "Default Font 0123456789 abcdefghijklmnopqrstuvwxyz", 20, y);
    y += incr;
      
    wait_ms(1000);
    swim_set_font(&this->_win, (FONT_T*)&font_winfreesys14x16);
    swim_put_text_xy(&this->_win, "font_winfreesys14x16 0123456789 abcdefghijklmnopqrstuvwxyz", 20, y);
    y += incr;
      
    wait_ms(1000);
    swim_set_font(&this->_win, (FONT_T*)&font_rom8x8);
    swim_put_text_xy(&this->_win, "font_rom8x8 0123456789 abcdefghijklmnopqrstuvwxyz", 20, y);
    y += incr;
      
    wait_ms(1000);
    swim_set_font(&this->_win, (FONT_T*)&font_rom8x16);
    swim_put_text_xy(&this->_win, "font_rom8x16 0123456789 abcdefghijklmnopqrstuvwxyz", 20, y);
    y += incr;
      
    wait_ms(1000);
    swim_set_font(&this->_win, (FONT_T*)&font_x5x7);
    swim_put_text_xy(&this->_win, "font_x5x7 0123456789 abcdefghijklmnopqrstuvwxyz", 20, y);
    y += incr;
      
    wait_ms(1000);
    swim_set_font(&this->_win, (FONT_T*)&font_x6x13);
    swim_put_text_xy(&this->_win, "font_x6x13 0123456789 abcdefghijklmnopqrstuvwxyz", 20, y);
    y += incr;
      
    wait_ms(1000);
    swim_set_font(&this->_win, (FONT_T*)&font_helvr10);
    swim_put_text_xy(&this->_win, "font_helvr10 0123456789 abcdefghijklmnopqrstuvwxyz", 20, y);
    y += incr;
      
    wait_ms(2500);
  }
  memset((void*)(this->_win.fb), 0, this->_win.xpsize * this->_win.ypsize * sizeof(COLOR_T));
}