This is the code we showed at Uncraftivism

Dependencies:   mbed

Committer:
jarkman
Date:
Mon Dec 14 08:28:21 2009 +0000
Revision:
2:01115080f6da
Parent:
0:57f4fdadc97f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jarkman 0:57f4fdadc97f 1
jarkman 0:57f4fdadc97f 2 // We're on an LPC2368:
jarkman 0:57f4fdadc97f 3 // http://www.standardics.nxp.com/support/documents/microcontrollers/pdf/user.manual.lpc23xx.pdf
jarkman 0:57f4fdadc97f 4 // so we have 32k of RAM available
jarkman 0:57f4fdadc97f 5 // The faster MBEDs use the 1768, with 64k of RAM
jarkman 0:57f4fdadc97f 6
jarkman 0:57f4fdadc97f 7 // Assume we will work at 80x60, 1 byte per pixel, hence 5k/frame
jarkman 0:57f4fdadc97f 8
jarkman 0:57f4fdadc97f 9 // This class keeps an array of reusable frames -
jarkman 0:57f4fdadc97f 10 // Get one with a call of Frame::allocFrame,
jarkman 0:57f4fdadc97f 11 // Give it back with Frame::releaseFrame
jarkman 0:57f4fdadc97f 12
jarkman 0:57f4fdadc97f 13 #define MAX_FRAMES 10
jarkman 0:57f4fdadc97f 14
jarkman 0:57f4fdadc97f 15 class Frame
jarkman 0:57f4fdadc97f 16 {
jarkman 0:57f4fdadc97f 17 private:
jarkman 0:57f4fdadc97f 18 Frame();
jarkman 0:57f4fdadc97f 19 ~Frame();
jarkman 0:57f4fdadc97f 20 void init( uint8_t pixelFormat, uint16_t width, uint16_t height, uint32_t frameSize );
jarkman 0:57f4fdadc97f 21
jarkman 0:57f4fdadc97f 22 public:
jarkman 0:57f4fdadc97f 23 uint16_t getPixel( uint32_t p );
jarkman 0:57f4fdadc97f 24 void setPixel( uint32_t p, uint16_t );
jarkman 0:57f4fdadc97f 25 void writeToFile( char *filename );
jarkman 0:57f4fdadc97f 26 static void readFromFile( char *filename, Frame **frame );
jarkman 0:57f4fdadc97f 27
jarkman 0:57f4fdadc97f 28
jarkman 0:57f4fdadc97f 29 // Use these methods to manage a pool of frames to avoid fragmentation
jarkman 0:57f4fdadc97f 30 static void initFrames();
jarkman 0:57f4fdadc97f 31 static void allocFrame( Frame **frame, uint8_t pixelFormat, uint16_t width, uint16_t height, uint16_t frameSize );
jarkman 0:57f4fdadc97f 32 static void releaseFrame( Frame **frame );
jarkman 0:57f4fdadc97f 33 static void cloneFrame( Frame **clone, Frame* original );
jarkman 0:57f4fdadc97f 34
jarkman 0:57f4fdadc97f 35 private:
jarkman 0:57f4fdadc97f 36 static Frame* m_frames[MAX_FRAMES];
jarkman 0:57f4fdadc97f 37
jarkman 0:57f4fdadc97f 38 public:
jarkman 0:57f4fdadc97f 39 uint8_t *m_pixels;
jarkman 0:57f4fdadc97f 40 uint16_t m_width;
jarkman 0:57f4fdadc97f 41 uint16_t m_height;
jarkman 0:57f4fdadc97f 42 uint8_t m_pixelFormat;
jarkman 0:57f4fdadc97f 43 uint32_t m_frameSize;
jarkman 0:57f4fdadc97f 44 uint8_t m_bitsPerPixel;
jarkman 0:57f4fdadc97f 45 uint32_t m_numPixels;
jarkman 0:57f4fdadc97f 46 bool m_deleted;
jarkman 0:57f4fdadc97f 47 bool m_bad;
jarkman 0:57f4fdadc97f 48
jarkman 0:57f4fdadc97f 49 };