RADIO - Custom (Sample)
RADIO_Custom.c | |
---|---|
File(s) required |
|
Runs in simulation | Yes |
Runs on target | Yes |
Download | RADIO_Custom.c |
This sample demonstrates custom drawing of a RADIO widget.
Demo
Code
/*********************************************************************
* SEGGER Microcontroller GmbH *
* Solutions for real time microcontroller applications *
**********************************************************************
* *
* (c) 1996 - 2020 SEGGER Microcontroller GmbH *
* *
* Internet: www.segger.com Support: support@segger.com *
* *
**********************************************************************
** emWin V6.10 - Graphical user interface for embedded applications **
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 a license and should not be re-
distributed in any way. We appreciate your understanding and fairness.
----------------------------------------------------------------------
File : RADIO_Custom.c
Purpose : Sample that demonstrates how to give RADIO widgets in
emWin a custom look.
This sample shows the common ways to change the
appearance of the widget. Once by setting the skinning
properties and also by setting custom bitmaps to the
RADIO buttons.
Requirements: WindowManager - (x)
MemoryDevices - ( )
AntiAliasing - ( )
VNC-Server - ( )
PNG-Library - ( )
TrueTypeFonts - ( )
---------------------------END-OF-HEADER------------------------------
*/
#include "DIALOG.h"
#include <stdio.h>
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
/*********************************************************************
*
* _PropsChecked: Properties for checked state
*/
static const RADIO_SKINFLEX_PROPS _PropsChecked = {
{ GUI_DARKRED, GUI_WHITE, GUI_GRAY_C0, GUI_BLUE }, // [0] Outer color of button frame, [1] Middle color of button frame, [2] Inner color of button frame, [3] Inner color of button.
16 // Size of the button in pixels.
};
/*********************************************************************
*
* _PropsUnchecked: Properties for unchecked state
*/
static const RADIO_SKINFLEX_PROPS _PropsUnchecked = {
{ GUI_DARKRED, GUI_WHITE, GUI_GRAY_C0, GUI_WHITE }, // [0] Outer color of button frame, [1] Middle color of button frame, [2] Inner color of button frame, [3] Inner color of button.
16 // Size of the button in pixels.
};
/*********************************************************************
*
* _acRadioUnselected_16x16
*/
static GUI_CONST_STORAGE U32 _acRadioUnselected_16x16[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF6F6F6, 0xFFD9D9D9, 0xFF979797, 0xFF707070, 0xFF717171, 0xFF989898, 0xFFDEDEDE, 0xFFF5F5F5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFBDBDBD, 0xFF494949, 0xFF000000, 0xFF000000, 0xFF0C0C0C, 0xFF0C0C0C, 0xFF000000, 0xFF000000, 0xFF4A4A4A, 0xFFC2C2C2, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFF909090, 0xFF0E0E0E, 0xFF000000, 0xFF6E6E6E, 0xFFC2C2C2, 0xFFD4D4D4, 0xFFD4D4D4, 0xFFC3C3C3, 0xFF6E6E6E, 0xFF000000, 0xFF090909, 0xFFA7A7A7, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFB7B7B7, 0xFF0C0C0C, 0xFF070707, 0xFFCBCBCB, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFCDCDCD, 0xFF161616, 0xFF000000, 0xFFCDCDCD, 0xFFFFFFFF,
0xFFF4F4F4, 0xFF3C3C3C, 0xFF000000, 0xFFD0D0D0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFB8B8B8, 0xFF0A0A0A, 0xFF1E1E1E, 0xFFFEFEFE,
0xFFC9C9C9, 0xFF000000, 0xFF808080, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF595959, 0xFF0B0B0B, 0xFFA5A5A5,
0xFF7B7B7B, 0xFF010101, 0xFFCCCCCC, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFC2C2C2, 0xFF060606, 0xFF5C5C5C,
0xFF4F4F4F, 0xFF202020, 0xFFDEDEDE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF8F8F8, 0xFF000000, 0xFF3C3C3C,
0xFF4B4B4B, 0xFF232323, 0xFFE0E0E0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFDFDFD, 0xFF000000, 0xFF3E3E3E,
0xFF6C6C6C, 0xFF080808, 0xFFD4D4D4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFD4D4D4, 0xFF000000, 0xFF555555,
0xFFB8B8B8, 0xFF000000, 0xFF9D9D9D, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF787878, 0xFF030303, 0xFF8D8D8D,
0xFFF2F2F2, 0xFF1F1F1F, 0xFF161616, 0xFFEBEBEB, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFD9D9D9, 0xFF161616, 0xFF191919, 0xFFE8E8E8,
0xFFFEFEFE, 0xFF9C9C9C, 0xFF000000, 0xFF3B3B3B, 0xFFDEDEDE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE0E0E0, 0xFF3F3F3F, 0xFF000000, 0xFF9F9F9F, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFDFDFD, 0xFF6E6E6E, 0xFF000000, 0xFF202020, 0xFF848484, 0xFFF4F4F4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF1F1F1, 0xFF878787, 0xFF191919, 0xFF000000, 0xFF878787, 0xFFFEFEFE, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF8E8E8E, 0xFF040404, 0xFF060606, 0xFF000000, 0xFF0E0E0E, 0xFF0E0E0E, 0xFF000000, 0xFF000000, 0xFF181818, 0xFF969696, 0xFFFEFEFE, 0xFFFFFFFF, 0xFFFEFEFE,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFEFEFE, 0xFFFFFFFF, 0xFFE1E1E1, 0xFF7E7E7E, 0xFF3C3C3C, 0xFF252525, 0xFF272727, 0xFF414141, 0xFF828282, 0xFFDFDFDF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
};
GUI_CONST_STORAGE GUI_BITMAP bmRadioUnselected_16x16 = {
16, // xSize
16, // ySize
64, // BytesPerLine
32, // BitsPerPixel
(const unsigned char *)_acRadioUnselected_16x16, // Pointer to picture data
NULL, // Pointer to palette
GUI_DRAW_BMPM8888I
};
/*********************************************************************
*
* _acRadioSelected_16x16
*/
static GUI_CONST_STORAGE U32 _acRadioSelected_16x16[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF6F6F6, 0xFFD9D9D9, 0xFF979797, 0xFF707070, 0xFF717171, 0xFF989898, 0xFFDEDEDE, 0xFFF5F5F5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFBDBDBD, 0xFF494949, 0xFF000000, 0xFF000000, 0xFF0C0C0C, 0xFF0C0C0C, 0xFF000000, 0xFF000000, 0xFF4A4A4A, 0xFFC2C2C2, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFF909090, 0xFF0E0E0E, 0xFF000000, 0xFF6E6E6E, 0xFFC2C2C2, 0xFFD4D4D4, 0xFFD4D4D4, 0xFFC3C3C3, 0xFF6E6E6E, 0xFF000000, 0xFF090909, 0xFFA7A7A7, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFB7B7B7, 0xFF0C0C0C, 0xFF070707, 0xFFCBCBCB, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFCDCDCD, 0xFF161616, 0xFF000000, 0xFFCDCDCD, 0xFFFFFFFF,
0xFFF4F4F4, 0xFF3C3C3C, 0xFF000000, 0xFFD0D0D0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE2E2E2, 0xFFC9C9C9, 0xFFC9C9C9, 0xFFE5E5E5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFB8B8B8, 0xFF0A0A0A, 0xFF1E1E1E, 0xFFFEFEFE,
0xFFC9C9C9, 0xFF000000, 0xFF808080, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFAEAEAE, 0xFF292929, 0xFF000000, 0xFF000000, 0xFF282828, 0xFFB4B4B4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF595959, 0xFF0B0B0B, 0xFFA5A5A5,
0xFF7B7B7B, 0xFF010101, 0xFFCCCCCC, 0xFFFFFFFF, 0xFFDEDEDE, 0xFF1F1F1F, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF090909, 0xFFEAEAEA, 0xFFFFFFFF, 0xFFC2C2C2, 0xFF060606, 0xFF5C5C5C,
0xFF4F4F4F, 0xFF202020, 0xFFDEDEDE, 0xFFFFFFFF, 0xFFB4B4B4, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF8F8F8F, 0xFFFFFFFF, 0xFFF8F8F8, 0xFF000000, 0xFF3C3C3C,
0xFF4B4B4B, 0xFF232323, 0xFFE0E0E0, 0xFFFFFFFF, 0xFFABABAB, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF020202, 0xFF060606, 0xFF898989, 0xFFFFFFFF, 0xFFFDFDFD, 0xFF000000, 0xFF3E3E3E,
0xFF6C6C6C, 0xFF080808, 0xFFD4D4D4, 0xFFFFFFFF, 0xFFD4D4D4, 0xFF0D0D0D, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF0A0A0A, 0xFF000000, 0xFFD8D8D8, 0xFFFFFFFF, 0xFFD4D4D4, 0xFF000000, 0xFF555555,
0xFFB8B8B8, 0xFF000000, 0xFF9D9D9D, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF818181, 0xFF050505, 0xFF010101, 0xFF070707, 0xFF000000, 0xFF939393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF787878, 0xFF030303, 0xFF8D8D8D,
0xFFF2F2F2, 0xFF1F1F1F, 0xFF161616, 0xFFEBEBEB, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFBEBEBE, 0xFF6A6A6A, 0xFF696969, 0xFFC9C9C9, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFD9D9D9, 0xFF161616, 0xFF191919, 0xFFE8E8E8,
0xFFFEFEFE, 0xFF9C9C9C, 0xFF000000, 0xFF3B3B3B, 0xFFDEDEDE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE0E0E0, 0xFF3F3F3F, 0xFF000000, 0xFF9F9F9F, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFDFDFD, 0xFF6E6E6E, 0xFF000000, 0xFF202020, 0xFF848484, 0xFFF4F4F4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF1F1F1, 0xFF878787, 0xFF191919, 0xFF000000, 0xFF878787, 0xFFFEFEFE, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF8E8E8E, 0xFF040404, 0xFF060606, 0xFF000000, 0xFF0E0E0E, 0xFF0E0E0E, 0xFF000000, 0xFF000000, 0xFF181818, 0xFF969696, 0xFFFEFEFE, 0xFFFFFFFF, 0xFFFEFEFE,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFEFEFE, 0xFFFFFFFF, 0xFFE1E1E1, 0xFF7E7E7E, 0xFF3C3C3C, 0xFF252525, 0xFF272727, 0xFF414141, 0xFF828282, 0xFFDFDFDF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
};
GUI_CONST_STORAGE GUI_BITMAP bmRadioSelected_16x16 = {
16, // xSize
16, // ySize
64, // BytesPerLine
32, // BitsPerPixel
(const unsigned char *)_acRadioSelected_16x16, // Pointer to picture data
NULL, // Pointer to palette
GUI_DRAW_BMPM8888I
};
/*********************************************************************
*
* Static code
*
**********************************************************************
*/
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* MainTask
*/
void MainTask(void) {
WM_HWIN hRadioSkin;
WM_HWIN hRadioBitmap;
char acBuffer[32];
int i;
//
// Init emWin.
//
GUI_Init();
WM_SetDesktopColor(GUI_WHITE);
//
// Create a RADIO widget that will be used for custom skinning properties.
//
hRadioSkin = RADIO_CreateEx(10, 10, 60, 60, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_RADIO0, 3, 20);
//
// Create a RADIO widget for the use of custom bitmaps.
//
hRadioBitmap = RADIO_CreateEx(80, 10, 60, 60, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_RADIO1, 3, 20);
//
// Fill the widgets with sample data.
//
for (i = 0; i < 3; i++) {
sprintf(acBuffer, "Item %d", i);
RADIO_SetText(hRadioSkin, acBuffer, i);
RADIO_SetText(hRadioBitmap, acBuffer, i);
}
//
// Set skinning properties to the widget.
//
RADIO_SetSkinFlexProps(&_PropsChecked, RADIO_SKINFLEX_PI_PRESSED);
RADIO_SetSkinFlexProps(&_PropsUnchecked, RADIO_SKINFLEX_PI_UNPRESSED);
//
// Set custom bitmaps to the other RADIO widget.
//
RADIO_SetImage(hRadioBitmap, &bmRadioSelected_16x16, RADIO_BI_CHECK);
RADIO_SetImage(hRadioBitmap, &bmRadioUnselected_16x16, RADIO_BI_ACTIVE);
while (1) {
GUI_Delay(100);
}
}
/*************************** End of file ****************************/