| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563 |
- /*********************************************************************
- * SEGGER Microcontroller GmbH & Co. KG *
- * Solutions for real time microcontroller applications *
- **********************************************************************
- * *
- * (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
- * *
- * Internet: www.segger.com Support: support@segger.com *
- * *
- **********************************************************************
- ** emWin V5.32 - Graphical user interface for embedded applications **
- All Intellectual Property rights in the Software belongs to SEGGER.
- emWin is protected by international copyright laws. Knowledge of the
- source code may not be used to write a similar product. This file may
- only be used in accordance with the following terms:
- The software has been licensed to STMicroelectronics International
- N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
- les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
- purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
- troller products commercialized by Licensee only, sublicensed and dis_
- tributed under the terms and conditions of the End User License Agree_
- ment supplied by STMicroelectronics International N.V.
- Full source code is available at: www.segger.com
- We appreciate your understanding and fairness.
- ----------------------------------------------------------------------
- Licensing information
- Licensor: SEGGER Software GmbH
- Licensed to: STMicroelectronics International NV
- Licensed SEGGER software: emWin
- License number: GUI-00429
- License model: Buyout SRC [Buyout Source Code License, signed November 29th 2012]
- Licensed product: -
- Licensed platform: STMs ARM Cortex-M based 32 BIT CPUs
- Licensed number of seats: -
- ----------------------------------------------------------------------
- File : GUIDEMO_Bargraph.c
- Purpose : Shows a bargraph with alpha effect
- ----------------------------------------------------------------------
- */
- #include "GUI.h"
- #include "GUIDEMO.h"
- #if (SHOW_GUIDEMO_BARGRAPH && GUI_SUPPORT_MEMDEV)
- /*********************************************************************
- *
- * Defines
- *
- **********************************************************************
- */
- #define GRAPH_WIDTH 172
- #define GRAPH_HEIGHT 122
- #define SHOW_TIME 15000
- #define TIME_STEP 31
- /*********************************************************************
- *
- * Static data
- *
- **********************************************************************
- */
- /*********************************************************************
- *
- * Antialiased digit font for labeling
- */
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0030[ 36] = { /* code 0030, DIGIT ZERO */
- 0x07, 0xEF, 0x91, 0x00,
- 0x4F, 0xCA, 0xF7, 0x00,
- 0x8F, 0x20, 0xDC, 0x00,
- 0xBF, 0x00, 0xBF, 0x00,
- 0xBF, 0x00, 0xBF, 0x00,
- 0xBF, 0x00, 0xBF, 0x00,
- 0x7F, 0x41, 0xEB, 0x00,
- 0x2F, 0xED, 0xF6, 0x00,
- 0x04, 0xAB, 0x60, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0031[ 27] = { /* code 0031, DIGIT ONE */
- 0x00, 0xAF, 0x00,
- 0x19, 0xFF, 0x00,
- 0xEE, 0xDF, 0x00,
- 0x82, 0xBF, 0x00,
- 0x00, 0xBF, 0x00,
- 0x00, 0xBF, 0x00,
- 0x00, 0xBF, 0x00,
- 0x00, 0xBF, 0x00,
- 0x00, 0x8B, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0032[ 36] = { /* code 0032, DIGIT TWO */
- 0x06, 0xEF, 0xC3, 0x00,
- 0x3F, 0xC8, 0xFD, 0x00,
- 0x5B, 0x30, 0xBF, 0x00,
- 0x00, 0x01, 0xEB, 0x00,
- 0x00, 0x1C, 0xE3, 0x00,
- 0x01, 0xCE, 0x30, 0x00,
- 0x0B, 0xE3, 0x00, 0x00,
- 0x6F, 0xFF, 0xFF, 0x00,
- 0x8B, 0xBB, 0xBB, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0033[ 36] = { /* code 0033, DIGIT THREE */
- 0x3B, 0xFD, 0x30, 0x00,
- 0xAF, 0x8E, 0xD0, 0x00,
- 0x46, 0x0C, 0xE0, 0x00,
- 0x00, 0xBE, 0x50, 0x00,
- 0x00, 0x7C, 0xC1, 0x00,
- 0x00, 0x05, 0xF7, 0x00,
- 0xB9, 0x06, 0xF7, 0x00,
- 0xAF, 0xCF, 0xE1, 0x00,
- 0x18, 0xB9, 0x20, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0034[ 36] = { /* code 0034, DIGIT FOUR */
- 0x00, 0x0C, 0xF0, 0x00,
- 0x00, 0x7F, 0xF0, 0x00,
- 0x04, 0xFE, 0xF0, 0x00,
- 0x1D, 0x8B, 0xF0, 0x00,
- 0x8D, 0x1B, 0xF0, 0x00,
- 0xBA, 0x7D, 0xF7, 0x00,
- 0xBF, 0xFF, 0xFF, 0x00,
- 0x00, 0x0B, 0xF0, 0x00,
- 0x00, 0x08, 0xB0, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0035[ 36] = { /* code 0035, DIGIT FIVE */
- 0x05, 0xFF, 0xFB, 0x00,
- 0x07, 0xFC, 0xB8, 0x00,
- 0x0B, 0xF0, 0x00, 0x00,
- 0x0E, 0xFE, 0xD5, 0x00,
- 0x2F, 0xD7, 0xEE, 0x10,
- 0x02, 0x10, 0x7F, 0x40,
- 0x5F, 0x60, 0x9F, 0x30,
- 0x2E, 0xFB, 0xFB, 0x00,
- 0x03, 0x9B, 0x71, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0036[ 36] = { /* code 0036, DIGIT SIX */
- 0x05, 0xDF, 0xB1, 0x00,
- 0x2F, 0xCA, 0xF7, 0x00,
- 0x8F, 0x10, 0x74, 0x00,
- 0xBE, 0x7B, 0x70, 0x00,
- 0xBF, 0xDC, 0xF8, 0x00,
- 0xBF, 0x10, 0xCF, 0x00,
- 0x7F, 0x20, 0xCF, 0x00,
- 0x2E, 0xEC, 0xF8, 0x00,
- 0x03, 0xAB, 0x70, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0037[ 36] = { /* code 0037, DIGIT SEVEN */
- 0xBF, 0xFF, 0xFB, 0x00,
- 0x8B, 0xBC, 0xF8, 0x00,
- 0x00, 0x0C, 0xB0, 0x00,
- 0x00, 0x7F, 0x20, 0x00,
- 0x00, 0xE9, 0x00, 0x00,
- 0x06, 0xF5, 0x00, 0x00,
- 0x0A, 0xF1, 0x00, 0x00,
- 0x0D, 0xC0, 0x00, 0x00,
- 0x0B, 0x80, 0x00, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0038[ 36] = { /* code 0038, DIGIT EIGHT */
- 0x08, 0xEF, 0xA1, 0x00,
- 0x6F, 0x97, 0xF9, 0x00,
- 0x7F, 0x40, 0xFB, 0x00,
- 0x2D, 0xCA, 0xE5, 0x00,
- 0x1B, 0xDC, 0xD3, 0x00,
- 0x9F, 0x20, 0xDD, 0x00,
- 0xBF, 0x10, 0xCF, 0x00,
- 0x5F, 0xB8, 0xF9, 0x00,
- 0x05, 0xAB, 0x70, 0x00
- };
- GUI_CONST_STORAGE unsigned char acGUI_FontD9_AA4_0039[ 36] = { /* code 0039, DIGIT NINE */
- 0x08, 0xFF, 0x80, 0x00,
- 0x7F, 0xA9, 0xF7, 0x00,
- 0xBF, 0x00, 0xCC, 0x00,
- 0xAF, 0x31, 0xDF, 0x00,
- 0x3E, 0xFF, 0xEF, 0x00,
- 0x02, 0x76, 0xBF, 0x00,
- 0x4B, 0x40, 0xDA, 0x00,
- 0x3F, 0xED, 0xF5, 0x00,
- 0x05, 0xBA, 0x40, 0x00
- };
- GUI_CONST_STORAGE GUI_CHARINFO GUI_FontD9_AA4_CharInfo[10] = {
- { 7, 7, 4, acGUI_FontD9_AA4_0030 } /* code 0030 */
- ,{ 5, 5, 3, acGUI_FontD9_AA4_0031 } /* code 0031 */
- ,{ 7, 7, 4, acGUI_FontD9_AA4_0032 } /* code 0032 */
- ,{ 7, 7, 4, acGUI_FontD9_AA4_0033 } /* code 0033 */
- ,{ 7, 7, 4, acGUI_FontD9_AA4_0034 } /* code 0034 */
- ,{ 7, 7, 4, acGUI_FontD9_AA4_0035 } /* code 0035 */
- ,{ 7, 7, 4, acGUI_FontD9_AA4_0036 } /* code 0036 */
- ,{ 7, 7, 4, acGUI_FontD9_AA4_0037 } /* code 0037 */
- ,{ 7, 7, 4, acGUI_FontD9_AA4_0038 } /* code 0038 */
- ,{ 7, 7, 4, acGUI_FontD9_AA4_0039 } /* code 0039 */
- };
- GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontD9_AA4_Prop1 = {
- 0x0030 /* first character */
- ,0x0039 /* last character */
- ,&GUI_FontD9_AA4_CharInfo[ 0] /* address of first character */
- ,(GUI_CONST_STORAGE GUI_FONT_PROP *)0 /* pointer to next GUI_FONT_PROP */
- };
- GUI_CONST_STORAGE GUI_FONT GUI_FontD9_AA4 = {
- GUI_FONTTYPE_PROP_AA4 /* type of font */
- ,9 /* height of font */
- ,9 /* space of font y */
- ,1 /* magnification x */
- ,1 /* magnification y */
- ,{&GUI_FontD9_AA4_Prop1}
- ,0 /* Baseline */
- ,0 /* Height of lowercase characters */
- ,0 /* Height of capital characters */
- };
- /*********************************************************************
- *
- * Alpha bitmap for the orange dot at the left of the diagramm
- */
- static GUI_CONST_STORAGE unsigned long _acCircleOrange_14x14[] = {
- #if (GUI_USE_ARGB)
- 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF, 0x05F39400, 0x79F39400, 0x86F39400, 0xEBF39400, 0xEBF39400, 0x86F39400, 0x79F39400, 0x05F39400, 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF,
- 0x00FFFFFF, 0x00FFFFFF, 0x46F39400, 0xBAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xBAF39400, 0x46F39400, 0x00FFFFFF, 0x00FFFFFF,
- 0x00FFFFFF, 0x03F39400, 0xFAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFAF39400, 0x03F39400, 0x00FFFFFF,
- 0x0EF39400, 0xC1F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xC1F39400, 0x0EF39400,
- 0x78F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x78F39400,
- 0x89F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x89F39400,
- 0xEBF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xEBF39400,
- 0xEBF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xEBF39400,
- 0x89F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x89F39400,
- 0x78F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0x78F39400,
- 0x0EF39400, 0xC1F39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xC1F39400, 0x0EF39400,
- 0x00FFFFFF, 0x03F39400, 0xFAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFAF39400, 0x03F39400, 0x00FFFFFF,
- 0x00FFFFFF, 0x00FFFFFF, 0x46F39400, 0xBAF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xFFF39400, 0xBAF39400, 0x46F39400, 0x00FFFFFF, 0x00FFFFFF,
- 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF, 0x05F39400, 0x79F39400, 0x86F39400, 0xEBF39400, 0xEBF39400, 0x86F39400, 0x79F39400, 0x05F39400, 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF,
- #else
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFA0094F3, 0x860094F3, 0x790094F3, 0x140094F3, 0x140094F3, 0x790094F3, 0x860094F3, 0xFA0094F3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xB90094F3, 0x450094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x450094F3, 0xB90094F3, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xC10094F3, 0x050094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x050094F3, 0xC10094F3, 0xFFFFFFFF,
- 0xF10094F3, 0x3E0094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x3E0094F3, 0xF10094F3,
- 0x870094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x870094F3,
- 0x760094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x760094F3,
- 0x140094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x140094F3,
- 0x140094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x140094F3,
- 0x760094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x760094F3,
- 0x870094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x870094F3,
- 0xF10094F3, 0x3E0094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x3E0094F3, 0xF10094F3,
- 0xFFFFFFFF, 0xC10094F3, 0x050094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x050094F3, 0xC10094F3, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xB90094F3, 0x450094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x000094F3, 0x450094F3, 0xB90094F3, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFA0094F3, 0x860094F3, 0x790094F3, 0x140094F3, 0x140094F3, 0x790094F3, 0x860094F3, 0xFA0094F3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
- #endif
- };
- static GUI_CONST_STORAGE GUI_BITMAP _bmCircleOrange_14x14 = {
- 14, // XSize
- 14, // YSize
- 56, // BytesPerLine
- 32, // BitsPerPixel
- (unsigned char *)_acCircleOrange_14x14, // Pointer to picture data
- NULL // Pointer to palette
- #if (GUI_USE_ARGB)
- ,GUI_DRAW_BMPM8888I
- #else
- ,GUI_DRAW_BMP8888
- #endif
- };
- /*********************************************************************
- *
- * Bitmaps for drawing the bars
- */
- static GUI_CONST_STORAGE GUI_COLOR ColorsBarOrange_12x1[] = {
- #if (GUI_USE_ARGB)
- 0xFFE26822,0xFFEC8537,0xFFEF9F50,0xFFF1974B,
- 0xFFF3B163,0xFFF3B569,0xFFF5B971,0xFFF7BD7B,
- 0xFFF8C486,0xFFFAC88D,0xFFFCDEBA,0xFFFEE9D5,
- #else
- 0x2268E2,0x3785EC,0x509FEF,0x4B97F1,
- 0x63B1F3,0x69B5F3,0x71B9F5,0x7BBDF7,
- 0x86C4F8,0x8DC8FA,0xBADEFC,0xD5E9FE,
- #endif
- };
- static GUI_CONST_STORAGE GUI_COLOR ColorsBarBluegreen_12x1[] = {
- #if (GUI_USE_ARGB)
- 0xFF2D6E74,0xFF3E8F91,0xFF419095,0xFF479197,
- 0xFF50969B,0xFF5E9CA1,0xFF6DA5A9,0xFF82B1B2,
- 0xFF98BEBF,0xFF9AC2C3,0xFFB3CFCF,0xFFD4E3E1,
- #else
- 0x746E2D,0x918F3E,0x959041,0x979147,
- 0x9B9650,0xA19C5E,0xA9A56D,0xB2B182,
- 0xBFBE98,0xC3C29A,0xCFCFB3,0xE1E3D4,
- #endif
- };
- static GUI_CONST_STORAGE GUI_COLOR ColorsBarBlue_12x1[] = {
- #if (GUI_USE_ARGB)
- 0xFF005182,0xFF2C94C3,0xFF3F95CE,0xFF4A96CD,
- 0xFF569BCF,0xFF65A4D4,0xFF76ADDA,0xFF86B9E0,
- 0xFF96C4E4,0xFFA7D1EB,0xFFA8D1EA,0xFFBFE1F4,
- #else
- 0x825100,0xC3942C,0xCE953F,0xCD964A,
- 0xCF9B56,0xD4A465,0xDAAD76,0xE0B986,
- 0xE4C496,0xEBD1A7,0xEAD1A8,0xF4E1BF,
- #endif
- };
- static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarOrange_12x1 = {
- 12, /* number of entries */
- 0, /* No transparency */
- &ColorsBarOrange_12x1[0]
- };
- static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarBluegreen_12x1 = {
- 12, /* number of entries */
- 0, /* No transparency */
- &ColorsBarBluegreen_12x1[0]
- };
- static GUI_CONST_STORAGE GUI_LOGPALETTE PalBarBlue_12x1 = {
- 12, /* number of entries */
- 0, /* No transparency */
- &ColorsBarBlue_12x1[0]
- };
- static GUI_CONST_STORAGE unsigned char _acBarOrange_12x1[] = {
- 0x3B, 0xA9, 0x87, 0x65, 0x42, 0x10
- };
- static GUI_CONST_STORAGE unsigned char _acBarBluegreen_12x1[] = {
- 0x09, 0xBA, 0x87, 0x65, 0x43, 0x21
- };
- static GUI_CONST_STORAGE unsigned char _acBarBlue_12x1[] = {
- 0x01, 0xAB, 0x98, 0x76, 0x54, 0x32
- };
- static GUI_CONST_STORAGE GUI_BITMAP _bmBarOrange_12x1 = {
- 12, /* XSize */
- 1, /* YSize */
- 6, /* BytesPerLine */
- 4, /* BitsPerPixel */
- _acBarOrange_12x1, /* Pointer to picture data (indices) */
- &PalBarOrange_12x1 /* Pointer to palette */
- };
- static GUI_CONST_STORAGE GUI_BITMAP _bmBarBluegreen_12x1 = {
- 12, /* XSize */
- 1, /* YSize */
- 6, /* BytesPerLine */
- 4, /* BitsPerPixel */
- _acBarBluegreen_12x1, /* Pointer to picture data (indices) */
- &PalBarBluegreen_12x1 /* Pointer to palette */
- };
- static GUI_CONST_STORAGE GUI_BITMAP _bmBarBlue_12x1 = {
- 12, /* XSize */
- 1, /* YSize */
- 6, /* BytesPerLine */
- 4, /* BitsPerPixel */
- _acBarBlue_12x1, /* Pointer to picture data (indices) */
- &PalBarBlue_12x1 /* Pointer to palette */
- };
- static GUI_CONST_STORAGE GUI_BITMAP * _apBmBar[] = {
- &_bmBarBlue_12x1,
- &_bmBarBluegreen_12x1,
- &_bmBarOrange_12x1
- };
- /*********************************************************************
- *
- * Static code
- *
- **********************************************************************
- */
- /*********************************************************************
- *
- * _DrawLabel
- */
- static void _DrawLabel(GUI_MEMDEV_Handle hMem, int xPos, int yPos) {
- GUI_MEMDEV_Handle hMemOld;
- int FontSizeY;
- int x0;
- int y0;
- int i;
- hMemOld = GUI_MEMDEV_Select(hMem);
- GUI_SetFont(&GUI_FontD9_AA4);
- GUI_SetTextMode(GUI_TM_TRANS);
- FontSizeY = GUI_GetFontSizeY();
- for (i = 0; i < 5; i++) {
- x0 = xPos - 7;
- y0 = yPos + 96 - i * 20 - 7;
- GUI_DrawBitmap(&_bmCircleOrange_14x14, x0, y0);
- GUI_GotoXY(x0 + 7, y0 + 7 - FontSizeY / 2);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_BLACK);
- GUI_DispDecMin((i + 1) * 2);
- }
- GUI_MEMDEV_Select(hMemOld);
- }
- /*********************************************************************
- *
- * _DrawDiagramAt
- */
- static void _DrawDiagramAt(GUI_MEMDEV_Handle hMem, int xPos, int yPos, int * py, int xBlend) {
- GUI_MEMDEV_Handle hMemOld;
- GUI_RECT Rect;
- int IndexBmBar;
- int ySizeBar;
- int i;
- hMemOld = GUI_MEMDEV_Select(hMem);
- //
- // Draw blue background
- //
- GUI_SetColor(GUI_MAKE_COLOR(0x4a2210));
- GUI_FillRoundedRect(xPos, yPos, xPos + GRAPH_WIDTH, yPos + GRAPH_HEIGHT, 4);
- //
- // Draw grid lines
- //
- GUI_SetColor(GUI_MAKE_COLOR(0x774830));
- for (i = 0; i < 12; i++) {
- GUI_DrawHLine(yPos + 6 + i * 10, xPos + 2, xPos + GRAPH_WIDTH - 2);
- }
- //
- // Draw bars
- //
- for (i = 0; i < 10; i++) {
- IndexBmBar = (i < 6) ? i / 2 : 4 - (i / 2);
- ySizeBar = *(py + i);
- GUI_DrawBitmapMag(_apBmBar[IndexBmBar], xPos + 8 + i * 16, yPos + GRAPH_HEIGHT - ySizeBar - 6, 1, ySizeBar);
- }
- //
- // Draw alpha effect
- //
- Rect.x0 = xPos;
- Rect.x1 = xPos + 3;
- Rect.y0 = yPos;
- Rect.y1 = yPos + GRAPH_HEIGHT;
- GUI_SetClipRect(&Rect);
- GUI_SetColor(GUI_MAKE_COLOR(0xd99100));
- GUI_SetAlpha(GUI_MAKE_TRANS(168));
- GUI_FillRoundedRect(xPos, yPos, xPos + GRAPH_WIDTH, yPos + GRAPH_HEIGHT, 4);
- GUI_SetClipRect(NULL);
- GUI_FillRect(xPos + 4, yPos + 1, xPos + xBlend, yPos + GRAPH_HEIGHT - 1);
- GUI_SetAlpha(GUI_MAKE_TRANS(0));
- //
- // Draw orange frame
- //
- GUI_SetColor(GUI_MAKE_COLOR(0x0094f3));
- GUI_DrawRoundedRect(xPos, yPos, xPos + GRAPH_WIDTH, yPos + GRAPH_HEIGHT, 4);
- //
- // Label
- //
- _DrawLabel(hMem, xPos, yPos);
- GUI_MEMDEV_CopyToLCD(hMem);
- GUI_MEMDEV_Select(hMemOld);
- }
- /*********************************************************************
- *
- * _DemoBarGraph
- */
- static void _DemoBarGraph(void) {
- GUI_MEMDEV_Handle hMem;
- int ayOrg[] = { 10, 20, 40, 50, 90, 100, 80, 30, 20, 10 };
- int ayCur[] = { 10, 20, 40, 50, 90, 100, 80, 30, 20, 10 };
- int aAdd[GUI_COUNTOF(ayOrg)];
- int NextState;
- int TimeStart;
- int xPosGraph;
- int yPosGraph;
- int AddBlend;
- int NumItems;
- int TimeDiff;
- int TimeStep;
- int Blend;
- int xSize;
- int ySize;
- int i;
- //
- // Initialize values;
- //
- AddBlend = 1;
- Blend = 64;
- NumItems = GUI_COUNTOF(ayOrg);
- xSize = LCD_GetXSize();
- ySize = LCD_GetYSize();
- xPosGraph = (xSize - GRAPH_WIDTH) / 2;
- yPosGraph = (ySize - GRAPH_HEIGHT) / 2;
- //
- // Create MEMDEV
- //
- hMem = GUI_MEMDEV_Create(xPosGraph, yPosGraph, GRAPH_WIDTH + 7 + 1, GRAPH_HEIGHT + 1);
- if (hMem == 0) {
- return;
- }
- GUI_MEMDEV_CopyFromLCD(hMem);
- for (i = 0; i < NumItems; i++) {
- aAdd[i] = (i & 1) * 2 - 1;
- }
- _DrawLabel(0, xPosGraph, yPosGraph);
- TimeStart = GUIDEMO_GetTime();
- do {
- TimeDiff = GUIDEMO_GetTime() - TimeStart;
- _DrawDiagramAt(hMem, xPosGraph, yPosGraph, ayCur, Blend);
- Blend += AddBlend;
- if ((Blend >= 164) || (Blend <= 8)) {
- AddBlend = -AddBlend;
- }
- for (i = 0; i < NumItems; i++) {
- *(ayCur + i) += *(aAdd + i);
- if ((*(ayCur + i) > (*(ayOrg + i) + 10)) || (*(ayCur + i) < (*(ayOrg + i) - 10))) {
- *(aAdd + i) = -*(aAdd + i);
- }
- }
- TimeStep = GUIDEMO_GetTime() - TimeStart;
- if ((TimeStep - TimeDiff) < TIME_STEP) {
- GUI_Delay(TIME_STEP - (TimeStep - TimeDiff));
- } else {
- GUI_Exec();
- }
- NextState = GUIDEMO_CheckCancel();
- } while ((TimeDiff < SHOW_TIME) && (NextState == 0));
- GUI_MEMDEV_Delete(hMem);
- }
- /*********************************************************************
- *
- * Public code
- *
- **********************************************************************
- */
- /*********************************************************************
- *
- * GUIDEMO_BarGraph
- */
- void GUIDEMO_BarGraph(void) {
- GUIDEMO_ConfigureDemo("Bar Graph", "Animated bar graph\nusing Alpha Blending.", GUIDEMO_SHOW_CURSOR | GUIDEMO_SHOW_CONTROL);
- GUIDEMO_DrawBk();
- GUIDEMO_DispTitle("Bargraph demo");
- _DemoBarGraph();
- }
- #else
- void GUIDEMO_BarGraph_C(void);
- void GUIDEMO_BarGraph_C(void) {}
- #endif // SHOW_GUIDEMO_BARGRAPH && GUI_SUPPORT_MEMDEV
- /*************************** End of file ****************************/
|