1st Fork

Dependencies:   mbed QEI DmTftLibrary

Display/DisplayDriver.h

Committer:
lex9296
Date:
2022-02-15
Revision:
27:654100855f5c
Parent:
21:ab8027016a2c

File content as of revision 27:654100855f5c:

/*
  ______                              _
 / _____)             _              | |
( (____  _____ ____ _| |_ _____  ____| |__
 \____ \| ___ |    (_   _) ___ |/ ___)  _ \
 _____) ) ____| | | || |_| ____( (___| | | |
(______/|_____)_|_|_| \__)_____)\____)_| |_|
    (C)2016 Semtech

Description: Display driver header

Maintainer: Gregory Cristian & Gilbert Menth
*/

#ifndef TFT_DISPLAY_DRIVER_H
#define TFT_DISPLAY_DRIVER_H

#include "DmTftBase.h"

#define SCREEN_WIDTH                240
#define SCREEN_HEIGHT               320
    
#define TEXT_COLOR                  WHITE
#define BACK_COLOR                  BLACK
#define PAGE_COLOR                  CYAN
#define OBJECT_ERROR                RED
#define BUTTON_BORDER               BLUE
#define MENU_TEXT                   GREEN
#define TEXT_VALUE                  YELLOW
#define CIRCLE_FCOLOR               GRAY1


typedef enum
{
    GO_STATUS_NOERR,
    GO_STATUS_BAD_COORD,
    GO_STATUS_BAD_ARG,
    GO_STATUS_BAD_CONTEXT,
}GraphObjectStatus_t;

typedef enum
{
    GO_TEXT,
    GO_RECTANGLE,
    GO_CIRCLE,
    GO_TRIANGLE,
    GO_IMAGE,
    GO_LINE,
}GraphObjectType_t;

typedef struct
{
    uint8_t             Id;
    GraphObjectType_t   Type;
    uint16_t            Xpos;
    uint16_t            Ypos;
    uint16_t            Height;
    uint16_t            Width;
    uint16_t            LineWidth;
    uint16_t            BackColor;
    uint16_t            FrontColor;
    bool                DoFill;
    uint16_t            FillColor;
    uint8_t*            Source;
    bool                TouchActive;
}GraphObject_t;


/*!
 * \brief Initialses the hardware and variables associated with the display.
 */
 void DisplayDriverInit( void );

/*!
 * \brief Calibrates the touch screen.
 */
void DisplayDriverCalibrate( void );

void    TouchedXYT (uint16_t* x, uint16_t* y, bool* t);

/*!
 * \brief Draws a graphical object.
 *
 * \param [in]  *goObject     Object to draw.
 * \param [in]  *source       If object is a text : *source is the text to print
 *                            If object is a image: *source is the image
 *                            For the other type of goObject, *source is ignored
 * \param [in]  doFill        Indicate if the goObject (only for GO_RECTANGLE,
 *                            GO_CIRCLE & GO_TRIANGLE) should be filled or not.
 * \param [in]  activeTouch   Indicate if the coordinates of the goObject can be
 *                            used for touchscreen or not.
 * \retval      status        GO_STATUS_NOERR if ok or,
 *                            GO_STATUS_BAD_COORD if the object go out of screen
 */
GraphObjectStatus_t GraphObjectDraw( GraphObject_t* goObject, uint8_t* source, \
                                     bool doFill, bool activeTouch);

/*!
 * \brief Clear a graphical object.
 *
 * \param [in]  *goObject     Object to clear.
 * \param [in]  doFill        Indicate if the goObject (only for GO_RECTANGLE,
 *                            GO_CIRCLE & GO_TRIANGLE) should be filled or not.
 * \retval      status        GO_STATUS_NOERR if ok or,
 *                            GO_STATUS_BAD_COORD if the object go out of screen
 */
GraphObjectStatus_t GraphObjectClear( GraphObject_t* goObject, bool doFill );

/*!
 * \brief Get the first object that have the touched coordinate (if activateTouch
 *        of the object is TRUE).
 *
 * \param [in]  *objects      Tab of grophical objects.
 * \param [in]  objectsCount  Indicate the numbre of goObject in the tab.
 * \param [out] touchedObject Put the ID of the first touched and activated 
 *                            object of the tab.
 * \retval      status        GO_STATUS_NOERR if ok.
 */
GraphObjectStatus_t GraphObjectTouched( GraphObject_t* objects, \
                                        uint8_t objectsCount, \
                                        uint8_t* touchedObject);

/*!
 * \brief Draws a logo on the display.
 *
 * \param [in]  *thisBmp      The file to be printed onto the display.
 * \param [in]  xPos          Position across the display in pixels for the top
 *                            right corner of the logo starting at the left edge
 *                            of display.
 * \param [in]  yPos          Position across the display in pixels for the top
 *                            right corner of the logo starting at the top of
 *                            the display.
 */
void DisplayDriverDrawLogo( uint8_t *thisBmp, uint8_t xPos, uint8_t yPos );

// LA:  Addon(s)
//      ========
//

void    LCM_ClearScreen (uint16_t color);
void    LCM_DrawString  (uint16_t x, uint16_t y, const char *p);
void    LCM_SetTextColor    (uint16_t background, uint16_t foreground);
//
uint16_t    Scale2RGBColor   (uint16_t R, uint16_t G, uint16_t B);

#endif //TFT_DISPLAY_DRIVER_H