ben winstone
/
ucam
As of Monday morning, so this is the code we showed at Uncraftivism.
Frame.h@1:5d20e168f467, 2009-12-14 (annotated)
- Committer:
- voidnoise
- Date:
- Mon Dec 14 08:25:07 2009 +0000
- Revision:
- 1:5d20e168f467
- Parent:
- 0:da6a22da11a2
Who changed what in which revision?
User | Revision | Line number | New 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 | }; |