This commit is contained in:
2025-05-13 04:55:13 +03:00
parent 3f693566bd
commit ceb6d0ccec
4364 changed files with 2897163 additions and 0 deletions
@@ -0,0 +1,44 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIConf.h
Purpose : Configures abilities, fonts etc.
----------------------------------------------------------------------
*/
#ifndef GUICONF_H
#define GUICONF_H
#define GUI_OS (1) /* Compile with multitasking support */
#define GUI_SUPPORT_TOUCH (1) /* Support a touch screen (req. win-manager) */
#define GUI_SUPPORT_UNICODE (1) /* Support mixed ASCII/UNICODE strings */
#define GUI_DEFAULT_FONT &GUI_Font6x8
#define GUI_ALLOC_SIZE 10000 /* Size of dynamic memory ... For WM and memory devices*/
/*********************************************************************
*
* Configuration of available packages
*/
#define GUI_WINSUPPORT 1 /* Window manager package available */
#define GUI_SUPPORT_MEMDEV 1 /* Memory devices available */
#define GUI_SUPPORT_AA 1 /* Anti aliasing available */
#endif /* Avoid multiple inclusion */
@@ -0,0 +1,33 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUITouch.Conf.h
Purpose : Configures touch screen module
----------------------------------------------------------------------
*/
#ifndef __GUITOUCH_CONF_H
#define __GUITOUCH_CONF_H
#define GUI_TOUCH_SWAP_XY 0
#define GUI_TOUCH_MIRROR_X 0
#define GUI_TOUCH_MIRROR_Y 0
#define GUI_TOUCH_AD_LEFT NULL
#define GUI_TOUCH_AD_RIGHT NULL
#define GUI_TOUCH_AD_TOP NULL
#define GUI_TOUCH_AD_BOTTOM NULL
#endif /* GUITOUCH_CONF_H */
@@ -0,0 +1,36 @@
/*********************************************************************************************************
*
* File : LCDConf.h
* Hardware Environment:
* Build Environment : RealView MDK-ARM Version: 4.20
* Version : V1.0
* By :
*
* (c) Copyright 2005-2011, WaveShare
* http://www.waveshare.net
* All Rights Reserved
*
*********************************************************************************************************/
#ifndef LCDCONF_H
#define LCDCONF_H
/* Private define ------------------------------------------------------------*/
#define HY32D (8989)
#define LCD_XSIZE (320)
#define LCD_YSIZE (240)
#define LCD_CONTROLLER (HY32D)
#define LCD_BITSPERPIXEL (16)
#define LCD_FIXEDPALETTE (565)
#define LCD_SWAP_RB (1)
//#define LCD_SWAP_XY (1)
#define LCD_INIT_CONTROLLER() LCD_Initializtion()
#endif
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
@@ -0,0 +1,56 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_TOUCH_X.C
Purpose : Config / System dependent externals for GUI
---------------------------END-OF-HEADER------------------------------
*/
/* Includes ------------------------------------------------------------------*/
#include <includes.h>
void GUI_TOUCH_X_ActivateX(void) {
}
void GUI_TOUCH_X_ActivateY(void) {
}
int GUI_TOUCH_X_MeasureX(void) {
return 0;
}
int GUI_TOUCH_X_MeasureY(void) {
return 0;
}
extern int xPhys, yPhys;
int CalibrationComplete = 0;
void GUI_TOUCH_Measure(void) {
Coordinate * Ptr;
xPhys = -1; yPhys = -1;
Ptr = Read_Ads7846();
if( Ptr != (void*)0 )
{
xPhys = Ptr->x;
yPhys = Ptr->y;
}
}
@@ -0,0 +1,212 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* 礐/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
---Author-Explanation
*
* 1.00.00 020519 JJL First release of uC/GUI to uC/OS-II interface
*
*
* Known problems or limitations with current version
*
* None.
*
*
* Open issues
*
* None
*********************************************************************************************************
*/
#include <includes.h>
#include "uCGUI\inc\GUI_Private.H"
/*
*********************************************************************************************************
* GLOBAL VARIABLES
*********************************************************************************************************
*/
static OS_EVENT *DispSem;
static OS_EVENT *EventMbox;
static OS_EVENT *KeySem;
static int KeyPressed;
static char KeyIsInited;
/*
*********************************************************************************************************
* TIMING FUNCTIONS
*
* Notes: Some timing dependent routines of uC/GUI require a GetTime and delay funtion.
* Default time unit (tick), normally is 1 ms.
*********************************************************************************************************
*/
int GUI_X_GetTime(void)
{
return ((int)OSTimeGet());
}
void GUI_X_Delay(int period)
{
INT32U ticks;
ticks=(period*1000)/OS_TICKS_PER_SEC;
OSTimeDly((INT16U)ticks);
}
/*
*********************************************************************************************************
* GUI_X_ExecIdle()
*********************************************************************************************************
*/
/* WM空闲时调用 */
void GUI_X_ExecIdle(void)
{
OSTimeDly(50);
}
/*
*********************************************************************************************************
* MULTITASKING INTERFACE FUNCTIONS
*
* Note(1): 1) The following routines are required only if uC/GUI is used in a true multi task environment,
* which means you have more than one thread using the uC/GUI API. In this case the #define
* GUI_OS 1 needs to be in GUIConf.h
*********************************************************************************************************
*/
void GUI_X_InitOS (void)
{
DispSem = OSSemCreate(1); /* 建立一个互斥型信号量 */
EventMbox = OSMboxCreate((void *)0); /* 建立一个邮箱 */
}
void GUI_X_Lock(void)
{
INT8U err;
OSSemPend(DispSem,0,&err);
}
void GUI_X_Unlock(void)
{
OSSemPost(DispSem);
}
U32 GUI_X_GetTaskId(void)
{
return ((U32)(OSTCBCur->OSTCBPrio));
}
/*
*********************************************************************************************************
* GUI_X_WaitEvent()
* GUI_X_SignalEvent()
*********************************************************************************************************
*/
void GUI_X_WaitEvent(void)
{
INT8U err;
(void)OSMboxPend(EventMbox,0,&err);
}
void GUI_X_SignalEvent(void)
{
(void)OSMboxPost(EventMbox,(void *)1);
}
/*
*********************************************************************************************************
* KEYBOARD INTERFACE FUNCTIONS
*
* Purpose: The keyboard routines are required only by some widgets.
* If widgets are not used, they may be eliminated.
*
* Note(s): If uC/OS-II is used, characters typed into the log window will be placed in the keyboard buffer.
* This is a neat feature which allows you to operate your target system without having to use or
* even to have a keyboard connected to it. (useful for demos !)
*********************************************************************************************************
*/
static void CheckInit(void)
{
if(KeyIsInited==DEF_FALSE)
{
KeyIsInited = DEF_TRUE;
GUI_X_Init();
}
}
/* 被GUI_Init()调用,用来初始化一些GUI运行之前需要用的硬件,如键盘或者鼠标之类的.如果不需要的话,可以为空 */
void GUI_X_Init(void)
{
KeySem = OSSemCreate(0);
}
int GUI_X_GetKey(void)
{
int r;
r = KeyPressed;
CheckInit();
KeyPressed = 0;
return (r);
}
int GUI_X_WaitKey(void)
{
int r;
INT8U err;
CheckInit();
if(KeyPressed==0)
{
OSSemPend(KeySem,0,&err); /* 等待信号量 */
}
r= KeyPressed;
KeyPressed = 0;
return (r);
}
void GUI_X_StoreKey(int k)
{
KeyPressed = k;
OSSemPost(KeySem); /* 释放信号量 */
}
void GUI_X_Log(const char *s)
{
GUI_USE_PARA(s);
}
void GUI_X_Warn(const char *s)
{
GUI_USE_PARA(s);
}
void GUI_X_ErrorOut(const char *s)
{
GUI_USE_PARA(s);
}
@@ -0,0 +1,163 @@
/*********************************************************************
* SEGGER MICROCONTROLLER SYSTEME GmbH *
* Solutions for real time microcontroller applications *
**********************************************************************
* *
* (c) 1996 - 2007 SEGGER Microcontroller Systeme GmbH *
* *
* Internet: www.segger.com Support: support@segger.com *
* *
**********************************************************************
** emWin V4.14 - 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 : LCD_X_8080.c
Purpose : Port routines 8080 interface, 16 bit data bus
----------------------------------------------------------------------
*/
/*********************************************************************
*
* Hardware configuration
*
**********************************************************************
Needs to be adapted to your target hardware.
*/
#include <includes.h>
#include "LCDConf.h"
#include "GUI.h"
/*********************************************************************
*
* Local defines (sfrs used in LCD_X_8080_16.c)
*
**********************************************************************
*/
void LCD_CtrlLinesConfig(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable FSMC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
RCC_APB2Periph_AFIO, ENABLE);
//±³¹â¿ØÖÆ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8
;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_WriteBit(GPIOA, GPIO_Pin_8, Bit_RESET);
//±³¹â¿ØÖÆ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_WriteBit(GPIOC, GPIO_Pin_6, Bit_SET);
/* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14),
PD.10(D15), PD.14(D0), PD.15(D1) as alternate
function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),
PE.14(D11), PE.15(D12) as alternate function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_Init(GPIOE, &GPIO_InitStructure);
// GPIO_WriteBit(GPIOE, GPIO_Pin_6, Bit_SET);
/* Set PF.00(A0 (RS)) as alternate function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOF, &GPIO_InitStructure);
/* Set PG.12(NE4 (LCD/CS)) as alternate function push pull - CE3(LCD /CS) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_Init(GPIOG, &GPIO_InitStructure);
}
/*******************************************************************************
* Function Name : LCD_FSMCConfig
* Description : Configures the Parallel interface (FSMC) for LCD(Parallel mode)
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void LCD_FSMCConfig(void)
{
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef p;
/*-- FSMC Configuration ------------------------------------------------------*/
/*----------------------- SRAM Bank 4 ----------------------------------------*/
/* FSMC_Bank1_NORSRAM4 configuration */
p.FSMC_AddressSetupTime = 0;
p.FSMC_AddressHoldTime = 0;
p.FSMC_DataSetupTime = 2;
p.FSMC_BusTurnAroundDuration = 0;
p.FSMC_CLKDivision = 0;
p.FSMC_DataLatency = 0;
p.FSMC_AccessMode = FSMC_AccessMode_A;
/* Color LCD configuration ------------------------------------
LCD configured as follow:
- Data/Address MUX = Disable
- Memory Type = SRAM
- Data Width = 16bit
- Write Operation = Enable
- Extended Mode = Enable
- Asynchronous Wait = Disable */
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
/* BANK 4 (of NOR/SRAM Bank 1~4) is enabled */
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
}
/*********************************************************************
*
* High level LCD access macros
*
**********************************************************************
Usually, there is no need to modify these macros.
It should be sufficient ot modify the low-level macros
above.
*/
void LCD_X_Init(void) {
/* Configure the LCD Control pins --------------------------------------------*/
LCD_CtrlLinesConfig();
/* Configure the FSMC Parallel interface -------------------------------------*/
LCD_FSMCConfig();
}
@@ -0,0 +1,26 @@
REM ****************************************
REM Compile GUIDemo modules
REM ****************************************
CALL CC GUIDEMO
CALL CC GUIDEMO_Automotive
CALL CC GUIDEMO_Bitmap
CALL CC GUIDEMO_Bitmap4bpp
CALL CC GUIDEMO_Circle
CALL CC GUIDEMO_ColorBar
CALL CC GUIDEMO_ColorList
CALL CC GUIDEMO_Cursor
CALL CC GUIDEMO_Dialog
CALL CC GUIDEMO_Font
CALL CC GUIDEMO_FrameWin
CALL CC GUIDEMO_Graph
CALL CC GUIDEMO_HardwareInfo
CALL CC GUIDEMO_Intro
CALL CC GUIDEMO_LUT
CALL CC GUIDEMO_MemDevB
CALL CC GUIDEMO_Navi
CALL CC GUIDEMO_Polygon
CALL CC GUIDEMO_ProgBar
CALL CC GUIDEMO_Speed
CALL CC GUIDEMO_Touch
CALL CC SeggerLogoBlue
@@ -0,0 +1,447 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* ľC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO.c
Purpose : Several GUIDEMO routines
----------------------------------------------------------------------
*/
#include <stddef.h>
#include "GUI.h"
#if GUI_WINSUPPORT
#include "PROGBAR.h"
#include "LISTBOX.h"
#include "FRAMEWIN.h"
#include "BUTTON.h"
#endif
#include "GUIDEMO.h"
/*********************************************************************
*
* Static variables
*
**********************************************************************
*/
#if GUI_WINSUPPORT
static BUTTON_Handle _ahButton[2];
static FRAMEWIN_Handle _ahFrameWin[3];
static int _ButtonSizeX, _ButtonSizeY;
#if GUIDEMO_LARGE
static FRAMEWIN_Handle _ahInfoWin[2];
static const char* _sInfo;
#endif
#endif
static int _iTest, _iTestMinor;
static char _CmdNext;
static const char* _sExplain;
#define countof(Obj) (sizeof(Obj)/sizeof(Obj[0]))
/*********************************************************************
*
* Routine table
*
**********************************************************************
The routines to be called are listed here. The advantage to calling
directly is that we can execute some code before and after.
*/
typedef void fVoidVoid(void);
static fVoidVoid * _apfTest[] = {
GUIDEMO_HardwareInfo,
GUIDEMO_Speed,
#if GUI_SUPPORT_MEMDEV
// GUIDEMO_Graph,
#endif
// GUIDEMO_Bitmap,
// GUIDEMO_Cursor,
// GUIDEMO_ShowInternationalFonts,
GUIDEMO_ShowColorBar,
GUIDEMO_ShowColorList,
// GUIDEMO_DemoLUT,
GUIDEMO_DemoPolygon,
GUIDEMO_Circle,
// GUIDEMO_ShowMemoryDevice,
// GUIDEMO_Automotive,
// GUIDEMO_Navigation,
#if GUI_WINSUPPORT
GUIDEMO_DemoProgBar,
GUIDEMO_DemoFrameWin,
GUIDEMO_Dialog,
// GUIDEMO_WM,
#if GUI_SUPPORT_TOUCH
// GUIDEMO_Touch,
#endif
#endif
0
};
/*********************************************************************
*
* Static routines
*
**********************************************************************
*/
static void _UpdateCmdWin(void) {
#if GUI_WINSUPPORT && GUIDEMO_LARGE
WM_InvalidateWindow(_ahInfoWin[1]);
#endif
}
#if (GUI_WINSUPPORT && GUIDEMO_LARGE)
static void _cbCmdWin(WM_MESSAGE* pMsg) {
switch (pMsg->MsgId) {
case WM_PAINT:
/* Update info in command window */
GUI_SetBkColor(GUI_GRAY);
GUI_Clear();
GUI_DispStringAt("Demo ", 0, 0);
GUI_DispDecMin(_iTest + 1);
GUI_DispString(".");
GUI_DispDecMin(_iTestMinor);
GUI_DispString("/");
GUI_DispDecMin(countof(_apfTest));
default:
WM_DefaultProc(pMsg);
}
}
#endif
static void _UpdateInfoWin(void) {
#if GUI_WINSUPPORT && GUIDEMO_LARGE
GUI_RECT rClient;
WM_HWIN hWin;
GUI_CONTEXT ContextOld;
GUI_SaveContext(&ContextOld);
/* Update info window */
WM_ShowWindow(_ahInfoWin[0]);
WM_ShowWindow(_ahFrameWin[0]);
hWin = WM_SelectWindow(_ahInfoWin[0]);
GUI_GetClientRect(&rClient);
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
GUI_SetColor(GUI_BLACK);
GUI_SetFont(&GUI_Font13_1);
GUI_SetTextAlign(GUI_TA_HCENTER);
GUI_DispStringHCenterAt(_sInfo, (rClient.x1 - rClient.x0) / 2, 0);
GUI_SetTextAlign(GUI_TA_LEFT);
GUI_SetFont(&GUI_Font8_ASCII);
GUI_DispStringAt(_sExplain, 0, 20);
WM_SelectWindow(hWin);
GUI_RestoreContext(&ContextOld);
#endif
}
/*********************************************************************
*
* Exported routines
*
**********************************************************************
*/
GUI_COLOR GUIDEMO_SetBkColor(GUI_COLOR Color) {
GUI_COLOR r;
if (GUI_ColorIsAvailable(GUI_RED)) {
r = Color;
} else {
r = GUI_BLACK;
}
GUI_SetBkColor(r);
return r;
}
GUI_COLOR GUIDEMO_SetColor(GUI_COLOR Color) {
GUI_COLOR r;
if (GUI_ColorIsAvailable(GUI_RED)) {
r = Color;
} else {
r = GUI_WHITE;
}
GUI_SetColor(r);
return r;
}
int GUIDEMO_Delay(int t) {
int r = 0;
#if GUI_WINSUPPORT
U32 value, tm;
#if GUIDEMO_LARGE
PROGBAR_Handle hProg;
#endif
WM_SetForegroundWindow(_ahButton[0]);
#if GUIDEMO_LARGE
hProg = (t > 100) ? PROGBAR_CreateAsChild(10, 10, 60, 7, _ahInfoWin[1], 0,
WM_CF_SHOW | WM_CF_STAYONTOP| WM_CF_MEMDEV) : 0;
PROGBAR_SetMinMax(hProg, 0, t);
#endif
tm = GUI_GetTime();
do {
value = GUI_GetTime() - tm;
#if GUIDEMO_LARGE
PROGBAR_SetValue(hProg, value);
WM_ExecIdle();
#endif
GUI_Delay(10);
} while ((value < (U32)t) && !GUIDEMO_CheckCancel());
#if GUIDEMO_LARGE
PROGBAR_Delete(hProg);
#endif
_UpdateCmdWin();
WM_ExecIdle();
#else
GUI_Delay(t);
#endif
return r;
}
void GUIDEMO_Wait(void) {
GUIDEMO_Delay(4000);
GUIDEMO_NotifyStartNext();
}
int GUIDEMO_CheckCancel(void) {
int c = GUI_GetKey();
#if GUI_WINSUPPORT
WM_ExecIdle();
#endif
if ((c == 'n') || (c=='N'))
_CmdNext =1;
if ((c == 'h') || (c=='H')) {
GUI_Delay(500);
do {
GUI_Delay(10);
#if GUI_WINSUPPORT
WM_ExecIdle();
#endif
c = GUI_GetKey();
} while (!c);
}
return _CmdNext;
}
void GUIDEMO_ShowInfo(const char* s) {
_sExplain = s;
_UpdateInfoWin();
}
void GUIDEMO_HideInfoWin(void) {
#if GUI_WINSUPPORT
WM_HideWindow(_ahFrameWin[0]);
#endif
}
void GUIDEMO_NotifyStartNext(void) {
_CmdNext = 0;
_UpdateCmdWin();
_iTestMinor++;
}
int GUIDEMO_WaitKey(void) {
int r = 0;
U32 tMax = GUI_GetTime() + 4000;
U32 tDiff;
#if GUI_WINSUPPORT
PROGBAR_Handle hProg = PROGBAR_Create(LCD_GetXSize() - 70,
LCD_GetYSize() - 40,
80, 5, WM_CF_SHOW);
#endif
while (tDiff = tMax - GUI_GetTime(), (tDiff > 0) && !GUIDEMO_CheckCancel()) {
if ((r = GUI_GetKey()) != 0)
break;
}
#if GUI_WINSUPPORT
PROGBAR_Delete(hProg);
WM_ExecIdle();
#endif
return r;
}
void GUIDEMO_ShowIntro(const char * s, const char * sExp) {
GUI_CONTEXT ContextOld;
GUI_SaveContext(&ContextOld);
#if GUI_WINSUPPORT && GUIDEMO_LARGE
_sInfo = s;
#endif
_sExplain = sExp;
GUI_SetDefault();
GUIDEMO_HideInfoWin();
GUIDEMO_SetBkColor(GUI_BLUE);
GUI_SetColor(GUI_WHITE);
GUI_Clear();
#if !(GUIDEMO_TINY)
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_DispStringHCenterAt(s, LCD_GET_XSIZE() / 2, LCD_GET_YSIZE() / 3 - 10);
#else
GUI_SetFont(&GUI_Font13B_ASCII);
GUI_DispStringHCenterAt(s, LCD_GET_XSIZE() / 2, LCD_GET_YSIZE() / 3 - 18);
#endif
if (_sExplain) {
GUI_SetFont(&GUI_Font8_ASCII);
#if !(GUIDEMO_TINY)
GUI_DispStringHCenterAt(_sExplain, LCD_GET_XSIZE() / 2, LCD_GET_YSIZE() / 2 - 10);
#else
GUI_DispStringHCenterAt(_sExplain, LCD_GET_XSIZE() / 2, LCD_GET_YSIZE() / 2 - 14);
#endif
}
GUIDEMO_Delay(_sExplain ? 2000 : 4000);
#if GUI_WINSUPPORT
_UpdateInfoWin();
_UpdateCmdWin();
#endif
GUI_RestoreContext(&ContextOld);
#if GUI_WINSUPPORT
WM_ExecIdle();
#endif
GUIDEMO_NotifyStartNext();
GUIDEMO_SetBkColor(GUI_RED);
GUI_Clear();
}
/*********************************************************************
*
* GUIDEMO_main(): Large version of the demo
*
**********************************************************************
*/
#if GUIDEMO_LARGE
void GUIDEMO_main(void) {
#if GUI_WINSUPPORT
int i;
int xSize, ySize, xPos, yPos;
#endif
#if (GUI_SUPPORT_CURSOR|GUI_SUPPORT_TOUCH)
GUI_CURSOR_Show();
#endif
GUI_Clear();
#if GUI_WINSUPPORT
#if GUI_NUM_LAYERS > 1
_ahFrameWin[2] = FRAMEWIN_CreateAsChild(10, 10, 100, 100, WM_GetDesktopWindowEx(1), "Display 1", NULL, WM_CF_SHOW);
WM_SetDesktopColorEx(GUI_RED, 1);
GUI_Delay(1000);
#endif
WM_SetCreateFlags(WM_CF_MEMDEV); /* Automatically use memory devices on all windows */
/* Calculate position and size of FrameWin[1] */
_ButtonSizeX = 30;
_ButtonSizeY = 20;
/* Create the control window incl. buttons */
_ahFrameWin[1] = FRAMEWIN_Create("Control", &_cbCmdWin, WM_CF_SHOW | WM_CF_STAYONTOP,
LCD_GetXSize() - 80, LCD_GetYSize() - 60, 80, 60);
_ahInfoWin[1] = WM_GetClientWindow(_ahFrameWin[1]);
_ahButton[0] = BUTTON_CreateAsChild(4, 20, _ButtonSizeX, _ButtonSizeY, _ahInfoWin[1],
'H' , WM_CF_SHOW | WM_CF_STAYONTOP | WM_CF_MEMDEV);
_ahButton[1] = BUTTON_CreateAsChild(40, 20, _ButtonSizeX, _ButtonSizeY, _ahInfoWin[1],
'N' , WM_CF_SHOW | WM_CF_STAYONTOP | WM_CF_MEMDEV);
BUTTON_SetText(_ahButton[0], "Halt");
BUTTON_SetText(_ahButton[1], "Next");
_UpdateCmdWin();
WM_ExecIdle();
#endif
/* Show Intro */
GUIDEMO_Intro();
#if GUI_WINSUPPORT
/* Calculate position and size of FrameWin[0] */
xSize = LCD_GetXSize() / 2;
ySize = 65;
xPos = LCD_GetXSize() - xSize;
yPos = 0;
/* Create info window and run the individual demos */
_ahFrameWin[0] = FRAMEWIN_Create("emWin Demo", NULL, WM_CF_STAYONTOP,
xPos, yPos, xSize, ySize);
// _ahInfoWin[0] = WM_GetFirstChild(_ahFrameWin[0]);
_ahInfoWin[0] = WM_CreateWindowAsChild(0, 0, 0, 0, WM_GetFirstChild(_ahFrameWin[0]), WM_CF_SHOW | WM_CF_STAYONTOP, 0, 0);
WM_ExecIdle();
#endif
/* Run the individual demos ! */
for (_iTest = 0; _apfTest[_iTest]; _iTest++) {
GUI_CONTEXT ContextOld;
GUI_SaveContext(&ContextOld);
_iTestMinor = 0;
_UpdateCmdWin();
(*_apfTest[_iTest])();
_CmdNext = 0;
GUI_RestoreContext(&ContextOld);
}
/* Cleanup */
#if GUI_WINSUPPORT
for (i = 0; i < countof(_ahFrameWin); i++) {
WM_DeleteWindow(_ahFrameWin[i]);
}
#endif
}
#else /* GUIDEMO_LARGE */
/*********************************************************************
*
* GUIDEMO_main(): Small version of the demo
*
**********************************************************************
*/
void GUIDEMO_main(void) {
#if GUI_WINSUPPORT
int i;
#endif
#if GUI_WINSUPPORT
#if GUI_NUM_LAYERS > 1
FRAMEWIN_CreateAsChild(10, 10, 100, 100, WM_GetDesktopWindowEx(1), "Display 1", NULL, WM_CF_SHOW);
GUI_Delay(1000);
#endif
WM_SetCreateFlags(WM_CF_MEMDEV); /* Automatically use memory devices on all windows */
_ButtonSizeX = 27;
_ButtonSizeY = 14;
_ahButton[0] = BUTTON_Create(LCD_GetXSize() - _ButtonSizeX * 2 - 4,
LCD_GetYSize() - _ButtonSizeY - 2,
_ButtonSizeX, _ButtonSizeY,
'H' , WM_CF_SHOW | WM_CF_STAYONTOP | WM_CF_MEMDEV);
_ahButton[1] = BUTTON_Create(LCD_GetXSize() - _ButtonSizeX - 2,
LCD_GetYSize() - _ButtonSizeY - 2,
_ButtonSizeX, _ButtonSizeY,
'N' , WM_CF_SHOW | WM_CF_STAYONTOP | WM_CF_MEMDEV);
BUTTON_SetFont(_ahButton[0], &GUI_Font8_ASCII);
BUTTON_SetFont(_ahButton[1], &GUI_Font8_ASCII);
BUTTON_SetText(_ahButton[0], "Halt");
BUTTON_SetText(_ahButton[1], "Next");
_UpdateCmdWin();
WM_ExecIdle();
#endif
/* Show Intro */
GUIDEMO_Intro();
/* Run the individual demos ! */
for (_iTest = 0; _apfTest[_iTest]; _iTest++) {
GUI_CONTEXT ContextOld;
GUI_SaveContext(&ContextOld);
_iTestMinor = 0;
_UpdateCmdWin();
(*_apfTest[_iTest])();
_CmdNext = 0;
GUI_RestoreContext(&ContextOld);
}
/* Cleanup */
#if GUI_WINSUPPORT
for (i = 0; i < countof(_ahButton); i++) {
BUTTON_Delete(_ahButton[i]);
}
#endif
}
#endif /* GUIDEMO_LARGE */
@@ -0,0 +1,126 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO.h
Purpose : Multiple choice for emWin
----------------------------------------------------------------------
*/
#ifndef GUIDEMO_H
#define GUIDEMO_H
#include "LCD_ConfDefaults.h" /* valid LCD configuration */
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* GUIDEMO publics
*
*********************************************************************
The following are the routines which are available to the
demo modules.
*/
void GUIDEMO_main(void);
/*********************************************************************
*
* GUIDEMO main routines
*
*********************************************************************
The following are the routines which are available to the
demo modules.
*/
GUI_COLOR GUIDEMO_SetBkColor (GUI_COLOR Color);
GUI_COLOR GUIDEMO_SetColor (GUI_COLOR Color);
void GUIDEMO_Wait (void);
int GUIDEMO_Delay (int t);
void GUIDEMO_ShowIntro (const char*s, const char* sExplain);
void GUIDEMO_ShowInfo (const char* sExplain);
int GUIDEMO_CheckCancel (void);
void GUIDEMO_NotifyStartNext (void);
void GUIDEMO_HideInfoWin (void);
int GUIDEMO_WaitKey (void);
extern const GUI_BITMAP GUIDEMO_bm4bpp;
/*********************************************************************
*
* Demo modules
*
*********************************************************************
The demo consists of different modules which are usually called
by the main routine.
The following are the declarations for the individual routines.
*/
void GUIDEMO_Messagebox(void);
void GUIDEMO_Dialog(void);
void GUIDEMO_Cursor(void);
void GUIDEMO_HardwareInfo(void);
void GUIDEMO_Graph(void);
void GUIDEMO_Automotive(void);
void GUIDEMO_Bitmap(void);
void GUIDEMO_Intro(void);
void GUIDEMO_Navigation(void);
void GUIDEMO_ShowMemoryDevice(void);
void GUIDEMO_DemoBITMAPObj(void);
void GUIDEMO_Circle(void);
void GUIDEMO_Speed(void);
void GUIDEMO_ShowInternationalFonts(void);
void GUIDEMO_ShowColorBar(void);
void GUIDEMO_ShowColorList(void);
void GUIDEMO_DemoFrameWin(void);
void GUIDEMO_DemoLISTBOX(void);
void GUIDEMO_DemoWidgets(void);
void GUIDEMO_DemoPolygon(void);
void GUIDEMO_DemoProgBar(void);
//void GUIDEMO_ShowUCMix(void);
void GUIDEMO_DemoLISTBOX(void);
void GUIDEMO_DemoFrameWin(void);
void GUIDEMO_DemoLUT(void);
void GUIDEMO_ModifyLUT(int RFaktor, int GFaktor, int BFaktor);
void GUIDEMO_ShowColorList(void);
void GUIDEMO_Touch(void);
extern const GUI_BITMAP bmemWinGSCLogo320x46;
extern const GUI_BITMAP bmSeggerLogoBlue;
/*********************************************************************
*
* GUIDEMO defines
*
*********************************************************************
*/
#define GUIDEMO_LARGE ((LCD_XSIZE >= 240) && (LCD_YSIZE >= 200))
#define GUIDEMO_TINY ((LCD_XSIZE < 140) || (LCD_YSIZE < 100))
#if defined(__cplusplus)
}
#endif
#endif
@@ -0,0 +1,625 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Automotive.c
Purpose : Automotive samples
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
#include "LCD_ConfDefaults.h"
#if GUI_WINSUPPORT
#include "WM.h"
#endif
#if (GUI_SUPPORT_MEMDEV & GUI_SUPPORT_AA)
/*********************************************************************
*
* defines
*
**********************************************************************
*/
#define countof(Obj) (sizeof(Obj) / sizeof(Obj[0]))
#define DEG2RAD (3.1415926f / 180)
#define MAG 3
#if ((LCD_XSIZE >= 200) && !(GUIDEMO_TINY))
/*********************************************************************
*
* static data, scale bitmap (large)
*
**********************************************************************
*/
static GUI_CONST_STORAGE GUI_COLOR _ColorsScaleR140[] = {
0x000000, 0x00B400, 0xF5F5F5, 0x0000B4
,0x00F500, 0x494949, 0xE1E1E1, 0xC0C0C0
,0x7F7F7F, 0x8DD78D, 0x9B9B9B, 0xD7D7D7
,0xA8A8A8, 0xB4D7B4, 0x5D5D5D, 0xD7F5D7
,0x5DB45D, 0xB4B4D7, 0x5D5DB4, 0xD7D7F5
,0x8D8DD7, 0xEBEBEB, 0x8DB4B4, 0x8D8D8D
,0x5D8DB4, 0x8DB48D, 0xB4D7D7, 0x6F6F6F
,0xB4B4B4
};
static GUI_CONST_STORAGE GUI_LOGPALETTE _PalScaleR140 = {
29, /* number of entries */
0, /* No transparency */
&_ColorsScaleR140[0]
};
static GUI_CONST_STORAGE unsigned char _acScaleR140[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x0C, 0x07, 0x07, 0x07, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x07, 0x07, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x07, 0x0A, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x0C, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0C, 0x08, 0x08, 0x02, 0x02, 0x0B, 0x09, 0x09, 0x09, 0x09, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x07, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x07, 0x07, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x09, 0x09, 0x0D, 0x0D, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x0C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0C, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x07, 0x0C, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x09, 0x09, 0x0D, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x09, 0x0D, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x0A, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0A, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x15, 0x07, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x0D, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x0C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x07, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x09, 0x0D, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0A, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x07, 0x08, 0x00, 0x00, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x01, 0x01, 0x01, 0x10, 0x0D, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x0C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x0C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0D, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x09, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x0D, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x0D, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x06, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x06, 0x0A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0D, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x0D, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x0D, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0D, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x0F, 0x02, 0x02, 0x02, 0x06, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x0F, 0x02, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x07, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x02, 0x02, 0x02, 0x15, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x19, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x02, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0D, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x1A, 0x13, 0x02, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x00, 0x07, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x12, 0x03, 0x14, 0x13, 0x02, 0x02, 0x02, 0x07, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x02, 0x0B, 0x0E, 0x00, 0x00, 0x05, 0x02, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x02, 0x14, 0x03, 0x03, 0x03, 0x12, 0x11, 0x02, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x12, 0x13, 0x02, 0x02, 0x02, 0x07, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x02, 0x0B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0D, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x02, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x11, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x12, 0x13, 0x02, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x0B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x02, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x02, 0x16, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x14, 0x13, 0x02, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0D, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x12, 0x11, 0x02, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x07, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0A, 0x07, 0x07, 0x07, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x0D, 0x0D, 0x0D, 0x0D, 0x09, 0x09, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x02, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x14, 0x02, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x0C, 0x07, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x0D, 0x0D, 0x09, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x11, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x14, 0x13, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0A, 0x08, 0x08, 0x08, 0x17, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x0D, 0x09, 0x10, 0x01, 0x10, 0x02, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x12, 0x13, 0x02, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x02, 0x0B, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x07, 0x0A, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x08, 0x07, 0x07, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x15, 0x02, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x02, 0x16, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x07, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0A, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x07, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x08, 0x07, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x0D, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x14, 0x02, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0C, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x0C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0D, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x02, 0x18, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x14, 0x02, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0C, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x07, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0D, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x0D, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x12, 0x13, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x0C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0A, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x0D, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x0F, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x12, 0x13, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x0C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0A, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x02, 0x16, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x12, 0x13, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00,
0x00, 0x05, 0x06, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0C, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x0F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x02, 0x08, 0x00,
0x05, 0x06, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x06, 0x0A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x0D, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x02, 0x02, 0x18, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x02, 0x08,
0x0B, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0B, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0D, 0x10, 0x01, 0x01, 0x01, 0x01, 0x0D, 0x02, 0x0D, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x06,
0x02, 0x02, 0x02, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0D, 0x10, 0x01, 0x10, 0x02, 0x0F, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x17,
0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x0E, 0x0E, 0x0B, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x0F, 0x09, 0x0F, 0x02, 0x16, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x17, 0x00,
0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x02, 0x02, 0x02, 0x02, 0x0F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00,
0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x07, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x02, 0x13, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x02, 0x02, 0x02, 0x0B, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x11, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x02, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x02, 0x13, 0x14, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x02, 0x02, 0x02, 0x11, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0B, 0x02, 0x02, 0x02, 0x0B, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0C, 0x02, 0x02, 0x02, 0x13, 0x14, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x02, 0x02, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x06, 0x02, 0x02, 0x02, 0x11, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x0B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 0x13, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x02, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x02, 0x02, 0x02, 0x14, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x07, 0x02, 0x02, 0x02, 0x11, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x07, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x13, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x07, 0x02, 0x02, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x02, 0x02, 0x13, 0x12, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x02, 0x02, 0x14, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x06, 0x02, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x14, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x0B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 0x11, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x11, 0x03, 0x03, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x05, 0x00, 0x08, 0x02, 0x02, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x11, 0x03, 0x11, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x06, 0x17, 0x02, 0x02, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x06, 0x02, 0x02, 0x13, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x02, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x02, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static GUI_CONST_STORAGE GUI_BITMAP _bmScaleR140 = {
200, /* XSize */
73, /* YSize */
200, /* BytesPerLine */
8, /* BitsPerPixel */
_acScaleR140, /* Pointer to picture data (indices) */
&_PalScaleR140 /* Pointer to palette */
};
#else
/*********************************************************************
*
* static data, scale bitmap (small)
*
**********************************************************************
*/
static GUI_CONST_STORAGE GUI_COLOR _ColorsScaleR80[] = {
0x000000,0x101010,0x313031,0x525552
,0x83858B,0x94959C,0xA4AAAC,0xC5CACD
,0xD5DADE,0xFFFFFF,0xE6EAEE,0x202020
,0xB4BABD,0x292C29,0x737973,0x626562
,0x414041,0xDEE2E6,0x5ADE5A,0x41DA41
,0x52DE52,0x62DE62,0x83E68B,0xA4EEAC
,0xC5F2CD,0xE6FAEE,0x393C39,0x31D631
,0x00CE00,0x10CE10,0x94EA9C,0xB4EEBD
,0x737573,0xC5F2D5,0x737173,0x8BE694
,0x20D220,0x73E273,0xD5F6DE,0xBDC2C5
,0xD5DAE6,0x5A595A,0xA4B2BD,0xBDBEC5
,0xE6F6EE,0x9499EE,0xE6EAFF,0xB4BAF6
,0x0000CD,0x2020D5,0xA4AAEE,0x5255DE
,0x8385E6,0x1010D5,0x7375E6,0xD5F2DE
,0x6265E6,0x3130D5,0xD5DAFF,0xC5CAF6
,0x4140DE,0xEEFAEE,0xEEEEF6,0xF6FAFF
,0x6A6D6A,0xF6F6FF,0x7B797B,0xCDD2D5
,0x4148D5,0x293429,0x181C18,0x181CD5
,0x8B8D8B,0x00FF00,0x94E69C,0xB4BEC5
,0x2028D5,0xC5C6CD
};
static GUI_CONST_STORAGE GUI_LOGPALETTE _PalScaleR80 = {
78, /* number of entries */
0, /* No transparency */
&_ColorsScaleR80[0]
};
static GUI_CONST_STORAGE unsigned char _acScaleR80[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x08, 0x08, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x03, 0x04, 0x0C, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0C, 0x04, 0x03, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0E, 0x05, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x08, 0x06, 0x05, 0x04, 0x0F, 0x03, 0x03, 0x10, 0x02, 0x11, 0x09, 0x12, 0x13, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x19, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x06, 0x0E, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07, 0x05, 0x0F, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1B, 0x15, 0x1E, 0x1F, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x0A, 0x09, 0x09, 0x09, 0x09, 0x09, 0x11, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1B, 0x15, 0x21, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x08, 0x09, 0x09, 0x09, 0x09, 0x08, 0x05, 0x22, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x17, 0x09, 0x23, 0x16, 0x18, 0x09, 0x09, 0x09, 0x09, 0x08, 0x04, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x09, 0x09, 0x09, 0x09, 0x08, 0x04, 0x02, 0x00, 0x00, 0x01, 0x09, 0x09, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x19, 0x09, 0x1B, 0x1C, 0x1C, 0x24, 0x25, 0x18, 0x09, 0x09, 0x09, 0x09, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0C, 0x09, 0x09, 0x09, 0x09, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1B, 0x09, 0x19, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1B, 0x16, 0x19, 0x09, 0x09, 0x09, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x09, 0x09, 0x09, 0x08, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x25, 0x09, 0x17, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x14, 0x26, 0x09, 0x09, 0x09, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x09, 0x09, 0x09, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x09, 0x15, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x13, 0x1F, 0x09, 0x09, 0x09, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x27, 0x09, 0x09, 0x09, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x09, 0x09, 0x24, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1B, 0x17, 0x09, 0x09, 0x09, 0x28, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x09, 0x09, 0x09, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x13, 0x09, 0x26, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1B, 0x1F, 0x09, 0x09, 0x09, 0x2A, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x09, 0x09, 0x09, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x09, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x16, 0x09, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x09, 0x09, 0x09, 0x0A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x09, 0x09, 0x09, 0x05, 0x09, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x18, 0x09, 0x14, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x2C, 0x09, 0x2D, 0x2E, 0x09, 0x09, 0x07, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0A, 0x09, 0x09, 0x07, 0x02, 0x00, 0x04, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x09, 0x09, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x09, 0x2F, 0x30, 0x31, 0x32, 0x09, 0x09, 0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x09, 0x09, 0x20, 0x00, 0x00, 0x00, 0x01, 0x08, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x14, 0x09, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1B, 0x09, 0x09, 0x31, 0x30, 0x30, 0x30, 0x33, 0x2E, 0x09, 0x09, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0x09, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x09, 0x16, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x09, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x2F, 0x09, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x09, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x26, 0x09, 0x13, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x14, 0x09, 0x2E, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x09, 0x09, 0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x09, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x09, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1B, 0x09, 0x19, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x37, 0x09, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x3A, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x09, 0x08, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x15, 0x09, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x16, 0x09, 0x3B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x2F, 0x09, 0x09, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x09, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x10, 0x20, 0x04, 0x06, 0x07, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x26, 0x26, 0x17, 0x1E, 0x25, 0x14, 0x24, 0x1C, 0x1C, 0x1C, 0x1C, 0x17, 0x09, 0x25, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x24, 0x09, 0x09, 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x09, 0x09, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x08, 0x09, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x29, 0x04, 0x0C, 0x0A, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x1F, 0x16, 0x14, 0x3D, 0x09, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x17, 0x09, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x09, 0x09, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x0A, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x20, 0x3E, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x0C, 0x05, 0x04, 0x0F, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x05, 0x06, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x3F, 0x16, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1B, 0x09, 0x09, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x09, 0x09, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0x41, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x20, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x05, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x05, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x26, 0x16, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x18, 0x09, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x2E, 0x09, 0x09, 0x42, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x43, 0x3F, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x05, 0x0A, 0x09, 0x09, 0x09, 0x09, 0x18, 0x14, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x15, 0x09, 0x3A, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x44, 0x3F, 0x3F, 0x43, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x45, 0x3F, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x09, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x09, 0x09, 0x09, 0x0A, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x0A, 0x09, 0x09, 0x09, 0x19, 0x16, 0x1D, 0x1C, 0x1C, 0x1C, 0x1D, 0x37, 0x09, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x3F, 0x45, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x0C, 0x00, 0x00, 0x04, 0x0A, 0x09, 0x09, 0x09, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x09, 0x09, 0x09, 0x09, 0x1E, 0x1D, 0x1C, 0x16, 0x09, 0x3B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x09, 0x48, 0x08, 0x09, 0x09, 0x09, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x05, 0x09, 0x09, 0x09, 0x19, 0x4A, 0x09, 0x09, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x05, 0x09, 0x09, 0x09, 0x09, 0x2F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x09, 0x09, 0x09, 0x4B, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x05, 0x09, 0x09, 0x09, 0x2F, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0A, 0x09, 0x09, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0x09, 0x09, 0x36, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0A, 0x09, 0x09, 0x2F, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0x09, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x0C, 0x09, 0x09, 0x2E, 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x09, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0x09, 0x09, 0x36, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x09, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0x09, 0x32, 0x30, 0x30, 0x30, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x05, 0x09, 0x09, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x09, 0x09, 0x2F, 0x35, 0x30, 0x47, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x41, 0x46, 0x0C, 0x09, 0x09, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x09, 0x3A, 0x4C, 0x41, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x41, 0x09, 0x3F, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x09, 0x3F, 0x09, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x3F, 0x3F, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x09, 0x3F, 0x3F, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x4D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x4D, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static GUI_CONST_STORAGE GUI_BITMAP _bmScaleR80 = {
122, /* XSize */
55, /* YSize */
122, /* BytesPerLine */
8, /* BitsPerPixel */
_acScaleR80, /* Pointer to picture data (indices) */
&_PalScaleR80 /* Pointer to palette */
};
#endif
/*********************************************************************
*
* static data, shape of polygons
*
**********************************************************************
*/
#if GUIDEMO_LARGE
static const GUI_POINT _aNeedle_0[] = {
{ MAG * ( 0), MAG * ( 0 + 125)},
{ MAG * (-3), MAG * (-15 + 125)},
{ MAG * (-3), MAG * (-65 + 125)},
{ MAG * ( 3), MAG * (-65 + 125)},
{ MAG * ( 3), MAG * (-15 + 125)},
};
#endif
static const GUI_POINT _aNeedle_1[] = {
{ MAG * ( 0), MAG * ( 0 + 125)},
{ MAG * (-6), MAG * (-15 + 125)},
{ MAG * ( 0), MAG * (-65 + 125)},
{ MAG * ( 6), MAG * (-15 + 125)},
};
/*********************************************************************
*
* Structure containing information for drawing routine
*
**********************************************************************
*/
typedef struct {
GUI_AUTODEV_INFO AutoDevInfo; /* Information about what has to be displayed */
GUI_POINT aPoints[7]; /* Polygon data */
float Angle;
} PARAM;
/*********************************************************************
*
* static code, get angle
*
**********************************************************************
*/
#if GUIDEMO_LARGE
/*********************************************************************
*
* _GetAngle_0
*/
static float _GetAngle_0(int tDiff) {
if (tDiff < 6000)
return 225;
tDiff -= 6000;
if (tDiff < 15000) {
return 225 - 0.006 * tDiff ;
}
tDiff -= 15000;
if (tDiff < 7500) {
return 225 - 90 + 0.012 * tDiff ;
}
return 225;
}
/*********************************************************************
*
* _GetAngle_1
*/
static float _GetAngle_1(int tDiff) {
if (tDiff < 12000) {
return 225 - 0.0075 * tDiff ;
}
tDiff -= 18000;
if (tDiff > 0) {
return 225 - 90 + 0.0075 * tDiff;
}
return 225 - 90;
}
#else /* GUIDEMO_LARGE */
/*********************************************************************
*
* _GetAngle
*/
static float _GetAngle(int tDiff) {
if (tDiff < 10000) {
return 225 - 0.009 * tDiff ;
}
tDiff -= 10000;
if (tDiff > 0) {
return 225 - 90 + 0.015 * tDiff;
}
return 225 - 90;
}
#endif
/*********************************************************************
*
* static code, drawing routines
*
**********************************************************************
*/
#if GUIDEMO_LARGE
/*********************************************************************
*
* _Draw_0
*/
static void _Draw_0(void * p) {
PARAM* pParam = (PARAM *)p;
/* Fixed background */
if (pParam->AutoDevInfo.DrawFixed) {
GUI_ClearRect (1,
(LCD_YSIZE / 2 - 80) + _bmScaleR140.YSize,
1 + _bmScaleR140.XSize - 1,
(LCD_YSIZE / 2 + 20));
GUI_DrawBitmap(&_bmScaleR140, 1, (LCD_YSIZE / 2 - 80));
}
/* Moving needle */
GUI_SetColor(GUI_WHITE);
GUI_AA_FillPolygon(pParam->aPoints,
countof(_aNeedle_0),
MAG * 101,
MAG * (LCD_YSIZE / 2 + 60));
/* Fixed foreground */
if (pParam->AutoDevInfo.DrawFixed) {
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_RED);
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_DispStringHCenterAt("RPM / 1000", 101, (LCD_YSIZE / 2 - 20));
}
}
/*********************************************************************
*
* _Draw_1
*/
static void _Draw_1(void * p) {
PARAM* pParam = (PARAM *)p;
/* Fixed background */
if (pParam->AutoDevInfo.DrawFixed) {
GUI_ClearRect (1,
(LCD_YSIZE / 2 + 21) + _bmScaleR140.YSize,
1 + _bmScaleR140.XSize - 1,
(LCD_YSIZE / 2 + 121));
GUI_DrawBitmap(&_bmScaleR140, 1, (LCD_YSIZE / 2 + 21));
}
/* Moving needle */
GUI_SetColor(GUI_WHITE);
GUI_AA_FillPolygon(pParam->aPoints,
countof(_aNeedle_1),
MAG * 101,
MAG * (LCD_YSIZE / 2 + 161));
/* Fixed foreground */
if (pParam->AutoDevInfo.DrawFixed) {
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_RED);
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_DispStringHCenterAt("MPH / 10", 101, (LCD_YSIZE / 2 + 81));
}
}
#else /* GUIDEMO_LARGE */
/*********************************************************************
*
* _MagnifyPolygon
*/
#if (GUIDEMO_TINY || (LCD_XSIZE < 200))
static void _MagnifyPolygon(GUI_POINT* pPolygon, int NumPoints, float Mag) {
int j;
for (j = 0; j < NumPoints; j++) {
(pPolygon + j)->x = (pPolygon + j)->x * Mag;
(pPolygon + j)->y = (pPolygon + j)->y * Mag;
}
}
#endif
/*********************************************************************
*
* _Draw
*/
static void _Draw(void* p) {
GUI_CONST_STORAGE GUI_BITMAP* pBitmap;
PARAM* pParam = (PARAM *)p;
int xMid = LCD_XSIZE >> 1;
int yMid = (LCD_YSIZE >> 1) + 3;
int bmSizeX, bmSizeY;
#if (GUIDEMO_TINY || (LCD_XSIZE < 200))
pBitmap = &_bmScaleR80;
#else
pBitmap = &_bmScaleR140;
#endif
bmSizeX = pBitmap->XSize;
bmSizeY = pBitmap->YSize;
/* Fixed background */
if (pParam->AutoDevInfo.DrawFixed) {
#if (GUIDEMO_TINY || (LCD_XSIZE < 200))
GUI_Clear();
GUI_DrawBitmap(pBitmap, xMid - (bmSizeX >> 1), (yMid - 35));
#else
GUI_ClearRect (xMid - (bmSizeX >> 1), (yMid - 50) + bmSizeY,
xMid + (bmSizeX >> 1) - 1, (yMid + 50));
GUI_DrawBitmap(pBitmap, xMid - (bmSizeX >> 1), (yMid - 50));
#endif
}
/* Moving needle */
GUI_SetColor(GUI_WHITE);
#if (GUIDEMO_TINY || (LCD_XSIZE < 200))
GUI_AA_FillPolygon(pParam->aPoints, countof(_aNeedle_1), MAG * xMid, MAG * (yMid + 49));
#else
GUI_AA_FillPolygon(pParam->aPoints, countof(_aNeedle_1), MAG * xMid, MAG * (yMid + 90));
#endif
/* Fixed foreground */
if (pParam->AutoDevInfo.DrawFixed) {
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_RED);
#if (GUIDEMO_TINY || (LCD_XSIZE < 200))
GUI_SetFont(&GUI_Font13B_ASCII);
#else
GUI_SetFont(&GUI_Font24B_ASCII);
#endif
GUI_DispStringHCenterAt("MPH / 10", xMid, yMid + 10);
}
}
#endif
/*********************************************************************
*
* static code, demo
*
**********************************************************************
*/
#if GUIDEMO_LARGE
/*********************************************************************
*
* _AutomotiveDemo
*/
static void _AutomotiveDemo(void) {
int Cnt, i;
int tDiff;
int tDiff1 = 0;
int tDiff2 = 0;
int t0, t1;
float Angle_0_Old, Angle_1_Old;
PARAM Param[2]; /* Parameters for drawing routine */
GUI_AUTODEV AutoDev[2]; /* Object for banding memory device */
/* Create GUI_AUTODEV-objects */
for (i = 0; i < 2; i++) {
GUI_MEMDEV_CreateAuto(&AutoDev[i]);
}
t0 = GUI_GetTime(); /* Get current time */
Angle_0_Old = Angle_1_Old = -1;
/* Show needle for a fixed time */
for (Cnt = 0; ((tDiff = GUI_GetTime() - t0) < 30000) && !GUIDEMO_CheckCancel(); Cnt++) {
/* Get values to display and calculate polygon for needle 1 */
Param[0].Angle = _GetAngle_0(tDiff)* DEG2RAD;
if (Angle_0_Old != Param[0].Angle) {
Angle_0_Old = Param[0].Angle;
t1 = GUI_GetTime();
GUI_RotatePolygon(Param[0].aPoints, _aNeedle_0, countof(_aNeedle_0), Param[0].Angle);
GUI_MEMDEV_DrawAuto(&AutoDev[0], &Param[0].AutoDevInfo, _Draw_0, &Param[0]);
tDiff1 = GUI_GetTime() - t1;
if (tDiff1 < 50) {
GUI_Delay(50 - tDiff1);
}
}
/* Get values to display and calculate polygon for needle 2 */
Param[1].Angle = _GetAngle_1(tDiff)* DEG2RAD;
if (Angle_1_Old != Param[1].Angle) {
Angle_1_Old = Param[1].Angle;
t1 = GUI_GetTime();
GUI_RotatePolygon(Param[1].aPoints, _aNeedle_1, countof(_aNeedle_1), Param[1].Angle);
GUI_MEMDEV_DrawAuto(&AutoDev[1], &Param[1].AutoDevInfo, _Draw_1, &Param[1]);
tDiff2 = GUI_GetTime() - t1;
}
/* Display used time */
if (!(Cnt % 20)) {
GUI_SetColor(GUI_WHITE);
GUI_SetTextMode(GUI_TM_NORMAL);
GUI_SetFont(&GUI_Font8_1);
GUI_DispStringAt("msec/picture:\n", 10, 10);
GUI_SetFont(&GUI_Font6x8);
GUI_GotoX(10);
GUI_DispDec(tDiff1, 3);
GUI_DispNextLine();
GUI_GotoX(10);
GUI_DispDec(tDiff2, 3);
}
}
GUIDEMO_Delay(1000);
/* Delete GUI_AUTODEV-objects */
for (i = 0; i < 2; i++) {
GUI_MEMDEV_DeleteAuto(&AutoDev[i]);
}
}
#else /* GUIDEMO_LARGE */
/*********************************************************************
*
* _AutomotiveDemo
*/
static void _AutomotiveDemo(void) {
int Cnt;
int tDiff, t0;
float Angle_Old;
PARAM Param; /* Parameters for drawing routine */
GUI_AUTODEV AutoDev; /* Object for banding memory device */
/* Create GUI_AUTODEV-objects */
GUI_MEMDEV_CreateAuto(&AutoDev);
t0 = GUI_GetTime(); /* Get current time */
Angle_Old = -1;
/* Show needle for a fixed time */
for (Cnt = 0; ((tDiff = GUI_GetTime() - t0) < 16000) && !GUIDEMO_CheckCancel(); Cnt++) {
/* Get values to display and calculate polygon for needle 2 */
Param.Angle = _GetAngle(tDiff) * DEG2RAD;
if (Angle_Old != Param.Angle) {
Angle_Old = Param.Angle;
GUI_RotatePolygon(Param.aPoints, _aNeedle_1, countof(_aNeedle_1), Param.Angle);
#if (GUIDEMO_TINY || (LCD_XSIZE < 200))
_MagnifyPolygon(Param.aPoints, countof(_aNeedle_1), 0.575f);
#endif
GUI_MEMDEV_DrawAuto(&AutoDev, &Param.AutoDevInfo, _Draw, &Param);
}
}
GUIDEMO_Delay(1000);
/* Delete GUI_AUTODEV-objects */
GUI_MEMDEV_DeleteAuto(&AutoDev);
}
#endif
/*********************************************************************
*
* public code
*
**********************************************************************
*/
/*********************************************************************
*
* GUIDEMO_Automotive
*/
void GUIDEMO_Automotive(void) {
/* Show intro message */
GUIDEMO_ShowIntro("Automotive samples",
"\nExamples for the"
"\nautomotive industrie");
GUIDEMO_NotifyStartNext();
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
/* Enable high resolution for antialiasing */
GUI_AA_EnableHiRes();
GUI_AA_SetFactor(MAG);
_AutomotiveDemo();
}
#else /* GUI_SUPPORT_MEMDEV | GUI_SUPPORT_AA */
void GUIDEMO_Automotive(void) {}
#endif /* GUI_SUPPORT_MEMDEV | GUI_SUPPORT_AA */
@@ -0,0 +1,152 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Bitmap4bpp.c
Purpose : Contains a 4bpp bitmap
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
static const GUI_COLOR _ColorsJoerg[] = {
0x000000, 0x111111, 0x222222, 0x333333
,0x444444, 0x555555, 0x666666, 0x777777
,0x888888, 0x999999, 0xAAAAAA, 0xBBBBBB
,0xCCCCCC, 0xDDDDDD, 0xEEEEEE, 0xFFFFFF
};
static const GUI_LOGPALETTE _PalJoerg = {
16, /* number of entries */
0, /* No transparency */
&_ColorsJoerg[0]
};
static const unsigned char _acJoerg[] = {
0x88, 0x88, 0x88, 0x88, 0x89, 0x88, 0x99, 0x99, 0x89, 0x99, 0x88, 0x99, 0x98, 0x88, 0x98, 0x88, 0x89, 0x88, 0x89, 0x99, 0x88, 0x89, 0x88, 0x98, 0x98, 0x89, 0x88, 0x89, 0x98, 0x88, 0x80,
0x88, 0x88, 0x88, 0x89, 0x88, 0x88, 0x88, 0x89, 0x89, 0x99, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 0x88, 0x98, 0x88, 0x89, 0x98, 0x89, 0x88, 0x88, 0x88, 0x88, 0x80,
0x88, 0x88, 0x88, 0x88, 0x89, 0x88, 0x88, 0x88, 0x89, 0x88, 0x88, 0x88, 0x77, 0x75, 0x68, 0x56, 0x55, 0x55, 0x68, 0x88, 0x88, 0x99, 0x98, 0x99, 0x98, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80,
0x88, 0x88, 0x88, 0x88, 0x89, 0x88, 0x88, 0x88, 0x88, 0x85, 0x44, 0x55, 0x53, 0x54, 0x35, 0x33, 0x44, 0x44, 0x46, 0x67, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80,
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x78, 0x75, 0x43, 0x33, 0x33, 0x33, 0x34, 0x33, 0x33, 0x33, 0x44, 0x55, 0x67, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80,
0x98, 0x99, 0x88, 0x88, 0x88, 0x88, 0x87, 0x86, 0x63, 0x33, 0x33, 0x33, 0x33, 0x23, 0x22, 0x22, 0x23, 0x33, 0x33, 0x34, 0x56, 0x44, 0x68, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80,
0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x85, 0x47, 0x54, 0x33, 0x33, 0x32, 0x22, 0x23, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x43, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80,
0x88, 0x88, 0x88, 0x88, 0x88, 0x86, 0x44, 0x43, 0x44, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x23, 0x23, 0x33, 0x45, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80,
0x88, 0x88, 0x88, 0x88, 0x87, 0x65, 0x43, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x34, 0x46, 0x76, 0x88, 0x88, 0x88, 0x88, 0x80,
0x98, 0x88, 0x88, 0x88, 0x76, 0x54, 0x33, 0x33, 0x23, 0x32, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x12, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x44, 0x48, 0x88, 0x88, 0x88, 0x88, 0x80,
0x9A, 0x99, 0x99, 0x99, 0x75, 0x43, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x22, 0x12, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x33, 0x33, 0x34, 0x76, 0x78, 0x88, 0x88, 0x88, 0x80,
0x99, 0x99, 0x99, 0x97, 0x43, 0x33, 0x32, 0x32, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x22, 0x12, 0x22, 0x12, 0x22, 0x22, 0x32, 0x22, 0x22, 0x34, 0x34, 0x88, 0x99, 0x99, 0x99, 0x90,
0x99, 0x99, 0x99, 0x75, 0x43, 0x32, 0x22, 0x22, 0x22, 0x23, 0x23, 0x22, 0x22, 0x22, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x34, 0x68, 0x89, 0x89, 0x89, 0x80,
0xAA, 0xAA, 0xA9, 0x86, 0x53, 0x22, 0x21, 0x22, 0x22, 0x23, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x24, 0x58, 0x99, 0x99, 0x99, 0x90,
0xAA, 0xAA, 0xAA, 0x85, 0x32, 0x22, 0x21, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x24, 0x46, 0x79, 0x99, 0x99, 0x90,
0xAA, 0xAA, 0xA6, 0x33, 0x22, 0x22, 0x21, 0x22, 0x23, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x35, 0x68, 0x99, 0x99, 0x90,
0xBB, 0xBA, 0xA4, 0x32, 0x22, 0x21, 0x21, 0x22, 0x23, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x32, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x34, 0x66, 0x99, 0x99, 0x90,
0xBB, 0xBA, 0x83, 0x22, 0x21, 0x12, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x23, 0x33, 0x22, 0x33, 0x32, 0x22, 0x21, 0x12, 0x22, 0x33, 0x89, 0x99, 0x90,
0xBB, 0xBA, 0x63, 0x22, 0x21, 0x11, 0x23, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x34, 0x45, 0x43, 0x33, 0x33, 0x32, 0x32, 0x21, 0x12, 0x22, 0x23, 0x69, 0x99, 0x90,
0xBB, 0xBA, 0x32, 0x22, 0x21, 0x22, 0x34, 0x44, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x45, 0x44, 0x54, 0x43, 0x33, 0x33, 0x33, 0x43, 0x21, 0x12, 0x22, 0x33, 0x58, 0x99, 0x90,
0xBB, 0xB6, 0x33, 0x22, 0x22, 0x23, 0x44, 0x55, 0x55, 0x56, 0x66, 0x66, 0x76, 0x66, 0x66, 0x55, 0x66, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x44, 0x32, 0x22, 0x22, 0x23, 0x36, 0x99, 0x90,
0xBB, 0x92, 0x33, 0x22, 0x22, 0x34, 0x55, 0x55, 0x56, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x66, 0x67, 0x76, 0x66, 0x66, 0x66, 0x65, 0x55, 0x55, 0x43, 0x22, 0x22, 0x22, 0x34, 0x99, 0x90,
0xBB, 0x43, 0x32, 0x22, 0x23, 0x44, 0x55, 0x55, 0x56, 0x66, 0x66, 0x76, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x66, 0x66, 0x65, 0x54, 0x21, 0x12, 0x22, 0x33, 0x69, 0x90,
0xBC, 0x33, 0x32, 0x22, 0x24, 0x45, 0x55, 0x66, 0x66, 0x66, 0x67, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x65, 0x55, 0x42, 0x12, 0x22, 0x34, 0x79, 0x90,
0xBB, 0x33, 0x22, 0x22, 0x34, 0x45, 0x55, 0x66, 0x66, 0x66, 0x67, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x66, 0x55, 0x43, 0x11, 0x22, 0x33, 0x69, 0x90,
0xBB, 0x23, 0x23, 0x22, 0x34, 0x55, 0x55, 0x66, 0x66, 0x67, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x55, 0x43, 0x22, 0x22, 0x33, 0x49, 0x90,
0xBB, 0x23, 0x33, 0x33, 0x34, 0x55, 0x55, 0x66, 0x67, 0x67, 0x77, 0x77, 0x77, 0x77, 0x77, 0x87, 0x77, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x65, 0x54, 0x32, 0x22, 0x33, 0x47, 0x90,
0xBA, 0x33, 0x33, 0x33, 0x44, 0x55, 0x55, 0x66, 0x67, 0x67, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x77, 0x76, 0x65, 0x55, 0x32, 0x22, 0x33, 0x38, 0x90,
0xB8, 0x33, 0x23, 0x33, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0x77, 0x78, 0x88, 0x89, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x76, 0x66, 0x55, 0x32, 0x23, 0x24, 0x38, 0x90,
0xB9, 0x33, 0x33, 0x33, 0x45, 0x55, 0x55, 0x56, 0x66, 0x67, 0x77, 0x78, 0x88, 0x88, 0x89, 0x98, 0x99, 0x99, 0x98, 0x88, 0x87, 0x77, 0x77, 0x76, 0x66, 0x65, 0x43, 0x23, 0x33, 0x49, 0x90,
0xB9, 0x32, 0x33, 0x34, 0x44, 0x55, 0x55, 0x56, 0x66, 0x67, 0x77, 0x88, 0x88, 0x88, 0x89, 0x88, 0x99, 0x89, 0x98, 0x88, 0x88, 0x77, 0x77, 0x76, 0x66, 0x65, 0x43, 0x33, 0x33, 0x49, 0x90,
0xB9, 0x22, 0x33, 0x34, 0x44, 0x55, 0x55, 0x56, 0x66, 0x67, 0x77, 0x88, 0x88, 0x88, 0x99, 0x89, 0x98, 0x98, 0x88, 0x88, 0x88, 0x77, 0x76, 0x76, 0x66, 0x55, 0x43, 0x33, 0x34, 0x79, 0x90,
0xB8, 0x32, 0x33, 0x34, 0x44, 0x55, 0x55, 0x56, 0x66, 0x67, 0x77, 0x87, 0x88, 0x88, 0x89, 0x89, 0x99, 0x98, 0x88, 0x88, 0x88, 0x77, 0x76, 0x66, 0x65, 0x55, 0x44, 0x33, 0x33, 0x89, 0x90,
0xB5, 0x32, 0x33, 0x34, 0x44, 0x55, 0x55, 0x56, 0x66, 0x67, 0x77, 0x77, 0x88, 0x88, 0x89, 0x89, 0x99, 0x88, 0x88, 0x88, 0x78, 0x77, 0x76, 0x66, 0x66, 0x65, 0x43, 0x33, 0x33, 0x99, 0x90,
0xB5, 0x32, 0x23, 0x34, 0x45, 0x55, 0x56, 0x66, 0x66, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x98, 0x89, 0x88, 0x88, 0x87, 0x77, 0x77, 0x66, 0x66, 0x55, 0x43, 0x33, 0x25, 0x99, 0x90,
0xBA, 0x32, 0x23, 0x33, 0x45, 0x55, 0x66, 0x56, 0x66, 0x77, 0x77, 0x77, 0x78, 0x88, 0x89, 0x89, 0x88, 0x89, 0x88, 0x88, 0x88, 0x77, 0x77, 0x76, 0x66, 0x55, 0x43, 0x33, 0x28, 0x99, 0x90,
0xB9, 0x23, 0x33, 0x34, 0x45, 0x55, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x77, 0x66, 0x65, 0x43, 0x23, 0x29, 0x99, 0x90,
0xB9, 0x23, 0x33, 0x33, 0x55, 0x56, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x88, 0x88, 0x78, 0x77, 0x77, 0x77, 0x76, 0x65, 0x43, 0x23, 0x39, 0x99, 0x90,
0xBB, 0x33, 0x33, 0x34, 0x55, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x76, 0x66, 0x53, 0x23, 0x1A, 0x99, 0x90,
0xAA, 0x33, 0x33, 0x33, 0x55, 0x56, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x89, 0x88, 0x88, 0x88, 0x78, 0x77, 0x77, 0x76, 0x66, 0x53, 0x23, 0x1A, 0xA9, 0x90,
0xAA, 0x23, 0x33, 0x34, 0x56, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x76, 0x66, 0x53, 0x23, 0x1A, 0x99, 0x90,
0xAA, 0x73, 0x33, 0x45, 0x66, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x78, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x66, 0x66, 0x77, 0x76, 0x66, 0x53, 0x33, 0x3A, 0x9A, 0xA0,
0xAB, 0x84, 0x33, 0x35, 0x66, 0x56, 0x55, 0x44, 0x45, 0x43, 0x33, 0x34, 0x56, 0x67, 0x87, 0x77, 0x77, 0x88, 0x65, 0x65, 0x45, 0x55, 0x65, 0x66, 0x66, 0x66, 0x64, 0x33, 0x5A, 0x9A, 0xA0,
0xAA, 0x33, 0x33, 0x36, 0x66, 0x65, 0x44, 0x45, 0x56, 0x55, 0x44, 0x44, 0x55, 0x66, 0x77, 0x67, 0x77, 0x77, 0x54, 0x44, 0x44, 0x44, 0x45, 0x55, 0x66, 0x66, 0x63, 0x33, 0x8A, 0x9A, 0xA0,
0xA6, 0x63, 0x33, 0x46, 0x66, 0x65, 0x55, 0x56, 0x67, 0x77, 0x76, 0x55, 0x55, 0x66, 0x78, 0x77, 0x87, 0x76, 0x55, 0x55, 0x67, 0x77, 0x76, 0x55, 0x55, 0x66, 0x63, 0x43, 0x99, 0x9A, 0xA0,
0xA5, 0x35, 0x33, 0x46, 0x66, 0x55, 0x55, 0x65, 0x65, 0x52, 0x34, 0x45, 0x54, 0x56, 0x78, 0x88, 0x88, 0x76, 0x66, 0x77, 0x88, 0x87, 0x77, 0x65, 0x65, 0x56, 0x63, 0x33, 0x34, 0xAA, 0xA0,
0xB4, 0x45, 0x44, 0x46, 0x66, 0x65, 0x55, 0x43, 0x12, 0x2A, 0x12, 0x54, 0x44, 0x45, 0x68, 0x88, 0x88, 0x76, 0x66, 0x44, 0x12, 0x46, 0x77, 0x66, 0x66, 0x66, 0x63, 0x33, 0x77, 0x9A, 0xA0,
0xB4, 0x45, 0x54, 0x46, 0x66, 0x66, 0x65, 0x32, 0x83, 0x22, 0x35, 0x75, 0x55, 0x45, 0x68, 0x88, 0x87, 0x65, 0x54, 0x51, 0x2A, 0x24, 0x24, 0x66, 0x67, 0x76, 0x63, 0x37, 0x75, 0x8A, 0xA0,
0xB6, 0x45, 0x44, 0x56, 0x66, 0x66, 0x54, 0x55, 0x66, 0x34, 0x58, 0x56, 0x67, 0x44, 0x67, 0x88, 0x86, 0x68, 0x56, 0x83, 0x32, 0x39, 0x74, 0x46, 0x67, 0x77, 0x64, 0x57, 0x66, 0x9A, 0xA0,
0xA7, 0x56, 0x54, 0x56, 0x66, 0x66, 0x56, 0x66, 0x66, 0x66, 0x77, 0x66, 0x66, 0x55, 0x67, 0x88, 0x87, 0x77, 0x65, 0x67, 0x44, 0x77, 0x66, 0x55, 0x67, 0x77, 0x64, 0x68, 0x76, 0x9A, 0xA0,
0xA8, 0x56, 0x54, 0x56, 0x66, 0x66, 0x65, 0x56, 0x66, 0x77, 0x87, 0x66, 0x65, 0x55, 0x67, 0x78, 0x87, 0x67, 0x66, 0x67, 0x76, 0x77, 0x76, 0x66, 0x67, 0x76, 0x64, 0x78, 0x65, 0x9A, 0xA0,
0xAB, 0x66, 0x43, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x76, 0x55, 0x56, 0x67, 0x87, 0x77, 0x76, 0x77, 0x77, 0x78, 0x88, 0x77, 0x77, 0x76, 0x76, 0x64, 0x88, 0x67, 0xAA, 0xA0,
0xAB, 0x56, 0x44, 0x56, 0x66, 0x66, 0x76, 0x66, 0x77, 0x77, 0x77, 0x66, 0x65, 0x56, 0x67, 0x77, 0x87, 0x76, 0x77, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x65, 0x68, 0x78, 0xAA, 0xA0,
0xAA, 0x46, 0x46, 0x56, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x76, 0x77, 0x65, 0x66, 0x67, 0x88, 0x87, 0x76, 0x77, 0x88, 0x88, 0x77, 0x88, 0x77, 0x77, 0x76, 0x66, 0x68, 0x7A, 0xAA, 0xA0,
0xBA, 0x46, 0x55, 0x56, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x66, 0x65, 0x67, 0x78, 0x87, 0x66, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x77, 0x76, 0x67, 0x78, 0x7A, 0xAA, 0xA0,
0xAA, 0x46, 0x63, 0x67, 0x66, 0x66, 0x67, 0x77, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x67, 0x78, 0x87, 0x67, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x77, 0x76, 0x76, 0x78, 0x9A, 0xAA, 0xA0,
0xAA, 0x55, 0x65, 0x37, 0x66, 0x66, 0x67, 0x67, 0x77, 0x77, 0x77, 0x77, 0x66, 0x56, 0x66, 0x78, 0x77, 0x66, 0x77, 0x88, 0x77, 0x77, 0x78, 0x88, 0x77, 0x76, 0x86, 0x78, 0xAA, 0xAA, 0xA0,
0xAA, 0x95, 0x76, 0x56, 0x66, 0x66, 0x66, 0x77, 0x77, 0x87, 0x77, 0x87, 0x75, 0x56, 0x67, 0x78, 0x77, 0x76, 0x88, 0x88, 0x88, 0x77, 0x78, 0x87, 0x77, 0x77, 0x67, 0x77, 0xAA, 0xAA, 0xA0,
0xAA, 0xA5, 0x66, 0x57, 0x66, 0x66, 0x67, 0x77, 0x77, 0x87, 0x88, 0x87, 0x55, 0x56, 0x67, 0x77, 0x87, 0x66, 0x78, 0x88, 0x88, 0x88, 0x87, 0x87, 0x78, 0x76, 0x79, 0x77, 0xAA, 0xAA, 0xA0,
0xAA, 0xA7, 0x66, 0x57, 0x66, 0x66, 0x67, 0x77, 0x77, 0x88, 0x88, 0x76, 0x56, 0x66, 0x67, 0x78, 0x87, 0x66, 0x68, 0x89, 0x88, 0x88, 0x88, 0x87, 0x77, 0x76, 0x99, 0x77, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0x66, 0x56, 0x66, 0x66, 0x77, 0x77, 0x78, 0x88, 0x77, 0x65, 0x57, 0x66, 0x67, 0x8A, 0x97, 0x77, 0x77, 0x79, 0x98, 0x98, 0x88, 0x88, 0x87, 0x76, 0x88, 0x6A, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0x66, 0x57, 0x66, 0x66, 0x77, 0x77, 0x78, 0x88, 0x76, 0x65, 0x57, 0x76, 0x68, 0x89, 0x88, 0x77, 0x77, 0x77, 0x89, 0x98, 0x88, 0x88, 0x87, 0x76, 0x87, 0x6A, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0xA6, 0x57, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x65, 0x44, 0x46, 0x68, 0x88, 0x88, 0x77, 0x77, 0x77, 0x88, 0x98, 0x88, 0x88, 0x87, 0x76, 0x88, 0x7A, 0xAA, 0xAA, 0xA0,
0xA9, 0xAA, 0xAA, 0xA8, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x55, 0x44, 0x47, 0x77, 0x86, 0x55, 0x77, 0x77, 0x78, 0x88, 0x88, 0x88, 0x77, 0x76, 0x76, 0xAA, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0xAA, 0xA9, 0x66, 0x66, 0x67, 0x77, 0x77, 0x77, 0x76, 0x66, 0x66, 0x54, 0x45, 0x66, 0x66, 0x66, 0x77, 0x78, 0x88, 0x88, 0x88, 0x88, 0x77, 0x66, 0x8B, 0xAA, 0xAA, 0xAA, 0xA0,
0x9A, 0xAA, 0xA9, 0x9A, 0x77, 0x66, 0x77, 0x77, 0x77, 0x77, 0x76, 0x66, 0x66, 0x66, 0x65, 0x45, 0x56, 0x67, 0x77, 0x77, 0x87, 0x88, 0x88, 0x88, 0x77, 0x75, 0xBA, 0xAA, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0xAA, 0xAA, 0x67, 0x66, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x67, 0x67, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x87, 0x78, 0x88, 0x88, 0x77, 0x64, 0xBA, 0xAA, 0xAA, 0xAA, 0xA0,
0xA9, 0xAA, 0xAA, 0xAA, 0x67, 0x66, 0x67, 0x77, 0x77, 0x77, 0x56, 0x55, 0x55, 0x66, 0x77, 0x77, 0x78, 0x87, 0x67, 0x77, 0x88, 0x77, 0x88, 0x88, 0x77, 0x75, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0xAA, 0xA9, 0x57, 0x66, 0x67, 0x78, 0x87, 0x76, 0x33, 0x34, 0x33, 0x45, 0x57, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x87, 0x77, 0x79, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0xAA, 0xAA, 0x76, 0x66, 0x77, 0x77, 0x89, 0x77, 0x66, 0x54, 0x44, 0x43, 0x23, 0x34, 0x34, 0x56, 0x66, 0x75, 0x68, 0x78, 0x88, 0x88, 0x77, 0x5B, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xAA, 0xAA, 0xAA, 0xAA, 0x76, 0x66, 0x75, 0x78, 0x88, 0x77, 0x76, 0x65, 0x55, 0x56, 0x65, 0x55, 0x55, 0x43, 0x34, 0x67, 0x67, 0x88, 0x88, 0x88, 0x76, 0x5A, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xA9, 0xAA, 0xAA, 0xAA, 0x76, 0x77, 0x76, 0x77, 0x78, 0x87, 0x76, 0x66, 0x65, 0x56, 0x66, 0x67, 0x66, 0x56, 0x67, 0x88, 0x88, 0x88, 0x88, 0x87, 0x76, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xA9, 0xAA, 0xAA, 0xAA, 0x66, 0x67, 0x67, 0x77, 0x78, 0x87, 0x76, 0x76, 0x76, 0x66, 0x76, 0x67, 0x67, 0x77, 0x78, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xA9, 0x9A, 0xAA, 0xAA, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x76, 0x76, 0x77, 0x67, 0x66, 0x67, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x7B, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xA9, 0xAA, 0xAA, 0xAA, 0x66, 0x56, 0x67, 0x77, 0x77, 0x77, 0x76, 0x67, 0x67, 0x77, 0x77, 0x77, 0x88, 0x88, 0x78, 0x88, 0x88, 0x88, 0x88, 0x77, 0x6A, 0xBA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xA9, 0xAA, 0xAA, 0x74, 0x65, 0x55, 0x66, 0x66, 0x67, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0xBA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0xAA, 0x9A, 0xA8, 0x54, 0x65, 0x55, 0x66, 0x66, 0x67, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x78, 0x5B, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0x99, 0xA9, 0x97, 0x45, 0x66, 0x65, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x66, 0x67, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x76, 0xBA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBA, 0xA0,
0x99, 0x99, 0x85, 0x75, 0x66, 0x66, 0x55, 0x55, 0x66, 0x66, 0x67, 0x77, 0x67, 0x77, 0x78, 0x87, 0x88, 0x88, 0x88, 0x88, 0x78, 0x77, 0x75, 0xBA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBB, 0xAA, 0xA0,
0x99, 0x99, 0x93, 0x73, 0x66, 0x66, 0x55, 0x55, 0x56, 0x66, 0x66, 0x77, 0x67, 0x78, 0x78, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x77, 0x67, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0x99, 0x99, 0x95, 0x63, 0x65, 0x66, 0x56, 0x55, 0x55, 0x56, 0x67, 0x77, 0x67, 0x67, 0x78, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x76, 0x66, 0xAB, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0x99, 0x99, 0x97, 0x33, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x88, 0x87, 0x77, 0x77, 0x76, 0x66, 0x74, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0,
0x99, 0x99, 0xA3, 0x32, 0x55, 0x66, 0x65, 0x55, 0x55, 0x55, 0x65, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x88, 0x77, 0x77, 0x66, 0x67, 0x62, 0xA9, 0xAA, 0xBA, 0xAA, 0xBB, 0xAA, 0xAA, 0xA0,
0x99, 0x9A, 0x91, 0x23, 0x56, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x87, 0x77, 0x66, 0x76, 0x77, 0x62, 0x9A, 0xAA, 0xBA, 0xBA, 0xAA, 0xBA, 0xBA, 0xA0,
0x99, 0x9A, 0xA1, 0x33, 0x56, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x67, 0x77, 0x76, 0x76, 0x76, 0x66, 0x67, 0x77, 0x77, 0x33, 0x9A, 0xAA, 0xAA, 0xAA, 0xAA, 0xBB, 0xAB, 0xB0,
0x99, 0x9A, 0xA2, 0x23, 0x55, 0x66, 0x66, 0x65, 0x55, 0x55, 0x55, 0x55, 0x56, 0x66, 0x66, 0x66, 0x66, 0x55, 0x56, 0x67, 0x77, 0x77, 0x23, 0x9A, 0xAA, 0xBB, 0xBB, 0xAA, 0xBA, 0xAA, 0xB0,
0x99, 0x9A, 0xA5, 0x34, 0x55, 0x66, 0x66, 0x65, 0x66, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x67, 0x77, 0x77, 0x77, 0x22, 0x9A, 0xAB, 0xAA, 0xBA, 0xAA, 0xBA, 0xAA, 0xA0,
0x99, 0x9A, 0xA8, 0x34, 0x45, 0x66, 0x66, 0x56, 0x66, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x66, 0x67, 0x77, 0x77, 0x77, 0x75, 0x31, 0x8A, 0xAA, 0x9A, 0xAA, 0xBB, 0xAB, 0xBA, 0xA0,
0x99, 0x9A, 0xA9, 0x34, 0x45, 0x66, 0x76, 0x66, 0x66, 0x65, 0x66, 0x66, 0x66, 0x65, 0x67, 0x77, 0x77, 0x77, 0x88, 0x77, 0x77, 0x75, 0x31, 0x9B, 0xBA, 0xBA, 0xAA, 0x9A, 0xBB, 0xBA, 0xB0,
0x9A, 0x9A, 0xAA, 0x54, 0x45, 0x56, 0x66, 0x76, 0x77, 0x66, 0x66, 0x77, 0x77, 0x77, 0x67, 0x77, 0x77, 0x77, 0x78, 0x77, 0x77, 0x64, 0x31, 0xAA, 0xAA, 0xAB, 0xBB, 0xBA, 0x9A, 0xAA, 0xB0,
0x99, 0x9A, 0xAA, 0xA3, 0x45, 0x56, 0x66, 0x77, 0x77, 0x67, 0x67, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x64, 0x35, 0xAA, 0xBA, 0xBB, 0xBA, 0xAA, 0xBB, 0xAA, 0xA0,
0xA9, 0xAA, 0xAA, 0xB8, 0x44, 0x56, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x89, 0x88, 0x88, 0x88, 0x78, 0x77, 0x77, 0x53, 0x27, 0xAB, 0xBA, 0xBA, 0xBB, 0xBB, 0xBA, 0xAA, 0xB0
};
/*********************************************************************
*
* GUIDEMO_bm4bpp
*
**********************************************************************
*/
const GUI_BITMAP GUIDEMO_bm4bpp = {
61, /* XSize */
92, /* YSize */
31, /* BytesPerLine */
4, /* BitsPerPixel */
_acJoerg, /* Pointer to picture data (indices) */
&_PalJoerg /* Pointer to palette */
};
@@ -0,0 +1,76 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Circle.c
Purpose : Drawing circles
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
/*********************************************************************
*
* GUIDEMO_Circle
*
**********************************************************************
*/
void GUIDEMO_Circle(void) {
int x0, y0, r;
GUIDEMO_ShowIntro("Circles",
"\nArbitrary circles"
"\nand arcs.");
GUI_Clear();
GUI_SetFont(&GUI_Font8x16);
GUI_SetColor(GUI_WHITE);
x0 = LCD_XSIZE >> 1;
y0 = LCD_YSIZE >> 1;
#if GUIDEMO_LARGE
r = 50;
GUI_DispStringAt("Circle", 0, 0);
#elif !(GUIDEMO_TINY)
r = 40;
#else
#if (LCD_YSIZE < 80)
r = 23;
#else
r = 30;
#endif
#endif
GUI_FillCircle (x0, y0, r);
GUIDEMO_Wait();
GUI_SetDrawMode(GUI_DM_XOR);
#if GUIDEMO_LARGE
GUI_FillCircle (x0, y0, r + 10);
#elif !(GUIDEMO_TINY)
GUI_FillCircle (x0, y0, r + 8);
#else
GUI_FillCircle (x0, y0, r + 6);
#endif
GUI_SetDrawMode(0);
GUIDEMO_Wait();
#if GUI_SUPPORT_AA
#if GUIDEMO_LARGE
GUIDEMO_ShowInfo("Circles with\nAntialiasing");
#endif
GUI_Clear();
GUI_SetColor(GUI_WHITE);
#if GUIDEMO_LARGE
GUI_DispStringAt("Antialiased\ncircle", 0, 0);
#endif
GUI_AA_FillCircle(x0, y0, r - 2);
GUIDEMO_Wait();
#endif
}
@@ -0,0 +1,166 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* ľC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_ShowColorBar.c
Purpose : Draws color bars
----------------------------------------------------------------------
*/
#include "LCD.h" /* interface definitions */
#include "LCD_ConfDefaults.h" /* valid LCD configuration */
#include "GUI.h"
#include "GUIDEMO.h"
/*********************************************************************
*
* GUIDEMO_ShowColorBar
*
**********************************************************************
*/
#if LCD_BITSPERPIXEL > 2
void GUIDEMO_ShowColorBar(void) {
int nBars = 13;
int NumColors = LCD_GetDevCap(LCD_DEVCAP_NUMCOLORS);
int XSize = LCD_XSIZE;
int i, yStep, y0, x0;
#if GUIDEMO_LARGE
y0 = 70;
x0 = 60;
GUIDEMO_ShowIntro("Color bar",
"emWin features "
"\nan integrated color"
"\nmanagement"
"\nwill always find the best available color"
"\nfor any logical color");
#else
#if !(GUIDEMO_TINY)
y0 = 55;
x0 = 55;
GUIDEMO_ShowIntro("Color bar",
"emWin features "
"\nan integrated color"
"\nmanagement will always"
"\nfind the best available"
"\ncolor for any logical color");
#else
y0 = 16;
x0 = 40;
GUIDEMO_ShowIntro("Color bar",
"emWin features "
"\nan integrated color"
"\nmanagement");
#endif
#endif
XSize -= x0;
#if (LCD_YSIZE < 320)
yStep = (LCD_YSIZE - y0) / nBars;
#else
yStep = (LCD_YSIZE - y0 - 60) / nBars;
#endif
GUI_SetColor(GUI_WHITE);
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_SetFont(&GUI_Font8x16);
GUI_DispString("Color bars\n");
#if !(GUIDEMO_TINY)
GUI_SetFont(&GUI_Font8_ASCII);
#ifdef LCD_CONTROLLER
GUI_DispString("\nLCD_CONTROLLER: ");
GUI_DispDecMin(LCD_CONTROLLER);
GUI_DispString("\n");
#endif
GUI_DispDecMin(LCD_BITSPERPIXEL);
GUI_DispString(" bpp");
#ifdef LCD_BUSWIDTH
GUI_DispString(", ");
GUI_DispDecMin(LCD_BUSWIDTH);
GUI_DispString(" bit bus");
#endif
GUI_DispString(", ");
GUI_DispDecMin(NumColors);
GUI_DispString(" colors\n");
#if (LCD_FIXEDPALETTE)
GUI_DispString("Fixed palette: ");
GUI_DispDecMin(LCD_FIXEDPALETTE);
#else
GUI_DispString("(Custom)");
#endif
#endif
#if !GUIDEMO_LARGE
#if (LCD_YSIZE < 100)
GUI_SetFont(&GUI_Font4x6);
#elif (LCD_YSIZE < 160)
GUI_SetFont(&GUI_Font6x8);
#else
GUI_SetFont(&GUI_Font8x8);
#endif
#else
GUI_SetFont(&GUI_Font8x8);
#endif
GUI_SetColor(GUI_WHITE);
GUI_DispStringAt("Red", 0, y0 + yStep);
GUI_DispStringAt("Green", 0, y0 + 3 * yStep);
GUI_DispStringAt("Blue", 0, y0 + 5 * yStep);
GUI_DispStringAt("Grey", 0, y0 + 6 * yStep);
GUI_DispStringAt("Yellow", 0, y0 + 8 * yStep);
GUI_DispStringAt("Cyan", 0, y0 + 10 * yStep);
GUI_DispStringAt("Magenta", 0, y0 + 12 * yStep);
for (i = 0; (i < XSize) && !GUIDEMO_CheckCancel(); i++) {
U16 cs = (255 * (U32)i) / XSize;
U16 x = x0 + i;;
/* Red */
GUI_SetColor(cs);
GUI_DrawVLine(x, y0, y0 + yStep - 1);
GUI_SetColor(0x0000ff + (255 - cs) * 0x10100L);
GUI_DrawVLine(x, y0 + yStep, y0 + 2 * yStep - 1);
/* Green */
GUI_SetColor(cs<<8);
GUI_DrawVLine(x, y0 + 2 * yStep, y0 + 3 * yStep - 1);
GUI_SetColor(0x00ff00 + (255 - cs) * 0x10001L);
GUI_DrawVLine(x, y0 + 3 * yStep, y0 + 4 * yStep - 1);
/* Blue */
GUI_SetColor(cs * 0x10000L);
GUI_DrawVLine(x, y0 + 4 * yStep, y0 + 5 * yStep - 1);
GUI_SetColor(0xff0000 + (255 - cs) * 0x00101L);
GUI_DrawVLine(x, y0 + 5 * yStep, y0 + 6 * yStep - 1);
/* Gray */
GUI_SetColor(cs * 0x10101L);
GUI_DrawVLine(x, y0 + 6 * yStep, y0 + 7 * yStep - 1);
/* Yellow */
GUI_SetColor(cs * 0x00101L);
GUI_DrawVLine(x, y0 + 7 * yStep, y0 + 8 * yStep - 1);
GUI_SetColor(0x00ffff + (255 - cs) * 0x10000L);
GUI_DrawVLine(x, y0 + 8 * yStep, y0 + 9 * yStep - 1);
/* Cyan */
GUI_SetColor(cs * 0x10100L);
GUI_DrawVLine(x, y0 + 9 * yStep, y0 + 10 * yStep - 1);
GUI_SetColor(0xffff00 + (255 - cs) * 0x00001L);
GUI_DrawVLine(x, y0 + 10 * yStep, y0 + 11 * yStep - 1);
/* Magenta */
GUI_SetColor(cs * 0x10001L);
GUI_DrawVLine(x, y0 + 11 * yStep, y0 + 12 * yStep - 1);
GUI_SetColor(0xff00ff + (255 - cs) * 0x00100L);
GUI_DrawVLine(x, y0 + 12 * yStep, y0 + 13 * yStep - 1);
}
GUIDEMO_Wait();
}
#else
void GUIDEMO_ShowColorBar(void) {}
#endif
@@ -0,0 +1,118 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_ColorList.c
Purpose : Shows color list
----------------------------------------------------------------------
*/
#include "LCD_ConfDefaults.h" /* valid LCD configuration */
#include "GUI.h"
#include "GUIDEMO.h"
/*********************************************************************
*
* GUIDEMO_ShowColorList
*
**********************************************************************
*/
#if (LCD_BITSPERPIXEL > 2) && (LCD_BITSPERPIXEL <= 8)
void GUIDEMO_ShowColorList(void) {
int NumColors = LCD_GetDevCap(LCD_DEVCAP_NUMCOLORS);
int Lines = (NumColors - 1) / 16 + 1;
int y0;
#if (LCD_BITSPERPIXEL > 8)
int XStep = LCD_XSIZE / 256;
int YStep = NumColors / 256;
#endif
int i;
#if GUIDEMO_LARGE
y0 = 70;
#elif !(GUIDEMO_TINY)
#if (LCD_YSIZE < 120)
y0 = 50;
#else
y0 = 55;
#endif
#else
y0 = 16;
#endif
GUIDEMO_ShowIntro("Available colors",
"Shows the first of the"
"\navailable colors in the"
"\nsimulated configuration");
GUI_SetColor(GUI_WHITE);
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_SetFont(&GUI_Font8x16);
GUI_DispString("Available colors\n");
#if !(GUIDEMO_TINY)
GUI_SetFont(&GUI_Font8_ASCII);
#ifdef LCD_CONTROLLER
GUI_DispString("\nLCD_CONTROLLER: ");
GUI_DispDecMin(LCD_CONTROLLER);
GUI_DispString("\n");
#endif
GUI_DispDecMin(LCD_BITSPERPIXEL);
GUI_DispString(" bpp");
#ifdef LCD_BUSWIDTH
GUI_DispString(", ");
GUI_DispDecMin(LCD_BUSWIDTH);
GUI_DispString(" bit bus");
#endif
GUI_DispString(", ");
GUI_DispDecMin(NumColors);
GUI_DispString(" colors\n");
#if (LCD_FIXEDPALETTE)
GUI_DispString("Fixed palette: ");
GUI_DispDecMin(LCD_FIXEDPALETTE);
#else
GUI_DispString("(Custom)");
#endif
#endif
#if (LCD_BITSPERPIXEL <= 8)
{
int XStep = LCD_XSIZE / 16;
#if (LCD_YSIZE < 320)
int YStep = (LCD_YSIZE - y0) / Lines;
#else
int YStep = (LCD_YSIZE - y0 - 60) / Lines;
#endif
int dy = (YStep <= 3) ? 1 : 2;
for (i = 0; i < NumColors; i++) {
GUI_SetColorIndex(i);
GUI_FillRect((i%16) * XStep + 2,
(i/16) * YStep + y0 + 1,
(i%16 + 1) * XStep - 1,
(i/16 + 1) * YStep + y0 - dy);
}
}
#else
{
for (i = 0; i < NumColors; i++) {
GUI_SetColorIndex(i);
GUI_DrawPoint((U8)(i) + ((LCD_XSIZE - 1 - 256) >> 1), (i >> 8) + y0);
}
}
#endif
GUIDEMO_Delay(2500);
}
#else
void GUIDEMO_ShowColorList(void) {}
#endif
@@ -0,0 +1,303 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* ľC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Cursor.c
Purpose : shows Cursor-API
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
#if (GUI_SUPPORT_CURSOR & GUI_SUPPORT_TOUCH)
/*********************************************************************
*
* defines
*
**********************************************************************
*/
#define countof(Obj) (sizeof(Obj)/sizeof(Obj[0]))
#if GUIDEMO_LARGE
#define NUM_CURSORS 3
#define XMAX 28
#else
#define NUM_CURSORS 2
#define XMAX 24
#endif
/*********************************************************************
*
* types
*
**********************************************************************
*/
typedef struct {
const GUI_CURSOR* pCursor;
char Size;
} CURSOR_INFO;
typedef struct {
const CURSOR_INFO aCursor[NUM_CURSORS];
const char* pType;
} CURSORTYPE_INFO;
/*********************************************************************
*
* static data
*
**********************************************************************
*/
static const CURSORTYPE_INFO _CursorArrow = {
&GUI_CursorArrowS, 'S',
&GUI_CursorArrowM, 'M',
#if (NUM_CURSORS == 3)
&GUI_CursorArrowL, 'L',
"arrow cursors"
#else
"arrow\ncursors"
#endif
};
#if !(GUIDEMO_TINY)
static const CURSORTYPE_INFO _CursorArrowI = {
&GUI_CursorArrowSI, 'S',
&GUI_CursorArrowMI, 'M',
#if (NUM_CURSORS == 3)
&GUI_CursorArrowLI, 'L',
"inverted arrow cursors"
#else
"inverted\narrow cursors"
#endif
};
#endif
static const CURSORTYPE_INFO _CursorCross = {
&GUI_CursorCrossS, 'S',
&GUI_CursorCrossM, 'M',
#if (NUM_CURSORS == 3)
&GUI_CursorCrossL, 'L',
"cross cursors"
#else
"cross\ncursors"
#endif
};
#if !(GUIDEMO_TINY)
static const CURSORTYPE_INFO _CursorCrossI = {
&GUI_CursorCrossSI, 'S',
&GUI_CursorCrossMI, 'M',
#if (NUM_CURSORS == 3)
&GUI_CursorCrossLI, 'L',
"inverted cross cursors"
#else
"inverted\ncross cursors"
#endif
};
#endif
static const GUI_CURSOR* _aCursor[] = {
&GUI_CursorArrowM,
#if !(GUIDEMO_TINY)
&GUI_CursorArrowMI,
#endif
&GUI_CursorCrossM,
#if !(GUIDEMO_TINY)
&GUI_CursorCrossMI,
#endif
};
/*********************************************************************
*
* static code
*
**********************************************************************
*/
/*********************************************************************
*
* _ShowCursorType
*/
static void _ShowCursorType(const CURSORTYPE_INFO* pCursorType, int x0, int y0) {
const GUI_CURSOR* pCursor;
char Char;
int i, x, y;
int yMax = 0;
int yHot = 0;
/* Calculate height and width of biggest cursor */
for (i = 0; i < NUM_CURSORS; i++) {
pCursor = pCursorType->aCursor[i].pCursor;
if (pCursor->pBitmap->YSize > yMax) {
yMax = pCursor->pBitmap->YSize;
yHot = pCursor->yHot;
}
}
#if ((LCD_YSIZE >= 220) && (LCD_XSIZE >= 300))
GUI_SetFont(&GUI_FontComic18B_ASCII);
#else
GUI_SetFont(&GUI_Font13B_ASCII);
#endif
#if (NUM_CURSORS != 3)
GUI_SetLBorder(x0);
#endif
GUI_DispStringAt(pCursorType->pType, x0, y0);
#if GUIDEMO_LARGE
y0 += GUI_GetFontDistY() + 1;
GUI_SetFont(&GUI_Font13B_ASCII);
#else
#if (LCD_YSIZE < 80)
x0 += 50;
#else
y0 += GUI_GetFontDistY() * 2 + 1;
#endif
GUI_SetFont(&GUI_Font10_ASCII);
#endif
for (i = 0; i < NUM_CURSORS; i++) {
pCursor = pCursorType->aCursor[i].pCursor;
Char = pCursorType->aCursor[i].Size;
y = y0 + yHot - pCursor->yHot;
x = ((pCursor->pBitmap->XSize - GUI_GetCharDistX(Char)) >> 1);
GUI_DrawBitmap(pCursor->pBitmap, x0 + XMAX * i + 5, y);
GUI_DispCharAt(Char, x0 + XMAX * i + 5 + x, y0 + yMax + 2);
}
}
/*********************************************************************
*
* _MoveCursor
*/
static void _MoveCursor(const GUI_CURSOR* Cursor){
int x, y;
int xMax = LCD_XSIZE >> 1;
int yMax = LCD_YSIZE >> 1;
#if !GUIDEMO_LARGE
xMax *= 1.3;
yMax *= 1.3;
#endif
GUI_CURSOR_Select(Cursor);
for(x = y = 0; ((x < xMax) && (y < yMax) && !GUIDEMO_CheckCancel()); x += 6, y += 6) {
if ( x == xMax) {
x = xMax;
}
if ( y == yMax) {
y = yMax;
}
GUI_CURSOR_SetPosition(x, y);
GUIDEMO_Delay(75);
}
}
/*********************************************************************
*
* _DispCursor
*/
static void _DispCursor(void) {
#if !(GUIDEMO_LARGE)
int x0 = 0;
#endif
int y0, dx, dy;
GUI_CURSOR_Hide();
GUI_SetTextMode(GUI_TM_TRANS);
#if GUIDEMO_LARGE
GUI_SetFont(&GUI_FontComic24B_ASCII);
GUI_DispStringAt("Available\n cursors:", 18, 12);
#else
#if GUIDEMO_TINY
GUI_SetFont(&GUI_Font13B_ASCII);
#else
GUI_SetFont(&GUI_FontComic18B_ASCII);
#endif
GUI_DispStringHCenterAt("Available cursors:", LCD_XSIZE >> 1, LCD_YSIZE >> 5);
#endif
/* Display the cursors */
#if GUIDEMO_LARGE
y0 = 68;
dx = LCD_XSIZE / 2.5;
#if (LCD_YSIZE > 240)
dy = LCD_YSIZE / 3.2;
#else
dy = 75;
#endif
#if ((LCD_YSIZE < 220) || (LCD_XSIZE < 300))
y0 -= 3;
dy -= 12;
#endif
_ShowCursorType(&_CursorArrow, 0, y0);
_ShowCursorType(&_CursorCross, 0, y0 + dy);
_ShowCursorType(&_CursorArrowI, dx, y0);
_ShowCursorType(&_CursorCrossI, dx, y0 + dy);
#else
#if GUIDEMO_TINY
y0 = 20;
#else
y0 = 30;
#endif
#if ((LCD_XSIZE < 160) && ((LCD_YSIZE >= 160) || (LCD_YSIZE < 90)))
x0 = 10;
#endif
dx = LCD_XSIZE / 2.2;
dy = LCD_YSIZE / 2.6;
_ShowCursorType(&_CursorArrow, x0, y0);
#if (LCD_YSIZE >= 160)
_ShowCursorType(&_CursorCross, x0, y0 + dy);
#elif (LCD_YSIZE < 90)
GUIDEMO_Delay(2000);
GUI_ClearRect(0, 20, LCD_XSIZE - 1, LCD_YSIZE - 1);
_ShowCursorType(&_CursorCross, x0, y0);
#else
_ShowCursorType(&_CursorCross, dx, y0);
#endif
#if ((LCD_YSIZE >= 160) && (LCD_XSIZE >= 160))
_ShowCursorType(&_CursorArrowI, dx, y0);
_ShowCursorType(&_CursorCrossI, dx, y0 + dy);
#endif
#endif
}
/*********************************************************************
*
* public code
*
**********************************************************************
*/
/*********************************************************************
*
* GUIDEMO_Cursor
*/
void GUIDEMO_Cursor(void) {
int i = 0;
GUIDEMO_ShowIntro("Cursor",
"\nemWin supports"
"\nsoftware cursor");
GUIDEMO_SetBkColor(GUI_BLUE);
GUI_Clear();
_DispCursor();
GUIDEMO_Delay(1500);
GUIDEMO_NotifyStartNext();
GUI_CURSOR_Show();
for ( i = 0;(i < countof(_aCursor) && !GUIDEMO_CheckCancel()); i++) {
_MoveCursor(_aCursor[i]);
}
GUI_CURSOR_SetPosition(0,0);
GUI_CURSOR_Select(&GUI_CursorArrowM);
}
#else
void GUIDEMO_Cursor(void) {}
#endif
@@ -0,0 +1,272 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Dialog.c
Purpose : Automotive samples
----------------------------------------------------------------------
*/
#include <stddef.h> /* needed for definition of NULL */
#include "GUI.h"
#include "GUIDEMO.h"
#include "LCD_ConfDefaults.h"
#if GUI_SUPPORT_MEMDEV && GUI_WINSUPPORT
#include "WM.h"
#include "DIALOG.h"
#include "LISTBOX.h"
#include "EDIT.h"
#include "SLIDER.h"
#include "FRAMEWIN.h"
/*********************************************************************
*
* types
*
**********************************************************************
*/
typedef struct {
unsigned char Id;
int Time;
} KEYSIM;
/*********************************************************************
*
* static data
*
**********************************************************************
*/
#if GUIDEMO_LARGE
static const GUI_WIDGET_CREATE_INFO aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "Dialog", 0, 10, 10, 162, 214, FRAMEWIN_CF_MOVEABLE},
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 90, 5, 60, 20 },
{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 90, 30, 60, 20 },
{ TEXT_CreateIndirect, "LText", 0, 5, 59, 43, 15, TEXT_CF_LEFT },
{ TEXT_CreateIndirect, "RText", 0, 5, 79, 43, 15, TEXT_CF_RIGHT },
{ TEXT_CreateIndirect, "Hex", 0, 5, 99, 48, 15, TEXT_CF_LEFT },
{ TEXT_CreateIndirect, "Bin", 0, 5, 119, 48, 15, TEXT_CF_LEFT },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT0, 50, 59, 100, 15, EDIT_CF_LEFT, 50 },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT1, 50, 79, 100, 15, EDIT_CF_RIGHT, 50 },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT2, 50, 99, 100, 15, EDIT_CF_RIGHT, 6 },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT3, 50, 119, 100, 15, EDIT_CF_LEFT, 0 },
{ LISTBOX_CreateIndirect, "", GUI_ID_LISTBOX0, 5, 5, 75, 45, 0, 0 },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER1, 5, 140, 100, 20, 0, 0 },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER0, 5, 165, 145, 26, 0, 0 }
};
static const KEYSIM _aID[] = {
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_DOWN, 250 },
{ GUI_KEY_DOWN, 250 },
{ GUI_KEY_DOWN, 250 },
{ GUI_KEY_DOWN, 250 },
{ GUI_KEY_UP, 250 },
{ GUI_KEY_UP, 250 }
};
static const GUI_ConstString _apListBox[] = {
"English", "Deutsch", "Français", "Japanese", "Italiano", NULL
};
#elif !(GUIDEMO_TINY)
static const GUI_WIDGET_CREATE_INFO aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "Dialog", 0, 10, 10, 132, 113, FRAMEWIN_CF_MOVEABLE},
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 5, 5, 55, 20 },
{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 65, 5, 55, 20 },
{ TEXT_CreateIndirect, "LText", 0, 5, 32, 33, 15, TEXT_CF_LEFT },
{ TEXT_CreateIndirect, "RText", 0, 5, 52, 33, 15, TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT0, 40, 32, 80, 15, EDIT_CF_LEFT, 50 },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT1, 40, 52, 80, 15, EDIT_CF_RIGHT, 50 },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER0, 5, 74, 116, 20, 0, 0 },
};
static const KEYSIM _aID[] = {
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
};
#else
static const GUI_WIDGET_CREATE_INFO aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "Dialog", 0, 0, 0, 110, 84, FRAMEWIN_CF_MOVEABLE},
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 4, 3, 95, 18 },
{ TEXT_CreateIndirect, "Text", 0, 5, 25, 28, 15, TEXT_CF_LEFT },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT0, 30, 25, 69, 15, EDIT_CF_LEFT, 50 },
};
static const KEYSIM _aID[] = {
{ GUI_KEY_TAB, 400 },
{ GUI_KEY_TAB, 400 },
};
#endif
/*********************************************************************
*
* static code
*
**********************************************************************
*/
/*********************************************************************
*
* _cbCallback
*/
static void _cbCallback(WM_MESSAGE * pMsg) {
WM_HWIN hWin = pMsg->hWin;
#if GUIDEMO_LARGE
int NCode, Id;
#endif
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
/* Initialize all widgets */
#if GUIDEMO_TINY
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "EDIT");
#else
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "EDIT widget 0");
EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT1), "EDIT widget 1");
#endif
{
#if GUIDEMO_LARGE
WM_HWIN hListBox;
EDIT_SetHexMode(WM_GetDialogItem(hWin, GUI_ID_EDIT2), 0x1234, 0, 0xffffff);
EDIT_SetBinMode(WM_GetDialogItem(hWin, GUI_ID_EDIT3), 0x1234, 0, 0xffff);
hListBox = WM_GetDialogItem(hWin, GUI_ID_LISTBOX0);
LISTBOX_SetText(hListBox, _apListBox);
SCROLLBAR_CreateAttached(hListBox, SCROLLBAR_CF_VERTICAL);
#else
GUI_RECT Rect;
int x, y, ySize;
ySize = LCD_GetYSize();
if (ySize < 120) {
WM_ResizeWindow(hWin, 0, -24);
}
WM_GetWindowRectEx(hWin, &Rect);
x = (LCD_GetXSize() - (Rect.x1 - Rect.x0 + 1)) >> 1;
y = (ySize - (Rect.y1 - Rect.y0 + 1)) >> 1;
#if GUIDEMO_TINY
WM_MoveTo(hWin, x, y);
#else
WM_MoveTo(hWin, x, y - 4);
#endif
#endif
}
break;
case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
case GUI_KEY_ESCAPE:
GUI_EndDialog(hWin, 1);
break;
case GUI_KEY_ENTER:
GUI_EndDialog(hWin, 0);
break;
}
break;
#if GUIDEMO_LARGE
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */
NCode = pMsg->Data.v; /* Notification code */
switch (NCode) {
case WM_NOTIFICATION_RELEASED: /* React only if released */
if (Id == GUI_ID_OK) { /* OK Button */
GUI_EndDialog(hWin, 0);
}
if (Id == GUI_ID_CANCEL) { /* Cancel Button */
GUI_EndDialog(hWin, 1);
}
break;
case WM_NOTIFICATION_SEL_CHANGED: /* Selection changed */
FRAMEWIN_SetText(hWin, "Dialog - sel changed");
break;
default:
FRAMEWIN_SetText(hWin, "Dialog - notification received");
}
break;
#endif
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* public code
*
**********************************************************************
*/
/*********************************************************************
*
* GUIDEMO_Dialog
*/
void GUIDEMO_Dialog(void) {
int i;
WM_HWIN hWin;
GUI_COLOR DesktopColorOld;
GUIDEMO_ShowIntro("Dialog boxes", "\nDialog boxes\ncan easily be created");
GUIDEMO_HideInfoWin();
DesktopColorOld = GUIDEMO_SetBkColor(GUI_RED);
DesktopColorOld = WM_SetDesktopColor(DesktopColorOld); /* Automatically update desktop window */
hWin = GUI_CreateDialogBox(aDialogCreate, GUI_COUNTOF(aDialogCreate), _cbCallback, 0, 0, 0);
for (i = 0; i < GUI_COUNTOF(_aID); i++) {
GUIDEMO_Delay(_aID[i].Time);
GUI_SendKeyMsg(_aID[i].Id, 1);
}
#if !(GUIDEMO_TINY)
#if !(GUIDEMO_LARGE)
if (LCD_GetYSize() < 120) {
} else
#endif
{
GUIDEMO_Delay(1000);
for (i = 0; i <= 100; i += 10) {
if (WM_IsWindow(hWin)) {
SLIDER_SetValue(WM_GetDialogItem(hWin, GUI_ID_SLIDER0), i);
}
GUIDEMO_Delay(100);
}
}
#endif
GUIDEMO_Delay(800);
if (WM_IsWindow(hWin)) {
WM_MoveTo(hWin, 20, 20);
GUIDEMO_Delay(500);
}
if (WM_IsWindow(hWin)) {
WM_MoveTo(hWin, 60, 20);
GUIDEMO_Delay(800);
}
/* Cleanup ... */
if (WM_IsWindow(hWin)) {
WM_DeleteWindow(hWin);
}
GUIDEMO_NotifyStartNext();
WM_SetDesktopColor(DesktopColorOld); /* Restore old settings */
}
#else
void GUIDEMO_Dialog(void) {}
#endif /* GUI_SUPPORT_MEMDEV */
@@ -0,0 +1,128 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_DemoFrameWin.c
Purpose : Demonstrates the FRAMEWIN widget
----------------------------------------------------------------------
*/
#include <stddef.h>
#include "GUI.h"
#include "GUIDEMO.h"
#if GUI_WINSUPPORT
#include "WM.h"
#include "LISTBOX.h"
#include "FRAMEWIN.h"
/*********************************************************************
*
* defines
*
**********************************************************************
*/
#if GUIDEMO_LARGE
#define BORDER 10
#elif !(GUIDEMO_TINY)
#define BORDER 8
#else
#define BORDER 4
#endif
/*********************************************************************
*
* static data
*
**********************************************************************
*/
static const GUI_ConstString _asLang[] = {
"English",
"Deutsch",
"Français",
"Espa\xf1ol", /* "Español" -> "Espa\xf1ol" to avoid problems with NC308 */
"Italiano",
NULL
};
/*********************************************************************
*
* public code
*
**********************************************************************
*/
/*********************************************************************
*
* GUIDEMO_DemoFrameWin
*/
void GUIDEMO_DemoFrameWin(void) {
FRAMEWIN_Handle hFrame;
LISTBOX_Handle hListBox;
int xSize = LCD_GetXSize();
int ySize = LCD_GetYSize();
int i, x, y, w, h;
const GUI_FONT* pFont = &GUI_FontComic18B_1;
GUI_COLOR DesktopColorOld;
#if GUIDEMO_LARGE
GUIDEMO_ShowIntro("Frame Window & Listbox", NULL);
#else
GUIDEMO_ShowIntro("Frame Window\n & Listbox", NULL);
#endif
DesktopColorOld = GUIDEMO_SetBkColor(GUI_RED);
DesktopColorOld = WM_SetDesktopColor(DesktopColorOld); /* Automatically update desktop window */
x = BORDER;
#if GUIDEMO_LARGE
y = 75;
#else
y = BORDER;
#endif
w = xSize - x - BORDER;
h = ySize - y - BORDER;
if (w > 140) {
w = 140;
}
if (h > 120) {
h = 120;
}
hFrame = FRAMEWIN_Create("Select language", NULL, WM_CF_SHOW, x, y, w, h);
FRAMEWIN_SetActive(hFrame, 1);
FRAMEWIN_SetMoveable(hFrame, 1);
FRAMEWIN_AddMaxButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 0);
FRAMEWIN_AddMinButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 1);
FRAMEWIN_SetFont(hFrame, &GUI_Font13_ASCII);
hListBox = LISTBOX_CreateAsChild(_asLang, WM_GetClientWindow(hFrame), 0, 0, 0, 0, WM_CF_SHOW | WM_SF_ANCHOR_LEFT | WM_SF_ANCHOR_TOP | WM_SF_ANCHOR_RIGHT | WM_SF_ANCHOR_BOTTOM);
WM_SetFocus(hListBox);
LISTBOX_SetFont(hListBox, pFont);
GUIDEMO_Wait();
for (i = 0; (i < 10) && !GUIDEMO_CheckCancel(); i++) {
LISTBOX_IncSel(hListBox);
GUIDEMO_Delay(250);
}
for (i = 0; (i < 10) && !GUIDEMO_CheckCancel(); i++) {
LISTBOX_DecSel(hListBox);
GUIDEMO_Delay(250);
}
GUIDEMO_Delay(500);
LISTBOX_Delete(hListBox);
FRAMEWIN_Delete(hFrame);
WM_SetDesktopColor(DesktopColorOld);
}
#elif defined(NC30) || defined(NC308)
void GUIDEMO_FrameWin(void) {}
#endif
@@ -0,0 +1,377 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Graph.c
Purpose : Several GUIDEMO routines
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "LCD_ConfDefaults.h" /* valid LCD configuration */
#include <math.h>
#include <stdlib.h>
#include "GUIDEMO.h"
#if GUI_SUPPORT_MEMDEV
/*********************************************************************
*
* Structure containing information for drawing routine
*
**********************************************************************
*/
typedef struct {
I16 * aY;
} PARAM;
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
#if GUIDEMO_LARGE
#define YSIZE (LCD_YSIZE - 100)
#else
#define YSIZE (LCD_YSIZE - 30)
#endif
#define DEG2RAD (3.1415926f / 180)
#if LCD_BITSPERPIXEL == 1
#define COLOR_GRAPH0 GUI_WHITE
#define COLOR_GRAPH1 GUI_WHITE
#else
#define COLOR_GRAPH0 GUI_GREEN
#define COLOR_GRAPH1 GUI_YELLOW
#endif
/*********************************************************************
*
* static data
*
**********************************************************************
*/
static int _YSize;
/*********************************************************************
*
* Draws the graph
*
**********************************************************************
*/
static void _Draw(void * p) {
int i;
PARAM * pParam = (PARAM *)p;
GUI_SetBkColor(GUI_BLACK);
GUI_SetColor(GUI_DARKGRAY);
GUI_ClearRect(19, (LCD_YSIZE - 20) - _YSize, (LCD_XSIZE - 2), (LCD_YSIZE - 21));
for (i = 0; i < (_YSize / 2); i += 20) {
GUI_DrawHLine((LCD_YSIZE - 20) - (_YSize / 2) + i, 19, (LCD_XSIZE - 2));
if (i) {
GUI_DrawHLine((LCD_YSIZE - 20) - (_YSize / 2) - i, 19, (LCD_XSIZE - 2));
}
}
for (i = 40; i < (LCD_XSIZE - 20); i += 40) {
GUI_DrawVLine(18 + i, (LCD_YSIZE - 20) - _YSize, (LCD_YSIZE - 21));
}
GUIDEMO_SetColor(COLOR_GRAPH0);
GUI_DrawGraph(pParam->aY, (LCD_XSIZE - 20), 19, (LCD_YSIZE - 20) - _YSize);
}
static void _Draw2(void * p) {
PARAM * pParam = (PARAM *)p;
_Draw(p);
GUI_SetColor(COLOR_GRAPH1);
GUI_DrawGraph(pParam->aY+15, (LCD_XSIZE - 20), 19, (LCD_YSIZE - 20) - _YSize);
}
/*********************************************************************
*
* Labels the x & y-axis
*
**********************************************************************
*/
static void _Label(void) {
int x, y;
GUI_SetPenSize(1);
GUI_ClearRect(0, (LCD_YSIZE - 21) - _YSize, (LCD_XSIZE - 1), (LCD_YSIZE - 1));
GUI_DrawRect(18, (LCD_YSIZE - 21) - _YSize, (LCD_XSIZE - 1), (LCD_YSIZE - 20));
GUI_SetFont(&GUI_Font6x8);
for (x = 0; x < (LCD_XSIZE - 20); x += 40) {
int xPos = x + 18;
GUI_DrawVLine(xPos, (LCD_YSIZE - 20), (LCD_YSIZE - 14));
GUI_DispDecAt(x / 40, xPos - 2, (LCD_YSIZE - 9), 1);
}
for (y = 0; y < _YSize / 2; y += 20) {
int yPos = (LCD_YSIZE - 20) - _YSize / 2 + y;
GUI_DrawHLine(yPos, 13, 18);
if (y) {
GUI_GotoXY(1, yPos - 4);
GUI_DispSDec(-y / 20, 2);
yPos = (LCD_YSIZE - 20) - _YSize / 2 - y;
GUI_DrawHLine(yPos, 13, 18);
GUI_GotoXY(1, yPos - 4);
GUI_DispSDec(y / 20, 2);
} else {
GUI_DispCharAt('0', 7, yPos - 4);
}
}
}
/*********************************************************************
*
* Draws random data
*
**********************************************************************
*/
static void _GetRandomData(I16 * paY, int Time, int n) {
int aDiff, i;
if (Time > 5000)
Time -= 5000;
if (Time > 2500)
Time = 5000 - Time;
Time /= 200;
aDiff = Time * Time + 1;
for (i = 0; i < n; i++) {
if (!i) {
paY[i] = rand() % _YSize;
} else {
int Rnd0, Rnd1, yD;
I16 yNew;
Rnd0 = rand();
yD = aDiff - (Rnd0 % aDiff);
Rnd1 = rand();
if (Rnd1 > Rnd0) {
yNew = paY[i-1] + yD;
} else {
yNew = paY[i-1] - yD;
}
if (yNew > _YSize) {
yNew -= yD;
} else { if (yNew < 0)
yNew += yD;
}
paY[i] = yNew;
}
}
}
static void _ShowText(const char * sText) {
GUIDEMO_SetColor(GUI_WHITE);
GUIDEMO_SetBkColor(GUI_RED);
#if GUIDEMO_LARGE
GUI_ClearRect(0, 0, LCD_XSIZE, 60);
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_DispStringAt(sText, 10, 20);
#else
sText = sText; /* Avoid warning */
#endif
}
static void _LabelMS(void) {
GUI_SetFont(&GUI_Font6x8);
#if GUIDEMO_LARGE
GUI_DispStringAt("msec/graph:", 10, 50);
#endif
}
static void _DisplayTime(int tDiff) {
#if GUIDEMO_LARGE
GUI_GotoXY(80, 50);
GUIDEMO_SetColor(GUI_WHITE);
GUIDEMO_SetBkColor(GUI_RED);
GUI_DispDecSpace(tDiff, 3);
#else
tDiff = tDiff; /* Avoid warning */
#endif
}
static void _DemoRandomGraph(void) {
PARAM Param;
int tDiff, t0;
int Cnt = 0;
GUI_HMEM hMem;
GUI_RECT Rect;
Rect.x0 = 19;
Rect.y0 = (LCD_YSIZE - 20) - _YSize;
Rect.x1 = LCD_XSIZE - 2;
Rect.y1 = LCD_YSIZE - 21;
hMem = GUI_ALLOC_AllocZero((LCD_XSIZE - 20) * sizeof(I16));
_ShowText("Random graph");
GUI_LOCK();
Param.aY = (I16*)GUI_ALLOC_h2p(hMem);
GUI_UNLOCK(); /* Note: unlocking is permitted only if no further allocation is done so hMem stays valid */
/*
GUI_SetFont(&GUI_Font6x8);
GUI_DispStringAt("msec/graph:", 10, 50);
*/
_LabelMS();
t0 = GUI_GetTime();
while(((tDiff = (GUI_GetTime() - t0)) < 10000) && !GUIDEMO_CheckCancel()) {
U32 t1, tDiff2;
_GetRandomData(Param.aY, tDiff, (LCD_XSIZE - 20));
t1 = GUI_GetTime();
GUI_MEMDEV_Draw(&Rect, _Draw, &Param, 0, GUI_MEMDEV_NOTRANS);
tDiff2 = GUI_GetTime() - t1;
if (tDiff2 < 100) {
GUI_Delay(100 - tDiff2);
}
if(!((++Cnt)%10)) {
_DisplayTime(tDiff2);
/*
GUI_GotoXY(80, 50);
GUI_SetColor(GUI_WHITE);
GUI_SetBkColor(GUI_RED);
GUI_DispDecSpace(tDiff2, 3);
*/
}
}
GUI_ALLOC_Free(hMem);
}
/*********************************************************************
*
* Draws a sine wave
*
**********************************************************************
*/
static void _GetSineData(I16 * paY, int n) {
int i;
for (i = 0; i < n; i++) {
float s = sin(i * DEG2RAD * 4);
paY[i] = s * _YSize / 2 + _YSize / 2;
}
}
static void _DemoSineWave(void) {
PARAM Param;
I16 * pStart;
int t0, Cnt = 0;
GUI_HMEM hMem;
GUI_RECT Rect;
Rect.x0 = 19;
Rect.y0 = (LCD_YSIZE - 20) - _YSize;
Rect.x1 = LCD_XSIZE - 2;
Rect.y1 = LCD_YSIZE - 21;
hMem = GUI_ALLOC_AllocZero((LCD_XSIZE + 90) * sizeof(I16));
_ShowText("Sine wave");
GUI_LOCK();
pStart = (I16*)GUI_ALLOC_h2p(hMem);
GUI_UNLOCK(); /* Note: unlocking is permitted only if no further allocation is done so hMem stays valid */
_GetSineData(pStart, LCD_XSIZE + 90);
/*
GUI_SetFont(&GUI_Font6x8);
GUI_DispStringAt("msec/graph:", 10, 50);
*/
_LabelMS();
t0 = GUI_GetTime();
while(((GUI_GetTime() - t0) < 10000) && !GUIDEMO_CheckCancel()) {
U32 t1, tDiff2;
if (Cnt % 90) {
Param.aY++;
} else {
Param.aY = pStart;
}
t1 = GUI_GetTime();
GUI_MEMDEV_Draw(&Rect, _Draw2, &Param, 0, GUI_MEMDEV_NOTRANS);
tDiff2 = GUI_GetTime() - t1;
if (tDiff2 < 100) {
GUI_Delay(100 - tDiff2);
}
if(!((++Cnt) % 10)) {
_DisplayTime(tDiff2);
/*
GUI_GotoXY(80, 50);
GUI_SetColor(GUI_WHITE);
GUI_SetBkColor(GUI_RED);
GUI_DispDecSpace(tDiff2, 3);
*/
}
}
GUI_ALLOC_Free(hMem);
}
/*********************************************************************
*
* Adds several waves
*
**********************************************************************
*/
static void _DrawOrData(GUI_COLOR Color, I16 * paY) {
GUIDEMO_SetColor(Color);
GUI_DrawGraph(paY, (LCD_XSIZE - 20), 19, (LCD_YSIZE - 20) - _YSize);
}
static void _DemoOrData(void) {
int i;
PARAM Param;
GUI_RECT Rect;
GUI_HMEM hMem;
Rect.x0 = 19;
Rect.y0 = (LCD_YSIZE - 20) - _YSize;
Rect.x1 = LCD_XSIZE - 2;
Rect.y1 = LCD_YSIZE - 21;
hMem = GUI_ALLOC_AllocZero((LCD_XSIZE + 90) * sizeof(I16));
_ShowText("Several waves...");
GUI_LOCK();
Param.aY = (I16*)GUI_ALLOC_h2p(hMem);
GUI_UNLOCK();
_GetSineData(Param.aY, LCD_XSIZE + 90);
GUI_MEMDEV_Draw(&Rect, _Draw, &Param, 0, GUI_MEMDEV_NOTRANS);
for (i = 0; (i < 90) && !GUIDEMO_CheckCancel(); i++) {
_DrawOrData(GUI_GREEN, ++Param.aY);
GUI_Delay(10);
}
GUI_ALLOC_Free(hMem);
}
/*********************************************************************
*
* GUIDEMO_Graph
*
**********************************************************************
*/
void GUIDEMO_Graph(void) {
#if GUIDEMO_LARGE
_YSize = (LCD_YSIZE - 100);
#else
_YSize = (LCD_YSIZE - 30);
#endif
GUIDEMO_ShowIntro("Drawing a graph",
"\nOptimized drawing routine"
"\nfor drawing graph data");
GUI_Clear();
_Label();
_DemoRandomGraph();
GUIDEMO_NotifyStartNext();
_DemoSineWave();
GUIDEMO_NotifyStartNext();
_DemoOrData();
}
#elif defined(NC30) || defined(NC308)
void GUIDEMO_Graph(void) {}
#endif
@@ -0,0 +1,108 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* ľC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_HardwareInfo.c
Purpose : Displays hardware info
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
#include "LCD_ConfDefaults.h" /* valid LCD configuration */
/*********************************************************************
*
* Static functions
*
**********************************************************************
*/
#if (LCD_CONTROLLER == 1375) | (LCD_CONTROLLER == 13705) | (LCD_CONTROLLER == 1386) | (LCD_CONTROLLER == 13806)
static void _Show(const char* s0, const char* s1) {
GUIDEMO_SetColor(GUI_WHITE);
#if (LCD_YSIZE < 160)
GUI_SetFont(&GUI_Font8_ASCII);
#else
GUI_SetFont(&GUI_Font13B_ASCII);
#endif
GUI_DispString("\n");
#if (LCD_YSIZE < 128)
GUIDEMO_Delay(200);
GUI_GotoXY(0, LCD_YSIZE / 2 - 6);
GUI_ClearRect(0, 24, LCD_XSIZE - 1, LCD_YSIZE - 1);
GUIDEMO_Delay(200);
#endif
GUI_DispString(s0);
GUIDEMO_Delay(500);
#if GUIDEMO_LARGE
GUI_GotoX(110);
GUIDEMO_SetColor(GUI_GREEN);
#else
GUI_GotoX(100);
GUIDEMO_SetColor(GUI_BLUE);
#endif
#if (LCD_XSIZE < 320)
GUI_DispString("\n");
#if (LCD_XSIZE < 200)
GUI_GotoX(10);
#else
GUI_GotoX(LCD_XSIZE / 6);
#endif
#endif
GUI_DispString(s1);
GUIDEMO_Delay(1000);
}
#endif
/*********************************************************************
*
* GUIDEMO_HardwareInfo
*
**********************************************************************
*/
void GUIDEMO_HardwareInfo(void) {
#if (LCD_CONTROLLER == 1375) | (LCD_CONTROLLER == 13705) | (LCD_CONTROLLER == 1386) | (LCD_CONTROLLER == 13806)
GUIDEMO_ShowIntro("Hardware info", "" );
GUI_Clear();
#if GUIDEMO_LARGE
GUI_SetFont(&GUI_FontComic24B_ASCII);
#else
GUI_SetFont(&GUI_FontComic18B_ASCII);
#endif
GUIDEMO_SetColor(GUI_WHITE);
#if (LCD_CONTROLLER == 1375) | (LCD_CONTROLLER == 13705)
#if GUIDEMO_LARGE
GUI_DispStringAt("EPSON 13705\n", 10, 65 );
#else
GUI_DispStringHCenterAt("EPSON 13705\n", LCD_XSIZE >> 1, LCD_YSIZE / 14);
#endif
_Show("On chip VRAM", "80 kb");
_Show("Max. colors", "4096 (4 bit per color)");
_Show("Display types", "Mono / color / TFT");
_Show("LUT", "256 index colors");
#elif (LCD_CONTROLLER == 1386) | (LCD_CONTROLLER == 13806)
#if GUIDEMO_LARGE
GUI_DispStringAt("EPSON 13806\n", 10, 65 );
#else
GUI_DispStringHCenterAt("EPSON 13806\n", LCD_XSIZE >> 1, LCD_YSIZE / 14);
#endif
_Show("On chip VRAM", "1200 kb");
_Show("Max. colors", "65536 (up to 16 bpp)");
_Show("Display types", "Mono / color / TFT (analog / digital)");
_Show("LUT", "256 index colors");
#endif
GUIDEMO_Delay(1500);
#endif
}
@@ -0,0 +1,165 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Intro.c
Purpose : Introduction for emWin generic demo
(This is also a good file to demo and explain basic
emWin features by setting breakpoints)
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
#include <string.h>
/*********************************************************************
*
* GUIDEMO_Intro
*
**********************************************************************
*/
#if GUIDEMO_LARGE
void GUIDEMO_Intro(void) {
int xCenter = LCD_XSIZE >> 1;
int y, yPos;
char acText[50] = "Version of emWin: ";
strcat(acText, GUI_GetVersionString());
GUIDEMO_SetBkColor(GUI_BLUE);
GUIDEMO_SetColor(GUI_WHITE);
GUI_Clear();
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_DispStringHCenterAt("emWin", xCenter, y = 12);
GUI_SetFont(&GUI_Font13H_ASCII);
GUI_DispStringHCenterAt("Universal graphic software"
"\nfor embedded applications"
, xCenter, y += 23);
GUI_SetColor(GUI_RED);
GUI_SetFont(&GUI_Font16_ASCII);
GUI_DispStringHCenterAt("Any CPU - Any LCD - Any Application"
, xCenter, y += 32);
GUI_SetFont(&GUI_Font10S_ASCII);
GUI_DispStringHCenterAt("Compiled " __DATE__ " "__TIME__, xCenter, y += 18);
GUI_SetFont(&GUI_Font13HB_ASCII);
GUI_SetColor(GUI_WHITE);
GUI_DispStringHCenterAt(acText, xCenter, y += 15);
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_SetColor(GUI_WHITE);
GUI_DispStringHCenterAt("www.segger.com", LCD_XSIZE >> 1, LCD_YSIZE - 20);
yPos = y + 15 + ((LCD_YSIZE - y - 33) >> 1);
yPos -= bmSeggerLogoBlue.YSize >> 1;
if (yPos > 160) {
yPos = 160;
}
GUI_DrawBitmap(&bmSeggerLogoBlue, (LCD_XSIZE - bmSeggerLogoBlue.XSize) >> 1, yPos);
#if (LCD_YSIZE >= 220)
GUI_SetFont(&GUI_Font10S_ASCII);
GUI_DispStringAt("GUI_OS: ", 0, LCD_YSIZE - 30); GUI_DispDecMin(GUI_OS);
GUI_DispStringAt("GUI_ALLOC_SIZE: ",0, LCD_YSIZE - 20); GUI_DispDecMin(GUI_ALLOC_SIZE);
GUI_DispStringAt("Compiler: "
#ifdef _MSC_VER
"Microsoft"
#elif defined (NC308)
"Mitsubishi NC308"
#elif defined (NC30)
"Mitsubishi NC30"
#elif defined (__TID__)
#if (((__TID__ >>8) &0x7f) == 48) /* IAR MC80 */
"IAR M32C"
#elif (((__TID__ >>8) &0x7f) == 85) /* IAR V850 */
"IAR V850"
#elif defined (__ICCARM__) /* IAR ARM */
"IAR ARM"
#else /* IAR MC16 */
"IAR M32C"
#endif
#elif defined __WATCOMC__ /* WATCOM */
"WATCOM"
#elif defined __GNUC__
"GNU"
#else
"Unknown"
#endif
,0, LCD_YSIZE - 10);
#endif
GUIDEMO_Delay(5000);
GUIDEMO_NotifyStartNext();
}
#else /* GUIDEMO_LARGE */
void GUIDEMO_Intro(void) {
#if GUIDEMO_TINY
char acText[20] = "Version: ";
#else
char acText[32] = "Version of emWin: ";
#endif
int xCenter, dy, y0 = 0;
xCenter = LCD_XSIZE >> 1;
#if (LCD_YSIZE < 72)
dy = 0;
#else
dy = ((LCD_YSIZE - 72) >> 3);
if (dy > 14) dy = 14;
#endif
strcat(acText, GUI_GetVersionString());
/* Clear the background */
GUIDEMO_SetBkColor(GUI_BLUE);
GUIDEMO_SetColor(GUI_WHITE);
GUI_Clear();
/* Display headline */
GUI_SetFont(&GUI_Font13B_ASCII);
GUI_DispStringHCenterAt("emWin", xCenter, dy + 1);
/* Display description */
#if (LCD_XSIZE < 140)
GUI_SetFont(&GUI_Font8_ASCII);
#else
GUI_SetFont(&GUI_Font10_ASCII);
#endif
GUI_DispStringHCenterAt("Universal graphic software\n"
"for embedded applications", xCenter, 2 * dy + 18);
/* Display compile time */
GUI_SetFont(&GUI_Font10S_ASCII);
GUI_DispStringHCenterAt("Compiled " __DATE__ " "__TIME__, xCenter, 3 * dy + 37);
/* Display version number */
#if (LCD_YSIZE < 80)
GUI_DispStringAt(acText, 6, LCD_YSIZE - 13);
#else
GUI_DispStringHCenterAt(acText, xCenter, 4 * dy + 49);
#endif
GUIDEMO_Delay(5000);
GUIDEMO_NotifyStartNext();
/* Show SEGGER logo */
GUI_Clear();
#if GUIDEMO_TINY
y0 = 2;
#endif
#if (LCD_YSIZE >= 90)
y0 += (LCD_YSIZE - 90) >> 1;
#endif
GUI_DrawBitmap(&bmSeggerLogoBlue, xCenter - (bmSeggerLogoBlue.XSize >> 1), y0);
/* Display URL */
#if (LCD_YSIZE < 80)
GUI_SetFont(&GUI_Font10_ASCII);
#else
GUI_SetFont(&GUI_Font13B_ASCII);
#endif
y0 += bmSeggerLogoBlue.YSize + 1;
GUI_DispStringHCenterAt("www.segger.com", xCenter, y0);
GUIDEMO_Delay(5000);
GUIDEMO_NotifyStartNext();
}
#endif
@@ -0,0 +1,82 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Lut.c
Purpose : Modify lookup table
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
#include "LCD_ConfDefaults.h" /* valid LCD configuration */
#if (LCD_BITSPERPIXEL > 2) && (LCD_BITSPERPIXEL <= 8)
/*********************************************************************
*
* Static functions
*
**********************************************************************
*/
static void _ModifyLUT(int RFaktor, int GFaktor, int BFaktor) {
int NumColors = LCD_GetDevCap(LCD_DEVCAP_NUMCOLORS);
int i;
for (i = 0; (i < NumColors) && !GUIDEMO_CheckCancel(); i++) {
U32 Color = LCD_GetDevCap(LCD_DEVCAP_COLOR + i);
U32 R = Color & 0xff;
U32 G = (Color >> 8) & 0xff;
U32 B = (Color >> 16) & 0xff;
/* Now modify color */
R = (R * RFaktor) / 100; if (R > 255) R = 255;
G = (G * GFaktor) / 100; if (G > 255) G = 255;
B = (B * BFaktor) / 100; if (B > 255) B = 255;
/* Write modified color into lookup table */
Color = R | (G << 8) | (B << 16);
GUI_SetLUTEntry((U8)i, Color);
}
}
/*********************************************************************
*
* GUIDEMO_DemoLUT
*
**********************************************************************
*/
void GUIDEMO_DemoLUT(void) {
int i;
GUIDEMO_ShowIntro("Modify LUT", "... after drawing color bars");
GUIDEMO_ShowColorBar();
for (i = 100; (i >= 0) && !GUIDEMO_CheckCancel(); i -= 2) {
_ModifyLUT(100, 100, i);
GUI_Delay(20);
}
for (i = 100; (i >= 0) && !GUIDEMO_CheckCancel(); i -= 2) {
_ModifyLUT(100, i, 0);
GUI_Delay(20);
}
for (i = 100; (i >= 0) && !GUIDEMO_CheckCancel(); i -= 2) {
_ModifyLUT(i, i, i);
GUI_Delay(20);
}
LCD_InitLUT();
GUIDEMO_Wait();
}
#else
void GUIDEMO_DemoLUT(void) {}
#endif
@@ -0,0 +1,157 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_MemDevB.c
Purpose : Memory device demo
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
#if GUI_WINSUPPORT
#include "WM.h"
#endif
#include "stdio.h"
#if GUI_SUPPORT_MEMDEV
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
static const GUI_POINT _aArrow[] = {
{ 0, 0 +85},
{-40, -35 +85},
{-10, -25 +85},
{-10, -85 +85},
{ 10, -85 +85},
{ 10, -25 +85},
{ 40, -35 +85}
};
/* Define the callback structure. The structure should contain all the data
required by the callback drawing funtion
*/
typedef struct {
int Angle;
int DoClear;
GUI_COLOR BkColor;
} tDrawContext;
/*********************************************************************
*
* Static functions
*
**********************************************************************
*/
/* The user defined callback routine */
static void _Draw(void * p) {
int XSize = LCD_GetXSize();
int YSize = LCD_GetYSize();
tDrawContext * pContext = (tDrawContext *)p;
int i = pContext->Angle;
static int iLast = -1;
static GUI_POINT aPoint[7];
if (pContext->DoClear) {
GUI_SetBkColor(pContext->BkColor);
GUI_Clear();
}
GUI_SetFont(&GUI_FontD24x32);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_GRAY);
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_DispStringHCenterAt("Below arrow", XSize / 2, YSize / 2 - 20);
if (iLast != i) {
float Angle = 0.02 * (float)i;
iLast = i;
GUI_RotatePolygon(aPoint, _aArrow, 7, Angle);
}
GUI_SetColor(GUI_WHITE);
GUI_FillPolygon(&aPoint[0], 7, XSize / 2, YSize / 2 + 30);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_DARKGRAY);
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_DispStringHCenterAt("Above arrow", XSize / 2, YSize / 2);
}
/*********************************************************************
*
* GUIDEMO_ShowMemoryDevice
*
**********************************************************************
*/
void GUIDEMO_ShowMemoryDevice(void) {
int i;
U32 tDiff, t0;
tDrawContext DrawContext;
GUI_RECT rView, rPrev, rTemp;
GUIDEMO_ShowIntro("Memory devices",
"\nFor flicker free animation"
"\nand other purposes");
GUIDEMO_NotifyStartNext();
GUI_SetBkColor(GUI_GREEN);
GUI_Clear();
/* Use banding memory device */
GUI_GetClientRect(&rView);
DrawContext.BkColor = GUI_ColorIsAvailable(GUI_RED) ? GUI_RED : GUI_BLACK;
GUI_SetBkColor(DrawContext.BkColor);
GUI_Clear();
t0 = GUI_GetTime();
for (i = 0; tDiff = GUI_GetTime() - t0, (tDiff < 8000) && !GUIDEMO_CheckCancel(); i++) {
U32 t = GUI_GetTime();
DrawContext.Angle = 90 + tDiff / 50;
/* Calculate required size */
{
GUI_HMEM hMem = GUI_MEASDEV_Create();
GUI_MEASDEV_Select(hMem);
DrawContext.DoClear = 0;
_Draw(&DrawContext);
GUI_MEASDEV_GetRect(hMem, &rView);
GUI_MEASDEV_Delete(hMem);
rTemp = rView;
if (i)
GUI_MergeRect(&rView, &rView, &rPrev);
rPrev = rTemp;
}
DrawContext.DoClear = 1;
GUI_MEMDEV_Draw(&rView, _Draw, &DrawContext, 0, GUI_MEMDEV_NOTRANS);
t = (GUI_GetTime() - t);
if (t < 20) {
GUI_Delay(20 -t);
}
}
GUI_SetFont(&GUI_FontComic24B_ASCII);
GUI_SetColor(GUI_WHITE);
GUI_SetBkColor(DrawContext.BkColor);
GUI_DispStringAt("ms/Update: ", 10 , 200);
if (i) {
GUI_DispDecMin(tDiff / i);
}
GUIDEMO_Delay(1000);
GUI_Clear();
}
#else
void GUIDEMO_ShowMemoryDevice(void) {}
#endif /* GUI_SUPPORT_MEMDEV */
@@ -0,0 +1,55 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Messagebox.c
Purpose : Messagebox samples
----------------------------------------------------------------------
*/
#include <stddef.h> /* needed for definition of NULL */
#include "GUI.h"
#include "GUIDEMO.h"
#include "LCD_ConfDefaults.h"
#if GUI_WINSUPPORT
#include "WM.h"
#include "DIALOG.h"
/*********************************************************************
*
* GUIDEMO_Dialog
*
**********************************************************************
*/
void GUIDEMO_Messagebox(void) {
GUI_COLOR Color;
GUIDEMO_ShowIntro("Message boxes",
"Message boxes" "\ncan easily be created");
Color = WM_SetDesktopColor(GUI_RED);
GUI_MessageBox("Message", "Text", 0);
GUI_Delay(1000);
GUI_MessageBox("2. Message", "Text", 0);
GUI_Delay(1000);
WM_SetDesktopColor(Color);
GUIDEMO_NotifyStartNext();
}
#else
void GUIDEMO_Messagebox(void) {}
#endif /* GUI_SUPPORT_MEMDEV */
@@ -0,0 +1,190 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Navi.c
Purpose : Navigation system demo
----------------------------------------------------------------------
*/
#include <math.h>
#include "GUI.h"
#include "GUIDEMO.h"
#if GUI_WINSUPPORT & GUI_SUPPORT_MEMDEV
#include "WM.h"
#include "FRAMEWIN.h"
#include "Map.h"
/*********************************************************************
*
* defines
*
**********************************************************************
*/
#if GUIDEMO_TINY
#define BORDER 0
#else
#define BORDER 8
#endif
/*********************************************************************
*
* static data
*
**********************************************************************
*/
static int _MapX = 0;
static int _MapY = 0;
static int _MapHereX = 90;
static int _MapHereY = 15;
/*********************************************************************
*
* static code
*
**********************************************************************
*/
/*********************************************************************
*
* _cbNaviWindow
*/
static void _cbNaviWindow(WM_MESSAGE* pMsg) {
switch (pMsg->MsgId) {
case WM_PAINT:
GUI_SetDrawMode(GUI_DRAWMODE_NORMAL);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_SetColor(0x0050FF);
GUI_DrawBitmap(&bmMap, -_MapX, -_MapY);
GUI_DrawCircle(_MapHereX - _MapX, _MapHereY - _MapY, 4);
GUI_DrawCircle(_MapHereX - _MapX, _MapHereY - _MapY, 5);
GUI_DispStringAt("You are here", _MapHereX - _MapX - 45, _MapHereY - _MapY - 22);
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _NavigationDriveTo
*/
static void _NavigationDriveTo(WM_HWIN hWin, int x1, int y1) {
GUI_RECT Rect;
int x0 = _MapHereX;
int y0 = _MapHereY;
float dx = x1 - x0;
float dy = y1 - y0;
float Len = sqrt((dx * dx) + (dy * dy));
float sx = dx / Len;
float sy = dy / Len;
int i, tRef;
WM_GetClientRectEx(hWin, &Rect);
for (i = 1; (i <= Len) && !GUIDEMO_CheckCancel(); i += 2) {
tRef = GUI_GetTime();
_MapHereX = x0 + (i * sx);
_MapHereY = y0 + (i * sy);
_MapX = _MapHereX - (Rect.x1 >> 1);
_MapY = _MapHereY - (Rect.y1 >> 1);
if (_MapX < 0) {
_MapX = 0;
} else if ((_MapX + Rect.x1) >= bmMap.XSize) {
_MapX = bmMap.XSize - Rect.x1 - 1;
}
if (_MapY < 0) {
_MapY = 0;
} else if ((_MapY + Rect.y1) >= bmMap.YSize) {
_MapY = bmMap.YSize - Rect.y1 - 1;
}
WM_InvalidateWindow(hWin);
do {
GUI_Exec();
} while (((GUI_GetTime() - tRef) < 100) && !GUIDEMO_CheckCancel());
}
_MapHereX = x1;
_MapHereY = y1;
WM_InvalidateWindow(hWin);
}
/*********************************************************************
*
* _ShowMovingMap
*/
static void _ShowMovingMap(void) {
WM_HWIN hWin;
WM_HWIN hClient;
int i, x, y, w, h;
int xSize = LCD_GetXSize();
int ySize = LCD_GetYSize();
const GUI_POINT aRouteToSegger[] = {
{ 90, 15}, {131, 54}, {141, 62},
{166, 46}, {180, 40}, {204, 113},
{213, 156}, {217, 172}, {206, 173},
{205, 165}
};
#if GUIDEMO_LARGE
y = 70;
#else
y = BORDER;
#endif
x = BORDER;
w = xSize - x - BORDER;
h = ySize - y - BORDER;
if (w > bmMap.XSize) {
w = bmMap.XSize;
}
if (h > bmMap.YSize) {
h = bmMap.YSize;
}
/* Initialize starting point */
_MapHereX = aRouteToSegger[0].x;
_MapHereY = aRouteToSegger[0].y;
/* Create framewin */
hWin = FRAMEWIN_CreateEx(x, y, w, h, WM_HBKWIN, WM_CF_SHOW | WM_CF_MEMDEV, 0, 0, "Map to Segger (Hilden)", _cbNaviWindow);
FRAMEWIN_SetActive(hWin, 0);
hClient = WM_GetClientWindow(hWin);
WM_SetCallback(hClient, &_cbNaviWindow);
/* Move over map */
for (i = 1; (i < 10) && !GUIDEMO_CheckCancel(); i++) {
_NavigationDriveTo(hClient, aRouteToSegger[i].x, aRouteToSegger[i].y);
}
GUIDEMO_Delay(1000);
/* Delete framewin */
WM_DeleteWindow(hWin);
}
#else
#define _ShowMovingMap()
#endif
/*********************************************************************
*
* GUIDEMO_Navigation
*
**********************************************************************
*/
void GUIDEMO_Navigation(void) {
GUIDEMO_ShowIntro("Navigation system",
"\nSamples used in"
"\nNavigation systems");
_ShowMovingMap();
}
@@ -0,0 +1,147 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Polygon.c
Purpose : Several GUIDEMO routines
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
#define COUNTOF(Obj) (sizeof(Obj)/sizeof(Obj[0]))
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
static const GUI_POINT _aArrow[] = {
{ 0, 30 },
{-40, 0 },
{-10, 10 },
{-10, -50 },
{ 10, -50 },
{ 10, 10 },
{ 40, 0 }
};
static const GUI_POINT _aTriangle[] = {
{ 0, 0 },
{-30, 30 },
{ 30, 30 },
};
#if GUI_SUPPORT_AA
static const GUI_POINT _aiCursor[] = {
{ 0, -10 },
{ 50, 0 },
{ 0, -100 },
{-50, 0 }
};
#endif
/*********************************************************************
*
* static code
*
**********************************************************************
*/
/*********************************************************************
*
* _MagnifyPolygon
*/
#if ((LCD_XSIZE != 320) || (LCD_YSIZE != 240))
static void _MagnifyPolygon(GUI_POINT* pDest, const GUI_POINT* pSrc, int NumPoints, float Mag) {
int j;
for (j = 0; j < NumPoints; j++) {
(pDest + j)->x = (pSrc + j)->x * Mag;
(pDest + j)->y = (pSrc + j)->y * Mag;
}
}
#endif
/*********************************************************************
*
* public code
*
**********************************************************************
*/
/*********************************************************************
*
* GUIDEMO_DemoPolygon
*/
void GUIDEMO_DemoPolygon(void) {
GUI_COLOR Color;
int XMid = (LCD_XSIZE >> 1);
int YMid = (LCD_YSIZE >> 1);
GUIDEMO_ShowIntro("Arbitrary Polygons",
"\nStandard and antialiased");
GUI_SetColor(GUI_WHITE);
#if GUIDEMO_LARGE
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_DispStringAt("Arbitrary\nPolygons", 0, 0);
YMid += 10;
#endif
#if ((LCD_XSIZE != 320) || (LCD_YSIZE != 240))
{
GUI_POINT aPolygon[8];
float Factor;
#if ((LCD_XSIZE / 320) < (LCD_YSIZE / 240))
Factor = LCD_XSIZE / 320.f;
#else
Factor = LCD_YSIZE / 240.f;
#endif
#if !(GUIDEMO_LARGE)
Factor *= 1.2f;
#endif
/* Draw arrows */
_MagnifyPolygon(aPolygon, _aArrow, COUNTOF(_aArrow), Factor);
GUI_FillPolygon(aPolygon, 7, XMid - (50 * Factor), YMid);
GUI_FillPolygon(aPolygon, 7, XMid + (50 * Factor), YMid);
/* Draw triangle */
_MagnifyPolygon(aPolygon, _aTriangle, COUNTOF(_aTriangle), Factor);
Color = GUIDEMO_SetColor(GUI_GREEN);
if (Color != GUI_GREEN) {
GUI_SetColor(GUI_YELLOW);
}
GUI_FillPolygon(aPolygon, 3, XMid, YMid + (10 * Factor));
/* Draw cursor */
#if GUI_SUPPORT_AA
GUI_SetColor(GUI_WHITE);
GUI_AA_EnableHiRes();
_MagnifyPolygon(aPolygon, _aiCursor, COUNTOF(_aiCursor), Factor);
GUI_AA_FillPolygon(aPolygon, 4, XMid * 3, (YMid - (10 * Factor)) * 3);
#endif
}
#else
GUI_FillPolygon(_aArrow, 7, XMid - 50, YMid);
GUI_FillPolygon(_aArrow, 7, XMid + 50, YMid);
/* Draw triangle */
Color = GUIDEMO_SetColor(GUI_GREEN);
if (Color != GUI_GREEN) {
GUI_SetColor(GUI_YELLOW);
}
GUI_FillPolygon(_aTriangle, 3, XMid, YMid + 10);
/* Draw cursor */
#if GUI_SUPPORT_AA
GUI_SetColor(GUI_WHITE);
GUI_AA_EnableHiRes();
GUI_AA_FillPolygon((GUI_POINT*)_aiCursor, 4, XMid * 3, (YMid - 10) * 3);
#endif
#endif
GUIDEMO_Wait();
}
@@ -0,0 +1,147 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_DemoProgBar.c
Purpose : Progress bar demo
----------------------------------------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
#if GUI_WINSUPPORT
#include "PROGBAR.h"
/*********************************************************************
*
* GUIDEMO_DemoProgBar
*
**********************************************************************
*/
void GUIDEMO_DemoProgBar(void) {
PROGBAR_Handle ahProgBar[2];
int i, iRep;
int XMid = LCD_GetXSize() / 2;
int YMid = LCD_GetYSize() / 2;
#if GUIDEMO_LARGE
int MaxReps = 2;
int Length[2] = {110, 140};
int Height[2] = {20, 10};
int y0 = YMid - 40;
int dy = 10;
#elif !(GUIDEMO_TINY)
int MaxReps = 1;
int Length[2] = {100, 130};
int Height[2] = {18, 10};
int y0 = YMid - 38;
int dy = 9;
#else
int MaxReps = 1;
int Length[2] = {85, 115};
int Height[2] = {16, 8};
int y0 = YMid - 35;
int dy = 8;
#endif
if (YMid < 40) {
Height[0] = 14;
y0 = 1;
dy = 4;
}
GUIDEMO_ShowIntro("Widgets",
"\nProgressbars in"
"\nall variations");
GUI_Clear();
GUI_SetColor(GUI_WHITE);
GUI_SetFont(&GUI_Font8x16);
GUI_DispStringHCenterAt("Progress bar", XMid, y0);
/* Create `em */
ahProgBar[0] = PROGBAR_Create(XMid - Length[0] / 2,
YMid - Height[0],
Length[0],
Height[0],
WM_CF_SHOW);
ahProgBar[1] = PROGBAR_Create(XMid - Length[1] / 2,
YMid + dy,
Length[1],
Height[1],
WM_CF_SHOW);
/* Use memory device (optional, for better looks) */
#if GUI_SUPPORT_MEMDEV
PROGBAR_EnableMemdev(ahProgBar[0]);
PROGBAR_EnableMemdev(ahProgBar[1]);
#endif
GUIDEMO_Delay (800);
PROGBAR_SetMinMax(ahProgBar[1], 0, 500);
for (iRep = 0; iRep < MaxReps; iRep++) {
#if !(GUIDEMO_TINY)
PROGBAR_SetFont(ahProgBar[0], &GUI_Font8x16);
#endif
#if (LCD_BITSPERPIXEL == 2)
PROGBAR_SetBarColor(ahProgBar[0], 0, GUI_DARKGRAY);
PROGBAR_SetBarColor(ahProgBar[1], 0, GUI_DARKGRAY);
PROGBAR_SetBarColor(ahProgBar[0], 1, GUI_WHITE);
PROGBAR_SetBarColor(ahProgBar[1], 1, GUI_WHITE);
#elif (LCD_BITSPERPIXEL <= 4)
PROGBAR_SetBarColor(ahProgBar[0], 0, GUI_DARKGRAY);
PROGBAR_SetBarColor(ahProgBar[0], 1, GUI_LIGHTGRAY);
#else
PROGBAR_SetBarColor(ahProgBar[0], 0, GUI_GREEN);
PROGBAR_SetBarColor(ahProgBar[0], 1, GUI_RED);
#endif
for (i = 0; (i <= 100) && !GUIDEMO_CheckCancel(); i++) {
PROGBAR_SetValue(ahProgBar[0], i);
PROGBAR_SetValue(ahProgBar[1], i);
GUI_Delay(5);
}
PROGBAR_SetText(ahProgBar[0], "Tank empty");
for (; (i >= 0)&& !GUIDEMO_CheckCancel(); i--) {
PROGBAR_SetValue(ahProgBar[0], i);
PROGBAR_SetValue(ahProgBar[1], 200 - i);
GUI_Delay(5);
}
PROGBAR_SetText(ahProgBar[0], "Any text ...");
PROGBAR_SetTextAlign(ahProgBar[0], GUI_TA_LEFT);
for (; (i <= 100)&& !GUIDEMO_CheckCancel(); i++) {
PROGBAR_SetValue(ahProgBar[0], i);
PROGBAR_SetValue(ahProgBar[1], 200 + i);
GUI_Delay(5);
}
for (; (i >= 0)&& !GUIDEMO_CheckCancel(); i--) {
PROGBAR_SetValue(ahProgBar[0], i);
PROGBAR_SetValue(ahProgBar[1], 400 - i);
GUI_Delay(5);
}
PROGBAR_SetFont(ahProgBar[0], &GUI_FontComic18B_1);
PROGBAR_SetText(ahProgBar[0], "Any font ...");
for (; (i <= 100)&& !GUIDEMO_CheckCancel(); i++) {
PROGBAR_SetValue(ahProgBar[0], i);
PROGBAR_SetValue(ahProgBar[1], 400 + i);
GUI_Delay(5);
}
GUIDEMO_Delay(1000);
}
GUIDEMO_Delay(1000);
PROGBAR_Delete(ahProgBar[0]);
PROGBAR_Delete(ahProgBar[1]);
GUIDEMO_Delay(1000);
GUI_SetFont(&GUI_Font10S_ASCII);
}
#elif defined(NC30) || defined(NC308)
void GUIDEMO_ProgBar(void) {}
#endif /* GUI_WINSUPPORT */
@@ -0,0 +1,91 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Speed.c
Purpose : Speed demo
----------------------------------------------------------------------
*/
#include <stdlib.h> /* for rand */
#include "GUI.h"
#include "GUIDEMO.h"
static const GUI_COLOR _aColor[8] = {
0x000000,
0x0000FF,
0x00FF00,
0x00FFFF,
0xFF0000,
0xFF00FF,
0xFFFF00,
0xFFFFFF
};
/*********************************************************************
*
* GUIDEMO_Speed
*
**********************************************************************
*/
void GUIDEMO_Speed(void) {
int t, i;
I32 NumPixels = 0;
U16 aColorIndex[8];
GUIDEMO_ShowIntro("High speed",
"\nmulti layer clipping"
"\nhighly optimized drivers"
);
for (i = 0; i< 8; i++) {
aColorIndex[i] = GUI_Color2Index(_aColor[i]);
}
t = GUI_GetTime();
for (i = 0; ((GUI_GetTime() - t) < 8000) && !GUIDEMO_CheckCancel(); i++) {
GUI_RECT r;
GUI_SetColorIndex(aColorIndex[i&7]);
/* Calculate random positions */
r.x0 = rand() % LCD_XSIZE - LCD_XSIZE / 2;
r.y0 = rand() % LCD_YSIZE - LCD_YSIZE / 2;
r.x1 = r.x0 + 20 + rand() % LCD_XSIZE;
r.y1 = r.y0 + 20 + rand() % LCD_YSIZE;
GUI_FillRect(r.x0, r.y0, r.x1, r.y1);
/* Clip rectangle to visible area and add the number of pixels (for speed computation) */
if (r.x1 >= LCD_XSIZE)
r.x1 = LCD_XSIZE - 1;
if (r.y1 >= LCD_YSIZE)
r.y1 = LCD_YSIZE - 1;
if (r.x0 < 0 )
r.x0 = 0;
if (r.y1 < 0)
r.y1 = 0;
NumPixels += (r.x1 - r.x0) * (r.y1 - r.y0);
/* Allow short breaks so we do not use all available CPU time ... */
}
t = (GUI_GetTime() - t) / 100;
GUI_Clear();
GUIDEMO_NotifyStartNext();
#if GUIDEMO_LARGE
GUI_SetFont(&GUI_FontComic24B_ASCII);
#elif !(GUIDEMO_TINY)
GUI_SetFont(&GUI_Font16B_ASCII);
#else
GUI_SetFont(&GUI_Font13B_ASCII);
#endif
GUI_SetColor(GUI_WHITE);
GUI_DispStringAt("Pixels/sec: ", 5, (LCD_YSIZE - GUI_GetFontSizeY()) / 2);
if (t == 0)
t++;
GUI_DispDecMin(10 * (NumPixels / t));
GUIDEMO_Wait();
}
@@ -0,0 +1,388 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDEMO_Touch
Purpose : Touch demo
---------------------------END-OF-HEADER------------------------------
*/
#include "GUI.h"
#include "LCD_ConfDefaults.h" /* valid LCD configuration */
#include "GUIDEMO.h"
#if (GUI_WINSUPPORT && GUI_SUPPORT_TOUCH)
#include "BUTTON.h"
#include "EDIT.h"
#define countof(Obj) (sizeof(Obj)/sizeof(Obj[0]))
/*********************************************************************
*
* Static functions
*
**********************************************************************
*/
static int _Log2Phys(int l, I32 l0, I32 l1, I32 p0, I32 p1) {
return p0 + ((p1 - p0) * (l - l0)) / (l1 - l0);
}
static void _Calibrate(int Coord, int Log0, int Log1, int Phys0, int Phys1, int *p0, int *p1) {
int l0 = 0;
int l1 = (Coord == GUI_COORD_X) ? LCD_XSIZE - 1 : LCD_YSIZE - 1;
*p0 = _Log2Phys(l0, Log0, Log1, Phys0, Phys1);
*p1 = _Log2Phys(l1, Log0, Log1, Phys0, Phys1);
}
/*********************************************************************
*
* _ExecCalibration
*
**********************************************************************
*/
static void _ExecCalibration(void) {
int ax_Phys[2],ay_Phys[2];
/* calculate log. Positions */
int ax[2] = { 15, LCD_XSIZE -1-15};
// const int ay[2] = { 15, LCD_YSIZE-1-15};
int ay[2] = { LCD_YSIZE-1-15, 15};
GUI_TOUCH_SetDefaultCalibration();
/* _Calibrate upper left */
GUI_SetBkColor(GUI_RED);
GUI_Clear();
GUI_SetColor(GUI_WHITE); GUI_FillCircle(ax[0], ay[0], 10);
GUI_SetColor(GUI_RED); GUI_FillCircle(ax[0], ay[0], 5);
GUI_SetColor(GUI_WHITE);
GUI_DispStringAt("Press here", ax[0]+20, ay[0]);
do {
GUI_PID_STATE State;
GUI_TOUCH_GetState(&State);
if (State.Pressed) {
ax_Phys[0] = GUI_TOUCH_GetxPhys();
ay_Phys[0] = GUI_TOUCH_GetyPhys();
break;
}
GUI_Delay (100);
} while (1);
/* Tell user to release */
GUI_Clear();
GUI_DispStringAt("OK", ax[0]+20, ay[0]);
do {
GUI_PID_STATE State;
GUI_TOUCH_GetState(&State);
if (State.Pressed == 0) {
break;
}
GUI_Delay (100);
} while (1);
/* _Calibrate lower right */
GUI_SetBkColor(GUI_RED);
GUI_Clear();
GUI_SetColor(GUI_WHITE); GUI_FillCircle(ax[1], ay[1], 10);
GUI_SetColor(GUI_RED); GUI_FillCircle(ax[1], ay[1], 5);
GUI_SetColor(GUI_WHITE);
GUI_SetTextAlign(GUI_TA_RIGHT);
GUI_DispStringAt("Press here", ax[1]-20, ay[1]);
do {
GUI_PID_STATE State;
GUI_TOUCH_GetState(&State);
if (State.Pressed) {
ax_Phys[1] = GUI_TOUCH_GetxPhys();
ay_Phys[1] = GUI_TOUCH_GetyPhys();
break;
}
GUI_Delay (100);
} while (1);
GUI_TOUCH_Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1]);
GUI_TOUCH_Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1]);
{ /* calculate and display values for configuration file */
int x0, x1;
int y0, y1;
GUI_Clear();
_Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1], &x0, &x1);
_Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1], &y0, &y1);
GUI_DispStringAt("x0: ", 0, 0); GUI_DispDec(x0, 4); GUI_DispNextLine();
GUI_DispString ("x1: "); GUI_DispDec(x1, 4); GUI_DispNextLine();
GUI_DispString ("y0: "); GUI_DispDec(y0, 4); GUI_DispNextLine();
GUI_DispString ("y1: "); GUI_DispDec(y1, 4); GUI_DispNextLine();
GUI_DispString ("Please touch display to continue...");
GUI_Delay(1000);
do {
GUI_PID_STATE State;
GUI_TOUCH_GetState(&State);
if (State.Pressed)
break;
GUI_Delay (10);
} while (1);
}
}
/*********************************************************************
*
* _TestCalibration
*
**********************************************************************
*/
static void _TestCalibration(void) {
int IdleCnt=0;
BUTTON_Handle hButton;
GUI_SetBkColor(GUI_RED);
GUI_SetColor(GUI_WHITE);
GUI_Clear();
hButton = BUTTON_Create( 225, 15, 80, 40, 1, BUTTON_CF_SHOW );
BUTTON_SetText (hButton, "ABORT");
BUTTON_SetFont (hButton, &GUI_FontComic18B_ASCII);
while ((IdleCnt<50) && (GUI_GetKey()==0)) {
static GUI_PID_STATE StateLast;
GUI_PID_STATE State;
GUI_TOUCH_GetState(&State);
if ((StateLast.Pressed != State.Pressed) && (State.Pressed == 0)) {
GUI_Clear();
}
if ((StateLast.x != State.x) || ((StateLast.y != State.y))) {
if (State.Pressed) {
GUI_FillCircle(State.x, State.y, 5);
}
StateLast = State;
}
if (State.Pressed) {
IdleCnt =0;
} else {
IdleCnt++;
}
GUI_Delay (100);
}
EDIT_Delete(hButton);
}
/*********************************************************************
*
* _ExecKeyboard
*
**********************************************************************
This creates a sample keyboard.
The routine returns after ENTER or ESC has been pressed.
*/
#if (LCD_XSIZE == 320) && (LCD_YSIZE == 240)
static char _acText[] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '='
,0, 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'
,0, 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Q'
,0, 'Z', 'X', 'C', 'V', 'B', 'N', 'M', 'Ö', 'Ä', 'Ü'
,' ', ' ', ' ', ' ', ' ', 0, 0
};
static int _ExecKeyboard(void) {
int i;
int Key;
BUTTON_Handle ahButton[52];
BUTTON_Handle hButtonESC;
EDIT_Handle hEdit;
GUI_RECT rText = {000,0, LCD_XSIZE, 20};
GUI_SetBkColor(GUI_RED);
GUI_Clear();
GUI_DrawBitmap(&bmSeggerLogoBlue, 0, 0);
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_SetColor(GUI_WHITE);
GUI_DispStringInRect("emWin", &rText, GUI_TA_RIGHT | GUI_TA_VCENTER);
rText.y0 +=20;
rText.y1 +=20;
GUI_DispStringInRect("Touch screen demo", &rText, GUI_TA_RIGHT | GUI_TA_VCENTER);
/* Create Keyboard Buttons */
for (i=0; i< 51; i++) {
int Pos = (i < 47) ? i : i+4;
int x0 = 5 + 28*(Pos%11);
int y0 = 100 + 28*(Pos/11);
char c = _acText[i];
int Id = c ? c : 1;
char ac[2] = {0};
char *s= ac;
ac[0] = c;
ahButton[i] = BUTTON_Create( x0, y0, 25, 25, Id,BUTTON_CF_SHOW );
BUTTON_SetText (ahButton[i], s);
#if GUI_SUPPORT_MEMDEV
BUTTON_EnableMemdev(ahButton[i]);
#endif
}
ahButton[i] = BUTTON_Create( 89, 212, 109, 25, ' ',BUTTON_CF_SHOW );
hButtonESC = BUTTON_Create( 230, 40, 80, 25, GUI_ID_CANCEL,BUTTON_CF_SHOW );
BUTTON_SetText (hButtonESC, "ESC");
hEdit = EDIT_Create( 5, 70, 310, 25, ' ', 80, 0 );
EDIT_SetFont(hEdit, &GUI_Font8x16);
BUTTON_SetBkColor(ahButton[49], 0, GUI_RED);
BUTTON_SetBkColor(ahButton[50], 0, GUI_BLUE);
/* Handle Keyboard until ESC or ENTER is pressed */
do {
Key = GUIDEMO_WaitKey();
switch (Key) {
case 0:
case GUI_ID_CANCEL:
break;
default:
EDIT_AddKey(hEdit, Key);
}
} while ((Key != 'N') && (Key!=GUI_ID_CANCEL) && (Key!=0));
/* Cleanup */
for (i=0; i< countof(ahButton); i++) {
BUTTON_Delete(ahButton[i]);
}
BUTTON_Delete(hButtonESC);
EDIT_Delete(hEdit);
return Key;
}
#else
static char _acText[] = {
'7','8','9','/',
'4','5','6','*',
'1','2','3','-',
'0',',','+','=',0
};
static int _ExecKeyboard(void) {
int y0 = 75;
int XSize = LCD_GetXSize();
int YSize = LCD_GetYSize();
int XStep = XSize / 4;
int YStep = (YSize - y0) / 4;
int i;
int Key;
BUTTON_Handle ahButton[16];
BUTTON_Handle hButtonESC;
EDIT_Handle hEdit;
GUI_RECT rText = {0};
rText.x1 = LCD_GetXSize() - 3;
rText.y1 = 20;
GUI_SetBkColor(GUI_RED);
GUI_Clear();
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_SetColor(GUI_WHITE);
GUI_DispStringInRect("emWin", &rText, GUI_TA_RIGHT | GUI_TA_VCENTER);
rText.y0 +=20;
rText.y1 +=20;
GUI_DispStringInRect("Touch screen demo", &rText, GUI_TA_RIGHT | GUI_TA_VCENTER);
/* Create Keyboard Buttons */
for (i=0; _acText[i]; i++) {
int XPos = (i%4) * XStep + 3;
int YPos = (i/4) * YStep + 3 + y0;
char c = _acText[i];
int Id = c ? c : 1;
char ac[2] = {0};
char *s= ac;
ac[0] = c;
ahButton[i] = BUTTON_Create( XPos, YPos, XStep - 5, YStep - 5, Id, BUTTON_CF_SHOW );
BUTTON_SetText(ahButton[i], s);
BUTTON_EnableMemdev(ahButton[i]);
}
hButtonESC = BUTTON_Create( 3, 3, 80, 25, GUI_ID_CANCEL, BUTTON_CF_SHOW );
BUTTON_SetText(hButtonESC, "ESC");
hEdit = EDIT_Create( 5, y0 - 30, XSize - 10, 25, ' ', 80, 0 );
EDIT_SetFont(hEdit, &GUI_Font8x16);
/* Handle Keyboard until ESC or ENTER is pressed */
do {
Key = GUIDEMO_WaitKey();
switch (Key) {
case 0:
case GUI_ID_CANCEL:
break;
default:
EDIT_AddKey(hEdit, Key);
}
} while ((Key != 'N') && (Key!=GUI_ID_CANCEL) && (Key!=0));
/* Cleanup */
for (i=0; i< countof(ahButton); i++) {
BUTTON_Delete(ahButton[i]);
}
BUTTON_Delete(hButtonESC);
EDIT_Delete(hEdit);
return Key;
}
#endif
/*
**********************************************************************
*
* USER_Task
*
**********************************************************************
*/
#if GUIDEMO_LARGE
void GUIDEMO_Touch(void) {
#define ID_KEYBOARD 1
#define ID_TESTCAL 2
#define ID_CALIBRATE 3
int i, r;
int XSize = LCD_GetXSize();
int YSize = LCD_GetYSize();
int XMid = XSize / 2;
int YMid = YSize / 2;
GUIDEMO_NotifyStartNext();
GUIDEMO_HideInfoWin();
do {
GUI_RECT rText;/*= {0, 80, XSize, 120};*/
BUTTON_Handle ahButton[3];
rText.x0=0;
rText.y0=80;
rText.x1=XSize;
rText.y1=120;
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
GUI_DrawBitmap(&bmSeggerLogoBlue, (XSize - 1 - bmSeggerLogoBlue.XSize) / 2, 15);
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_DispStringInRect("emWin Touch screen demo", &rText, GUI_TA_HCENTER | GUI_TA_VCENTER);
ahButton[0] = BUTTON_Create( XMid - 50, YMid - 20, 100, 50, ID_CALIBRATE,BUTTON_CF_SHOW );
ahButton[1] = BUTTON_Create( XMid - 90, YMid + 40, 80, 30, ID_KEYBOARD, BUTTON_CF_SHOW );
ahButton[2] = BUTTON_Create( XMid + 10, YMid + 40, 80, 30, ID_TESTCAL,BUTTON_CF_SHOW );
BUTTON_SetText (ahButton[0], "Calibrate");
BUTTON_SetBkColor(ahButton[0], 0, GUI_RED);
BUTTON_SetText (ahButton[1], "Keyboard");
BUTTON_SetText (ahButton[2], "Test calibration");
BUTTON_SetFont(ahButton[0], &GUI_FontComic18B_ASCII);
r = GUIDEMO_WaitKey();
if (r==0) {
r = ID_KEYBOARD;
BUTTON_SetState(ahButton[1], BUTTON_STATE_PRESSED);
GUIDEMO_Delay(500);
}
for (i=0; i< countof(ahButton); i++) {
BUTTON_Delete(ahButton[i]);
}
switch (r) {
case ID_KEYBOARD: r= _ExecKeyboard(); break;
case ID_CALIBRATE: _ExecCalibration(); break;
case ID_TESTCAL: _TestCalibration(); break;
}
} while (r && (r!='n') && (r!='N'));
}
#else
void GUIDEMO_Touch(void) {}
#endif
#else
void GUIDEMO_Touch(void) {} /* avoid empty object files */
#endif /* #if GUI_WINSUPPORT */
@@ -0,0 +1,28 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : MainTask.c
Purpose : Init GUI & call of GUI-demo
--------------------END-OF-HEADER-------------------------------------
*/
#include "GUI.h"
#include "GUIDEMO.h"
void MainTask(void) {
GUI_Init();
while(1) {
GUIDEMO_main();
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,907 @@
/*
C-file generated by Bitmap converter for emWin GSC V2.30b, compiled May 8 2002, 10:05:14
Copyright (C) 1998-2002
Segger Microcontroller Systeme GmbH
www.segger.com
Solutions for real time microcontroller applications
Source file: SeggerLogo
Dimensions: 138 * 65
NumColors: 6
*/
#include "stdlib.h"
#include "GUI.h"
#include "GUIDEMO.h"
#ifndef GUI_CONST_STORAGE
#define GUI_CONST_STORAGE const
#endif
extern const GUI_BITMAP bmSeggerLogoBlue;
/*********************************************************************
*
* colors (SEGGER logo)
*
**********************************************************************
*/
GUI_CONST_STORAGE GUI_COLOR ColorsSeggerLogoBlue[] = {
0x0000FF,0x000000,0x888888,0xFFFFFF
,0xFF0000,0xBBBBBB
};
GUI_CONST_STORAGE GUI_LOGPALETTE PalSeggerLogoBlue = {
6, /* number of entries */
1, /* Has transparency */
&ColorsSeggerLogoBlue[0]
};
#if !(GUIDEMO_TINY)
/*********************************************************************
*
* SEGGER logo, 100% size
*
**********************************************************************
*/
#ifdef LOGO_COMP
GUI_CONST_STORAGE unsigned char acSeggerLogoBlue[] = {
/* RLE: 141 Pixels @ 000,000*/ 141, 0x00,
/* RLE: 132 Pixels @ 003,001*/ 132, 0x01,
/* RLE: 005 Pixels @ 135,001*/ 5, 0x00,
/* RLE: 134 Pixels @ 002,002*/ 134, 0x01,
/* RLE: 003 Pixels @ 136,002*/ 3, 0x00,
/* RLE: 004 Pixels @ 001,003*/ 4, 0x01,
/* RLE: 128 Pixels @ 005,003*/ 128, 0x02,
/* RLE: 004 Pixels @ 133,003*/ 4, 0x01,
/* ABS: 005 Pixels @ 137,003*/ 0, 5, 0x00, 0x11, 0x10,
/* RLE: 130 Pixels @ 004,004*/ 130, 0x03,
/* RLE: 003 Pixels @ 134,004*/ 3, 0x01,
/* ABS: 005 Pixels @ 137,004*/ 0, 5, 0x00, 0x11, 0x20,
/* RLE: 130 Pixels @ 004,005*/ 130, 0x03,
/* RLE: 003 Pixels @ 134,005*/ 3, 0x01,
/* ABS: 005 Pixels @ 137,005*/ 0, 5, 0x00, 0x11, 0x20,
/* RLE: 130 Pixels @ 004,006*/ 130, 0x03,
/* ABS: 008 Pixels @ 134,006*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 130 Pixels @ 004,007*/ 130, 0x03,
/* ABS: 008 Pixels @ 134,007*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 004 Pixels @ 004,008*/ 4, 0x03,
/* RLE: 004 Pixels @ 008,008*/ 4, 0x04,
/* RLE: 010 Pixels @ 012,008*/ 10, 0x03,
/* RLE: 004 Pixels @ 022,008*/ 4, 0x04,
/* RLE: 108 Pixels @ 026,008*/ 108, 0x03,
/* ABS: 008 Pixels @ 134,008*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 004 Pixels @ 004,009*/ 4, 0x03,
/* RLE: 004 Pixels @ 008,009*/ 4, 0x04,
/* RLE: 010 Pixels @ 012,009*/ 10, 0x03,
/* RLE: 004 Pixels @ 022,009*/ 4, 0x04,
/* RLE: 108 Pixels @ 026,009*/ 108, 0x03,
/* ABS: 008 Pixels @ 134,009*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 004 Pixels @ 004,010*/ 4, 0x03,
/* RLE: 005 Pixels @ 008,010*/ 5, 0x04,
/* RLE: 001 Pixels @ 013,010*/ 1, 0x05,
/* RLE: 008 Pixels @ 014,010*/ 8, 0x03,
/* RLE: 005 Pixels @ 022,010*/ 5, 0x04,
/* RLE: 001 Pixels @ 027,010*/ 1, 0x05,
/* RLE: 106 Pixels @ 028,010*/ 106, 0x03,
/* ABS: 008 Pixels @ 134,010*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 004 Pixels @ 004,011*/ 4, 0x03,
/* RLE: 006 Pixels @ 008,011*/ 6, 0x04,
/* RLE: 008 Pixels @ 014,011*/ 8, 0x03,
/* RLE: 006 Pixels @ 022,011*/ 6, 0x04,
/* RLE: 106 Pixels @ 028,011*/ 106, 0x03,
/* ABS: 008 Pixels @ 134,011*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 005 Pixels @ 004,012*/ 5, 0x03,
/* RLE: 006 Pixels @ 009,012*/ 6, 0x04,
/* RLE: 008 Pixels @ 015,012*/ 8, 0x03,
/* RLE: 006 Pixels @ 023,012*/ 6, 0x04,
/* RLE: 105 Pixels @ 029,012*/ 105, 0x03,
/* ABS: 008 Pixels @ 134,012*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 006 Pixels @ 004,013*/ 6, 0x03,
/* RLE: 005 Pixels @ 010,013*/ 5, 0x04,
/* RLE: 001 Pixels @ 015,013*/ 1, 0x05,
/* RLE: 007 Pixels @ 016,013*/ 7, 0x03,
/* RLE: 001 Pixels @ 023,013*/ 1, 0x05,
/* RLE: 005 Pixels @ 024,013*/ 5, 0x04,
/* RLE: 001 Pixels @ 029,013*/ 1, 0x05,
/* RLE: 104 Pixels @ 030,013*/ 104, 0x03,
/* ABS: 008 Pixels @ 134,013*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 006 Pixels @ 004,014*/ 6, 0x03,
/* RLE: 001 Pixels @ 010,014*/ 1, 0x05,
/* RLE: 005 Pixels @ 011,014*/ 5, 0x04,
/* RLE: 001 Pixels @ 016,014*/ 1, 0x05,
/* RLE: 007 Pixels @ 017,014*/ 7, 0x03,
/* RLE: 006 Pixels @ 024,014*/ 6, 0x04,
/* RLE: 104 Pixels @ 030,014*/ 104, 0x03,
/* ABS: 008 Pixels @ 134,014*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 007 Pixels @ 004,015*/ 7, 0x03,
/* RLE: 001 Pixels @ 011,015*/ 1, 0x05,
/* RLE: 005 Pixels @ 012,015*/ 5, 0x04,
/* RLE: 008 Pixels @ 017,015*/ 8, 0x03,
/* RLE: 006 Pixels @ 025,015*/ 6, 0x04,
/* RLE: 103 Pixels @ 031,015*/ 103, 0x03,
/* ABS: 008 Pixels @ 134,015*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 008 Pixels @ 004,016*/ 8, 0x03,
/* RLE: 006 Pixels @ 012,016*/ 6, 0x04,
/* RLE: 008 Pixels @ 018,016*/ 8, 0x03,
/* RLE: 005 Pixels @ 026,016*/ 5, 0x04,
/* RLE: 001 Pixels @ 031,016*/ 1, 0x05,
/* RLE: 102 Pixels @ 032,016*/ 102, 0x03,
/* ABS: 008 Pixels @ 134,016*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 009 Pixels @ 004,017*/ 9, 0x03,
/* RLE: 006 Pixels @ 013,017*/ 6, 0x04,
/* RLE: 007 Pixels @ 019,017*/ 7, 0x03,
/* RLE: 001 Pixels @ 026,017*/ 1, 0x05,
/* RLE: 005 Pixels @ 027,017*/ 5, 0x04,
/* RLE: 001 Pixels @ 032,017*/ 1, 0x05,
/* RLE: 101 Pixels @ 033,017*/ 101, 0x03,
/* ABS: 008 Pixels @ 134,017*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 009 Pixels @ 004,018*/ 9, 0x03,
/* RLE: 001 Pixels @ 013,018*/ 1, 0x05,
/* RLE: 005 Pixels @ 014,018*/ 5, 0x04,
/* RLE: 001 Pixels @ 019,018*/ 1, 0x05,
/* RLE: 007 Pixels @ 020,018*/ 7, 0x03,
/* RLE: 006 Pixels @ 027,018*/ 6, 0x04,
/* RLE: 101 Pixels @ 033,018*/ 101, 0x03,
/* ABS: 008 Pixels @ 134,018*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 010 Pixels @ 004,019*/ 10, 0x03,
/* RLE: 001 Pixels @ 014,019*/ 1, 0x05,
/* RLE: 005 Pixels @ 015,019*/ 5, 0x04,
/* RLE: 008 Pixels @ 020,019*/ 8, 0x03,
/* RLE: 006 Pixels @ 028,019*/ 6, 0x04,
/* RLE: 100 Pixels @ 034,019*/ 100, 0x03,
/* ABS: 008 Pixels @ 134,019*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 011 Pixels @ 004,020*/ 11, 0x03,
/* RLE: 006 Pixels @ 015,020*/ 6, 0x04,
/* RLE: 008 Pixels @ 021,020*/ 8, 0x03,
/* RLE: 005 Pixels @ 029,020*/ 5, 0x04,
/* RLE: 001 Pixels @ 034,020*/ 1, 0x05,
/* RLE: 099 Pixels @ 035,020*/ 99, 0x03,
/* ABS: 012 Pixels @ 134,020*/ 0, 12, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34,
/* RLE: 008 Pixels @ 008,021*/ 8, 0x03,
/* RLE: 006 Pixels @ 016,021*/ 6, 0x04,
/* RLE: 007 Pixels @ 022,021*/ 7, 0x03,
/* RLE: 001 Pixels @ 029,021*/ 1, 0x05,
/* RLE: 005 Pixels @ 030,021*/ 5, 0x04,
/* RLE: 099 Pixels @ 035,021*/ 99, 0x03,
/* ABS: 013 Pixels @ 134,021*/ 0, 13, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34, 0x40,
/* RLE: 007 Pixels @ 009,022*/ 7, 0x03,
/* RLE: 001 Pixels @ 016,022*/ 1, 0x05,
/* RLE: 005 Pixels @ 017,022*/ 5, 0x04,
/* RLE: 001 Pixels @ 022,022*/ 1, 0x05,
/* RLE: 007 Pixels @ 023,022*/ 7, 0x03,
/* RLE: 006 Pixels @ 030,022*/ 6, 0x04,
/* RLE: 098 Pixels @ 036,022*/ 98, 0x03,
/* ABS: 014 Pixels @ 134,022*/ 0, 14, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34, 0x44,
/* RLE: 007 Pixels @ 010,023*/ 7, 0x03,
/* RLE: 006 Pixels @ 017,023*/ 6, 0x04,
/* RLE: 008 Pixels @ 023,023*/ 8, 0x03,
/* RLE: 005 Pixels @ 031,023*/ 5, 0x04,
/* RLE: 001 Pixels @ 036,023*/ 1, 0x05,
/* RLE: 097 Pixels @ 037,023*/ 97, 0x03,
/* ABS: 015 Pixels @ 134,023*/ 0, 15, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34, 0x44, 0x50,
/* RLE: 007 Pixels @ 011,024*/ 7, 0x03,
/* RLE: 006 Pixels @ 018,024*/ 6, 0x04,
/* RLE: 007 Pixels @ 024,024*/ 7, 0x03,
/* RLE: 001 Pixels @ 031,024*/ 1, 0x05,
/* RLE: 005 Pixels @ 032,024*/ 5, 0x04,
/* RLE: 001 Pixels @ 037,024*/ 1, 0x05,
/* RLE: 096 Pixels @ 038,024*/ 96, 0x03,
/* ABS: 011 Pixels @ 134,024*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 004 Pixels @ 007,025*/ 4, 0x04,
/* RLE: 008 Pixels @ 011,025*/ 8, 0x03,
/* RLE: 006 Pixels @ 019,025*/ 6, 0x04,
/* RLE: 007 Pixels @ 025,025*/ 7, 0x03,
/* RLE: 001 Pixels @ 032,025*/ 1, 0x05,
/* RLE: 005 Pixels @ 033,025*/ 5, 0x04,
/* RLE: 096 Pixels @ 038,025*/ 96, 0x03,
/* ABS: 011 Pixels @ 134,025*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 005 Pixels @ 007,026*/ 5, 0x04,
/* RLE: 007 Pixels @ 012,026*/ 7, 0x03,
/* RLE: 001 Pixels @ 019,026*/ 1, 0x05,
/* RLE: 005 Pixels @ 020,026*/ 5, 0x04,
/* RLE: 001 Pixels @ 025,026*/ 1, 0x05,
/* RLE: 007 Pixels @ 026,026*/ 7, 0x03,
/* RLE: 006 Pixels @ 033,026*/ 6, 0x04,
/* RLE: 095 Pixels @ 039,026*/ 95, 0x03,
/* ABS: 011 Pixels @ 134,026*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 006 Pixels @ 007,027*/ 6, 0x04,
/* RLE: 007 Pixels @ 013,027*/ 7, 0x03,
/* RLE: 001 Pixels @ 020,027*/ 1, 0x05,
/* RLE: 005 Pixels @ 021,027*/ 5, 0x04,
/* RLE: 008 Pixels @ 026,027*/ 8, 0x03,
/* RLE: 095 Pixels @ 034,027*/ 95, 0x04,
/* RLE: 005 Pixels @ 129,027*/ 5, 0x03,
/* ABS: 011 Pixels @ 134,027*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 006 Pixels @ 007,028*/ 6, 0x04,
/* RLE: 001 Pixels @ 013,028*/ 1, 0x05,
/* RLE: 007 Pixels @ 014,028*/ 7, 0x03,
/* RLE: 006 Pixels @ 021,028*/ 6, 0x04,
/* RLE: 007 Pixels @ 027,028*/ 7, 0x03,
/* RLE: 001 Pixels @ 034,028*/ 1, 0x05,
/* RLE: 095 Pixels @ 035,028*/ 95, 0x04,
/* RLE: 004 Pixels @ 130,028*/ 4, 0x03,
/* ABS: 011 Pixels @ 134,028*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 007 Pixels @ 007,029*/ 7, 0x04,
/* RLE: 008 Pixels @ 014,029*/ 8, 0x03,
/* RLE: 006 Pixels @ 022,029*/ 6, 0x04,
/* RLE: 007 Pixels @ 028,029*/ 7, 0x03,
/* RLE: 095 Pixels @ 035,029*/ 95, 0x04,
/* RLE: 004 Pixels @ 130,029*/ 4, 0x03,
/* ABS: 011 Pixels @ 134,029*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 008 Pixels @ 007,030*/ 8, 0x04,
/* RLE: 007 Pixels @ 015,030*/ 7, 0x03,
/* RLE: 001 Pixels @ 022,030*/ 1, 0x05,
/* RLE: 005 Pixels @ 023,030*/ 5, 0x04,
/* RLE: 001 Pixels @ 028,030*/ 1, 0x05,
/* RLE: 007 Pixels @ 029,030*/ 7, 0x03,
/* RLE: 094 Pixels @ 036,030*/ 94, 0x04,
/* RLE: 004 Pixels @ 130,030*/ 4, 0x03,
/* ABS: 011 Pixels @ 134,030*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 009 Pixels @ 007,031*/ 9, 0x04,
/* RLE: 007 Pixels @ 016,031*/ 7, 0x03,
/* RLE: 001 Pixels @ 023,031*/ 1, 0x05,
/* RLE: 005 Pixels @ 024,031*/ 5, 0x04,
/* RLE: 001 Pixels @ 029,031*/ 1, 0x05,
/* RLE: 006 Pixels @ 030,031*/ 6, 0x03,
/* RLE: 093 Pixels @ 036,031*/ 93, 0x04,
/* RLE: 005 Pixels @ 129,031*/ 5, 0x03,
/* ABS: 011 Pixels @ 134,031*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 010 Pixels @ 007,032*/ 10, 0x04,
/* RLE: 007 Pixels @ 017,032*/ 7, 0x03,
/* RLE: 006 Pixels @ 024,032*/ 6, 0x04,
/* RLE: 104 Pixels @ 030,032*/ 104, 0x03,
/* ABS: 011 Pixels @ 134,032*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 009 Pixels @ 007,033*/ 9, 0x04,
/* RLE: 007 Pixels @ 016,033*/ 7, 0x03,
/* RLE: 001 Pixels @ 023,033*/ 1, 0x05,
/* RLE: 005 Pixels @ 024,033*/ 5, 0x04,
/* RLE: 001 Pixels @ 029,033*/ 1, 0x05,
/* RLE: 006 Pixels @ 030,033*/ 6, 0x03,
/* RLE: 093 Pixels @ 036,033*/ 93, 0x04,
/* RLE: 005 Pixels @ 129,033*/ 5, 0x03,
/* ABS: 011 Pixels @ 134,033*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 008 Pixels @ 007,034*/ 8, 0x04,
/* RLE: 007 Pixels @ 015,034*/ 7, 0x03,
/* RLE: 001 Pixels @ 022,034*/ 1, 0x05,
/* RLE: 006 Pixels @ 023,034*/ 6, 0x04,
/* RLE: 007 Pixels @ 029,034*/ 7, 0x03,
/* RLE: 094 Pixels @ 036,034*/ 94, 0x04,
/* RLE: 004 Pixels @ 130,034*/ 4, 0x03,
/* ABS: 011 Pixels @ 134,034*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 007 Pixels @ 007,035*/ 7, 0x04,
/* RLE: 008 Pixels @ 014,035*/ 8, 0x03,
/* RLE: 006 Pixels @ 022,035*/ 6, 0x04,
/* RLE: 007 Pixels @ 028,035*/ 7, 0x03,
/* RLE: 095 Pixels @ 035,035*/ 95, 0x04,
/* RLE: 004 Pixels @ 130,035*/ 4, 0x03,
/* ABS: 011 Pixels @ 134,035*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 006 Pixels @ 007,036*/ 6, 0x04,
/* RLE: 001 Pixels @ 013,036*/ 1, 0x05,
/* RLE: 007 Pixels @ 014,036*/ 7, 0x03,
/* RLE: 006 Pixels @ 021,036*/ 6, 0x04,
/* RLE: 007 Pixels @ 027,036*/ 7, 0x03,
/* RLE: 001 Pixels @ 034,036*/ 1, 0x05,
/* RLE: 095 Pixels @ 035,036*/ 95, 0x04,
/* RLE: 004 Pixels @ 130,036*/ 4, 0x03,
/* ABS: 011 Pixels @ 134,036*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 006 Pixels @ 007,037*/ 6, 0x04,
/* RLE: 007 Pixels @ 013,037*/ 7, 0x03,
/* RLE: 001 Pixels @ 020,037*/ 1, 0x05,
/* RLE: 005 Pixels @ 021,037*/ 5, 0x04,
/* RLE: 008 Pixels @ 026,037*/ 8, 0x03,
/* RLE: 095 Pixels @ 034,037*/ 95, 0x04,
/* RLE: 005 Pixels @ 129,037*/ 5, 0x03,
/* ABS: 011 Pixels @ 134,037*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 005 Pixels @ 007,038*/ 5, 0x04,
/* RLE: 007 Pixels @ 012,038*/ 7, 0x03,
/* RLE: 001 Pixels @ 019,038*/ 1, 0x05,
/* RLE: 005 Pixels @ 020,038*/ 5, 0x04,
/* RLE: 001 Pixels @ 025,038*/ 1, 0x05,
/* RLE: 007 Pixels @ 026,038*/ 7, 0x03,
/* RLE: 006 Pixels @ 033,038*/ 6, 0x04,
/* RLE: 095 Pixels @ 039,038*/ 95, 0x03,
/* ABS: 011 Pixels @ 134,038*/ 0, 11, 0x21, 0x10, 0x01, 0x12, 0x33, 0x30,
/* RLE: 004 Pixels @ 007,039*/ 4, 0x04,
/* RLE: 008 Pixels @ 011,039*/ 8, 0x03,
/* RLE: 006 Pixels @ 019,039*/ 6, 0x04,
/* RLE: 007 Pixels @ 025,039*/ 7, 0x03,
/* RLE: 001 Pixels @ 032,039*/ 1, 0x05,
/* RLE: 005 Pixels @ 033,039*/ 5, 0x04,
/* RLE: 096 Pixels @ 038,039*/ 96, 0x03,
/* ABS: 015 Pixels @ 134,039*/ 0, 15, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34, 0x44, 0x50,
/* RLE: 007 Pixels @ 011,040*/ 7, 0x03,
/* RLE: 006 Pixels @ 018,040*/ 6, 0x04,
/* RLE: 007 Pixels @ 024,040*/ 7, 0x03,
/* RLE: 001 Pixels @ 031,040*/ 1, 0x05,
/* RLE: 005 Pixels @ 032,040*/ 5, 0x04,
/* RLE: 097 Pixels @ 037,040*/ 97, 0x03,
/* ABS: 014 Pixels @ 134,040*/ 0, 14, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34, 0x44,
/* RLE: 007 Pixels @ 010,041*/ 7, 0x03,
/* RLE: 001 Pixels @ 017,041*/ 1, 0x05,
/* RLE: 005 Pixels @ 018,041*/ 5, 0x04,
/* RLE: 008 Pixels @ 023,041*/ 8, 0x03,
/* RLE: 005 Pixels @ 031,041*/ 5, 0x04,
/* RLE: 001 Pixels @ 036,041*/ 1, 0x05,
/* RLE: 097 Pixels @ 037,041*/ 97, 0x03,
/* ABS: 013 Pixels @ 134,041*/ 0, 13, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34, 0x40,
/* RLE: 007 Pixels @ 009,042*/ 7, 0x03,
/* RLE: 001 Pixels @ 016,042*/ 1, 0x05,
/* RLE: 005 Pixels @ 017,042*/ 5, 0x04,
/* RLE: 001 Pixels @ 022,042*/ 1, 0x05,
/* RLE: 007 Pixels @ 023,042*/ 7, 0x03,
/* RLE: 006 Pixels @ 030,042*/ 6, 0x04,
/* RLE: 098 Pixels @ 036,042*/ 98, 0x03,
/* ABS: 012 Pixels @ 134,042*/ 0, 12, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34,
/* RLE: 008 Pixels @ 008,043*/ 8, 0x03,
/* RLE: 006 Pixels @ 016,043*/ 6, 0x04,
/* RLE: 007 Pixels @ 022,043*/ 7, 0x03,
/* RLE: 001 Pixels @ 029,043*/ 1, 0x05,
/* RLE: 005 Pixels @ 030,043*/ 5, 0x04,
/* RLE: 007 Pixels @ 035,043*/ 7, 0x03,
/* ABS: 007 Pixels @ 042,043*/ 0, 7, 0x22, 0x11, 0x12, 0x20,
/* RLE: 006 Pixels @ 049,043*/ 6, 0x03,
/* RLE: 001 Pixels @ 055,043*/ 1, 0x02,
/* RLE: 010 Pixels @ 056,043*/ 10, 0x01,
/* RLE: 001 Pixels @ 066,043*/ 1, 0x02,
/* RLE: 004 Pixels @ 067,043*/ 4, 0x03,
/* ABS: 008 Pixels @ 071,043*/ 0, 8, 0x52, 0x21, 0x11, 0x25,
/* RLE: 008 Pixels @ 079,043*/ 8, 0x03,
/* ABS: 008 Pixels @ 087,043*/ 0, 8, 0x52, 0x21, 0x11, 0x25,
/* RLE: 007 Pixels @ 095,043*/ 7, 0x03,
/* RLE: 001 Pixels @ 102,043*/ 1, 0x02,
/* RLE: 010 Pixels @ 103,043*/ 10, 0x01,
/* ABS: 004 Pixels @ 113,043*/ 0, 4, 0x23, 0x32,
/* RLE: 008 Pixels @ 117,043*/ 8, 0x01,
/* ABS: 002 Pixels @ 125,043*/ 0, 2, 0x25,
/* RLE: 007 Pixels @ 127,043*/ 7, 0x03,
/* ABS: 012 Pixels @ 134,043*/ 0, 12, 0x21, 0x10, 0x01, 0x12, 0x33, 0x34,
/* RLE: 007 Pixels @ 008,044*/ 7, 0x03,
/* RLE: 006 Pixels @ 015,044*/ 6, 0x04,
/* RLE: 008 Pixels @ 021,044*/ 8, 0x03,
/* RLE: 005 Pixels @ 029,044*/ 5, 0x04,
/* RLE: 001 Pixels @ 034,044*/ 1, 0x05,
/* RLE: 006 Pixels @ 035,044*/ 6, 0x03,
/* RLE: 009 Pixels @ 041,044*/ 9, 0x01,
/* RLE: 001 Pixels @ 050,044*/ 1, 0x05,
/* RLE: 004 Pixels @ 051,044*/ 4, 0x03,
/* RLE: 011 Pixels @ 055,044*/ 11, 0x01,
/* ABS: 005 Pixels @ 066,044*/ 0, 5, 0x23, 0x33, 0x20,
/* RLE: 009 Pixels @ 071,044*/ 9, 0x01,
/* RLE: 006 Pixels @ 080,044*/ 6, 0x03,
/* RLE: 001 Pixels @ 086,044*/ 1, 0x02,
/* RLE: 009 Pixels @ 087,044*/ 9, 0x01,
/* RLE: 006 Pixels @ 096,044*/ 6, 0x03,
/* RLE: 011 Pixels @ 102,044*/ 11, 0x01,
/* ABS: 003 Pixels @ 113,044*/ 0, 3, 0x23, 0x30,
/* RLE: 011 Pixels @ 116,044*/ 11, 0x01,
/* RLE: 001 Pixels @ 127,044*/ 1, 0x05,
/* RLE: 006 Pixels @ 128,044*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,044*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 010 Pixels @ 004,045*/ 10, 0x03,
/* RLE: 001 Pixels @ 014,045*/ 1, 0x05,
/* RLE: 005 Pixels @ 015,045*/ 5, 0x04,
/* RLE: 008 Pixels @ 020,045*/ 8, 0x03,
/* RLE: 006 Pixels @ 028,045*/ 6, 0x04,
/* RLE: 006 Pixels @ 034,045*/ 6, 0x03,
/* ABS: 011 Pixels @ 040,045*/ 0, 11, 0x21, 0x12, 0x33, 0x35, 0x11, 0x10,
/* RLE: 004 Pixels @ 051,045*/ 4, 0x03,
/* RLE: 003 Pixels @ 055,045*/ 3, 0x01,
/* RLE: 011 Pixels @ 058,045*/ 11, 0x03,
/* ABS: 012 Pixels @ 069,045*/ 0, 12, 0x21, 0x12, 0x53, 0x35, 0x21, 0x11,
/* RLE: 004 Pixels @ 081,045*/ 4, 0x03,
/* ABS: 012 Pixels @ 085,045*/ 0, 12, 0x21, 0x12, 0x53, 0x35, 0x21, 0x11,
/* RLE: 005 Pixels @ 097,045*/ 5, 0x03,
/* RLE: 003 Pixels @ 102,045*/ 3, 0x01,
/* RLE: 011 Pixels @ 105,045*/ 11, 0x03,
/* RLE: 003 Pixels @ 116,045*/ 3, 0x01,
/* RLE: 005 Pixels @ 119,045*/ 5, 0x03,
/* ABS: 004 Pixels @ 124,045*/ 0, 4, 0x21, 0x12,
/* RLE: 006 Pixels @ 128,045*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,045*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 009 Pixels @ 004,046*/ 9, 0x03,
/* RLE: 001 Pixels @ 013,046*/ 1, 0x05,
/* RLE: 005 Pixels @ 014,046*/ 5, 0x04,
/* RLE: 001 Pixels @ 019,046*/ 1, 0x05,
/* RLE: 007 Pixels @ 020,046*/ 7, 0x03,
/* RLE: 006 Pixels @ 027,046*/ 6, 0x04,
/* RLE: 007 Pixels @ 033,046*/ 7, 0x03,
/* RLE: 003 Pixels @ 040,046*/ 3, 0x01,
/* RLE: 005 Pixels @ 043,046*/ 5, 0x03,
/* ABS: 003 Pixels @ 048,046*/ 0, 3, 0x51, 0x20,
/* RLE: 004 Pixels @ 051,046*/ 4, 0x03,
/* RLE: 003 Pixels @ 055,046*/ 3, 0x01,
/* RLE: 010 Pixels @ 058,046*/ 10, 0x03,
/* ABS: 004 Pixels @ 068,046*/ 0, 4, 0x51, 0x12,
/* RLE: 006 Pixels @ 072,046*/ 6, 0x03,
/* ABS: 010 Pixels @ 078,046*/ 0, 10, 0x21, 0x23, 0x33, 0x51, 0x12,
/* RLE: 006 Pixels @ 088,046*/ 6, 0x03,
/* ABS: 003 Pixels @ 094,046*/ 0, 3, 0x21, 0x20,
/* RLE: 005 Pixels @ 097,046*/ 5, 0x03,
/* RLE: 003 Pixels @ 102,046*/ 3, 0x01,
/* RLE: 011 Pixels @ 105,046*/ 11, 0x03,
/* RLE: 003 Pixels @ 116,046*/ 3, 0x01,
/* RLE: 006 Pixels @ 119,046*/ 6, 0x03,
/* RLE: 003 Pixels @ 125,046*/ 3, 0x01,
/* RLE: 006 Pixels @ 128,046*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,046*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 009 Pixels @ 004,047*/ 9, 0x03,
/* RLE: 006 Pixels @ 013,047*/ 6, 0x04,
/* RLE: 007 Pixels @ 019,047*/ 7, 0x03,
/* RLE: 001 Pixels @ 026,047*/ 1, 0x05,
/* RLE: 005 Pixels @ 027,047*/ 5, 0x04,
/* RLE: 001 Pixels @ 032,047*/ 1, 0x05,
/* RLE: 007 Pixels @ 033,047*/ 7, 0x03,
/* ABS: 005 Pixels @ 040,047*/ 0, 5, 0x21, 0x12, 0x50,
/* RLE: 010 Pixels @ 045,047*/ 10, 0x03,
/* RLE: 003 Pixels @ 055,047*/ 3, 0x01,
/* RLE: 010 Pixels @ 058,047*/ 10, 0x03,
/* ABS: 004 Pixels @ 068,047*/ 0, 4, 0x21, 0x15,
/* RLE: 012 Pixels @ 072,047*/ 12, 0x03,
/* ABS: 004 Pixels @ 084,047*/ 0, 4, 0x21, 0x15,
/* RLE: 014 Pixels @ 088,047*/ 14, 0x03,
/* RLE: 003 Pixels @ 102,047*/ 3, 0x01,
/* RLE: 011 Pixels @ 105,047*/ 11, 0x03,
/* RLE: 003 Pixels @ 116,047*/ 3, 0x01,
/* RLE: 006 Pixels @ 119,047*/ 6, 0x03,
/* RLE: 003 Pixels @ 125,047*/ 3, 0x01,
/* RLE: 006 Pixels @ 128,047*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,047*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 008 Pixels @ 004,048*/ 8, 0x03,
/* RLE: 006 Pixels @ 012,048*/ 6, 0x04,
/* RLE: 008 Pixels @ 018,048*/ 8, 0x03,
/* RLE: 005 Pixels @ 026,048*/ 5, 0x04,
/* RLE: 001 Pixels @ 031,048*/ 1, 0x05,
/* RLE: 009 Pixels @ 032,048*/ 9, 0x03,
/* RLE: 006 Pixels @ 041,048*/ 6, 0x01,
/* ABS: 002 Pixels @ 047,048*/ 0, 2, 0x22,
/* RLE: 006 Pixels @ 049,048*/ 6, 0x03,
/* RLE: 010 Pixels @ 055,048*/ 10, 0x01,
/* ABS: 006 Pixels @ 065,048*/ 0, 6, 0x23, 0x31, 0x11,
/* RLE: 013 Pixels @ 071,048*/ 13, 0x03,
/* RLE: 003 Pixels @ 084,048*/ 3, 0x01,
/* RLE: 015 Pixels @ 087,048*/ 15, 0x03,
/* RLE: 010 Pixels @ 102,048*/ 10, 0x01,
/* ABS: 007 Pixels @ 112,048*/ 0, 7, 0x23, 0x33, 0x11, 0x10,
/* RLE: 005 Pixels @ 119,048*/ 5, 0x03,
/* ABS: 004 Pixels @ 124,048*/ 0, 4, 0x21, 0x12,
/* RLE: 006 Pixels @ 128,048*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,048*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 007 Pixels @ 004,049*/ 7, 0x03,
/* RLE: 001 Pixels @ 011,049*/ 1, 0x05,
/* RLE: 005 Pixels @ 012,049*/ 5, 0x04,
/* RLE: 008 Pixels @ 017,049*/ 8, 0x03,
/* RLE: 006 Pixels @ 025,049*/ 6, 0x04,
/* RLE: 011 Pixels @ 031,049*/ 11, 0x03,
/* ABS: 003 Pixels @ 042,049*/ 0, 3, 0x52, 0x20,
/* RLE: 005 Pixels @ 045,049*/ 5, 0x01,
/* RLE: 001 Pixels @ 050,049*/ 1, 0x02,
/* RLE: 004 Pixels @ 051,049*/ 4, 0x03,
/* RLE: 010 Pixels @ 055,049*/ 10, 0x01,
/* ABS: 006 Pixels @ 065,049*/ 0, 6, 0x23, 0x31, 0x11,
/* RLE: 004 Pixels @ 071,049*/ 4, 0x03,
/* RLE: 001 Pixels @ 075,049*/ 1, 0x02,
/* RLE: 005 Pixels @ 076,049*/ 5, 0x01,
/* ABS: 006 Pixels @ 081,049*/ 0, 6, 0x23, 0x31, 0x11,
/* RLE: 004 Pixels @ 087,049*/ 4, 0x03,
/* RLE: 001 Pixels @ 091,049*/ 1, 0x02,
/* RLE: 005 Pixels @ 092,049*/ 5, 0x01,
/* RLE: 001 Pixels @ 097,049*/ 1, 0x02,
/* RLE: 004 Pixels @ 098,049*/ 4, 0x03,
/* RLE: 010 Pixels @ 102,049*/ 10, 0x01,
/* ABS: 004 Pixels @ 112,049*/ 0, 4, 0x23, 0x33,
/* RLE: 010 Pixels @ 116,049*/ 10, 0x01,
/* RLE: 001 Pixels @ 126,049*/ 1, 0x02,
/* RLE: 007 Pixels @ 127,049*/ 7, 0x03,
/* ABS: 008 Pixels @ 134,049*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 006 Pixels @ 004,050*/ 6, 0x03,
/* RLE: 001 Pixels @ 010,050*/ 1, 0x05,
/* RLE: 005 Pixels @ 011,050*/ 5, 0x04,
/* RLE: 001 Pixels @ 016,050*/ 1, 0x05,
/* RLE: 007 Pixels @ 017,050*/ 7, 0x03,
/* RLE: 001 Pixels @ 024,050*/ 1, 0x05,
/* RLE: 005 Pixels @ 025,050*/ 5, 0x04,
/* RLE: 016 Pixels @ 030,050*/ 16, 0x03,
/* ABS: 012 Pixels @ 046,050*/ 0, 12, 0x52, 0x11, 0x12, 0x33, 0x31, 0x11,
/* RLE: 010 Pixels @ 058,050*/ 10, 0x03,
/* RLE: 003 Pixels @ 068,050*/ 3, 0x01,
/* RLE: 004 Pixels @ 071,050*/ 4, 0x03,
/* RLE: 001 Pixels @ 075,050*/ 1, 0x02,
/* RLE: 006 Pixels @ 076,050*/ 6, 0x01,
/* ABS: 005 Pixels @ 082,050*/ 0, 5, 0x33, 0x11, 0x10,
/* RLE: 004 Pixels @ 087,050*/ 4, 0x03,
/* RLE: 001 Pixels @ 091,050*/ 1, 0x02,
/* RLE: 006 Pixels @ 092,050*/ 6, 0x01,
/* RLE: 004 Pixels @ 098,050*/ 4, 0x03,
/* RLE: 003 Pixels @ 102,050*/ 3, 0x01,
/* RLE: 011 Pixels @ 105,050*/ 11, 0x03,
/* RLE: 010 Pixels @ 116,050*/ 10, 0x01,
/* RLE: 001 Pixels @ 126,050*/ 1, 0x02,
/* RLE: 007 Pixels @ 127,050*/ 7, 0x03,
/* ABS: 008 Pixels @ 134,050*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 006 Pixels @ 004,051*/ 6, 0x03,
/* RLE: 005 Pixels @ 010,051*/ 5, 0x04,
/* RLE: 001 Pixels @ 015,051*/ 1, 0x05,
/* RLE: 007 Pixels @ 016,051*/ 7, 0x03,
/* RLE: 001 Pixels @ 023,051*/ 1, 0x05,
/* RLE: 005 Pixels @ 024,051*/ 5, 0x04,
/* RLE: 001 Pixels @ 029,051*/ 1, 0x05,
/* RLE: 010 Pixels @ 030,051*/ 10, 0x03,
/* ABS: 003 Pixels @ 040,051*/ 0, 3, 0x21, 0x50,
/* RLE: 005 Pixels @ 043,051*/ 5, 0x03,
/* ABS: 010 Pixels @ 048,051*/ 0, 10, 0x51, 0x11, 0x33, 0x31, 0x11,
/* RLE: 010 Pixels @ 058,051*/ 10, 0x03,
/* ABS: 004 Pixels @ 068,051*/ 0, 4, 0x21, 0x15,
/* RLE: 007 Pixels @ 072,051*/ 7, 0x03,
/* RLE: 003 Pixels @ 079,051*/ 3, 0x01,
/* ABS: 006 Pixels @ 082,051*/ 0, 6, 0x33, 0x21, 0x15,
/* RLE: 007 Pixels @ 088,051*/ 7, 0x03,
/* RLE: 003 Pixels @ 095,051*/ 3, 0x01,
/* RLE: 004 Pixels @ 098,051*/ 4, 0x03,
/* RLE: 003 Pixels @ 102,051*/ 3, 0x01,
/* RLE: 011 Pixels @ 105,051*/ 11, 0x03,
/* RLE: 003 Pixels @ 116,051*/ 3, 0x01,
/* RLE: 005 Pixels @ 119,051*/ 5, 0x03,
/* ABS: 004 Pixels @ 124,051*/ 0, 4, 0x21, 0x12,
/* RLE: 006 Pixels @ 128,051*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,051*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 005 Pixels @ 004,052*/ 5, 0x03,
/* RLE: 006 Pixels @ 009,052*/ 6, 0x04,
/* RLE: 008 Pixels @ 015,052*/ 8, 0x03,
/* RLE: 006 Pixels @ 023,052*/ 6, 0x04,
/* RLE: 011 Pixels @ 029,052*/ 11, 0x03,
/* RLE: 003 Pixels @ 040,052*/ 3, 0x01,
/* RLE: 006 Pixels @ 043,052*/ 6, 0x03,
/* RLE: 003 Pixels @ 049,052*/ 3, 0x01,
/* RLE: 003 Pixels @ 052,052*/ 3, 0x03,
/* RLE: 003 Pixels @ 055,052*/ 3, 0x01,
/* RLE: 010 Pixels @ 058,052*/ 10, 0x03,
/* ABS: 004 Pixels @ 068,052*/ 0, 4, 0x51, 0x12,
/* RLE: 006 Pixels @ 072,052*/ 6, 0x03,
/* ABS: 010 Pixels @ 078,052*/ 0, 10, 0x21, 0x11, 0x33, 0x51, 0x12,
/* RLE: 006 Pixels @ 088,052*/ 6, 0x03,
/* ABS: 004 Pixels @ 094,052*/ 0, 4, 0x21, 0x11,
/* RLE: 004 Pixels @ 098,052*/ 4, 0x03,
/* RLE: 003 Pixels @ 102,052*/ 3, 0x01,
/* RLE: 011 Pixels @ 105,052*/ 11, 0x03,
/* RLE: 003 Pixels @ 116,052*/ 3, 0x01,
/* RLE: 006 Pixels @ 119,052*/ 6, 0x03,
/* RLE: 003 Pixels @ 125,052*/ 3, 0x01,
/* RLE: 006 Pixels @ 128,052*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,052*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 004 Pixels @ 004,053*/ 4, 0x03,
/* RLE: 006 Pixels @ 008,053*/ 6, 0x04,
/* RLE: 008 Pixels @ 014,053*/ 8, 0x03,
/* RLE: 006 Pixels @ 022,053*/ 6, 0x04,
/* RLE: 012 Pixels @ 028,053*/ 12, 0x03,
/* ABS: 018 Pixels @ 040,053*/ 0, 18, 0x21, 0x11, 0x53, 0x33, 0x21, 0x12, 0x33, 0x31, 0x11,
/* RLE: 011 Pixels @ 058,053*/ 11, 0x03,
/* ABS: 009 Pixels @ 069,053*/ 0, 9, 0x21, 0x12, 0x53, 0x33, 0x20,
/* RLE: 004 Pixels @ 078,053*/ 4, 0x01,
/* RLE: 003 Pixels @ 082,053*/ 3, 0x03,
/* ABS: 009 Pixels @ 085,053*/ 0, 9, 0x21, 0x12, 0x53, 0x33, 0x20,
/* RLE: 004 Pixels @ 094,053*/ 4, 0x01,
/* RLE: 004 Pixels @ 098,053*/ 4, 0x03,
/* RLE: 003 Pixels @ 102,053*/ 3, 0x01,
/* RLE: 011 Pixels @ 105,053*/ 11, 0x03,
/* RLE: 003 Pixels @ 116,053*/ 3, 0x01,
/* RLE: 006 Pixels @ 119,053*/ 6, 0x03,
/* RLE: 003 Pixels @ 125,053*/ 3, 0x01,
/* RLE: 006 Pixels @ 128,053*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,053*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 004 Pixels @ 004,054*/ 4, 0x03,
/* RLE: 005 Pixels @ 008,054*/ 5, 0x04,
/* RLE: 001 Pixels @ 013,054*/ 1, 0x05,
/* RLE: 008 Pixels @ 014,054*/ 8, 0x03,
/* RLE: 005 Pixels @ 022,054*/ 5, 0x04,
/* RLE: 001 Pixels @ 027,054*/ 1, 0x05,
/* RLE: 013 Pixels @ 028,054*/ 13, 0x03,
/* RLE: 001 Pixels @ 041,054*/ 1, 0x02,
/* RLE: 008 Pixels @ 042,054*/ 8, 0x01,
/* RLE: 001 Pixels @ 050,054*/ 1, 0x02,
/* RLE: 004 Pixels @ 051,054*/ 4, 0x03,
/* RLE: 011 Pixels @ 055,054*/ 11, 0x01,
/* ABS: 005 Pixels @ 066,054*/ 0, 5, 0x23, 0x33, 0x20,
/* RLE: 008 Pixels @ 071,054*/ 8, 0x01,
/* ABS: 003 Pixels @ 079,054*/ 0, 3, 0x21, 0x10,
/* RLE: 004 Pixels @ 082,054*/ 4, 0x03,
/* RLE: 001 Pixels @ 086,054*/ 1, 0x02,
/* RLE: 008 Pixels @ 087,054*/ 8, 0x01,
/* ABS: 003 Pixels @ 095,054*/ 0, 3, 0x21, 0x10,
/* RLE: 004 Pixels @ 098,054*/ 4, 0x03,
/* RLE: 011 Pixels @ 102,054*/ 11, 0x01,
/* ABS: 006 Pixels @ 113,054*/ 0, 6, 0x23, 0x31, 0x11,
/* RLE: 006 Pixels @ 119,054*/ 6, 0x03,
/* ABS: 003 Pixels @ 125,054*/ 0, 3, 0x21, 0x10,
/* RLE: 006 Pixels @ 128,054*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,054*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 004 Pixels @ 004,055*/ 4, 0x03,
/* RLE: 004 Pixels @ 008,055*/ 4, 0x04,
/* RLE: 001 Pixels @ 012,055*/ 1, 0x05,
/* RLE: 009 Pixels @ 013,055*/ 9, 0x03,
/* RLE: 004 Pixels @ 022,055*/ 4, 0x04,
/* RLE: 001 Pixels @ 026,055*/ 1, 0x05,
/* RLE: 015 Pixels @ 027,055*/ 15, 0x03,
/* ABS: 008 Pixels @ 042,055*/ 0, 8, 0x52, 0x21, 0x11, 0x25,
/* RLE: 005 Pixels @ 050,055*/ 5, 0x03,
/* RLE: 001 Pixels @ 055,055*/ 1, 0x02,
/* RLE: 010 Pixels @ 056,055*/ 10, 0x01,
/* RLE: 001 Pixels @ 066,055*/ 1, 0x02,
/* RLE: 004 Pixels @ 067,055*/ 4, 0x03,
/* ABS: 011 Pixels @ 071,055*/ 0, 11, 0x52, 0x21, 0x12, 0x23, 0x51, 0x20,
/* RLE: 005 Pixels @ 082,055*/ 5, 0x03,
/* ABS: 011 Pixels @ 087,055*/ 0, 11, 0x52, 0x21, 0x12, 0x23, 0x51, 0x20,
/* RLE: 004 Pixels @ 098,055*/ 4, 0x03,
/* RLE: 001 Pixels @ 102,055*/ 1, 0x02,
/* RLE: 010 Pixels @ 103,055*/ 10, 0x01,
/* ABS: 006 Pixels @ 113,055*/ 0, 6, 0x23, 0x32, 0x12,
/* RLE: 006 Pixels @ 119,055*/ 6, 0x03,
/* ABS: 003 Pixels @ 125,055*/ 0, 3, 0x51, 0x20,
/* RLE: 006 Pixels @ 128,055*/ 6, 0x03,
/* ABS: 008 Pixels @ 134,055*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 004 Pixels @ 004,056*/ 4, 0x03,
/* RLE: 004 Pixels @ 008,056*/ 4, 0x04,
/* RLE: 010 Pixels @ 012,056*/ 10, 0x03,
/* RLE: 004 Pixels @ 022,056*/ 4, 0x04,
/* RLE: 108 Pixels @ 026,056*/ 108, 0x03,
/* ABS: 008 Pixels @ 134,056*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 130 Pixels @ 004,057*/ 130, 0x03,
/* ABS: 008 Pixels @ 134,057*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 130 Pixels @ 004,058*/ 130, 0x03,
/* ABS: 008 Pixels @ 134,058*/ 0, 8, 0x21, 0x10, 0x01, 0x12,
/* RLE: 130 Pixels @ 004,059*/ 130, 0x03,
/* RLE: 003 Pixels @ 134,059*/ 3, 0x01,
/* ABS: 005 Pixels @ 137,059*/ 0, 5, 0x00, 0x11, 0x10,
/* RLE: 129 Pixels @ 004,060*/ 129, 0x03,
/* ABS: 006 Pixels @ 133,060*/ 0, 6, 0x51, 0x11, 0x00,
/* RLE: 004 Pixels @ 001,061*/ 4, 0x01,
/* RLE: 128 Pixels @ 005,061*/ 128, 0x02,
/* RLE: 004 Pixels @ 133,061*/ 4, 0x01,
/* ABS: 002 Pixels @ 137,061*/ 0, 2, 0x00,
/* RLE: 135 Pixels @ 001,062*/ 135, 0x01,
/* RLE: 005 Pixels @ 136,062*/ 5, 0x00,
/* RLE: 132 Pixels @ 003,063*/ 132, 0x01,
/* RLE: 008 Pixels @ 135,063*/ 8, 0x00,
/* RLE: 128 Pixels @ 005,064*/ 128, 0x01,
/* RLE: 005 Pixels @ 133,064*/ 5, 0x00,
0}; /* 1682 for 8970 pixels */
GUI_CONST_STORAGE GUI_BITMAP bmSeggerLogoBlue = {
138, /* XSize */
65, /* YSize */
69, /* BytesPerLine */
GUI_COMPRESS_RLE4, /* BitsPerPixel */
acSeggerLogoBlue, /* Pointer to picture data (indices) */
&PalSeggerLogoBlue /* Pointer to palette */
,GUI_DRAW_RLE4
};
#else
GUI_CONST_STORAGE unsigned char acSeggerLogoBlue[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00,
0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00,
0x01, 0x11, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x11, 0x10,
0x01, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x53, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x53, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x22, 0x11, 0x12, 0x23, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x35, 0x22, 0x11, 0x12, 0x53, 0x33, 0x33, 0x33, 0x35, 0x22, 0x11, 0x12, 0x53, 0x33, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x21, 0x11, 0x11, 0x11, 0x12, 0x53, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x34, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x53, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x21, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x15, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x21, 0x12, 0x33, 0x35, 0x11, 0x13, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x32, 0x11, 0x25, 0x33, 0x52, 0x11, 0x13, 0x33, 0x32, 0x11, 0x25, 0x33, 0x52, 0x11, 0x13, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x21, 0x12, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x51, 0x23, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x51, 0x12, 0x33, 0x33, 0x33, 0x21, 0x23, 0x33, 0x51, 0x12, 0x33, 0x33, 0x33, 0x21, 0x23, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x21, 0x12, 0x53, 0x33, 0x33, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x15, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x15, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x31, 0x11, 0x11, 0x12, 0x23, 0x33, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x11, 0x13, 0x33, 0x33, 0x21, 0x12, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x52, 0x21, 0x11, 0x11, 0x23, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x11, 0x13, 0x33, 0x32, 0x11, 0x11, 0x12, 0x33, 0x11, 0x13, 0x33, 0x32, 0x11, 0x11, 0x12, 0x33, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x52, 0x11, 0x12, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x32, 0x11, 0x11, 0x11, 0x33, 0x11, 0x13, 0x33, 0x32, 0x11, 0x11, 0x11, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x53, 0x33, 0x33, 0x51, 0x11, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x15, 0x33, 0x33, 0x33, 0x31, 0x11, 0x33, 0x21, 0x15, 0x33, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x21, 0x12, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x31, 0x11, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x51, 0x12, 0x33, 0x33, 0x33, 0x21, 0x11, 0x33, 0x51, 0x12, 0x33, 0x33, 0x33, 0x21, 0x11, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x11, 0x53, 0x33, 0x21, 0x12, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x32, 0x11, 0x25, 0x33, 0x32, 0x11, 0x11, 0x33, 0x32, 0x11, 0x25, 0x33, 0x32, 0x11, 0x11, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x21, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x11, 0x13, 0x33, 0x33, 0x32, 0x11, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x52, 0x21, 0x11, 0x25, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x35, 0x22, 0x11, 0x22, 0x35, 0x12, 0x33, 0x33, 0x35, 0x22, 0x11, 0x22, 0x35, 0x12, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x21, 0x23, 0x33, 0x33, 0x35, 0x12, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x01, 0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x10,
0x01, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x35, 0x11, 0x10,
0x01, 0x11, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x11, 0x10,
0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00,
0x00, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00,
0x00, 0x00, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00
};
GUI_CONST_STORAGE GUI_BITMAP bmSeggerLogoBlue = {
138, /* XSize */
65, /* YSize */
69, /* BytesPerLine */
4, /* BitsPerPixel */
acSeggerLogoBlue, /* Pointer to picture data (indices) */
&PalSeggerLogoBlue /* Pointer to palette */
};
#endif /* LOGO_COMP */
#elif (LCD_YSIZE < 90) /* GUIDEMO_TINY */
/*********************************************************************
*
* SEGGER logo, 65% size
*
**********************************************************************
*/
GUI_CONST_STORAGE unsigned char acSeggerLogoBlue[] = {
0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00,
0x11, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x11, 0x10,
0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x34, 0x43, 0x33, 0x33, 0x33, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x34, 0x44, 0x53, 0x33, 0x33, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x54, 0x44, 0x53, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x54, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x54, 0x44, 0x53, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x54, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x33, 0x33, 0x34, 0x44, 0x33, 0x33, 0x33, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x53, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x43, 0x33, 0x33, 0x54, 0x44, 0x33, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x44, 0x33, 0x33, 0x34, 0x44, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x44, 0x44, 0x43, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x44, 0x33, 0x33, 0x34, 0x44, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x43, 0x33, 0x33, 0x54, 0x44, 0x33, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x53, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x44, 0x33, 0x33, 0x34, 0x44, 0x33, 0x33, 0x33, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x54, 0x44, 0x33, 0x33, 0x32, 0x11, 0x23, 0x33, 0x32, 0x11, 0x11, 0x11, 0x23, 0x33, 0x22, 0x11, 0x53, 0x33, 0x33, 0x52, 0x11, 0x23, 0x33, 0x33, 0x11, 0x11, 0x11, 0x12, 0x32, 0x11, 0x11, 0x15, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x43, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x11, 0x11, 0x11, 0x53, 0x31, 0x11, 0x11, 0x11, 0x23, 0x32, 0x11, 0x11, 0x11, 0x33, 0x32, 0x11, 0x11, 0x11, 0x33, 0x33, 0x11, 0x11, 0x11, 0x12, 0x31, 0x11, 0x11, 0x11, 0x53, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x54, 0x44, 0x53, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x13, 0x33, 0x31, 0x23, 0x31, 0x13, 0x33, 0x33, 0x33, 0x11, 0x33, 0x33, 0x21, 0x33, 0x51, 0x23, 0x33, 0x31, 0x23, 0x33, 0x11, 0x33, 0x33, 0x33, 0x31, 0x13, 0x33, 0x31, 0x13, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x54, 0x44, 0x53, 0x33, 0x33, 0x12, 0x53, 0x33, 0x33, 0x31, 0x13, 0x33, 0x33, 0x33, 0x11, 0x33, 0x33, 0x33, 0x33, 0x21, 0x53, 0x33, 0x33, 0x33, 0x33, 0x11, 0x33, 0x33, 0x33, 0x31, 0x13, 0x33, 0x31, 0x13, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x32, 0x21, 0x11, 0x23, 0x31, 0x11, 0x11, 0x11, 0x33, 0x11, 0x33, 0x21, 0x11, 0x23, 0x11, 0x33, 0x31, 0x11, 0x13, 0x33, 0x11, 0x11, 0x11, 0x23, 0x31, 0x11, 0x11, 0x12, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x54, 0x44, 0x53, 0x33, 0x35, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x35, 0x21, 0x13, 0x31, 0x13, 0x33, 0x33, 0x33, 0x11, 0x33, 0x21, 0x11, 0x13, 0x11, 0x33, 0x31, 0x11, 0x13, 0x33, 0x11, 0x33, 0x33, 0x33, 0x31, 0x11, 0x11, 0x12, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x13, 0x33, 0x31, 0x13, 0x31, 0x13, 0x33, 0x33, 0x33, 0x11, 0x33, 0x33, 0x21, 0x13, 0x51, 0x23, 0x33, 0x31, 0x13, 0x33, 0x11, 0x33, 0x33, 0x33, 0x31, 0x13, 0x33, 0x31, 0x13, 0x33, 0x31, 0x10,
0x12, 0x33, 0x34, 0x44, 0x53, 0x33, 0x33, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x21, 0x11, 0x11, 0x23, 0x31, 0x11, 0x11, 0x11, 0x23, 0x32, 0x11, 0x11, 0x12, 0x13, 0x32, 0x11, 0x11, 0x12, 0x13, 0x33, 0x11, 0x11, 0x11, 0x12, 0x31, 0x13, 0x33, 0x31, 0x13, 0x33, 0x31, 0x10,
0x12, 0x33, 0x34, 0x45, 0x33, 0x33, 0x33, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x32, 0x21, 0x15, 0x33, 0x32, 0x11, 0x11, 0x11, 0x23, 0x33, 0x22, 0x12, 0x35, 0x23, 0x33, 0x52, 0x12, 0x25, 0x13, 0x33, 0x11, 0x11, 0x11, 0x12, 0x32, 0x23, 0x33, 0x31, 0x23, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x12, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x10,
0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x51, 0x10,
0x11, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x11, 0x10,
0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00,
0x00, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00
};
GUI_CONST_STORAGE GUI_BITMAP bmSeggerLogoBlue = {
89, /* XSize */
42, /* YSize */
45, /* BytesPerLine */
4, /* BitsPerPixel */
acSeggerLogoBlue, /* Pointer to picture data (indices) */
&PalSeggerLogoBlue /* Pointer to palette */
};
#else /* (LCD_YSIZE < 90) */
/*********************************************************************
*
* SEGGER logo, 90% size
*
**********************************************************************
*/
GUI_CONST_STORAGE unsigned char acSeggerLogoBlue[] = {
0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00,
0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00,
0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x11, 0x10,
0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x34, 0x44, 0x33, 0x33, 0x33, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x34, 0x44, 0x33, 0x33, 0x33, 0x33, 0x34, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x34, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x34, 0x44, 0x45, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x35, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x33, 0x33, 0x33, 0x54, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x43, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x35, 0x44, 0x44, 0x45, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x44, 0x43, 0x33, 0x33, 0x35, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x34, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x43, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x44, 0x33, 0x33, 0x33, 0x35, 0x44, 0x44, 0x53, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x43, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x43, 0x33, 0x33, 0x35, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x44, 0x33, 0x33, 0x33, 0x54, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x54, 0x44, 0x43, 0x33, 0x33, 0x32, 0x21, 0x11, 0x22, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x35, 0x22, 0x11, 0x12, 0x53, 0x33, 0x33, 0x33, 0x52, 0x21, 0x12, 0x53, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x21, 0x11, 0x11, 0x11, 0x25, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x43, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x53, 0x33, 0x33, 0x11, 0x11, 0x11, 0x11, 0x13, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x11, 0x11, 0x11, 0x11, 0x11, 0x53, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x11, 0x23, 0x33, 0x51, 0x13, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x25, 0x33, 0x52, 0x11, 0x33, 0x33, 0x21, 0x12, 0x53, 0x52, 0x11, 0x13, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x32, 0x11, 0x23, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x35, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x11, 0x25, 0x33, 0x33, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x32, 0x15, 0x33, 0x33, 0x33, 0x33, 0x33, 0x32, 0x11, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x11, 0x11, 0x11, 0x22, 0x33, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x23, 0x31, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x11, 0x13, 0x33, 0x32, 0x11, 0x23, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x35, 0x22, 0x11, 0x11, 0x13, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x23, 0x31, 0x13, 0x33, 0x32, 0x11, 0x11, 0x23, 0x31, 0x11, 0x33, 0x32, 0x11, 0x11, 0x12, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x23, 0x33, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x35, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x35, 0x21, 0x12, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x31, 0x13, 0x33, 0x32, 0x11, 0x11, 0x13, 0x31, 0x11, 0x33, 0x32, 0x11, 0x11, 0x11, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x34, 0x44, 0x45, 0x33, 0x33, 0x33, 0x54, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x15, 0x33, 0x33, 0x35, 0x11, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x32, 0x15, 0x33, 0x33, 0x33, 0x31, 0x13, 0x32, 0x11, 0x53, 0x33, 0x33, 0x31, 0x11, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x32, 0x11, 0x23, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x33, 0x33, 0x33, 0x11, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x35, 0x12, 0x33, 0x33, 0x33, 0x21, 0x13, 0x35, 0x11, 0x23, 0x33, 0x33, 0x21, 0x11, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x34, 0x44, 0x44, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x43, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x15, 0x33, 0x32, 0x12, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x25, 0x33, 0x32, 0x11, 0x13, 0x33, 0x21, 0x12, 0x53, 0x32, 0x11, 0x11, 0x33, 0x31, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x11, 0x13, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x34, 0x44, 0x45, 0x33, 0x33, 0x33, 0x34, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x11, 0x11, 0x11, 0x13, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x31, 0x11, 0x11, 0x11, 0x12, 0x13, 0x33, 0x32, 0x11, 0x11, 0x11, 0x12, 0x11, 0x33, 0x31, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x11, 0x13, 0x33, 0x33, 0x21, 0x13, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x34, 0x44, 0x53, 0x33, 0x33, 0x33, 0x34, 0x44, 0x45, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x35, 0x22, 0x11, 0x12, 0x53, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x35, 0x22, 0x11, 0x22, 0x35, 0x23, 0x33, 0x33, 0x52, 0x21, 0x22, 0x35, 0x12, 0x33, 0x32, 0x11, 0x11, 0x11, 0x11, 0x12, 0x33, 0x21, 0x23, 0x33, 0x33, 0x51, 0x23, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x21, 0x10,
0x11, 0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x11, 0x10,
0x11, 0x13, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x35, 0x11, 0x10,
0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x11, 0x10,
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00,
0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00,
0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00
};
GUI_CONST_STORAGE GUI_BITMAP bmSeggerLogoBlue = {
123, /* XSize */
58, /* YSize */
62, /* BytesPerLine */
4, /* BitsPerPixel */
acSeggerLogoBlue, /* Pointer to picture data (indices) */
&PalSeggerLogoBlue /* Pointer to palette */
};
#endif /* (LCD_YSIZE < 90) */
/* *** End of file *** */
@@ -0,0 +1,166 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : BUTTON.h
Purpose : BUTTON public header file (API)
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef BUTTON_H
#define BUTTON_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#include "WIDGET.h"
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
#if GUI_WINSUPPORT
/************************************************************
*
* Create flags
*/
/* For compatibility only ! */
#define BUTTON_CF_HIDE WM_CF_HIDE
#define BUTTON_CF_SHOW WM_CF_SHOW
#define BUTTON_CF_MEMDEV WM_CF_MEMDEV
/*********************************************************************
*
* Color indices
*/
#define BUTTON_CI_UNPRESSED 0
#define BUTTON_CI_PRESSED 1
#define BUTTON_CI_DISABLED 2
/*********************************************************************
*
* Bitmap indices
*/
#define BUTTON_BI_UNPRESSED 0
#define BUTTON_BI_PRESSED 1
#define BUTTON_BI_DISABLED 2
/************************************************************
*
* Messages
*/
/************************************************************
*
* States
*/
#define BUTTON_STATE_FOCUS WIDGET_STATE_FOCUS
#define BUTTON_STATE_PRESSED WIDGET_STATE_USER0
/************************************************************
*
* Types
*
*************************************************************
*/
typedef WM_HMEM BUTTON_Handle;
/************************************************************
*
* Create function(s)
Note: the parameters to a create function may vary.
Some widgets may have multiple create functions
*/
BUTTON_Handle BUTTON_Create (int x0, int y0, int xsize, int ysize, int ID, int Flags);
BUTTON_Handle BUTTON_CreateAsChild (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags);
BUTTON_Handle BUTTON_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
BUTTON_Handle BUTTON_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
GUI_COLOR BUTTON_GetDefaultBkColor (unsigned Index);
const GUI_FONT GUI_UNI_PTR * BUTTON_GetDefaultFont (void);
int BUTTON_GetDefaultTextAlign(void);
GUI_COLOR BUTTON_GetDefaultTextColor(unsigned Index);
void BUTTON_SetDefaultBkColor (GUI_COLOR Color, unsigned Index);
void BUTTON_SetDefaultFont (const GUI_FONT GUI_UNI_PTR * pFont);
void BUTTON_SetDefaultTextAlign(int Align);
void BUTTON_SetDefaultTextColor(GUI_COLOR Color, unsigned Index);
#define BUTTON_EnableMemdev(hObj) WM_EnableMemdev (hObj)
#define BUTTON_DisableMemdev(hObj) WM_DisableMemdev (hObj)
#define BUTTON_Delete(hObj) WM_DeleteWindow (hObj)
#define BUTTON_Paint(hObj) WM_Paint (hObj)
#define BUTTON_Invalidate(hObj) WM_InvalidateWindow(hObj)
/*********************************************************************
*
* The callback ...
*
* Do not call it directly ! It is only to be used from within an
* overwritten callback.
*/
void BUTTON_Callback(WM_MESSAGE *pMsg);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
GUI_COLOR BUTTON_GetBkColor (BUTTON_Handle hObj, unsigned int Index);
const GUI_FONT GUI_UNI_PTR * BUTTON_GetFont(BUTTON_Handle hObj);
void BUTTON_GetText (BUTTON_Handle hObj, char * pBuffer, int MaxLen);
GUI_COLOR BUTTON_GetTextColor (BUTTON_Handle hObj, unsigned int Index);
unsigned BUTTON_IsPressed (BUTTON_Handle hObj);
void BUTTON_SetBitmap (BUTTON_Handle hObj, unsigned int Index, const GUI_BITMAP * pBitmap);
void BUTTON_SetBitmapEx (BUTTON_Handle hObj, unsigned int Index, const GUI_BITMAP * pBitmap, int x, int y);
void BUTTON_SetBkColor (BUTTON_Handle hObj, unsigned int Index, GUI_COLOR Color);
void BUTTON_SetBMP (BUTTON_Handle hObj, unsigned int Index, const void * pBitmap);
void BUTTON_SetBMPEx (BUTTON_Handle hObj, unsigned int Index, const void * pBitmap, int x, int y);
void BUTTON_SetFont (BUTTON_Handle hObj, const GUI_FONT GUI_UNI_PTR * pfont);
void BUTTON_SetState (BUTTON_Handle hObj, int State); /* Not to be doc. */
void BUTTON_SetPressed (BUTTON_Handle hObj, int State);
void BUTTON_SetFocussable (BUTTON_Handle hObj, int State);
void BUTTON_SetStreamedBitmap (BUTTON_Handle hObj, unsigned int Index, const GUI_BITMAP_STREAM * pBitmap);
void BUTTON_SetStreamedBitmapEx(BUTTON_Handle hObj, unsigned int Index, const GUI_BITMAP_STREAM * pBitmap, int x, int y);
void BUTTON_SetText (BUTTON_Handle hObj, const char* s);
void BUTTON_SetTextAlign (BUTTON_Handle hObj, int Align);
void BUTTON_SetTextColor (BUTTON_Handle hObj, unsigned int Index, GUI_COLOR Color);
void BUTTON_SetSelfDrawEx (BUTTON_Handle hObj, unsigned int Index, void (*pDraw)(void), int x, int y); /* Not to be doc. */
void BUTTON_SetSelfDraw (BUTTON_Handle hObj, unsigned int Index, void (*pDraw)(void)); /* Not to be doc. */
/************************************************************
*
* States
*/
#define BUTTON_STATE_HASFOCUS 0
#endif /* BUTTON_H */
#if defined(__cplusplus)
}
#endif
#endif /* BUTTON_H */
@@ -0,0 +1,65 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : BUTTON_Private.h
Purpose : BUTTON private header file
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef BUTTON_PRIVATE_H
#define BUTTON_PRIVATE_H
#include "WM.h"
#include "BUTTON.h"
#if GUI_WINSUPPORT
#define BUTTON_ID 0x42555454
#define BUTTON_H2P(h) (BUTTON_Obj*) GUI_ALLOC_h2p(h)
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
#define BUTTON_ASSERT_IS_VALID_PTR(p) GUI_DEBUG_ERROROUT_IF(p->DebugId != BUTTON_ID, "BUTTON.C: Wrong handle type or object not init'ed")
#define BUTTON_INIT_ID(p) p->DebugId = BUTTON_ID
#define BUTTON_DEINIT_ID(p) p->DebugId = BUTTON_ID+1
#else
#define BUTTON_ASSERT_IS_VALID_PTR(p)
#define BUTTON_INIT_ID(p)
#define BUTTON_DEINIT_ID(p)
#endif
typedef struct {
GUI_COLOR aBkColor[3];
GUI_COLOR aTextColor[3];
const GUI_FONT GUI_UNI_PTR * pFont;
I16 Align;
} BUTTON_PROPS;
typedef struct {
WIDGET Widget;
BUTTON_PROPS Props;
WM_HMEM hpText;
WM_HMEM ahDrawObj[3];
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
int DebugId;
#endif
} BUTTON_Obj;
extern BUTTON_PROPS BUTTON__DefaultProps;
void BUTTON__SetDrawObj(BUTTON_Handle hObj, int Index, GUI_DRAW_HANDLE hDrawObj);
#endif /* GUI_WINSUPPORT */
#endif /* BUTTON_H */
@@ -0,0 +1,124 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : CHECKBOX.h
Purpose : CHECKBOX include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef CHECKBOX_H
#define CHECKBOX_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* defines
*
**********************************************************************
*/
/*********************************************************************
*
* Bitmap indices
*/
#define CHECKBOX_BI_INACTIV 0
#define CHECKBOX_BI_ACTIV 1
#define CHECKBOX_BI_INACTIV_3STATE 2
#define CHECKBOX_BI_ACTIV_3STATE 3
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM CHECKBOX_Handle;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
CHECKBOX_Handle CHECKBOX_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags);
CHECKBOX_Handle CHECKBOX_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
CHECKBOX_Handle CHECKBOX_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
int CHECKBOX_GetDefaultAlign (void);
GUI_COLOR CHECKBOX_GetDefaultBkColor (void);
const GUI_FONT GUI_UNI_PTR * CHECKBOX_GetDefaultFont (void);
int CHECKBOX_GetDefaultSpacing (void);
int CHECKBOX_GetDefaultTextAlign(void);
GUI_COLOR CHECKBOX_GetDefaultTextColor(void);
void CHECKBOX_SetDefaultAlign (int Align);
void CHECKBOX_SetDefaultBkColor (GUI_COLOR Color);
void CHECKBOX_SetDefaultFont (const GUI_FONT GUI_UNI_PTR * pFont);
void CHECKBOX_SetDefaultImage (const GUI_BITMAP * pBitmap, unsigned int Index);
void CHECKBOX_SetDefaultSpacing (int Spacing);
void CHECKBOX_SetDefaultTextAlign(int Align);
void CHECKBOX_SetDefaultTextColor(GUI_COLOR Color);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
int CHECKBOX_GetState (CHECKBOX_Handle hObj);
int CHECKBOX_IsChecked (CHECKBOX_Handle hObj);
void CHECKBOX_SetBkColor (CHECKBOX_Handle hObj, GUI_COLOR Color);
void CHECKBOX_SetFont (CHECKBOX_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont);
void CHECKBOX_SetImage (CHECKBOX_Handle hObj, const GUI_BITMAP * pBitmap, unsigned int Index);
void CHECKBOX_SetNumStates(CHECKBOX_Handle hObj, unsigned NumStates);
void CHECKBOX_SetSpacing (CHECKBOX_Handle hObj, unsigned Spacing);
void CHECKBOX_SetState (CHECKBOX_Handle hObj, unsigned State);
void CHECKBOX_SetText (CHECKBOX_Handle hObj, const char * pText);
void CHECKBOX_SetTextAlign(CHECKBOX_Handle hObj, int Align);
void CHECKBOX_SetTextColor(CHECKBOX_Handle hObj, GUI_COLOR Color);
/*********************************************************************
*
* Macros for compatibility
*
**********************************************************************
*/
#define CHECKBOX_Check(hObj) CHECKBOX_SetState(hObj, 1)
#define CHECKBOX_Uncheck(hObj) CHECKBOX_SetState(hObj, 0)
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* CHECKBOX_H */
@@ -0,0 +1,103 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : CHECKBOX_Private.h
Purpose : CHECKBOX private header file
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef CHECKBOX_PRIVATE_H
#define CHECKBOX_PRIVATE_H
#include "WM.h"
#include "WIDGET.h"
#include "CHECKBOX.h"
#if GUI_WINSUPPORT
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
#ifndef CHECKBOX_BKCOLOR0_DEFAULT
#define CHECKBOX_BKCOLOR0_DEFAULT 0x808080 /* Inactive color */
#endif
#ifndef CHECKBOX_BKCOLOR1_DEFAULT
#define CHECKBOX_BKCOLOR1_DEFAULT GUI_WHITE /* Active color */
#endif
#ifndef CHECKBOX_FGCOLOR0_DEFAULT
#define CHECKBOX_FGCOLOR0_DEFAULT 0x101010
#endif
#ifndef CHECKBOX_FGCOLOR1_DEFAULT
#define CHECKBOX_FGCOLOR1_DEFAULT GUI_BLACK
#endif
/*********************************************************************
*
* Object definition
*
**********************************************************************
*/
typedef struct {
const GUI_FONT GUI_UNI_PTR * pFont;
GUI_COLOR aBkColorBox[2]; /* Colors used to draw the box background */
GUI_COLOR BkColor; /* Widget background color */
GUI_COLOR TextColor;
I16 Align;
U8 Spacing;
const GUI_BITMAP * apBm[4];
} CHECKBOX_PROPS;
typedef struct {
WIDGET Widget;
CHECKBOX_PROPS Props;
U8 NumStates;
U8 CurrentState;
WM_HMEM hpText;
#if GUI_DEBUG_LEVEL > 1
int DebugId;
#endif
} CHECKBOX_Obj;
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define CHECKBOX_H2P(h) (CHECKBOX_Obj*) GUI_ALLOC_h2p(h)
/*********************************************************************
*
* Public data (internal defaults)
*
**********************************************************************
*/
extern CHECKBOX_PROPS CHECKBOX__DefaultProps;
/*********************************************************************
*
* Extern data
*
**********************************************************************
*/
extern const GUI_BITMAP CHECKBOX__abmCheck[2];
#endif /* GUI_WINSUPPORT */
#endif /* CHECKBOX_PRIVATE_H */
@@ -0,0 +1,54 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : Dialog.h
Purpose : Dialog box include
----------------------------------------------------------------------
Open items:
None
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef DIALOG_H
#define DIALOG_H
#include "WM.h"
#include "BUTTON.h"
#include "CHECKBOX.h"
#include "DROPDOWN.h"
#include "EDIT.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include "MULTIEDIT.h"
#include "RADIO.h"
#include "SLIDER.h"
#include "TEXT.h"
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
WM_HWIN WINDOW_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
void WINDOW_SetDefaultBkColor(GUI_COLOR Color);
#if defined(__cplusplus)
}
#endif
#endif
#endif
@@ -0,0 +1,98 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : Dialog.h
Purpose : Dialog box include
----------------------------------------------------------------------
Open items:
None
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef DIALOG_INTERN_H
#define DIALOG_INTERN_H
#include "WM.h"
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* typedefs
*
**********************************************************************
*/
typedef struct GUI_WIDGET_CREATE_INFO_struct GUI_WIDGET_CREATE_INFO;
typedef WM_HWIN GUI_WIDGET_CREATE_FUNC (const GUI_WIDGET_CREATE_INFO* pCreate, WM_HWIN hWin, int x0, int y0, WM_CALLBACK* cb);
/*********************************************************************
*
* structures
*
**********************************************************************
*/
struct GUI_WIDGET_CREATE_INFO_struct {
GUI_WIDGET_CREATE_FUNC* pfCreateIndirect;
const char* pName; /* Text ... Not used on all widgets */
I16 Id; /* ID ... should be unique in a dialog */
I16 x0, y0, xSize, ySize; /* Define position and size */
U16 Flags; /* Widget specific create flags (opt.) */
I32 Para; /* Widget specific parameter (opt.) */
};
/*********************************************************************
*
* Create functions for well known widgets
*
**********************************************************************
*/
WM_HWIN BUTTON_CreateIndirect (const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
WM_HWIN CHECKBOX_CreateIndirect (const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
WM_HWIN EDIT_CreateIndirect (const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
WM_HWIN FRAMEWIN_CreateIndirect (const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
WM_HWIN RADIO_CreateIndirect (const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
WM_HWIN SLIDER_CreateIndirect (const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
WM_HWIN SCROLLBAR_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
WM_HWIN TEXT_CreateIndirect (const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
/*********************************************************************
*
* Public API functions
*
**********************************************************************
*/
int GUI_ExecDialogBox (const GUI_WIDGET_CREATE_INFO* paWidget, int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0);
int GUI_ExecCreatedDialog (WM_HWIN hDialog);
WM_HWIN GUI_CreateDialogBox (const GUI_WIDGET_CREATE_INFO* paWidget, int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0);
void GUI_SetDialogStatusPtr(WM_HWIN hDialog, WM_DIALOG_STATUS* pDialogStatus); /* not to documented */
WM_DIALOG_STATUS* GUI_GetDialogStatusPtr(WM_HWIN hDialog); /* not to documented */
void GUI_EndDialog(WM_HWIN hWin, int r);
LCD_COLOR DIALOG_GetBkColor(void); /* obsolete */
LCD_COLOR DIALOG_SetBkColor(LCD_COLOR BkColor); /* obsolete */
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif
@@ -0,0 +1,117 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : DROPDOWN.h
Purpose : Multiple choice object include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef DROPDOWN_H
#define DROPDOWN_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
typedef WM_HMEM DROPDOWN_Handle;
/************************************************************
*
* Create flags
*/
#define DROPDOWN_CF_AUTOSCROLLBAR (1 << 0)
#define DROPDOWN_CF_UP (1 << 1)
/*********************************************************************
*
* Color indices
*/
#define DROPDOWN_CI_UNSEL 0
#define DROPDOWN_CI_SEL 1
#define DROPDOWN_CI_SELFOCUS 2
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
#define DROPDOWN_EnableMemdev(hObj) WM_EnableMemdev(hObj)
#define DROPDOWN_DisableMemdev(hObj) WM_DisableMemdev(hObj)
#define DROPDOWN_Delete(hObj) WM_DeleteWindow(hObj)
#define DROPDOWN_Paint(hObj) WM_Paint(hObj)
#define DROPDOWN_Invalidate(hObj) WM_InvalidateWindow(hObj)
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
DROPDOWN_Handle DROPDOWN_Create (WM_HWIN hWinParent, int x0, int y0, int xsize, int ysize, int Flags);
DROPDOWN_Handle DROPDOWN_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
DROPDOWN_Handle DROPDOWN_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
void DROPDOWN_AddKey (DROPDOWN_Handle hObj, int Key);
void DROPDOWN_AddString (DROPDOWN_Handle hObj, const char* s);
void DROPDOWN_Collapse (DROPDOWN_Handle hObj);
void DROPDOWN_DecSel (DROPDOWN_Handle hObj);
void DROPDOWN_DeleteItem (DROPDOWN_Handle hObj, unsigned int Index);
void DROPDOWN_Expand (DROPDOWN_Handle hObj);
unsigned DROPDOWN_GetItemSpacing (DROPDOWN_Handle hObj);
int DROPDOWN_GetNumItems (DROPDOWN_Handle hObj);
int DROPDOWN_GetSel (DROPDOWN_Handle hObj);
void DROPDOWN_IncSel (DROPDOWN_Handle hObj);
void DROPDOWN_InsertString (DROPDOWN_Handle hObj, const char* s, unsigned int Index);
void DROPDOWN_SetAutoScroll (DROPDOWN_Handle hObj, int OnOff);
void DROPDOWN_SetBkColor (DROPDOWN_Handle hObj, unsigned int index, GUI_COLOR color);
void DROPDOWN_SetFont (DROPDOWN_Handle hObj, const GUI_FONT GUI_UNI_PTR * pfont);
void DROPDOWN_SetItemSpacing (DROPDOWN_Handle hObj, unsigned Value);
void DROPDOWN_SetSel (DROPDOWN_Handle hObj, int Sel);
void DROPDOWN_SetScrollbarWidth(DROPDOWN_Handle hObj, unsigned Width);
void DROPDOWN_SetTextAlign (DROPDOWN_Handle hObj, int Align);
void DROPDOWN_SetTextColor (DROPDOWN_Handle hObj, unsigned int index, GUI_COLOR color);
void DROPDOWN_SetTextHeight (DROPDOWN_Handle hObj, unsigned TextHeight);
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
const GUI_FONT GUI_UNI_PTR * DROPDOWN_GetDefaultFont(void);
void DROPDOWN_SetDefaultFont(const GUI_FONT* pFont);
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif /* DROPDOWN_H */
@@ -0,0 +1,66 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : DROPDOWN_Private.h
Purpose : DROPDOWN private header file
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef DROPDOWN_PRIVATE_H
#define DROPDOWN_PRIVATE_H
#include "DROPDOWN.h"
#include "WIDGET.h"
#include "GUI_ARRAY.h"
#if GUI_WINSUPPORT
/************************************************************
*
* Create / Status flags
*/
#define DROPDOWN_SF_AUTOSCROLLBAR DROPDOWN_CF_AUTOSCROLLBAR
#define DROPDOWN_H2P(h) (DROPDOWN_Obj*) GUI_ALLOC_h2p(h)
typedef struct {
const GUI_FONT GUI_UNI_PTR * pFont;
GUI_COLOR aBackColor[3];
GUI_COLOR aTextColor[3];
I16 TextBorderSize;
I16 Align;
} DROPDOWN_PROPS;
typedef struct {
WIDGET Widget;
I16 Sel; /* current selection */
I16 ySizeEx; /* Drop down size */
I16 TextHeight;
GUI_ARRAY Handles;
WM_SCROLL_STATE ScrollState;
DROPDOWN_PROPS Props;
WM_HWIN hListWin;
U8 Flags;
U16 ItemSpacing;
U8 ScrollbarWidth;
char IsPressed;
#if GUI_DEBUG_LEVEL >1
int DebugId;
#endif
} DROPDOWN_Obj;
void DROPDOWN__AdjustHeight(DROPDOWN_Handle hObj, DROPDOWN_Obj* pObj);
#endif /* GUI_WINSUPPORT */
#endif /* DROPDOWN_PRIVATE_H */
@@ -0,0 +1,205 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : EDIT.h
Purpose : EDIT include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef EDIT_H
#define EDIT_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Defaults for configuration switches
*
**********************************************************************
The following are defaults for config switches which affect the
interface specified in this module
*/
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
/************************************************************
*
* Create / Status flags
*/
#define EDIT_CF_LEFT GUI_TA_LEFT
#define EDIT_CF_RIGHT GUI_TA_RIGHT
#define EDIT_CF_HCENTER GUI_TA_HCENTER
#define EDIT_CF_VCENTER GUI_TA_VCENTER
#define EDIT_CF_TOP GUI_TA_TOP
#define EDIT_CF_BOTTOM GUI_TA_BOTTOM
/*********************************************************************
*
* Color indices
*/
#define EDIT_CI_DISABLED 0
#define EDIT_CI_ENABLED 1
/************************************************************
*
* States
*/
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef WM_HMEM EDIT_Handle;
typedef void tEDIT_AddKeyEx (EDIT_Handle hObj, int Key);
typedef void tEDIT_UpdateBuffer(EDIT_Handle hObj);
/*
*************************************************************
* *
* Create function(s) *
* *
* (Constructors) *
* *
*************************************************************
*/
/* Note: the parameters to a create function may vary.
Some widgets may have multiple create functions */
EDIT_Handle EDIT_Create (int x0, int y0, int xsize, int ysize, int Id, int MaxLen, int Flags);
EDIT_Handle EDIT_CreateAsChild (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, int MaxLen);
EDIT_Handle EDIT_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
EDIT_Handle EDIT_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id, int MaxLen);
/*
*************************************************************
* *
* Standard member functions *
* *
*************************************************************
*/
#define EDIT_EnableMemdev(hObj) WM_EnableMemdev(hObj)
#define EDIT_DisableMemdev(hObj) WM_DisableMemdev(hObj)
#define EDIT_Delete(hObj) WM_DeleteWindow(hObj)
#define EDIT_Paint(hObj) WM_Paint(hObj)
#define EDIT_Invalidate(hObj) WM_InvalidateWindow(hObj)
/*
*************************************************************
* *
* Individual member functions *
* *
*************************************************************
*/
/* Methods changing preferences */
void EDIT_SetDefaultBkColor(unsigned int Index, GUI_COLOR Color);
void EDIT_SetDefaultFont(const GUI_FONT* pFont);
void EDIT_SetDefaultTextAlign(int Align);
void EDIT_SetDefaultTextColor(unsigned int Index, GUI_COLOR Color);
/* Query preferences */
GUI_COLOR EDIT_GetDefaultBkColor(unsigned int Index);
const GUI_FONT GUI_UNI_PTR * EDIT_GetDefaultFont(void);
int EDIT_GetDefaultTextAlign(void);
GUI_COLOR EDIT_GetDefaultTextColor(unsigned int Index);
/* Methods changing properties */
void EDIT_AddKey (EDIT_Handle hObj, int Key);
void EDIT_ClearCursor (EDIT_Handle hObj);
void EDIT_SetBkColor (EDIT_Handle hObj, unsigned int Index, GUI_COLOR color);
void EDIT_SetCursorAtChar (EDIT_Handle hObj, int Pos);
void EDIT_SetCursorAtPixel (EDIT_Handle hObj, int xPos);
void EDIT_SetFont (EDIT_Handle hObj, const GUI_FONT GUI_UNI_PTR * pfont);
int EDIT_SetInsertMode (EDIT_Handle hObj, int OnOff);
void EDIT_SetMaxLen (EDIT_Handle hObj, int MaxLen);
void EDIT_SetpfAddKeyEx (EDIT_Handle hObj, tEDIT_AddKeyEx * pfAddKeyEx);
void EDIT_SetpfUpdateBuffer(EDIT_Handle hObj, tEDIT_UpdateBuffer * pfUpdateBuffer);
void EDIT_SetText (EDIT_Handle hObj, const char* s);
void EDIT_SetTextAlign (EDIT_Handle hObj, int Align);
void EDIT_SetTextColor (EDIT_Handle hObj, unsigned int Index, GUI_COLOR color);
void EDIT_SetSel (EDIT_Handle hObj, int FirstChar, int LastChar);
/* Get/Set user input */
float EDIT_GetFloatValue(EDIT_Handle hObj);
void EDIT_GetText (EDIT_Handle hObj, char* sDest, int MaxLen);
I32 EDIT_GetValue (EDIT_Handle hObj);
void EDIT_SetFloatValue(EDIT_Handle hObj, float Value);
void EDIT_SetValue (EDIT_Handle hObj, I32 Value);
int EDIT_GetNumChars (EDIT_Handle hObj);
/*********************************************************************
*
* Routines for editing values
*
**********************************************************************
*/
void EDIT_SetHexMode(EDIT_Handle hEdit, U32 Value, U32 Min, U32 Max);
void EDIT_SetBinMode(EDIT_Handle hEdit, U32 Value, U32 Min, U32 Max);
void EDIT_SetDecMode(EDIT_Handle hEdit, I32 Value, I32 Min, I32 Max, int Shift, U8 Flags);
void EDIT_SetFloatMode(EDIT_Handle hEdit, float Value, float Min, float Max, int Shift, U8 Flags);
U32 GUI_EditHex(U32 Value, U32 Min, U32 Max, int Len, int xsize);
U32 GUI_EditBin(U32 Value, U32 Min, U32 Max, int Len, int xsize);
I32 GUI_EditDec(I32 Value, I32 Min, I32 Max, int Len, int xsize, int Shift, U8 Flags);
float GUI_EditFloat(float Value, float Min, float Max, int Len, int xsize, int Shift, U8 Flags);
void GUI_EditString(char * pString, int Len, int xsize);
/*********************************************************************
*
* Flags
*
**********************************************************************
*/
/* Signed or normal mode */
#define GUI_EDIT_NORMAL 0
#define GUI_EDIT_SIGNED 1
/* Edit modes */
#define GUI_EDIT_MODE_INSERT 0
#define GUI_EDIT_MODE_OVERWRITE 1
/* Compatibility macros */
#define EDIT_CI_DISABELD EDIT_CI_DISABLED
#define EDIT_CI_ENABELD EDIT_CI_ENABLED
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif /* EDIT_H */
@@ -0,0 +1,98 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : EDIT_Private.h
Purpose : Internal header file
---------------------------END-OF-HEADER------------------------------
*/
#if GUI_WINSUPPORT
#include "WIDGET.h"
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
#define EDIT_REALLOC_SIZE 16
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef struct EDIT_Obj_struct EDIT_Obj;
typedef struct {
int Align;
int Border;
const GUI_FONT GUI_UNI_PTR * pFont;
GUI_COLOR aTextColor[2];
GUI_COLOR aBkColor[2];
} EDIT_PROPS;
struct EDIT_Obj_struct {
WIDGET Widget;
WM_HMEM hpText;
I16 MaxLen;
U16 BufferSize;
I32 Min, Max; /* Min max values as normalized floats (integers) */
U8 NumDecs; /* Number of decimals */
U32 CurrentValue; /* Current value */
int CursorPos; /* Cursor position. 0 means left most */
unsigned SelSize; /* Number of selected characters */
U8 EditMode; /* Insert or overwrite mode */
U8 XSizeCursor; /* Size of cursor when working in insert mode */
U8 Flags;
tEDIT_AddKeyEx * pfAddKeyEx; /* Handle key input */
tEDIT_UpdateBuffer * pfUpdateBuffer; /* Update textbuffer */
EDIT_PROPS Props;
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
int DebugId;
#endif
};
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
EDIT_Obj* EDIT_h2p(EDIT_Handle h);
#define EDIT_H2P(h) EDIT_h2p(h)
#else
#define EDIT_H2P(h) ((EDIT_Obj*)GUI_ALLOC_h2p(h))
#endif
/*********************************************************************
*
* Public data (internal defaults)
*
**********************************************************************
*/
extern EDIT_PROPS EDIT__DefaultProps;
/*********************************************************************
*
* Public functions (internal)
*
**********************************************************************
*/
void EDIT__SetCursorPos (EDIT_Obj* pObj, int CursorPos);
U16 EDIT__GetCurrentChar (EDIT_Obj* pObj);
#endif /* GUI_WINSUPPORT */
@@ -0,0 +1,173 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : FRAMEWIN.h
Purpose : Frame window include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef FRAMEWIN_H
#define FRAMEWIN_H
#include "WM.h"
#if GUI_WINSUPPORT
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/************************************************************
*
* #defines
*
*************************************************************
*/
/************************************************************
*
* Create / Status flags
*/
#define FRAMEWIN_CF_ACTIVE (1<<3)
#define FRAMEWIN_CF_MOVEABLE (1<<4)
#define FRAMEWIN_CF_TITLEVIS (1<<5)
#define FRAMEWIN_CF_MINIMIZED (1<<6)
#define FRAMEWIN_CF_MAXIMIZED (1<<7)
#define FRAMEWIN_SF_ACTIVE FRAMEWIN_CF_ACTIVE
#define FRAMEWIN_SF_MOVEABLE FRAMEWIN_CF_MOVEABLE
#define FRAMEWIN_SF_TITLEVIS FRAMEWIN_CF_TITLEVIS
#define FRAMEWIN_SF_MINIMIZED FRAMEWIN_CF_MINIMIZED
#define FRAMEWIN_SF_MAXIMIZED FRAMEWIN_CF_MAXIMIZED
/************************************************************
*
* BUTTON Flags
*/
#define FRAMEWIN_BUTTON_RIGHT (1<<0)
#define FRAMEWIN_BUTTON_LEFT (1<<1)
/************************************************************
* *
* Types *
* *
*************************************************************
*/
typedef WM_HMEM FRAMEWIN_Handle;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
FRAMEWIN_Handle FRAMEWIN_Create (const char* pTitle, WM_CALLBACK* cb, int Flags, int x0, int y0, int xsize, int ysize);
FRAMEWIN_Handle FRAMEWIN_CreateAsChild (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, const char* pText, WM_CALLBACK* cb, int Flags);
FRAMEWIN_Handle FRAMEWIN_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
FRAMEWIN_Handle FRAMEWIN_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id, const char* pTitle, WM_CALLBACK* cb);
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
#define FRAMEWIN_EnableMemdev(hObj) WM_EnableMemdev(hObj)
#define FRAMEWIN_DisableMemdev(hObj) WM_DisableMemdev(hObj)
#define FRAMEWIN_Delete(hObj) WM_DeleteWindow(hObj)
#define FRAMEWIN_Paint(hObj) WM_Paint(hObj)
#define FRAMEWIN_Invalidate(hObj) WM_InvalidateWindow(hObj)
WM_HWIN FRAMEWIN_AddButton (FRAMEWIN_Handle hObj, int Flags, int Off, int Id);
WM_HWIN FRAMEWIN_AddCloseButton(FRAMEWIN_Handle hObj, int Flags, int Off);
WM_HWIN FRAMEWIN_AddMaxButton (FRAMEWIN_Handle hObj, int Flags, int Off);
void FRAMEWIN_AddMenu (FRAMEWIN_Handle hObj, WM_HWIN hMenu);
WM_HWIN FRAMEWIN_AddMinButton (FRAMEWIN_Handle hObj, int Flags, int Off);
void FRAMEWIN_Minimize (FRAMEWIN_Handle hObj);
void FRAMEWIN_Maximize (FRAMEWIN_Handle hObj);
void FRAMEWIN_Restore (FRAMEWIN_Handle hObj);
/*********************************************************************
*
* Member functions: Set Properties
*
**********************************************************************
*/
void FRAMEWIN_SetActive (FRAMEWIN_Handle hObj, int State);
void FRAMEWIN_SetBarColor (FRAMEWIN_Handle hObj, unsigned Index, GUI_COLOR Color);
void FRAMEWIN_SetBorderSize (FRAMEWIN_Handle hObj, unsigned Size);
void FRAMEWIN_SetClientColor (FRAMEWIN_Handle hObj, GUI_COLOR Color);
void FRAMEWIN_SetFont (FRAMEWIN_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont);
void FRAMEWIN_SetMoveable (FRAMEWIN_Handle hObj, int State);
void FRAMEWIN_SetResizeable (FRAMEWIN_Handle hObj, int State);
void FRAMEWIN_SetText (FRAMEWIN_Handle hObj, const char* s);
void FRAMEWIN_SetTextAlign (FRAMEWIN_Handle hObj, int Align);
void FRAMEWIN_SetTextColor (FRAMEWIN_Handle hObj, GUI_COLOR Color);
void FRAMEWIN_SetTextColorEx (FRAMEWIN_Handle hObj, unsigned Index, GUI_COLOR Color);
void FRAMEWIN_SetTitleVis (FRAMEWIN_Handle hObj, int Show);
int FRAMEWIN_SetTitleHeight (FRAMEWIN_Handle hObj, int Height);
/*********************************************************************
*
* Member functions: Get Properties
*
**********************************************************************
*/
int FRAMEWIN_GetTitleHeight (FRAMEWIN_Handle hObj);
int FRAMEWIN_GetBorderSize (FRAMEWIN_Handle hObj);
int FRAMEWIN_IsMinimized (FRAMEWIN_Handle hObj);
int FRAMEWIN_IsMaximized (FRAMEWIN_Handle hObj);
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
GUI_COLOR FRAMEWIN_GetDefaultBarColor (unsigned Index);
int FRAMEWIN_GetDefaultBorderSize (void);
int FRAMEWIN_GetDefaultTitleHeight(void);
GUI_COLOR FRAMEWIN_GetDefaultClientColor(void);
const GUI_FONT GUI_UNI_PTR * FRAMEWIN_GetDefaultFont (void);
GUI_COLOR FRAMEWIN_GetDefaultTextColor (unsigned Index);
void FRAMEWIN_SetDefaultBarColor (unsigned Index, GUI_COLOR Color);
void FRAMEWIN_SetDefaultBorderSize (int DefaultBorderSize);
void FRAMEWIN_SetDefaultTitleHeight(int DefaultTitleHeight);
void FRAMEWIN_SetDefaultClientColor(GUI_COLOR Color);
void FRAMEWIN_SetDefaultFont (const GUI_FONT GUI_UNI_PTR * pFont);
void FRAMEWIN_SetDefaultTextColor (unsigned Index, GUI_COLOR Color);
/*********************************************************************
*
* Macros for compatibility
*
**********************************************************************
*/
#define FRAMEWIN_SetDefaultCaptionSize(Height) FRAMEWIN_SetDefaultTitleHeight(Height)
#define FRAMEWIN_GetDefaultCaptionSize() FRAMEWIN_GetDefaultTitleHeight()
#define FRAMEWIN_CreateButton(hObj, Flags, Off, Id) FRAMEWIN_AddButton(hObj, Flags, Off, Id)
#define FRAMEWIN_CreateCloseButton(hObj, Flags, Off) FRAMEWIN_AddCloseButton(hObj, Flags, Off)
#define FRAMEWIN_CreateMaxButton(hObj, Flags, Off) FRAMEWIN_AddMaxButton(hObj, Flags, Off)
#define FRAMEWIN_CreateMinButton(hObj, Flags, Off) FRAMEWIN_AddMinButton(hObj, Flags, Off)
#if defined(__cplusplus)
}
#endif
#endif
#endif /* FRAMEWIN_H */
@@ -0,0 +1,119 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : FRAMEWIN_Private.h
Purpose : FRAMEWIN private header file
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef FRAMEWIN_PRIVATE_H
#define FRAMEWIN_PRIVATE_H
#include "WM.h"
#include "FRAMEWIN.h"
#include "WIDGET.h"
#include "GUI_HOOK.h"
#if GUI_WINSUPPORT
/*********************************************************************
*
* Object definition
*
**********************************************************************
*/
typedef struct {
const GUI_FONT GUI_UNI_PTR * pFont;
GUI_COLOR aBarColor[2];
GUI_COLOR aTextColor[2];
GUI_COLOR ClientColor;
I16 TitleHeight;
I16 BorderSize;
I16 IBorderSize;
} FRAMEWIN_PROPS;
typedef struct {
WIDGET Widget;
FRAMEWIN_PROPS Props;
WM_CALLBACK* cb;
WM_HWIN hClient;
WM_HWIN hMenu;
WM_HWIN hText;
GUI_RECT rRestore;
I16 TextAlign;
U16 Flags;
WM_HWIN hFocussedChild; /* Handle to focussed child .. default none (0) */
WM_DIALOG_STATUS* pDialogStatus;
GUI_HOOK* pFirstHook;
} FRAMEWIN_Obj;
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef struct {
I16 TitleHeight;
I16 MenuHeight;
GUI_RECT rClient;
GUI_RECT rTitleText;
} POSITIONS;
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define FRAMEWIN_H2P(h) (FRAMEWIN_Obj*) GUI_ALLOC_h2p(h)
/*********************************************************************
*
* public data (internal defaults)
*
**********************************************************************
*/
extern FRAMEWIN_PROPS FRAMEWIN__DefaultProps;
/*********************************************************************
*
* public functions (internal)
*
**********************************************************************
*/
void FRAMEWIN__CalcPositions (FRAMEWIN_Obj* pObj, POSITIONS* pPos);
int FRAMEWIN__CalcTitleHeight (FRAMEWIN_Obj* pObj);
void FRAMEWIN__UpdatePositions (FRAMEWIN_Obj* pObj);
void FRAMEWIN__UpdateButtons (FRAMEWIN_Obj* pObj, int OldHeight);
/*********************************************************************
*
* public functions
*
**********************************************************************
*/
const GUI_FONT GUI_UNI_PTR * FRAMEWIN_GetFont (FRAMEWIN_Handle hObj);
int FRAMEWIN_GetTitleHeight (FRAMEWIN_Handle hObj);
void FRAMEWIN_MinButtonSetState(WM_HWIN hButton, int State);
void FRAMEWIN_MaxButtonSetState(WM_HWIN hButton, int State);
#endif /* GUI_WINSUPPORT */
#endif /* FRAMEWIN_H */
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,172 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* ľC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIDebug.h
Purpose : Debug macros
----------------------------------------------------------------------
Debug macros for logging
In the GUI Simulation, all output is transferred into the log window.
*/
#ifndef GUI_DEBUG_H
#define GUI_DEBUG_H
#include "GUI.h"
#include "GUI_X.h"
#define GUI_DEBUG_LEVEL_NOCHECK 0 /* No run time checks are performed */
#define GUI_DEBUG_LEVEL_CHECK_PARA 1 /* Parameter checks are performed to avoid crashes */
#define GUI_DEBUG_LEVEL_CHECK_ALL 2 /* Parameter checks and consistency checks are performed */
#define GUI_DEBUG_LEVEL_LOG_ERRORS 3 /* Errors are recorded */
#define GUI_DEBUG_LEVEL_LOG_WARNINGS 4 /* Errors & Warnings are recorded */
#define GUI_DEBUG_LEVEL_LOG_ALL 5 /* Errors, Warnings and Messages are recorded. */
#ifndef GUI_DEBUG_LEVEL
#ifdef WIN32
#define GUI_DEBUG_LEVEL GUI_DEBUG_LEVEL_LOG_WARNINGS /* Simulation should log all warnings */
#else
#define GUI_DEBUG_LEVEL GUI_DEBUG_LEVEL_CHECK_PARA /* For most targets, min. size is important */
#endif
#endif
/*******************************************************************
*
* Commandline
*
********************************************************************
*/
#ifdef WIN32
#define GUI_DEBUG_GETCMDLINE() SIM_GetCmdLine()
#else
#define GUI_DEBUG_GETCMDLINE() 0
#endif
/*******************************************************************
*
* Error macros
*
********************************************************************
*/
/* Make sure the macros are actually defined */
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_LOG_ERRORS
#define GUI_DEBUG_ERROROUT(s) GUI_ErrorOut(s)
#define GUI_DEBUG_ERROROUT1(s,p0) GUI_ErrorOut1(s,p0)
#define GUI_DEBUG_ERROROUT2(s,p0,p1) GUI_ErrorOut2(s,p0,p1)
#define GUI_DEBUG_ERROROUT3(s,p0,p1,p2) GUI_ErrorOut3(s,p0,p1,p2)
#define GUI_DEBUG_ERROROUT4(s,p0,p1,p2,p3) GUI_ErrorOut4(s,p0,p1,p2,p3)
#define GUI_DEBUG_ERROROUT_IF(exp,s) { if (exp) GUI_DEBUG_ERROROUT(s); }
#define GUI_DEBUG_ERROROUT1_IF(exp,s,p0) { if (exp) GUI_DEBUG_ERROROUT1(s,p0); }
#define GUI_DEBUG_ERROROUT2_IF(exp,s,p0,p1) { if (exp) GUI_DEBUG_ERROROUT2(s,p0,p1); }
#define GUI_DEBUG_ERROROUT3_IF(exp,s,p0,p1,p2) { if (exp) GUI_DEBUG_ERROROUT3(s,p0,p1,p2); }
#define GUI_DEBUG_ERROROUT4_IF(exp,s,p0,p1,p2,p3) { if (exp) GUI_DEBUG_ERROROUT4(s,p0,p1,p2,p3); }
#else
#define GUI_DEBUG_ERROROUT(s)
#define GUI_DEBUG_ERROROUT1(s,p0)
#define GUI_DEBUG_ERROROUT2(s,p0,p1)
#define GUI_DEBUG_ERROROUT3(s,p0,p1,p2)
#define GUI_DEBUG_ERROROUT4(s,p0,p1,p2,p3)
#define GUI_DEBUG_ERROROUT_IF(exp,s)
#define GUI_DEBUG_ERROROUT1_IF(exp,s,p0)
#define GUI_DEBUG_ERROROUT2_IF(exp,s,p0,p1)
#define GUI_DEBUG_ERROROUT3_IF(exp,s,p0,p1,p2)
#define GUI_DEBUG_ERROROUT4_IF(exp,s,p0,p1,p2,p3)
#endif
/*******************************************************************
*
* Warning macros
*
********************************************************************
*/
/* Make sure the macros are actually defined */
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_LOG_WARNINGS
#define GUI_DEBUG_WARN(s) GUI_Warn(s)
#define GUI_DEBUG_WARN1(s,p0) GUI_Warn1(s,p0)
#define GUI_DEBUG_WARN2(s,p0,p1) GUI_Warn2(s,p0,p1)
#define GUI_DEBUG_WARN3(s,p0,p1,p2) GUI_Warn3(s,p0,p1,p2)
#define GUI_DEBUG_WARN4(s,p0,p1,p2,p3) GUI_Warn4(s,p0,p1,p2,p3)
#define GUI_DEBUG_WARN_IF(exp,s) { if (exp) GUI_DEBUG_WARN(s); }
#define GUI_DEBUG_WARN1_IF(exp,s,p0) { if (exp) GUI_DEBUG_WARN1(s,p0); }
#define GUI_DEBUG_WARN2_IF(exp,s,p0,p1) { if (exp) GUI_DEBUG_WARN2(s,p0,p1); }
#define GUI_DEBUG_WARN3_IF(exp,s,p0,p1,p2) { if (exp) GUI_DEBUG_WARN3(s,p0,p1,p2); }
#define GUI_DEBUG_WARN4_IF(exp,s,p0,p1,p2,p3) { if (exp) GUI_DEBUG_WARN4(s,p0,p1,p2,p3); }
#else
#define GUI_DEBUG_WARN(s)
#define GUI_DEBUG_WARN1(s,p0)
#define GUI_DEBUG_WARN2(s,p0,p1)
#define GUI_DEBUG_WARN3(s,p0,p1,p2)
#define GUI_DEBUG_WARN4(s,p0,p1,p2,p3)
#define GUI_DEBUG_WARN_IF(exp,s)
#define GUI_DEBUG_WARN1_IF(exp,s,p0)
#define GUI_DEBUG_WARN2_IF(exp,s,p0,p1)
#define GUI_DEBUG_WARN3_IF(exp,s,p0,p1,p2)
#define GUI_DEBUG_WARN4_IF(exp,s,p0,p1,p2,p3)
#endif
/*******************************************************************
*
* Logging macros
*
********************************************************************
*/
/* Make sure the macros are actually defined */
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_LOG_ALL
#define GUI_DEBUG_LOG(s) GUI_Log(s)
#define GUI_DEBUG_LOG1(s,p0) GUI_Warn1(s,p0)
#define GUI_DEBUG_LOG2(s,p0,p1) GUI_Warn2(s,p0,p1)
#define GUI_DEBUG_LOG3(s,p0,p1,p2) GUI_Warn3(s,p0,p1,p2)
#define GUI_DEBUG_LOG4(s,p0,p1,p2,p3) GUI_Warn4(s,p0,p1,p2,p3)
#define GUI_DEBUG_LOG_IF(exp,s) { if (exp) GUI_DEBUG_LOG(s); }
#define GUI_DEBUG_LOG1_IF(exp,s,p0) { if (exp) GUI_DEBUG_LOG1(s,p0); }
#define GUI_DEBUG_LOG2_IF(exp,s,p0,p1) { if (exp) GUI_DEBUG_LOG2(s,p0,p1); }
#define GUI_DEBUG_LOG3_IF(exp,s,p0,p1,p2) { if (exp) GUI_DEBUG_LOG3(s,p0,p1,p2); }
#define GUI_DEBUG_LOG4_IF(exp,s,p0,p1,p2,p3) { if (exp) GUI_DEBUG_LOG4(s,p0,p1,p2,p3); }
#else
#define GUI_DEBUG_LOG(s)
#define GUI_DEBUG_LOG1(s,p0)
#define GUI_DEBUG_LOG2(s,p0,p1)
#define GUI_DEBUG_LOG3(s,p0,p1,p2)
#define GUI_DEBUG_LOG4(s,p0,p1,p2,p3)
#define GUI_DEBUG_LOG_IF(exp,s)
#define GUI_DEBUG_LOG1_IF(exp,s,p0)
#define GUI_DEBUG_LOG2_IF(exp,s,p0,p1)
#define GUI_DEBUG_LOG3_IF(exp,s,p0,p1,p2)
#define GUI_DEBUG_LOG4_IF(exp,s,p0,p1,p2,p3)
#endif
/*******************************************************************
*
* Asserts
*
********************************************************************
*/
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_LOG_ERRORS
#define GUI_DEBUG_ASSERT(exp) { if (!exp) GUI_DEBUG_ERROROUT(#exp); }
#else
#define GUI_DEBUG_ASSERT(exp)
#endif
#endif /* LCD_H */
/*************************** End of file ****************************/
@@ -0,0 +1,385 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIType.h
Purpose : Include file define the types used for GUI
---------------------------END-OF-HEADER------------------------------
Attention : Do not modify this file ! If you do, you will not
be able do update to a later GUI version !
*/
#ifndef GUITYPE_H_INCLUDED
#define GUITYPE_H_INCLUDED
#include "LCD.h"
#include "uCGUI\Config\GUIConf.h"
/* *************************************************************
* *
* Simple types *
* *
*************************************************************
*/
typedef const char * GUI_ConstString;
/* *************************************************************
* *
* Structures *
* *
*************************************************************
*/
typedef LCD_COLOR GUI_COLOR;
typedef LCD_LOGPALETTE GUI_LOGPALETTE;
typedef LCD_DRAWMODE GUI_DRAWMODE;
typedef LCD_RECT GUI_RECT;
typedef struct {
void (* pfDraw)(int x0,int y0,int xsize, int ysize, const U8 GUI_UNI_PTR * pPixel, const LCD_LOGPALETTE GUI_UNI_PTR * pLogPal, int xMag, int yMag);
GUI_COLOR (* pfIndex2Color)(int Index);
} GUI_BITMAP_METHODS;
typedef struct {
U16P XSize;
U16P YSize;
U16P BytesPerLine;
U16P BitsPerPixel;
const U8 GUI_UNI_PTR * pData;
const GUI_LOGPALETTE GUI_UNI_PTR * pPal;
const GUI_BITMAP_METHODS * pMethods;
} GUI_BITMAP;
/* This structure may not be changed because the data that it
expects is read in binary form (via any kind of interface,
at runtime).
This structure should therefor not be changed.
*/
typedef struct {
U16 ID; /* Version 1.00 => 100*/
U16 Version;
U16 XSize;
U16 YSize;
U16 BytesPerLine;
U16 BitsPerPixel;
U16 NumColors;
U16 HasTrans;
} GUI_BITMAP_STREAM;
typedef struct {
int x,y;
unsigned char Pressed;
} GUI_PID_STATE;
/*
****************************************
* *
* FONT structures (new in V1.10) *
* *
****************************************
*/
/* Translation list. Translates a character code into up to 2
indices of images to display on top of each other;
'á' -> index('a'), index('´') */
typedef struct {
I16P c0;
I16P c1;
} GUI_FONT_TRANSLIST;
typedef struct {
U16P FirstChar;
U16P LastChar;
const GUI_FONT_TRANSLIST GUI_UNI_PTR * pList;
} GUI_FONT_TRANSINFO;
typedef struct {
U8 XSize;
U8 XDist;
U8 BytesPerLine;
const unsigned char GUI_UNI_PTR * pData;
} GUI_CHARINFO;
typedef struct GUI_FONT_PROP {
U16P First; /* first character */
U16P Last; /* last character */
const GUI_CHARINFO GUI_UNI_PTR * paCharInfo; /* address of first character */
const struct GUI_FONT_PROP GUI_UNI_PTR * pNext; /* pointer to next */
} GUI_FONT_PROP;
typedef struct {
const unsigned char GUI_UNI_PTR * pData;
const U8 GUI_UNI_PTR * pTransData;
const GUI_FONT_TRANSINFO GUI_UNI_PTR * pTrans;
U16P FirstChar;
U16P LastChar;
U8 XSize;
U8 XDist;
U8 BytesPerLine;
} GUI_FONT_MONO;
typedef struct GUI_FONT_INFO {
U16P First; /* first character */
U16P Last; /* last character */
const GUI_CHARINFO* paCharInfo; /* address of first character */
const struct GUI_FONT_INFO* pNext; /* pointer to next */
} GUI_FONT_INFO;
/*
****************************************
* *
* FONT info structure *
* *
****************************************
This structure is used when retrieving information about a font.
It is designed for future expansion without incompatibilities.
*/
typedef struct {
U16 Flags;
U8 Baseline;
U8 LHeight; /* height of a small lower case character (a,x) */
U8 CHeight; /* height of a small upper case character (A,X) */
} GUI_FONTINFO;
#define GUI_FONTINFO_FLAG_PROP (1<<0) /* Is proportional */
#define GUI_FONTINFO_FLAG_MONO (1<<1) /* Is monospaced */
#define GUI_FONTINFO_FLAG_AA (1<<2) /* Is an antialiased font */
#define GUI_FONTINFO_FLAG_AA2 (1<<3) /* Is an antialiased font, 2bpp */
#define GUI_FONTINFO_FLAG_AA4 (1<<4) /* Is an antialiased font, 4bpp */
/**********************************************************************
*
* UNICODE Encoding
*
***********************************************************************
*/
typedef U16 tGUI_GetCharCode(const char GUI_UNI_PTR *s);
typedef int tGUI_GetCharSize(const char GUI_UNI_PTR *s);
typedef int tGUI_CalcSizeOfChar(U16 Char);
typedef int tGUI_Encode(char *s, U16 Char);
typedef struct {
tGUI_GetCharCode* pfGetCharCode;
tGUI_GetCharSize* pfGetCharSize;
tGUI_CalcSizeOfChar* pfCalcSizeOfChar;
tGUI_Encode* pfEncode;
} GUI_UC_ENC_APILIST;
/**********************************************************************
*
* FONT Encoding
*
***********************************************************************
*/
typedef int tGUI_GetLineDistX(const char GUI_UNI_PTR *s, int Len);
typedef int tGUI_GetLineLen(const char GUI_UNI_PTR *s, int MaxLen);
typedef void tGL_DispLine(const char GUI_UNI_PTR *s, int Len);
typedef struct {
tGUI_GetLineDistX* pfGetLineDistX;
tGUI_GetLineLen* pfGetLineLen;
tGL_DispLine* pfDispLine;
} tGUI_ENC_APIList;
extern const tGUI_ENC_APIList GUI_ENC_APIList_SJIS;
/*
****************************************
* *
* FONT methods *
* *
****************************************
The parameter to the methods called pFont should be of type
GUI_FONT, but unfortunately a lot of compilers can not handle
forward declarations right ...
So it ends up to be a void pointer.
*/
typedef struct GUI_FONT GUI_FONT;
typedef void GUI_DISPCHAR(U16 c);
typedef int GUI_GETCHARDISTX(U16P c);
typedef void GUI_GETFONTINFO(const GUI_FONT GUI_UNI_PTR * pFont, GUI_FONTINFO * pfi);
typedef char GUI_ISINFONT (const GUI_FONT GUI_UNI_PTR * pFont, U16 c);
#define DECLARE_FONT(Type) \
void GUI##Type##_DispChar (U16P c); \
int GUI##Type##_GetCharDistX(U16P c); \
void GUI##Type##_GetFontInfo (const GUI_FONT GUI_UNI_PTR * pFont, GUI_FONTINFO * pfi); \
char GUI##Type##_IsInFont (const GUI_FONT GUI_UNI_PTR * pFont, U16 c)
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/* MONO: Monospaced fonts */
DECLARE_FONT(MONO);
#define GUI_FONTTYPE_MONO \
GUIMONO_DispChar, \
GUIMONO_GetCharDistX, \
GUIMONO_GetFontInfo, \
GUIMONO_IsInFont, \
(tGUI_ENC_APIList*)0
/* PROP: Proportional fonts */
DECLARE_FONT(PROP);
#define GUI_FONTTYPE_PROP \
GUIPROP_DispChar, \
GUIPROP_GetCharDistX, \
GUIPROP_GetFontInfo, \
GUIPROP_IsInFont, \
(tGUI_ENC_APIList*)0
/* PROP: Proportional fonts SJIS */
DECLARE_FONT(PROP);
#define GUI_FONTTYPE_PROP_SJIS \
GUIPROP_DispChar, \
GUIPROP_GetCharDistX, \
GUIPROP_GetFontInfo, \
GUIPROP_IsInFont, \
&GUI_ENC_APIList_SJIS
/* PROPAA: Proportional, antialiased fonts */
DECLARE_FONT(PROPAA);
#define GUI_FONTTYPE_PROPAA \
GUIPROPAA_DispChar, \
GUIPROPAA_GetCharDistX, \
GUIPROPAA_GetFontInfo, \
GUIPROPAA_IsInFont, \
(tGUI_ENC_APIList*)0
/* PROPAA: Proportional, antialiased fonts, 2bpp */
DECLARE_FONT(PROP_AA2);
#define GUI_FONTTYPE_PROP_AA2 \
GUIPROP_AA2_DispChar, \
GUIPROP_AA2_GetCharDistX, \
GUIPROP_AA2_GetFontInfo, \
GUIPROP_AA2_IsInFont, \
(tGUI_ENC_APIList*)0
/* PROPAA: Proportional, antialiased fonts, 2bpp, SJIS encoding */
DECLARE_FONT(PROP_AA2);
#define GUI_FONTTYPE_PROP_AA2_SJIS \
GUIPROP_AA2_DispChar, \
GUIPROP_AA2_GetCharDistX, \
GUIPROP_AA2_GetFontInfo, \
GUIPROP_AA2_IsInFont, \
GUI_ENCODE_SJIS
/* PROPAA: Proportional, antialiased fonts, 4bpp */
DECLARE_FONT(PROP_AA4);
#define GUI_FONTTYPE_PROP_AA4 \
GUIPROP_AA4_DispChar, \
GUIPROP_AA4_GetCharDistX, \
GUIPROP_AA4_GetFontInfo, \
GUIPROP_AA4_IsInFont, \
(tGUI_ENC_APIList*)0
/* PROPAA: Proportional, antialiased fonts, 4bpp, SJIS encoding */
DECLARE_FONT(PROP_AA4);
#define GUI_FONTTYPE_PROP_AA4_SJIS \
GUIPROP_AA4_DispChar, \
GUIPROP_AA4_GetCharDistX, \
GUIPROP_AA4_GetFontInfo, \
GUIPROP_AA4_IsInFont, \
GUI_ENCODE_SJIS
#if defined(__cplusplus)
}
#endif
struct GUI_FONT {
GUI_DISPCHAR* pfDispChar;
GUI_GETCHARDISTX* pfGetCharDistX;
GUI_GETFONTINFO* pfGetFontInfo;
GUI_ISINFONT* pfIsInFont;
const tGUI_ENC_APIList* pafEncode;
U8 YSize;
U8 YDist;
U8 XMag;
U8 YMag;
union {
const void GUI_UNI_PTR * pFontData;
const GUI_FONT_MONO GUI_UNI_PTR * pMono;
const GUI_FONT_PROP GUI_UNI_PTR * pProp;
} p;
U8 Baseline;
U8 LHeight; /* height of a small lower case character (a,x) */
U8 CHeight; /* height of a small upper case character (A,X) */
};
/*********************************************************************
*
* Position independent font structures
*/
typedef struct {
U32 ID; /* Font file ID */
U16 YSize; /* Height of font */
U16 YDist; /* Space of font Y */
U16 Baseline; /* Index of baseline */
U16 LHeight; /* Height of a small lower case character (a) */
U16 CHeight; /* Height of a upper case character (A) */
U16 NumAreas; /* Number of character areas */
} GUI_SI_FONT;
typedef struct {
U16 First; /* Index of first character */
U16 Last; /* Index of last character */
} GUI_SIF_CHAR_AREA;
typedef struct {
U16 XSize; /* Size of bitmap data in X */
U16 XDist; /* Number of pixels for increment cursor in X */
U16 BytesPerLine; /* Number of bytes per line */
U16 Dummy;
U32 OffData; /* Offset of pixel data */
} GUI_SIF_CHARINFO;
typedef struct tGUI_SIF_APIList_struct {
GUI_DISPCHAR * pDispChar;
GUI_GETCHARDISTX * pGetCharDistX;
GUI_GETFONTINFO * pGetFontInfo;
GUI_ISINFONT * pIsInFont;
} tGUI_SIF_APIList;
#define GUI_SIF_TYPE tGUI_SIF_APIList
#define GUI_SIF_TYPE_PROP &GUI_SIF_APIList_Prop
extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop;
/*
*********************************
* *
* Typedefs *
* *
*********************************
*/
#ifndef GUI_HMEM
#define GUI_HMEM I16P
#endif
#define GUI_HMEM_NULL (0)
typedef GUI_HMEM GUI_HWIN;
#endif /* GUITYPE_H_INCLUDED */
/*************************** End of file ****************************/
@@ -0,0 +1,27 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUIVersion.h
Purpose : Include file defining current GUI version
---------------------------END-OF-HEADER------------------------------
*/
#ifndef GUI_VERSION_H
#define GUI_VERSION_H
#define GUI_VERSION 39001
#endif /* Avoid multiple inclusion */
/*************************** End of file ****************************/
@@ -0,0 +1,69 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_ARRAY.h
Purpose : Array handling routines
---------------------------END-OF-HEADER------------------------------
*/
#ifndef GUIARRAY_H
#define GUIARRAY_H
#include "WM_Intern.h"
#if GUI_WINSUPPORT
typedef enum {
GUI_ARRAY_STATE_NOT_CREATED,
GUI_ARRAY_STATE_CREATED,
GUI_ARRAY_STATE_DELETED
} GUI_ARRAY_STATE;
typedef struct {
U16 NumItems;
WM_HMEM haHandle; /* Handle to buffer holding handles */
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
GUI_ARRAY_STATE InitState;
#endif
} GUI_ARRAY;
int GUI_ARRAY_AddItem (GUI_ARRAY* pThis, const void *pNew, int Len);
void GUI_ARRAY_Delete (GUI_ARRAY* pThis);
WM_HMEM GUI_ARRAY_GethItem (const GUI_ARRAY* pThis, unsigned int Index);
unsigned GUI_ARRAY_GetNumItems (const GUI_ARRAY* pThis);
void* GUI_ARRAY_GetpItem (const GUI_ARRAY* pThis, unsigned int Index);
/* Optional methods */
int GUI_ARRAY_SethItem (GUI_ARRAY* pThis, unsigned int Index, WM_HMEM hItem);
WM_HMEM GUI_ARRAY_SetItem (GUI_ARRAY* pThis, unsigned int Index, const void* pData, int Len);
void GUI_ARRAY_DeleteItem (GUI_ARRAY* pThis, unsigned int Index);
char GUI_ARRAY_InsertBlankItem(GUI_ARRAY* pThis, unsigned int Index);
WM_HMEM GUI_ARRAY_InsertItem (GUI_ARRAY* pThis, unsigned int Index, int Len);
void* GUI_ARRAY_ResizeItem (GUI_ARRAY* pThis, unsigned int Index, int Len);
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
void GUI_ARRAY_Create ( GUI_ARRAY * pThis);
void GUI_ARRAY_Check (const GUI_ARRAY * pThis);
#define GUI_ARRAY_CREATE(pThis) GUI_ARRAY_Create(pThis)
#define GUI_ARRAY_CHECK(pThis) GUI_ARRAY_Check(pThis)
#else
#define GUI_ARRAY_CREATE(pThis)
#define GUI_ARRAY_CHECK(pThis)
#endif
#endif
#endif
@@ -0,0 +1,155 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_ConfDefaults.h
Purpose : Defaults for GUI config switches.
---------------------------END-OF-HEADER------------------------------
Attention : Do not modify this file ! If you do, you will not
be able do update to a later GUI version !
*/
#ifndef GUI_CONFDEFAULTS_H
#define GUI_CONFDEFAULTS_H
#include "uCGUI\Config\GUIConf.h"
/**********************************************************************
*
* Defaults for config switches
*
***********************************************************************
*/
/* Define "universal pointer". Normally, this is not needed (define will expand to nothing)
However, on some systems (AVR - IAR compiler) it can be necessary ( -> __generic),
since a default pointer can access RAM only, not the built-in Flash
*/
#ifndef GUI_UNI_PTR
#define GUI_UNI_PTR
#define GUI_UNI_PTR_USED 0
#else
#define GUI_UNI_PTR_USED 1
#endif
/* Define const storage. Normally, this is not needed (define will expand to const)
However, on some systems (AVR - IAR compiler) it can be necessary ( -> __flash const),
since otherwise constants are copied into RAM
*/
#ifndef GUI_ALLOC_SIZE
#define GUI_ALLOC_SIZE 1000
#endif
#ifndef GUI_CONST_STORAGE
#define GUI_CONST_STORAGE const
#endif
#ifndef GUI_SUPPORT_TOUCH
#define GUI_SUPPORT_TOUCH 0
#endif
#ifndef GUI_SUPPORT_MOUSE
#define GUI_SUPPORT_MOUSE 0
#endif
#ifndef GUI_SUPPORT_MEMDEV
#define GUI_SUPPORT_MEMDEV 0
#endif
#ifndef GUI_SUPPORT_AA
#define GUI_SUPPORT_AA 0
#endif
#ifndef GUI_OS
#define GUI_OS 0
#endif
#ifndef GUI_SUPPORT_LARGE_BITMAPS
#if GUI_ALLOC_SIZE > 65535
#define GUI_SUPPORT_LARGE_BITMAPS 1
#else
#define GUI_SUPPORT_LARGE_BITMAPS 0
#endif
#endif
#ifndef GUI_COMPATIBLE_MODE
#define GUI_COMPATIBLE_MODE 1
#endif
#ifndef GUI_NUM_LAYERS
#define GUI_NUM_LAYERS 1
#endif
#ifndef GUI_SUPPORT_CURSOR
#define GUI_SUPPORT_CURSOR (GUI_SUPPORT_MOUSE | GUI_SUPPORT_TOUCH)
#endif
#ifndef GUI_SUPPORT_DEVICES
#ifdef __C51__ /* Keil C51 limitation ... Indirect function calls are limited */
#define GUI_SUPPORT_DEVICES 0
#else
#define GUI_SUPPORT_DEVICES (GUI_SUPPORT_MEMDEV | (GUI_NUM_LAYERS > 1))
#endif
#endif
/* Some compilers for very simple chips can not generate code for function pointers
with parameters. In this case, we do not use function pointers, but limit the functionality slightly */
#ifndef GUI_COMPILER_SUPPORTS_FP
#ifdef __C51__
#define GUI_COMPILER_SUPPORTS_FP 0
#else
#define GUI_COMPILER_SUPPORTS_FP 1
#endif
#endif
#ifndef GUI_SUPPORT_ROTATION
#if GUI_COMPILER_SUPPORTS_FP
#define GUI_SUPPORT_ROTATION 1
#else
#define GUI_SUPPORT_ROTATION 0
#endif
#endif
/* In order to avoid warnings for undefined parameters */
#ifndef GUI_USE_PARA
#if defined (__BORLANDC__) || defined(NC30) || defined(NC308)
#define GUI_USE_PARA(para)
#else
#define GUI_USE_PARA(para) para=para;
#endif
#endif
/* Default for types */
#ifndef GUI_TIMER_TIME
#define GUI_TIMER_TIME int /* default is to use 16 bits for 16 bit CPUs,
32 bits on 32 bit CPUs for timing */
#endif
/* Types used for memory allocation */
#if GUI_ALLOC_SIZE <32767
#define GUI_ALLOC_DATATYPE I16
#define GUI_ALLOC_DATATYPE_U U16
#else
#define GUI_ALLOC_DATATYPE I32
#define GUI_ALLOC_DATATYPE_U U32
#endif
#ifndef GUI_MEMSET
#define GUI_MEMSET GUI__memset
#endif
#endif /* ifdef GUI_CONFDEFAULTS_H */
/*************************** End of file ****************************/
@@ -0,0 +1,67 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_FontIntern.h
Purpose : Internal decalrations used in font files
---------------------------END-OF-HEADER------------------------------
Attention : Do not modify this file ! If you do, you will not
be able do update to a later GUI version !
*/
#ifndef GUI_FONTINTERN_H /* Guard against multiple inclusion */
#define GUI_FONTINTERN_H
#include "GUI.h"
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
extern GUI_CONST_STORAGE GUI_FONT_PROP GUI_Font8ASCII_Prop;
extern GUI_CONST_STORAGE GUI_FONT_PROP GUI_Font10S_ASCII_FontProp1;
extern GUI_CONST_STORAGE GUI_FONT_PROP GUI_Font10ASCIIProp1;
extern GUI_CONST_STORAGE GUI_FONT_PROP GUI_Font16ASCIIProp1;
extern GUI_CONST_STORAGE GUI_FONT_PROP GUI_Font16_1_FontProp1;
extern GUI_CONST_STORAGE GUI_FONT_PROP FontComic24BProp_ASCII;
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_Font24B_ASCII_CharInfo[95];
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_Font24_ASCII_CharInfo[95];
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_Font32B_ASCII_CharInfo[95];
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_Font32_ASCII_CharInfo[95];
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_CharInfoF8x13_ASCII[96];
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_CharInfoF8x15B_ASCII[96];
extern GUI_CONST_STORAGE GUI_CHARINFO CharInfo18B_ASCII[97];
extern GUI_CONST_STORAGE GUI_CHARINFO CharInfo24B_ASCII[96];
extern GUI_CONST_STORAGE GUI_FONT_PROP GUI_Font13ASCII_Prop1;
extern GUI_CONST_STORAGE GUI_FONT_PROP GUI_Font13B_ASCII_Prop1;
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_Font13H_ASCII_CharInfo[95];
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_Font13HB_ASCII_CharInfo[95];
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_Font16_HK_CharInfo[169];
extern GUI_CONST_STORAGE GUI_CHARINFO GUI_Font16B_ASCII_CharInfo[95];
#if defined(__cplusplus)
}
#endif
#endif /* Guard against multiple inclusion */
/*************************** End of file ****************************/
@@ -0,0 +1,62 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_HOOK.h
Purpose : Hook handling routines
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef GUI_HOOK_H
#define GUI_HOOK_H
#include "WM_Intern.h"
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef int GUI_HOOK_FUNC(WM_MESSAGE* pMsg);
typedef struct GUI_HOOK {
struct GUI_HOOK* pNext;
GUI_HOOK_FUNC* pHookFunc;
} GUI_HOOK;
/*********************************************************************
*
* Functions
*
**********************************************************************
*/
void GUI_HOOK_Add (GUI_HOOK** ppFirstHook, GUI_HOOK* pNewHook, GUI_HOOK_FUNC* pHookFunc);
void GUI_HOOK_Remove(GUI_HOOK** ppFirstHook, GUI_HOOK* pHook);
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif /* GUI_HOOK_H */
/*************************** End of file ****************************/
@@ -0,0 +1,94 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_Private.h
Purpose : GUI internal declarations
---------------------------END-OF-HEADER------------------------------
Attention : Do not modify this file ! If you do, you will not
be able do update to a later GUI version !
*/
#ifndef GUI_PRIVATE_H
#define GUI_PRIVATE_H
#include "GUI_Protected.h"
#include "LCD_Private.h" /* Required because of LCD_PIXELINDEX, which depends on LCDConf */
#if GUI_SUPPORT_DEVICES
#define LCDDEV_L0_Color2Index GUI_Context.pDeviceAPI->pfColor2Index
#define LCDDEV_L0_DrawBitmap GUI_Context.pDeviceAPI->pfDrawBitmap
#define LCDDEV_L0_DrawHLine GUI_Context.pDeviceAPI->pfDrawHLine
#define LCDDEV_L0_DrawVLine GUI_Context.pDeviceAPI->pfDrawVLine
#define LCDDEV_L0_DrawPixel GUI_Context.pDeviceAPI->pfDrawPixel
#define LCDDEV_L0_FillRect GUI_Context.pDeviceAPI->pfFillRect
#define LCDDEV_L0_GetPixel GUI_Context.pDeviceAPI->pfGetPixel
#define LCDDEV_L0_GetRect GUI_Context.pDeviceAPI->pfGetRect
#define LCDDEV_L0_GetPixelIndex GUI_Context.pDeviceAPI->pfGetPixelIndex
#define LCDDEV_L0_Index2Color GUI_Context.pDeviceAPI->pfIndex2Color
#define LCDDEV_L0_SetPixelIndex GUI_Context.pDeviceAPI->pfSetPixelIndex
#define LCDDEV_L0_XorPixel GUI_Context.pDeviceAPI->pfXorPixel
#else
#define LCDDEV_L0_Color2Index LCD_L0_Color2Index
#define LCDDEV_L0_DrawBitmap LCD_L0_DrawBitmap
#define LCDDEV_L0_DrawHLine LCD_L0_DrawHLine
#define LCDDEV_L0_DrawVLine LCD_L0_DrawVLine
#define LCDDEV_L0_DrawPixel LCD_L0_DrawPixel
#define LCDDEV_L0_FillRect LCD_L0_FillRect
#define LCDDEV_L0_GetPixel LCD_L0_GetPixel
#define LCDDEV_L0_GetRect LCD_L0_GetRect
#define LCDDEV_L0_GetPixelIndex LCD_L0_GetPixelIndex
#define LCDDEV_L0_Index2Color LCD_L0_Index2Color
#define LCDDEV_L0_SetPixelIndex LCD_L0_SetPixelIndex
#define LCDDEV_L0_XorPixel LCD_L0_XorPixel
#endif
void LCD_L0_DrawBitmap (int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff, const LCD_PIXELINDEX* pTrans);
void LCD_L0_1_DrawBitmap (int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff, const LCD_PIXELINDEX* pTrans);
void LCD_L0_2_DrawBitmap (int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff, const LCD_PIXELINDEX* pTrans);
void LCD_L0_3_DrawBitmap (int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff, const LCD_PIXELINDEX* pTrans);
void LCD_L0_4_DrawBitmap (int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff, const LCD_PIXELINDEX* pTrans);
void LCD_L0_MAG_DrawBitmap(int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff, const LCD_PIXELINDEX* pTrans);
void LCD_L0_DELTA_DrawBitmap(int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff, const LCD_PIXELINDEX* pTrans);
LCD_PIXELINDEX* LCD_GetpPalConvTable(const LCD_LOGPALETTE GUI_UNI_PTR * pLogPal);
LCD_PIXELINDEX* LCD_GetpPalConvTableUncached(const LCD_LOGPALETTE GUI_UNI_PTR * pLogPal);
#define GUI_POS_AUTO -4095 /* Position value for auto-pos */
#if GUI_SUPPORT_MEMDEV
void* GUI_MEMDEV__XY2PTR (int x,int y);
void* GUI_MEMDEV__XY2PTREx(GUI_MEMDEV* pDev, int x,int y);
void GUI_MEMDEV__WriteToActiveAt(GUI_MEMDEV_Handle hMem,int x, int y);
#endif
#endif /* ifdef GUI_H */
/*************************** End of file ****************************/
@@ -0,0 +1,404 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* ľC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_Protected.h
Purpose : GUI internal declarations
---------------------------END-OF-HEADER------------------------------
*/
#ifndef GUI_PROTECTED_H
#define GUI_PROTECTED_H
#include "GUI.h"
#include "LCD_Protected.h"
#include "GUIDebug.h"
#if GUI_WINSUPPORT
#include "WM_GUI.h"
#endif
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/**********************************************************************
*
* Defaults for config switches
*
***********************************************************************
The config switches below do not affect the interface in GUI.h and
are therefor not required to be in GUI.h.
*/
/* Short address area.
For most compilers, this is "near" or "__near"
We do not use this except for some CPUs which we know to always have some
near memory, because the GUI_Context ans some other data will be declared
to be in this short address (near) memory area as it has a major effect
on performance.
Please define in GUIConf.h (if you want to use it)
*/
#ifndef GUI_SADDR
#define GUI_SADDR
#endif
#ifndef GUI_DEFAULT_FONT
#define GUI_DEFAULT_FONT &GUI_Font6x8
#endif
#ifndef GUI_DEFAULT_CURSOR
#define GUI_DEFAULT_CURSOR &GUI_CursorArrowM
#endif
#ifndef GUI_DEFAULT_BKCOLOR
#define GUI_DEFAULT_BKCOLOR GUI_BLACK
#endif
#ifndef GUI_DEFAULT_COLOR
#define GUI_DEFAULT_COLOR GUI_WHITE
#endif
#ifndef GUI_X_SIGNAL_EVENT
#define GUI_X_SIGNAL_EVENT()
#endif
#ifndef GUI_X_WAIT_EVENT
#define GUI_X_WAIT_EVENT() GUI_X_ExecIdle()
#endif
/* *********************************
* *
* Angles *
* *
*********************************
*/
#define GUI_45DEG 512
#define GUI_90DEG (2*GUI_45DEG)
#define GUI_180DEG (4*GUI_45DEG)
#define GUI_360DEG (8*GUI_45DEG)
/*****************************************************
*
* Locking checks
*
******************************************************
*/
#if defined (WIN32) && defined (_DEBUG) && GUI_OS
#define GUI_ASSERT_LOCK() GUITASK_AssertLock()
#define GUI_ASSERT_NO_LOCK() GUITASK_AssertNoLock()
void GUITASK_AssertLock(void);
void GUITASK_AssertNoLock(void);
#else
#define GUI_ASSERT_LOCK()
#define GUI_ASSERT_NO_LOCK()
#endif
/*****************************************************
*
* Usage internals
*
******************************************************
*/
typedef enum { GUI_WRAPMODE_NONE, GUI_WRAPMODE_WORD, GUI_WRAPMODE_CHAR } GUI_WRAPMODE;
typedef GUI_HMEM GUI_USAGE_Handle;
typedef struct tsUSAGE_APIList tUSAGE_APIList;
typedef struct GUI_Usage GUI_USAGE;
#define GUI_USAGE_h GUI_USAGE_Handle
typedef GUI_USAGE_h tUSAGE_CreateCompatible(GUI_USAGE* p);
typedef void tUSAGE_AddPixel (GUI_USAGE* p, int x, int y);
typedef void tUSAGE_AddHLine (GUI_USAGE* p, int x0, int y0, int len);
typedef void tUSAGE_Clear (GUI_USAGE* p);
typedef void tUSAGE_Delete (GUI_USAGE_h h);
typedef int tUSAGE_GetNextDirty (GUI_USAGE* p, int *pxOff, int yOff);
#define GUI_USAGE_H2P(h) ((GUI_USAGE*)GUI_ALLOC_h2p(h))
void GUI_USAGE_DecUseCnt(GUI_USAGE_Handle hUsage);
GUI_USAGE_Handle GUI_USAGE_BM_Create(int x0, int y0, int xsize, int ysize, int Flags);
void GUI_USAGE_Select(GUI_USAGE_Handle hUsage);
void GUI_USAGE_AddRect(GUI_USAGE* pUsage, int x0, int y0, int xSize, int ySize);
#define GUI_USAGE_AddPixel(p, x,y) p->pAPI->pfAddPixel(p,x,y)
#define GUI_USAGE_AddHLine(p,x,y,len) p->pAPI->pfAddHLine(p,x,y,len)
#define GUI_USAGE_Clear(p) p->pAPI->pfClear(p)
#define GUI_USAGE_Delete(p) p->pAPI->pfDelete(p)
#define GUI_USAGE_GetNextDirty(p,pxOff, yOff) p->pAPI->pfGetNextDirty(p,pxOff, yOff)
struct tsUSAGE_APIList {
tUSAGE_AddPixel* pfAddPixel;
tUSAGE_AddHLine* pfAddHLine;
tUSAGE_Clear* pfClear;
tUSAGE_CreateCompatible* pfCreateCompatible;
tUSAGE_Delete* pfDelete;
tUSAGE_GetNextDirty* pfGetNextDirty;
} ;
struct GUI_Usage {
I16P x0, y0, XSize, YSize;
const tUSAGE_APIList *pAPI;
I16 UseCnt;
};
/*****************************************************
*
* GUI_MEMDEV
*
******************************************************
*/
#if GUI_SUPPORT_MEMDEV
typedef struct /*GUI_MEMDEV*/ {
I16P x0, y0, XSize, YSize;
int NumColors;
unsigned BytesPerLine;
unsigned BitsPerPixel;
unsigned LayerIndex;
GUI_HMEM hUsage;
tLCDDEV_Color2Index* pfColor2Index;
tLCDDEV_Index2Color* pfIndex2Color;
tLCDDEV_GetIndexMask* pfGetIndexMask;
const tLCDDEV_APIList* pAPIList;
} GUI_MEMDEV;
#define GUI_MEMDEV_H2P(h) ((GUI_MEMDEV*)GUI_ALLOC_h2p(h))
void GUI_MEMDEV__CopyFromLCD (GUI_MEMDEV_Handle hMem);
void GUI_MEMDEV__GetRect (GUI_RECT* pRect);
unsigned GUI_MEMDEV__Color2Index (LCD_COLOR Color);
LCD_COLOR GUI_MEMDEV__Index2Color (int Index);
unsigned int GUI_MEMDEV__GetIndexMask(void);
GUI_MEMDEV_Handle GUI_MEMDEV__CreateFixed(int x0, int y0, int xsize, int ysize, int Flags
,const tLCDDEV_APIList * pMemDevAPI
,tLCDDEV_Color2Index* pfColor2Index
,tLCDDEV_Index2Color* pfIndex2Color
,tLCDDEV_GetIndexMask* pfGetIndexMask);
#endif
/*******************************************************************
*
* LCD_HL_ level defines
*
********************************************************************
*/
#if GUI_SUPPORT_AA
#define LCD_HL_DrawHLine GUI_Context.pLCD_HL->pfDrawHLine
#define LCD_HL_DrawPixel GUI_Context.pLCD_HL->pfDrawPixel
#else
#define LCD_HL_DrawHLine LCD_DrawHLine
#define LCD_HL_DrawPixel LCD_DrawPixel
#endif
/*********************************************************************
*
* Helper functions
*
***********************************************************************
*/
#define GUI_ZEROINIT(Obj) GUI_MEMSET(Obj, 0, sizeof(Obj))
int GUI_cos(int angle);
int GUI_sin(int angle);
void GL_DrawLine1(int x0, int y0, int x1, int y1);
extern const U32 GUI_Pow10[10];
/* GUIAALib.c --- direct anti-aliased drawing */
int GUI_AA_Init(int x0, int x1);
int GUI_AA_Init_HiRes(int x0, int x1);
void GUI_AA_Exit(void);
I16 GUI_AA_HiRes2Pixel(int HiRes);
void GL_FillCircleAA_HiRes(int x0, int y0, int r);
/* Conversion routines */
void GUI_AddHex (U32 v, U8 Len, char**ps);
void GUI_AddBin (U32 v, U8 Len, char**ps);
void GUI_AddDecMin (I32 v, char**ps);
void GUI_AddDec (I32 v, U8 Len, char**ps);
void GUI_AddDecShift(I32 v, U8 Len, U8 Shift, char**ps);
long GUI_AddSign (long v, char**ps);
int GUI_Long2Len (I32 v);
#define GUI_UC__GetCharSize(sText) GUI_Context.pUC_API->pfGetCharSize(sText)
#define GUI_UC__GetCharCode(sText) GUI_Context.pUC_API->pfGetCharCode(sText)
int GUI_UC__CalcSizeOfChar (U16 Char);
U16 GUI_UC__GetCharCodeInc (const char GUI_UNI_PTR ** ps);
int GUI_UC__NumChars2NumBytes(const char GUI_UNI_PTR * s, int NumChars);
int GUI_UC__NumBytes2NumChars(const char GUI_UNI_PTR * s, int NumBytes);
int GUI__GetLineNumChars (const char GUI_UNI_PTR *s, int MaxNumChars);
int GUI__GetNumChars (const char GUI_UNI_PTR *s);
int GUI__GetLineDistX (const char GUI_UNI_PTR *s, int Len);
int GUI__GetFontSizeY (void);
int GUI__HandleEOLine (const char GUI_UNI_PTR **ps);
void GUI__DispLine (const char GUI_UNI_PTR *s, int Len, const GUI_RECT* pr);
void GUI__AddSpaceHex (U32 v, U8 Len, char**ps);
void GUI__CalcTextRect (const char GUI_UNI_PTR* pText, const GUI_RECT* pTextRectIn, GUI_RECT* pTextRectOut, int TextAlign);
int GUI__WrapGetNumCharsDisp (const char GUI_UNI_PTR * pText, int xSize, GUI_WRAPMODE WrapMode);
int GUI__WrapGetNumCharsToNextLine (const char GUI_UNI_PTR * pText, int xSize, GUI_WRAPMODE WrapMode);
int GUI__WrapGetNumBytesToNextLine (const char GUI_UNI_PTR * pText, int xSize, GUI_WRAPMODE WrapMode);
void GUI__memset (U8 * p, U8 Fill, int NumBytes);
void GUI__memset16 (U16* p, U16 Fill, int NumWords);
int GUI__strlen (const char GUI_UNI_PTR * s);
int GUI__strcmp (const char GUI_UNI_PTR * s0, const char GUI_UNI_PTR * s1);
int GUI__strcmp_hp (GUI_HMEM hs0, const char GUI_UNI_PTR * s1);
/* Reading data routines */
U16 GUI__Read16(const U8 ** ppData);
U32 GUI__Read32(const U8 ** ppData);
/*********************************************************************
*
* 2d - GL
*
**********************************************************************
*/
void GL_DispChar (U16 c);
void GL_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1);
void GL_DrawBitmap (const GUI_BITMAP GUI_UNI_PTR * pBM, int x0, int y0);
void GL_DrawCircle (int x0, int y0, int r);
void GL_DrawEllipse (int x0, int y0, int rx, int ry);
void GL_DrawHLine (int y0, int x0, int x1);
void GL_DrawPolygon (const GUI_POINT* pPoints, int NumPoints, int x0, int y0);
void GL_DrawPoint (int x, int y);
void GL_DrawLineRel (int dx, int dy);
void GL_DrawLineTo (int x, int y);
void GL_DrawLine (int x0, int y0, int x1, int y1);
void GL_MoveTo (int x, int y);
void GL_FillCircle (int x0, int y0, int r);
void GL_FillCircleAA (int x0, int y0, int r);
void GL_FillEllipse (int x0, int y0, int rx, int ry);
void GL_FillPolygon (const GUI_POINT* pPoints, int NumPoints, int x0, int y0);
void GL_SetDefault (void);
/************************************************************
*
* Callback pointers for dynamic linkage
*
*************************************************************
Dynamic linkage pointers reduces configuration hassles.
*/
typedef int GUI_tfTimer(void);
typedef char GUI_CURSOR_tfTempHide (const GUI_RECT* pRect);
typedef void GUI_CURSOR_tfTempUnhide(void);
typedef int WM_tfHandlePID(void);
/************************************************************
*
* Cursors
*
*************************************************************
*/
extern GUI_CONST_STORAGE unsigned char GUI_Pixels_ArrowS[45];
extern GUI_CONST_STORAGE unsigned char GUI_Pixels_ArrowM[60];
extern GUI_CONST_STORAGE unsigned char GUI_Pixels_ArrowL[150];
extern GUI_CONST_STORAGE unsigned char GUI_Pixels_CrossS[33];
extern GUI_CONST_STORAGE unsigned char GUI_Pixels_CrossM[126];
extern GUI_CONST_STORAGE unsigned char GUI_Pixels_CrossL[248];
extern GUI_CONST_STORAGE unsigned char GUI_PixelsHeaderM[5 * 17];
extern GUI_CONST_STORAGE GUI_LOGPALETTE GUI_CursorPal;
extern GUI_CONST_STORAGE GUI_LOGPALETTE GUI_CursorPalI;
/************************************************************
*
* Text rotation
*
*************************************************************
*/
extern GUI_RECT GUI_RectDispString; /* Used by LCD_Rotate...() and GUI_DispStringInRect() */
/*********************************************************************
*
* Bitmap related functions
*
**********************************************************************
*/
int GUI_GetBitmapPixelIndex(const GUI_BITMAP GUI_UNI_PTR * pBMP, unsigned x, unsigned y);
GUI_COLOR GUI_GetBitmapPixelColor(const GUI_BITMAP GUI_UNI_PTR * pBMP, unsigned x, unsigned y);
#if defined(__cplusplus)
}
#endif
#endif /* Avoid multiple inclusion */
/************************************************************
*
* GUI_EXTERN declartions/definitions
*
*************************************************************
*/
#ifdef GL_CORE_C
#define GUI_EXTERN
#else
#if defined(__cplusplus)
#define GUI_EXTERN extern "C"
#else
#define GUI_EXTERN extern
#endif
#endif
GUI_EXTERN GUI_SADDR GUI_CONTEXT GUI_Context; /* Thread wide globals */
GUI_EXTERN GUI_SADDR char GUI_DecChar;
GUI_EXTERN GUI_tfTimer* GUI_pfTimerExec;
GUI_EXTERN WM_tfHandlePID* WM_pfHandlePID;
GUI_EXTERN void (*GUI_pfDispCharStyle)(U16 Char);
#if GUI_COMPILER_SUPPORTS_FP && GUI_SUPPORT_ROTATION
GUI_EXTERN const tLCD_APIList * GUI_pLCD_APIList; /* Used for rotating text */
#endif
#if GUI_SUPPORT_CURSOR
GUI_EXTERN GUI_CURSOR_tfTempHide* GUI_CURSOR_pfTempHide;
GUI_EXTERN GUI_CURSOR_tfTempUnhide* GUI_CURSOR_pfTempUnhide;
#endif
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
extern const GUI_UC_ENC_APILIST GUI__API_TableNone;
#if defined(__cplusplus)
}
#endif
#undef GUI_EXTERN
/*************************** End of file ****************************/
@@ -0,0 +1,95 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_VNC.h
Purpose : Publics for the VNC server
---------------------------END-OF-HEADER------------------------------
Attention : Do not modify this file ! If you do, you will not
be able do update to a later GUI version !
*/
#ifndef GUI_VNC_H
#define GUI_VNC_H
#include "GUI.h"
#include "LCD_Private.h" /* Required because the Driver API depends on Config currently */
#if GUI_SUPPORT_DEVICES
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* defines
*
**********************************************************************
*/
#define GUI_VNC_NO_ERROR 0
#define GUI_VNC_ERROR_MISC 1
#define GUI_VNC_ERROR_WRONGFORMAT 2
/*********************************************************************
*
* types
*
**********************************************************************
*/
typedef int (*GUI_tSend) (const U8 * pData, int len, void* pConnectInfo);
typedef int (*GUI_tReceive)( U8 * pData, int len, void* pConnectInfo);
typedef struct GUI_VNC_CONTEXT {
struct GUI_VNC_CONTEXT * pNext;
int LayerIndex;
/* Connection related data */
GUI_tSend pfSend;
GUI_tReceive pfReceive;
void* pConnectInfo;
U16 ServerIndex;
/* Display related info */
const tLCDDEV_APIList* pLayerAPIOrig;
tLCDDEV_APIList VNC_LayerAPI;
int x0Dirty, y0Dirty, x1Dirty, y1Dirty;
int XSize, YSize;
/* Status */
char ClientSupportsHextile;
char IsBigEndian;
} GUI_VNC_CONTEXT;
/*********************************************************************
*
* functions
*
**********************************************************************
*/
int GUI_VNC_Process (GUI_VNC_CONTEXT* pContext, GUI_tSend pfSend, GUI_tReceive pfReceive, void* pConnectInfo);
void GUI_VNC_AttachToLayer(GUI_VNC_CONTEXT* pContext, int LayerIndex);
int GUI_VNC_GetNumConnections(void);
/**** External routine to link the server to the system ... USER defined ! ****/
int GUI_VNC_X_StartServer(int LayerIndex, int ServerIndex);
#if defined(__cplusplus)
}
#endif
#endif /* GUI_SUPPORT_DEVICES */
#endif /* Avoid multiple inclusion */
/*************************** End of file ****************************/
@@ -0,0 +1,79 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : GUI_X.h
Purpose : Declarations for GUI_X module
---------------------------END-OF-HEADER------------------------------
Attention : Do not modify this file ! If you do, you will not
be able do update to a later GUI version !
*/
#ifndef GUI_X_H
#define GUI_X_H
#include "GUI.h"
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/************************************************************
*
* GUI_X_
*
* externals, to be defined by application
*
*************************************************************
The externals defined below should be defined by the
application. They are per default contained in the module
GUI_X.c.
Note that a lot if not all of these are not required in most target
systems.
For this module, samples are available for configurations
with or without operating system.
*/
/**** Init ****/
void GUI_X_Init(void);
/**** ExecIdle - called if nothing else is left to do ****/
void GUI_X_ExecIdle(void);
/**** Timing routines - required for blinking ****/
int GUI_X_GetTime(void);
void GUI_X_Delay(int Period);
/**** Multitask routines - required only if multitasking is used (#define GUI_OS 1) ****/
void GUI_X_Unlock(void);
void GUI_X_Lock(void);
U32 GUI_X_GetTaskId(void);
void GUI_X_InitOS(void);
/**** Event driving (optional with multitasking) ****/
void GUI_X_WaitEvent(void);
void GUI_X_SignalEvent(void);
/**** Recording (logs/warnings and errors) - required only for higher levels ****/
void GUI_X_Log(const char *s);
void GUI_X_Warn(const char *s);
void GUI_X_ErrorOut(const char *s);
#if defined(__cplusplus)
}
#endif
#endif /* ifdef GUI_X_H */
/*************************** End of file ****************************/
@@ -0,0 +1,141 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : HEADER.h
Purpose : HEADER include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef HEADER_H
#define HEADER_H
#include "GUI.h"
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM HEADER_Handle;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
HEADER_Handle HEADER_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, int SpecialFlags);
HEADER_Handle HEADER_CreateIndirect(const GUI_WIDGET_CREATE_INFO * pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK * cb);
HEADER_Handle HEADER_CreateAttached(WM_HWIN hParent, int Id, int SpecialFlags);
HEADER_Handle HEADER_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
#define HEADER_EnableMemdev(hObj) WM_EnableMemdev (hObj)
#define HEADER_DisableMemdev(hObj) WM_DisableMemdev (hObj)
#define HEADER_Delete(hObj) WM_DeleteWindow (hObj)
#define HEADER_Paint(hObj) WM_Paint (hObj)
#define HEADER_Invalidate(hObj) WM_InvalidateWindow(hObj)
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
/* Set defaults */
GUI_COLOR HEADER_SetDefaultBkColor (GUI_COLOR Color);
const GUI_CURSOR GUI_UNI_PTR * HEADER_SetDefaultCursor (const GUI_CURSOR * pCursor);
const GUI_FONT GUI_UNI_PTR * HEADER_SetDefaultFont (const GUI_FONT GUI_UNI_PTR * pFont);
int HEADER_SetDefaultBorderH (int Spacing);
int HEADER_SetDefaultBorderV (int Spacing);
GUI_COLOR HEADER_SetDefaultTextColor(GUI_COLOR Color);
/* Get defaults */
GUI_COLOR HEADER_GetDefaultBkColor (void);
const GUI_CURSOR GUI_UNI_PTR * HEADER_GetDefaultCursor (void);
const GUI_FONT GUI_UNI_PTR * HEADER_GetDefaultFont (void);
int HEADER_GetDefaultBorderH (void);
int HEADER_GetDefaultBorderV (void);
GUI_COLOR HEADER_GetDefaultTextColor(void);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
void HEADER_AddItem (HEADER_Handle hObj, int Width, const char * s, int Align);
void HEADER_DeleteItem (HEADER_Handle hObj, unsigned Index);
int HEADER_GetHeight (HEADER_Handle hObj);
int HEADER_GetItemWidth (HEADER_Handle hObj, unsigned int Index);
int HEADER_GetNumItems (HEADER_Handle hObj);
void HEADER_SetBitmap (HEADER_Handle hObj, unsigned int Index, const GUI_BITMAP * pBitmap);
void HEADER_SetBitmapEx (HEADER_Handle hObj, unsigned int Index, const GUI_BITMAP * pBitmap, int x, int y);
void HEADER_SetBkColor (HEADER_Handle hObj, GUI_COLOR Color);
void HEADER_SetBMP (HEADER_Handle hObj, unsigned int Index, const void * pBitmap);
void HEADER_SetBMPEx (HEADER_Handle hObj, unsigned int Index, const void * pBitmap, int x, int y);
void HEADER_SetFont (HEADER_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont);
void HEADER_SetHeight (HEADER_Handle hObj, int Height);
void HEADER_SetTextAlign (HEADER_Handle hObj, unsigned int Index, int Align);
void HEADER_SetItemText (HEADER_Handle hObj, unsigned int Index, const char * s);
void HEADER_SetItemWidth (HEADER_Handle hObj, unsigned int Index, int Width);
void HEADER_SetScrollPos (HEADER_Handle hObj, int ScrollPos);
void HEADER_SetStreamedBitmap (HEADER_Handle hObj, unsigned int Index, const GUI_BITMAP_STREAM * pBitmap);
void HEADER_SetStreamedBitmapEx(HEADER_Handle hObj, unsigned int Index, const GUI_BITMAP_STREAM * pBitmap, int x, int y);
void HEADER_SetTextColor (HEADER_Handle hObj, GUI_COLOR Color);
/*********************************************************************
*
* Macros for compatibility with older versions
*
**********************************************************************
*/
#ifdef HEADER_SPACING_H
#define HEADER_BORDER_H_DEFAULT HEADER_SPACING_H
#endif
#ifdef HEADER_SPACING_V
#define HEADER_BORDER_V_DEFAULT HEADER_SPACING_V
#endif
#define HEADER_SetDefaultSpacingH(Value) HEADER_SetDefaultBorderH(Value)
#define HEADER_SetDefaultSpacingV(Value) HEADER_SetDefaultBorderV(Value)
#define HEADER_GetDefaultSpacingH() HEADER_GetDefaultBorderH()
#define HEADER_GetDefaultSpacingV() HEADER_GetDefaultBorderV()
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* HEADER_H */
@@ -0,0 +1,84 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : HEADER_Private.h
Purpose : Private HEADER include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef HEADER_PRIVATE_H
#define HEADER_PRIVATE_H
#include "WIDGET.h"
#include "HEADER.h"
#include "WM.h"
#include "GUI_ARRAY.h"
#if GUI_WINSUPPORT
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define HEADER_ID 0x4567 /* Magic numer, should be unique if possible */
#define HEADER_H2P(h) (HEADER_Obj*) WM_H2P(h)
#if GUI_DEBUG_LEVEL > 1
#define HEADER_ASSERT_IS_VALID_PTR(p) DEBUG_ERROROUT_IF(p->DebugId != HEADER_ID, "xxx.c: Wrong handle type or Object not init'ed")
#define HEADER_INIT_ID(p) p->DebugId = HEADER_ID
#define HEADER_DEINIT_ID(p) p->DebugId = HEADER_ID+1
#else
#define HEADER_ASSERT_IS_VALID_PTR(p)
#define HEADER_INIT_ID(p)
#define HEADER_DEINIT_ID(p)
#endif
/*********************************************************************
*
* Object definition
*
**********************************************************************
*/
typedef struct {
int Width;
I16 Align;
WM_HMEM hDrawObj;
char acText[1];
} HEADER_COLUMN;
typedef struct {
WIDGET Widget;
GUI_COLOR BkColor;
GUI_COLOR TextColor;
GUI_ARRAY Columns;
int CapturePosX;
int CaptureItem;
int ScrollPos;
const GUI_FONT GUI_UNI_PTR * pFont;
#if (GUI_DEBUG_LEVEL > 1)
int DebugId;
#endif
} HEADER_Obj;
void HEADER__SetDrawObj(HEADER_Handle hObj, unsigned Index, GUI_DRAW_HANDLE hDrawObj);
#endif /* GUI_WINSUPPORT */
#endif /* Avoid multiple inclusion */
@@ -0,0 +1,538 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LCD.h
Purpose : Declares LCD interface functions
----------------------------------------------------------------------
*/
#ifndef LCD_H
#define LCD_H
#include "GUI_ConfDefaults.h" /* Used for GUI_UNI_PTR */
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*
********************************************************************
* *
* Basic type defines *
* *
********************************************************************
The follwing are defines for types used in the LCD-driver and the
GUI layers on top of that. Since "C" does not provide data types of
fixed length which are identical on all platforms, this is done here.
For most 16/32 controllers, the settings will work fine. However, if
you have similar defines in other sections of your program, you might
want to change or relocate these defines, e.g. in a TYPE.h file.
*/
#define I8 signed char
#define U8 unsigned char /* unsigned 8 bits. */
#define I16 signed short /* signed 16 bits. */
#define U16 unsigned short /* unsigned 16 bits. */
#define I32 signed long /* signed 32 bits. */
#define U32 unsigned long /* unsigned 32 bits. */
#define I16P I16 /* signed 16 bits OR MORE ! */
#define U16P U16 /* unsigned 16 bits OR MORE ! */
/*
********************************************************************
* *
* Settings for windows simulation *
* *
********************************************************************
Some settings in the configuration may conflict with the values required
in the Simulation. This is why we ignore the target settings for data
types and use the correct settings for the simulation.
(U32 could be defined as long, which would yield a 64 bit type on
the PC)
*/
#ifdef WIN32
#pragma warning( disable : 4244 ) // Disable warning messages in simulation
#pragma warning( disable : 4761 ) // Disable warning "integral size mismatch in argument; conversion supplied"
#endif
/* *************************************************************
* *
* Constants *
* *
*************************************************************
*/
#define LCD_ERR0 (0x10)
#define LCD_ERR_CONTROLLER_NOT_FOUND (LCD_ERR0+1)
#define LCD_ERR_MEMORY (LCD_ERR0+2)
/*
*********************************
* *
* Drawing modes *
* *
*********************************
*/
#define LCD_DRAWMODE_NORMAL (0)
#define LCD_DRAWMODE_XOR (1<<0)
#define LCD_DRAWMODE_TRANS (1<<1)
#define LCD_DRAWMODE_REV (1<<2)
/* *************************************************************
* *
* Typedefs *
* *
*************************************************************
*/
typedef int LCD_DRAWMODE;
typedef U32 LCD_COLOR;
/********************************************************
*
* Data structures
*
*********************************************************
*/
typedef struct { I16P x,y; } GUI_POINT;
typedef struct { I16 x0,y0,x1,y1; } LCD_RECT;
/*typedef struct { GUI_POINT P0, P1; } LCD_RECT; */
typedef struct {
int NumEntries;
char HasTrans;
const LCD_COLOR GUI_UNI_PTR * pPalEntries;
} LCD_LOGPALETTE;
/* This is used for the simulation only ! */
typedef struct {
int x,y;
unsigned char KeyStat;
} LCD_tMouseState;
/*********************************************************************
*
* Index2Color
This function needs to be int the public part of the software
since it is needed by the simulation. Most other driver
functions are hidden in the private header file.
*/
typedef LCD_COLOR tLCDDEV_Index2Color (int Index);
typedef unsigned int tLCDDEV_Color2Index (LCD_COLOR Color);
typedef unsigned int tLCDDEV_GetIndexMask (void);
LCD_COLOR LCD_L0_Index2Color (int Index);
LCD_COLOR LCD_L0_1_Index2Color(int Index);
LCD_COLOR LCD_L0_2_Index2Color(int Index);
LCD_COLOR LCD_L0_3_Index2Color(int Index);
LCD_COLOR LCD_L0_4_Index2Color(int Index);
unsigned int LCD_L0_Color2Index (LCD_COLOR Color);
unsigned int LCD_L0_1_Color2Index(LCD_COLOR Color);
unsigned int LCD_L0_2_Color2Index(LCD_COLOR Color);
unsigned int LCD_L0_3_Color2Index(LCD_COLOR Color);
unsigned int LCD_L0_4_Color2Index(LCD_COLOR Color);
unsigned int LCD_L0_GetIndexMask (void);
unsigned int LCD_L0_1_GetIndexMask(void);
unsigned int LCD_L0_2_GetIndexMask(void);
unsigned int LCD_L0_3_GetIndexMask(void);
unsigned int LCD_L0_4_GetIndexMask(void);
/*********************************************************************
*
* Color conversion API tables
*/
typedef struct {
tLCDDEV_Color2Index* pfColor2Index;
tLCDDEV_Index2Color* pfIndex2Color;
tLCDDEV_GetIndexMask* pfGetIndexMask;
} LCD_API_COLOR_CONV;
extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1;
extern const LCD_API_COLOR_CONV LCD_API_ColorConv_2;
extern const LCD_API_COLOR_CONV LCD_API_ColorConv_4;
extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8666;
#define GUI_COLOR_CONV_1 &LCD_API_ColorConv_1
#define GUI_COLOR_CONV_2 &LCD_API_ColorConv_2
#define GUI_COLOR_CONV_4 &LCD_API_ColorConv_4
#define GUI_COLOR_CONV_8666 &LCD_API_ColorConv_8666
/*********************************************************************
*
* LCDDEV function table
*
**********************************************************************
Below the routines which need to in an LCDDEV routine table are
defined. All of these routines have to be in the low-level driver
(LCD_L0) or in the memory device which can be used to replace the
driver.
The one exception to this is the SetClipRect routine, which would
be identical for all drivers and is therefor contained in the
level above (LCD).
*/
typedef void tLCDDEV_DrawHLine (int x0, int y0, int x1);
typedef void tLCDDEV_DrawVLine (int x , int y0, int y1);
typedef void tLCDDEV_FillRect (int x0, int y0, int x1, int y1);
typedef unsigned int tLCDDEV_GetPixelIndex(int x, int y);
typedef void tLCDDEV_SetPixelIndex(int x, int y, int ColorIndex);
typedef void tLCDDEV_XorPixel (int x, int y);
typedef void tLCDDEV_FillPolygon (const GUI_POINT* pPoints, int NumPoints, int x0, int y0);
typedef void tLCDDEV_FillPolygonAA(const GUI_POINT* pPoints, int NumPoints, int x0, int y0);
typedef void tLCDDEV_GetRect (LCD_RECT*pRect);
typedef int tLCDDEV_Init (void);
typedef void tLCDDEV_On (void);
typedef void tLCDDEV_Off (void);
typedef void tLCDDEV_SetLUTEntry (U8 Pos, LCD_COLOR color);
/*********************************************************************
*
* Memory device API tables
*/
#if GUI_COMPILER_SUPPORTS_FP
typedef struct tLCDDEV_APIList_struct tLCDDEV_APIList;
#endif
typedef void tLCDDEV_DrawBitmap (int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff,
const void* pTrans); /* Really LCD_PIXELINDEX, but is void to avoid compiler warnings*/
struct tLCDDEV_APIList_struct {
tLCDDEV_Color2Index* pfColor2Index;
tLCDDEV_Index2Color* pfIndex2Color;
tLCDDEV_GetIndexMask* pfGetIndexMask;
tLCDDEV_DrawBitmap* pfDrawBitmap;
tLCDDEV_DrawHLine* pfDrawHLine;
tLCDDEV_DrawVLine* pfDrawVLine;
tLCDDEV_FillRect* pfFillRect;
tLCDDEV_GetPixelIndex* pfGetPixelIndex;
tLCDDEV_GetRect* pfGetRect;
tLCDDEV_SetPixelIndex* pfSetPixelIndex;
tLCDDEV_XorPixel* pfXorPixel;
tLCDDEV_SetLUTEntry* pfSetLUTEntry;
#if GUI_SUPPORT_MEMDEV
tLCDDEV_FillPolygon* pfFillPolygon;
tLCDDEV_FillPolygonAA* pfFillPolygonAA;
const tLCDDEV_APIList* pMemDevAPI;
unsigned BitsPerPixel;
#endif
};
#if GUI_COMPILER_SUPPORTS_FP
extern const struct tLCDDEV_APIList_struct GUI_MEMDEV__APIList1;
extern const struct tLCDDEV_APIList_struct GUI_MEMDEV__APIList8;
extern const struct tLCDDEV_APIList_struct GUI_MEMDEV__APIList16;
#define GUI_MEMDEV_APILIST_1 &GUI_MEMDEV__APIList1
#define GUI_MEMDEV_APILIST_8 &GUI_MEMDEV__APIList8
#define GUI_MEMDEV_APILIST_16 &GUI_MEMDEV__APIList16
#endif
/* *************************************************************
* *
* Defines *
* *
* for device capabilities *
* *
*************************************************************
The following is the list of device capabilities which can, but do
not have to be implemented in the driver. This way the driver can be
enhanced in the future without affecting the driver interface,
keeping older drivers compatible.
More DevCaps can always be added in the future, as older drivers
are guaranteed to return 0 for all unimplemented features or queries.
The values below define the legal parameters to the LCD_GetDeviceCaps
and the LCD_GetpCapFunc routines.
*/
#define LCD_DEVCAP_NUMCOLORS 0x0 /* Quest number of colors
which LCD can display */
#define LCD_DEVCAP_XSIZE 0x1 /* Quest horiz. res. of display */
#define LCD_DEVCAP_YSIZE 0x2 /* Quest vert. res. of display */
#define LCD_DEVCAP_VXSIZE 0x3 /* Quest vert. res. of virtual disp.*/
#define LCD_DEVCAP_VYSIZE 0x4 /* Quest vert. res. of virtual disp.*/
#define LCD_DEVCAP_XORG 0x5 /* X-origin ... usually 0 */
#define LCD_DEVCAP_YORG 0x6 /* Y-origin ... usually 0 */
#define LCD_DEVCAP_CONTROLLER 0x7 /* LCD Controller (Numerical) */
#define LCD_DEVCAP_BITSPERPIXEL 0x8 /* Bits per pixel ... 1/2/4/8 */
#define LCD_DEVCAP_NUMPAGES 0x10 /* Quest number of pages of display */
#define LCD_DEVCAP_COLOR 0x1000 /* Quest Color[0]
0x1001 Quest Color[1]
0x1002 Quest Color[2]
... */
/* The next 4095 entries are reserved so up to 4096 colors
can be queried ...*/
int LCD_GetXSize(void);
int LCD_GetXSize_1(void);
int LCD_GetXSizeEx(int Index);
int LCD_GetYSize(void);
int LCD_GetYSize_1(void);
int LCD_GetYSizeEx(int Index);
int LCD_GetVXSize(void);
int LCD_GetVXSize_1(void);
int LCD_GetVXSizeEx(int Index);
int LCD_GetVYSize(void);
int LCD_GetVYSize_1(void);
int LCD_GetVYSizeEx(int Index);
U32 LCD_GetNumColors(void);
U32 LCD_GetNumColors_1(void);
U32 LCD_GetNumColorsEx(int Index);
int LCD_GetBitsPerPixel(void);
int LCD_GetBitsPerPixel_1(void);
int LCD_GetBitsPerPixelEx(int Index);
int LCD_GetFixedPalette(void);
int LCD_GetFixedPalette_1(void);
I32 LCD_GetFixedPaletteEx(int Index);
int LCD_GetXMag(void);
int LCD_GetXMag_1(void);
int LCD_GetXMagEx(int Index);
int LCD_GetYMag(void);
int LCD_GetYMag_1(void);
int LCD_GetYMagEx(int Index);
int LCD_GetMirrorXEx(int LayerIndex);
int LCD_GetMirrorYEx(int LayerIndex);
int LCD_GetSwapXYEx(int LayerIndex);
int LCD_GetSwapRBEx(int LayerIndex);
int LCD_GetDeltaModeEx(int LayerIndex);
int LCD_GetBitsPerPixel_L0Ex(int LayerIndex);
int LCD_GetNumLayers(void);
#define LCD_GetNumDisplays() LCD_GetNumLayers()
#define LCD_GET_XSIZE() LCD_GetXSize()
#define LCD_GET_YSIZE() LCD_GetYSize()
#define LCD_GET_VXSIZE() LCD_GetVXSize()
#define LCD_GET_VYSIZE() LCD_GetVYSize()
#define LCD_GET_NUMCOLORS() LCD_GetNumColors()
#define LCD_GET_BITSPERPIXEL() LCD_GetBitsPerPixel()
/*********************************************************************
*
* LCD_CLIP function table
*
**********************************************************************
*/
typedef void tLCD_HL_DrawHLine (int x0, int y0, int x1);
typedef void tLCD_HL_DrawPixel (int x0, int y0);
typedef struct {
tLCD_HL_DrawHLine* pfDrawHLine;
tLCD_HL_DrawPixel* pfDrawPixel;
} tLCD_HL_APIList;
void LCD_DrawHLine(int x0, int y0, int x1);
void LCD_DrawPixel(int x0, int y0);
void LCD_DrawVLine (int x, int y0, int y1);
/*********************************************************************
*
* Declarations for LCD_
*
**********************************************************************
*/
void LCD_SetClipRectEx(const LCD_RECT* pRect);
void LCD_SetClipRectMax(void);
/* Get device capabilities (0 if not supported) */
I32 LCD_GetDevCap(int Index);
/* Initialize LCD using config-paramters */
int LCD_Init(void);
void LCD_SetBkColor (LCD_COLOR Color); /* Set background color */
void LCD_SetColor (LCD_COLOR Color); /* Set foreground color */
void LCD_SetPixelIndex(int x, int y, int ColorIndex);
/* Palette routines (Not available on all drivers) */
void LCD_InitLUT(void);
/* Decompressors */
//typedef void tfDrawSpecialBitmap(int x0,int y0,int xsize, int ysize, const U8 GUI_UNI_PTR *pPixel, const LCD_LOGPALETTE GUI_UNI_PTR * pLogPal, int xMag, int yMag);
void LCD_DrawBitmap_RLE8(int x0,int y0,int xsize, int ysize, const U8 GUI_UNI_PTR *pPixel, const LCD_LOGPALETTE GUI_UNI_PTR * pLogPal, int xMag, int yMag);
void LCD_DrawBitmap_RLE4(int x0,int y0,int xsize, int ysize, const U8 GUI_UNI_PTR *pPixel, const LCD_LOGPALETTE GUI_UNI_PTR * pLogPal, int xMag, int yMag);
void LCD_DrawBitmap_565 (int x0,int y0,int xsize, int ysize, const U8 GUI_UNI_PTR *pPixel, const LCD_LOGPALETTE GUI_UNI_PTR * pLogPal, int xMag, int yMag);
void LCD_DrawBitmap_M565(int x0,int y0,int xsize, int ysize, const U8 GUI_UNI_PTR *pPixel, const LCD_LOGPALETTE GUI_UNI_PTR * pLogPal, int xMag, int yMag);
LCD_DRAWMODE LCD_SetDrawMode (LCD_DRAWMODE dm);
void LCD_SetColorIndex(int Index);
void LCD_SetBkColorIndex(int Index);
void LCD_FillRect(int x0, int y0, int x1, int y1);
typedef void tLCD_SetPixelAA(int x, int y, U8 Intens);
void LCD_SetPixelAA(int x, int y, U8 Intens);
void LCD_SetPixelAA_NoTrans(int x, int y, U8 Intens);
LCD_COLOR LCD_AA_MixColors(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
LCD_COLOR LCD_MixColors256(LCD_COLOR Color, LCD_COLOR BkColor, unsigned Intens);
LCD_COLOR LCD_GetPixelColor(int x, int y); /* Get RGB color of pixel */
unsigned int LCD_GetPixelIndex(int x, int y);
int LCD_GetBkColorIndex (void);
int LCD_GetColorIndex (void);
/*********************************************************************
*
* Optional support for rotatation
*
**********************************************************************
*/
#if GUI_SUPPORT_ROTATION
typedef void tLCD_DrawBitmap(int x0, int y0, int xsize, int ysize,
int xMul, int yMul, int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pPixel, const void * pTrans);
typedef void tRect2TextRect (LCD_RECT * pRect);
struct tLCD_APIList_struct {
tLCD_DrawBitmap * pfDrawBitmap;
tRect2TextRect * pfRect2TextRect;
};
typedef struct tLCD_APIList_struct tLCD_APIList;
extern tLCD_APIList LCD_APIListCCW;
extern tLCD_APIList LCD_APIListCW;
extern tLCD_APIList LCD_APIList180;
#define GUI_ROTATION tLCD_APIList
#define GUI_ROTATE_CCW &LCD_APIListCCW
#define GUI_ROTATE_CW &LCD_APIListCW
#define GUI_ROTATE_180 &LCD_APIList180
#define GUI_ROTATE_0 0
#endif
/* *************************************************************
* *
* LCD publics not used by GUI *
* *
*************************************************************
The following functions can, but do not have to be defined in the LCD driver
as they are not used by the GUI level.
*/
#define LCD_On LCD_L0_On
#define LCD_Off LCD_L0_Off
#define LCD_ReInit LCD_L0_ReInit
#define LCD_SetLUTEntry LCD_L0_SetLUTEntry
#define LCD_CC_UNLOCK (0) /* Default mode: Cache is transparent */
#define LCD_CC_LOCK (1) /* Cache is locked, no write operations */
#define LCD_CC_FLUSH (2) /* Flush cache, do not change mode */
U8 LCD_L0_ControlCache(U8 mode);
U8 LCD_L0_1_ControlCache(U8 mode);
U8 LCD_L0_2_ControlCache(U8 mode);
U8 LCD_L0_3_ControlCache(U8 mode);
U8 LCD_L0_4_ControlCache(U8 mode);
void LCD_L0_Refresh(void);
void LCD_L0_1_Refresh(void);
void LCD_L0_2_Refresh(void);
void LCD_L0_3_Refresh(void);
void LCD_L0_4_Refresh(void);
/* Check if controller is still properly initialized */
int LCD_L0_CheckInit(void); /* returns if init is still O.K.
by reading all available registers of
Display controller.
0: Init O.K.
*/
#define LCD_ControlCache LCD_L0_ControlCache
/*
******************************************
* *
* Support for paging *
* *
******************************************
*/
int LCD_SelPage (int NewPage); /* returns formerly sel. page */
int LCD_ShowPage (int NewPage); /* sets / returns visible page */
int LCD_GetSelPage (void); /* returns selected page */
int LCD_GetVisPage (void); /* returns visible page */
/* *************************************************************
* *
* LCD imports *
* (for routines in LCDColor) *
* *
*************************************************************
*/
int LCD_Color2Index (LCD_COLOR Color);
LCD_COLOR LCD_Index2Color (int Index);
LCD_COLOR LCD_Index2ColorEx (int i, unsigned int LayerIndex);
/*********************************************************************
*
* LCD_X_...
*
**********************************************************************
*/
void LCD_X_Init(void);
void LCD_X_On (void);
void LCD_X_Off (void);
char LCD_X_Read00(void);
char LCD_X_Read01(void);
void LCD_X_Write00(char c);
void LCD_X_Write01(char c);
void LCD_X_WriteM01(char * pData, int NumBytes);
#if defined(__cplusplus)
}
#endif
#endif /* LCD_H */
/*************************** End of file ****************************/
@@ -0,0 +1,90 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LCDSIM.h
Purpose : Declares LCD interface functions
----------------------------------------------------------------------
*/
#ifndef LCDSIM_H
#define LCDSIM_H
/************************************************************
*
* defines
*
*************************************************************
*/
#define LCDSIM_MAX_DISPLAYS 5
/************************************************************
*
* LCDSIM_ General declarations
*
*************************************************************
*/
char* LCDSIM_Init(void);
int LCDSIM_GetMouseState(LCD_tMouseState *pState);
void LCDSIM_SetMouseState(int x, int y, int KeyStat);
void LCDSIM_CheckMouseState(void);
int LCDSIM_SaveBMP (const char * sFileName);
int LCDSIM_SaveBMPEx (const char * sFileName, int x0, int y0, int xSize, int ySize);
int LCDSIM_SaveSBMP (const char * sFileName);
int LCDSIM_SaveSBMPEx(const char * sFileName, int x0, int y0, int xSize, int ySize);
/************************************************************
*
* LCDSIM_ Functions for each display
*
*************************************************************
*/
void LCDSIM_FillRect(int x0, int y0, int x1, int y1, int Index, int LayerIndex);
int LCDSIM_GetModifyCnt(int LayerIndex);
int LCDSIM_GetModifyCntInfo(int LayerIndex);
int LCDSIM_GetPixelColor(int x, int y, int LayerIndex);
int LCDSIM_GetPixelIndex(int x, int y, int LayerIndex);
int LCDSIM_Index2Color(int Index, int LayerIndex);
int LCDSIM_RLUT_GetPixelIndex(int x, int y, int LayerIndex);
void LCDSIM_RLUT_SetPixelIndex(int x, int y, int Index, int LayerIndex);
void LCDSIM_SetLUTEntry(U8 Pos, LCD_COLOR color, int LayerIndex);
void LCDSIM_SetPixelIndex(int x, int y, int Index, int LayerIndex);
void LCDSIM_SetPixelColor(int x, int y, LCD_COLOR PixelColor, int LayerIndex);
void LCDSIM_SetSubPixel(int x, int y, U8 Value, int LayerIndex);
void LCDSIM_SetSubPixelPhys(int xPhys, int yPhys, int Index, int LayerIndex);
void LCDSIM_SetPixelPhys(int x, int y, int Index, int LayerIndex);
int LCDSIM_GetPixelPhys(int xPhys, int yPhys, int LayerIndex);
void LCDSIM_FillRectPhys(int x0Phys, int y0Phys, int x1Phys, int y1Phys, int Index, int LayerIndex);
/************************************************************
*
* LCDSIM_ Declarations for painting in windows program
*
*************************************************************
*/
#if defined(_WINDOWS_) | defined(_WINDOWS_H) /* if windows.h has already been included */
void LCDSIM_Paint (HWND hWnd);
void LCDSIM_PaintEx(HWND hWnd, LPRECT pRectDest, LPRECT pRectSrc);
void LCDSIM_PaintAt(HWND hWnd, int x, int y);
#endif
#endif /* LCD_H */
@@ -0,0 +1,756 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LCD_ConfDefaults.h
Purpose : Valid LCD configuration and defaults
----------------------------------------------------------------------
*/
#ifndef LCD_CONFIG_DEFAULTS_H
#define LCD_CONFIG_DEFAULTS_H
#include "uCGUI\Config\LCDConf.h" /* Configuration header file */
#include "GUI_ConfDefaults.h" /* Needed for GUI_NUM_LAYERS */
/*********************************************************************
*
* Map the defines for this controller
*
* #define LCD_<xxx> LCD_<xxx>_0
*
**********************************************************************
*/
#ifdef LCD_CONTROLLER_0
#define LCD_CONTROLLER LCD_CONTROLLER_0
#endif
#ifdef LCD_XSIZE_0
#define LCD_XSIZE LCD_XSIZE_0
#endif
#ifdef LCD_YSIZE_0
#define LCD_YSIZE LCD_YSIZE_0
#endif
#ifdef LCD_BITSPERPIXEL_0
#define LCD_BITSPERPIXEL LCD_BITSPERPIXEL_0
#endif
#ifdef LCD_VYSIZE_0
#define LCD_VYSIZE LCD_VYSIZE_0
#endif
#ifdef LCD_MIRROR_X_0
#define LCD_MIRROR_X LCD_MIRROR_X_0
#endif
#ifdef LCD_MIRROR_Y_0
#define LCD_MIRROR_Y LCD_MIRROR_Y_0
#endif
#ifdef LCD_SWAP_XY_0
#define LCD_SWAP_XY LCD_SWAP_XY_0
#endif
#ifdef LCD_CACHE_CONTROL_0
#define LCD_CACHE_CONTROL LCD_CACHE_CONTROL_0
#endif
#ifdef LCD_FIRSTSEG0_0
#define LCD_FIRSTSEG0 LCD_FIRSTSEG0_0
#endif
#ifdef LCD_LASTSEG0_0
#define LCD_LASTSEG0 LCD_LASTSEG0_0
#endif
#ifdef LCD_FIRSTCOM0_0
#define LCD_FIRSTCOM0 LCD_FIRSTCOM0_0
#endif
#ifdef LCD_LASTCOM0_0
#define LCD_LASTCOM0 LCD_LASTCOM0_0
#endif
#ifdef LCD_BITSPERPIXEL_L0_0
#define LCD_BITSPERPIXEL_L0 LCD_BITSPERPIXEL_0
#endif
#ifdef LCD_DELTA_MODE_0
#define LCD_DELTA_MODE LCD_DELTA_MODE_0
#endif
#ifdef LCD_XORG0_0
#define LCD_XORG0 LCD_XORG0_0
#endif
#ifdef LCD_YORG0_0
#define LCD_YORG0 LCD_YORG0_0
#endif
#ifdef LCD_FIXEDPALETTE_0
#define LCD_FIXEDPALETTE LCD_FIXEDPALETTE_0
#endif
#ifdef LCD_CACHE_0
#ifdef LCD_CACHE
#undef LCD_CACHE
#endif
#define LCD_CACHE LCD_CACHE_0
#endif
#ifdef LCD_CHECKBUSY_0
#ifdef LCD_CHECKBUSY
#undef LCD_CHECKBUSY
#endif
#define LCD_CHECKBUSY LCD_CHECKBUSY_0
#endif
#ifdef LCD_SWAP_BYTE_ORDER_0
#define LCD_SWAP_BYTE_ORDER LCD_SWAP_BYTE_ORDER_0
#endif
#ifdef LCD_SWAP_RB_0
#define LCD_SWAP_RB LCD_SWAP_RB_0
#endif
#ifdef LCD_PHYSCOLORS_0
#define LCD_PHYSCOLORS LCD_PHYSCOLORS_0
#endif
#ifndef LCD_ALLOW_NON_OPTIMIZED_MODE
#define LCD_ALLOW_NON_OPTIMIZED_MODE 0
#endif
/*********************************************************************
*
* Some error checking
*
**********************************************************************
*/
#ifndef LCD_CONTROLLER
#error LCD_CONTROLLER not defined !
#endif
/*******************************************************************
*
* Defaults for config switches
*
********************************************************************
*/
#ifndef LCD_NUM_CONTROLLERS
#define LCD_NUM_CONTROLLERS (1)
#endif
#ifndef LCD_NUM_COLORS
#define LCD_NUM_COLORS (1L<<LCD_BITSPERPIXEL)
#endif
/*********************************************************************
*
* Map the defines for controller 0 to general defines
*
**********************************************************************
*/
/* Allow use of multiple physical lines for one logical line ...
Used for delta-type LCDs, where value should be 2 */
#ifndef LCD_YMAG
#define LCD_YMAG 1
#endif
#ifndef LCD_XMAG
#define LCD_XMAG 1
#endif
#ifndef LCD_VXSIZE
#define LCD_VXSIZE (LCD_XSIZE*LCD_XMAG) /* virtual x-size */
#endif
#ifndef LCD_VYSIZE
#define LCD_VYSIZE (LCD_YSIZE*LCD_YMAG) /* virtual y-size */
#endif
#ifndef LCD_SWAP_BYTE_ORDER
#define LCD_SWAP_BYTE_ORDER (0) /* only for 16 bit bus, default is not swapped */
#endif
#ifndef LCD_MAX_LOG_COLORS
#define LCD_MAX_LOG_COLORS (256)
#endif
/* Optionally swap red and blue components */
#ifndef LCD_SWAP_RB
#define LCD_SWAP_RB 0
#endif
#if !defined (LCD_CONTROLLER) && defined (LCD_CONTROLLER_0)
#define LCD_CONTROLLER LCD_CONTROLLER_0
#endif
#if !defined (LCD_XSIZE) && defined (LCD_XSIZE_0)
#define LCD_XSIZE LCD_XSIZE_0
#endif
#if !defined (LCD_YSIZE) && defined (LCD_YSIZE_0)
#define LCD_YSIZE LCD_YSIZE_0
#endif
#if !defined (LCD_BITSPERPIXEL) && defined (LCD_BITSPERPIXEL_0)
#define LCD_BITSPERPIXEL LCD_BITSPERPIXEL_0
#endif
#if !defined (LCD_VYSIZE) && defined (LCD_VYSIZE_0)
#define LCD_VYSIZE LCD_VYSIZE_0
#endif
/*********************************************************************
*
* Defaults for Display 0 (first display)
*
**********************************************************************
*/
#ifndef LCD_MIRROR_X
#define LCD_MIRROR_X (0) /* If active: X -> -X */
#endif
#ifndef LCD_MIRROR_Y
#define LCD_MIRROR_Y (0) /* If active: Y -> -Y */
#endif
#ifndef LCD_SWAP_XY
#define LCD_SWAP_XY (0) /* If active: X <-> Y */
#endif
#ifndef LCD_BITSPERPIXEL_L0
#define LCD_BITSPERPIXEL_L0 LCD_BITSPERPIXEL
#endif
#ifndef LCD_DELTA_MODE
#define LCD_DELTA_MODE 0 /**/
#endif
/* Position data for controller 0 */
#ifndef LCD_XORG0
#define LCD_XORG0 (0) /* leftmost position covered by this controller */
#endif
#ifndef LCD_YORG0
#define LCD_YORG0 (0) /* topmost position covered by this controller */
#endif
#ifndef LCD_XSIZE0
#define LCD_XSIZE0 (LCD_XSIZE) /* horizontal size covered by this controller */
#endif
#ifndef LCD_YSIZE0
#define LCD_YSIZE0 (LCD_YSIZE) /* vertical size covered by this controller */
#endif
#ifndef LCD_FIRSTSEG0
#define LCD_FIRSTSEG0 (0) /* first segment used by this controller */
#endif
#ifndef LCD_LASTSEG0
#define LCD_LASTSEG0 (LCD_XSIZE-1) /* Contr.0: last segment line used */
#endif
#ifndef LCD_FIRSTCOM0
#define LCD_FIRSTCOM0 (0) /* first com used by this controller */
#endif
#ifndef LCD_LASTCOM0
#define LCD_LASTCOM0 (LCD_YSIZE-1) /* Contr.0: last com line used */
#endif
#if (!LCD_SWAP_XY)
#define LCD_XSIZE_PHYS LCD_XSIZE
#define LCD_YSIZE_PHYS LCD_YSIZE
#define LCD_VXSIZE_PHYS LCD_VXSIZE
#define LCD_VYSIZE_PHYS LCD_VYSIZE
#else
#define LCD_XSIZE_PHYS LCD_YSIZE
#define LCD_YSIZE_PHYS LCD_XSIZE
#define LCD_VXSIZE_PHYS LCD_VYSIZE
#define LCD_VYSIZE_PHYS LCD_VXSIZE
#endif
/**********************************************************
*
* Color settings
*/
#ifndef LCD_REVERSE
#define LCD_REVERSE 0
#endif
#ifndef LCD_REVERSE_LUT
#define LCD_REVERSE_LUT 0
#endif
#ifndef LCD_PHYSCOLORS_IN_RAM
#define LCD_PHYSCOLORS_IN_RAM 0
#endif
#if !defined (LCD_PHYSCOLORS)
#if (LCD_BITSPERPIXEL == 1) | (LCD_BITSPERPIXEL == 2) | (LCD_BITSPERPIXEL == 4)
#ifndef LCD_FIXEDPALETTE
#define LCD_FIXEDPALETTE LCD_BITSPERPIXEL
#endif
#endif
#endif /* defined (LCD_PHYSCOLORS) */
#if !defined (LCD_FIXEDPALETTE)
#if !defined (LCD_PHYSCOLORS)
#if LCD_BITSPERPIXEL == 8
#define LCD_FIXEDPALETTE 8666
#elif LCD_BITSPERPIXEL == 12
#define LCD_FIXEDPALETTE 44412
#elif LCD_BITSPERPIXEL == 15
#define LCD_FIXEDPALETTE 555
#elif LCD_BITSPERPIXEL == 16
#define LCD_FIXEDPALETTE 565
#else
#define LCD_FIXEDPALETTE 0
#endif
#else
#define LCD_FIXEDPALETTE 0
#endif
#endif
#if (LCD_BITSPERPIXEL > 8) && defined (LCD_PHYSCOLORS)
#error List of physical colors not permitted if more than 8 bpp are used !
#endif
#if (LCD_FIXEDPALETTE==0)
#if !defined(LCD_PHYSCOLORS)
#error You have to define a fixed palette (LCD_FIXEDPALETTE) or
#error the list of physical colors (LCD_PHYSCOLORS) in LCDConf.h !
#endif
#endif
/* In order to avoid warnings for undefined parameters */
#ifndef LCD_USE_PARA
#define LCD_USE_PARA(para) para=para;
#endif
/*********************************************************************
*
* Defaults for Display 1 (second display)
*
**********************************************************************
*/
#if GUI_NUM_LAYERS > 1
#ifndef LCD_MIRROR_X_1
#define LCD_MIRROR_X_1 (0) /* If active: X -> -X */
#endif
#ifndef LCD_MIRROR_Y_1
#define LCD_MIRROR_Y_1 (0) /* If active: Y -> -Y */
#endif
#ifndef LCD_SWAP_XY_1
#define LCD_SWAP_XY_1 (0) /* If active: X <-> Y */
#endif
#ifndef LCD_BITSPERPIXEL_L0_1
#define LCD_BITSPERPIXEL_L0_1 LCD_BITSPERPIXEL_1
#endif
#ifndef LCD_DELTA_MODE_1
#define LCD_DELTA_MODE_1 0 /**/
#endif
#ifndef LCD_YMAG_1
#define LCD_YMAG_1 1
#endif
#ifndef LCD_XMAG_1
#define LCD_XMAG_1 1
#endif
#ifndef LCD_VXSIZE_1
#define LCD_VXSIZE_1 (LCD_XSIZE_1 * LCD_XMAG_1) /* virtual x-size */
#endif
#ifndef LCD_VYSIZE_1
#define LCD_VYSIZE_1 (LCD_YSIZE_1 * LCD_YMAG_1) /* virtual y-size */
#endif
#ifndef LCD_NUM_COLORS_1
#define LCD_NUM_COLORS_1 (1L<<LCD_BITSPERPIXEL_1)
#endif
/* Optionally swap red and blue components */
#ifndef LCD_SWAP_RB_1
#define LCD_SWAP_RB_1 0
#endif
/**********************************************************
*
* Color settings
*/
#ifndef LCD_REVERSE_1
#define LCD_REVERSE_1 0
#endif
#ifndef LCD_REVERSE_LUT_1
#define LCD_REVERSE_LUT_1 0
#endif
#if !defined (LCD_PHYSCOLORS_1)
#if (LCD_BITSPERPIXEL_1 == 1) | (LCD_BITSPERPIXEL_1 == 2) | (LCD_BITSPERPIXEL_1 == 4)
#ifndef LCD_FIXEDPALETTE_1
#define LCD_FIXEDPALETTE_1 LCD_BITSPERPIXEL_1
#endif
#endif
#endif /* defined (LCD_PHYSCOLORS) */
#if !defined (LCD_FIXEDPALETTE_1)
#if !defined (LCD_PHYSCOLORS_1)
#if LCD_BITSPERPIXEL_1 == 8
#define LCD_FIXEDPALETTE_1 8666
#elif LCD_BITSPERPIXEL_1 == 15
#define LCD_FIXEDPALETTE_1 555
#elif LCD_BITSPERPIXEL_1 == 16
#define LCD_FIXEDPALETTE_1 565
#else
#define LCD_FIXEDPALETTE_1 0
#endif
#else
#define LCD_FIXEDPALETTE_1 0
#endif
#endif
#if (LCD_BITSPERPIXEL_1 > 8) && defined (LCD_PHYSCOLORS_1)
#error List of physical colors not permitted if more than 8 bpp are used !
#endif
#if (LCD_FIXEDPALETTE_1 == 0)
#if !defined(LCD_PHYSCOLORS_1)
#error You have to define a fixed palette (LCD_FIXEDPALETTE_1) or
#error the list of physical colors (LCD_PHYSCOLORS_1) in LCDConf.h !
#endif
#endif
#endif /* GUI_NUM_LAYERS > 1 */
/*********************************************************************
*
* Defaults for Display 2 (third display)
*
**********************************************************************
*/
#if GUI_NUM_LAYERS > 2
#ifndef LCD_MIRROR_X_2
#define LCD_MIRROR_X_2 (0) /* If active: X -> -X */
#endif
#ifndef LCD_MIRROR_Y_2
#define LCD_MIRROR_Y_2 (0) /* If active: Y -> -Y */
#endif
#ifndef LCD_SWAP_XY_2
#define LCD_SWAP_XY_2 (0) /* If active: X <-> Y */
#endif
#ifndef LCD_BITSPERPIXEL_L0_2
#define LCD_BITSPERPIXEL_L0_2 LCD_BITSPERPIXEL_2
#endif
#ifndef LCD_DELTA_MODE_2
#define LCD_DELTA_MODE_2 0 /**/
#endif
#ifndef LCD_YMAG_2
#define LCD_YMAG_2 1
#endif
#ifndef LCD_XMAG_2
#define LCD_XMAG_2 1
#endif
#ifndef LCD_VXSIZE_2
#define LCD_VXSIZE_2 (LCD_XSIZE_2 * LCD_XMAG_2) /* virtual x-size */
#endif
#ifndef LCD_VYSIZE_2
#define LCD_VYSIZE_2 (LCD_YSIZE_2 * LCD_YMAG_2) /* virtual y-size */
#endif
#ifndef LCD_NUM_COLORS_2
#define LCD_NUM_COLORS_2 (1L<<LCD_BITSPERPIXEL_2)
#endif
/* Optionally swap red and blue components */
#ifndef LCD_SWAP_RB_2
#define LCD_SWAP_RB_2 0
#endif
/**********************************************************
*
* Color settings
*/
#ifndef LCD_REVERSE_2
#define LCD_REVERSE_2 0
#endif
#ifndef LCD_REVERSE_LUT_2
#define LCD_REVERSE_LUT_2 0
#endif
#if !defined (LCD_PHYSCOLORS_2)
#if (LCD_BITSPERPIXEL_2 == 1) | (LCD_BITSPERPIXEL_2 == 2) | (LCD_BITSPERPIXEL_2 == 4)
#ifndef LCD_FIXEDPALETTE_2
#define LCD_FIXEDPALETTE_2 LCD_BITSPERPIXEL_2
#endif
#endif
#endif /* defined (LCD_PHYSCOLORS) */
#if !defined (LCD_FIXEDPALETTE_2)
#if !defined (LCD_PHYSCOLORS_2)
#if LCD_BITSPERPIXEL_2 == 8
#define LCD_FIXEDPALETTE_2 8666
#elif LCD_BITSPERPIXEL_2 == 15
#define LCD_FIXEDPALETTE_2 555
#elif LCD_BITSPERPIXEL_2 == 16
#define LCD_FIXEDPALETTE_2 565
#else
#define LCD_FIXEDPALETTE_2 0
#endif
#else
#define LCD_FIXEDPALETTE_2 0
#endif
#endif
#if (LCD_BITSPERPIXEL_2 > 8) && defined (LCD_PHYSCOLORS_2)
#error List of physical colors not permitted if more than 8 bpp are used !
#endif
#if (LCD_FIXEDPALETTE_2 == 0)
#if !defined(LCD_PHYSCOLORS_2)
#error You have to define a fixed palette (LCD_FIXEDPALETTE_2) or
#error the list of physical colors (LCD_PHYSCOLORS_2) in LCDConf.h !
#endif
#endif
#endif /* GUI_NUM_LAYERS > 2 */
/*********************************************************************
*
* Defaults for Display 3 (fourth display)
*
**********************************************************************
*/
#if GUI_NUM_LAYERS > 3
#ifndef LCD_MIRROR_X_3
#define LCD_MIRROR_X_3 (0) /* If active: X -> -X */
#endif
#ifndef LCD_MIRROR_Y_3
#define LCD_MIRROR_Y_3 (0) /* If active: Y -> -Y */
#endif
#ifndef LCD_SWAP_XY_3
#define LCD_SWAP_XY_3 (0) /* If active: X <-> Y */
#endif
#ifndef LCD_BITSPERPIXEL_L0_3
#define LCD_BITSPERPIXEL_L0_3 LCD_BITSPERPIXEL_3
#endif
#ifndef LCD_DELTA_MODE_3
#define LCD_DELTA_MODE_3 0 /**/
#endif
#ifndef LCD_YMAG_3
#define LCD_YMAG_3 1
#endif
#ifndef LCD_XMAG_3
#define LCD_XMAG_3 1
#endif
#ifndef LCD_VXSIZE_3
#define LCD_VXSIZE_3 (LCD_XSIZE_3 * LCD_XMAG_3) /* virtual x-size */
#endif
#ifndef LCD_VYSIZE_3
#define LCD_VYSIZE_3 (LCD_YSIZE_3 * LCD_YMAG_3) /* virtual y-size */
#endif
#ifndef LCD_NUM_COLORS_3
#define LCD_NUM_COLORS_3 (1L<<LCD_BITSPERPIXEL_3)
#endif
/* Optionally swap red and blue components */
#ifndef LCD_SWAP_RB_3
#define LCD_SWAP_RB_3 0
#endif
/**********************************************************
*
* Color settings
*/
#ifndef LCD_REVERSE_3
#define LCD_REVERSE_3 0
#endif
#ifndef LCD_REVERSE_LUT_3
#define LCD_REVERSE_LUT_3 0
#endif
#if !defined (LCD_PHYSCOLORS_3)
#if (LCD_BITSPERPIXEL_3 == 1) | (LCD_BITSPERPIXEL_3 == 2) | (LCD_BITSPERPIXEL_3 == 4)
#ifndef LCD_FIXEDPALETTE_3
#define LCD_FIXEDPALETTE_3 LCD_BITSPERPIXEL_3
#endif
#endif
#endif /* defined (LCD_PHYSCOLORS) */
#if !defined (LCD_FIXEDPALETTE_3)
#if !defined (LCD_PHYSCOLORS_3)
#if LCD_BITSPERPIXEL_3 == 8
#define LCD_FIXEDPALETTE_3 8666
#elif LCD_BITSPERPIXEL_3 == 15
#define LCD_FIXEDPALETTE_3 555
#elif LCD_BITSPERPIXEL_3 == 16
#define LCD_FIXEDPALETTE_3 565
#else
#define LCD_FIXEDPALETTE_3 0
#endif
#else
#define LCD_FIXEDPALETTE_3 0
#endif
#endif
#if (LCD_BITSPERPIXEL_3 > 8) && defined (LCD_PHYSCOLORS_3)
#error List of physical colors not permitted if more than 8 bpp are used !
#endif
#if (LCD_FIXEDPALETTE_3 == 0)
#if !defined(LCD_PHYSCOLORS_3)
#error You have to define a fixed palette (LCD_FIXEDPALETTE_3) or
#error the list of physical colors (LCD_PHYSCOLORS_3) in LCDConf.h !
#endif
#endif
#endif /* GUI_NUM_LAYERS > 3 */
/*********************************************************************
*
* Defaults for Display 4 (fiveth display)
*
**********************************************************************
*/
#if GUI_NUM_LAYERS > 4
#ifndef LCD_MIRROR_X_4
#define LCD_MIRROR_X_4 (0) /* If active: X -> -X */
#endif
#ifndef LCD_MIRROR_Y_4
#define LCD_MIRROR_Y_4 (0) /* If active: Y -> -Y */
#endif
#ifndef LCD_SWAP_XY_4
#define LCD_SWAP_XY_4 (0) /* If active: X <-> Y */
#endif
#ifndef LCD_BITSPERPIXEL_L0_4
#define LCD_BITSPERPIXEL_L0_4 LCD_BITSPERPIXEL_4
#endif
#ifndef LCD_DELTA_MODE_4
#define LCD_DELTA_MODE_4 0 /**/
#endif
#ifndef LCD_YMAG_4
#define LCD_YMAG_4 1
#endif
#ifndef LCD_XMAG_4
#define LCD_XMAG_4 1
#endif
#ifndef LCD_VXSIZE_4
#define LCD_VXSIZE_4 (LCD_XSIZE_4 * LCD_XMAG_4) /* virtual x-size */
#endif
#ifndef LCD_VYSIZE_4
#define LCD_VYSIZE_4 (LCD_YSIZE_4 * LCD_YMAG_4) /* virtual y-size */
#endif
#ifndef LCD_NUM_COLORS_4
#define LCD_NUM_COLORS_4 (1L<<LCD_BITSPERPIXEL_4)
#endif
/* Optionally swap red and blue components */
#ifndef LCD_SWAP_RB_4
#define LCD_SWAP_RB_4 0
#endif
/**********************************************************
*
* Color settings
*/
#ifndef LCD_REVERSE_4
#define LCD_REVERSE_4 0
#endif
#ifndef LCD_REVERSE_LUT_4
#define LCD_REVERSE_LUT_4 0
#endif
#if !defined (LCD_PHYSCOLORS_4)
#if (LCD_BITSPERPIXEL_4 == 1) | (LCD_BITSPERPIXEL_4 == 2) | (LCD_BITSPERPIXEL_4 == 4)
#ifndef LCD_FIXEDPALETTE_4
#define LCD_FIXEDPALETTE_4 LCD_BITSPERPIXEL_4
#endif
#endif
#endif /* defined (LCD_PHYSCOLORS) */
#if !defined (LCD_FIXEDPALETTE_4)
#if !defined (LCD_PHYSCOLORS_4)
#if LCD_BITSPERPIXEL_4 == 8
#define LCD_FIXEDPALETTE_4 8666
#elif LCD_BITSPERPIXEL_4 == 15
#define LCD_FIXEDPALETTE_4 555
#elif LCD_BITSPERPIXEL_4 == 16
#define LCD_FIXEDPALETTE_4 565
#else
#define LCD_FIXEDPALETTE_4 0
#endif
#else
#define LCD_FIXEDPALETTE_4 0
#endif
#endif
#if (LCD_BITSPERPIXEL_4 > 8) && defined (LCD_PHYSCOLORS_4)
#error List of physical colors not permitted if more than 8 bpp are used !
#endif
#if (LCD_FIXEDPALETTE_4 == 0)
#if !defined(LCD_PHYSCOLORS_4)
#error You have to define a fixed palette (LCD_FIXEDPALETTE_4) or
#error the list of physical colors (LCD_PHYSCOLORS_4) in LCDConf.h !
#endif
#endif
#endif /* GUI_NUM_LAYERS > 4 */
/*********************************************************************
*
* Global defaults for all displays
*
**********************************************************************
*/
#if (LCD_BITSPERPIXEL <= 8) && (GUI_NUM_LAYERS < 2)
#define LCD_PIXELINDEX U8
#else
#define LCD_PIXELINDEX U16
#endif
#endif /* LCD_INTERN_H */
@@ -0,0 +1,97 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LCD_IncludeDriver.h
Purpose : Glue code for including the configured driver
---------------------------END-OF-HEADER------------------------------
*/
#ifndef LCD_INCLUDEDRIVER_H
#define LCD_INCLUDEDRIVER_H
/*********************************************************************
*
* Some error checking
*
**********************************************************************
*/
#ifndef LCD_CONTROLLER
#error LCD_CONTROLLER not defined !
#endif
/*********************************************************************
*
* Color conversion routines for layer <n>
*
**********************************************************************
*/
#include "LCD_L0_Generic.c"
/*********************************************************************
*
* Driver for layer <n>
*
**********************************************************************
*/
#if !defined(WIN32) | defined(LCD_SIMCONTROLLER)
#if (LCD_CONTROLLER == -2)
#include "LCDNull.c" /* Empty driver, no output to LCD */
#elif (LCD_CONTROLLER == -1)
#include "LCDDummy.c" /* Empty driver, no output to LCD */
#elif (LCD_CONTROLLER == 0)
#if ((LCD_BITSPERPIXEL == 1) | (LCD_BITSPERPIXEL == 2))
#include "LCDMem.c"
#elif ((LCD_BITSPERPIXEL == 3) | (LCD_BITSPERPIXEL == 6))
#include "LCDMemC.c"
#else
#error LCD Config error !
#endif
#elif (LCD_CONTROLLER / 100 == 4)
#include "LCDColorOnMono.c"
#elif (LCD_CONTROLLER / 100 == 5)
#include "LCD501.c"
#elif (LCD_CONTROLLER / 100 == 7)
#include "LCD07X1.c"
#elif (LCD_CONTROLLER / 100 == 13)
#include "LCDLin.c"
#elif (LCD_CONTROLLER / 100 == 15)
#include "LCDPage1bpp.c"
#include "LCDPage1bpp_1.c"
#elif (LCD_CONTROLLER / 100 == 16)
#include "LCD159A.c"
#elif (LCD_CONTROLLER / 100 == 17)
#include "LCD15E05.c"
#elif (LCD_CONTROLLER / 100 == 18)
#include "LCD1611.c"
#elif (LCD_CONTROLLER / 100 == 32)
#include "LCDLin32.c"
#elif (LCD_CONTROLLER / 100 == 69)
#include "LCDSLin.c"
#elif (LCD_CONTROLLER / 100 == 87)
#include "LCDFujitsu.c"
#elif (LCD_CONTROLLER / 100 == 63)
#include "LCD6331.c"
#elif (LCD_CONTROLLER / 100 == 664)
#include "LCD6642X.c"
#else
#error LCD Config error !
#endif
#else
#include "LCDWin.c"
#endif
#endif /* LCD_INCLUDEDRIVER_H */
@@ -0,0 +1,119 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LCD_Private.h
Purpose : Internals of the LCD level
----------------------------------------------------------------------
*/
#ifndef LCD_Private_H
#define LCD_Private_H
#include "LCD_ConfDefaults.h" /* Configuration header file */
#include "LCD_Protected.h"
#include "GUI.h"
typedef struct {
LCD_COLOR * paColor;
I16 NumEntries;
} LCD_LUT_INFO;
#if LCD_PHYSCOLORS_IN_RAM
#if (LCD_FIXEDPALETTE == 0)
#if (LCD_FIXEDPALETTE == 0)
extern LCD_COLOR LCD_PhysColors[1 << LCD_BITSPERPIXEL];
#endif
#endif
#if (GUI_NUM_LAYERS > 1)
#if (LCD_FIXEDPALETTE_1 == 0)
extern LCD_COLOR LCD_PhysColors_1[1 << LCD_BITSPERPIXEL_1];
#endif
#endif
#if (GUI_NUM_LAYERS > 2)
#if (LCD_FIXEDPALETTE_2 == 0)
extern LCD_COLOR LCD_PhysColors_2[1 << LCD_BITSPERPIXEL_2];
#endif
#endif
#if (GUI_NUM_LAYERS > 3)
#if (LCD_FIXEDPALETTE_3 == 0)
extern LCD_COLOR LCD_PhysColors_3[1 << LCD_BITSPERPIXEL_3];
#endif
#endif
#if (GUI_NUM_LAYERS > 4)
#if (LCD_FIXEDPALETTE_4 == 0)
extern LCD_COLOR LCD_PhysColors_4[1 << LCD_BITSPERPIXEL_4];
#endif
#endif
#endif
#if GUI_COMPILER_SUPPORTS_FP
extern const struct tLCDDEV_APIList_struct * /* const */ LCD_aAPI[GUI_NUM_LAYERS];
const tLCDDEV_APIList* LCD_SetAPI(const tLCDDEV_APIList* pAPI, int Index);
#endif
#if (LCD_BITSPERPIXEL <= 8) && (GUI_NUM_LAYERS < 2)
#define LCD_BKCOLORINDEX GUI_Context.LCD.aColorIndex8[0]
#define LCD_COLORINDEX GUI_Context.LCD.aColorIndex8[1]
#define LCD_ACOLORINDEX GUI_Context.LCD.aColorIndex8
#else
#define LCD_BKCOLORINDEX GUI_Context.LCD.aColorIndex16[0]
#define LCD_COLORINDEX GUI_Context.LCD.aColorIndex16[1]
#define LCD_ACOLORINDEX GUI_Context.LCD.aColorIndex16
#endif
extern LCD_PIXELINDEX LCD__aConvTable[LCD_MAX_LOG_COLORS];
void LCD_DrawBitmap (int x0, int y0,
int xsize, int ysize,
int xMul, int yMul,
int BitsPerPixel,
int BytesPerLine,
const U8 GUI_UNI_PTR * pPixel,
const LCD_PIXELINDEX* pTrans);
void LCD_UpdateColorIndices(void);
/*********************************************************************
*
* Support for Segment/COMLUTs
*
**********************************************************************
*/
#define LCD_TYPE_SEGTRANS U16
#define LCD_TYPE_COMTRANS U16
#ifdef LCD_LUT_COM
#ifdef LCDCOLOR_C
LCD_TYPE_COMTRANS LCD__aLine2Com0[LCD_YSIZE] = { LCD_LUT_COM };
#else
extern LCD_TYPE_COMTRANS LCD__aLine2Com0[LCD_YSIZE];
#endif
#endif
#ifdef LCD_LUT_SEG
#ifdef LCDCOLOR_C
LCD_TYPE_SEGTRANS LCD__aCol2Seg0[LCD_XSIZE] = { LCD_LUT_SEG };
#else
extern LCD_TYPE_COMTRANS LCD__aCol2Seg0[LCD_XSIZE];
#endif
#endif
#endif /* Avoid multiple inclusion */
/*************************** End of file ****************************/
@@ -0,0 +1,255 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LCD_Protected.h
Purpose : Internals of the LCD level
----------------------------------------------------------------------
*/
#ifndef LCD_INTERN_H
#define LCD_INTERN_H
#include "LCD.h"
/*********************************************************************
*
* Data types
*
**********************************************************************
*/
typedef struct {
int NumEntries;
const LCD_COLOR* pPalEntries;
} LCD_PHYSPALETTE;
/*********************************************************************
*
* Data
*
**********************************************************************
*/
extern GUI_CONST_STORAGE U8 LCD_aMirror[256];
/********************************************************
*
* Color conversion routines (used internally only !
*
*********************************************************
*/
unsigned LCD_Color2Index_User (LCD_COLOR Color);
unsigned LCD_Color2Index_0 (LCD_COLOR Color, const LCD_PHYSPALETTE* pPhysPal);
unsigned LCD_Color2Index_1 (LCD_COLOR Color);
unsigned LCD_Color2Index_M1 (LCD_COLOR Color);
unsigned LCD_Color2Index_2 (LCD_COLOR Color);
unsigned LCD_Color2Index_M2 (LCD_COLOR Color);
unsigned LCD_Color2Index_4 (LCD_COLOR Color);
unsigned LCD_Color2Index_M4 (LCD_COLOR Color);
unsigned LCD_Color2Index_111 (LCD_COLOR Color);
unsigned LCD_Color2Index_222 (LCD_COLOR Color);
unsigned LCD_Color2Index_233 (LCD_COLOR Color);
unsigned LCD_Color2Index_323 (LCD_COLOR Color);
unsigned LCD_Color2Index_332 (LCD_COLOR Color);
unsigned LCD_Color2Index_444_12 (LCD_COLOR Color);
unsigned LCD_Color2Index_444_12_1(LCD_COLOR Color);
unsigned LCD_Color2Index_444_16 (LCD_COLOR Color);
unsigned LCD_Color2Index_555 (LCD_COLOR Color);
unsigned LCD_Color2Index_565 (LCD_COLOR Color);
unsigned LCD_Color2Index_556 (LCD_COLOR Color);
unsigned LCD_Color2Index_655 (LCD_COLOR Color);
unsigned LCD_Color2Index_8666 (LCD_COLOR Color);
unsigned LCD_Color2Index_8666_1 (LCD_COLOR Color);
unsigned LCD_Color2Index_M111 (LCD_COLOR Color);
unsigned LCD_Color2Index_M222 (LCD_COLOR Color);
unsigned LCD_Color2Index_M233 (LCD_COLOR Color);
unsigned LCD_Color2Index_M323 (LCD_COLOR Color);
unsigned LCD_Color2Index_M332 (LCD_COLOR Color);
unsigned LCD_Color2Index_M444_12 (LCD_COLOR Color);
unsigned LCD_Color2Index_M444_16 (LCD_COLOR Color);
unsigned LCD_Color2Index_M555 (LCD_COLOR Color);
unsigned LCD_Color2Index_M565 (LCD_COLOR Color);
unsigned LCD_Color2Index_M556 (LCD_COLOR Color);
unsigned LCD_Color2Index_M655 (LCD_COLOR Color);
LCD_COLOR LCD_Index2Color_User (int Index);
LCD_COLOR LCD_Index2Color_0 (int Index, const LCD_PHYSPALETTE* pPhysPal);
LCD_COLOR LCD_Index2Color_1 (int Index);
LCD_COLOR LCD_Index2Color_2 (int Index);
LCD_COLOR LCD_Index2Color_4 (int Index);
LCD_COLOR LCD_Index2Color_111 (int Index);
LCD_COLOR LCD_Index2Color_222 (int Index);
LCD_COLOR LCD_Index2Color_233 (int Index);
LCD_COLOR LCD_Index2Color_323 (int Index);
LCD_COLOR LCD_Index2Color_332 (int Index);
LCD_COLOR LCD_Index2Color_444_12 (int Index);
LCD_COLOR LCD_Index2Color_444_12_1(int Index);
LCD_COLOR LCD_Index2Color_444_16 (int Index);
LCD_COLOR LCD_Index2Color_555 (int Index);
LCD_COLOR LCD_Index2Color_565 (int Index);
LCD_COLOR LCD_Index2Color_556 (int Index);
LCD_COLOR LCD_Index2Color_655 (int Index);
LCD_COLOR LCD_Index2Color_8666 (int Index);
LCD_COLOR LCD_Index2Color_8666_1 (int Index);
LCD_COLOR LCD_Index2Color_M111 (int Index);
LCD_COLOR LCD_Index2Color_M222 (int Index);
LCD_COLOR LCD_Index2Color_M233 (int Index);
LCD_COLOR LCD_Index2Color_M323 (int Index);
LCD_COLOR LCD_Index2Color_M332 (int Index);
LCD_COLOR LCD_Index2Color_M444_12 (int Index);
LCD_COLOR LCD_Index2Color_M444_16 (int Index);
LCD_COLOR LCD_Index2Color_M555 (int Index);
LCD_COLOR LCD_Index2Color_M565 (int Index);
LCD_COLOR LCD_Index2Color_M556 (int Index);
LCD_COLOR LCD_Index2Color_M655 (int Index);
unsigned LCD_GetIndexMask_User (void);
unsigned LCD_GetIndexMask_0 (void);
unsigned LCD_GetIndexMask_1 (void);
unsigned LCD_GetIndexMask_M1 (void);
unsigned LCD_GetIndexMask_2 (void);
unsigned LCD_GetIndexMask_M2 (void);
unsigned LCD_GetIndexMask_4 (void);
unsigned LCD_GetIndexMask_M4 (void);
unsigned LCD_GetIndexMask_111 (void);
unsigned LCD_GetIndexMask_222 (void);
unsigned LCD_GetIndexMask_233 (void);
unsigned LCD_GetIndexMask_323 (void);
unsigned LCD_GetIndexMask_332 (void);
unsigned LCD_GetIndexMask_444_12 (void);
unsigned LCD_GetIndexMask_444_12_1(void);
unsigned LCD_GetIndexMask_444_16 (void);
unsigned LCD_GetIndexMask_555 (void);
unsigned LCD_GetIndexMask_565 (void);
unsigned LCD_GetIndexMask_556 (void);
unsigned LCD_GetIndexMask_655 (void);
unsigned LCD_GetIndexMask_8666 (void);
unsigned LCD_GetIndexMask_8666_1 (void);
unsigned LCD_GetIndexMask_M111 (void);
unsigned LCD_GetIndexMask_M222 (void);
unsigned LCD_GetIndexMask_M233 (void);
unsigned LCD_GetIndexMask_M323 (void);
unsigned LCD_GetIndexMask_M332 (void);
unsigned LCD_GetIndexMask_M444_12 (void);
unsigned LCD_GetIndexMask_M444_16 (void);
unsigned LCD_GetIndexMask_M555 (void);
unsigned LCD_GetIndexMask_M565 (void);
unsigned LCD_GetIndexMask_M556 (void);
unsigned LCD_GetIndexMask_M655 (void);
void LCD_SelectLCD(void);
/*********************************************************************
*
* Declarations for LCD_L0_
*
**********************************************************************
Prefixes are as follows:
LCD_L0_xxx ... Driver for first LCD
LCD_L0_1_xxx ... Driver for second LCD/layer
LCD_L0_2_xxx ... Driver for third LCD/layer
LCD_L0_MAG_xxx ... Driver for first LCD, magnification level (calling LCD_L0_xxx after magnification)
LCD_L0_DELTA_xxx ... Driver for first LCD, delta mode
*/
unsigned int LCD_L0_Color2Index (LCD_COLOR Color);
unsigned int LCD_L0_1_Color2Index (LCD_COLOR Color);
unsigned int LCD_L0_2_Color2Index (LCD_COLOR Color);
unsigned int LCD_L0_3_Color2Index (LCD_COLOR Color);
unsigned int LCD_L0_4_Color2Index (LCD_COLOR Color);
void LCD_L0_DrawHLine (int x0, int y0, int x1);
void LCD_L0_1_DrawHLine (int x0, int y0, int x1);
void LCD_L0_2_DrawHLine (int x0, int y0, int x1);
void LCD_L0_3_DrawHLine (int x0, int y0, int x1);
void LCD_L0_4_DrawHLine (int x0, int y0, int x1);
void LCD_L0_MAG_DrawHLine (int x0, int y0, int x1);
void LCD_L0_DELTA_DrawHLine (int x0, int y0, int x1);
void LCD_L0_DrawVLine (int x, int y0, int y1);
void LCD_L0_1_DrawVLine (int x, int y0, int y1);
void LCD_L0_2_DrawVLine (int x, int y0, int y1);
void LCD_L0_3_DrawVLine (int x, int y0, int y1);
void LCD_L0_4_DrawVLine (int x, int y0, int y1);
void LCD_L0_MAG_DrawVLine (int x, int y0, int y1);
void LCD_L0_DELTA_DrawVLine (int x, int y0, int y1);
void LCD_L0_FillRect (int x0, int y0, int x1, int y1);
void LCD_L0_1_FillRect (int x0, int y0, int x1, int y1);
void LCD_L0_2_FillRect (int x0, int y0, int x1, int y1);
void LCD_L0_3_FillRect (int x0, int y0, int x1, int y1);
void LCD_L0_4_FillRect (int x0, int y0, int x1, int y1);
void LCD_L0_MAG_FillRect (int x0, int y0, int x1, int y1);
void LCD_L0_DELTA_FillRect (int x0, int y0, int x1, int y1);
unsigned int LCD_L0_GetPixelIndex (int x, int y);
unsigned int LCD_L0_1_GetPixelIndex (int x, int y);
unsigned int LCD_L0_2_GetPixelIndex (int x, int y);
unsigned int LCD_L0_3_GetPixelIndex (int x, int y);
unsigned int LCD_L0_4_GetPixelIndex (int x, int y);
unsigned int LCD_L0_MAG_GetPixelIndex (int x, int y);
unsigned int LCD_L0_DELTA_GetPixelIndex (int x, int y);
void LCD_L0_GetRect (LCD_RECT * pRect);
void LCD_L0_1_GetRect (LCD_RECT * pRect);
void LCD_L0_2_GetRect (LCD_RECT * pRect);
void LCD_L0_3_GetRect (LCD_RECT * pRect);
void LCD_L0_4_GetRect (LCD_RECT * pRect);
void LCD_L0_SetPixelIndex (int x, int y, int ColorIndex);
void LCD_L0_1_SetPixelIndex (int x, int y, int ColorIndex);
void LCD_L0_2_SetPixelIndex (int x, int y, int ColorIndex);
void LCD_L0_3_SetPixelIndex (int x, int y, int ColorIndex);
void LCD_L0_4_SetPixelIndex (int x, int y, int ColorIndex);
void LCD_L0_MAG_SetPixelIndex (int x, int y, int ColorIndex);
void LCD_L0_DELTA_SetPixelIndex (int x, int y, int ColorIndex);
void LCD_L0_XorPixel (int x, int y);
void LCD_L0_1_XorPixel (int x, int y);
void LCD_L0_2_XorPixel (int x, int y);
void LCD_L0_3_XorPixel (int x, int y);
void LCD_L0_4_XorPixel (int x, int y);
void LCD_L0_MAG_XorPixel (int x, int y);
void LCD_L0_DELTA_XorPixel (int x, int y);
int LCD_L0_Init (void);
int LCD_L0_1_Init (void);
int LCD_L0_2_Init (void);
int LCD_L0_3_Init (void);
int LCD_L0_4_Init (void);
int LCD_L0_MAG_Init (void);
int LCD_L0_DELTA_Init (void);
void LCD_L0_On (void);
void LCD_L0_1_On (void);
void LCD_L0_2_On (void);
void LCD_L0_3_On (void);
void LCD_L0_4_On (void);
void LCD_L0_Off (void);
void LCD_L0_1_Off (void);
void LCD_L0_2_Off (void);
void LCD_L0_3_Off (void);
void LCD_L0_4_Off (void);
void LCD_L0_SetLUTEntry (U8 Pos, LCD_COLOR color);
void LCD_L0_1_SetLUTEntry (U8 Pos, LCD_COLOR color);
void LCD_L0_2_SetLUTEntry (U8 Pos, LCD_COLOR color);
void LCD_L0_3_SetLUTEntry (U8 Pos, LCD_COLOR color);
void LCD_L0_4_SetLUTEntry (U8 Pos, LCD_COLOR color);
void LCD_L0_ReInit (void); /* Reinitialize LCD using config-paramters */
void LCD_L0_Refresh (void); /* Refresh entire LCD */
/* Refresh LCD partially. Could be one line, depends on what
the LCD controller can handle efficiently */
void LCD_L0_SetOrg (int x, int y);
#endif /* LCD_INTERN_H */
/*************************** End of file ****************************/
@@ -0,0 +1,175 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LISTBOX.h
Purpose : LISTBOX widget include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef LISTBOX_H
#define LISTBOX_H
#include "WM.h"
#include "WIDGET.h" /* Req. for WIDGET_DRAW_ITEM_FUNC */
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* defines
*
**********************************************************************
*/
#define LISTBOX_ALL_ITEMS -1
/*********************************************************************
*
* Color indices
*/
#define LISTBOX_CI_UNSEL 0
#define LISTBOX_CI_SEL 1
#define LISTBOX_CI_SELFOCUS 2
/************************************************************
*
* States
*/
typedef WM_HMEM LISTBOX_Handle;
/*********************************************************************
*
* Notification codes
*
* The following is the list of notification codes specific to this widget,
* Send with the WM_NOTIFY_PARENT message
*/
#define LISTBOX_NOTIFICATION_LOST_FOCUS (WM_NOTIFICATION_WIDGET + 0)
/************************************************************
*
* Create / Status flags
*/
#define LISTBOX_CF_AUTOSCROLLBAR_H (1<<0)
#define LISTBOX_CF_AUTOSCROLLBAR_V (1<<1)
#define LISTBOX_CF_MULTISEL (1<<2)
#define LISTBOX_SF_AUTOSCROLLBAR_H LISTBOX_CF_AUTOSCROLLBAR_H
#define LISTBOX_SF_AUTOSCROLLBAR_V LISTBOX_CF_AUTOSCROLLBAR_V
#define LISTBOX_SF_MULTISEL LISTBOX_CF_MULTISEL
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
#define LISTBOX_EnableMemdev(hObj) WM_EnableMemdev(hObj)
#define LISTBOX_DisableMemdev(hObj) WM_DisableMemdev(hObj)
#define LISTBOX_Delete(hObj) WM_DeleteWindow(hObj)
#define LISTBOX_Paint(hObj) WM_Paint(hObj)
#define LISTBOX_Invalidate(hObj) WM_InvalidateWindow(hObj)
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
LISTBOX_Handle LISTBOX_Create (const GUI_ConstString* ppText, int x0, int y0, int xsize, int ysize, int Flags);
LISTBOX_Handle LISTBOX_CreateAsChild (const GUI_ConstString* ppText, WM_HWIN hWinParent, int x0, int y0, int xsize, int ysize, int Flags);
LISTBOX_Handle LISTBOX_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
LISTBOX_Handle LISTBOX_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id, const GUI_ConstString* ppText);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
int LISTBOX_AddKey (LISTBOX_Handle hObj, int Key);
void LISTBOX_AddString (LISTBOX_Handle hObj, const char* s);
void LISTBOX_DecSel (LISTBOX_Handle hObj);
void LISTBOX_DeleteItem (LISTBOX_Handle hObj, unsigned int Index);
unsigned LISTBOX_GetItemSpacing (LISTBOX_Handle hObj);
unsigned LISTBOX_GetNumItems (LISTBOX_Handle hObj);
int LISTBOX_GetSel (LISTBOX_Handle hObj);
const GUI_FONT GUI_UNI_PTR * LISTBOX_GetFont (LISTBOX_Handle hObj);
int LISTBOX_GetItemDisabled (LISTBOX_Handle hObj, unsigned Index);
int LISTBOX_GetItemSel (LISTBOX_Handle hObj, unsigned Index);
void LISTBOX_GetItemText (LISTBOX_Handle hObj, unsigned Index, char * pBuffer, int MaxSize);
int LISTBOX_GetMulti (LISTBOX_Handle hObj);
int LISTBOX_GetScrollStepH (LISTBOX_Handle hObj);
void LISTBOX_IncSel (LISTBOX_Handle hObj);
void LISTBOX_InsertString (LISTBOX_Handle hObj, const char* s, unsigned int Index);
int LISTBOX_OwnerDraw (const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo);
void LISTBOX_SetAutoScrollH (LISTBOX_Handle hObj, int OnOff);
void LISTBOX_SetAutoScrollV (LISTBOX_Handle hObj, int OnOff);
void LISTBOX_SetBkColor (LISTBOX_Handle hObj, unsigned int Index, GUI_COLOR color);
void LISTBOX_SetFont (LISTBOX_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont);
void LISTBOX_SetItemDisabled (LISTBOX_Handle hObj, unsigned Index, int OnOff);
void LISTBOX_SetItemSel (LISTBOX_Handle hObj, unsigned Index, int OnOff);
void LISTBOX_SetItemSpacing (LISTBOX_Handle hObj, unsigned Value);
void LISTBOX_SetMulti (LISTBOX_Handle hObj, int Mode);
void LISTBOX_SetOwner (LISTBOX_Handle hObj, WM_HWIN hOwner);
void LISTBOX_SetOwnerDraw (LISTBOX_Handle hObj, WIDGET_DRAW_ITEM_FUNC * pfDrawItem);
void LISTBOX_SetScrollStepH (LISTBOX_Handle hObj, int Value);
void LISTBOX_SetSel (LISTBOX_Handle hObj, int Sel);
void LISTBOX_SetScrollbarWidth(LISTBOX_Handle hObj, unsigned Width);
void LISTBOX_SetString (LISTBOX_Handle hObj, const char* s, unsigned int Index);
void LISTBOX_SetText (LISTBOX_Handle hObj, const GUI_ConstString* ppText);
GUI_COLOR LISTBOX_SetTextColor (LISTBOX_Handle hObj, unsigned int Index, GUI_COLOR Color);
int LISTBOX_UpdateScrollers (LISTBOX_Handle hObj);
void LISTBOX_InvalidateItem (LISTBOX_Handle hObj, int Index);
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
const GUI_FONT GUI_UNI_PTR* LISTBOX_GetDefaultFont(void);
int LISTBOX_GetDefaultScrollStepH (void);
GUI_COLOR LISTBOX_GetDefaultBkColor (unsigned Index);
GUI_COLOR LISTBOX_GetDefaultTextColor (unsigned Index);
void LISTBOX_SetDefaultFont (const GUI_FONT GUI_UNI_PTR * pFont);
void LISTBOX_SetDefaultScrollStepH (int Value);
void LISTBOX_SetDefaultBkColor (unsigned Index, GUI_COLOR Color);
void LISTBOX_SetDefaultTextColor (unsigned Index, GUI_COLOR Color);
/*********************************************************************
*
* Compatibility to older versions
*
**********************************************************************
*/
#define LISTBOX_SetBackColor(hObj, Index, Color) LISTBOX_SetBkColor(hObj, Index, Color)
#define LISTBOX_DeleteString LISTBOX_DeleteItem
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif /* LISTBOX_H */
@@ -0,0 +1,119 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LISTBOX_Private.h
Purpose : Private LISTBOX include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef LISTBOX_PRIVATE_H
#define LISTBOX_PRIVATE_H
#include "LISTBOX.h"
#include "WM.h"
#include "GUI_ARRAY.h"
#include "WIDGET.h"
#if GUI_WINSUPPORT
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define LISTBOX_H2P(h) (LISTBOX_Obj*) GUI_ALLOC_h2p(h)
#if GUI_DEBUG_LEVEL >1
#define OBJECT_ID 0x4C69 /* Magic numer, should be unique if possible */
#define ASSERT_IS_VALID_PTR(p) GUI_DEBUG_ERROROUT_IF(p->DebugId != OBJECT_ID, "EDIT.C: Wrong handle type or Object not init'ed")
#define INIT_ID(p) p->DebugId = OBJECT_ID
#define DEINIT_ID(p) p->DebugId = 0
#else
#define ASSERT_IS_VALID_PTR(p)
#define INIT_ID(p)
#define DEINIT_ID(p)
#endif
#define LISTBOX_ITEM_SELECTED (1 << 0)
#define LISTBOX_ITEM_DISABLED (1 << 1)
/*********************************************************************
*
* Object definition
*
**********************************************************************
*/
typedef struct {
U16 xSize, ySize;
U8 Status;
char acText[1];
} LISTBOX_ITEM;
typedef struct {
const GUI_FONT GUI_UNI_PTR* pFont;
U16 ScrollStepH;
GUI_COLOR aBackColor[4];
GUI_COLOR aTextColor[4];
} LISTBOX_PROPS;
typedef struct {
WIDGET Widget;
GUI_ARRAY ItemArray;
WIDGET_DRAW_ITEM_FUNC* pfDrawItem;
WM_SCROLL_STATE ScrollStateV;
WM_SCROLL_STATE ScrollStateH;
LISTBOX_PROPS Props;
WM_HWIN hOwner;
#if GUI_DEBUG_LEVEL >1
int DebugId;
#endif
I16 Sel; /* current selection */
U8 Flags;
U8 ScrollbarWidth;
U16 ItemSpacing;
} LISTBOX_Obj;
/*********************************************************************
*
* Private (module internal) data
*
**********************************************************************
*/
extern LISTBOX_PROPS LISTBOX_DefaultProps;
/*********************************************************************
*
* Private (module internal) functions
*
**********************************************************************
*/
unsigned LISTBOX__GetNumItems (const LISTBOX_Obj* pObj);
const char* LISTBOX__GetpString (const LISTBOX_Obj* pObj, int Index);
void LISTBOX__InvalidateInsideArea (LISTBOX_Handle hObj);
void LISTBOX__InvalidateItem (LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, int Sel);
void LISTBOX__InvalidateItemAndBelow(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, int Sel);
void LISTBOX__InvalidateItemSize (const LISTBOX_Obj* pObj, unsigned Index);
void LISTBOX__SetScrollbarWidth (LISTBOX_Handle hObj, const LISTBOX_Obj* pObj);
#endif /* GUI_WINSUPPORT */
#else /* Avoid problems with empty object modules */
void LISTBOX_C(void) {}
#endif
/*************************** End of file ****************************/
@@ -0,0 +1,127 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LISTVIEW.h
Purpose : LISTVIEW include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef LISTVIEW_H
#define LISTVIEW_H
#include "WM.h"
#include "DIALOG.h" /* Req. for Create indirect data structure */
#include "HEADER.h"
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Color indices
*/
#define LISTVIEW_CI_UNSEL 0
#define LISTVIEW_CI_SEL 1
#define LISTVIEW_CI_SELFOCUS 2
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM LISTVIEW_Handle;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
LISTVIEW_Handle LISTVIEW_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, int SpecialFlags);
LISTVIEW_Handle LISTVIEW_CreateAttached(WM_HWIN hParent, int Id, int SpecialFlags);
LISTVIEW_Handle LISTVIEW_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
LISTVIEW_Handle LISTVIEW_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
#define LISTVIEW_Delete(hObj) WM_DeleteWindow (hObj)
#define LISTVIEW_DisableMemdev(hObj) WM_DisableMemdev (hObj)
#define LISTVIEW_EnableMemdev(hObj) WM_EnableMemdev (hObj)
#define LISTVIEW_Invalidate(hObj) WM_InvalidateWindow(hObj)
#define LISTVIEW_Paint(hObj) WM_Paint (hObj)
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
void LISTVIEW_AddColumn (LISTVIEW_Handle hObj, int Width, const char * s, int Align);
void LISTVIEW_AddRow (LISTVIEW_Handle hObj, const GUI_ConstString * ppText);
void LISTVIEW_DecSel (LISTVIEW_Handle hObj);
void LISTVIEW_DeleteColumn (LISTVIEW_Handle hObj, unsigned Index);
void LISTVIEW_DeleteRow (LISTVIEW_Handle hObj, unsigned Index);
GUI_COLOR LISTVIEW_GetBkColor (LISTVIEW_Handle hObj, unsigned Index);
const GUI_FONT GUI_UNI_PTR * LISTVIEW_GetFont (LISTVIEW_Handle hObj);
HEADER_Handle LISTVIEW_GetHeader (LISTVIEW_Handle hObj);
unsigned LISTVIEW_GetNumColumns (LISTVIEW_Handle hObj);
unsigned LISTVIEW_GetNumRows (LISTVIEW_Handle hObj);
int LISTVIEW_GetSel (LISTVIEW_Handle hObj);
GUI_COLOR LISTVIEW_GetTextColor (LISTVIEW_Handle hObj, unsigned Index);
void LISTVIEW_IncSel (LISTVIEW_Handle hObj);
void LISTVIEW_SetBkColor (LISTVIEW_Handle hObj, unsigned int Index, GUI_COLOR Color);
void LISTVIEW_SetColumnWidth(LISTVIEW_Handle hObj, unsigned int Index, int Width);
void LISTVIEW_SetFont (LISTVIEW_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont);
int LISTVIEW_SetGridVis (LISTVIEW_Handle hObj, int Show);
void LISTVIEW_SetItemBkColor(LISTVIEW_Handle hObj, unsigned Column, unsigned Row, unsigned int Index, GUI_COLOR Color);
void LISTVIEW_SetItemText (LISTVIEW_Handle hObj, unsigned Column, unsigned Row, const char * s);
void LISTVIEW_SetItemTextColor(LISTVIEW_Handle hObj, unsigned Column, unsigned Row, unsigned int Index, GUI_COLOR Color);
void LISTVIEW_SetLBorder (LISTVIEW_Handle hObj, unsigned BorderSize);
void LISTVIEW_SetRBorder (LISTVIEW_Handle hObj, unsigned BorderSize);
unsigned LISTVIEW_SetRowHeight (LISTVIEW_Handle hObj, unsigned RowHeight);
void LISTVIEW_SetSel (LISTVIEW_Handle hObj, int Sel);
void LISTVIEW_SetTextAlign (LISTVIEW_Handle hObj, unsigned int Index, int Align);
void LISTVIEW_SetTextColor (LISTVIEW_Handle hObj, unsigned int Index, GUI_COLOR Color);
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
GUI_COLOR LISTVIEW_SetDefaultBkColor (unsigned Index, GUI_COLOR Color);
const GUI_FONT GUI_UNI_PTR * LISTVIEW_SetDefaultFont (const GUI_FONT GUI_UNI_PTR * pFont);
GUI_COLOR LISTVIEW_SetDefaultGridColor(GUI_COLOR Color);
GUI_COLOR LISTVIEW_SetDefaultTextColor(unsigned Index, GUI_COLOR Color);
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* LISTVIEW_H */
@@ -0,0 +1,120 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LISTVIEW_Private.h
Purpose : Private LISTVIEW include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef LISTVIEW_PRIVATE_H
#define LISTVIEW_PRIVATE_H
#include "WM.h"
#include "LISTVIEW.h"
#include "GUI_ARRAY.h"
#if GUI_WINSUPPORT
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define LISTVIEW_ID 0x4567 /* Magic numer, should be unique if possible */
#define LISTVIEW_H2P(h) (LISTVIEW_Obj*) WM_H2P(h)
#if GUI_DEBUG_LEVEL > 1
#define LISTVIEW_ASSERT_IS_VALID_PTR(p) DEBUG_ERROROUT_IF(p->DebugId != LISTVIEW_ID, "xxx.c: Wrong handle type or Object not init'ed")
#define LISTVIEW_INIT_ID(p) p->DebugId = LISTVIEW_ID
#define LISTVIEW_DEINIT_ID(p) p->DebugId = LISTVIEW_ID+1
#else
#define LISTVIEW_ASSERT_IS_VALID_PTR(p)
#define LISTVIEW_INIT_ID(p)
#define LISTVIEW_DEINIT_ID(p)
#endif
/*********************************************************************
*
* Object definition
*
**********************************************************************
*/
typedef struct {
GUI_COLOR aBkColor[3];
GUI_COLOR aTextColor[3];
} LISTVIEW_ITEM_INFO;
typedef struct {
WM_HMEM hItemInfo;
char acText[1];
} LISTVIEW_ITEM;
typedef struct {
GUI_COLOR aBkColor[3];
GUI_COLOR aTextColor[3];
GUI_COLOR GridColor;
const GUI_FONT GUI_UNI_PTR * pFont;
} LISTVIEW_PROPS;
typedef struct {
WIDGET Widget;
HEADER_Handle hHeader;
GUI_ARRAY RowArray; /* One entry per line. Every entry is a handle of GUI_ARRAY of strings */
GUI_ARRAY AlignArray; /* One entry per column */
LISTVIEW_PROPS Props;
int Sel;
int ShowGrid;
unsigned RowDistY;
unsigned LBorder;
unsigned RBorder;
WM_SCROLL_STATE ScrollStateV;
WM_SCROLL_STATE ScrollStateH;
WM_HWIN hOwner;
#if GUI_DEBUG_LEVEL > 1
int DebugId;
#endif
} LISTVIEW_Obj;
/*********************************************************************
*
* Private (module internal) data
*
**********************************************************************
*/
extern LISTVIEW_PROPS LISTVIEW_DefaultProps;
/*********************************************************************
*
* Private (module internal) functions
*
**********************************************************************
*/
int LISTVIEW__UpdateScrollParas (LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj);
void LISTVIEW__InvalidateInsideArea(LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj);
unsigned LISTVIEW__GetRowDistY (const LISTVIEW_Obj* pObj);
void LISTVIEW__InvalidateRow (LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj, int Sel);
int LISTVIEW__UpdateScrollPos (LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj);
#endif /* GUI_WINSUPPORT */
#else /* Avoid problems with empty object modules */
void LISTVIEW_C(void) {}
#endif
/*************************** End of file ****************************/
@@ -0,0 +1,198 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : MENU.h
Purpose : MENU include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef MENU_H
#define MENU_H
#include "WM.h"
#include "WIDGET.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
/*********************************************************************
*
* Create flags
*/
#define MENU_CF_HORIZONTAL (0<<0)
#define MENU_CF_VERTICAL (1<<0)
#define MENU_CF_OPEN_ON_POINTEROVER (1<<1)
#define MENU_CF_CLOSE_ON_SECOND_CLICK (1<<2)
#define MENU_CF_HIDE_DISABLED_SEL (1<<3) /* Hides the selection when a disabled item is selected */
/*********************************************************************
*
* Menu item flags
*/
#define MENU_IF_DISABLED (1<<0)
#define MENU_IF_SEPARATOR (1<<1)
/*********************************************************************
*
* Color indices
*/
#define MENU_CI_ENABLED 0
#define MENU_CI_SELECTED 1
#define MENU_CI_DISABLED 2
#define MENU_CI_DISABLED_SEL 3
#define MENU_CI_ACTIVE_SUBMENU 4
/*********************************************************************
*
* Border indices
*/
#define MENU_BI_LEFT 0
#define MENU_BI_RIGHT 1
#define MENU_BI_TOP 2
#define MENU_BI_BOTTOM 3
/*********************************************************************
*
* Message types
*/
#define MENU_ON_ITEMSELECT 0 /* Send to owner when selecting a menu item */
#define MENU_ON_INITMENU 1 /* Send to owner when for the first time selecting a submenu */
#define MENU_ON_INITSUBMENU 2 /* Send to owner when selecting a submenu */
#define MENU_ON_OPEN 3 /* Internal message of menu widget (send to submenus) */
#define MENU_ON_CLOSE 4 /* Internal message of menu widget (send to submenus) */
#define MENU_IS_MENU 5 /* Internal message of menu widget. Owner must call */
/* WM_DefaultProc() when not handle the message. */
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef WM_HMEM MENU_Handle;
/*********************************************************************
*
* menu message data
*/
typedef struct {
U16 MsgType;
U16 ItemId;
} MENU_MSG_DATA;
/*********************************************************************
*
* menu item data
*/
typedef struct {
const char* pText;
U16 Id;
U16 Flags;
MENU_Handle hSubmenu;
} MENU_ITEM_DATA;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
MENU_Handle MENU_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
MENU_Handle MENU_CreateEx (int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
#define MENU_EnableMemdev(hObj) WM_EnableMemdev(hObj)
#define MENU_DisableMemdev(hObj) WM_DisableMemdev(hObj)
#define MENU_Delete(hObj) WM_DeleteWindow(hObj)
#define MENU_Paint(hObj) WM_Paint(hObj)
#define MENU_Invalidate(hObj) WM_InvalidateWindow(hObj)
/*********************************************************************
*
* Individual member functions
*
**********************************************************************
*/
void MENU_Attach (MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags);
void MENU_Popup (MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags);
void MENU_SetOwner (MENU_Handle hObj, WM_HWIN hOwner);
void MENU_AddItem (MENU_Handle hObj, const MENU_ITEM_DATA* pItemData);
void MENU_DeleteItem (MENU_Handle hObj, U16 ItemId);
void MENU_InsertItem (MENU_Handle hObj, U16 ItemId, const MENU_ITEM_DATA* pItemData);
void MENU_SetItem (MENU_Handle hObj, U16 ItemId, const MENU_ITEM_DATA* pItemData);
void MENU_GetItem (MENU_Handle hObj, U16 ItemId, MENU_ITEM_DATA* pItemData);
void MENU_GetItemText (MENU_Handle hObj, U16 ItemId, char* pBuffer, unsigned BufferSize);
unsigned MENU_GetNumItems (MENU_Handle hObj);
void MENU_DisableItem (MENU_Handle hObj, U16 ItemId);
void MENU_EnableItem (MENU_Handle hObj, U16 ItemId);
/*********************************************************************
*
* Member functions, get / set properties
*
**********************************************************************
*/
void MENU_SetTextColor (MENU_Handle hObj, unsigned ColorIndex, GUI_COLOR Color);
void MENU_SetBkColor (MENU_Handle hObj, unsigned ColorIndex, GUI_COLOR Color);
void MENU_SetBorderSize (MENU_Handle hObj, unsigned BorderIndex, U8 BorderSize);
void MENU_SetFont (MENU_Handle hObj, const GUI_FONT GUI_UNI_PTR* pFont);
/*********************************************************************
*
* Member functions, get / set defaults
*
**********************************************************************
*/
GUI_COLOR MENU_GetDefaultTextColor (unsigned ColorIndex);
GUI_COLOR MENU_GetDefaultBkColor (unsigned ColorIndex);
U8 MENU_GetDefaultBorderSize (unsigned BorderIndex);
const WIDGET_EFFECT* MENU_GetDefaultEffect (void);
const GUI_FONT GUI_UNI_PTR* MENU_GetDefaultFont (void);
void MENU_SetDefaultTextColor (unsigned ColorIndex, GUI_COLOR Color);
void MENU_SetDefaultBkColor (unsigned ColorIndex, GUI_COLOR Color);
void MENU_SetDefaultBorderSize (unsigned BorderIndex, U8 BorderSize);
void MENU_SetDefaultEffect (const WIDGET_EFFECT* pEffect);
void MENU_SetDefaultFont (const GUI_FONT GUI_UNI_PTR* pFont);
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif /* MENU_H */
/*************************** End of file ****************************/
@@ -0,0 +1,131 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : MENU_Private.h
Purpose : Internal header file
---------------------------END-OF-HEADER------------------------------
*/
#ifndef MENU_PRIVATE_H
#define MENU_PRIVATE_H
#if GUI_WINSUPPORT
#include "WIDGET.h"
#include "GUI_ARRAY.h"
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
/*********************************************************************
*
* Status flags
*/
#define MENU_SF_HORIZONTAL MENU_CF_HORIZONTAL
#define MENU_SF_VERTICAL MENU_CF_VERTICAL
#define MENU_SF_OPEN_ON_POINTEROVER MENU_CF_OPEN_ON_POINTEROVER
#define MENU_SF_CLOSE_ON_SECOND_CLICK MENU_CF_CLOSE_ON_SECOND_CLICK
#define MENU_SF_HIDE_DISABLED_SEL MENU_CF_HIDE_DISABLED_SEL
#define MENU_SF_ACTIVE (1<<6) /* Internal flag only */
#define MENU_SF_POPUP (1<<7) /* Internal flag only */
/*********************************************************************
*
* Types
*
**********************************************************************
*/
/*********************************************************************
*
* menu item
*/
typedef struct {
MENU_Handle hSubmenu;
U16 Id;
U16 Flags;
int TextWidth;
char acText[1];
} MENU_ITEM;
/*********************************************************************
*
* menu properties
*/
typedef struct {
GUI_COLOR aTextColor[5];
GUI_COLOR aBkColor[5];
U8 aBorder[4];
const GUI_FONT GUI_UNI_PTR* pFont;
} MENU_PROPS;
/*********************************************************************
*
* menu object
*/
typedef struct {
WIDGET Widget;
MENU_PROPS Props;
GUI_ARRAY ItemArray;
WM_HWIN hOwner;
U16 Flags;
char IsSubmenuActive;
int Width;
int Height;
int Sel;
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
int DebugId;
#endif
} MENU_Obj;
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
MENU_Obj* MENU_h2p(MENU_Handle h);
#define MENU_H2P(h) MENU_h2p(h)
#else
#define MENU_H2P(h) ((MENU_Obj*)GUI_ALLOC_h2p(h))
#endif
/*********************************************************************
*
* Public data (internal defaults)
*
**********************************************************************
*/
extern MENU_PROPS MENU__DefaultProps;
extern const WIDGET_EFFECT* MENU__pDefaultEffect;
/*********************************************************************
*
* Public functions (internal)
*
**********************************************************************
*/
void MENU__RecalcTextWidthOfItems(MENU_Obj* pObj);
void MENU__ResizeMenu (MENU_Handle hObj, MENU_Obj* pObj);
unsigned MENU__GetNumItems (MENU_Obj* pObj);
char MENU__SetItem (MENU_Handle hObj, MENU_Obj* pObj, unsigned Index, const MENU_ITEM_DATA* pItemData);
void MENU__SetItemFlags (MENU_Obj* pObj, unsigned Index, U16 Mask, U16 Flags);
void MENU__InvalidateItem (MENU_Handle hObj, const MENU_Obj* pObj, unsigned Index);
int MENU__FindItem (MENU_Handle hObj, U16 ItemId, MENU_Handle* phMenu);
int MENU__SendMenuMessage (MENU_Handle hObj, WM_HWIN hDestWin, U16 MsgType, U16 ItemId);
#endif /* GUI_WINSUPPORT */
#endif /* MENU_PRIVATE_H */
/*************************** End of file ****************************/
@@ -0,0 +1,39 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : MESSAGEBOX.h
Purpose : Message box interface
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef MESSAGEBOX_H
#define MESSAGEBOX_H
#include "WM.h"
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
WM_HWIN MESSAGEBOX_Create(const char * sMessage, const char * sCaption, int Flags);
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif /* MESSAGEBOX */
@@ -0,0 +1,122 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : MULTIEDIT.h
Purpose : MULTIEDIT include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef MULTIEDIT_H
#define MULTIEDIT_H
#include "WM.h"
#include "DIALOG.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
#define MULTIEDIT_CF_READONLY (1 << 0)
#define MULTIEDIT_CF_INSERT (1 << 2)
#define MULTIEDIT_CF_AUTOSCROLLBAR_V (1 << 3)
#define MULTIEDIT_CF_AUTOSCROLLBAR_H (1 << 4)
#define MULTIEDIT_CF_PASSWORD (1 << 5)
#define MULTIEDIT_SF_READONLY MULTIEDIT_CF_READONLY
#define MULTIEDIT_SF_INSERT MULTIEDIT_CF_INSERT
#define MULTIEDIT_SF_AUTOSCROLLBAR_V MULTIEDIT_CF_AUTOSCROLLBAR_V
#define MULTIEDIT_SF_AUTOSCROLLBAR_H MULTIEDIT_CF_AUTOSCROLLBAR_H
#define MULTIEDIT_SF_PASSWORD MULTIEDIT_CF_PASSWORD
/*********************************************************************
*
* Color indices
*/
#define MULTIEDIT_CI_EDIT 0
#define MULTIEDIT_CI_READONLY 1
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM MULTIEDIT_HANDLE;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
MULTIEDIT_HANDLE MULTIEDIT_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags,
int Id, int BufferSize, const char* pText);
MULTIEDIT_HANDLE MULTIEDIT_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int Id, int Flags, int ExFlags, const char* pText,
int BufferSize);
MULTIEDIT_HANDLE MULTIEDIT_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo,
WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
int MULTIEDIT_AddKey (MULTIEDIT_HANDLE hObj, U16 Key);
void MULTIEDIT_GetPrompt (MULTIEDIT_HANDLE hObj, char* sDest, int MaxNumChars);
int MULTIEDIT_GetTextSize (MULTIEDIT_HANDLE hObj);
void MULTIEDIT_GetText (MULTIEDIT_HANDLE hObj, char* sDest, int MaxNumChars);
void MULTIEDIT_SetAutoScrollH (MULTIEDIT_HANDLE hObj, int OnOff);
void MULTIEDIT_SetAutoScrollV (MULTIEDIT_HANDLE hObj, int OnOff);
void MULTIEDIT_SetBkColor (MULTIEDIT_HANDLE hObj, unsigned Index, GUI_COLOR color);
void MULTIEDIT_SetCursorCharPos (MULTIEDIT_HANDLE hObj, int x, int y); /* Not yet implemented */
void MULTIEDIT_SetCursorPixelPos(MULTIEDIT_HANDLE hObj, int x, int y); /* Not yet implemented */
void MULTIEDIT_SetCursorOffset (MULTIEDIT_HANDLE hObj, int Offset);
void MULTIEDIT_SetHBorder (MULTIEDIT_HANDLE hObj, unsigned HBorder);
void MULTIEDIT_SetFont (MULTIEDIT_HANDLE hObj, const GUI_FONT GUI_UNI_PTR * pFont);
void MULTIEDIT_SetInsertMode (MULTIEDIT_HANDLE hObj, int OnOff);
void MULTIEDIT_SetBufferSize (MULTIEDIT_HANDLE hObj, int BufferSize);
void MULTIEDIT_SetMaxNumChars (MULTIEDIT_HANDLE hObj, unsigned MaxNumChars);
void MULTIEDIT_SetPrompt (MULTIEDIT_HANDLE hObj, const char* sPrompt);
void MULTIEDIT_SetReadOnly (MULTIEDIT_HANDLE hObj, int OnOff);
void MULTIEDIT_SetPasswordMode (MULTIEDIT_HANDLE hObj, int OnOff);
void MULTIEDIT_SetText (MULTIEDIT_HANDLE hObj, const char* s);
void MULTIEDIT_SetTextColor (MULTIEDIT_HANDLE hObj, unsigned Index, GUI_COLOR color);
void MULTIEDIT_SetWrapNone (MULTIEDIT_HANDLE hObj);
void MULTIEDIT_SetWrapChar (MULTIEDIT_HANDLE hObj);
void MULTIEDIT_SetWrapWord (MULTIEDIT_HANDLE hObj);
/*********************************************************************
*
* Macros for compatibility with older versions
*
**********************************************************************
*/
#define MULTIEDIT_SetMaxLen(hObj, MaxLen) MULTIEDIT_SetBufferSize(hObj, MaxLen)
#define MULTIEDIT_GetStringSize MULTIEDIT_GetTextSize
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* MULTIEDIT_H */
@@ -0,0 +1,113 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : MULTIPAGE.h
Purpose : MULTIPAGE include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef MULTIPAGE_H
#define MULTIPAGE_H
#include "WM.h"
#include "DIALOG.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* defines
*
**********************************************************************
*/
/*********************************************************************
*
* Create / Status flags
*/
#define MULTIPAGE_ALIGN_LEFT (0<<0)
#define MULTIPAGE_ALIGN_RIGHT (1<<0)
#define MULTIPAGE_ALIGN_TOP (0<<2)
#define MULTIPAGE_ALIGN_BOTTOM (1<<2)
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM MULTIPAGE_Handle;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
MULTIPAGE_Handle MULTIPAGE_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, int SpecialFlags);
MULTIPAGE_Handle MULTIPAGE_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
MULTIPAGE_Handle MULTIPAGE_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
/* Methods changing properties */
void MULTIPAGE_AddPage (MULTIPAGE_Handle hObj, WM_HWIN hWin ,const char* pText);
void MULTIPAGE_DeletePage (MULTIPAGE_Handle hObj, unsigned Index, int Delete);
void MULTIPAGE_SelectPage (MULTIPAGE_Handle hObj, unsigned Index);
void MULTIPAGE_EnablePage (MULTIPAGE_Handle hObj, unsigned Index);
void MULTIPAGE_DisablePage (MULTIPAGE_Handle hObj, unsigned Index);
void MULTIPAGE_SetText (MULTIPAGE_Handle hObj, const char* pText, unsigned Index);
void MULTIPAGE_SetBkColor (MULTIPAGE_Handle hObj, GUI_COLOR Color, unsigned Index);
void MULTIPAGE_SetTextColor (MULTIPAGE_Handle hObj, GUI_COLOR Color, unsigned Index);
void MULTIPAGE_SetFont (MULTIPAGE_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont);
void MULTIPAGE_SetAlign (MULTIPAGE_Handle hObj, unsigned Align);
int MULTIPAGE_GetSelection (MULTIPAGE_Handle hObj);
WM_HWIN MULTIPAGE_GetWindow (MULTIPAGE_Handle hObj, unsigned Index);
int MULTIPAGE_IsPageEnabled (MULTIPAGE_Handle hObj, unsigned Index);
/*********************************************************************
*
* Get/Set defaults
*
**********************************************************************
*/
unsigned MULTIPAGE_GetDefaultAlign(void);
GUI_COLOR MULTIPAGE_GetDefaultBkColor(unsigned Index);
const GUI_FONT GUI_UNI_PTR * MULTIPAGE_GetDefaultFont(void);
GUI_COLOR MULTIPAGE_GetDefaultTextColor(unsigned Index);
void MULTIPAGE_SetDefaultAlign(unsigned Align);
void MULTIPAGE_SetDefaultBkColor(GUI_COLOR Color, unsigned Index);
void MULTIPAGE_SetDefaultFont(const GUI_FONT GUI_UNI_PTR * pFont);
void MULTIPAGE_SetDefaultTextColor(GUI_COLOR Color, unsigned Index);
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* MULTIPAGE_H */
@@ -0,0 +1,61 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : MULTIPAGE_Private.h
Purpose : Private MULTIPAGE include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef MULTIPAGE_PRIVATE_H
#include "GUIDebug.h"
#include "MULTIPAGE.h"
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define MULTIPAGE_STATE_ENABLED (1<<0)
#define MULTIPAGE_STATE_SCROLLMODE WIDGET_STATE_USER0
#define MULTIPAGE_ID 0x4544 /* Magic number, should be unique if possible */
#define MULTIPAGE_H2P(h) (MULTIPAGE_Obj*) WM_H2P(h)
#if GUI_DEBUG_LEVEL > 1
#define MULTIPAGE_ASSERT_IS_VALID_PTR(p) GUI_DEBUG_ERROROUT_IF(p->DebugId != MULTIPAGE_ID, "MULTIPAGE.c: Wrong handle type or Object not init'ed")
#define MULTIPAGE_INIT_ID(p) p->DebugId = MULTIPAGE_ID
#define MULTIPAGE_DEINIT_ID(p) p->DebugId = MULTIPAGE_ID+1
#else
#define MULTIPAGE_ASSERT_IS_VALID_PTR(p)
#define MULTIPAGE_INIT_ID(p)
#define MULTIPAGE_DEINIT_ID(p)
#endif
/*********************************************************************
*
* Externals
*
**********************************************************************
*/
extern const GUI_FONT GUI_UNI_PTR * MULTIPAGE__pDefaultFont;
extern unsigned MULTIPAGE__DefaultAlign;
extern GUI_COLOR MULTIPAGE__DefaultBkColor[2];
extern GUI_COLOR MULTIPAGE__DefaultTextColor[2];
#endif /* MULTIPAGE_PRIVATE_H */
@@ -0,0 +1,82 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : PROGBAR.h
Purpose : Progressbar include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef PROGBAR_H /* Avoid multiple inclusion */
#define PROGBAR_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
typedef WM_HMEM PROGBAR_Handle;
/************************************************************
*
* Create
*
*************************************************************
*/
PROGBAR_Handle PROGBAR_Create (int x0, int y0, int xsize, int ysize, int Flags);
PROGBAR_Handle PROGBAR_CreateAsChild (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags);
PROGBAR_Handle PROGBAR_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
PROGBAR_Handle PROGBAR_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/************************************************************
*
* Standard member functions
*
*************************************************************
*/
#define PROGBAR_EnableMemdev(hObj) WM_EnableMemdev(hObj)
#define PROGBAR_DisableMemdev(hObj) WM_DisableMemdev(hObj)
#define PROGBAR_Delete(hObj) WM_DeleteWindow(hObj)
#define PROGBAR_Paint(hObj) WM_Paint(hObj)
/************************************************************
*
* Individual member functions
*
*************************************************************
*/
void PROGBAR_SetBarColor (PROGBAR_Handle hObj, unsigned int index, GUI_COLOR color);
void PROGBAR_SetFont (PROGBAR_Handle hObj, const GUI_FONT GUI_UNI_PTR * pfont);
void PROGBAR_SetMinMax (PROGBAR_Handle hObj, int Min, int Max);
void PROGBAR_SetText (PROGBAR_Handle hObj, const char* s);
void PROGBAR_SetTextAlign(PROGBAR_Handle hObj, int Align);
void PROGBAR_SetTextColor(PROGBAR_Handle hObj, unsigned int index, GUI_COLOR color);
void PROGBAR_SetTextPos (PROGBAR_Handle hObj, int XOff, int YOff);
void PROGBAR_SetValue (PROGBAR_Handle hObj, int v);
#if defined(__cplusplus)
}
#endif
#endif /* GUI_WINSUPPORT */
#endif /* PROGBAR_H */
@@ -0,0 +1,128 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : RADIO.h
Purpose : RADIO include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef RADIO_H
#define RADIO_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Bitmap indices
*/
#define RADIO_BI_INACTIV 0
#define RADIO_BI_ACTIV 1
#define RADIO_BI_CHECK 2
/*********************************************************************
*
* Defaults for public configuration switches
*
**********************************************************************
The following are defaults for config switches which affect the
interface specified in this module
*/
/*********************************************************************
*
* defines
*
**********************************************************************
*/
#define RADIO_TEXTPOS_RIGHT 0
#define RADIO_TEXTPOS_LEFT WIDGET_STATE_USER0 /* Not implemented, TBD */
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM RADIO_Handle;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
RADIO_Handle RADIO_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, unsigned Para);
RADIO_Handle RADIO_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
RADIO_Handle RADIO_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id, int NumItems, int Spacing);
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
void RADIO_SetDefaultFont (const GUI_FONT GUI_UNI_PTR* pFont);
void RADIO_SetDefaultImage (const GUI_BITMAP * pBitmap, unsigned int Index);
void RADIO_SetDefaultTextColor (GUI_COLOR TextColor);
const GUI_FONT GUI_UNI_PTR* RADIO_GetDefaultFont (void);
GUI_COLOR RADIO_GetDefaultTextColor (void);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
void RADIO_AddValue (RADIO_Handle hObj, int Add);
void RADIO_Dec (RADIO_Handle hObj);
void RADIO_Inc (RADIO_Handle hObj);
void RADIO_SetBkColor (RADIO_Handle hObj, GUI_COLOR Color);
void RADIO_SetFont (RADIO_Handle hObj, const GUI_FONT GUI_UNI_PTR* pFont);
void RADIO_SetGroupId (RADIO_Handle hObj, U8 GroupId);
void RADIO_SetImage (RADIO_Handle hObj, const GUI_BITMAP * pBitmap, unsigned int Index);
void RADIO_SetText (RADIO_Handle hObj, const char* pText, unsigned Index);
void RADIO_SetTextColor (RADIO_Handle hObj, GUI_COLOR Color);
void RADIO_SetValue (RADIO_Handle hObj, int v);
/*********************************************************************
*
* Query state
*
**********************************************************************
*/
int RADIO_GetValue(RADIO_Handle hObj);
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* RADIO_H */
/************************* end of file ******************************/
@@ -0,0 +1,101 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : RADIO_Private.h
Purpose : RADIO private header file
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef RADIO_PRIVATE_H
#define RADIO_PRIVATE_H
#include "WM.h"
#if GUI_WINSUPPORT
#include "RADIO.h"
#include "WIDGET.h"
#include "GUI_ARRAY.h"
/*********************************************************************
*
* Object definition
*
**********************************************************************
*/
typedef struct {
WIDGET Widget;
const GUI_BITMAP* apBmRadio[2];
const GUI_BITMAP* pBmCheck;
GUI_ARRAY TextArray;
I16 Sel; /* current selection */
U16 Spacing;
U16 Height;
U16 NumItems;
U8 GroupId;
GUI_COLOR BkColor;
GUI_COLOR TextColor;
const GUI_FONT GUI_UNI_PTR* pFont;
#if GUI_DEBUG_LEVEL >1
int DebugId;
#endif
} RADIO_Obj;
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define RADIO_H2P(h) (RADIO_Obj*) GUI_ALLOC_h2p(h)
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef void tRADIO_SetValue(RADIO_Handle hObj, RADIO_Obj* pObj, int v);
/*********************************************************************
*
* Extern data
*
**********************************************************************
*/
extern const GUI_BITMAP RADIO__abmRadio[2];
extern const GUI_BITMAP RADIO__bmCheck;
extern const GUI_BITMAP* RADIO__apDefaultImage[2];
extern const GUI_BITMAP* RADIO__pDefaultImageCheck;
extern const GUI_FONT GUI_UNI_PTR* RADIO__pDefaultFont;
extern GUI_COLOR RADIO__DefaultTextColor;
extern tRADIO_SetValue* RADIO__pfHandleSetValue;
/*********************************************************************
*
* public functions (internal)
*
**********************************************************************
*/
void RADIO__SetValue(RADIO_Handle hObj, RADIO_Obj* pObj, int v);
#endif /* GUI_WINSUPPORT */
#endif /* RADIO_PRIVATE_H */
/************************* end of file ******************************/
@@ -0,0 +1,121 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : SCROLLBAR.h
Purpose : SCROLLBAR include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef SCROLLBAR_H
#define SCROLLBAR_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#include "WIDGET.h"
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/************************************************************
*
* #defines
*
*************************************************************
*/
/************************************************************
*
* States
*/
#define SCROLLBAR_STATE_PRESSED WIDGET_STATE_USER0
/************************************************************
*
* Create / Status flags
*/
#define SCROLLBAR_CF_VERTICAL WIDGET_CF_VERTICAL
#define SCROLLBAR_CF_FOCUSSABLE WIDGET_STATE_FOCUSSABLE
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM SCROLLBAR_Handle;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
SCROLLBAR_Handle SCROLLBAR_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int WinFlags, int SpecialFlags);
SCROLLBAR_Handle SCROLLBAR_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
SCROLLBAR_Handle SCROLLBAR_CreateAttached(WM_HWIN hParent, int SpecialFlags);
SCROLLBAR_Handle SCROLLBAR_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
/* Methods changing properties */
void SCROLLBAR_AddValue (SCROLLBAR_Handle hObj, int Add);
void SCROLLBAR_Dec (SCROLLBAR_Handle hObj);
void SCROLLBAR_Inc (SCROLLBAR_Handle hObj);
void SCROLLBAR_SetNumItems (SCROLLBAR_Handle hObj, int NumItems);
void SCROLLBAR_SetPageSize (SCROLLBAR_Handle hObj, int PageSize);
void SCROLLBAR_SetValue (SCROLLBAR_Handle hObj, int v);
int SCROLLBAR_SetWidth (SCROLLBAR_Handle hObj, int Width);
void SCROLLBAR_SetState (SCROLLBAR_Handle hObj, const WM_SCROLL_STATE* pState);
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
GUI_COLOR SCROLLBAR_GetDefaultBkColor(unsigned int Index); /* Not yet documented */
GUI_COLOR SCROLLBAR_GetDefaultColor (unsigned int Index); /* Not yet documented */
int SCROLLBAR_GetDefaultWidth (void);
GUI_COLOR SCROLLBAR_SetDefaultBkColor(GUI_COLOR Color, unsigned int Index); /* Not yet documented */
GUI_COLOR SCROLLBAR_SetDefaultColor (GUI_COLOR Color, unsigned int Index); /* Not yet documented */
int SCROLLBAR_SetDefaultWidth (int DefaultWidth);
/*********************************************************************
*
* Query state
*
**********************************************************************
*/
int SCROLLBAR_GetValue(SCROLLBAR_Handle hObj);
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* SCROLLBAR_H */
@@ -0,0 +1,96 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : SCROLLBAR_Private.h
Purpose : SCROLLBAR internal header file
---------------------------END-OF-HEADER------------------------------
*/
#ifndef SCROLLBAR_PRIVATE_H
#define SCROLLBAR_PRIVATE_H
#include "SCROLLBAR.h"
#include "WIDGET.h"
#include "GUIDebug.h"
#if GUI_WINSUPPORT
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define SCROLLBAR_ID 0x4544 /* Magic numer, should be unique if possible */
#define SCROLLBAR_H2P(h) (SCROLLBAR_Obj*) GUI_ALLOC_h2p(h)
#if GUI_DEBUG_LEVEL > 1
#define SCROLLBAR_ASSERT_IS_VALID_PTR(p) DEBUG_ERROROUT_IF(p->DebugId != SCROLLBAR_ID, "xxx.c: Wrong handle type or Object not init'ed")
#define SCROLLBAR_INIT_ID(p) p->DebugId = SCROLLBAR_ID
#define SCROLLBAR_DEINIT_ID(p) p->DebugId = SCROLLBAR_ID+1
#else
#define SCROLLBAR_ASSERT_IS_VALID_PTR(p)
#define SCROLLBAR_INIT_ID(p)
#define SCROLLBAR_DEINIT_ID(p)
#endif
/*********************************************************************
*
* Module internal data
*
**********************************************************************
*/
extern GUI_COLOR SCROLLBAR__aDefaultBkColor[2];
extern GUI_COLOR SCROLLBAR__aDefaultColor[2];
extern I16 SCROLLBAR__DefaultWidth;
/*********************************************************************
*
* Object definition
*
**********************************************************************
*/
typedef struct {
WIDGET Widget;
GUI_COLOR aBkColor[2];
GUI_COLOR aColor[2];
int NumItems, v, PageSize;
#if GUI_DEBUG_LEVEL >1
int DebugId;
#endif
} SCROLLBAR_Obj;
typedef struct {
int x0_LeftArrow;
int x1_LeftArrow;
int x0_Thumb;
int x1_Thumb;
int x0_RightArrow;
int x1_RightArrow;
int x1;
int xSizeMoveable;
int ThumbSize;
} SCROLLBAR_POSITIONS;
void SCROLLBAR__InvalidatePartner(SCROLLBAR_Handle hObj);
#endif /* GUI_WINSUPPORT */
#endif /* Avoid multiple inclusion */
@@ -0,0 +1,114 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : SLIDER.h
Purpose : SLIDER include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef SLIDER_H
#define SLIDER_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#include "WIDGET.h" /* Req. for Create indirect data structure */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/************************************************************
*
* #defines
*
*************************************************************
*/
/************************************************************
*
* States
*/
#define SLIDER_STATE_PRESSED WIDGET_STATE_USER0
/************************************************************
*
* Create / Status flags
*/
#define SLIDER_CF_VERTICAL WIDGET_CF_VERTICAL
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM SLIDER_Handle;
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
SLIDER_Handle SLIDER_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int WinFlags, int SpecialFlags);
SLIDER_Handle SLIDER_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
SLIDER_Handle SLIDER_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
/* Methods changing properties */
/* Note: These are just examples. The actual methods available for the
widget will depend on the type of widget. */
void SLIDER_Inc (SLIDER_Handle hObj);
void SLIDER_Dec (SLIDER_Handle hObj);
void SLIDER_SetBkColor (SLIDER_Handle hObj, GUI_COLOR Color);
void SLIDER_SetWidth (SLIDER_Handle hObj, int Width);
void SLIDER_SetValue (SLIDER_Handle hObj, int v);
void SLIDER_SetRange (SLIDER_Handle hObj, int Min, int Max);
void SLIDER_SetNumTicks (SLIDER_Handle hObj, int NumTicks);
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
void SLIDER_SetDefaultBkColor(GUI_COLOR Color);
/*********************************************************************
*
* Query state
*
**********************************************************************
*/
int SLIDER_GetValue(SLIDER_Handle hObj);
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* SLIDER_H */
@@ -0,0 +1,141 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : TEXT.h
Purpose : TEXT include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef TEXT_H
#define TEXT_H
#include "WM.h"
#include "DIALOG_Intern.h" /* Req. for Create indirect data structure */
#include "WIDGET.h" /* Req. for Create indirect data structure */
#include "GUIDebug.h" /* Req. for GUI_DEBUG_LEVEL */
#if GUI_WINSUPPORT
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/************************************************************
*
* #defines
*
*************************************************************
*/
/************************************************************
*
* Create / Status flags
*/
#define TEXT_CF_LEFT GUI_TA_LEFT
#define TEXT_CF_RIGHT GUI_TA_RIGHT
#define TEXT_CF_HCENTER GUI_TA_HCENTER
#define TEXT_CF_VCENTER GUI_TA_VCENTER
#define TEXT_CF_TOP GUI_TA_TOP
#define TEXT_CF_BOTTOM GUI_TA_BOTTOM
/*********************************************************************
*
* Public Types
*
**********************************************************************
*/
typedef WM_HMEM TEXT_Handle;
/*********************************************************************
*
* Standard member functions
*
**********************************************************************
*/
#define TEXT_EnableMemdev(hObj) WM_EnableMemdev(hObj)
#define TEXT_DisableMemdev(hObj) WM_DisableMemdev(hObj)
#define TEXT_Delete(hObj) WM_DeleteWindow(hObj)
#define TEXT_Paint(hObj) WM_Paint(hObj)
#define TEXT_Invalidate(hObj) WM_InvalidateWindow(hObj)
/*********************************************************************
*
* Create functions
*
**********************************************************************
*/
TEXT_Handle TEXT_Create (int x0, int y0, int xsize, int ysize, int Id, int Flags, const char * s, int Align);
TEXT_Handle TEXT_CreateAsChild (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, const char * s, int Align);
TEXT_Handle TEXT_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb);
TEXT_Handle TEXT_CreateEx (int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
int WinFlags, int ExFlags, int Id, const char* pText);
/*********************************************************************
*
* Member functions
*
**********************************************************************
*/
/* Methods changing properties */
void TEXT_SetBkColor (TEXT_Handle pObj, GUI_COLOR Color); /* Obsolete. Left in GUI for compatibility to older versions */
void TEXT_SetFont (TEXT_Handle pObj, const GUI_FONT GUI_UNI_PTR * pFont);
void TEXT_SetText (TEXT_Handle pObj, const char* s);
void TEXT_SetTextAlign(TEXT_Handle pObj, int Align);
void TEXT_SetTextColor(TEXT_Handle pObj, GUI_COLOR Color);
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
void TEXT_SetDefaultFont(const GUI_FONT GUI_UNI_PTR * pFont);
const GUI_FONT GUI_UNI_PTR * TEXT_GetDefaultFont(void);
void TEXT_SetDefaultTextColor(GUI_COLOR Color);
/*********************************************************************
*
* Internal: Object definition
*
**********************************************************************
*/
typedef struct {
WIDGET Widget;
WM_HMEM hpText;
const GUI_FONT GUI_UNI_PTR * pFont;
I16 Align;
GUI_COLOR TextColor;
GUI_COLOR BkColor;
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
int DebugId;
#endif
} TEXT_Obj;
#define TEXT_H2P(h) (TEXT_Obj*) GUI_ALLOC_h2p(h)
#if defined(__cplusplus)
}
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* TEXT_H */
@@ -0,0 +1,59 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : TEXT.h
Purpose : TEXT include
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef TEXT_PRIVATE_H
#define TEXT_PRIVATE_H
#include "TEXT.h"
#if GUI_WINSUPPORT
/*********************************************************************
*
* Private config defaults
*
**********************************************************************
*/
#ifndef TEXT_SUPPORT_TRANSPARENCY
#define TEXT_SUPPORT_TRANSPARENCY WM_SUPPORT_TRANSPARENCY
#endif
/*********************************************************************
*
* Macros for internal use
*
**********************************************************************
*/
#define TEXT_ID 0x4544 /* Magic numer, should be unique if possible */
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
#define TEXT_ASSERT_IS_VALID_PTR(p) DEBUG_ERROROUT_IF(p->DebugId != TEXT_ID, "xxx.c: Wrong handle type or Object not init'ed")
#define TEXT_INIT_ID(p) p->DebugId = TEXT_ID
#define TEXT_DEINIT_ID(p) p->DebugId = TEXT_ID+1
#else
#define TEXT_ASSERT_IS_VALID_PTR(p)
#define TEXT_INIT_ID(p)
#define TEXT_DEINIT_ID(p)
#endif
#endif /* if GUI_WINSUPPORT */
#endif /* TEXT_PRIVATE_H */
@@ -0,0 +1,231 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : WIDGET.h
Purpose : Widget interface
---------------------------END-OF-HEADER------------------------------
*/
#ifndef WIDGET_H /* Avoid multiple inclusion */
#define WIDGET_H
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
#include "WM_Intern.h" /* Window manager, including some internals, which speed things up */
#if GUI_WINSUPPORT
#include "SCROLLBAR.h"
/*********************************************************************
*
* defines
*
**********************************************************************
*/
#define WIDGET_H2P(hWin) ((WIDGET*)GUI_ALLOC_h2p(hWin))
/*********************************************************************
*
* States
*/
#define WIDGET_STATE_FOCUS (1<<0)
#define WIDGET_STATE_VERTICAL (1<<3)
#define WIDGET_STATE_FOCUSSABLE (1<<4)
#define WIDGET_STATE_USER0 (1<<8) /* Freely available for derived widget */
#define WIDGET_STATE_USER1 (1<<9) /* Freely available for derived widget */
#define WIDGET_STATE_USER2 (1<<10) /* Freely available for derived widget */
#define WIDGET_ITEM_DRAW 0
#define WIDGET_ITEM_GET_XSIZE 1
#define WIDGET_ITEM_GET_YSIZE 2
/*********************************************************************
*
* Messages
*/
#define WM_WIDGET_SET_EFFECT WM_WIDGET + 0
/*********************************************************************
*
* Create flags
*/
#define WIDGET_CF_VERTICAL WIDGET_STATE_VERTICAL
/*********************************************************************
*
* typedefs
*
**********************************************************************
*/
typedef struct {
WM_HWIN hWin;
int Cmd; /* WIDGET_ITEM_GET_XSIZE, WIDGET_ITEM_GET_YSIZE, WIDGET_ITEM_DRAW, */
int ItemIndex;
int x0, y0;
} WIDGET_ITEM_DRAW_INFO;
typedef int WIDGET_DRAW_ITEM_FUNC(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo);
/*********************************************************************
*
* Widget object
*
* The widget object is the base class for most widgets
*/
typedef struct {
void (*pfDrawUp)(void);
void (*pfDrawDown)(void);
void (*pfDrawUpRect) (const GUI_RECT *pRect);
void (*pfDrawDownRect)(const GUI_RECT *pRect);
void (*pfGetRect)(GUI_RECT *pRect);
int EffectSize;
} WIDGET_EFFECT;
typedef struct {
WM_Obj Win;
const WIDGET_EFFECT* pEffect;
I16 Id;
U16 State;
} WIDGET;
/*********************************************************************
*
* GUI_DRAW
*
* The GUI_DRAW object is used as base class for selfdrawing,
* non-windows objects. They are used as content of different widgets,
* such as the bitmap or header widgets.
*/
/* Declare Object struct */
typedef struct GUI_DRAW GUI_DRAW;
typedef void GUI_DRAW_SELF_CB (void);
/* Declare Object constants (member functions etc) */
typedef struct {
void (* pfDraw) (const GUI_DRAW * pObj, int x, int y);
int (* pfGetXSize)(const GUI_DRAW * pObj);
int (* pfGetYSize)(const GUI_DRAW * pObj);
} GUI_DRAW_CONSTS;
/* Declare Object */
struct GUI_DRAW {
const GUI_DRAW_CONSTS* pConsts;
union {
const void * pData;
GUI_DRAW_SELF_CB* pfDraw;
} Data;
I16 xOff, yOff;
};
typedef WM_HMEM GUI_DRAW_HANDLE;
/* GUI_DRAW_ API */
void GUI_DRAW__Draw (GUI_DRAW_HANDLE hDrawObj, int x, int y);
int GUI_DRAW__GetXSize(GUI_DRAW_HANDLE hDrawObj);
int GUI_DRAW__GetYSize(GUI_DRAW_HANDLE hDrawObj);
/* GUI_DRAW_ Constructurs for different objects */
WM_HMEM GUI_DRAW_BITMAP_Create (const GUI_BITMAP* pBitmap, int x, int y);
WM_HMEM GUI_DRAW_BMP_Create (const void* pBMP, int x, int y);
WM_HMEM GUI_DRAW_STREAMED_Create(const GUI_BITMAP_STREAM * pBitmap, int x, int y);
WM_HMEM GUI_DRAW_SELF_Create(GUI_DRAW_SELF_CB* pfDraw, int x, int y);
/*********************************************************************
*
* Global data
*
**********************************************************************
*/
extern const WIDGET_EFFECT WIDGET_Effect_3D;
extern const WIDGET_EFFECT WIDGET_Effect_3D1L;
extern const WIDGET_EFFECT WIDGET_Effect_3D2L;
extern const WIDGET_EFFECT WIDGET_Effect_None;
extern const WIDGET_EFFECT WIDGET_Effect_Simple;
/*********************************************************************
*
* Internal API routines
*
**********************************************************************
*/
void WIDGET__DrawFocusRect(WIDGET* pWidget, const GUI_RECT* pRect, int Dist);
void WIDGET__DrawVLine(WIDGET* pWidget, int x, int y0, int y1);
void WIDGET__EFFECT_DrawDownRect(WIDGET* pWidget, GUI_RECT* pRect);
void WIDGET__EFFECT_DrawDown(WIDGET* pWidget);
void WIDGET__EFFECT_DrawUpRect(WIDGET* pWidget, GUI_RECT* pRect);
void WIDGET__FillRectEx(WIDGET* pWidget, const GUI_RECT* pRect);
int WIDGET__GetWindowSizeX(WM_HWIN hWin);
GUI_COLOR WIDGET__GetBkColor(WM_HWIN hObj);
int WIDGET__GetXSize(const WIDGET* pWidget);
int WIDGET__GetYSize(const WIDGET* pWidget);
void WIDGET__GetClientRect(WIDGET* pWidget, GUI_RECT* pRect);
void WIDGET__GetInsideRect(WIDGET* pWidget, GUI_RECT* pRect);
void WIDGET__Init(WIDGET* pWidget, int Id, U16 State);
void WIDGET__RotateRect90(WIDGET* pWidget, GUI_RECT* pDest, const GUI_RECT* pRect);
void WIDGET__SetScrollState(WM_HWIN hWin, const WM_SCROLL_STATE* pVState, const WM_SCROLL_STATE* pState);
void WIDGET__FillStringInRect(const char GUI_UNI_PTR * pText, const GUI_RECT * pFillRect, const GUI_RECT * pTextRectMax, const GUI_RECT * pTextRectAct);
/*********************************************************************
*
* API routines
*
**********************************************************************
*/
void WIDGET_SetState (WM_HWIN hObj, int State);
void WIDGET_AndState (WM_HWIN hObj, int State);
void WIDGET_OrState (WM_HWIN hObj, int State);
int WIDGET_HandleActive (WM_HWIN hObj, WM_MESSAGE* pMsg);
int WIDGET_GetState (WM_HWIN hObj);
int WIDGET_SetWidth (WM_HWIN hObj, int Width);
void WIDGET_EFFECT_3D_DrawUp(void);
void WIDGET_SetDefaultEffect_3D (void);
void WIDGET_SetDefaultEffect_3D1L (void);
void WIDGET_SetDefaultEffect_3D2L (void);
void WIDGET_SetDefaultEffect_None (void);
void WIDGET_SetDefaultEffect_Simple(void);
const WIDGET_EFFECT* WIDGET_SetDefaultEffect(const WIDGET_EFFECT* pEffect);
void WIDGET_SetEffect (WM_HWIN hObj, const WIDGET_EFFECT* pEffect);
const WIDGET_EFFECT* WIDGET_GetDefaultEffect(void);
int WIDGET_SetWidth(WM_HWIN hObj, int Width);
#endif /* GUI_WINSUPPORT */
#if defined(__cplusplus)
}
#endif
#endif /* SLIDER_H */
@@ -0,0 +1,37 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : WINDOW_Private.h
Purpose : WINDOW private header file
--------------------END-OF-HEADER-------------------------------------
*/
#ifndef WINDOW_PRIVATE_H
#define WINDOW_PRIVATE_H
#include "WM.h"
#if GUI_WINSUPPORT
/*********************************************************************
*
* Externals
*
**********************************************************************
*/
extern GUI_COLOR WINDOW__DefaultBkColor;
#endif /* GUI_WINSUPPORT */
#endif /* WINDOW_PRIVATE_H */
@@ -0,0 +1,537 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : WM.h
Purpose : Windows manager include
----------------------------------------------------------------------
*/
#ifndef WM_H /* Make sure we only include it once */
#define WM_H
#include "GUI_ConfDefaults.h"
#include "GUIType.h" /* Needed because of typedefs only */
#include "WM_GUI.h" /* Some functions needed by GUI routines */
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/* Support for transparency. Switching it off makes Wm smaller and faster */
#ifndef WM_SUPPORT_TRANSPARENCY
#define WM_SUPPORT_TRANSPARENCY 1 /* Should be defined outside of GUI_WINSUPPORT because of "#if GUI_WINSUPPORT && WM_SUPPORT_TRANSPARENCY" in some files */
#endif
/* This is for tests only. It will fill the invalid area of a window.
Can be used for debugging. */
#ifndef WM_SUPPORT_DIAG
#ifdef WIN32 /* In simulation */
#define WM_SUPPORT_DIAG GUI_WINSUPPORT
#else
#define WM_SUPPORT_DIAG 0
#endif
#endif
/* Make sure we actually have configured windows. If we have not,
there is no point for a windows manager and it will therefor not
generate any code !
*/
#if GUI_WINSUPPORT
/*********************************************************************
*
* Config defaults
*
**********************************************************************
*/
#ifndef WM_ASSERT
#define WM_ASSERT(expr) GUI_DEBUG_ASSERT(expr)
#endif
#ifndef WM_SUPPORT_TOUCH
#define WM_SUPPORT_TOUCH GUI_SUPPORT_TOUCH
#endif
#ifndef WM_SUPPORT_OBSTRUCT
#define WM_SUPPORT_OBSTRUCT 1
#endif
/* Allow older API calls */
#ifndef WM_COMPATIBLE_MODE
#define WM_COMPATIBLE_MODE 1
#endif
/* Send a message if visibility of a window has changed */
#ifndef WM_SUPPORT_NOTIFY_VIS_CHANGED
#define WM_SUPPORT_NOTIFY_VIS_CHANGED 0
#endif
/*
*************************************************************
* *
* Configuration check *
* *
*************************************************************
*/
/*
*************************************************************
* *
* Locking macros *
* *
*************************************************************
For performance reasons, the windows manager uses the same locking mechanisms
as the GUI layer. The advantage is that wiht a single call to GUI_LOCK both
the graphic level and the WM level are covered.
*/
#define WM_LOCK() GUI_LOCK()
#define WM_UNLOCK() GUI_UNLOCK()
/************************************************************
*
* Data types
*
*************************************************************
*/
typedef struct {
int Key, PressedCnt;
} WM_KEY_INFO;
typedef struct {
int NumItems, v, PageSize;
} WM_SCROLL_STATE;
typedef struct {
int Done;
int ReturnValue;
} WM_DIALOG_STATUS;
typedef struct {
int x,y;
U8 State;
U8 StatePrev;
} WM_PID_STATE_CHANGED_INFO;
/*********************************************************************
*
* Messages Ids
The following is the list of windows messages.
*/
#define WM_CREATE 0x0001 /* The first message received, right after client has actually been created */
#define WM_MOVE 0x0003 /* window has been moved (Same as WIN32) */
#define WM_SIZE 0x0005 /* Is sent to a window after its size has changed (Same as WIN32, do not change !) */
#define WM_DELETE 11 /* Delete (Destroy) command: This tells the client to free its data strutures since the window
it is associates with no longer exists.*/
#define WM_TOUCH 12 /* Touch screen message */
#define WM_TOUCH_CHILD 13 /* Touch screen message to ancestors */
#define WM_KEY 14 /* Key has been pressed */
#define WM_PAINT 0x000F /* Repaint window (because content is (partially) invalid */
#if GUI_SUPPORT_MOUSE
#define WM_MOUSEOVER 16 /* Mouse has moved, no key pressed */
#endif
#define WM_PID_STATE_CHANGED 17 /* Pointer input device state has changed */
#define WM_GET_INSIDE_RECT 20 /* get inside rectangle: client rectangle minus pixels lost to effect */
#define WM_GET_ID 21 /* Get id of widget */
#define WM_SET_ID 22 /* Set id of widget */
#define WM_GET_CLIENT_WINDOW 23 /* Get window handle of client window. Default is the same as window */
#define WM_CAPTURE_RELEASED 24 /* Let window know that mouse capture is over */
#define WM_INIT_DIALOG 30 /* Inform dialog that it is ready for init */
#define WM_SET_FOCUS 31 /* Inform window that it has gotten or lost the focus */
#define WM_GET_ACCEPT_FOCUS 32 /* Find out if window can accept the focus */
#define WM_NOTIFY_CHILD_HAS_FOCUS 33
#define WM_GET_BKCOLOR 34 /* Return back ground color (only frame window and similar) */
#define WM_GET_SCROLL_STATE 35 /* Query state of scroll bar */
#define WM_SET_SCROLL_STATE 36 /* Set scroll info ... only effective for scrollbars */
#define WM_NOTIFY_CLIENTCHANGE 37 /* Client area may have changed */
#define WM_NOTIFY_PARENT 38 /* Notify parent. Information is detailed as notification code */
#define WM_NOTIFY_PARENT_REFLECTION 39 /* Notify parent reflection.
Sometimes send back as a result of the WM_NOTIFY_PARENT message
to let child react on behalf of its parent.
Information is detailed as notification code */
#define WM_NOTIFY_ENABLE 40 /* Enable or disable widget */
#define WM_NOTIFY_VIS_CHANGED 41 /* Visibility of a window has or may have changed */
#define WM_HANDLE_DIALOG_STATUS 42 /* Set or get dialog status */
#define WM_GET_RADIOGROUP 43 /* Send to all siblings and children of a radio control when
selection changed */
#define WM_MENU 44 /* Send to owner window of menu widget */
#define WM_TIMER 0x0113 /* Timer has expired (Keep the same as WIN32) */
#define WM_WIDGET 0x0300 /* 256 messages reserved for Widget messages */
#define WM_USER 0x0400 /* Reserved for user messages ... (Keep the same as WIN32) */
/*********************************************************************
*
* Notification codes
*
* The following is the list of notification codes send
* with the WM_NOTIFY_PARENT message
*/
#define WM_NOTIFICATION_CLICKED 1
#define WM_NOTIFICATION_RELEASED 2
#define WM_NOTIFICATION_MOVED_OUT 3
#define WM_NOTIFICATION_SEL_CHANGED 4
#define WM_NOTIFICATION_VALUE_CHANGED 5
#define WM_NOTIFICATION_SCROLLBAR_ADDED 6 /* Scroller added */
#define WM_NOTIFICATION_CHILD_DELETED 7 /* Inform window that child is about to be deleted */
#define WM_NOTIFICATION_GOT_FOCUS 8
#define WM_NOTIFICATION_LOST_FOCUS 9
#define WM_NOTIFICATION_SCROLL_CHANGED 10
#define WM_NOTIFICATION_WIDGET 11 /* Space for widget defined notifications */
#define WM_NOTIFICATION_USER 16 /* Space for application (user) defined notifications */
/*********************************************************************
*
* Memory management
*/
#define WM_HWIN GUI_HWIN
#define WM_HWIN_NULL GUI_HMEM_NULL
#define WM_HMEM GUI_HMEM
#define WM_HMEM_NULL GUI_HMEM_NULL
/*********************************************************************
*
* Window defines
*/
#define WM_HBKWIN WM_GetDesktopWindow() /* Handle of background window */
#define WM_UNATTACHED ((WM_HMEM)-1) /* Do not attach to a window */
/*********************************************************************
*
* Window create flags.
* These flags can be passed to the create window
* function as flag-parameter. The flags are combinable using the
* binary or operator.
*/
#define WM_CF_HASTRANS (1<<0) /* Has transparency. Needs to be defined for windows which do not fill the entire
section of their (client) rectangle. */
#define WM_CF_HIDE (0<<1) /* Hide window after creation (default !) */
#define WM_CF_SHOW (1<<1) /* Show window after creation */
#define WM_CF_MEMDEV (1<<2) /* Use memory device for redraws */
#define WM_CF_STAYONTOP (1<<3) /* Stay on top */
#define WM_CF_DISABLED (1<<4) /* Disabled: Does not receive PID (mouse & touch) input */
/* Create only flags ... Not available as status flags */
#define WM_CF_ACTIVATE (1<<5) /* If automatic activation upon creation of window is desired */
#define WM_CF_FGND (0<<6) /* Put window in foreground after creation (default !) */
#define WM_CF_BGND (1<<6) /* Put window in background after creation */
/* Anchor flags */
#define WM_CF_ANCHOR_RIGHT (1<<7) /* Right anchor ... If parent is resized, distance to right will remain const (left is default) */
#define WM_CF_ANCHOR_BOTTOM (1<<8) /* Bottom anchor ... If parent is resized, distance to bottom will remain const (top is default) */
#define WM_CF_ANCHOR_LEFT (1<<9) /* Left anchor ... If parent is resized, distance to left will remain const (left is default) */
#define WM_CF_ANCHOR_TOP (1<<10) /* Top anchor ... If parent is resized, distance to top will remain const (top is default) */
#define WM_CF_CONST_OUTLINE (1<<11) /* Constant outline. This is relevant for transparent windows only. If a window is transparent
and does not have a constant outline, its background is invalided instead of the window itself.
This causes add. computation time when redrawing. */
#define WM_CF_LATE_CLIP (1<<12)
#define WM_CF_MEMDEV_ON_REDRAW (1<<13)
#define WM_CF_RESERVED3 (1<<14)
#define WM_CF_RESERVED4 (1<<15)
/*********************************************************************
*
* Window manager types
*/
typedef struct {
int MsgId; /* type of message */
WM_HWIN hWin; /* Destination window */
WM_HWIN hWinSrc; /* Source window */
union {
const void* p; /* Some messages need more info ... Pointer is declared "const" because some systems (M16C) have 4 byte const, byte 2 byte default ptrs */
int v;
GUI_COLOR Color;
} Data;
} WM_MESSAGE;
typedef void WM_CALLBACK( WM_MESSAGE* pMsg);
typedef struct {
GUI_RECT Rect; /* outer dimensions of window */
GUI_RECT InvalidRect; /* invalid rectangle */
WM_CALLBACK* cb; /* ptr to notification callback */
WM_HWIN hNextLin; /* Next window in linear list */
WM_HWIN hParent;
WM_HWIN hFirstChild;
WM_HWIN hNext;
U16 Status; /* Some status flags */
} WM_Obj;
typedef void WM_tfPollPID(void);
typedef void WM_tfForEach(WM_HWIN hWin, void * pData);
/*
**********************************************************************
*
* General control routines
*
**********************************************************************
*/
void WM_Activate (void);
void WM_Deactivate(void);
void WM_Init (void);
int WM_Exec (void); /* Execute all jobs ... Return 0 if nothing was done. */
int WM_Exec1 (void); /* Execute one job ... Return 0 if nothing was done. */
U16 WM_SetCreateFlags(U16 Flags);
WM_tfPollPID* WM_SetpfPollPID(WM_tfPollPID* pf);
void WM_SetCapture(WM_HWIN hObj, int AutoRelease);
void WM_SetCaptureMove(WM_HWIN hWin, const GUI_PID_STATE* pState, int MinVisibility); /* Not yet documented */
void WM_ReleaseCapture(void);
/*********************************************************************
*
* Window manager interface
*
**********************************************************************
*/
void WM_AttachWindow (WM_HWIN hWin, WM_HWIN hParent);
void WM_AttachWindowAt (WM_HWIN hWin, WM_HWIN hParent, int x, int y);
int WM_CheckScrollPos (WM_SCROLL_STATE* pScrollState, int Pos, int LowerDist, int UpperDist); /* not to be documented (may change in future version) */
void WM_ClrHasTrans (WM_HWIN hWin);
WM_HWIN WM_CreateWindow (int x0, int y0, int xSize, int ySize, U16 Style, WM_CALLBACK* cb, int NumExtraBytes);
WM_HWIN WM_CreateWindowAsChild (int x0, int y0, int xSize, int ySize, WM_HWIN hWinParent, U16 Style, WM_CALLBACK* cb, int NumExtraBytes);
void WM_DeleteWindow (WM_HWIN hWin);
void WM_DetachWindow (WM_HWIN hWin);
int WM_GetHasTrans (WM_HWIN hWin);
WM_HWIN WM_GetFocussedWindow (void);
void WM_HideWindow (WM_HWIN hWin);
void WM_InvalidateArea (const GUI_RECT* pRect);
void WM_InvalidateRect (WM_HWIN hWin, const GUI_RECT*pRect);
void WM_InvalidateWindow (WM_HWIN hWin);
void WM_InvalidateWindowDescs (WM_HWIN hWin); /* not to be documented (may change in future version) */
int WM_IsEnabled (WM_HWIN hObj);
int WM_IsFocussable (WM_HWIN hWin);
int WM_IsVisible (WM_HWIN hWin);
int WM_IsWindow (WM_HWIN hWin); /* Check validity */
char WM_IsCompletelyVisible (WM_HWIN hWin); /* Is the window completely visible ? */
void WM_SetHasTrans (WM_HWIN hWin);
void WM_SetId (WM_HWIN hObj, int Id);
void WM_SetTransState (WM_HWIN hWin, unsigned State);
void WM_ShowWindow (WM_HWIN hWin);
void WM_ValidateRect (WM_HWIN hWin, const GUI_RECT*pRect);
void WM_ValidateWindow (WM_HWIN hWin);
int WM_GetInvalidRect (WM_HWIN hWin, GUI_RECT * pRect);
void WM_SetStayOnTop (WM_HWIN hWin, int OnOff);
int WM_GetStayOnTop (WM_HWIN hWin);
void WM_SetAnchor (WM_HWIN hWin, U16 AnchorFlags);
/* Move/resize windows */
void WM_MoveWindow (WM_HWIN hWin, int dx, int dy);
void WM_ResizeWindow (WM_HWIN hWin, int dx, int dy);
void WM_MoveTo (WM_HWIN hWin, int x, int y);
void WM_MoveChildTo (WM_HWIN hWin, int x, int y);
void WM_SetSize (WM_HWIN hWin, int XSize, int YSize);
int WM_SetXSize (WM_HWIN hWin, int xSize);
int WM_SetYSize (WM_HWIN hWin, int ySize);
int WM_CreateTimer (WM_HWIN hWin, int UserID, int Period, int Mode); /* not to be documented (may change in future version) */
void WM_DeleteTimer (WM_HWIN hWin, int UserId); /* not to be documented (may change in future version) */
int WM_SetScrollbarH (WM_HWIN hWin, int OnOff); /* not to be documented (may change in future version) */
int WM_SetScrollbarV (WM_HWIN hWin, int OnOff); /* not to be documented (may change in future version) */
/* Diagnostics */
int WM_GetNumWindows(void);
int WM_GetNumInvalidWindows(void);
/* Scroll state related functions */
int WM_SetScrollValue (WM_SCROLL_STATE* pScrollState, int v); /* not to be documented (may change in future version) */
void WM_CheckScrollBounds(WM_SCROLL_STATE* pScrollState); /* not to be documented (may change in future version) */
/* Set (new) callback function */
WM_CALLBACK* WM_SetCallback (WM_HWIN Win, WM_CALLBACK* cb);
/* Get size/origin of a window */
void WM_GetClientRect (GUI_RECT* pRect);
void WM_GetClientRectEx (WM_HWIN hWin, GUI_RECT* pRect);
void WM_GetInsideRect (GUI_RECT* pRect);
void WM_GetInsideRectEx (WM_HWIN hWin, GUI_RECT* pRect);
void WM_GetInsideRectExScrollbar (WM_HWIN hWin, GUI_RECT* pRect); /* not to be documented (may change in future version) */
void WM_GetWindowRect (GUI_RECT* pRect);
void WM_GetWindowRectEx (WM_HWIN hWin, GUI_RECT* pRect);
int WM_GetOrgX (void);
int WM_GetOrgY (void);
int WM_GetWindowOrgX (WM_HWIN hWin);
int WM_GetWindowOrgY (WM_HWIN hWin);
int WM_GetWindowSizeX (WM_HWIN hWin);
int WM_GetWindowSizeY (WM_HWIN hWin);
WM_HWIN WM_GetFirstChild (WM_HWIN hWin);
WM_HWIN WM_GetNextSibling (WM_HWIN hWin);
WM_HWIN WM_GetParent (WM_HWIN hWin);
WM_HWIN WM_GetPrevSibling (WM_HWIN hWin);
int WM_GetId (WM_HWIN hWin);
WM_HWIN WM_GetScrollbarV (WM_HWIN hWin);
WM_HWIN WM_GetScrollbarH (WM_HWIN hWin);
WM_HWIN WM_GetScrollPartner (WM_HWIN hWin);
WM_HWIN WM_GetClientWindow (WM_HWIN hObj);
GUI_COLOR WM_GetBkColor (WM_HWIN hObj);
/* Change Z-Order of windows */
void WM_BringToBottom(WM_HWIN hWin);
void WM_BringToTop(WM_HWIN hWin);
GUI_COLOR WM_SetDesktopColor(GUI_COLOR Color);
GUI_COLOR WM_SetDesktopColorEx(GUI_COLOR Color, unsigned int LayerIndex);
void WM_SetDesktopColors(GUI_COLOR Color);
/* Select window used for drawing operations */
WM_HWIN WM_SelectWindow (WM_HWIN hWin);
WM_HWIN WM_GetActiveWindow (void);
void WM_Paint (WM_HWIN hObj);
/* Get foreground/background windows */
WM_HWIN WM_GetDesktopWindow (void);
WM_HWIN WM_GetDesktopWindowEx (unsigned int LayerIndex);
/* Reduce clipping area of a window */
const GUI_RECT* WM_SetUserClipRect(const GUI_RECT* pRect);
void WM_SetDefault (void);
/* Use of memory devices */
void WM_EnableMemdev (WM_HWIN hWin);
void WM_DisableMemdev (WM_HWIN hWin);
int WM_OnKey(int Key, int Pressed);
void WM_MakeModal(WM_HWIN hWin);
/******************************************************************
*
* Message related funcions
*
*******************************************************************
Please note that some of these functions do not yet show up in the
documentation, as they should not be required by application program.
*/
void WM_NotifyParent (WM_HWIN hWin, int Notification);
void WM_SendMessage (WM_HWIN hWin, WM_MESSAGE* p);
void WM_SendMessageNoPara (WM_HWIN hWin, int MsgId); /* not to be documented (may change in future versionumented */
void WM_DefaultProc (WM_MESSAGE* pMsg);
int WM_BroadcastMessage (WM_MESSAGE* pMsg);
void WM_SetScrollState (WM_HWIN hWin, const WM_SCROLL_STATE* pState);
void WM_SetEnableState (WM_HWIN hItem, int State);
void WM_SendToParent (WM_HWIN hWin, WM_MESSAGE* pMsg);
int WM_HasCaptured (WM_HWIN hWin);
int WM_HasFocus (WM_HWIN hWin);
int WM_SetFocus (WM_HWIN hWin);
WM_HWIN WM_SetFocusOnNextChild (WM_HWIN hParent); /* Set the focus to the next child */
WM_HWIN WM_SetFocusOnPrevChild (WM_HWIN hParent); /* Set the focus to the previous child */
WM_HWIN WM_GetDialogItem (WM_HWIN hWin, int Id);
void WM_EnableWindow (WM_HWIN hWin);
void WM_DisableWindow (WM_HWIN hWin);
void WM_GetScrollState (WM_HWIN hObj, WM_SCROLL_STATE* pScrollState);
int WM_GetUserData (WM_HWIN hWin, void* pDest, int SizeOfBuffer);
int WM_SetUserData (WM_HWIN hWin, const void* pSrc, int SizeOfBuffer);
/*********************************************************************
*
* Misc routines
*/
int WM_HandlePID (void);
WM_HWIN WM_Screen2hWin (int x, int y);
WM_HWIN WM_Screen2hWinEx (WM_HWIN hStop, int x, int y);
void WM_ForEachDesc (WM_HWIN hWin, WM_tfForEach * pcb, void * pData);
/*********************************************************************
*
* Diagnostics routines
*/
#if (WM_SUPPORT_DIAG)
void WM_DIAG_EnableInvalidationColoring(int OnOff);
#endif
/*
*************************************************
* *
* Macros for compatibility with older versions *
* *
*************************************************
*/
#if WM_COMPATIBLE_MODE
#define HBWIN WM_HWIN
#define HBWIN_NULL WM_HWIN_NULL
#define WM_HideWin WM_HideWindow
#define WM_ShowWin WM_ShowWindow
#define WM_GetKey GUI_GetKey
#define WM_WaitKey GUI_WaitKey
#define WM_ExecIdle WM_Exec
#define WM_ExecIdle1 WM_Exec1
#define WM_Invalidate WM_InvalidateWindow
#define WM_GetWinRect WM_GetWindowRect
#define WM_GetWinOrgX WM_GetWindowOrgX
#define WM_GetWinOrgY WM_GetWindowOrgY
#define WM_GetWinSizeX WM_GetWindowSizeX
#define WM_GetWinSizeY WM_GetWindowSizeY
#define WM_GetXSize WM_GetWindowSizeX
#define WM_GetYSize WM_GetWindowSizeY
#define WM_SelWin WM_SelectWindow
#define WM_GetBackgroundWindow WM_GetDesktopWindow
#define WM_GetForegroundWindow 0
#define WM_SetForegroundWindow WM_BringToTop
#define WM_SetUserClipArea WM_SetUserClipRect
#define WM_Start()
#define WM_Stop()
#define WM_SetBkWindowColor(Color) WM_SetDesktopColor(Color)
#endif
#endif /* GUI_WINSUPPORT */
#if defined(__cplusplus)
}
#endif
#endif /* WM_H */
/*************************** End of file ****************************/
@@ -0,0 +1,58 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : WM_GUI.h
Purpose : Windows manager include for low level GUI routines
----------------------------------------------------------------------
*/
#ifndef WM_GUI_H /* Make sure we only include it once */
#define WM_GUI_H
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
int WM__InitIVRSearch(const GUI_RECT* pMaxRect);
int WM__GetNextIVR (void);
int WM__GetOrgX_AA(void);
int WM__GetOrgY_AA(void);
#define WM_ITERATE_START(pRect) \
{ \
if (WM__InitIVRSearch(pRect)) \
do {
#define WM_ITERATE_END() \
} while (WM__GetNextIVR()); \
}
#define WM_ADDORGX(x) x += GUI_Context.xOff
#define WM_ADDORGY(y) y += GUI_Context.yOff
#define WM_ADDORG(x0,y0) WM_ADDORGX(x0); WM_ADDORGY(y0)
#define WM_ADDORGX_AA(x) x += WM__GetOrgX_AA()
#define WM_ADDORGY_AA(y) y += WM__GetOrgY_AA()
#define WM_ADDORG_AA(x0,y0) WM_ADDORGX_AA(x0); WM_ADDORGY_AA(y0)
#define WM_SUBORGX(x) x -= GUI_Context.xOff
#define WM_SUBORGY(y) y -= GUI_Context.yOff
#define WM_SUBORG(x0,y0) WM_SUBORGX(x0); WM_SUBORGY(y0)
#if defined(__cplusplus)
}
#endif
#endif /* Avoid multiple inclusion */
/*************************** End of file ****************************/
@@ -0,0 +1,197 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : WM_Intern.h
Purpose : Windows manager internal include
----------------------------------------------------------------------
*/
#ifndef WM_INTERN_H /* Make sure we only include it once */
#define WM_INTERN_H /* Make sure we only include it once */
#include "WM.h"
#include "GUI_Protected.h" /* For GUI_Context */
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
#if GUI_WINSUPPORT
/*********************************************************************
*
* defines
*
**********************************************************************
The following could be placed in a file of its own as it is not
used outside of the window manager
*/
/* Basic Windows status flags.
For module-internally use only !
*/
#define WM_SF_HASTRANS WM_CF_HASTRANS
#define WM_SF_MEMDEV WM_CF_MEMDEV
#define WM_SF_MEMDEV_ON_REDRAW WM_CF_MEMDEV_ON_REDRAW
#define WM_SF_DISABLED WM_CF_DISABLED /* Disabled: Does not receive PID (mouse & touch) input */
#define WM_SF_ISVIS WM_CF_SHOW /* Is visible flag */
#define WM_SF_STAYONTOP WM_CF_STAYONTOP
#define WM_SF_LATE_CLIP WM_CF_LATE_CLIP
#define WM_SF_ANCHOR_RIGHT WM_CF_ANCHOR_RIGHT
#define WM_SF_ANCHOR_BOTTOM WM_CF_ANCHOR_BOTTOM
#define WM_SF_ANCHOR_LEFT WM_CF_ANCHOR_LEFT
#define WM_SF_ANCHOR_TOP WM_CF_ANCHOR_TOP
#define WM_SF_INVALID WM_CF_ACTIVATE /* We reuse this flag, as it is create only and Invalid is status only */
#define WM_SF_CONST_OUTLINE WM_CF_CONST_OUTLINE /* Constant outline.*/
#define WM_HANDLE2PTR(hWin) ((WM_Obj*)GUI_ALLOC_h2p(hWin)) /* older form ... to be eliminated */
#define WM_H2P(hWin) ((WM_Obj*)GUI_ALLOC_h2p(hWin))
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_LOG_WARNINGS
#define WM_ASSERT_NOT_IN_PAINT() { if (WM__PaintCallbackCnt) \
GUI_DEBUG_ERROROUT("Function may not be called from within a paint event"); \
}
#else
#define WM_ASSERT_NOT_IN_PAINT()
#endif
/*********************************************************************
*
* Data types & structures
*
**********************************************************************
*/
typedef struct {
WM_HWIN hWin;
WM_Obj* pWin;
} WM_PAINTINFO;
typedef struct {
WM_HWIN hOld;
WM_HWIN hNew;
} WM_NOTIFY_CHILD_HAS_FOCUS_INFO;
typedef struct WM_CRITICAL_HANDLE {
struct WM_CRITICAL_HANDLE * pNext;
volatile WM_HWIN hWin;
} WM_CRITICAL_HANDLE;
/*********************************************************************
*
* Data (extern)
*
**********************************************************************
*/
extern U16 WM__CreateFlags;
extern WM_HWIN WM__hCapture;
extern WM_HWIN WM__hWinFocus;
extern char WM__CaptureReleaseAuto;
extern WM_tfPollPID* WM_pfPollPID;
extern U8 WM__PaintCallbackCnt; /* Public for assertions only */
extern GUI_PID_STATE WM_PID__StateLast;
#if WM_SUPPORT_TRANSPARENCY
extern int WM__TransWindowCnt;
extern WM_HWIN WM__hATransWindow;
#endif
#if WM_SUPPORT_DIAG
extern void (*WM__pfShowInvalid)(WM_HWIN hWin);
#endif
extern WM_CRITICAL_HANDLE WM__CHWinModal;
extern WM_CRITICAL_HANDLE WM__CHWinLast;
#ifdef WM_C
#define GUI_EXTERN
#else
#define GUI_EXTERN extern
#endif
GUI_EXTERN U16 WM__NumWindows;
GUI_EXTERN U16 WM__NumInvalidWindows;
GUI_EXTERN WM_HWIN WM__FirstWin;
GUI_EXTERN WM_CRITICAL_HANDLE* WM__pFirstCriticalHandle;
#undef GUI_EXTERN
/*********************************************************************
*
* Prototypes
*
**********************************************************************
*/
void WM__ActivateClipRect (void);
int WM__ClipAtParentBorders (GUI_RECT* pRect, WM_HWIN hWin);
void WM__Client2Screen (const WM_Obj* pWin, GUI_RECT *pRect);
void WM__DetachWindow (WM_HWIN hChild);
void WM__ForEachDesc(WM_HWIN hWin, WM_tfForEach * pcb, void * pData);
void WM__GetClientRectWin (const WM_Obj* pWin, GUI_RECT* pRect);
WM_HWIN WM__GetFirstSibling (WM_HWIN hWin);
WM_HWIN WM__GetFocussedChild (WM_HWIN hWin);
int WM__GetHasFocus (WM_HWIN hWin);
WM_HWIN WM__GetLastSibling (WM_HWIN hWin);
WM_HWIN WM__GetPrevSibling (WM_HWIN hWin);
int WM__GetWindowSizeX (const WM_Obj* pWin);
int WM__GetWindowSizeY (const WM_Obj* pWin);
void WM__InsertWindowIntoList (WM_HWIN hWin, WM_HWIN hParent);
void WM__InvalidateAreaBelow (const GUI_RECT* pRect, WM_HWIN StopWin);
void WM__InvalidateTransAreaAbove(const GUI_RECT* pRect, WM_HWIN StopWin);
int WM__IntersectRect (GUI_RECT* pDest, const GUI_RECT* pr0, const GUI_RECT* pr1);
int WM__IsAncestor (WM_HWIN hChild, WM_HWIN hParent);
int WM__IsAncestorOrSelf (WM_HWIN hChild, WM_HWIN hParent);
int WM__IsChild (WM_HWIN hWin, WM_HWIN hParent);
int WM__IsEnabled (WM_HWIN hWin);
int WM__IsInModalArea (WM_HWIN hWin);
int WM__IsInWindow (WM_Obj * pWin, int x, int y);
int WM__IsWindow (WM_HWIN hWin);
void WM__LeaveIVRSearch (void);
void WM__MoveTo (WM_HWIN hWin, int x, int y);
void WM__MoveWindow (WM_HWIN hWin, int dx, int dy);
void WM__NotifyVisChanged (WM_HWIN hWin, GUI_RECT * pRect);
int WM__RectIsNZ (const GUI_RECT* pr);
void WM__RemoveWindowFromList (WM_HWIN hWin);
void WM__RemoveFromLinList (WM_HWIN hWin);
void WM__Screen2Client (const WM_Obj* pWin, GUI_RECT *pRect);
void WM__SendMsgNoData (WM_HWIN hWin, U8 MsgId);
void WM__SendMessage (WM_HWIN hWin, WM_MESSAGE* pm);
void WM__SendMessageIfEnabled (WM_HWIN hWin, WM_MESSAGE* pm);
void WM__SendMessageNoPara (WM_HWIN hWin, int MsgId);
void WM__SendPIDMessage (WM_HWIN hWin, WM_MESSAGE* pMsg);
int WM__SetScrollbarH (WM_HWIN hWin, int OnOff);
int WM__SetScrollbarV (WM_HWIN hWin, int OnOff);
void WM__UpdateChildPositions (WM_Obj* pObj, int dx0, int dy0, int dx1, int dy1);
void WM_PID__GetPrevState (GUI_PID_STATE* pPrevState);
void WM__SendTouchMessage (WM_HWIN hWin, WM_MESSAGE* pMsg);
U16 WM_GetFlags(WM_HWIN hWin);
void WM__PaintWinAndOverlays (WM_PAINTINFO* pInfo);
void WM__AddCriticalHandle (WM_CRITICAL_HANDLE* pCH);
void WM__RemoveCriticalHandle (WM_CRITICAL_HANDLE* pCH);
#endif /* GUI_WINSUPPORT */
#if defined(__cplusplus)
}
#endif
#endif /* WM_INTERN_H */
/*************************** End of file ****************************/
@@ -0,0 +1,43 @@
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* µC/GUI 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 redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : WM_Intern_ConfDep.h
Purpose : Windows manager internal include, dependent on LCDConf.h
----------------------------------------------------------------------
*/
#ifndef WM_INTERN_CONFDEP_H /* Make sure we only include it once */
#define WM_INTERN_CONFDEP_H /* Make sure we only include it once */
#include "WM_Intern.h"
#if GUI_WINSUPPORT
#ifdef WM_C
#define GUI_EXTERN
#else
#define GUI_EXTERN extern
#endif
GUI_EXTERN WM_HWIN WM__ahDesktopWin[GUI_NUM_LAYERS]; /* No longer depends on LCDConf.h ... Can be moved to an other file */
GUI_EXTERN GUI_COLOR WM__aBkColor[GUI_NUM_LAYERS]; /* No longer depends on LCDConf.h ... Can be moved to an other file */
#undef GUI_EXTERN
#endif /* GUI_WINSUPPORT */
#endif /* WM_INTERN_H */
/*************************** End of file ****************************/
@@ -0,0 +1,100 @@
/*
* jconfig.doc
*
* Copyright (C) 1991-1994, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This file documents the configuration options that are required to
* customize the JPEG software for a particular system.
*
*/
#include "GUI.h" /* Only needed for GUI_USE_PARA(xxx) */
/*
* These symbols indicate the properties of your machine or compiler.
* #define the symbol if yes, #undef it if no.
*/
/* Does your compiler support the declaration "unsigned char" ?
* How about "unsigned short" ?
*/
#define HAVE_UNSIGNED_CHAR
/* Define this if an ordinary "char" type is unsigned.
* If you're not sure, leaving it undefined will work at some cost in speed.
* If you defined HAVE_UNSIGNED_CHAR then the speed difference is minimal.
*/
#ifdef CHAR_IS_UNSIGNED
#undef CHAR_IS_UNSIGNED
#endif
#define HAVE_STDDEF_H /* Define this if your system has an ANSI-conforming <stddef.h> file. */
#define HAVE_STDLIB_H /* Define this if your system has an ANSI-conforming <stdlib.h> file. */
#ifdef NEED_BSD_STRINGS
#undef NEED_BSD_STRINGS /* Define this if your system does not have an ANSI/SysV <string.h>, but does have a BSD-style <strings.h>. */
#endif
/* Define this if your system does not provide typedef size_t in any of the
* ANSI-standard places (stddef.h, stdlib.h, or stdio.h), but places it in
* <sys/types.h> instead.
*/
#ifdef NEED_SYS_TYPES_H
#undef NEED_SYS_TYPES_H
#endif
/* For 80x86 machines, you need to define NEED_FAR_POINTERS,
* unless you are using a large-data memory model or 80386 flat-memory mode.
* On less brain-damaged CPUs this symbol must not be defined.
* (Defining this symbol causes large data structures to be referenced through
* "far" pointers and to be allocated with a special version of malloc.)
*/
#ifdef NEED_SYS_TYPES_H
#undef NEED_FAR_POINTERS
#endif
/* Although a real ANSI C compiler can deal perfectly well with pointers to
* unspecified structures (see "incomplete types" in the spec), a few pre-ANSI
* and pseudo-ANSI compilers get confused. To keep one of these bozos happy,
* define INCOMPLETE_TYPES_BROKEN. This is not recommended unless you
* actually get "missing structure definition" warnings or errors while
* compiling the JPEG code.
*/
#ifdef INCOMPLETE_TYPES_BROKEN
#undef INCOMPLETE_TYPES_BROKEN
#endif
/*
* The following options affect code selection within the JPEG library,
* but they don't need to be visible to applications using the library.
* To minimize application namespace pollution, the symbols won't be
* defined unless JPEG_INTERNALS has been defined.
*/
#ifdef JPEG_INTERNALS
/* Define this if your compiler implements ">>" on signed values as a logical
* (unsigned) shift; leave it undefined if ">>" is a signed (arithmetic) shift,
* which is the normal and rational definition.
*/
#ifdef RIGHT_SHIFT_IS_UNSIGNED
#undef RIGHT_SHIFT_IS_UNSIGNED
#endif
#endif /* JPEG_INTERNALS */
#ifndef GUI_USE_PARA
#define GUI_USE_PARA(x)
#endif
@@ -0,0 +1,163 @@
/*
* jdct.h
*
* Copyright (C) 1994-1996, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This include file contains common declarations for the forward and
* inverse DCT modules. These declarations are private to the DCT managers
* (jcdctmgr.c, jddctmgr.c) and the individual DCT algorithms.
* The individual DCT algorithms are kept in separate files to ease
* machine-dependent tuning (e.g., assembly coding).
*/
/*
* A forward DCT routine is given a pointer to a work area of type DCTELEM[];
* the DCT is to be performed in-place in that buffer. Type DCTELEM is int
* for 8-bit samples, INT32 for 12-bit samples. (NOTE: Floating-point DCT
* implementations use an array of type FAST_FLOAT, instead.)
* The DCT inputs are expected to be signed (range +-CENTERJSAMPLE).
* The DCT outputs are returned scaled up by a factor of 8; they therefore
* have a range of +-8K for 8-bit data, +-128K for 12-bit data. This
* convention improves accuracy in integer implementations and saves some
* work in floating-point ones.
* Quantization of the output coefficients is done by jcdctmgr.c.
*/
#if BITS_IN_JSAMPLE == 8
typedef int DCTELEM; /* 16 or 32 bits is fine */
#else
typedef INT32 DCTELEM; /* must have 32 bits */
#endif
typedef JMETHOD(void, forward_DCT_method_ptr, (DCTELEM * data));
typedef JMETHOD(void, float_DCT_method_ptr, (FAST_FLOAT * data));
/*
* An inverse DCT routine is given a pointer to the input JBLOCK and a pointer
* to an output sample array. The routine must dequantize the input data as
* well as perform the IDCT; for dequantization, it uses the multiplier table
* pointed to by compptr->dct_table. The output data is to be placed into the
* sample array starting at a specified column. (Any row offset needed will
* be applied to the array pointer before it is passed to the IDCT code.)
* Note that the number of samples emitted by the IDCT routine is
* DCT_scaled_size * DCT_scaled_size.
*/
/* typedef inverse_DCT_method_ptr is declared in jpegint.h */
/*
* Each IDCT routine has its own ideas about the best dct_table element type.
*/
typedef MULTIPLIER ISLOW_MULT_TYPE; /* short or int, whichever is faster */
#if BITS_IN_JSAMPLE == 8
typedef MULTIPLIER IFAST_MULT_TYPE; /* 16 bits is OK, use short if faster */
#define IFAST_SCALE_BITS 2 /* fractional bits in scale factors */
#else
typedef INT32 IFAST_MULT_TYPE; /* need 32 bits for scaled quantizers */
#define IFAST_SCALE_BITS 13 /* fractional bits in scale factors */
#endif
typedef FAST_FLOAT FLOAT_MULT_TYPE; /* preferred floating type */
/*
* Each IDCT routine is responsible for range-limiting its results and
* converting them to unsigned form (0..MAXJSAMPLE). The raw outputs could
* be quite far out of range if the input data is corrupt, so a bulletproof
* range-limiting step is required. We use a mask-and-table-lookup method
* to do the combined operations quickly. See the comments with
* prepare_range_limit_table (in jdmaster.c) for more info.
*/
#define IDCT_range_limit(cinfo) ((cinfo)->sample_range_limit + CENTERJSAMPLE)
#define RANGE_MASK (MAXJSAMPLE * 4 + 3) /* 2 bits wider than legal samples */
/* Extern declarations for the forward and inverse DCT routines. */
EXTERN(void) jpeg_fdct_islow JPP((DCTELEM * data));
EXTERN(void) jpeg_fdct_ifast JPP((DCTELEM * data));
EXTERN(void) jpeg_fdct_float JPP((FAST_FLOAT * data));
EXTERN(void) jpeg_idct_islow
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_ifast
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_float
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_4x4
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_2x2
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_1x1
JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
/*
* Macros for handling fixed-point arithmetic; these are used by many
* but not all of the DCT/IDCT modules.
*
* All values are expected to be of type INT32.
* Fractional constants are scaled left by CONST_BITS bits.
* CONST_BITS is defined within each module using these macros,
* and may differ from one module to the next.
*/
#define ONE ((INT32) 1)
#define CONST_SCALE (ONE << CONST_BITS)
/* Convert a positive real constant to an integer scaled by CONST_SCALE.
* Caution: some C compilers fail to reduce "FIX(constant)" at compile time,
* thus causing a lot of useless floating-point operations at run time.
*/
#define FIX(x) ((INT32) ((x) * CONST_SCALE + 0.5))
/* Descale and correctly round an INT32 value that's scaled by N bits.
* We assume RIGHT_SHIFT rounds towards minus infinity, so adding
* the fudge factor is correct for either sign of X.
*/
#define DESCALE(x,n) RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
* This macro is used only when the two inputs will actually be no more than
* 16 bits wide, so that a 16x16->32 bit multiply can be used instead of a
* full 32x32 multiply. This provides a useful speedup on many machines.
* Unfortunately there is no way to specify a 16x16->32 multiply portably
* in C, but some C compilers will do the right thing if you provide the
* correct combination of casts.
*/
#ifdef SHORTxSHORT_32 /* may work if 'int' is 32 bits */
#define MULTIPLY16C16(var,const) (((INT16) (var)) * ((INT16) (const)))
#endif
#ifdef SHORTxLCONST_32 /* known to work with Microsoft C 6.0 */
#define MULTIPLY16C16(var,const) (((INT16) (var)) * ((INT32) (const)))
#endif
#ifndef MULTIPLY16C16 /* default definition */
#define MULTIPLY16C16(var,const) ((var) * (const))
#endif
/* Same except both inputs are variables. */
#ifdef SHORTxSHORT_32 /* may work if 'int' is 32 bits */
#define MULTIPLY16V16(var1,var2) (((INT16) (var1)) * ((INT16) (var2)))
#endif
#ifndef MULTIPLY16V16 /* default definition */
#define MULTIPLY16V16(var1,var2) ((var1) * (var2))
#endif
@@ -0,0 +1,193 @@
/*
* jdhuff.h
*
* Copyright (C) 1991-1997, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This file contains declarations for Huffman entropy decoding routines
* that are shared between the sequential decoder (jdhuff.c) and the
* progressive decoder (jdphuff.c). No other modules need to see these.
*/
/* Derived data constructed for each Huffman table */
#define HUFF_LOOKAHEAD 8 /* # of bits of lookahead */
typedef struct {
/* Basic tables: (element [0] of each array is unused) */
INT32 maxcode[18]; /* largest code of length k (-1 if none) */
/* (maxcode[17] is a sentinel to ensure jpeg_huff_decode terminates) */
INT32 valoffset[17]; /* huffval[] offset for codes of length k */
/* valoffset[k] = huffval[] index of 1st symbol of code length k, less
* the smallest code of length k; so given a code of length k, the
* corresponding symbol is huffval[code + valoffset[k]]
*/
/* Link to public Huffman table (needed only in jpeg_huff_decode) */
JHUFF_TBL *pub;
/* Lookahead tables: indexed by the next HUFF_LOOKAHEAD bits of
* the input data stream. If the next Huffman code is no more
* than HUFF_LOOKAHEAD bits long, we can obtain its length and
* the corresponding symbol directly from these tables.
*/
int look_nbits[1<<HUFF_LOOKAHEAD]; /* # bits, or 0 if too long */
UINT8 look_sym[1<<HUFF_LOOKAHEAD]; /* symbol, or unused */
} d_derived_tbl;
/* Expand a Huffman table definition into the derived format */
EXTERN(void) jpeg_make_d_derived_tbl
JPP((j_decompress_ptr cinfo, boolean isDC, int tblno,
d_derived_tbl ** pdtbl));
/*
* Fetching the next N bits from the input stream is a time-critical operation
* for the Huffman decoders. We implement it with a combination of inline
* macros and out-of-line subroutines. Note that N (the number of bits
* demanded at one time) never exceeds 15 for JPEG use.
*
* We read source bytes into get_buffer and dole out bits as needed.
* If get_buffer already contains enough bits, they are fetched in-line
* by the macros CHECK_BIT_BUFFER and GET_BITS. When there aren't enough
* bits, jpeg_fill_bit_buffer is called; it will attempt to fill get_buffer
* as full as possible (not just to the number of bits needed; this
* prefetching reduces the overhead cost of calling jpeg_fill_bit_buffer).
* Note that jpeg_fill_bit_buffer may return FALSE to indicate suspension.
* On TRUE return, jpeg_fill_bit_buffer guarantees that get_buffer contains
* at least the requested number of bits --- dummy zeroes are inserted if
* necessary.
*/
typedef INT32 bit_buf_type; /* type of bit-extraction buffer */
#define BIT_BUF_SIZE 32 /* size of buffer in bits */
/* If long is > 32 bits on your machine, and shifting/masking longs is
* reasonably fast, making bit_buf_type be long and setting BIT_BUF_SIZE
* appropriately should be a win. Unfortunately we can't define the size
* with something like #define BIT_BUF_SIZE (sizeof(bit_buf_type)*8)
* because not all machines measure sizeof in 8-bit bytes.
*/
typedef struct { /* Bitreading state saved across MCUs */
bit_buf_type get_buffer; /* current bit-extraction buffer */
int bits_left; /* # of unused bits in it */
} bitread_perm_state;
typedef struct { /* Bitreading working state within an MCU */
/* Current data source location */
/* We need a copy, rather than munging the original, in case of suspension */
const JOCTET * next_input_byte; /* => next byte to read from source */
size_t bytes_in_buffer; /* # of bytes remaining in source buffer */
/* Bit input buffer --- note these values are kept in register variables,
* not in this struct, inside the inner loops.
*/
bit_buf_type get_buffer; /* current bit-extraction buffer */
int bits_left; /* # of unused bits in it */
/* Pointer needed by jpeg_fill_bit_buffer. */
j_decompress_ptr cinfo; /* back link to decompress master record */
} bitread_working_state;
/* Macros to declare and load/save bitread local variables. */
#define BITREAD_STATE_VARS \
register bit_buf_type get_buffer; \
register int bits_left; \
bitread_working_state br_state
#define BITREAD_LOAD_STATE(cinfop,permstate) \
br_state.cinfo = cinfop; \
br_state.next_input_byte = cinfop->src->next_input_byte; \
br_state.bytes_in_buffer = cinfop->src->bytes_in_buffer; \
get_buffer = permstate.get_buffer; \
bits_left = permstate.bits_left;
#define BITREAD_SAVE_STATE(cinfop,permstate) \
cinfop->src->next_input_byte = br_state.next_input_byte; \
cinfop->src->bytes_in_buffer = br_state.bytes_in_buffer; \
permstate.get_buffer = get_buffer; \
permstate.bits_left = bits_left
/*
* These macros provide the in-line portion of bit fetching.
* Use CHECK_BIT_BUFFER to ensure there are N bits in get_buffer
* before using GET_BITS, PEEK_BITS, or DROP_BITS.
* The variables get_buffer and bits_left are assumed to be locals,
* but the state struct might not be (jpeg_huff_decode needs this).
* CHECK_BIT_BUFFER(state,n,action);
* Ensure there are N bits in get_buffer; if suspend, take action.
* val = GET_BITS(n);
* Fetch next N bits.
* val = PEEK_BITS(n);
* Fetch next N bits without removing them from the buffer.
* DROP_BITS(n);
* Discard next N bits.
* The value N should be a simple variable, not an expression, because it
* is evaluated multiple times.
*/
#define CHECK_BIT_BUFFER(state,nbits,action) \
{ if (bits_left < (nbits)) { \
if (! jpeg_fill_bit_buffer(&(state),get_buffer,bits_left,nbits)) \
{ action; } \
get_buffer = (state).get_buffer; bits_left = (state).bits_left; } }
#define GET_BITS(nbits) \
(((int) (get_buffer >> (bits_left -= (nbits)))) & ((1<<(nbits))-1))
#define PEEK_BITS(nbits) \
(((int) (get_buffer >> (bits_left - (nbits)))) & ((1<<(nbits))-1))
#define DROP_BITS(nbits) \
(bits_left -= (nbits))
/* Load up the bit buffer to a depth of at least nbits */
EXTERN(boolean) jpeg_fill_bit_buffer
JPP((bitread_working_state * state, register bit_buf_type get_buffer,
register int bits_left, int nbits));
/*
* Code for extracting next Huffman-coded symbol from input bit stream.
* Again, this is time-critical and we make the main paths be macros.
*
* We use a lookahead table to process codes of up to HUFF_LOOKAHEAD bits
* without looping. Usually, more than 95% of the Huffman codes will be 8
* or fewer bits long. The few overlength codes are handled with a loop,
* which need not be inline code.
*
* Notes about the HUFF_DECODE macro:
* 1. Near the end of the data segment, we may fail to get enough bits
* for a lookahead. In that case, we do it the hard way.
* 2. If the lookahead table contains no entry, the next code must be
* more than HUFF_LOOKAHEAD bits long.
* 3. jpeg_huff_decode returns -1 if forced to suspend.
*/
#define HUFF_DECODE(result,state,htbl,failaction,slowlabel) \
{ register int nb, look; \
if (bits_left < HUFF_LOOKAHEAD) { \
if (! jpeg_fill_bit_buffer(&state,get_buffer,bits_left, 0)) {failaction;} \
get_buffer = state.get_buffer; bits_left = state.bits_left; \
if (bits_left < HUFF_LOOKAHEAD) { \
nb = 1; goto slowlabel; \
} \
} \
look = PEEK_BITS(HUFF_LOOKAHEAD); \
if ((nb = htbl->look_nbits[look]) != 0) { \
DROP_BITS(nb); \
result = htbl->look_sym[look]; \
} else { \
nb = HUFF_LOOKAHEAD+1; \
slowlabel: \
if ((result=jpeg_huff_decode(&state,get_buffer,bits_left,htbl,nb)) < 0) \
{ failaction; } \
get_buffer = state.get_buffer; bits_left = state.bits_left; \
} \
}
/* Out-of-line case for Huffman code fetching */
EXTERN(int) jpeg_huff_decode
JPP((bitread_working_state * state, register bit_buf_type get_buffer,
register int bits_left, d_derived_tbl * htbl, int min_bits));
@@ -0,0 +1,291 @@
/*
* jerror.h
*
* Copyright (C) 1994-1997, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This file defines the error and message codes for the JPEG library.
* Edit this file to add new codes, or to translate the message strings to
* some other language.
* A set of error-reporting macros are defined too. Some applications using
* the JPEG library may wish to include this file to get the error codes
* and/or the macros.
*/
/*
* To define the enum list of message codes, include this file without
* defining macro JMESSAGE. To create a message string table, include it
* again with a suitable JMESSAGE definition (see jerror.c for an example).
*/
#ifndef JMESSAGE
#ifndef JERROR_H
/* First time through, define the enum list */
#define JMAKE_ENUM_LIST
#else
/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
#define JMESSAGE(code,string)
#endif /* JERROR_H */
#endif /* JMESSAGE */
#ifdef JMAKE_ENUM_LIST
typedef enum {
#define JMESSAGE(code,string) code ,
#endif /* JMAKE_ENUM_LIST */
JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
/* For maintenance convenience, list is alphabetical by message code name */
JMESSAGE(JERR_ARITH_NOTIMPL,
"Sorry, there are legal restrictions on arithmetic coding")
JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS")
JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range")
JMESSAGE(JERR_BAD_DCTSIZE, "IDCT output block size %d not supported")
JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition")
JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace")
JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace")
JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length")
JMESSAGE(JERR_BAD_LIB_VERSION,
"Wrong JPEG library version: library is %d, caller expects %d")
JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan")
JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d")
JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d")
JMESSAGE(JERR_BAD_PROGRESSION,
"Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d")
JMESSAGE(JERR_BAD_PROG_SCRIPT,
"Invalid progressive parameters at scan script entry %d")
JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors")
JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d")
JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d")
JMESSAGE(JERR_BAD_STRUCT_SIZE,
"JPEG parameter struct mismatch: library thinks size is %u, caller expects %u")
JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access")
JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small")
JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here")
JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet")
JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d")
JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request")
JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan")
JMESSAGE(JERR_FILE_READ, "Input file read error")
JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?")
JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet")
JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow")
JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry")
JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels")
JMESSAGE(JERR_INPUT_EMPTY, "Empty input file")
JMESSAGE(JERR_INPUT_EOF, "Premature end of input file")
JMESSAGE(JERR_MISMATCHED_QUANT_TABLE,
"Cannot transcode due to multiple use of quantization table %d")
JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data")
JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change")
JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported")
JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined")
JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image")
JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined")
JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x")
JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)")
JMESSAGE(JERR_QUANT_COMPONENTS,
"Cannot quantize more than %d color components")
JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors")
JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors")
JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers")
JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker")
JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x")
JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers")
JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF")
JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s")
JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file")
JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file")
JMESSAGE(JERR_TFILE_WRITE,
"Write failed on temporary file --- out of disk space?")
JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines")
JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x")
JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up")
JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation")
JMESSAGE(JERR_XMS_READ, "Read from XMS failed")
JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed")
JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT)
JMESSAGE(JMSG_VERSION, JVERSION)
JMESSAGE(JTRC_16BIT_TABLES,
"Caution: quantization tables are too coarse for baseline JPEG")
JMESSAGE(JTRC_ADOBE,
"Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d")
JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u")
JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u")
JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x")
JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x")
JMESSAGE(JTRC_DQT, "Define Quantization Table %d precision %d")
JMESSAGE(JTRC_DRI, "Define Restart Interval %u")
JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u")
JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u")
JMESSAGE(JTRC_EOI, "End Of Image")
JMESSAGE(JTRC_HUFFBITS, " %3d %3d %3d %3d %3d %3d %3d %3d")
JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d %d")
JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE,
"Warning: thumbnail image size does not match data length %u")
JMESSAGE(JTRC_JFIF_EXTENSION,
"JFIF extension marker: type 0x%02x, length %u")
JMESSAGE(JTRC_JFIF_THUMBNAIL, " with %d x %d thumbnail image")
JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u")
JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x")
JMESSAGE(JTRC_QUANTVALS, " %4u %4u %4u %4u %4u %4u %4u %4u")
JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors")
JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors")
JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization")
JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d")
JMESSAGE(JTRC_RST, "RST%d")
JMESSAGE(JTRC_SMOOTH_NOTIMPL,
"Smoothing not supported with nonstandard sampling ratios")
JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d")
JMESSAGE(JTRC_SOF_COMPONENT, " Component %d: %dhx%dv q=%d")
JMESSAGE(JTRC_SOI, "Start of Image")
JMESSAGE(JTRC_SOS, "Start Of Scan: %d components")
JMESSAGE(JTRC_SOS_COMPONENT, " Component %d: dc=%d ac=%d")
JMESSAGE(JTRC_SOS_PARAMS, " Ss=%d, Se=%d, Ah=%d, Al=%d")
JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s")
JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s")
JMESSAGE(JTRC_THUMB_JPEG,
"JFIF extension marker: JPEG-compressed thumbnail image, length %u")
JMESSAGE(JTRC_THUMB_PALETTE,
"JFIF extension marker: palette thumbnail image, length %u")
JMESSAGE(JTRC_THUMB_RGB,
"JFIF extension marker: RGB thumbnail image, length %u")
JMESSAGE(JTRC_UNKNOWN_IDS,
"Unrecognized component IDs %d %d %d, assuming YCbCr")
JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u")
JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u")
JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d")
JMESSAGE(JWRN_BOGUS_PROGRESSION,
"Inconsistent progression sequence for component %d coefficient %d")
JMESSAGE(JWRN_EXTRANEOUS_DATA,
"Corrupt JPEG data: %u extraneous bytes before marker 0x%02x")
JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment")
JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code")
JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d")
JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file")
JMESSAGE(JWRN_MUST_RESYNC,
"Corrupt JPEG data: found marker 0x%02x instead of RST%d")
JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG")
JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines")
#ifdef JMAKE_ENUM_LIST
JMSG_LASTMSGCODE
} J_MESSAGE_CODE;
#undef JMAKE_ENUM_LIST
#endif /* JMAKE_ENUM_LIST */
/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
#undef JMESSAGE
#ifndef JERROR_H
#define JERROR_H
/* Macros to simplify using the error and trace message stuff */
/* The first parameter is either type of cinfo pointer */
/* Fatal errors (print message and exit) */
#define ERREXIT(cinfo,code) \
((cinfo)->err->msg_code = (code), \
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
#define ERREXIT1(cinfo,code,p1) \
((cinfo)->err->msg_code = (code), \
(cinfo)->err->msg_parm.i[0] = (p1), \
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
#define ERREXIT2(cinfo,code,p1,p2) \
((cinfo)->err->msg_code = (code), \
(cinfo)->err->msg_parm.i[0] = (p1), \
(cinfo)->err->msg_parm.i[1] = (p2), \
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
#define ERREXIT3(cinfo,code,p1,p2,p3) \
((cinfo)->err->msg_code = (code), \
(cinfo)->err->msg_parm.i[0] = (p1), \
(cinfo)->err->msg_parm.i[1] = (p2), \
(cinfo)->err->msg_parm.i[2] = (p3), \
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
#define ERREXIT4(cinfo,code,p1,p2,p3,p4) \
((cinfo)->err->msg_code = (code), \
(cinfo)->err->msg_parm.i[0] = (p1), \
(cinfo)->err->msg_parm.i[1] = (p2), \
(cinfo)->err->msg_parm.i[2] = (p3), \
(cinfo)->err->msg_parm.i[3] = (p4), \
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
#define ERREXITS(cinfo,code,str) \
((cinfo)->err->msg_code = (code), \
strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
#define MAKESTMT(stuff) do { stuff } while (0)
/* Nonfatal errors (we can keep going, but the data is probably corrupt) */
#define WARNMS(cinfo,code) \
((cinfo)->err->msg_code = (code), \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
#define WARNMS1(cinfo,code,p1) \
((cinfo)->err->msg_code = (code), \
(cinfo)->err->msg_parm.i[0] = (p1), \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
#define WARNMS2(cinfo,code,p1,p2) \
((cinfo)->err->msg_code = (code), \
(cinfo)->err->msg_parm.i[0] = (p1), \
(cinfo)->err->msg_parm.i[1] = (p2), \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
/* Informational/debugging messages */
#define TRACEMS(cinfo,lvl,code) \
((cinfo)->err->msg_code = (code), \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
#define TRACEMS1(cinfo,lvl,code,p1) \
((cinfo)->err->msg_code = (code), \
(cinfo)->err->msg_parm.i[0] = (p1), \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
#define TRACEMS2(cinfo,lvl,code,p1,p2) \
((cinfo)->err->msg_code = (code), \
(cinfo)->err->msg_parm.i[0] = (p1), \
(cinfo)->err->msg_parm.i[1] = (p2), \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
#define TRACEMS3(cinfo,lvl,code,p1,p2,p3) \
MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
_mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \
(cinfo)->err->msg_code = (code); \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
#define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4) \
MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
_mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
(cinfo)->err->msg_code = (code); \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
#define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5) \
MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
_mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
_mp[4] = (p5); \
(cinfo)->err->msg_code = (code); \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
#define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8) \
MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
_mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
_mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \
(cinfo)->err->msg_code = (code); \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
#define TRACEMSS(cinfo,lvl,code,str) \
((cinfo)->err->msg_code = (code), \
strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
#endif /* JERROR_H */
@@ -0,0 +1,89 @@
/*
* jinclude.h
*
* Copyright (C) 1991-1994, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This file exists to provide a single place to fix any problems with
* including the wrong system include files. (Common problems are taken
* care of by the standard jconfig symbols, but on really weird systems
* you may have to edit this file.)
*
* NOTE: this file is NOT intended to be included by applications using the
* JPEG library. Most applications need only include jpeglib.h.
*/
/* Include auto-config file to find out which system include files we need. */
#include "jconfig.h" /* auto configuration options */
#define JCONFIG_INCLUDED /* so that jpeglib.h doesn't do it again */
/*
* We need the NULL macro and size_t typedef.
* On an ANSI-conforming system it is sufficient to include <stddef.h>.
* Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to
* pull in <sys/types.h> as well.
* Note that the core JPEG library does not require <stdio.h>;
* only the default error handler and data source/destination modules do.
* But we must pull it in because of the references to FILE in jpeglib.h.
* You can remove those references if you want to compile without <stdio.h>.
*/
#ifdef HAVE_STDDEF_H
#include <stddef.h>
#endif
#include <stdlib.h>
#ifdef NEED_SYS_TYPES_H
#include <sys/types.h>
#endif
#include <stdio.h>
/*
* We need memory copying and zeroing functions, plus strncpy().
* ANSI and System V implementations declare these in <string.h>.
* BSD doesn't have the mem() functions, but it does have bcopy()/bzero().
* Some systems may declare memset and memcpy in <memory.h>.
*
* NOTE: we assume the size parameters to these functions are of type size_t.
* Change the casts in these macros if not!
*/
#ifdef NEED_BSD_STRINGS
#include <strings.h>
#define MEMZERO(target,size) bzero((void *)(target), (size_t)(size))
#define MEMCOPY(dest,src,size) bcopy((const void *)(src), (void *)(dest), (size_t)(size))
#else /* not BSD, assume ANSI/SysV string lib */
#include <string.h>
#define MEMZERO(target,size) memset((void *)(target), 0, (size_t)(size))
#define MEMCOPY(dest,src,size) memcpy((void *)(dest), (const void *)(src), (size_t)(size))
#endif
/*
* In ANSI C, and indeed any rational implementation, size_t is also the
* type returned by sizeof(). However, it seems there are some irrational
* implementations out there, in which sizeof() returns an int even though
* size_t is defined as long or unsigned long. To ensure consistent results
* we always use this SIZEOF() macro in place of using sizeof() directly.
*/
#define SIZEOF(object) ((size_t) sizeof(object))
/*
* The modules that use fread() and fwrite() always invoke them through
* these macros. On some systems you may need to twiddle the argument casts.
* CAUTION: argument order is different from underlying functions!
*/
#define JFREAD(file,buf,sizeofbuf) \
((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
#define JFWRITE(file,buf,sizeofbuf) \
((size_t) fwrite((const void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
@@ -0,0 +1,178 @@
/*
* jmemsys.h
*
* Copyright (C) 1992-1997, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This include file defines the interface between the system-independent
* and system-dependent portions of the JPEG memory manager. No other
* modules need include it. (The system-independent portion is jmemmgr.c;
* there are several different versions of the system-dependent portion.)
*
* This file works as-is for the system-dependent memory managers supplied
* in the IJG distribution. You may need to modify it if you write a
* custom memory manager. If system-dependent changes are needed in
* this file, the best method is to #ifdef them based on a configuration
* symbol supplied in jconfig.h, as we have done with USE_MSDOS_MEMMGR
* and USE_MAC_MEMMGR.
*/
/*
* These two functions are used to allocate and release small chunks of
* memory. (Typically the total amount requested through jpeg_get_small is
* no more than 20K or so; this will be requested in chunks of a few K each.)
* Behavior should be the same as for the standard library functions malloc
* and free; in particular, jpeg_get_small must return NULL on failure.
* On most systems, these ARE malloc and free. jpeg_free_small is passed the
* size of the object being freed, just in case it's needed.
* On an 80x86 machine using small-data memory model, these manage near heap.
*/
EXTERN(void *) jpeg_get_small JPP((j_common_ptr cinfo, size_t sizeofobject));
EXTERN(void) jpeg_free_small JPP((j_common_ptr cinfo, void * object,
size_t sizeofobject));
/*
* These two functions are used to allocate and release large chunks of
* memory (up to the total free space designated by jpeg_mem_available).
* The interface is the same as above, except that on an 80x86 machine,
* far pointers are used. On most other machines these are identical to
* the jpeg_get/free_small routines; but we keep them separate anyway,
* in case a different allocation strategy is desirable for large chunks.
*/
EXTERN(void FAR *) jpeg_get_large JPP((j_common_ptr cinfo,
size_t sizeofobject));
EXTERN(void) jpeg_free_large JPP((j_common_ptr cinfo, void FAR * object,
size_t sizeofobject));
/*
* The macro MAX_ALLOC_CHUNK designates the maximum number of bytes that may
* be requested in a single call to jpeg_get_large (and jpeg_get_small for that
* matter, but that case should never come into play). This macro is needed
* to model the 64Kb-segment-size limit of far addressing on 80x86 machines.
* On those machines, we expect that jconfig.h will provide a proper value.
* On machines with 32-bit flat address spaces, any large constant may be used.
*
* NB: jmemmgr.c expects that MAX_ALLOC_CHUNK will be representable as type
* size_t and will be a multiple of sizeof(align_type).
*/
#ifndef MAX_ALLOC_CHUNK /* may be overridden in jconfig.h */
#define MAX_ALLOC_CHUNK 1000000000L
#endif
/*
* This routine computes the total space still available for allocation by
* jpeg_get_large. If more space than this is needed, backing store will be
* used. NOTE: any memory already allocated must not be counted.
*
* There is a minimum space requirement, corresponding to the minimum
* feasible buffer sizes; jmemmgr.c will request that much space even if
* jpeg_mem_available returns zero. The maximum space needed, enough to hold
* all working storage in memory, is also passed in case it is useful.
* Finally, the total space already allocated is passed. If no better
* method is available, cinfo->mem->max_memory_to_use - already_allocated
* is often a suitable calculation.
*
* It is OK for jpeg_mem_available to underestimate the space available
* (that'll just lead to more backing-store access than is really necessary).
* However, an overestimate will lead to failure. Hence it's wise to subtract
* a slop factor from the true available space. 5% should be enough.
*
* On machines with lots of virtual memory, any large constant may be returned.
* Conversely, zero may be returned to always use the minimum amount of memory.
*/
EXTERN(long) jpeg_mem_available JPP((j_common_ptr cinfo,
long min_bytes_needed,
long max_bytes_needed,
long already_allocated));
/*
* This structure holds whatever state is needed to access a single
* backing-store object. The read/write/close method pointers are called
* by jmemmgr.c to manipulate the backing-store object; all other fields
* are private to the system-dependent backing store routines.
*/
#define TEMP_NAME_LENGTH 64 /* max length of a temporary file's name */
#ifdef USE_MSDOS_MEMMGR /* DOS-specific junk */
typedef unsigned short XMSH; /* type of extended-memory handles */
typedef unsigned short EMSH; /* type of expanded-memory handles */
typedef union {
short file_handle; /* DOS file handle if it's a temp file */
XMSH xms_handle; /* handle if it's a chunk of XMS */
EMSH ems_handle; /* handle if it's a chunk of EMS */
} handle_union;
#endif /* USE_MSDOS_MEMMGR */
#ifdef USE_MAC_MEMMGR /* Mac-specific junk */
#include <Files.h>
#endif /* USE_MAC_MEMMGR */
typedef struct backing_store_struct * backing_store_ptr;
typedef struct backing_store_struct {
/* Methods for reading/writing/closing this backing-store object */
JMETHOD(void, read_backing_store, (j_common_ptr cinfo, backing_store_ptr info, void FAR * buffer_address, long file_offset, long byte_count));
JMETHOD(void, write_backing_store, (j_common_ptr cinfo, backing_store_ptr info, void FAR * buffer_address, long file_offset, long byte_count));
JMETHOD(void, close_backing_store, (j_common_ptr cinfo, backing_store_ptr info));
/* Private fields for system-dependent backing-store management */
#ifdef USE_MSDOS_MEMMGR
/* For the MS-DOS manager (jmemdos.c), we need: */
handle_union handle; /* reference to backing-store storage object */
char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */
#else
#ifdef USE_MAC_MEMMGR
/* For the Mac manager (jmemmac.c), we need: */
short temp_file; /* file reference number to temp file */
FSSpec tempSpec; /* the FSSpec for the temp file */
char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */
#else
/* For a typical implementation with temp files, we need: */
/* FILE * temp_file; */ /* stdio reference to temp file */
char temp_name[TEMP_NAME_LENGTH]; /* name of temp file */
#endif
#endif
} backing_store_info;
/*
* Initial opening of a backing-store object. This must fill in the
* read/write/close pointers in the object. The read/write routines
* may take an error exit if the specified maximum file size is exceeded.
* (If jpeg_mem_available always returns a large value, this routine can
* just take an error exit.)
*/
EXTERN(void) jpeg_open_backing_store JPP((j_common_ptr cinfo,
backing_store_ptr info,
long total_bytes_needed));
/*
* These routines take care of any system-dependent initialization and
* cleanup required. jpeg_mem_init will be called before anything is
* allocated (and, therefore, nothing in cinfo is of use except the error
* manager pointer). It should return a suitable default value for
* max_memory_to_use; this may subsequently be overridden by the surrounding
* application. (Note that max_memory_to_use is only important if
* jpeg_mem_available chooses to consult it ... no one else will.)
* jpeg_mem_term may assume that all requested memory has been freed and that
* all opened backing-store objects have been closed.
*/
EXTERN(long) jpeg_mem_init JPP((j_common_ptr cinfo));
EXTERN(void) jpeg_mem_term JPP((j_common_ptr cinfo));
@@ -0,0 +1,312 @@
/*
* jmorecfg.h
*
* Copyright (C) 1991-1997, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This file contains additional configuration options that customize the
* JPEG software for special applications or support machine-dependent
* optimizations. Most users will not need to touch this file.
*/
/*
* Define BITS_IN_JSAMPLE as either
* 8 for 8-bit sample values (the usual setting)
* 12 for 12-bit sample values
* Only 8 and 12 are legal data precisions for lossy JPEG according to the
* JPEG standard, and the IJG code does not support anything else!
* We do not support run-time selection of data precision, sorry.
*/
#define BITS_IN_JSAMPLE 8 /* use 8 or 12 */
/*
* Maximum number of components (color channels) allowed in JPEG image.
* To meet the letter of the JPEG spec, set this to 255. However, darn
* few applications need more than 4 channels (maybe 5 for CMYK + alpha
* mask). We recommend 10 as a reasonable compromise; use 4 if you are
* really short on memory. (Each allowed component costs a hundred or so
* bytes of storage, whether actually used in an image or not.)
*/
#define MAX_COMPONENTS 4 /* maximum number of image components */
/*
* Basic data types.
* You may need to change these if you have a machine with unusual data
* type sizes; for example, "char" not 8 bits, "short" not 16 bits,
* or "long" not 32 bits. We don't care whether "int" is 16 or 32 bits,
* but it had better be at least 16.
*/
/* Representation of a single sample (pixel element value).
* We frequently allocate large arrays of these, so it's important to keep
* them small. But if you have memory to burn and access to char or short
* arrays is very slow on your hardware, you might want to change these.
*/
#if BITS_IN_JSAMPLE == 8
/* JSAMPLE should be the smallest type that will hold the values 0..255.
* You can use a signed char by having GETJSAMPLE mask it with 0xFF.
*/
typedef unsigned char JSAMPLE;
#define GETJSAMPLE(value) ((int) (value))
#define MAXJSAMPLE 255
#define CENTERJSAMPLE 128
#elif BITS_IN_JSAMPLE == 12
/* JSAMPLE should be the smallest type that will hold the values 0..4095.
* On nearly all machines "short" will do nicely.
*/
typedef short JSAMPLE;
#define GETJSAMPLE(value) ((int) (value))
#define MAXJSAMPLE 4095
#define CENTERJSAMPLE 2048
#endif /* BITS_IN_JSAMPLE == 12 */
/* Representation of a DCT frequency coefficient.
* This should be a signed value of at least 16 bits; "short" is usually OK.
* Again, we allocate large arrays of these, but you can change to int
* if you have memory to burn and "short" is really slow.
*/
typedef short JCOEF;
/* Compressed datastreams are represented as arrays of JOCTET.
* These must be EXACTLY 8 bits wide, at least once they are written to
* external storage. Note that when using the stdio data source/destination
* managers, this is also the data type passed to fread/fwrite.
*/
typedef unsigned char JOCTET;
#define GETJOCTET(value) (value)
/* These typedefs are used for various table entries and so forth.
* They must be at least as wide as specified; but making them too big
* won't cost a huge amount of memory, so we don't provide special
* extraction code like we did for JSAMPLE. (In other words, these
* typedefs live at a different point on the speed/space tradeoff curve.)
*/
/* UINT8 must hold at least the values 0..255. */
typedef unsigned char UINT8;
/* UINT16 must hold at least the values 0..65535. */
typedef unsigned short UINT16;
/* INT16 must hold at least the values -32768..32767. */
typedef short INT16;
/* INT32 must hold at least signed 32-bit values. */
typedef long INT32;
/* Datatype used for image dimensions. The JPEG standard only supports
* images up to 64K*64K due to 16-bit fields in SOF markers. Therefore
* "unsigned int" is sufficient on all machines. However, if you need to
* handle larger images and you don't mind deviating from the spec, you
* can change this datatype.
*/
typedef unsigned int JDIMENSION;
#define JPEG_MAX_DIMENSION 65500L /* a tad under 64K to prevent overflows */
/* These macros are used in all function definitions and extern declarations.
* You could modify them if you need to change function linkage conventions;
* in particular, you'll need to do that to make the library a Windows DLL.
* Another application is to make all functions global for use with debuggers
* or code profilers that require it.
*/
/* a function called through method pointers: */
#define METHODDEF(type) static type
/* a function used only in its module: */
#define LOCAL(type) static type
/* a function referenced thru EXTERNs: */
#define GLOBAL(type) type
/* a reference to a GLOBAL function: */
#define EXTERN(type) extern type
/* This macro is used to declare a "method", that is, a function pointer.
* We want to supply prototype parameters if the compiler can cope.
* Note that the arglist parameter must be parenthesized!
* Again, you can customize this if you need special linkage keywords.
*/
#define JMETHOD(type,methodname,arglist) type (*methodname) arglist
/* Here is the pseudo-keyword for declaring pointers that must be "far"
* on 80x86 machines. Most of the specialized coding for 80x86 is handled
* by just saying "FAR *" where such a pointer is needed. In a few places
* explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol.
*/
#ifdef NEED_FAR_POINTERS
#define FAR far
#else
#define FAR
#endif
/*
* On a few systems, type boolean and/or its values FALSE, TRUE may appear
* in standard header files. Or you may have conflicts with application-
* specific header files that you want to include together with these files.
* Defining HAVE_BOOLEAN before including jpeglib.h should make it work.
*/
#ifndef HAVE_BOOLEAN
typedef int boolean;
#endif
#ifndef FALSE /* in case these macros already exist */
#define FALSE 0 /* values of boolean */
#endif
#ifndef TRUE
#define TRUE 1
#endif
/*
* The remaining options affect code selection within the JPEG library,
* but they don't need to be visible to most applications using the library.
* To minimize application namespace pollution, the symbols won't be
* defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined.
*/
#ifdef JPEG_INTERNALS
#define JPEG_INTERNAL_OPTIONS
#endif
#ifdef JPEG_INTERNAL_OPTIONS
/*
* These defines indicate whether to include various optional functions.
* Undefining some of these symbols will produce a smaller but less capable
* library. Note that you can leave certain source files out of the
* compilation/linking process if you've #undef'd the corresponding symbols.
* (You may HAVE to do that if your compiler doesn't like null source files.)
*/
/* Arithmetic coding is unsupported for legal reasons. Complaints to IBM. */
/* Capability options common to encoder and decoder: */
#define DCT_ISLOW_SUPPORTED /* slow but accurate integer algorithm */
#define DCT_IFAST_SUPPORTED /* faster, less accurate integer method */
#ifdef DCT_FLOAT_SUPPORTED
#undef DCT_FLOAT_SUPPORTED /* floating-point: accurate, fast on fast HW */
#endif
/* Encoder capability options: */
#ifdef C_ARITH_CODING_SUPPORTED
#undef C_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */
#endif
#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
#define C_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/
#define ENTROPY_OPT_SUPPORTED /* Optimization of entropy coding parms? */
/* Note: if you selected 12-bit data precision, it is dangerous to turn off
* ENTROPY_OPT_SUPPORTED. The standard Huffman tables are only good for 8-bit
* precision, so jchuff.c normally uses entropy optimization to compute
* usable tables for higher precision. If you don't want to do optimization,
* you'll have to supply different default Huffman tables.
* The exact same statements apply for progressive JPEG: the default tables
* don't work for progressive mode. (This may get fixed, however.)
*/
#define INPUT_SMOOTHING_SUPPORTED /* Input image smoothing option? */
/* Decoder capability options: */
#ifdef D_ARITH_CODING_SUPPORTED
#undef D_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */
#endif
#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
#define D_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/
#ifdef SAVE_MARKERS_SUPPORTED
#undef SAVE_MARKERS_SUPPORTED /* jpeg_save_markers() needed? (Default was on, RS) */
#endif
#ifdef BLOCK_SMOOTHING_SUPPORTED
#undef BLOCK_SMOOTHING_SUPPORTED /* Block smoothing? (Progressive only) */
#endif
#ifdef IDCT_SCALING_SUPPORTED
#undef IDCT_SCALING_SUPPORTED /* Output rescaling via IDCT? */
#endif
#ifdef UPSAMPLE_SCALING_SUPPORTED
#undef UPSAMPLE_SCALING_SUPPORTED /* Output rescaling at upsample stage? */
#endif
#define UPSAMPLE_MERGING_SUPPORTED /* Fast path for sloppy upsampling? */
#define QUANT_1PASS_SUPPORTED /* 1-pass color quantization? */
#define QUANT_2PASS_SUPPORTED /* 2-pass color quantization? */
/* more capability options later, no doubt */
/*
* Ordering of RGB data in scanlines passed to or from the application.
* If your application wants to deal with data in the order B,G,R, just
* change these macros. You can also deal with formats such as R,G,B,X
* (one extra byte per pixel) by changing RGB_PIXELSIZE. Note that changing
* the offsets will also change the order in which colormap data is organized.
* RESTRICTIONS:
* 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats.
* 2. These macros only affect RGB<=>YCbCr color conversion, so they are not
* useful if you are using JPEG color spaces other than YCbCr or grayscale.
* 3. The color quantizer modules will not behave desirably if RGB_PIXELSIZE
* is not 3 (they don't understand about dummy color components!). So you
* can't use color quantization if you change that value.
*/
#define RGB_RED 0 /* Offset of Red in an RGB scanline element */
#define RGB_GREEN 1 /* Offset of Green */
#define RGB_BLUE 2 /* Offset of Blue */
#define RGB_PIXELSIZE 3 /* JSAMPLEs per RGB scanline element */
/* Definitions for speed-related optimizations. */
/* If your compiler supports inline functions, define INLINE
* as the inline keyword; otherwise define it as empty.
*/
#ifndef INLINE
#ifdef __GNUC__ /* for instance, GNU C knows about inline */
#define INLINE __inline__
#endif
#ifndef INLINE
#define INLINE /* default is to define it as empty */
#endif
#endif
/* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
* two 16-bit shorts is faster than multiplying two ints. Define MULTIPLIER
* as short on such a machine. MULTIPLIER must be at least 16 bits wide.
*/
#ifndef MULTIPLIER
#define MULTIPLIER int /* type for fastest integer multiply */
#endif
/* FAST_FLOAT should be either float or double, whichever is done faster
* by your compiler. (Note that this type is only used in the floating point
* DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.)
* Typically, float is faster in ANSI C compilers, while double is faster in
* pre-ANSI compilers (because they insist on converting to double anyway).
* The code below therefore chooses float if we have ANSI-style prototypes.
*/
#ifndef FAST_FLOAT
#define FAST_FLOAT float
#endif
#endif /* JPEG_INTERNAL_OPTIONS */
@@ -0,0 +1,357 @@
/*
* jpegint.h
*
* Copyright (C) 1991-1997, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This file provides common declarations for the various JPEG modules.
* These declarations are considered internal to the JPEG library; most
* applications using the library shouldn't need to include this file.
*/
/* Declarations for both compression & decompression */
typedef enum { /* Operating modes for buffer controllers */
JBUF_PASS_THRU, /* Plain stripwise operation */
/* Remaining modes require a full-image buffer to have been created */
JBUF_SAVE_SOURCE, /* Run source subobject only, save output */
JBUF_CRANK_DEST, /* Run dest subobject only, using saved data */
JBUF_SAVE_AND_PASS /* Run both subobjects, save output */
} J_BUF_MODE;
/* Values of global_state field (jdapi.c has some dependencies on ordering!) */
#define CSTATE_START 100 /* after create_compress */
#define CSTATE_SCANNING 101 /* start_compress done, write_scanlines OK */
#define CSTATE_RAW_OK 102 /* start_compress done, write_raw_data OK */
#define CSTATE_WRCOEFS 103 /* jpeg_write_coefficients done */
#define DSTATE_START 200 /* after create_decompress */
#define DSTATE_INHEADER 201 /* reading header markers, no SOS yet */
#define DSTATE_READY 202 /* found SOS, ready for start_decompress */
#define DSTATE_PRELOAD 203 /* reading multiscan file in start_decompress*/
#define DSTATE_PRESCAN 204 /* performing dummy pass for 2-pass quant */
#define DSTATE_SCANNING 205 /* start_decompress done, read_scanlines OK */
#define DSTATE_RAW_OK 206 /* start_decompress done, read_raw_data OK */
#define DSTATE_BUFIMAGE 207 /* expecting jpeg_start_output */
#define DSTATE_BUFPOST 208 /* looking for SOS/EOI in jpeg_finish_output */
#define DSTATE_RDCOEFS 209 /* reading file in jpeg_read_coefficients */
#define DSTATE_STOPPING 210 /* looking for EOI in jpeg_finish_decompress */
/* Declarations for compression modules */
/* Master control module */
struct jpeg_comp_master {
JMETHOD(void, prepare_for_pass, (j_compress_ptr cinfo));
JMETHOD(void, pass_startup, (j_compress_ptr cinfo));
JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
/* State variables made visible to other modules */
boolean call_pass_startup; /* True if pass_startup must be called */
boolean is_last_pass; /* True during last pass */
};
/* Main buffer control (downsampled-data buffer) */
struct jpeg_c_main_controller {
JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
JMETHOD(void, process_data, (j_compress_ptr cinfo,
JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
JDIMENSION in_rows_avail));
};
/* Compression preprocessing (downsampling input buffer control) */
struct jpeg_c_prep_controller {
JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
JMETHOD(void, pre_process_data, (j_compress_ptr cinfo,
JSAMPARRAY input_buf,
JDIMENSION *in_row_ctr,
JDIMENSION in_rows_avail,
JSAMPIMAGE output_buf,
JDIMENSION *out_row_group_ctr,
JDIMENSION out_row_groups_avail));
};
/* Coefficient buffer control */
struct jpeg_c_coef_controller {
JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
JMETHOD(boolean, compress_data, (j_compress_ptr cinfo,
JSAMPIMAGE input_buf));
};
/* Colorspace conversion */
struct jpeg_color_converter {
JMETHOD(void, start_pass, (j_compress_ptr cinfo));
JMETHOD(void, color_convert, (j_compress_ptr cinfo,
JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
JDIMENSION output_row, int num_rows));
};
/* Downsampling */
struct jpeg_downsampler {
JMETHOD(void, start_pass, (j_compress_ptr cinfo));
JMETHOD(void, downsample, (j_compress_ptr cinfo,
JSAMPIMAGE input_buf, JDIMENSION in_row_index,
JSAMPIMAGE output_buf,
JDIMENSION out_row_group_index));
boolean need_context_rows; /* TRUE if need rows above & below */
};
/* Forward DCT (also controls coefficient quantization) */
struct jpeg_forward_dct {
JMETHOD(void, start_pass, (j_compress_ptr cinfo));
/* perhaps this should be an array??? */
JMETHOD(void, forward_DCT, (j_compress_ptr cinfo,
jpeg_component_info * compptr,
JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
JDIMENSION start_row, JDIMENSION start_col,
JDIMENSION num_blocks));
};
/* Entropy encoding */
struct jpeg_entropy_encoder {
JMETHOD(void, start_pass, (j_compress_ptr cinfo, boolean gather_statistics));
JMETHOD(boolean, encode_mcu, (j_compress_ptr cinfo, JBLOCKROW *MCU_data));
JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
};
/* Marker writing */
struct jpeg_marker_writer {
JMETHOD(void, write_file_header, (j_compress_ptr cinfo));
JMETHOD(void, write_frame_header, (j_compress_ptr cinfo));
JMETHOD(void, write_scan_header, (j_compress_ptr cinfo));
JMETHOD(void, write_file_trailer, (j_compress_ptr cinfo));
JMETHOD(void, write_tables_only, (j_compress_ptr cinfo));
/* These routines are exported to allow insertion of extra markers */
/* Probably only COM and APPn markers should be written this way */
JMETHOD(void, write_marker_header, (j_compress_ptr cinfo, int marker,
unsigned int datalen));
JMETHOD(void, write_marker_byte, (j_compress_ptr cinfo, int val));
};
/* Declarations for decompression modules */
/* Master control module */
struct jpeg_decomp_master {
JMETHOD(void, prepare_for_output_pass, (j_decompress_ptr cinfo));
JMETHOD(void, finish_output_pass, (j_decompress_ptr cinfo));
/* State variables made visible to other modules */
boolean is_dummy_pass; /* True during 1st pass for 2-pass quant */
};
/* Input control module */
struct jpeg_input_controller {
JMETHOD(int, consume_input, (j_decompress_ptr cinfo));
JMETHOD(void, reset_input_controller, (j_decompress_ptr cinfo));
JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
JMETHOD(void, finish_input_pass, (j_decompress_ptr cinfo));
/* State variables made visible to other modules */
boolean has_multiple_scans; /* True if file has multiple scans */
boolean eoi_reached; /* True when EOI has been consumed */
};
/* Main buffer control (downsampled-data buffer) */
struct jpeg_d_main_controller {
JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
JMETHOD(void, process_data, (j_decompress_ptr cinfo,
JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
JDIMENSION out_rows_avail));
};
/* Coefficient buffer control */
struct jpeg_d_coef_controller {
JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
JMETHOD(int, consume_data, (j_decompress_ptr cinfo));
JMETHOD(void, start_output_pass, (j_decompress_ptr cinfo));
JMETHOD(int, decompress_data, (j_decompress_ptr cinfo,
JSAMPIMAGE output_buf));
/* Pointer to array of coefficient virtual arrays, or NULL if none */
jvirt_barray_ptr *coef_arrays;
};
/* Decompression postprocessing (color quantization buffer control) */
struct jpeg_d_post_controller {
JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
JMETHOD(void, post_process_data, (j_decompress_ptr cinfo,
JSAMPIMAGE input_buf,
JDIMENSION *in_row_group_ctr,
JDIMENSION in_row_groups_avail,
JSAMPARRAY output_buf,
JDIMENSION *out_row_ctr,
JDIMENSION out_rows_avail));
};
/* Marker reading & parsing */
struct jpeg_marker_reader {
JMETHOD(void, reset_marker_reader, (j_decompress_ptr cinfo));
/* Read markers until SOS or EOI.
* Returns same codes as are defined for jpeg_consume_input:
* JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI.
*/
JMETHOD(int, read_markers, (j_decompress_ptr cinfo));
/* Read a restart marker --- exported for use by entropy decoder only */
jpeg_marker_parser_method read_restart_marker;
/* State of marker reader --- nominally internal, but applications
* supplying COM or APPn handlers might like to know the state.
*/
boolean saw_SOI; /* found SOI? */
boolean saw_SOF; /* found SOF? */
int next_restart_num; /* next restart number expected (0-7) */
unsigned int discarded_bytes; /* # of bytes skipped looking for a marker */
};
/* Entropy decoding */
struct jpeg_entropy_decoder {
JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
JMETHOD(boolean, decode_mcu, (j_decompress_ptr cinfo,
JBLOCKROW *MCU_data));
/* This is here to share code between baseline and progressive decoders; */
/* other modules probably should not use it */
boolean insufficient_data; /* set TRUE after emitting warning */
};
/* Inverse DCT (also performs dequantization) */
typedef JMETHOD(void, inverse_DCT_method_ptr,
(j_decompress_ptr cinfo, jpeg_component_info * compptr,
JCOEFPTR coef_block,
JSAMPARRAY output_buf, JDIMENSION output_col));
struct jpeg_inverse_dct {
JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
/* It is useful to allow each component to have a separate IDCT method. */
inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS];
};
/* Upsampling (note that upsampler must also call color converter) */
struct jpeg_upsampler {
JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
JMETHOD(void, upsample, (j_decompress_ptr cinfo,
JSAMPIMAGE input_buf,
JDIMENSION *in_row_group_ctr,
JDIMENSION in_row_groups_avail,
JSAMPARRAY output_buf,
JDIMENSION *out_row_ctr,
JDIMENSION out_rows_avail));
boolean need_context_rows; /* TRUE if need rows above & below */
};
/* Colorspace conversion */
struct jpeg_color_deconverter {
JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
JMETHOD(void, color_convert, (j_decompress_ptr cinfo,
JSAMPIMAGE input_buf, JDIMENSION input_row,
JSAMPARRAY output_buf, int num_rows));
};
/* Color quantization or color precision reduction */
struct jpeg_color_quantizer {
JMETHOD(void, start_pass, (j_decompress_ptr cinfo, boolean is_pre_scan));
JMETHOD(void, color_quantize, (j_decompress_ptr cinfo,
JSAMPARRAY input_buf, JSAMPARRAY output_buf,
int num_rows));
JMETHOD(void, finish_pass, (j_decompress_ptr cinfo));
JMETHOD(void, new_color_map, (j_decompress_ptr cinfo));
};
/* Miscellaneous useful macros */
#ifdef MAX
#undef MAX
#endif
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#ifdef MIN
#undef MIN
#endif
#define MIN(a,b) ((a) < (b) ? (a) : (b))
/* We assume that right shift corresponds to signed division by 2 with
* rounding towards minus infinity. This is correct for typical "arithmetic
* shift" instructions that shift in copies of the sign bit. But some
* C compilers implement >> with an unsigned shift. For these machines you
* must define RIGHT_SHIFT_IS_UNSIGNED.
* RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity.
* It is only applied with constant shift counts. SHIFT_TEMPS must be
* included in the variables of any routine using RIGHT_SHIFT.
*/
#ifdef RIGHT_SHIFT_IS_UNSIGNED
#define SHIFT_TEMPS INT32 shift_temp;
#define RIGHT_SHIFT(x,shft) \
((shift_temp = (x)) < 0 ? \
(shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \
(shift_temp >> (shft)))
#else
#define SHIFT_TEMPS
#define RIGHT_SHIFT(x,shft) ((x) >> (shft))
#endif
/* Compression module initialization routines */
EXTERN(void) jinit_compress_master JPP((j_compress_ptr cinfo));
EXTERN(void) jinit_c_master_control JPP((j_compress_ptr cinfo,
boolean transcode_only));
EXTERN(void) jinit_c_main_controller JPP((j_compress_ptr cinfo,
boolean need_full_buffer));
EXTERN(void) jinit_c_prep_controller JPP((j_compress_ptr cinfo,
boolean need_full_buffer));
EXTERN(void) jinit_c_coef_controller JPP((j_compress_ptr cinfo,
boolean need_full_buffer));
EXTERN(void) jinit_color_converter JPP((j_compress_ptr cinfo));
EXTERN(void) jinit_downsampler JPP((j_compress_ptr cinfo));
EXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo));
EXTERN(void) jinit_huff_encoder JPP((j_compress_ptr cinfo));
EXTERN(void) jinit_phuff_encoder JPP((j_compress_ptr cinfo));
EXTERN(void) jinit_marker_writer JPP((j_compress_ptr cinfo));
/* Decompression module initialization routines */
EXTERN(void) jinit_master_decompress JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_d_main_controller JPP((j_decompress_ptr cinfo,
boolean need_full_buffer));
EXTERN(void) jinit_d_coef_controller JPP((j_decompress_ptr cinfo,
boolean need_full_buffer));
EXTERN(void) jinit_d_post_controller JPP((j_decompress_ptr cinfo,
boolean need_full_buffer));
EXTERN(void) jinit_input_controller JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_marker_reader JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_huff_decoder JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_phuff_decoder JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_upsampler JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_color_deconverter JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_1pass_quantizer JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_2pass_quantizer JPP((j_decompress_ptr cinfo));
EXTERN(void) jinit_merged_upsampler JPP((j_decompress_ptr cinfo));
/* Memory manager initialization */
EXTERN(void) jinit_memory_mgr JPP((j_common_ptr cinfo));
/* Utility routines in jutils.c */
EXTERN(long) jdiv_round_up JPP((long a, long b));
EXTERN(long) jround_up JPP((long a, long b));
EXTERN(void) jcopy_sample_rows JPP((JSAMPARRAY input_array, int source_row,
JSAMPARRAY output_array, int dest_row,
int num_rows, JDIMENSION num_cols));
EXTERN(void) jcopy_block_row JPP((JBLOCKROW input_row, JBLOCKROW output_row,
JDIMENSION num_blocks));
EXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero));
/* Constant tables in jutils.c */
#if 0 /* This table is not actually needed in v6a */
extern const int jpeg_zigzag_order[]; /* natural coef order to zigzag order */
#endif
extern const int jpeg_natural_order[DCTSIZE2+16]; /* zigzag coef order to natural order */
/* Suppress undefined-structure complaints if necessary. */
#ifdef INCOMPLETE_TYPES_BROKEN
#ifndef AM_MEMORY_MANAGER /* only jmemmgr.c defines these */
struct jvirt_sarray_control { long dummy; };
struct jvirt_barray_control { long dummy; };
#endif
#endif /* INCOMPLETE_TYPES_BROKEN */
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,14 @@
/*
* jversion.h
*
* Copyright (C) 1991-1998, Thomas G. Lane.
* This file is part of the Independent JPEG Group's software.
* For conditions of distribution and use, see the accompanying README file.
*
* This file contains software version identification.
*/
#define JVERSION "6b 27-Mar-1998"
#define JCOPYRIGHT "Copyright (C) 1998, Thomas G. Lane"
@@ -0,0 +1,26 @@
REM ****************************************
REM Compile GUIDemo modules
REM ****************************************
CALL CC GUIDEMO
CALL CC GUIDEMO_Automotive
CALL CC GUIDEMO_Bitmap
CALL CC GUIDEMO_Bitmap4bpp
CALL CC GUIDEMO_Circle
CALL CC GUIDEMO_ColorBar
CALL CC GUIDEMO_ColorList
CALL CC GUIDEMO_Cursor
CALL CC GUIDEMO_Dialog
CALL CC GUIDEMO_Font
CALL CC GUIDEMO_FrameWin
CALL CC GUIDEMO_Graph
CALL CC GUIDEMO_HardwareInfo
CALL CC GUIDEMO_Intro
CALL CC GUIDEMO_LUT
CALL CC GUIDEMO_MemDevB
CALL CC GUIDEMO_Navi
CALL CC GUIDEMO_Polygon
CALL CC GUIDEMO_ProgBar
CALL CC GUIDEMO_Speed
CALL CC GUIDEMO_Touch
CALL CC SeggerLogoBlue

Some files were not shown because too many files have changed in this diff Show More