Genesis OSD Workbench笔记

菜单的启动,从DefaultState开始执行,按照各种事件来执行。

EnterSate事件 ExitState事件,这些事件都是进入都某个控件的时候自动执行的,无需人工干预

KEY_LOGICAL_MENU ;菜单键
KEY_LOGICAL_XXX  :
XXX =

MENU : 菜单
ZERO :0按键

Actions:

Go to another state: GoToState
Select/Unselect/Draw/Erase menu object:  selected unselected draw erase
Call function/Set variable
Set/Reset timers


Event - Action
每一个OSD控件都是一个状态

event ID 有哪几种?
1.芯片符号字样的 event
2.timer时间      event
3.按键字样的     event
4.有人头字样的   event
5.状态切换的 event

状态事件是自动执行,按顺序执行,不是外部触发的。

Some examples of actions include moving to another state,
selecting or unselecting a menu object, drawing or erasing a menu object,
calling a function, setting a variable, or resetting a timer.

Each OSD control is a state.
Each OSD State has its own State Action Table.
State Action Table 里面有很多个 State Action
State action table:
只要某个Event被检测到了,就会把它对应的Action载入execution queue中。

Each project should have at least one thread (Refer to `Threads' for more information)
as well as both aforementioned nodes present
(Note that this is obligatory for any thread even if the nodes are empty).

Event action tables的state antion不一定会执行的,只有添加了到了State Action Table才会有可能执行。
这就像我们定义的一些函数一样,被主线程调用了就可以执行起来。否则永远就死在那里了。
执行顺序:
states列表从上到下一次执行:
第一个state是:Default state,这个state里面有一个state table
table里面有多个state action里面的state action按顺序执行。

variable——变量
"Mode-dependent"和"mode-independent" variables 是NVRAM变量。
Global variables(全局变量)是RAM变量。
初始化变量值定义为工厂默认设置
Variable objects have Set(), Increment(), and Decrement() actions
全局变量被定义(宏定义)以UserPref开头,后面就是变量名即UserPref

adjuster——调节器
直接控制硬件;
PostEvent是触发事件,但不会立即执行。

事件跳转。

顺序:
开机;各种变量的赋值,存储等动作
然后转入到开机画面的dialog,执行相应的动作。

人为触发的事件名开头的:OE —— MTO 替换了,
自动的就不用替换。

对于要人为触发的事件,UI只是做了事件和行为的联系而已,具体什么时候触发,有程序来决定。
由OSDRequestMsg这个函数来触发消息。

亮度:ImageBrightness
对比度:Contrast
清晰度:Sharpness
比例模式:Scalemode
双画面:DualScreen
缩放:ZOOM

按键对里面的东西操作,只是对变量操作而已。
对于某个控件,使用enter键进入后,该控件操作的步骤如下:
1.EnterSatate: DarwSelected 参数控件本身和控件上面所用图片
2.ExitState: Darw 参数控件本身
3.gotostate: goto的控件

你可能感兴趣的:(genesis,OSD,workbench)