RADIO - Custom (Sample)

From SEGGER Wiki
Jump to: navigation, search
RADIO_Custom.c
RADIO Custom.png
File(s) required
  • RADIO_Custom.c
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 ****************************/