As of Monday morning, so this is the code we showed at Uncraftivism.

Dependencies:   mbed

Committer:
voidnoise
Date:
Mon Dec 14 08:25:07 2009 +0000
Revision:
1:5d20e168f467
Parent:
0:da6a22da11a2

        

Who changed what in which revision?

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