Andrew Reed / Mbed OS CITY1082-i2c_master_wifi_mqtt
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ALPHA_Bargraph.c Source File

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 ****************************/