#include <iostream> enum OUTPUT_MODES { OUTPUT_HEX, OUTPUT_BIN, OUTPUT_RGB565, }; uint8_t outputMode = OUTPUT_RGB565; // set this to one of the values of the enum above // ----------------------------------------------------------------------------- class ArrayFormatter { public : void start( const char * text, const size_t maxValuesPerLine = 10, const bool jumpLine = false ) { if ( m_started ) { return; } m_started = true; m_maxValuesPerLine = maxValuesPerLine; m_counter = 0; m_jumpLine = jumpLine; if ( sm_level == 0 ) { printf( "%s =\n", text ); } else { printf( "// %s\n", text ); for ( uint8_t i = 0; i < sm_level; i++ ) { printf( "\t" ); } } printf( "{\n" ); sm_level++; } void add( const char * value ) { if ( add() ) { printf( "%s", value ); } } bool add() { if ( !m_started ) { return false; } if ( m_counter == 0 ) { for ( uint8_t i = 0; i < sm_level; i++ ) { printf( "\t" ); } } else { if ( m_counter < m_maxValuesPerLine ) { printf( ", " ); } else { m_counter = 0; printf( ",\n" ); if ( m_jumpLine ) { printf( "\n" ); } for ( uint8_t i = 0; i < sm_level; i++ ) { printf( "\t" ); } } } m_counter++; return true; } void end() { if ( !m_started ) { return; } m_started = false; m_counter = 0; sm_level--; printf( "\n" ); if ( sm_level == 0 ) { printf( "};\n" ); } else { for ( uint8_t i = 0; i < sm_level; i++ ) { printf( "\t" ); } printf( "}" ); } } private : static uint8_t sm_level; bool m_started = false; size_t m_maxValuesPerLine = 10; size_t m_counter = 0; bool m_jumpLine = false; }; uint8_t ArrayFormatter::sm_level = 0; int main() { long ColVar[192]={63488, 63552, 63616, 63680, 63744, 63808, 63872, 63936, 64000, 64064, 64128, 64192, 64256, 64320, 64384, 64448, 64512, 64576, 64640, 64704, 64768, 64832, 64896, 64960, 65024, 65088, 65152, 65216, 65280, 65344, 65408, 65472, 65504, 63456, 61408, 59360, 57312, 55264, 53216, 51168, 49120, 47072, 45024, 42976, 40928, 38880, 36832, 34784, 32736, 30688, 28640, 26592, 24544, 22496, 20448, 18400, 16352, 14304, 12256, 10208, 8160, 6112, 4064, 2016, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2015, 1951, 1887, 1823, 1759, 1695, 1631, 1567, 1503, 1439, 1375, 1311, 1247, 1183, 1119, 1055, 991, 927, 863, 799, 735, 671, 607, 543, 479, 415, 351, 287, 223, 159, 95, 31, 31, 2079, 4127, 6175, 8223, 10271, 12319, 14367, 16415, 18463, 20511, 22559, 24607, 26655, 28703, 30751, 32799, 34847, 36895, 38943, 40991, 43039, 45087, 47135, 49183, 51231, 53279, 55327, 57375, 59423, 61471, 63519, 63519, 63518, 63517, 63516, 63515, 63514, 63513, 63512, 63511, 63510, 63509, 63508, 63507, 63506, 63505, 63504, 63503, 63502, 63501, 63500, 63499, 63498, 63497, 63496, 63495, 63494, 63493, 63492, 63491, 63490, 63489, 63488 }; size_t ColVarSize = sizeof( ColVar ) / sizeof( ColVar[0] ); ArrayFormatter af; char str[20]; switch ( outputMode ) { case OUTPUT_HEX : { af.start( "const uint16_t ColVar[]", 8 ); for ( size_t i = 0; i < ColVarSize; i++ ) { snprintf( str, sizeof(str), "0x%04X", (uint16_t)ColVar[i] ); af.add( str ); } af.end(); break; } case OUTPUT_BIN : { af.start( "const uint16_t ColVar[]", 4 ); for ( size_t i = 0; i < ColVarSize; i++ ) { uint8_t j = 0; str[j++] = '0'; str[j++] = 'b'; for ( int8_t k = 15; k >= 0; k-- ) { str[j++] = '0' + ( ( ColVar[i] >> k ) & 1 ); } str[j] = '\0'; af.add( str ); } af.end(); break; } default : { af.start( "const rgb565_t ColVar[]", 4 ); for ( size_t i = 0; i < ColVarSize; i++ ) { uint16_t color = ColVar[i]; uint8_t r = color >> 11; uint8_t g = (color >> 5) & 0b111111; uint8_t b = color & 0b11111; snprintf( str, sizeof(str), "{ %2hhu, %2hhu, %2hhu }", r, g, b ); af.add( str ); } af.end(); break; } } return 0; }
Standard input is empty
const rgb565_t ColVar[] = { { 31, 0, 0 }, { 31, 2, 0 }, { 31, 4, 0 }, { 31, 6, 0 }, { 31, 8, 0 }, { 31, 10, 0 }, { 31, 12, 0 }, { 31, 14, 0 }, { 31, 16, 0 }, { 31, 18, 0 }, { 31, 20, 0 }, { 31, 22, 0 }, { 31, 24, 0 }, { 31, 26, 0 }, { 31, 28, 0 }, { 31, 30, 0 }, { 31, 32, 0 }, { 31, 34, 0 }, { 31, 36, 0 }, { 31, 38, 0 }, { 31, 40, 0 }, { 31, 42, 0 }, { 31, 44, 0 }, { 31, 46, 0 }, { 31, 48, 0 }, { 31, 50, 0 }, { 31, 52, 0 }, { 31, 54, 0 }, { 31, 56, 0 }, { 31, 58, 0 }, { 31, 60, 0 }, { 31, 62, 0 }, { 31, 63, 0 }, { 30, 63, 0 }, { 29, 63, 0 }, { 28, 63, 0 }, { 27, 63, 0 }, { 26, 63, 0 }, { 25, 63, 0 }, { 24, 63, 0 }, { 23, 63, 0 }, { 22, 63, 0 }, { 21, 63, 0 }, { 20, 63, 0 }, { 19, 63, 0 }, { 18, 63, 0 }, { 17, 63, 0 }, { 16, 63, 0 }, { 15, 63, 0 }, { 14, 63, 0 }, { 13, 63, 0 }, { 12, 63, 0 }, { 11, 63, 0 }, { 10, 63, 0 }, { 9, 63, 0 }, { 8, 63, 0 }, { 7, 63, 0 }, { 6, 63, 0 }, { 5, 63, 0 }, { 4, 63, 0 }, { 3, 63, 0 }, { 2, 63, 0 }, { 1, 63, 0 }, { 0, 63, 0 }, { 0, 63, 0 }, { 0, 63, 1 }, { 0, 63, 2 }, { 0, 63, 3 }, { 0, 63, 4 }, { 0, 63, 5 }, { 0, 63, 6 }, { 0, 63, 7 }, { 0, 63, 8 }, { 0, 63, 9 }, { 0, 63, 10 }, { 0, 63, 11 }, { 0, 63, 12 }, { 0, 63, 13 }, { 0, 63, 14 }, { 0, 63, 15 }, { 0, 63, 16 }, { 0, 63, 17 }, { 0, 63, 18 }, { 0, 63, 19 }, { 0, 63, 20 }, { 0, 63, 21 }, { 0, 63, 22 }, { 0, 63, 23 }, { 0, 63, 24 }, { 0, 63, 25 }, { 0, 63, 26 }, { 0, 63, 27 }, { 0, 63, 28 }, { 0, 63, 29 }, { 0, 63, 30 }, { 0, 63, 31 }, { 0, 62, 31 }, { 0, 60, 31 }, { 0, 58, 31 }, { 0, 56, 31 }, { 0, 54, 31 }, { 0, 52, 31 }, { 0, 50, 31 }, { 0, 48, 31 }, { 0, 46, 31 }, { 0, 44, 31 }, { 0, 42, 31 }, { 0, 40, 31 }, { 0, 38, 31 }, { 0, 36, 31 }, { 0, 34, 31 }, { 0, 32, 31 }, { 0, 30, 31 }, { 0, 28, 31 }, { 0, 26, 31 }, { 0, 24, 31 }, { 0, 22, 31 }, { 0, 20, 31 }, { 0, 18, 31 }, { 0, 16, 31 }, { 0, 14, 31 }, { 0, 12, 31 }, { 0, 10, 31 }, { 0, 8, 31 }, { 0, 6, 31 }, { 0, 4, 31 }, { 0, 2, 31 }, { 0, 0, 31 }, { 0, 0, 31 }, { 1, 0, 31 }, { 2, 0, 31 }, { 3, 0, 31 }, { 4, 0, 31 }, { 5, 0, 31 }, { 6, 0, 31 }, { 7, 0, 31 }, { 8, 0, 31 }, { 9, 0, 31 }, { 10, 0, 31 }, { 11, 0, 31 }, { 12, 0, 31 }, { 13, 0, 31 }, { 14, 0, 31 }, { 15, 0, 31 }, { 16, 0, 31 }, { 17, 0, 31 }, { 18, 0, 31 }, { 19, 0, 31 }, { 20, 0, 31 }, { 21, 0, 31 }, { 22, 0, 31 }, { 23, 0, 31 }, { 24, 0, 31 }, { 25, 0, 31 }, { 26, 0, 31 }, { 27, 0, 31 }, { 28, 0, 31 }, { 29, 0, 31 }, { 30, 0, 31 }, { 31, 0, 31 }, { 31, 0, 31 }, { 31, 0, 30 }, { 31, 0, 29 }, { 31, 0, 28 }, { 31, 0, 27 }, { 31, 0, 26 }, { 31, 0, 25 }, { 31, 0, 24 }, { 31, 0, 23 }, { 31, 0, 22 }, { 31, 0, 21 }, { 31, 0, 20 }, { 31, 0, 19 }, { 31, 0, 18 }, { 31, 0, 17 }, { 31, 0, 16 }, { 31, 0, 15 }, { 31, 0, 14 }, { 31, 0, 13 }, { 31, 0, 12 }, { 31, 0, 11 }, { 31, 0, 10 }, { 31, 0, 9 }, { 31, 0, 8 }, { 31, 0, 7 }, { 31, 0, 6 }, { 31, 0, 5 }, { 31, 0, 4 }, { 31, 0, 3 }, { 31, 0, 2 }, { 31, 0, 1 }, { 31, 0, 0 } };