# HG changeset patch # User sl # Date 1411319408 -7200 # Node ID ea9ccfdb5563e73e9612e0c5dfe323fd9c93aea2 # Parent fa7c9f9140aa8c84ed175740adf77b2bda6bfb64 Making our interface more generic by taking a 32bits color value. diff -r fa7c9f9140aa -r ea9ccfdb5563 Display.h --- a/Display.h Sat Sep 06 18:39:49 2014 +0200 +++ b/Display.h Sun Sep 21 19:10:08 2014 +0200 @@ -75,7 +75,7 @@ public: virtual int WidthInPixels() const=0; virtual int HeightInPixels() const=0; - virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn)=0; + virtual void SetPixel(unsigned char aX, unsigned char aY, unsigned int aPixel)=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; diff -r fa7c9f9140aa -r ea9ccfdb5563 FutabaGP1212A01.cpp --- a/FutabaGP1212A01.cpp Sat Sep 06 18:39:49 2014 +0200 +++ b/FutabaGP1212A01.cpp Sun Sep 21 19:10:08 2014 +0200 @@ -84,16 +84,19 @@ /** */ -void GP1212A01A::SetPixel(unsigned char aX, unsigned char aY, bool aOn) +void GP1212A01A::SetPixel(unsigned char aX, unsigned char aY, unsigned int aPixel) { // //int byteOffset=(aX*HeightInPixels()+aY)/8; //int bitOffset=(aX*HeightInPixels()+aY)%8; //iNextFrame[byteOffset] |= ( (aOn?0x01:0x00) << bitOffset ); + //Pixel is on if any of the non-alpha component is not null + bool on = (aPixel&0x00FFFFFF)!=0x00000000; + if (iOffScreenMode) { - if (aOn) + if (on) { iFrameNext->SetBit(aX*HeightInPixels()+aY); } @@ -105,7 +108,7 @@ else { //Just specify a one pixel block - SetPixelBlock(aX,aY,0x00,0x01,aOn); + SetPixelBlock(aX,aY,0x00,0x01,on); } } diff -r fa7c9f9140aa -r ea9ccfdb5563 FutabaGP1212A01.h --- a/FutabaGP1212A01.h Sat Sep 06 18:39:49 2014 +0200 +++ b/FutabaGP1212A01.h Sun Sep 21 19:10:08 2014 +0200 @@ -25,7 +25,7 @@ //From DisplayBase int Open(); //From FutabaGraphicVfd - virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn); + virtual void SetPixel(unsigned char aX, unsigned char aY, unsigned int aPixel); virtual void SetAllPixels(unsigned char aPattern); virtual int FrameBufferSizeInBytes() const {return KGP12xFrameBufferSizeInBytes;} //virtual void BitBlit(const BitArray& aBitmap, int aSrcWidth, int aSrcHeight, int aTargetX, int aTargetY) const; diff -r fa7c9f9140aa -r ea9ccfdb5563 FutabaGP1212A02.cpp --- a/FutabaGP1212A02.cpp Sat Sep 06 18:39:49 2014 +0200 +++ b/FutabaGP1212A02.cpp Sun Sep 21 19:10:08 2014 +0200 @@ -221,16 +221,19 @@ /** */ -void GP1212A02A::SetPixel(unsigned char aX, unsigned char aY, bool aOn) +void GP1212A02A::SetPixel(unsigned char aX, unsigned char aY, unsigned int aPixel) { // //int byteOffset=(aX*HeightInPixels()+aY)/8; //int bitOffset=(aX*HeightInPixels()+aY)%8; //iNextFrame[byteOffset] |= ( (aOn?0x01:0x00) << bitOffset ); + //Pixel is on if any of the non-alpha component is not null + bool on = (aPixel&0x00FFFFFF)!=0x00000000; + if (iOffScreenMode) { - if (aOn) + if (on) { iFrameNext->SetBit(aX*HeightInPixels()+aY); } diff -r fa7c9f9140aa -r ea9ccfdb5563 FutabaGP1212A02.h --- a/FutabaGP1212A02.h Sat Sep 06 18:39:49 2014 +0200 +++ b/FutabaGP1212A02.h Sun Sep 21 19:10:08 2014 +0200 @@ -35,7 +35,7 @@ //From GraphicDisplay - virtual void SetPixel(unsigned char aX, unsigned char aY, bool aOn); + virtual void SetPixel(unsigned char aX, unsigned char aY, unsigned int aPixel); virtual void SetAllPixels(unsigned char aPattern); virtual int FrameBufferSizeInBytes() const {return KGP12xFrameBufferSizeInBytes;} virtual void SetBrightness(int aBrightness); diff -r fa7c9f9140aa -r ea9ccfdb5563 MiniDisplay.cpp --- a/MiniDisplay.cpp Sat Sep 06 18:39:49 2014 +0200 +++ b/MiniDisplay.cpp Sun Sep 21 19:10:08 2014 +0200 @@ -152,10 +152,10 @@ } //------------------------------------------------------------- -void MiniDisplaySetPixel(MiniDisplayDevice aDevice, int aX, int aY, int aValue) +void MiniDisplaySetPixel(MiniDisplayDevice aDevice, int aX, int aY, unsigned int aPixel) { //aValue&=0x00FFFFFF; //Filter out alpha component - return ((GraphicDisplay*)aDevice)->SetPixel(aX,aY,aValue); + return ((GraphicDisplay*)aDevice)->SetPixel(aX,aY,aPixel); } //------------------------------------------------------------- diff -r fa7c9f9140aa -r ea9ccfdb5563 MiniDisplay.h --- a/MiniDisplay.h Sat Sep 06 18:39:49 2014 +0200 +++ b/MiniDisplay.h Sun Sep 21 19:10:08 2014 +0200 @@ -107,7 +107,7 @@ @param [IN] Pixel Y coordinate. @param [IN] Pixel value. */ -extern "C" MDAPI void MiniDisplaySetPixel(MiniDisplayDevice aDevice, int aX, int aY, int aValue); +extern "C" MDAPI void MiniDisplaySetPixel(MiniDisplayDevice aDevice, int aX, int aY, unsigned int aPixel); //TODO: Have an API to specify pixel depth