📄 extosdlib.h
字号:
// Rectangle and frame controls
//
typedef struct ST_OSD_RECTANGLE_CTRLStruct
{
BYTE TileId;
BYTE XPos;
BYTE YPos;
BYTE XSize;
BYTE YSize;
BYTE ROM * Colors;
} ST_OSD_RECTANGLE_CTRL;
typedef ST_OSD_RECTANGLE_CTRL ST_OSD_RECTANGLEBUTTON_CTRL;
typedef struct ST_OSD_FRAME_CTRLStruct
{
BYTE TileId;
BYTE XPos;
BYTE YPos;
BYTE XSize;
BYTE YSize;
BYTE ROM * Colors;
ST_OSD_UNI_CONTROL_CHARS ControlCharSet;
} ST_OSD_FRAME_CTRL;
typedef ST_OSD_FRAME_CTRL ST_OSD_FRAME2BPP_CTRL;
typedef ST_OSD_FRAME_CTRL ST_OSD_FRAME4BPP_CTRL;
//
// Tab control
//
typedef struct ST_OSD_TABCONTROL_CTRLStruct
{
BYTE TileId;
BYTE XPos;
BYTE YPos;
BYTE XSize;
BYTE YSize;
BYTE ROM * Colors;
ST_OSD_UNI_CONTROL_CHARS ControlChars;
BYTE TabNum;
BYTE TabButtonRegion_XSize;
BYTE TabButtonRegion_YSize;
} ST_OSD_TABCONTROL_CTRL;
//*****************************************************************
// Key Pad definitions
//*****************************************************************
typedef BYTE gmt_KEY_INDEX;
typedef WORD gmt_GPIO_KEY_VALUE;
typedef struct gmt_ST_KEYPAD_STATEStruct
{
gmt_KEY_INDEX B_iButton;
BYTE B_iTimer;
} gmt_ST_KEYPAD_STATE;
typedef struct gmt_ST_TRANSLATION_TABLE_ENTRYStruct
{
gmt_ST_KEYPAD_STATE St_PreviousKS;
gmt_ST_KEYPAD_STATE St_CurrentKS;
BYTE B_iEvent;
BYTE B_iAutorepeatStartDelay;
BITFIELD W_iAutorepeatDelay : 6;
BITFIELD W_iAutorepeatEnable : 1;
BITFIELD W_iTableEnd : 1;
} gmt_ST_TRANSLATION_TABLE_ENTRY;
typedef struct gmt_ST_GPIOStruct
{
BYTE Port; // GPIO or MCU port
BYTE Bit; // bit of this port
} gmt_ST_GPIO;
typedef struct gmt_ST_GPIO_TRANSLATIONStruct
{
gmt_GPIO_KEY_VALUE KeyValue; // scan code from GPIO keypad
gmt_KEY_INDEX KeyIndex; // code for translation tables
} gmt_ST_GPIO_TRANSLATION;
typedef struct
{
gmt_ST_KEYPAD_STATE PreviousKS;
gmt_ST_KEYPAD_STATE CurrentKS;
BYTE KeypadDriverState; // State of keypad driver
BYTE startDelay; // Autorepeat start delay
BYTE scanDelay; // Autorepeat scan delay
} gmt_KEY_THREAD;
//
// Keypad functions
//
void far gm_KeypadOsdInit (void);
void far gm_ProcessKeypadOsdEvent( void);
// New keypad defines
#define WBK_EXTRACT_CODE_BYTE(a) a
typedef gmt_KEY_INDEX (* KeypadFunc)(BYTE ROM*);
typedef struct WBK_KEYPAD_DEFINITIONStruct
{
BYTE B_ChanNumber; /* channel number for this type of keypad (ADC1,ADC2,ADC3,GPIO1,GPIO2,..) */
BYTE ROM* Bp_KeyValues; /* pointer to key values table */
BYTE B_KeysNumber; /* keys number in table */
KeypadFunc GetKeyValue; /* pointer to keypad driver. a driver returns the source code */
KeypadFunc InitKeypad; /* pointer to keypad driver. a driver returns the source code */
BYTE B_CodeLen; /* phisical code length in key values table */
BYTE B_Delta; /* phisical delta value */
} WBK_KEYPAD_DEFINITION;
//*****************************************************************
// State Machine
//*****************************************************************
typedef struct
{
BYTE ROM * ROM* StateSet;
WORD DefaultStateID;
}OSD_THREAD;
typedef struct
{
BYTE ROM * CurrentStatePtr;
BYTE ROM * NextStatePtr;
BYTE ROM * SaveStatePtr;
}SmThreadContextType;
typedef struct SmPtrStruct
{
BYTE ROM* SM_EventTable;
BYTE ROM* ROM* ActionOpSet;
BYTE ROM* ROM* ActionSet;
BYTE ROM* ROM* ActTableSet;
BYTE NumberOfThreads;
OSD_THREAD ROM* GlobalThreadPtr;
SmThreadContextType* ThreadContextPtr;
} SmPtrType;
typedef enum StateControlByteEnum
{
SCB_CtrlByte = 0x00,
SCB_NOCtrlByte = 0x80, // traslation table
SCB_TranslTbl = 0x08,
SCB_StateData = 0x10,
SCB_IncDec = 0x20,
SCB_Parent = 0x40,
SCB_Inherit = 0x01
} StateControlByteType;
typedef enum StateActionTblCtrlBitsEnum
{
SAT_CB_00 = 0, //Event - Action
SAT_CB_01 = BIT6, //Event
SAT_CB_10 = BIT7, //Event - Condition Ctrl
SAT_CB_11 = BIT7 | BIT6, //MultiAction Ctrl - Condition Ctrl
SAT_EvtAct_1 = (BIT6),
SAT_EvtAct_2 = (BIT7),
SAT_Reference = (BIT7 | BIT6),
SAT_Condition = (BIT4),
SAT_MultiCond = (BIT5 | BIT4)
} StateActionTblCtrlBitsType;
typedef enum TextEditorCtrlEnum
{ DRAW = 0,
DEC,
INC,
INCPOS,
DECPOS
} TextEditorCtrlType;
/*
typedef enum ChangeChannelCtrlEnum
{
KEY_0,
KEY_1,
KEY_2,
KEY_3,
KEY_4,
KEY_5,
KEY_6,
KEY_7,
KEY_8,
KEY_9,
KEY_ENTER,
KEY_CHANGESIZE,
KEY_DRAW,
KEY_DRAWCURR,
KEY_EDITCURR
} ChangeChannelCtrlType;
*/
// State data encoding
#define ShortIDRef(a) a
#define ShortPtrRef(a) BIT7 | (((WORD)(a)) >> 8), (BYTE)a
#define LongIDRef(a) BIT7 | BIT6 | (BYTE)(((WORD)(a)) >> 8), (BYTE)(a)
#define LongBankRef(bank,a) BIT7 | BIT6 | BIT5 | bank, ((WORD)(a)) >> 8,(BYTE)a
#define ShortEATRef(a) (a)
#define LongEATRef(a) BIT7 | (((WORD)(a)) >> 8), (BYTE)(a)
#define SAT_CB_00_EVT_SHIFT 3
#define SAT_CB_10_EVT_SHIFT 2
#define SAT_CB_11_MAC_SHIFT 2
#define SAT_CB_00_EVT_MASK (BIT3 | BIT4 | BIT5)
#define SAT_CB_00_ACT_MASK (BIT0 | BIT1 | BIT2)
#define SAT_CB_10_EVT_MASK (BIT2 | BIT3 | BIT4 | BIT5)
#define SAT_CB_10_CND_MASK (BIT0 | BIT1)
#define SAT_CB_11_MAC_MASK (BIT2 | BIT3 | BIT4)
#define SAT_CB_11_CND_MASK (BIT0 | BIT1)
#define SAT_CB_11_ATREF (BIT5)
#define SAT_CB_11_ATREF_MASK (BIT4 | BIT3 | BIT2 | BIT1 | BIT0)
#define SAT_CB_MASK (BIT7 | BIT6)
#define Fit_00(Event,Action) (((Event) << SAT_CB_00_EVT_SHIFT) | (Action))
#define Fit_10(Event,CndCtrl) (((Event) << SAT_CB_10_EVT_SHIFT) | (CndCtrl))
#define Fit_11(CndCtrl, MultiActn) (((MultiActn) << SAT_CB_11_MAC_SHIFT) | (CndCtrl))
typedef enum StateDataCtrlBitsEnum
{
SDC_LastEntry = 0x3f,
SDC_Action_Count,
SDC_Count
} StateDataCtrlBitsType;
// Reference Type
typedef enum ReferenceEnum
{
RFT_NoReference, //not a reference
RFT_ShortIDRef, //1 byte ID very within the range 0x0 - 0x7f
RFT_ShortPtrRef, // NOT SUPPORTED
RFT_LongIDRef, //2 byte ID very within the range 0x0 - 0x7fff
RFT_LongPtrRef // NOT SUPPORTED
};
typedef BYTE far (*ActionFuncType)(BYTE);
#define EXTRACT_2B(Cnst) (BYTE)Cnst, (BYTE)(Cnst >>8)
//
// State machine functions
//
void far gm_InitSm (SmPtrType *Ps_SmInitStruct);
SmThreadContextType far * far gm_GetThreadContext();
void far gm_SelectThread(BYTE B_ThreadID);
void far gm_OsdEventHandler_ST (BYTE B_OsdEvent);
void far gm_OsdEventHandler_MT (BYTE B_ThreadID, BYTE B_OsdEvent);
void far gm_OsdEventHandler (BYTE B_OsdEvent);
BYTE ROM * far gm_OsdGetActionOperand (void);
BYTE far gm_OsdGetCurrentSATOffsetByte (void);
WORD far gm_OsdGetCurrentSATOffsetWord (void);
DWORD far gm_OsdGetCurrentSATOffsetDWord(void);
BYTE far gm_OsdGetCurrentStateTranslTable (void);
BYTE far gm_OsdGetStateDataByte(BYTE B_Offset);
WORD far gm_OsdGetStateDataWord(BYTE B_Offset);
void far gm_DecState(void);
void far gm_DecStateBy(void);
void far gm_GoToState(void);
void far gm_IncState(void);
void far gm_IncStateBy(void);
void far gm_SaveState(void);
void far gm_RestoreState(void);
//*****************************************************************
// Adjuster Engine
//*****************************************************************
#define GET_ADJ 2
#define INC_ADJ 0
#define DEC_ADJ 1
#define VT_MASK_TYPE (BIT0 | BIT1)
#define VT_MASK_MIN (BIT5)
#define VT_MASK_MAX (BIT6)
#define VT_GROUP_IND(val) ((val >> 2) & (BIT0 | BIT1 | BIT2))
#define VT_MASK_CALC (BIT7)
typedef struct AdjusterPropertyEntryStruct
{
BYTE ctrl;
WORD offset;
BYTE step;
BYTE id;
WORD min;
WORD max;
} AdjusterPropertyEntry;
typedef struct UP_StructureDefStruct
{
void* ptr;
} UP_StructureDef;
typedef struct UP_ModeSwitchersDefStruct
{
BYTE* ptr;
BYTE Number;
} UP_ModeSwitchersDef;
typedef struct AdjEngineInitStruct
{
BYTE ROM *UserDefAdjusterProperty;
BYTE ROM * ROM *AdjusterFuncSet;
BYTE ROM * ROM *MinMaxFuncSet;
BYTE ROM * ROM *StepFuncSet;
UP_StructureDef ROM *UserPrefStructureDefenitions;
UP_ModeSwitchersDef ROM *ModeSwitchers;
} AdjEngineInitType;
typedef struct ST_OSD_SET_ADJUSTER_CTRLStruct
{
WORD AdjusterID;
WORD Value;
} ST_OSD_SET_ADJUSTER_CTRL;
typedef struct ST_OSD_LONGVALUEHEX_CTRLStruct
{
BYTE TileId;
BYTE XPos;
BYTE YPos;
BYTE XSize;
BYTE YSize;
BYTE ROM * Colors;
ST_OSD_UNI_USED_GLYPHS UsedGlyphs;
WORD Associate;
BYTE Horizontal;
BYTE Vertical;
WORD MinValue;
WORD MaxValue;
BYTE Format;
BYTE NumPositions;
} ST_OSD_LONGVALUEHEX_CTRL;
typedef struct ST_OSD_LONGVALUEHEXLOWERCASE_CTRLStruct
{
BYTE TileId;
BYTE XPos;
BYTE YPos;
BYTE XSize;
BYTE YSize;
BYTE ROM * Colors;
ST_OSD_UNI_USED_GLYPHS UsedGlyphs;
WORD Associate;
BYTE Horizontal;
BYTE Vertical;
WORD MinValue;
WORD MaxValue;
BYTE Format;
BYTE NumPositions;
} ST_OSD_LONGVALUEHEXLOWERCASE_CTRL;
typedef struct ST_OSD_LONGVALUEBUTTONHEX_CTRLStruct
{
BYTE TileId;
BYTE XPos;
BYTE YPos;
BYTE XSize;
BYTE YSize;
BYTE ROM * Colors;
ST_OSD_UNI_USED_GLYPHS UsedGlyphs;
WORD Associate;
BYTE Horizontal;
BYTE Vertical;
WORD MinValue;
WORD MaxValue;
BYTE Format;
BYTE NumPositions;
} ST_OSD_LONGVALUEBUTTONHEX_CTRL;
typedef struct ST_OSD_LONGVALUEBUTTONHEXLOWERCASE_CTRLStruct
{
BYTE TileId;
BYTE XPos;
BYTE YPos;
BYTE XSize;
BYTE YSize;
BYTE ROM * Colors;
ST_OSD_UNI_USED_GLYPHS UsedGlyphs;
WORD Associate;
BYTE Horizontal;
BYTE Vertical;
WORD MinValue;
WORD MaxValue;
BYTE Format;
BYTE NumPositions;
} ST_OSD_LONGVALUEBUTTONHEXLOWERCASE_CTRL;
typedef enum VT_EnumLib
{
VT_BYTE = 0,
VT_SBYTE = 1,
VT_WORD = 2,
VT_SWORD = 3,
VT_FuncMin = (1 << 5),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -