fork download
  1. #include <iostream>
  2.  
  3. enum OUTPUT_MODES
  4. {
  5. OUTPUT_HEX,
  6. OUTPUT_BIN,
  7. OUTPUT_RGB565,
  8. };
  9.  
  10. uint8_t outputMode = OUTPUT_RGB565; // set this to one of the values of the enum above
  11.  
  12.  
  13.  
  14. // -----------------------------------------------------------------------------
  15.  
  16.  
  17.  
  18. class ArrayFormatter
  19. {
  20. public :
  21.  
  22. void start( const char * text, const size_t maxValuesPerLine = 10, const bool jumpLine = false )
  23. {
  24. if ( m_started )
  25. {
  26. return;
  27. }
  28.  
  29. m_started = true;
  30. m_maxValuesPerLine = maxValuesPerLine;
  31. m_counter = 0;
  32. m_jumpLine = jumpLine;
  33.  
  34. if ( sm_level == 0 )
  35. {
  36. printf( "%s =\n", text );
  37. }
  38. else
  39. {
  40. printf( "// %s\n", text );
  41.  
  42. for ( uint8_t i = 0; i < sm_level; i++ )
  43. {
  44. printf( "\t" );
  45. }
  46. }
  47.  
  48. printf( "{\n" );
  49.  
  50. sm_level++;
  51. }
  52.  
  53. void add( const char * value )
  54. {
  55. if ( add() )
  56. {
  57. printf( "%s", value );
  58. }
  59. }
  60.  
  61. bool add()
  62. {
  63. if ( !m_started )
  64. {
  65. return false;
  66. }
  67.  
  68. if ( m_counter == 0 )
  69. {
  70. for ( uint8_t i = 0; i < sm_level; i++ )
  71. {
  72. printf( "\t" );
  73. }
  74. }
  75. else
  76. {
  77. if ( m_counter < m_maxValuesPerLine )
  78. {
  79. printf( ", " );
  80. }
  81. else
  82. {
  83. m_counter = 0;
  84. printf( ",\n" );
  85.  
  86. if ( m_jumpLine )
  87. {
  88. printf( "\n" );
  89. }
  90.  
  91. for ( uint8_t i = 0; i < sm_level; i++ )
  92. {
  93. printf( "\t" );
  94. }
  95. }
  96. }
  97. m_counter++;
  98. return true;
  99. }
  100.  
  101. void end()
  102. {
  103. if ( !m_started )
  104. {
  105. return;
  106. }
  107.  
  108. m_started = false;
  109. m_counter = 0;
  110. sm_level--;
  111.  
  112. printf( "\n" );
  113.  
  114. if ( sm_level == 0 )
  115. {
  116. printf( "};\n" );
  117. }
  118. else
  119. {
  120. for ( uint8_t i = 0; i < sm_level; i++ )
  121. {
  122. printf( "\t" );
  123. }
  124. printf( "}" );
  125. }
  126. }
  127.  
  128. private :
  129. static uint8_t sm_level;
  130. bool m_started = false;
  131. size_t m_maxValuesPerLine = 10;
  132. size_t m_counter = 0;
  133. bool m_jumpLine = false;
  134. };
  135. uint8_t ArrayFormatter::sm_level = 0;
  136.  
  137. int main()
  138. {
  139. 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,
  140. 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,
  141. 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,
  142. 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,
  143. 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,
  144. 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
  145.  
  146. };
  147.  
  148. size_t ColVarSize = sizeof( ColVar ) / sizeof( ColVar[0] );
  149.  
  150. ArrayFormatter af;
  151.  
  152. char str[20];
  153.  
  154. switch ( outputMode )
  155. {
  156. case OUTPUT_HEX :
  157. {
  158. af.start( "const uint16_t ColVar[]", 8 );
  159.  
  160. for ( size_t i = 0; i < ColVarSize; i++ )
  161. {
  162. snprintf( str, sizeof(str), "0x%04X", (uint16_t)ColVar[i] );
  163. af.add( str );
  164. }
  165.  
  166. af.end();
  167. break;
  168. }
  169.  
  170. case OUTPUT_BIN :
  171. {
  172. af.start( "const uint16_t ColVar[]", 4 );
  173.  
  174. for ( size_t i = 0; i < ColVarSize; i++ )
  175. {
  176. uint8_t j = 0;
  177. str[j++] = '0';
  178. str[j++] = 'b';
  179. for ( int8_t k = 15; k >= 0; k-- )
  180. {
  181. str[j++] = '0' + ( ( ColVar[i] >> k ) & 1 );
  182. }
  183. str[j] = '\0';
  184. af.add( str );
  185. }
  186.  
  187. af.end();
  188. break;
  189. }
  190.  
  191. default :
  192. {
  193. af.start( "const rgb565_t ColVar[]", 4 );
  194.  
  195. for ( size_t i = 0; i < ColVarSize; i++ )
  196. {
  197. uint16_t color = ColVar[i];
  198. uint8_t r = color >> 11;
  199. uint8_t g = (color >> 5) & 0b111111;
  200. uint8_t b = color & 0b11111;
  201. snprintf( str, sizeof(str), "{ %2hhu, %2hhu, %2hhu }", r, g, b );
  202. af.add( str );
  203. }
  204.  
  205. af.end();
  206. break;
  207. }
  208. }
  209.  
  210. return 0;
  211. }
Success #stdin #stdout 0s 5348KB
stdin
Standard input is empty
stdout
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 }
};