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.
ALPHA_Bargraph.c
00001 /********************************************************************* 00002 * SEGGER Microcontroller GmbH * 00003 * Solutions for real time microcontroller applications * 00004 ********************************************************************** 00005 * * 00006 * (c) 1996 - 2018 SEGGER Microcontroller GmbH * 00007 * * 00008 * Internet: www.segger.com Support: support@segger.com * 00009 * * 00010 ********************************************************************** 00011 00012 ** emWin V5.48 - Graphical user interface for embedded applications ** 00013 All Intellectual Property rights in the Software belongs to SEGGER. 00014 emWin is protected by international copyright laws. Knowledge of the 00015 source code may not be used to write a similar product. This file may 00016 only be used in accordance with the following terms: 00017 00018 The software has been licensed to Cypress Semiconductor Corporation, 00019 whose registered office is situated at 198 Champion Ct. San Jose, CA 00020 95134 USA solely for the purposes of creating libraries for Cypress 00021 PSoC3 and PSoC5 processor-based devices, sublicensed and distributed 00022 under the terms and conditions of the Cypress End User License 00023 Agreement. 00024 Full source code is available at: www.segger.com 00025 00026 We appreciate your understanding and fairness. 00027 ---------------------------------------------------------------------- 00028 Licensing information 00029 Licensor: SEGGER Microcontroller Systems LLC 00030 Licensed to: Cypress Semiconductor Corp, 198 Champion Ct., San Jose, CA 95134, USA 00031 Licensed SEGGER software: emWin 00032 License number: GUI-00319 00033 License model: Services and License Agreement, signed June 10th, 2009 00034 Licensed platform: Any Cypress platform (Initial targets are: PSoC3, PSoC5) 00035 ---------------------------------------------------------------------- 00036 Support and Update Agreement (SUA) 00037 SUA period: 2009-06-12 - 2022-07-27 00038 Contact to extend SUA: sales@segger.com 00039 ---------------------------------------------------------------------- 00040 File : ALPHA_Bargraph.c 00041 Purpose : Shows a bargraph with alpha effect 00042 Requirements: WindowManager - ( ) 00043 MemoryDevices - (x) 00044 AntiAliasing - ( ) 00045 VNC-Server - ( ) 00046 PNG-Library - ( ) 00047 TrueTypeFonts - ( ) 00048 ---------------------------------------------------------------------- 00049 */ 00050 00051 #include <math.h> 00052 #include <stddef.h> 00053 #include "GUI.h" 00054 00055 /********************************************************************* 00056 * 00057 * Defines 00058 * 00059 ********************************************************************** 00060 */ 00061 // 00062 // Recommended memory to run the sample with adequate performance 00063 // 00064 #define RECOMMENDED_MEMORY (1024L * 100) 00065 00066 /********************************************************************* 00067 * 00068 * Static data 00069 * 00070 ********************************************************************** 00071 */ 00072 /********************************************************************* 00073 * 00074 * Antialiased digit font for labeling 00075 */ 00076 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0030[ 36] = { // Code 0030, DIGIT ZERO 00077 0x07, 0xEF, 0x91, 0x00, 00078 0x4F, 0xCA, 0xF7, 0x00, 00079 0x8F, 0x20, 0xDC, 0x00, 00080 0xBF, 0x00, 0xBF, 0x00, 00081 0xBF, 0x00, 0xBF, 0x00, 00082 0xBF, 0x00, 0xBF, 0x00, 00083 0x7F, 0x41, 0xEB, 0x00, 00084 0x2F, 0xED, 0xF6, 0x00, 00085 0x04, 0xAB, 0x60, 0x00 00086 }; 00087 00088 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0031[ 27] = { // Code 0031, DIGIT ONE 00089 0x00, 0xAF, 0x00, 00090 0x19, 0xFF, 0x00, 00091 0xEE, 0xDF, 0x00, 00092 0x82, 0xBF, 0x00, 00093 0x00, 0xBF, 0x00, 00094 0x00, 0xBF, 0x00, 00095 0x00, 0xBF, 0x00, 00096 0x00, 0xBF, 0x00, 00097 0x00, 0x8B, 0x00 00098 }; 00099 00100 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0032[ 36] = { // Code 0032, DIGIT TWO 00101 0x06, 0xEF, 0xC3, 0x00, 00102 0x3F, 0xC8, 0xFD, 0x00, 00103 0x5B, 0x30, 0xBF, 0x00, 00104 0x00, 0x01, 0xEB, 0x00, 00105 0x00, 0x1C, 0xE3, 0x00, 00106 0x01, 0xCE, 0x30, 0x00, 00107 0x0B, 0xE3, 0x00, 0x00, 00108 0x6F, 0xFF, 0xFF, 0x00, 00109 0x8B, 0xBB, 0xBB, 0x00 00110 }; 00111 00112 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0033[ 36] = { // Code 0033, DIGIT THREE 00113 0x3B, 0xFD, 0x30, 0x00, 00114 0xAF, 0x8E, 0xD0, 0x00, 00115 0x46, 0x0C, 0xE0, 0x00, 00116 0x00, 0xBE, 0x50, 0x00, 00117 0x00, 0x7C, 0xC1, 0x00, 00118 0x00, 0x05, 0xF7, 0x00, 00119 0xB9, 0x06, 0xF7, 0x00, 00120 0xAF, 0xCF, 0xE1, 0x00, 00121 0x18, 0xB9, 0x20, 0x00 00122 }; 00123 00124 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0034[ 36] = { // Code 0034, DIGIT FOUR 00125 0x00, 0x0C, 0xF0, 0x00, 00126 0x00, 0x7F, 0xF0, 0x00, 00127 0x04, 0xFE, 0xF0, 0x00, 00128 0x1D, 0x8B, 0xF0, 0x00, 00129 0x8D, 0x1B, 0xF0, 0x00, 00130 0xBA, 0x7D, 0xF7, 0x00, 00131 0xBF, 0xFF, 0xFF, 0x00, 00132 0x00, 0x0B, 0xF0, 0x00, 00133 0x00, 0x08, 0xB0, 0x00 00134 }; 00135 00136 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0035[ 36] = { // Code 0035, DIGIT FIVE 00137 0x05, 0xFF, 0xFB, 0x00, 00138 0x07, 0xFC, 0xB8, 0x00, 00139 0x0B, 0xF0, 0x00, 0x00, 00140 0x0E, 0xFE, 0xD5, 0x00, 00141 0x2F, 0xD7, 0xEE, 0x10, 00142 0x02, 0x10, 0x7F, 0x40, 00143 0x5F, 0x60, 0x9F, 0x30, 00144 0x2E, 0xFB, 0xFB, 0x00, 00145 0x03, 0x9B, 0x71, 0x00 00146 }; 00147 00148 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0036[ 36] = { // Code 0036, DIGIT SIX 00149 0x05, 0xDF, 0xB1, 0x00, 00150 0x2F, 0xCA, 0xF7, 0x00, 00151 0x8F, 0x10, 0x74, 0x00, 00152 0xBE, 0x7B, 0x70, 0x00, 00153 0xBF, 0xDC, 0xF8, 0x00, 00154 0xBF, 0x10, 0xCF, 0x00, 00155 0x7F, 0x20, 0xCF, 0x00, 00156 0x2E, 0xEC, 0xF8, 0x00, 00157 0x03, 0xAB, 0x70, 0x00 00158 }; 00159 00160 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0037[ 36] = { // Code 0037, DIGIT SEVEN 00161 0xBF, 0xFF, 0xFB, 0x00, 00162 0x8B, 0xBC, 0xF8, 0x00, 00163 0x00, 0x0C, 0xB0, 0x00, 00164 0x00, 0x7F, 0x20, 0x00, 00165 0x00, 0xE9, 0x00, 0x00, 00166 0x06, 0xF5, 0x00, 0x00, 00167 0x0A, 0xF1, 0x00, 0x00, 00168 0x0D, 0xC0, 0x00, 0x00, 00169 0x0B, 0x80, 0x00, 0x00 00170 }; 00171 00172 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0038[ 36] = { // Code 0038, DIGIT EIGHT 00173 0x08, 0xEF, 0xA1, 0x00, 00174 0x6F, 0x97, 0xF9, 0x00, 00175 0x7F, 0x40, 0xFB, 0x00, 00176 0x2D, 0xCA, 0xE5, 0x00, 00177 0x1B, 0xDC, 0xD3, 0x00, 00178 0x9F, 0x20, 0xDD, 0x00, 00179 0xBF, 0x10, 0xCF, 0x00, 00180 0x5F, 0xB8, 0xF9, 0x00, 00181 0x05, 0xAB, 0x70, 0x00 00182 }; 00183 00184 GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0039[ 36] = { // Code 0039, DIGIT NINE 00185 0x08, 0xFF, 0x80, 0x00, 00186 0x7F, 0xA9, 0xF7, 0x00, 00187 0xBF, 0x00, 0xCC, 0x00, 00188 0xAF, 0x31, 0xDF, 0x00, 00189 0x3E, 0xFF, 0xEF, 0x00, 00190 0x02, 0x76, 0xBF, 0x00, 00191 0x4B, 0x40, 0xDA, 0x00, 00192 0x3F, 0xED, 0xF5, 0x00, 00193 0x05, 0xBA, 0x40, 0x00 00194 }; 00195 00196 GUI_CONST_STORAGE GUI_CHARINFO GUI_FontD9_AA4_CharInfo[10] = { 00197 { 7, 7, 4, acGUI_FontD9_AA4_0030 } // Code 0030 00198 ,{ 5, 5, 3, acGUI_FontD9_AA4_0031 } // Code 0031 00199 ,{ 7, 7, 4, acGUI_FontD9_AA4_0032 } // Code 0032 00200 ,{ 7, 7, 4, acGUI_FontD9_AA4_0033 } // Code 0033 00201 ,{ 7, 7, 4, acGUI_FontD9_AA4_0034 } // Code 0034 00202 ,{ 7, 7, 4, acGUI_FontD9_AA4_0035 } // Code 0035 00203 ,{ 7, 7, 4, acGUI_FontD9_AA4_0036 } // Code 0036 00204 ,{ 7, 7, 4, acGUI_FontD9_AA4_0037 } // Code 0037 00205 ,{ 7, 7, 4, acGUI_FontD9_AA4_0038 } // Code 0038 00206 ,{ 7, 7, 4, acGUI_FontD9_AA4_0039 } // Code 0039 00207 }; 00208 00209 GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontD9_AA4_Prop1 = { 00210 0x0030 // first character 00211 ,0x0039 // last character 00212 ,&GUI_FontD9_AA4_CharInfo[ 0] // address of first character 00213 ,(GUI_CONST_STORAGE GUI_FONT_PROP *)0 // pointer to next GUI_FONT_PROP 00214 }; 00215 00216 GUI_CONST_STORAGE GUI_FONT GUI_FontD9_AA4 = { 00217 GUI_FONTTYPE_PROP_AA4 // type of font 00218 ,9 // height of font 00219 ,9 // space of font y 00220 ,1 // magnification x 00221 ,1 // magnification y 00222 ,{&GUI_FontD9_AA4_Prop1} 00223 ,0 // Baseline 00224 ,0 // Height of lowercase characters 00225 ,0 // Height of capital characters 00226 }; 00227 00228 /********************************************************************* 00229 * 00230 * Alpha bitmap for the orange dot at the left of the diagramm 00231 */ 00232 static GUI_CONST_STORAGE unsigned long _acCircleOrange_14x14[] = { 00233 #if (GUI_USE_ARGB) 00234 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF, 0x05F39400, 0x79F39400, 0x86F39400, 0xEBF39400, 0xEBF39400, 0x86F39400, 0x79F39400, 0x05F39400, 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF, 00235 0x00FFFFFF, 0x00FFFFFF, 0x46F39400, 0xBAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xBAF39400, 0x46F39400, 0x00FFFFFF, 0x00FFFFFF, 00236 0x00FFFFFF, 0x03F39400, 0xFAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFAF39400, 0x03F39400, 0x00FFFFFF, 00237 0x0EF39400, 0xC1F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xC1F39400, 0x0EF39400, 00238 0x78F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x78F39400, 00239 0x89F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x89F39400, 00240 0xEBF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xEBF39400, 00241 0xEBF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xEBF39400, 00242 0x89F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x89F39400, 00243 0x78F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x78F39400, 00244 0x0EF39400, 0xC1F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xC1F39400, 0x0EF39400, 00245 0x00FFFFFF, 0x03F39400, 0xFAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFAF39400, 0x03F39400, 0x00FFFFFF, 00246 0x00FFFFFF, 0x00FFFFFF, 0x46F39400, 0xBAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xBAF39400, 0x46F39400, 0x00FFFFFF, 0x00FFFFFF, 00247 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF, 0x05F39400, 0x79F39400, 0x86F39400, 0xEBF39400, 0xEBF39400, 0x86F39400, 0x79F39400, 0x05F39400, 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF, 00248 #else 00249 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFA0094F3, 0x860094F3, 0x790094F3, 0x140094F3, 0x140094F3, 0x790094F3, 0x860094F3, 0xFA0094F3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 00250 0xFFFFFFFF, 0xFFFFFFFF, 0xB90094F3, 0x450094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x450094F3, 0xB90094F3, 0xFFFFFFFF, 0xFFFFFFFF, 00251 0xFFFFFFFF, 0xC10094F3, 0x050094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x050094F3, 0xC10094F3, 0xFFFFFFFF, 00252 0xF10094F3, 0x3E0094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x3E0094F3, 0xF10094F3, 00253 0x870094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x870094F3, 00254 0x760094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x760094F3, 00255 0x140094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x140094F3, 00256 0x140094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x140094F3, 00257 0x760094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x760094F3, 00258 0x870094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x870094F3, 00259 0xF10094F3, 0x3E0094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x3E0094F3, 0xF10094F3, 00260 0xFFFFFFFF, 0xC10094F3, 0x050094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x050094F3, 0xC10094F3, 0xFFFFFFFF, 00261 0xFFFFFFFF, 0xFFFFFFFF, 0xB90094F3, 0x450094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x450094F3, 0xB90094F3, 0xFFFFFFFF, 0xFFFFFFFF, 00262 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFA0094F3, 0x860094F3, 0x790094F3, 0x140094F3, 0x140094F3, 0x790094F3, 0x860094F3, 0xFA0094F3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF 00263 #endif 00264 }; 00265 00266 static GUI_CONST_STORAGE GUI_BITMAP _bmCircleOrange_14x14 = { 00267 14, // XSize 00268 14, // YSize 00269 56, // BytesPerLine 00270 32, // BitsPerPixel 00271 (unsigned char *)_acCircleOrange_14x14, // Pointer to picture data 00272 NULL // Pointer to palette 00273 #if (GUI_USE_ARGB) 00274 ,GUI_DRAW_BMPM8888I 00275 #else 00276 ,GUI_DRAW_BMP8888 00277 #endif 00278 }; 00279 00280 /********************************************************************* 00281 * 00282 * Bitmaps for drawing the bars 00283 */ 00284 static GUI_CONST_STORAGE GUI_COLOR ColorsBarOrange_12x1[] = { 00285 #if (GUI_USE_ARGB) 00286 0xFFE26822,0xFFEC8537,0xFFEF9F50,0xFFF1974B, 00287 0xFFF3B163,0xFFF3B569,0xFFF5B971,0xFFF7BD7B, 00288 0xFFF8C486,0xFFFAC88D,0xFFFCDEBA,0xFFFEE9D5, 00289 #else 00290 0x2268E2,0x3785EC,0x509FEF,0x4B97F1, 00291 0x63B1F3,0x69B5F3,0x71B9F5,0x7BBDF7, 00292 0x86C4F8,0x8DC8FA,0xBADEFC,0xD5E9FE, 00293 #endif 00294 }; 00295 00296 static GUI_CONST_STORAGE GUI_COLOR ColorsBarBluegreen_12x1[] = { 00297 #if (GUI_USE_ARGB) 00298 0xFF2D6E74,0xFF3E8F91,0xFF419095,0xFF479197, 00299 0xFF50969B,0xFF5E9CA1,0xFF6DA5A9,0xFF82B1B2, 00300 0xFF98BEBF,0xFF9AC2C3,0xFFB3CFCF,0xFFD4E3E1, 00301 #else 00302 0x746E2D,0x918F3E,0x959041,0x979147, 00303 0x9B9650,0xA19C5E,0xA9A56D,0xB2B182, 00304 0xBFBE98,0xC3C29A,0xCFCFB3,0xE1E3D4, 00305 #endif 00306 }; 00307 00308 static GUI_CONST_STORAGE GUI_COLOR ColorsBarBlue_12x1[] = { 00309 #if (GUI_USE_ARGB) 00310 0xFF005182,0xFF2C94C3,0xFF3F95CE,0xFF4A96CD, 00311 0xFF569BCF,0xFF65A4D4,0xFF76ADDA,0xFF86B9E0, 00312 0xFF96C4E4,0xFFA7D1EB,0xFFA8D1EA,0xFFBFE1F4, 00313 #else 00314 0x825100,0xC3942C,0xCE953F,0xCD964A, 00315 0xCF9B56,0xD4A465,0xDAAD76,0xE0B986, 00316 0xE4C496,0xEBD1A7,0xEAD1A8,0xF4E1BF, 00317 #endif 00318 }; 00319 00320 static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarOrange_12x1 = { 00321 12, // number of entries 00322 0, // No transparency 00323 &ColorsBarOrange_12x1[0] 00324 }; 00325 00326 static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarBluegreen_12x1 = { 00327 12, // number of entries 00328 0, // No transparency 00329 &ColorsBarBluegreen_12x1[0] 00330 }; 00331 00332 static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarBlue_12x1 = { 00333 12, // number of entries 00334 0, // No transparency 00335 &ColorsBarBlue_12x1[0] 00336 }; 00337 00338 static GUI_CONST_STORAGE unsigned char _acBarOrange_12x1[] = { 00339 0x3B, 0xA9, 0x87, 0x65, 0x42, 0x10 00340 }; 00341 00342 static GUI_CONST_STORAGE unsigned char _acBarBluegreen_12x1[] = { 00343 0x09, 0xBA, 0x87, 0x65, 0x43, 0x21 00344 }; 00345 00346 static GUI_CONST_STORAGE unsigned char _acBarBlue_12x1[] = { 00347 0x01, 0xAB, 0x98, 0x76, 0x54, 0x32 00348 }; 00349 00350 static GUI_CONST_STORAGE GUI_BITMAP _bmBarOrange_12x1 = { 00351 12, // XSize 00352 1, // YSize 00353 6, // BytesPerLine 00354 4, // BitsPerPixel 00355 _acBarOrange_12x1, // Pointer to picture data (indices) 00356 &PalBarOrange_12x1 // Pointer to palette 00357 }; 00358 00359 static GUI_CONST_STORAGE GUI_BITMAP _bmBarBluegreen_12x1 = { 00360 12, // XSize 00361 1, // YSize 00362 6, // BytesPerLine 00363 4, // BitsPerPixel 00364 _acBarBluegreen_12x1, // Pointer to picture data (indices) 00365 &PalBarBluegreen_12x1 // Pointer to palette 00366 }; 00367 00368 static GUI_CONST_STORAGE GUI_BITMAP _bmBarBlue_12x1 = { 00369 12, // XSize 00370 1, // YSize 00371 6, // BytesPerLine 00372 4, // BitsPerPixel 00373 _acBarBlue_12x1, // Pointer to picture data (indices) 00374 &PalBarBlue_12x1 // Pointer to palette 00375 }; 00376 00377 static GUI_CONST_STORAGE GUI_BITMAP * _apBmBar[] = { 00378 &_bmBarBlue_12x1, 00379 &_bmBarBluegreen_12x1, 00380 &_bmBarOrange_12x1 00381 }; 00382 00383 /********************************************************************* 00384 * 00385 * Static code 00386 * 00387 ********************************************************************** 00388 */ 00389 /********************************************************************* 00390 * 00391 * _DrawDiagramAt 00392 */ 00393 static void _DrawDiagramAt(int xPos, int yPos, int * py, int xBlend, GUI_MEMDEV_Handle hMemTrans) { 00394 static GUI_MEMDEV_Handle hMem; 00395 GUI_RECT Rect; 00396 int i, ySizeBar, IndexBmBar, FontSizeY, x0, y0; 00397 // 00398 // Create memory device 00399 // 00400 if (hMem == 0) { 00401 hMem = GUI_MEMDEV_Create(xPos - 7, yPos, 172 + 7 + 1, 122 + 1); 00402 if (hMem == 0) { 00403 return; // Not enough memory available 00404 } 00405 } 00406 GUI_MEMDEV_Select(hMem); 00407 GUI_SetBkColor(GUI_BLACK); 00408 GUI_Clear(); 00409 // 00410 // Draw blue background 00411 // 00412 GUI_SetColor(GUI_MAKE_COLOR(0x4a2210)); 00413 GUI_FillRoundedRect(xPos, yPos, xPos + 172, yPos + 122, 4); 00414 // 00415 // Draw grid lines 00416 // 00417 GUI_SetColor(GUI_MAKE_COLOR(0x774830)); 00418 for (i = 0; i < 12; i++) { 00419 GUI_DrawHLine(yPos + 6 + i * 10, xPos + 2, xPos + 172 - 2); 00420 } 00421 // 00422 // Draw bars 00423 // 00424 for (i = 0; i < 10; i++) { 00425 IndexBmBar = (i < 6) ? i / 2 : 4 - (i / 2); 00426 ySizeBar = *(py + i); 00427 GUI_DrawBitmapMag(_apBmBar[IndexBmBar], xPos + 8 + i * 16, yPos + 122 - ySizeBar - 6, 1, ySizeBar); 00428 } 00429 // 00430 // Draw alpha effect 00431 // 00432 Rect.x0 = xPos; 00433 Rect.x1 = xPos + xBlend; 00434 Rect.y0 = yPos; 00435 Rect.y1 = yPos + 122; 00436 GUI_SetClipRect(&Rect); 00437 GUI_MEMDEV_WriteAt(hMemTrans, xPos, yPos); 00438 GUI_SetClipRect(NULL); 00439 // 00440 // Draw orange frame 00441 // 00442 GUI_SetColor(GUI_MAKE_COLOR(0x00f39400)); 00443 GUI_DrawRoundedRect(xPos, yPos, xPos + 172, yPos + 122, 4); 00444 // 00445 // Label 00446 // 00447 GUI_SetFont(&GUI_FontD9_AA4); 00448 GUI_SetTextMode(GUI_TM_TRANS); 00449 FontSizeY = GUI_GetFontSizeY(); 00450 for (i = 0; i < 5; i++) { 00451 x0 = xPos - 7; 00452 y0 = yPos + 96 - i * 20 - 7; 00453 GUI_SetBkColor(GUI_BLACK); 00454 GUI_ClearRect(x0, y0, x0 + 6, y0 + 13); 00455 GUI_DrawBitmap(&_bmCircleOrange_14x14, x0, y0); 00456 GUI_GotoXY(x0 + 7, y0 + 7 - FontSizeY / 2); 00457 GUI_SetTextAlign(GUI_TA_HCENTER); 00458 GUI_SetColor(GUI_BLACK); 00459 GUI_DispDecMin((i + 1) * 2); 00460 } 00461 GUI_MEMDEV_CopyToLCD(hMem); 00462 } 00463 00464 /********************************************************************* 00465 * 00466 * _DemoBarGraph 00467 */ 00468 static void _DemoBarGraph(void) { 00469 int xSize; 00470 int ySize; 00471 int xPos; 00472 int yPosDiagram; 00473 int yPosText; 00474 int i; 00475 int ayOrg[] = { 10, 20, 40, 50, 90, 100, 80, 30, 20, 10 }; 00476 int ayCur[] = { 10, 20, 40, 50, 90, 100, 80, 30, 20, 10 }; 00477 int aAdd[GUI_COUNTOF(ayOrg)]; 00478 int TimeNext; 00479 int TimeNow; 00480 int AddBlend; 00481 int Blend; 00482 int NumItems; 00483 GUI_MEMDEV_Handle hMemTrans; 00484 U32 * pData; 00485 00486 AddBlend = 1; 00487 Blend = 64; 00488 NumItems = GUI_COUNTOF(ayOrg); 00489 // 00490 // Calculate positions 00491 // 00492 xSize = LCD_GetXSize(); 00493 ySize = LCD_GetYSize(); 00494 xPos = (xSize - 172) / 2; 00495 yPosText = (ySize - 122 - 24) / 3; 00496 yPosDiagram = yPosText * 2 + 24; 00497 // 00498 // Label demo 00499 // 00500 GUI_SetFont(&GUI_Font24B_ASCII); 00501 GUI_DispStringHCenterAt("emWin bargraph demo", xSize / 2, yPosText); 00502 hMemTrans = GUI_MEMDEV_CreateFixed32(xPos, yPosDiagram, 172, 122); 00503 pData = GUI_MEMDEV_GetDataPtr(hMemTrans); 00504 GUI_MEMDEV_Select(hMemTrans); 00505 GUI_SetBkColor(GUI_TRANSPARENT); 00506 GUI_Clear(); 00507 GUI_SetColor(GUI_MAKE_COLOR(0xa8d99100)); 00508 GUI_FillRoundedRect(xPos, yPosDiagram, xPos + 172 + 4 , yPosDiagram + 121, 4); 00509 GUI_MEMDEV_Select(0); 00510 GUI_MEMDEV_Write(hMemTrans); 00511 // 00512 // Initialize values 00513 // 00514 for (i = 0; i < NumItems; i++) { 00515 aAdd[i] = (i & 1) * 2 - 1; 00516 } 00517 do { 00518 TimeNext = GUI_GetTime() + 20; 00519 // 00520 // Draw diagram 00521 // 00522 _DrawDiagramAt(xPos, yPosDiagram, ayCur, Blend, hMemTrans); 00523 // 00524 // Change blending area 00525 // 00526 Blend += AddBlend; 00527 if ((Blend >= 164) || (Blend <= 8)) { 00528 AddBlend = -AddBlend; 00529 } 00530 // 00531 // Change values 00532 // 00533 for (i = 0; i < NumItems; i++) { 00534 *(ayCur + i) += *(aAdd + i); 00535 if ((*(ayCur + i) > (*(ayOrg + i) + 10)) || (*(ayCur + i) < (*(ayOrg + i) - 10))) { 00536 *(aAdd + i) = -*(aAdd + i); 00537 } 00538 } 00539 // 00540 // Delay if required 00541 // 00542 TimeNow = GUI_GetTime(); 00543 if (TimeNext > TimeNow) { 00544 GUI_Delay(TimeNext - TimeNow); 00545 } 00546 } while (1); 00547 } 00548 00549 /********************************************************************* 00550 * 00551 * Public code 00552 * 00553 ********************************************************************** 00554 */ 00555 /********************************************************************* 00556 * 00557 * MainTask 00558 */ 00559 void MainTask(void) { 00560 GUI_Init(); 00561 // 00562 // Check if recommended memory for the sample is available 00563 // 00564 if (GUI_ALLOC_GetNumFreeBytes() < RECOMMENDED_MEMORY) { 00565 GUI_ErrorOut("Not enough memory available."); 00566 return; 00567 } 00568 _DemoBarGraph(); 00569 while (1) { 00570 GUI_Delay(100); 00571 } 00572 } 00573 00574 /*************************** End of file ****************************/
Generated on Thu Jul 14 2022 12:58:38 by
