Example for the LPC4088 QSB Base Board

Dependencies:   EALib mbed

GlobeDemo.h

Committer:
embeddedartists
Date:
2014-04-09
Revision:
1:6131a78e7e97
Parent:
0:7dd43900b657

File content as of revision 1:6131a78e7e97:


#ifndef GLOBEDEMO_H
#define GLOBEDEMO_H

#include "Graphics.h"
#include "GFXFb.h"

class GlobeDemo {
public:

    /** Set the address of the frame buffer to use.
     *
     *  It is the content of the frame buffer that is shown on the
     *  display. All the drawing on the frame buffer can be done
     *  'offline' and whenever it should be shown this function
     *  can be called with the address of the offline frame buffer.
     *
     *  @param pFrameBuf  Pointer to the frame buffer, which must be
     *                    3 times as big as the frame size (for tripple
     *                    buffering).
     *         dispWidth  The width of the display (in pixels).
     *         dispHeight The height of the display (in pixels).
     *         loops      Number of loops in the demo code.
     *         delayMs    Delay in milliseconds between schreen updates.
     *
     *  @returns
     *       none
     */
    GlobeDemo(uint8_t *pFrameBuf, uint16_t dispWidth, uint16_t dispHeight);
    
    void run(uint32_t loops, uint32_t delayMs);

private:
    enum Constants {
        BACKGROUND_COLOR         = BLACK,
        LARGE_CIRCLE_COLOR       = 0x39e7, //DARK_GRAY
        SMALL_CIRCLE_FRONT_COLOR = WHITE,
        SMALL_CIRCLE_BACK_COLOR  = 0x7bef, //LIGHT_GRAY
    };

    int32_t windowX;
    int32_t windowY;
    uint16_t *pFrmBuf;
    uint16_t *pFrmBuf1;
    uint16_t *pFrmBuf2;
    uint16_t *pFrmBuf3;
    
    Graphics graphics;
    
    unsigned short isqrt(unsigned long a) const;
    short _sin(short y) const;
    short _cos(short y) const;
    short isine(short x) const;
    short icosine(short x) const;
    void rotate_z(uint32_t angle);
    void rotate_y(uint32_t angle);
    void initialize();
    void render(uint32_t idx);

};

#endif /* GLOBEDEMO_H */