main.c 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. #include "u8x8.h"
  2. #include "u8g2.h"
  3. extern uint8_t tga_is_transparent;
  4. extern uint8_t tga_desc_fg_r;
  5. extern uint8_t tga_desc_fg_g;
  6. extern uint8_t tga_desc_fg_b;
  7. extern uint8_t tga_desc_bg_r;
  8. extern uint8_t tga_desc_bg_g;
  9. extern uint8_t tga_desc_bg_b;
  10. extern uint8_t tga_lcd_fg_r;
  11. extern uint8_t tga_lcd_fg_g;
  12. extern uint8_t tga_lcd_fg_b;
  13. extern uint8_t tga_lcd_bg_r;
  14. extern uint8_t tga_lcd_bg_g;
  15. extern uint8_t tga_lcd_bg_b;
  16. extern void tga_save_png(const char *name);
  17. u8x8_t u8x8;
  18. u8g2_t desc;
  19. void ra(uint8_t tx, uint8_t ty, const char *s)
  20. {
  21. int x,y, i, w;
  22. x = tx*8*3+64*3 + 4;
  23. y = ty*8*3+32*3 + 4*3;
  24. for( i = 0; i < 6; i++)
  25. {
  26. u8g2_DrawHVLine(&desc, x-2*i, y-i, 1+2*i, 1);
  27. u8g2_DrawHVLine(&desc, x-2*i-1, y-i, 1+2*i, 1);
  28. }
  29. u8g2_DrawHVLine(&desc, x-30, y-1, 28, 0);
  30. u8g2_DrawHVLine(&desc, x-30, y, 20, 0);
  31. u8g2_DrawHVLine(&desc, x-30, y+1, 28, 0);
  32. w = u8g2_GetStrWidth(&desc, s);
  33. u8g2_DrawStr(&desc, x-34-w, y+u8g2_GetAscent(&desc)/2, s);
  34. }
  35. int main(void)
  36. {
  37. /*
  38. tga_desc_fg_r = 100;
  39. tga_desc_fg_g = 118;
  40. tga_desc_fg_b = 135;
  41. */
  42. tga_desc_fg_r = 106;
  43. tga_desc_fg_g = 0;
  44. tga_desc_fg_b = 255;
  45. tga_desc_bg_r = 255;
  46. tga_desc_bg_g = 255;
  47. tga_desc_bg_b = 255;
  48. tga_lcd_fg_r = 0;
  49. tga_lcd_fg_g = 0;
  50. tga_lcd_fg_b = 0;
  51. tga_lcd_bg_r = 240;
  52. tga_lcd_bg_g = 163;
  53. tga_lcd_bg_b = 10;
  54. /*
  55. u8x8_Setup_TGA_DESC(&desc);
  56. u8x8_InitDisplay(&desc);
  57. u8x8_SetPowerSave(&desc, 0);
  58. u8x8_ClearDisplay(&desc);
  59. u8x8_SetFont(&desc, u8x8_font_amstrad_cpc_extended_r);
  60. u8x8_DrawString(&desc, 0, 0, "Description");
  61. */
  62. u8g2_SetupBuffer_TGA_DESC(&desc, &u8g2_cb_r0);
  63. u8x8_InitDisplay(u8g2_GetU8x8(&desc));
  64. u8x8_SetPowerSave(u8g2_GetU8x8(&desc), 0);
  65. u8x8_ClearDisplay(u8g2_GetU8x8(&desc));
  66. u8x8_Setup_TGA_LCD(&u8x8);
  67. u8x8_InitDisplay(&u8x8);
  68. u8x8_ClearDisplay(&u8x8);
  69. u8x8_SetPowerSave(&u8x8, 0);
  70. u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_r);
  71. u8x8_DrawString(&u8x8, 0, 0, "Hello World!");
  72. tga_is_transparent = 1;
  73. u8g2_FirstPage(&desc);
  74. do
  75. {
  76. u8g2_SetFont(&desc, u8g2_font_helvB18_tf);
  77. ra(0,0, "x=0, y=0");
  78. } while( u8g2_NextPage(&desc) );
  79. tga_is_transparent = 0;
  80. //tga_save("u8x8.tga");
  81. tga_save_png("u8x8_hello_world.png");
  82. u8x8_ClearDisplay(u8g2_GetU8x8(&desc));
  83. u8x8_ClearDisplay(&u8x8);
  84. u8x8_SetPowerSave(&u8x8, 0);
  85. u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_r);
  86. u8x8_DrawString(&u8x8, 0, 0, "A");
  87. u8x8_DrawString(&u8x8, u8x8_GetCols(&u8x8)-1, u8x8_GetRows(&u8x8)-1, "B");
  88. tga_is_transparent = 1;
  89. u8g2_FirstPage(&desc);
  90. do
  91. {
  92. u8g2_SetFont(&desc, u8g2_font_helvB18_tf);
  93. ra(0,0, "x=0, y=0");
  94. ra(15,7, "x=15, y=7");
  95. } while( u8g2_NextPage(&desc) );
  96. tga_is_transparent = 0;
  97. tga_save_png("u8x8_tile_size.png");
  98. u8x8_ClearDisplay(u8g2_GetU8x8(&desc));
  99. u8x8_ClearDisplay(&u8x8);
  100. u8x8_SetPowerSave(&u8x8, 0);
  101. u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_r);
  102. u8x8_SetInverseFont(&u8x8, 1);
  103. u8x8_DrawString(&u8x8, 2, 2, "Inverse");
  104. u8x8_SetInverseFont(&u8x8, 0);
  105. u8x8_DrawString(&u8x8, 2, 3, "Normal");
  106. tga_is_transparent = 1;
  107. u8g2_FirstPage(&desc);
  108. do
  109. {
  110. u8g2_SetFont(&desc, u8g2_font_helvB18_tf);
  111. ra(2,2, "x=2, y=2");
  112. ra(2,3, "x=2, y=3");
  113. } while( u8g2_NextPage(&desc) );
  114. tga_is_transparent = 0;
  115. tga_save_png("u8x8_inverse.png");
  116. u8x8_ClearDisplay(u8g2_GetU8x8(&desc));
  117. u8x8_ClearDisplay(&u8x8);
  118. u8x8_SetPowerSave(&u8x8, 0);
  119. u8x8_SetInverseFont(&u8x8, 0);
  120. u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_f);
  121. u8x8_DrawString(&u8x8, 2, 2, "Umlaut \xe4\xf6\xfc");
  122. tga_is_transparent = 1;
  123. u8g2_FirstPage(&desc);
  124. do
  125. {
  126. u8g2_SetFont(&desc, u8g2_font_helvB18_tf);
  127. ra(2,2, "x=2, y=2");
  128. } while( u8g2_NextPage(&desc) );
  129. tga_is_transparent = 0;
  130. tga_save_png("u8x8_umlaut.png");
  131. u8x8_ClearDisplay(u8g2_GetU8x8(&desc));
  132. u8x8_ClearDisplay(&u8x8);
  133. u8x8_SetPowerSave(&u8x8, 0);
  134. u8x8_SetInverseFont(&u8x8, 0);
  135. u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_f);
  136. {
  137. uint8_t tiles[16] = { 0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0, 1, 3, 7, 15, 31, 63, 127, 255};
  138. u8x8_DrawTile(&u8x8, 1, 3, 2, tiles);
  139. tga_is_transparent = 1;
  140. u8g2_FirstPage(&desc);
  141. do
  142. {
  143. u8g2_SetFont(&desc, u8g2_font_helvB18_tf);
  144. ra(1,3, "x=1, y=3");
  145. } while( u8g2_NextPage(&desc) );
  146. tga_is_transparent = 0;
  147. }
  148. tga_save_png("u8x8_draw_tile.png");
  149. u8x8_ClearDisplay(u8g2_GetU8x8(&desc));
  150. u8x8_ClearDisplay(&u8x8);
  151. u8x8_SetPowerSave(&u8x8, 0);
  152. u8x8_SetInverseFont(&u8x8, 0);
  153. //u8x8_SetFont(&u8x8, u8x8_font_pressstart2p_f);
  154. u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_f);
  155. u8x8_DrawString(&u8x8, 1, 1, "U8x8");
  156. u8x8_Draw2x2String(&u8x8, 1, 3, "U8x8");
  157. tga_is_transparent = 1;
  158. u8g2_FirstPage(&desc);
  159. do
  160. {
  161. u8g2_SetFont(&desc, u8g2_font_helvB18_tf);
  162. ra(1,1, "x=1, y=1");
  163. ra(1,3, "x=1, y=3");
  164. } while( u8g2_NextPage(&desc) );
  165. tga_is_transparent = 0;
  166. tga_save_png("u8x8_2x2.png");
  167. /*=========================================*/
  168. u8x8_ClearDisplay(u8g2_GetU8x8(&desc));
  169. u8x8_ClearDisplay(&u8x8);
  170. u8x8_SetPowerSave(&u8x8, 0);
  171. u8x8_SetInverseFont(&u8x8, 0);
  172. //u8x8_SetFont(&u8x8, u8x8_font_pressstart2p_f);
  173. u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_f);
  174. u8x8_DrawString(&u8x8, 1, 1, "Hello World");
  175. u8x8_Draw1x2String(&u8x8, 1, 3, "Hello World");
  176. tga_is_transparent = 1;
  177. u8g2_FirstPage(&desc);
  178. do
  179. {
  180. u8g2_SetFont(&desc, u8g2_font_helvB18_tf);
  181. ra(1,1, "x=1, y=1");
  182. ra(1,3, "x=1, y=3");
  183. } while( u8g2_NextPage(&desc) );
  184. tga_is_transparent = 0;
  185. tga_save_png("u8x8_1x2.png");
  186. /*=========================================*/
  187. u8x8_ClearDisplay(u8g2_GetU8x8(&desc));
  188. u8x8_ClearDisplay(&u8x8);
  189. u8x8_SetPowerSave(&u8x8, 0);
  190. u8x8_SetInverseFont(&u8x8, 0);
  191. //u8x8_SetFont(&u8x8, u8x8_font_pressstart2p_f);
  192. u8x8_SetFont(&u8x8, u8x8_font_amstrad_cpc_extended_r);
  193. u8x8_Draw2x2String(&u8x8, 1, 1, "U8x8");
  194. u8x8_SetFont(&u8x8, u8x8_font_px437wyse700b_2x2_r);
  195. u8x8_DrawString(&u8x8, 1, 3, "U8x8");
  196. tga_is_transparent = 1;
  197. u8g2_FirstPage(&desc);
  198. do
  199. {
  200. u8g2_SetFont(&desc, u8g2_font_helvB18_tf);
  201. ra(1,1, "x=1, y=1");
  202. ra(1,3, "x=1, y=3");
  203. } while( u8g2_NextPage(&desc) );
  204. tga_is_transparent = 0;
  205. tga_save_png("u8x8_font_2x2.png");
  206. return 0;
  207. }