diff -r c6b5c552980a -r 233a997193b8 inc/FutabaVfd.h --- a/inc/FutabaVfd.h Thu May 22 22:36:43 2014 +0200 +++ b/inc/FutabaVfd.h Sat May 24 00:43:18 2014 +0200 @@ -7,6 +7,7 @@ #include "hidapi.h" #include "HidDevice.h" +#include "BitArray.h" #ifndef MIN #define MIN(a,b) (((a)<(b))?(a):(b)) @@ -29,6 +30,11 @@ const unsigned short KFutabaVendorId = 0x1008; const unsigned short KFutabaProductIdGP1212A01A = 0x100C; const unsigned short KFutabaProductIdGP1212A02A = 0x1013; //Or is it 0x1015 +const int KGP12xWidthInPixels = 256; +const int KGP12xHeightInPixels = 64; +const int KGP12xPixelsPerByte = 8; +const int KGP12xFrameBufferSizeInBytes = KGP12xWidthInPixels*KGP12xHeightInPixels/KGP12xPixelsPerByte; //256*64/8=2048 +const int KGP12xFrameBufferPixelCount = KGP12xWidthInPixels*KGP12xHeightInPixels; //typedef struct hid_device_info HidDeviceInfo; @@ -88,6 +94,8 @@ virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn)=0; virtual void SetAllPixels(unsigned char aOn)=0; virtual int FrameBufferSizeInBytes() const=0; + //virtual int BitBlit(unsigned char* aSrc, unsigned char aSrcWidth, unsigned char aSrcHeight, unsigned char aTargetX, unsigned char aTargetY) const=0; + }; /** @@ -110,14 +118,16 @@ { public: GP1212A01A(); + ~GP1212A01A(); // int Open(); //From FutabaGraphicVfd - virtual int WidthInPixels() const {return 256;}; - virtual int HeightInPixels() const {return 64;}; + virtual int WidthInPixels() const {return KGP12xWidthInPixels;}; + virtual int HeightInPixels() const {return KGP12xHeightInPixels;}; virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn); virtual void SetAllPixels(unsigned char aPattern); - virtual int FrameBufferSizeInBytes() const {return 2048;}; //256*64/8 + virtual int FrameBufferSizeInBytes() const {return KGP12xFrameBufferSizeInBytes;}; + virtual void BitBlit(BitArray& aBitmap, unsigned char aSrcWidth, unsigned char aSrcHeight, unsigned char aTargetX, unsigned char aTargetY) const; //From FutabaVfd virtual void SetBrightness(int aBrightness); virtual void Clear(); @@ -135,6 +145,8 @@ // void ToggleOffScreenMode(); bool OffScreenMode() const {return iOffScreenMode;}; + // + private: enum DW @@ -147,6 +159,7 @@ unsigned char OffScreenY() const; void SendClearCommand(); void OffScreenTranslation(unsigned char& aX, unsigned char& aY); + void ResetBuffers(); private: unsigned char iDisplayPositionX; @@ -157,7 +170,11 @@ /// //FutabaVfdReport iReport; /// - //unsigned char iPixelBuffer[256][128]; + //unsigned char iFrameBuffer[256*64]; + BitArray* iFrameBuffer; + //unsigned char iFrameBeta[256*64]; + //unsigned char *iFrontBuffer; + //unsigned char *iBackBuffer; };