📄 widget_editvalues.c
字号:
/*
*********************************************************************************************************
* 礐/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2000, 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.
*
* File : WIDGET_EditValues.c
* Purpose : 礐/GUI sample code demonstrating the use of edit functions
*********************************************************************************************************
*/
#include "gui.H"
#include "edit.h"
#include <string.h>
/*******************************************************************
*
* Edit strings
*
********************************************************************
*/
static void EditStrings(void) {
char TestString[25]; /* String to be changed */
GUI_Clear();
GUI_DispString("Edit strings\n");
GUI_DispString("Press <ENTER> or <ESC> for exit\n");
GUI_DispString("Press <UP> or <DOWN> to modify\n");
GUI_DispString("Press <INSERT> to change mode\n");
EDIT_SetDefaultFont(&GUI_Font13B_ASCII); /* Default font for EDIT-widget */
/* Edit string left aligned */
GUI_GotoXY(10, 60);
strcpy(TestString, "left aligned...");
EDIT_SetDefaultTextAlign(GUI_TA_LEFT | GUI_TA_VCENTER);
GUI_EditString(TestString, sizeof(TestString) - 1, 140);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispString(TestString);
/* Edit string right aligned */
GUI_GotoXY(10, 80);
strcpy(TestString, "right aligned...");
EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_EditString(TestString, sizeof(TestString) - 1, 140);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispString(TestString);
/* Edit string centered */
GUI_GotoXY(10, 100);
strcpy(TestString, "centered...");
EDIT_SetDefaultTextAlign(GUI_TA_CENTER | GUI_TA_VCENTER);
GUI_EditString(TestString, sizeof(TestString) - 1, 140);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispString(TestString);
GUI_WaitKey();
}
/*******************************************************************
*
* Edit floatingpoint values
*
********************************************************************
*/
static void EditFloatingpointValues(void) {
float Ret;
float Value = 3456.7654f; /* Value to be edited */
float Min = -2000.1111f; /* Minimum */
float Max = 8888.7777f; /* Maximum */
int Len = 10; /* Number of digits including sign and decimal point */
int Shift = 4; /* Position of decimal point */
GUI_Clear();
GUI_DispString("Edit floatingpoint values\n");
GUI_DispString("Press <ENTER> or <ESC> for exit\n");
GUI_DispString("Press <UP> or <DOWN> to modify\n");
GUI_DispString("\nMinium: ");
GUI_DispFloat(Min, Len);
GUI_DispString("\nMaximum: ");
GUI_DispFloat(Max, Len);
GUI_DispNextLine();
EDIT_SetDefaultFont(&GUI_Font13B_ASCII); /* Default font for EDIT-widget */
EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
/* Edit floatingpoint value in signed mode */
GUI_GotoXY(10, 60);
Ret = GUI_EditFloat(Value, Min, Max, Len, 100, Shift, GUI_EDIT_SIGNED); /* Display signs in every case */
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispFloat(Ret, Len);
/* Edit floatingpoint value in normal mode */
GUI_GotoXY(10, 100);
Ret = GUI_EditFloat(Value, Min, Max, Len, 100, Shift, GUI_EDIT_NORMAL);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispFloat(Ret, Len);
GUI_WaitKey();
}
/*******************************************************************
*
* Edit decimal values
*
********************************************************************
*/
static void EditDecimalValues(void) {
I32 Ret;
I32 Value = -1234; /* Value to be edited */
I32 Min = -2000; /* Minimum */
I32 Max = 5000; /* Maximum */
int Len = 6; /* Number of digits including sign and decimal point */
int Shift = 2; /* Position of decimal point */
GUI_Clear();
GUI_DispString("Edit decimal values\n");
GUI_DispString("Press <ENTER> or <ESC> for exit\n");
GUI_DispString("Press <UP> or <DOWN> to modify\n");
GUI_DispString("\nMinium: ");
GUI_DispDecShift(Min, Len, Shift);
GUI_DispString("\nMaximum: ");
GUI_DispDecShift(Max, Len, Shift);
GUI_DispNextLine();
EDIT_SetDefaultFont(&GUI_Font13HB_ASCII); /* Default font for EDIT-widget */
EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
/* Edit decimal value in signed mode */
GUI_GotoXY(10, 60);
Ret = GUI_EditDec(Value, Min, Max, Len, 100, Shift, GUI_EDIT_SIGNED); /* Display signs in every case */
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispSDecShift(Ret, Len, Shift);
/* Edit decimal value in normal mode */
GUI_GotoXY(10, 80);
Ret = GUI_EditDec(Value, Min, Max, Len, 100, Shift, GUI_EDIT_NORMAL); /* Display only negative sign */
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispDecShift(Ret, Len, Shift);
GUI_WaitKey();
}
/*******************************************************************
*
* Edit binary values using different fonts
*
********************************************************************
*/
static void EditBinValues(void) {
U32 Ret;
U32 Value = 0x1234; /* Value to be edited */
U32 Min = 0x1000; /* Minimum */
U32 Max = 0x4fff; /* Maximum */
int Len = 16; /* Number of digits */
GUI_Clear();
GUI_DispString("Edit binary values with different alignements\n");
GUI_DispString("Press <ENTER> or <ESC> for exit\n");
GUI_DispString("Press <UP> or <DOWN> to modify\n");
GUI_DispString("\nMinium: ");
GUI_DispBin(Min, Len);
GUI_DispString("\nMaximum: ");
GUI_DispBin(Max, Len);
GUI_DispNextLine();
EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
/* GUI_Font8x16 */
GUI_GotoXY(10, 60);
EDIT_SetDefaultFont(&GUI_Font8x16);
Ret = GUI_EditBin(Value, Min, Max, Len, 0);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispBin(Ret, Len);
/* GUI_Font6x8 */
GUI_GotoXY(10, 80);
EDIT_SetDefaultFont(&GUI_Font6x8);
Ret = GUI_EditBin(Value, Min, Max, Len, 0);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispBin(Ret, Len);
/* GUI_Font10S_ASCII */
GUI_GotoXY(10, 100);
EDIT_SetDefaultFont(&GUI_Font10S_ASCII);
Ret = GUI_EditBin(Value, Min, Max, Len, 140);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispBin(Ret, Len);
GUI_WaitKey();
}
/*******************************************************************
*
* Edit hexadecimal values with different alignements
*
********************************************************************
*/
static void EditHexValues(void) {
U32 Ret;
U32 Value = 0x12345; /* Value to be edited */
U32 Min = 0x10000; /* Minimum */
U32 Max = 0x3ffff; /* Maximum */
int Len = 5; /* Number of digits */
int XSize = 140; /* XSize of EDIT-widget */
GUI_Clear();
GUI_DispString("Edit hexadecimal values with different alignements\n");
EDIT_SetDefaultFont(&GUI_Font16B_ASCII); /* Default font for EDIT-widget */
GUI_DispString("Press <ENTER> or <ESC> for exit\n");
GUI_DispString("Press <UP> or <DOWN> to modify\n");
GUI_DispString("\nMinium: ");
GUI_DispHex(Min, Len);
GUI_DispString("\nMaximum: ");
GUI_DispHex(Max, Len);
GUI_DispNextLine();
/* Center */
GUI_GotoXY(10, 60);
EDIT_SetDefaultTextAlign(GUI_TA_CENTER | GUI_TA_VCENTER);
Ret = GUI_EditHex(Value, Min, Max, Len, XSize);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispHex(Ret, Len);
/* Left */
GUI_GotoXY(10, 80);
EDIT_SetDefaultTextAlign(GUI_TA_LEFT | GUI_TA_VCENTER);
Ret = GUI_EditHex(Value, Min, Max, Len, XSize);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispHex(Ret, Len);
/* Right */
GUI_GotoXY(10, 100);
EDIT_SetDefaultTextAlign(GUI_TA_RIGHT | GUI_TA_VCENTER);
Ret = GUI_EditHex(Value, Min, Max, Len, XSize);
GUI_DispStringAt("Return: ", 160, GUI_GetDispPosY());
GUI_DispHex(Ret, Len);
GUI_WaitKey();
}
/*******************************************************************
*
* main
*
********************************************************************
*/
void main(void) {
GUI_Init();
while(1) {
EditHexValues();
EditBinValues();
EditDecimalValues();
EditFloatingpointValues();
EditStrings();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -