GUIDEMO_BarGraph.c 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. /*********************************************************************
  2. * SEGGER Microcontroller GmbH & Co. KG *
  3. * Solutions for real time microcontroller applications *
  4. **********************************************************************
  5. * *
  6. * (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
  7. * *
  8. * Internet: www.segger.com Support: support@segger.com *
  9. * *
  10. **********************************************************************
  11. ** emWin V5.32 - Graphical user interface for embedded applications **
  12. All Intellectual Property rights in the Software belongs to SEGGER.
  13. emWin is protected by international copyright laws. Knowledge of the
  14. source code may not be used to write a similar product. This file may
  15. only be used in accordance with the following terms:
  16. The software has been licensed to STMicroelectronics International
  17. N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
  18. les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
  19. purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
  20. troller products commercialized by Licensee only, sublicensed and dis_
  21. tributed under the terms and conditions of the End User License Agree_
  22. ment supplied by STMicroelectronics International N.V.
  23. Full source code is available at: www.segger.com
  24. We appreciate your understanding and fairness.
  25. ----------------------------------------------------------------------
  26. Licensing information
  27. Licensor: SEGGER Software GmbH
  28. Licensed to: STMicroelectronics International NV
  29. Licensed SEGGER software: emWin
  30. License number: GUI-00429
  31. License model: Buyout SRC [Buyout Source Code License, signed November 29th 2012]
  32. Licensed product: -
  33. Licensed platform: STMs ARM Cortex-M based 32 BIT CPUs
  34. Licensed number of seats: -
  35. ----------------------------------------------------------------------
  36. File : GUIDEMO_Bargraph.c
  37. Purpose : Shows a bargraph with alpha effect
  38. ----------------------------------------------------------------------
  39. */
  40. #include "GUI.h"
  41. #include "GUIDEMO.h"
  42. #if (SHOW_GUIDEMO_BARGRAPH && GUI_SUPPORT_MEMDEV)
  43. /*********************************************************************
  44. *
  45. * Defines
  46. *
  47. **********************************************************************
  48. */
  49. #define GRAPH_WIDTH 172
  50. #define GRAPH_HEIGHT 122
  51. #define SHOW_TIME 15000
  52. #define TIME_STEP 31
  53. /*********************************************************************
  54. *
  55. * Static data
  56. *
  57. **********************************************************************
  58. */
  59. /*********************************************************************
  60. *
  61. * Antialiased digit font for labeling
  62. */
  63. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0030[ 36] = { /* code 0030, DIGIT ZERO */
  64. 0x07, 0xEF, 0x91, 0x00,
  65. 0x4F, 0xCA, 0xF7, 0x00,
  66. 0x8F, 0x20, 0xDC, 0x00,
  67. 0xBF, 0x00, 0xBF, 0x00,
  68. 0xBF, 0x00, 0xBF, 0x00,
  69. 0xBF, 0x00, 0xBF, 0x00,
  70. 0x7F, 0x41, 0xEB, 0x00,
  71. 0x2F, 0xED, 0xF6, 0x00,
  72. 0x04, 0xAB, 0x60, 0x00
  73. };
  74. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0031[ 27] = { /* code 0031, DIGIT ONE */
  75. 0x00, 0xAF, 0x00,
  76. 0x19, 0xFF, 0x00,
  77. 0xEE, 0xDF, 0x00,
  78. 0x82, 0xBF, 0x00,
  79. 0x00, 0xBF, 0x00,
  80. 0x00, 0xBF, 0x00,
  81. 0x00, 0xBF, 0x00,
  82. 0x00, 0xBF, 0x00,
  83. 0x00, 0x8B, 0x00
  84. };
  85. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0032[ 36] = { /* code 0032, DIGIT TWO */
  86. 0x06, 0xEF, 0xC3, 0x00,
  87. 0x3F, 0xC8, 0xFD, 0x00,
  88. 0x5B, 0x30, 0xBF, 0x00,
  89. 0x00, 0x01, 0xEB, 0x00,
  90. 0x00, 0x1C, 0xE3, 0x00,
  91. 0x01, 0xCE, 0x30, 0x00,
  92. 0x0B, 0xE3, 0x00, 0x00,
  93. 0x6F, 0xFF, 0xFF, 0x00,
  94. 0x8B, 0xBB, 0xBB, 0x00
  95. };
  96. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0033[ 36] = { /* code 0033, DIGIT THREE */
  97. 0x3B, 0xFD, 0x30, 0x00,
  98. 0xAF, 0x8E, 0xD0, 0x00,
  99. 0x46, 0x0C, 0xE0, 0x00,
  100. 0x00, 0xBE, 0x50, 0x00,
  101. 0x00, 0x7C, 0xC1, 0x00,
  102. 0x00, 0x05, 0xF7, 0x00,
  103. 0xB9, 0x06, 0xF7, 0x00,
  104. 0xAF, 0xCF, 0xE1, 0x00,
  105. 0x18, 0xB9, 0x20, 0x00
  106. };
  107. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0034[ 36] = { /* code 0034, DIGIT FOUR */
  108. 0x00, 0x0C, 0xF0, 0x00,
  109. 0x00, 0x7F, 0xF0, 0x00,
  110. 0x04, 0xFE, 0xF0, 0x00,
  111. 0x1D, 0x8B, 0xF0, 0x00,
  112. 0x8D, 0x1B, 0xF0, 0x00,
  113. 0xBA, 0x7D, 0xF7, 0x00,
  114. 0xBF, 0xFF, 0xFF, 0x00,
  115. 0x00, 0x0B, 0xF0, 0x00,
  116. 0x00, 0x08, 0xB0, 0x00
  117. };
  118. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0035[ 36] = { /* code 0035, DIGIT FIVE */
  119. 0x05, 0xFF, 0xFB, 0x00,
  120. 0x07, 0xFC, 0xB8, 0x00,
  121. 0x0B, 0xF0, 0x00, 0x00,
  122. 0x0E, 0xFE, 0xD5, 0x00,
  123. 0x2F, 0xD7, 0xEE, 0x10,
  124. 0x02, 0x10, 0x7F, 0x40,
  125. 0x5F, 0x60, 0x9F, 0x30,
  126. 0x2E, 0xFB, 0xFB, 0x00,
  127. 0x03, 0x9B, 0x71, 0x00
  128. };
  129. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0036[ 36] = { /* code 0036, DIGIT SIX */
  130. 0x05, 0xDF, 0xB1, 0x00,
  131. 0x2F, 0xCA, 0xF7, 0x00,
  132. 0x8F, 0x10, 0x74, 0x00,
  133. 0xBE, 0x7B, 0x70, 0x00,
  134. 0xBF, 0xDC, 0xF8, 0x00,
  135. 0xBF, 0x10, 0xCF, 0x00,
  136. 0x7F, 0x20, 0xCF, 0x00,
  137. 0x2E, 0xEC, 0xF8, 0x00,
  138. 0x03, 0xAB, 0x70, 0x00
  139. };
  140. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0037[ 36] = { /* code 0037, DIGIT SEVEN */
  141. 0xBF, 0xFF, 0xFB, 0x00,
  142. 0x8B, 0xBC, 0xF8, 0x00,
  143. 0x00, 0x0C, 0xB0, 0x00,
  144. 0x00, 0x7F, 0x20, 0x00,
  145. 0x00, 0xE9, 0x00, 0x00,
  146. 0x06, 0xF5, 0x00, 0x00,
  147. 0x0A, 0xF1, 0x00, 0x00,
  148. 0x0D, 0xC0, 0x00, 0x00,
  149. 0x0B, 0x80, 0x00, 0x00
  150. };
  151. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0038[ 36] = { /* code 0038, DIGIT EIGHT */
  152. 0x08, 0xEF, 0xA1, 0x00,
  153. 0x6F, 0x97, 0xF9, 0x00,
  154. 0x7F, 0x40, 0xFB, 0x00,
  155. 0x2D, 0xCA, 0xE5, 0x00,
  156. 0x1B, 0xDC, 0xD3, 0x00,
  157. 0x9F, 0x20, 0xDD, 0x00,
  158. 0xBF, 0x10, 0xCF, 0x00,
  159. 0x5F, 0xB8, 0xF9, 0x00,
  160. 0x05, 0xAB, 0x70, 0x00
  161. };
  162. GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0039[ 36] = { /* code 0039, DIGIT NINE */
  163. 0x08, 0xFF, 0x80, 0x00,
  164. 0x7F, 0xA9, 0xF7, 0x00,
  165. 0xBF, 0x00, 0xCC, 0x00,
  166. 0xAF, 0x31, 0xDF, 0x00,
  167. 0x3E, 0xFF, 0xEF, 0x00,
  168. 0x02, 0x76, 0xBF, 0x00,
  169. 0x4B, 0x40, 0xDA, 0x00,
  170. 0x3F, 0xED, 0xF5, 0x00,
  171. 0x05, 0xBA, 0x40, 0x00
  172. };
  173. GUI_CONST_STORAGE GUI_CHARINFO GUI_FontD9_AA4_CharInfo[10] = {
  174. { 7, 7, 4, acGUI_FontD9_AA4_0030 } /* code 0030 */
  175. ,{ 5, 5, 3, acGUI_FontD9_AA4_0031 } /* code 0031 */
  176. ,{ 7, 7, 4, acGUI_FontD9_AA4_0032 } /* code 0032 */
  177. ,{ 7, 7, 4, acGUI_FontD9_AA4_0033 } /* code 0033 */
  178. ,{ 7, 7, 4, acGUI_FontD9_AA4_0034 } /* code 0034 */
  179. ,{ 7, 7, 4, acGUI_FontD9_AA4_0035 } /* code 0035 */
  180. ,{ 7, 7, 4, acGUI_FontD9_AA4_0036 } /* code 0036 */
  181. ,{ 7, 7, 4, acGUI_FontD9_AA4_0037 } /* code 0037 */
  182. ,{ 7, 7, 4, acGUI_FontD9_AA4_0038 } /* code 0038 */
  183. ,{ 7, 7, 4, acGUI_FontD9_AA4_0039 } /* code 0039 */
  184. };
  185. GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontD9_AA4_Prop1 = {
  186. 0x0030 /* first character */
  187. ,0x0039 /* last character */
  188. ,&GUI_FontD9_AA4_CharInfo[ 0] /* address of first character */
  189. ,(GUI_CONST_STORAGE GUI_FONT_PROP *)0 /* pointer to next GUI_FONT_PROP */
  190. };
  191. GUI_CONST_STORAGE GUI_FONT GUI_FontD9_AA4 = {
  192. GUI_FONTTYPE_PROP_AA4 /* type of font */
  193. ,9 /* height of font */
  194. ,9 /* space of font y */
  195. ,1 /* magnification x */
  196. ,1 /* magnification y */
  197. ,{&GUI_FontD9_AA4_Prop1}
  198. ,0 /* Baseline */
  199. ,0 /* Height of lowercase characters */
  200. ,0 /* Height of capital characters */
  201. };
  202. /*********************************************************************
  203. *
  204. * Alpha bitmap for the orange dot at the left of the diagramm
  205. */
  206. static GUI_CONST_STORAGE unsigned long _acCircleOrange_14x14[] = {
  207. #if (GUI_USE_ARGB)
  208. 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF, 0x05F39400, 0x79F39400, 0x86F39400, 0xEBF39400, 0xEBF39400, 0x86F39400, 0x79F39400, 0x05F39400, 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF,
  209. 0x00FFFFFF, 0x00FFFFFF, 0x46F39400, 0xBAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xBAF39400, 0x46F39400, 0x00FFFFFF, 0x00FFFFFF,
  210. 0x00FFFFFF, 0x03F39400, 0xFAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFAF39400, 0x03F39400, 0x00FFFFFF,
  211. 0x0EF39400, 0xC1F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xC1F39400, 0x0EF39400,
  212. 0x78F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x78F39400,
  213. 0x89F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x89F39400,
  214. 0xEBF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xEBF39400,
  215. 0xEBF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xEBF39400,
  216. 0x89F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x89F39400,
  217. 0x78F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x78F39400,
  218. 0x0EF39400, 0xC1F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xC1F39400, 0x0EF39400,
  219. 0x00FFFFFF, 0x03F39400, 0xFAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFAF39400, 0x03F39400, 0x00FFFFFF,
  220. 0x00FFFFFF, 0x00FFFFFF, 0x46F39400, 0xBAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xBAF39400, 0x46F39400, 0x00FFFFFF, 0x00FFFFFF,
  221. 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF, 0x05F39400, 0x79F39400, 0x86F39400, 0xEBF39400, 0xEBF39400, 0x86F39400, 0x79F39400, 0x05F39400, 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF,
  222. #else
  223. 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFA0094F3, 0x860094F3, 0x790094F3, 0x140094F3, 0x140094F3, 0x790094F3, 0x860094F3, 0xFA0094F3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
  224. 0xFFFFFFFF, 0xFFFFFFFF, 0xB90094F3, 0x450094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x450094F3, 0xB90094F3, 0xFFFFFFFF, 0xFFFFFFFF,
  225. 0xFFFFFFFF, 0xC10094F3, 0x050094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x050094F3, 0xC10094F3, 0xFFFFFFFF,
  226. 0xF10094F3, 0x3E0094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x3E0094F3, 0xF10094F3,
  227. 0x870094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x870094F3,
  228. 0x760094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x760094F3,
  229. 0x140094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x140094F3,
  230. 0x140094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x140094F3,
  231. 0x760094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x760094F3,
  232. 0x870094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x870094F3,
  233. 0xF10094F3, 0x3E0094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x3E0094F3, 0xF10094F3,
  234. 0xFFFFFFFF, 0xC10094F3, 0x050094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x050094F3, 0xC10094F3, 0xFFFFFFFF,
  235. 0xFFFFFFFF, 0xFFFFFFFF, 0xB90094F3, 0x450094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x450094F3, 0xB90094F3, 0xFFFFFFFF, 0xFFFFFFFF,
  236. 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFA0094F3, 0x860094F3, 0x790094F3, 0x140094F3, 0x140094F3, 0x790094F3, 0x860094F3, 0xFA0094F3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
  237. #endif
  238. };
  239. static GUI_CONST_STORAGE GUI_BITMAP _bmCircleOrange_14x14 = {
  240. 14, // XSize
  241. 14, // YSize
  242. 56, // BytesPerLine
  243. 32, // BitsPerPixel
  244. (unsigned char *)_acCircleOrange_14x14, // Pointer to picture data
  245. NULL // Pointer to palette
  246. #if (GUI_USE_ARGB)
  247. ,GUI_DRAW_BMPM8888I
  248. #else
  249. ,GUI_DRAW_BMP8888
  250. #endif
  251. };
  252. /*********************************************************************
  253. *
  254. * Bitmaps for drawing the bars
  255. */
  256. static GUI_CONST_STORAGE GUI_COLOR ColorsBarOrange_12x1[] = {
  257. #if (GUI_USE_ARGB)
  258. 0xFFE26822,0xFFEC8537,0xFFEF9F50,0xFFF1974B,
  259. 0xFFF3B163,0xFFF3B569,0xFFF5B971,0xFFF7BD7B,
  260. 0xFFF8C486,0xFFFAC88D,0xFFFCDEBA,0xFFFEE9D5,
  261. #else
  262. 0x2268E2,0x3785EC,0x509FEF,0x4B97F1,
  263. 0x63B1F3,0x69B5F3,0x71B9F5,0x7BBDF7,
  264. 0x86C4F8,0x8DC8FA,0xBADEFC,0xD5E9FE,
  265. #endif
  266. };
  267. static GUI_CONST_STORAGE GUI_COLOR ColorsBarBluegreen_12x1[] = {
  268. #if (GUI_USE_ARGB)
  269. 0xFF2D6E74,0xFF3E8F91,0xFF419095,0xFF479197,
  270. 0xFF50969B,0xFF5E9CA1,0xFF6DA5A9,0xFF82B1B2,
  271. 0xFF98BEBF,0xFF9AC2C3,0xFFB3CFCF,0xFFD4E3E1,
  272. #else
  273. 0x746E2D,0x918F3E,0x959041,0x979147,
  274. 0x9B9650,0xA19C5E,0xA9A56D,0xB2B182,
  275. 0xBFBE98,0xC3C29A,0xCFCFB3,0xE1E3D4,
  276. #endif
  277. };
  278. static GUI_CONST_STORAGE GUI_COLOR ColorsBarBlue_12x1[] = {
  279. #if (GUI_USE_ARGB)
  280. 0xFF005182,0xFF2C94C3,0xFF3F95CE,0xFF4A96CD,
  281. 0xFF569BCF,0xFF65A4D4,0xFF76ADDA,0xFF86B9E0,
  282. 0xFF96C4E4,0xFFA7D1EB,0xFFA8D1EA,0xFFBFE1F4,
  283. #else
  284. 0x825100,0xC3942C,0xCE953F,0xCD964A,
  285. 0xCF9B56,0xD4A465,0xDAAD76,0xE0B986,
  286. 0xE4C496,0xEBD1A7,0xEAD1A8,0xF4E1BF,
  287. #endif
  288. };
  289. static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarOrange_12x1 = {
  290. 12, /* number of entries */
  291. 0, /* No transparency */
  292. &ColorsBarOrange_12x1[0]
  293. };
  294. static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarBluegreen_12x1 = {
  295. 12, /* number of entries */
  296. 0, /* No transparency */
  297. &ColorsBarBluegreen_12x1[0]
  298. };
  299. static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarBlue_12x1 = {
  300. 12, /* number of entries */
  301. 0, /* No transparency */
  302. &ColorsBarBlue_12x1[0]
  303. };
  304. static GUI_CONST_STORAGE unsigned char _acBarOrange_12x1[] = {
  305. 0x3B, 0xA9, 0x87, 0x65, 0x42, 0x10
  306. };
  307. static GUI_CONST_STORAGE unsigned char _acBarBluegreen_12x1[] = {
  308. 0x09, 0xBA, 0x87, 0x65, 0x43, 0x21
  309. };
  310. static GUI_CONST_STORAGE unsigned char _acBarBlue_12x1[] = {
  311. 0x01, 0xAB, 0x98, 0x76, 0x54, 0x32
  312. };
  313. static GUI_CONST_STORAGE GUI_BITMAP _bmBarOrange_12x1 = {
  314. 12, /* XSize */
  315. 1, /* YSize */
  316. 6, /* BytesPerLine */
  317. 4, /* BitsPerPixel */
  318. _acBarOrange_12x1, /* Pointer to picture data (indices) */
  319. &PalBarOrange_12x1 /* Pointer to palette */
  320. };
  321. static GUI_CONST_STORAGE GUI_BITMAP _bmBarBluegreen_12x1 = {
  322. 12, /* XSize */
  323. 1, /* YSize */
  324. 6, /* BytesPerLine */
  325. 4, /* BitsPerPixel */
  326. _acBarBluegreen_12x1, /* Pointer to picture data (indices) */
  327. &PalBarBluegreen_12x1 /* Pointer to palette */
  328. };
  329. static GUI_CONST_STORAGE GUI_BITMAP _bmBarBlue_12x1 = {
  330. 12, /* XSize */
  331. 1, /* YSize */
  332. 6, /* BytesPerLine */
  333. 4, /* BitsPerPixel */
  334. _acBarBlue_12x1, /* Pointer to picture data (indices) */
  335. &PalBarBlue_12x1 /* Pointer to palette */
  336. };
  337. static GUI_CONST_STORAGE GUI_BITMAP * _apBmBar[] = {
  338. &_bmBarBlue_12x1,
  339. &_bmBarBluegreen_12x1,
  340. &_bmBarOrange_12x1
  341. };
  342. /*********************************************************************
  343. *
  344. * Static code
  345. *
  346. **********************************************************************
  347. */
  348. /*********************************************************************
  349. *
  350. * _DrawLabel
  351. */
  352. static void _DrawLabel(GUI_MEMDEV_Handle hMem, int xPos, int yPos) {
  353. GUI_MEMDEV_Handle hMemOld;
  354. int FontSizeY;
  355. int x0;
  356. int y0;
  357. int i;
  358. hMemOld = GUI_MEMDEV_Select(hMem);
  359. GUI_SetFont(&GUI_FontD9_AA4);
  360. GUI_SetTextMode(GUI_TM_TRANS);
  361. FontSizeY = GUI_GetFontSizeY();
  362. for (i = 0; i < 5; i++) {
  363. x0 = xPos - 7;
  364. y0 = yPos + 96 - i * 20 - 7;
  365. GUI_DrawBitmap(&_bmCircleOrange_14x14, x0, y0);
  366. GUI_GotoXY(x0 + 7, y0 + 7 - FontSizeY / 2);
  367. GUI_SetTextAlign(GUI_TA_HCENTER);
  368. GUI_SetColor(GUI_BLACK);
  369. GUI_DispDecMin((i + 1) * 2);
  370. }
  371. GUI_MEMDEV_Select(hMemOld);
  372. }
  373. /*********************************************************************
  374. *
  375. * _DrawDiagramAt
  376. */
  377. static void _DrawDiagramAt(GUI_MEMDEV_Handle hMem, int xPos, int yPos, int * py, int xBlend) {
  378. GUI_MEMDEV_Handle hMemOld;
  379. GUI_RECT Rect;
  380. int IndexBmBar;
  381. int ySizeBar;
  382. int i;
  383. hMemOld = GUI_MEMDEV_Select(hMem);
  384. //
  385. // Draw blue background
  386. //
  387. GUI_SetColor(GUI_MAKE_COLOR(0x4a2210));
  388. GUI_FillRoundedRect(xPos, yPos, xPos + GRAPH_WIDTH, yPos + GRAPH_HEIGHT, 4);
  389. //
  390. // Draw grid lines
  391. //
  392. GUI_SetColor(GUI_MAKE_COLOR(0x774830));
  393. for (i = 0; i < 12; i++) {
  394. GUI_DrawHLine(yPos + 6 + i * 10, xPos + 2, xPos + GRAPH_WIDTH - 2);
  395. }
  396. //
  397. // Draw bars
  398. //
  399. for (i = 0; i < 10; i++) {
  400. IndexBmBar = (i < 6) ? i / 2 : 4 - (i / 2);
  401. ySizeBar = *(py + i);
  402. GUI_DrawBitmapMag(_apBmBar[IndexBmBar], xPos + 8 + i * 16, yPos + GRAPH_HEIGHT - ySizeBar - 6, 1, ySizeBar);
  403. }
  404. //
  405. // Draw alpha effect
  406. //
  407. Rect.x0 = xPos;
  408. Rect.x1 = xPos + 3;
  409. Rect.y0 = yPos;
  410. Rect.y1 = yPos + GRAPH_HEIGHT;
  411. GUI_SetClipRect(&Rect);
  412. GUI_SetColor(GUI_MAKE_COLOR(0xd99100));
  413. GUI_SetAlpha(GUI_MAKE_TRANS(168));
  414. GUI_FillRoundedRect(xPos, yPos, xPos + GRAPH_WIDTH, yPos + GRAPH_HEIGHT, 4);
  415. GUI_SetClipRect(NULL);
  416. GUI_FillRect(xPos + 4, yPos + 1, xPos + xBlend, yPos + GRAPH_HEIGHT - 1);
  417. GUI_SetAlpha(GUI_MAKE_TRANS(0));
  418. //
  419. // Draw orange frame
  420. //
  421. GUI_SetColor(GUI_MAKE_COLOR(0x0094f3));
  422. GUI_DrawRoundedRect(xPos, yPos, xPos + GRAPH_WIDTH, yPos + GRAPH_HEIGHT, 4);
  423. //
  424. // Label
  425. //
  426. _DrawLabel(hMem, xPos, yPos);
  427. GUI_MEMDEV_CopyToLCD(hMem);
  428. GUI_MEMDEV_Select(hMemOld);
  429. }
  430. /*********************************************************************
  431. *
  432. * _DemoBarGraph
  433. */
  434. static void _DemoBarGraph(void) {
  435. GUI_MEMDEV_Handle hMem;
  436. int ayOrg[] = { 10, 20, 40, 50, 90, 100, 80, 30, 20, 10 };
  437. int ayCur[] = { 10, 20, 40, 50, 90, 100, 80, 30, 20, 10 };
  438. int aAdd[GUI_COUNTOF(ayOrg)];
  439. int NextState;
  440. int TimeStart;
  441. int xPosGraph;
  442. int yPosGraph;
  443. int AddBlend;
  444. int NumItems;
  445. int TimeDiff;
  446. int TimeStep;
  447. int Blend;
  448. int xSize;
  449. int ySize;
  450. int i;
  451. //
  452. // Initialize values;
  453. //
  454. AddBlend = 1;
  455. Blend = 64;
  456. NumItems = GUI_COUNTOF(ayOrg);
  457. xSize = LCD_GetXSize();
  458. ySize = LCD_GetYSize();
  459. xPosGraph = (xSize - GRAPH_WIDTH) / 2;
  460. yPosGraph = (ySize - GRAPH_HEIGHT) / 2;
  461. //
  462. // Create MEMDEV
  463. //
  464. hMem = GUI_MEMDEV_Create(xPosGraph, yPosGraph, GRAPH_WIDTH + 7 + 1, GRAPH_HEIGHT + 1);
  465. if (hMem == 0) {
  466. return;
  467. }
  468. GUI_MEMDEV_CopyFromLCD(hMem);
  469. for (i = 0; i < NumItems; i++) {
  470. aAdd[i] = (i & 1) * 2 - 1;
  471. }
  472. _DrawLabel(0, xPosGraph, yPosGraph);
  473. TimeStart = GUIDEMO_GetTime();
  474. do {
  475. TimeDiff = GUIDEMO_GetTime() - TimeStart;
  476. _DrawDiagramAt(hMem, xPosGraph, yPosGraph, ayCur, Blend);
  477. Blend += AddBlend;
  478. if ((Blend >= 164) || (Blend <= 8)) {
  479. AddBlend = -AddBlend;
  480. }
  481. for (i = 0; i < NumItems; i++) {
  482. *(ayCur + i) += *(aAdd + i);
  483. if ((*(ayCur + i) > (*(ayOrg + i) + 10)) || (*(ayCur + i) < (*(ayOrg + i) - 10))) {
  484. *(aAdd + i) = -*(aAdd + i);
  485. }
  486. }
  487. TimeStep = GUIDEMO_GetTime() - TimeStart;
  488. if ((TimeStep - TimeDiff) < TIME_STEP) {
  489. GUI_Delay(TIME_STEP - (TimeStep - TimeDiff));
  490. } else {
  491. GUI_Exec();
  492. }
  493. NextState = GUIDEMO_CheckCancel();
  494. } while ((TimeDiff < SHOW_TIME) && (NextState == 0));
  495. GUI_MEMDEV_Delete(hMem);
  496. }
  497. /*********************************************************************
  498. *
  499. * Public code
  500. *
  501. **********************************************************************
  502. */
  503. /*********************************************************************
  504. *
  505. * GUIDEMO_BarGraph
  506. */
  507. void GUIDEMO_BarGraph(void) {
  508. GUIDEMO_ConfigureDemo("Bar Graph", "Animated bar graph\nusing Alpha Blending.", GUIDEMO_SHOW_CURSOR | GUIDEMO_SHOW_CONTROL);
  509. GUIDEMO_DrawBk();
  510. GUIDEMO_DispTitle("Bargraph demo");
  511. _DemoBarGraph();
  512. }
  513. #else
  514. void GUIDEMO_BarGraph_C(void);
  515. void GUIDEMO_BarGraph_C(void) {}
  516. #endif // SHOW_GUIDEMO_BARGRAPH && GUI_SUPPORT_MEMDEV
  517. /*************************** End of file ****************************/