1.44 tft lcd display
Dependencies: TFT_fonts mbed-os
Fork of newTFTLCD by
Diff: hx8340bs.cpp
- Revision:
- 20:4bdca8d8dadc
- Parent:
- 15:af3cd35886fb
- Child:
- 22:4c169297f374
diff -r eb27effb8c07 -r 4bdca8d8dadc hx8340bs.cpp --- a/hx8340bs.cpp Thu Dec 13 03:37:22 2012 +0000 +++ b/hx8340bs.cpp Fri Dec 21 06:05:15 2012 +0000 @@ -177,7 +177,7 @@ serializeByte( data ); } -void HX8340S_LCD::SetXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 ) +void HX8340S_LCD::SetXY( unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2 ) { WriteCmdData( 0x2A, x1 ); // CASET WriteData( x2 ); @@ -186,22 +186,56 @@ WriteCmd( 0x2C ); // RAMWR } -void HX8340S_LCD::SetPixelColor( unsigned int color ) +void HX8340S_LCD::SetPixelColor( unsigned int color, colordepth_t mode ) { - unsigned char r, g, b; - r = ( color >> 16 ) & 0xFF; - g = ( color >> 8 ) & 0xFF; - b = color & 0xFF; + unsigned char r = 0, g = 0, b = 0; + unsigned short clr; if ( _colorDepth == RGB16 ) { - unsigned short clr = ( ( ( ( r ) & 0xF8 ) | ( ( g ) >> 5 ) ) << 8 ) | ( ( ( ( g ) & 0x1C ) << 3 ) | ( ( b ) >> 3 ) ); - WriteData( clr ); + switch ( mode ) + { + case RGB16: + WriteData( color & 0xFFFF ); + break; + case RGB18: + r = ( color >> 10 ) & 0xF8; + g = ( color >> 4 ) & 0xFC; + b = ( color >> 1 ) & 0x1F; + clr = ( ( r | ( g >> 5 ) ) << 8 ) | ( ( g << 3 ) | b ); + WriteData( clr ); + break; + case RGB24: + r = ( color >> 16 ) & 0xF8; + g = ( color >> 8 ) & 0xFC; + b = color & 0xF8; + clr = ( ( r | ( g >> 5 ) ) << 8 ) | ( ( g << 3 ) | ( b >> 3 ) ); + WriteData( clr ); + break; + } } else if ( _colorDepth == RGB18 ) { - WriteByteData( r & 0xFC ); - WriteByteData( g & 0xFC ); - WriteByteData( b & 0xFC ); + switch ( mode ) + { + case RGB16: + r = ( ( color >> 8 ) & 0xF8 ) | ( ( color & 0x8000 ) >> 13 ); + g = ( color >> 3 ) & 0xFC; + b = ( ( color << 3 ) & 0xFC ) | ( ( color >> 3 ) & 0x01 ); + break; + case RGB18: + b = ( color << 2 ) & 0xFC; + g = ( color >> 4 ) & 0xFC; + r = ( color >> 10 ) & 0xFC; + break; + case RGB24: + r = ( color >> 16 ) & 0xFC; + g = ( color >> 8 ) & 0xFC; + b = color & 0xFC; + break; + } + WriteByteData( r ); + WriteByteData( g ); + WriteByteData( b ); } }