Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TFTLCD 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 );
}
}
