Macros | |
#define | arm_2d_scene_player_register_on_draw_navigation_event_handler( __DISP_ADAPTER_PTR, __DRAW_HANDLER, __USER_TARGET_PTR, ...) |
register / update the evtOnDrawNavigation event handler. You can use this event to draw an ALWAY-TOP navigation bar or title during switching period. More... | |
#define | arm_2d_scene_player_set_switching_mode(__DISP_ADAPTER_PTR, __SWITCH_MODE, ...) |
configure the scene switching mode More... | |
#define | ARM_2D_HELPER_PFB_INIT(__CB_ADDR, __SCREEN_WIDTH, __SCREEN_HEIGHT, __PIXEL_TYPE, __WIDTH, __HEIGHT, __PFB_NUM, ...) |
a macro wrapper in uppercase to help initialising PFB service More... | |
#define | ARM_2D_HELPER_PFB_UPDATE_ON_DRAW_HANDLER( __CB_ADDR, __HANDLER, ...) |
a macro wrapper to update the evtOnDrawring event handler More... | |
#define | __IMPL_ARM_2D_REGION_LIST(__NAME, ...) |
#define | IMPL_ARM_2D_REGION_LIST(__NAME, ...) __IMPL_ARM_2D_REGION_LIST(__NAME,##__VA_ARGS__) |
#define | END_IMPL_ARM_2D_REGION_LIST(...) }; |
#define | __ADD_REGION_TO_LIST(__NAME, ...) |
#define | ADD_REGION_TO_LIST(__NAME, ...) __ADD_REGION_TO_LIST(__NAME, ##__VA_ARGS__) |
#define | __ADD_LAST_REGION_TO_LIST(__NAME, ...) |
#define | ADD_LAST_REGION_TO_LIST(__NAME, ...) __ADD_LAST_REGION_TO_LIST(__NAME, ##__VA_ARGS__) |
#define | IMPL_PFB_ON_DRAW(__NAME) |
#define | IMPL_PFB_ON_LOW_LV_RENDERING(__NAME) |
#define | IMPL_PFB_ON_FRAME_SYNC_UP(__NAME) bool __NAME(void *pTarget) |
#define | init_arm_2d_helper_pfb(__CB_ADDR, __SCREEN_WIDTH, __SCREEN_HEIGHT, __PIXEL_TYPE, __WIDTH, __HEIGHT, __PFB_NUM, ...) |
a macro wrapper in lowercase to help initialising PFB service More... | |
#define | update_arm_2d_helper_pfb_on_draw_handler( __CB_ADDR, __HANDLER, ...) |
a macro wrapper to update the evtOnDrawring event handler More... | |
#define | arm_2d_helper_pfb_report_rendering_complete(__PFB_HELPER_PTR, ...) |
tell PFB helper that a low level LCD flushing work is complete More... | |
#define | impl_arm_2d_region_list(__NAME, ...) IMPL_ARM_2D_REGION_LIST(__NAME,##__VA_ARGS__) |
#define | add_region_to_list(__NAME, ...) ADD_REGION_TO_LIST(__NAME, ##__VA_ARGS__) |
#define | add_last_region_to_list(__NAME, ...) ADD_LAST_REGION_TO_LIST(__NAME, ##__VA_ARGS__) |
#define | end_impl_arm_2d_region_list(...) END_IMPL_ARM_2D_REGION_LIST(__VA_ARGS__) |
#define | impl_pfb_on_draw(__NAME) IMPL_PFB_ON_DRAW(__NAME) |
#define | impl_pfb_on_low_lv_rendering(__NAME) IMPL_PFB_ON_LOW_LV_RENDERING(__NAME) |
#define | __declare_tile(__name) extern const arm_2d_tile_t __name; |
Please do NOT use this macro. More... | |
#define | declare_tile(__name) __declare_tile(__name) |
declare a tile More... | |
#define | dcl_tile(__name) declare_tile(__name) |
declare a tile More... | |
#define | dcl_fb(__name) declare_tile(__name) |
declare a framebuffer More... | |
#define | __impl_fb(__name, __width, __height, __type, ...) |
Please do NOT use this macro. More... | |
#define | impl_fb(__name, __width, __height, __type, ...) __impl_fb(__name, __width, __height, __type, ##__VA_ARGS__) |
implement a framebuffer More... | |
#define | impl_heap_fb(__tile_name, __width, __height, __colour_type) |
implement a framebuffer and allocate it from the heap More... | |
#define | get_tile_buffer_pixel_count(__name) |
calculate the number of pixels in a given tile More... | |
#define | get_tile_buffer_size(__name, __type) (get_2d_layer_buffer_pixel_count(__name) * sizeof(__type)) |
calculate the size of a given framebuffer More... | |
#define | impl_child_tile(__parent, __x, __y, __width, __height, ...) |
implement a child tile for a given parent More... | |
#define | __arm_2d_align_top_left2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_top_left3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_top_left(...) |
generate a temporary arm_2d_region_t object with use specified info for top-left alignment. More... | |
#define | __arm_2d_align_top_centre2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_top_centre3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_top_centre(...) |
generate a temporary arm_2d_region_t object with use specified info for top-central alignment. More... | |
#define | __arm_2d_align_top_right2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_top_right3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_top_right(...) |
generate a temporary arm_2d_region_t object with use specified info for top-right alignment. More... | |
#define | __arm_2d_align_mid_left2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_mid_left3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_mid_left(...) |
generate a temporary arm_2d_region_t object with use specified info for middle-left alignment. More... | |
#define | __arm_2d_align_centre2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_centre3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_centre(...) |
generate a temporary arm_2d_region_t object with use specified info for central alignment. More... | |
#define | __arm_2d_align_mid_right2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_mid_right3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_mid_right(...) |
generate a temporary arm_2d_region_t object with use specified info for middle-right alignment. More... | |
#define | __arm_2d_align_bottom_left2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_bottom_left3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_bottom_left(...) |
generate a temporary arm_2d_region_t object with use specified info for bottom-left alignment. More... | |
#define | __arm_2d_align_bottom_centre2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_bottom_centre3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_bottom_centre(...) |
generate a temporary arm_2d_region_t object with use specified info for bottom-central alignment. More... | |
#define | __arm_2d_align_bottom_right2(__region, __size) |
Please do NOT use this macro. More... | |
#define | __arm_2d_align_bottom_right3(__region, __width, __height) |
Please do NOT use this macro. More... | |
#define | arm_2d_align_bottom_right(...) |
generate a temporary arm_2d_region_t object with use specified info for bottom-right alignment. More... | |
#define | arm_2d_helper_is_time_out(__ms, ...) |
set an alarm with given period and check the status More... | |
#define | arm_2d_helper_time_liner_slider(__from, __to, __ms, __stroke_ptr, ...) |
calculate the stroke of a liner slider based on time More... | |
#define | arm_2d_helper_time_cos_slider(__from, __to, __ms, __phase, __stroke_ptr, ...) |
calculate the stroke of a cosine slider based on time More... | |
#define | arm_2d_helper_time_half_cos_slider(__from, __to, __ms, __stroke_ptr, ...) |
calculate the stroke of a cosine slider(0~pi) based on time More... | |
Typedefs | |
typedef arm_fsm_rt_t | arm_2d_helper_draw_handler_t(void *pTarget, const arm_2d_tile_t *ptTile, bool bIsNewFrame) |
the On-Drawing event handler for application layer More... | |
typedef void | arm_2d_helper_render_handler_t(void *pTarget, const arm_2d_pfb_t *ptPFB, bool bIsNewFrame) |
the On Low Level Rendering event handler for the low level (LCD Driver) More... | |
Functions | |
void | arm_2d_scene_player_flush_fifo (arm_2d_scene_player_t *ptThis) |
flush the scene FIFO More... | |
void | arm_2d_scene_player_append_scenes (arm_2d_scene_player_t *ptThis, arm_2d_scene_t *ptScenes, int_fast16_t hwCount) |
append a set of scenes to a scene player More... | |
void | arm_2d_scene_player_update_scene_background (arm_2d_scene_player_t *ptThis) |
request updating the background of the current scene More... | |
void | arm_2d_scene_player_switch_to_next_scene (arm_2d_scene_player_t *ptThis) |
request switching to the next scene safely More... | |
void | __arm_2d_scene_player_set_switching_mode (arm_2d_scene_player_t *ptThis, arm_2d_scene_switch_mode_t *ptMode, uint16_t hwSettings) |
configure the scene switching mode More... | |
uint16_t | arm_2d_scene_player_get_switching_cfg (arm_2d_scene_player_t *ptThis) |
read the current scene switching mode More... | |
void | arm_2d_scene_player_set_switching_period (arm_2d_scene_player_t *ptThis, uint_fast16_t hwMS) |
configure the scene switching period More... | |
arm_2d_err_t | __arm_2d_scene_player_register_on_draw_navigation_event_handler (arm_2d_scene_player_t *ptThis, arm_2d_helper_draw_handler_t *fnHandler, void *pTarget, arm_2d_region_list_item_t *ptDirtyRegions) |
register / update the evtOnDrawNavigation event handler. You can use this event to draw an ALWAY-TOP navigation bar or title during switching period. More... | |
arm_fsm_rt_t | arm_2d_scene_player_task (arm_2d_scene_player_t *ptThis) |
the scene player task function More... | |
arm_2d_err_t | arm_2d_helper_pfb_init (arm_2d_helper_pfb_t *ptThis, arm_2d_helper_pfb_cfg_t *ptCFG) |
initialize pfb helper service More... | |
arm_2d_region_t | arm_2d_helper_pfb_get_display_area (arm_2d_helper_pfb_t *ptThis) |
get the display (screen) region More... | |
arm_fsm_rt_t | arm_2d_helper_pfb_task (arm_2d_helper_pfb_t *ptThis, arm_2d_region_list_item_t *ptDirtyRegions) |
the task function for pfb helper More... | |
void | arm_2d_helper_pfb_flush (arm_2d_helper_pfb_t *ptThis) |
flush the FPB FIFO More... | |
arm_2d_err_t | arm_2d_helper_pfb_update_dependency (arm_2d_helper_pfb_t *ptThis, uint_fast8_t chMask, const arm_2d_helper_pfb_dependency_t *ptDependency) |
update PFB dependency (event handlers) More... | |
void | __arm_2d_helper_pfb_report_rendering_complete (arm_2d_helper_pfb_t *ptThis, arm_2d_pfb_t *ptPFB) |
tell PFB helper that a low level LCD flushing work is complete More... | |
void | arm_2d_helper_swap_rgb16 (uint16_t *phwBuffer, uint32_t wCount) |
swap the high and low bytes for each rgb16 pixel More... | |
arm_2d_pfb_t * | __arm_2d_helper_pfb_new (arm_2d_helper_pfb_t *ptThis) |
try to get a PFB block from the pool More... | |
void | __arm_2d_helper_pfb_free (arm_2d_helper_pfb_t *ptThis, arm_2d_pfb_t *ptPFB) |
free a PFB block to the pool More... | |
__STATIC_INLINE uint8_t | arm_2d_helper_alpha_mix (uint_fast8_t chAlpha1, uint_fast8_t chAlpha2) |
void | arm_2d_helper_init (void) |
initialize helper services More... | |
int64_t | arm_2d_helper_convert_ticks_to_ms (int64_t lTick) |
convert ticks of a reference timer to millisecond More... | |
int64_t | arm_2d_helper_convert_ms_to_ticks (uint32_t wMS) |
convert millisecond into ticks of the reference timer More... | |
uint32_t | arm_2d_helper_get_reference_clock_frequency (void) |
get the reference clock frequency More... | |
int64_t | arm_2d_helper_get_system_timestamp (void) |
get the current system stamp from the reference clock More... | |
bool | __arm_2d_helper_is_time_out (int64_t lPeriod, int64_t *plTimestamp) |
set an alarm with given period and check the status More... | |
bool | __arm_2d_helper_time_liner_slider (int32_t nFrom, int32_t nTo, int64_t lPeriod, int32_t *pnStroke, int64_t *plTimestamp) |
calculate the stroke of a liner slider based on time More... | |
bool | __arm_2d_helper_time_half_cos_slider (int32_t nFrom, int32_t nTo, int64_t lPeriod, int32_t *pnStroke, int64_t *plTimestamp) |
calculate the stroke of a cosine slider (0~pi) based on time More... | |
bool | __arm_2d_helper_time_cos_slider (int32_t nFrom, int32_t nTo, int64_t lPeriod, float fPhase, int32_t *pnStroke, int64_t *plTimestamp) |
calculate the stroke of a consine slider (0~2pi) based on time More... | |
Variables | |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_NONE |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_USER |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_FADE_WHITE |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_FADE_BLACK |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_SLIDE_LEFT |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_SLIDE_RIGHT |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_SLIDE_UP |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_SLIDE_DOWN |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_ERASE_LEFT |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_ERASE_RIGHT |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_ERASE_UP |
arm_2d_scene_switch_mode_t | ARM_2D_SCENE_SWITCH_MODE_ERASE_DOWN |
union __arm_2d_helper_scene_switch_t |
an internal data structure for scene switching
Data Fields | ||
---|---|---|
struct __arm_2d_helper_scene_switch_t.Feature | Feature | |
uint16_t | hwSetting | the setting value |
struct arm_2d_scene_switch_mode_t |
scene switching mode descriptor
Data Fields | ||
---|---|---|
uint8_t | chEffects | switching effects |
arm_2d_helper_draw_handler_t * | fnSwitchDrawer | switching algorithm |
struct arm_2d_scene_t |
a class for describing scenes which are the combination of a background and a foreground with a dirty-region-list support
Data Fields | |
arm_2d_scene_t * | ptNext |
next scene More... | |
arm_2d_scene_player_t * | ptPlayer |
points to the host scene player More... | |
arm_2d_region_list_item_t * | ptDirtyRegion |
dirty region list for the foreground More... | |
arm_2d_helper_draw_handler_t * | fnBackground |
the function pointer for the background More... | |
arm_2d_helper_draw_handler_t * | fnScene |
the function pointer for the foreground More... | |
void(* | fnOnBGStart )(arm_2d_scene_t *ptThis) |
on-start-drawing-background event handler More... | |
void(* | fnOnBGComplete )(arm_2d_scene_t *ptThis) |
on-complete-drawing-background event handler More... | |
void(* | fnOnFrameStart )(arm_2d_scene_t *ptThis) |
on-frame-start event handler More... | |
void(* | fnOnFrameCPL )(arm_2d_scene_t *ptThis) |
on-frame-complete event handler More... | |
void(* | fnDepose )(arm_2d_scene_t *ptThis) |
on-scene-depose event handler More... | |
struct { | |
uint8_t | bOnSwitchingIgnoreBG: 1 |
ignore background during switching period More... | |
uint8_t | bOnSwitchingIgnoreScene: 1 |
ignore forground during switching period More... | |
}; | |
arm_2d_scene_t* arm_2d_scene_t::ptNext |
next scene
arm_2d_scene_player_t* arm_2d_scene_t::ptPlayer |
points to the host scene player
arm_2d_region_list_item_t* arm_2d_scene_t::ptDirtyRegion |
dirty region list for the foreground
arm_2d_helper_draw_handler_t* arm_2d_scene_t::fnBackground |
the function pointer for the background
arm_2d_helper_draw_handler_t* arm_2d_scene_t::fnScene |
the function pointer for the foreground
void(* arm_2d_scene_t::fnOnBGStart) (arm_2d_scene_t *ptThis) |
on-start-drawing-background event handler
void(* arm_2d_scene_t::fnOnBGComplete) (arm_2d_scene_t *ptThis) |
on-complete-drawing-background event handler
void(* arm_2d_scene_t::fnOnFrameStart) (arm_2d_scene_t *ptThis) |
on-frame-start event handler
void(* arm_2d_scene_t::fnOnFrameCPL) (arm_2d_scene_t *ptThis) |
on-frame-complete event handler
void(* arm_2d_scene_t::fnDepose) (arm_2d_scene_t *ptThis) |
on-scene-depose event handler
struct arm_2d_scene_player_t |
a class to manage scenes
Data Fields | ||
---|---|---|
arm_2d_helper_pfb_t |
inherit from arm_2d_helper_pfb_t points to the head of the FIFO points to the tail of the FIFO Scene FIFO a flag to request switching-to-the next-scene indication of scene switching completion update the background of the current scene the state of the FSM used by runtime. scene player runtime the switching mode FSM state FSM state opacity of the cover the colour of the cover FSM state scene window a temp tile erase offset FSM state scene window slide offset the switching configuration the switching should finish in specified millisecond | |
struct arm_2d_scene_player_t.__unnamed123__ | __unnamed__ |
struct arm_2d_pfb_t |
the header of a PFB block
Data Fields | ||
---|---|---|
struct arm_2d_pfb_t * | ptNext | next pfb block |
arm_2d_helper_pfb_t * | ptPFBHelper | the pfb helper service current PFB block comes from |
arm_2d_tile_t | tTile | descriptor |
uint32_t | u24Size: 24 | |
uint32_t | bIsNewFrame: 1 | a flag to indicate the starting of a frame |
struct arm_2d_region_list_item_t |
the node of a region list
Data Fields | ||
---|---|---|
struct arm_2d_region_list_item_t * | ptNext | the next node |
arm_2d_region_t | tRegion | the region |
struct arm_2d_helper_render_evt_t |
on low level render event
Data Fields | ||
---|---|---|
arm_2d_helper_render_handler_t * | fnHandler | event handler function |
void * | pTarget | user attached target |
struct arm_2d_helper_draw_evt_t |
on drawing event
Data Fields | ||
---|---|---|
arm_2d_helper_draw_handler_t * | fnHandler | event handler function |
void * | pTarget | user attached target |
struct arm_2d_helper_pfb_dependency_t |
The PFB Helper Service Dependency.
Data Fields | ||
---|---|---|
arm_2d_helper_render_evt_t | evtOnLowLevelRendering | event handler for low level rendering |
arm_2d_helper_draw_evt_t | evtOnDrawing | event handler for drawing GUI |
arm_2d_evt_t | evtOnLowLevelSyncUp | low level rendering handler wants to sync-up (return arm_fsm_rt_wait_for_obj) |
arm_2d_evt_t | evtOnEachFrameCPL | event handler for each frame complete |
struct arm_2d_helper_pfb_dependency_t.Navigation | Navigation | event handler for drawing GUI |
struct arm_2d_helper_pfb_cfg_t |
PFB Helper configuration.
Data Fields | ||
---|---|---|
arm_2d_region_t | tDisplayArea | screen description |
struct arm_2d_helper_pfb_cfg_t.FrameBuffer | FrameBuffer | frame buffer context |
arm_2d_helper_pfb_dependency_t | Dependency | user registered dependency |
struct arm_2d_helper_pfb_t |
the PFB helper control block
Data Fields | ||
---|---|---|
struct arm_2d_helper_pfb_t.__unnamed136__ | __unnamed__ | < user configuration |
struct arm_2d_helper_pfb_t.Statistics | Statistics | performance statistics |
struct __arm_2d_helper_scene_switch_t.Feature |
struct arm_2d_scene_t.__unnamed121__ |
struct arm_2d_scene_player_t.__unnamed123__ |
Data Fields | ||
---|---|---|
struct arm_2d_scene_player_t.__unnamed123__.SceneFIFO | SceneFIFO | |
struct arm_2d_scene_player_t.__unnamed123__.Runtime | Runtime | |
struct arm_2d_scene_player_t.__unnamed123__.Switch | Switch |
struct arm_2d_scene_player_t.__unnamed123__.SceneFIFO |
Data Fields | ||
---|---|---|
arm_2d_scene_t * | ptHead | |
arm_2d_scene_t * | ptTail |
struct arm_2d_scene_player_t.__unnamed123__.Runtime |
struct arm_2d_scene_player_t.__unnamed123__.Switch |
Data Fields | ||
---|---|---|
arm_2d_scene_switch_mode_t * | ptMode | |
union arm_2d_scene_player_t.__unnamed123__.Switch.__unnamed128__ | __unnamed__ | |
__arm_2d_helper_scene_switch_t | tConfig | |
uint16_t | hwPeriod | |
int64_t | lTimeStamp |
union arm_2d_scene_player_t.__unnamed123__.Switch.__unnamed128__ |
Data Fields | ||
---|---|---|
uint8_t | chState | |
struct arm_2d_scene_player_t.__unnamed123__.Switch.__unnamed128__.Fade | Fade | |
struct arm_2d_scene_player_t.__unnamed123__.Switch.__unnamed128__.Erase | Erase | |
struct arm_2d_scene_player_t.__unnamed123__.Switch.__unnamed128__.Slide | Slide |
struct arm_2d_scene_player_t.__unnamed123__.Switch.__unnamed128__.Fade |
struct arm_2d_scene_player_t.__unnamed123__.Switch.__unnamed128__.Erase |
Data Fields | ||
---|---|---|
uint8_t | chState | |
arm_2d_tile_t | tSceneWindow | |
arm_2d_tile_t | tTemp | |
int16_t | iOffset |
struct arm_2d_scene_player_t.__unnamed123__.Switch.__unnamed128__.Slide |
Data Fields | ||
---|---|---|
uint8_t | chState | |
arm_2d_tile_t | tSceneWindow | |
int16_t | iOffset |
struct arm_2d_helper_pfb_dependency_t.Navigation |
event handler for drawing GUI
Data Fields | ||
---|---|---|
arm_2d_helper_draw_evt_t | evtOnDrawing | |
arm_2d_region_list_item_t * | ptDirtyRegion |
struct arm_2d_helper_pfb_cfg_t.FrameBuffer |
Data Fields | ||
---|---|---|
arm_2d_pfb_t * | ptPFBs | current PFB block |
arm_2d_size_t | tFrameSize | the size of the frame |
uint32_t | wBufferSize | the buffer size |
uint16_t | hwPFBNum | the number of PFB |
uint16_t | bDoNOTUpdateDefaultFrameBuffer: 1 | A flag to disable automatically default-framebuffer-registration. |
uint16_t | bDisableDynamicFPBSize: 1 | A flag to disable resize of the PFB block. |
uint16_t | bSwapRGB16: 1 | A flag to enable swapping high and low bytes of an RGB16 pixel. |
uint16_t | u4PoolReserve: 4 | reserve specific number of PFB for other helper services |
struct arm_2d_helper_pfb_t.__unnamed136__ |
< user configuration
Data Fields | ||
---|---|---|
arm_2d_helper_pfb_cfg_t | tCFG | |
struct arm_2d_helper_pfb_t.__unnamed136__.Adapter | Adapter |
struct arm_2d_helper_pfb_t.__unnamed136__.Adapter |
Data Fields | ||
---|---|---|
arm_2d_region_t | tDrawRegion | |
arm_2d_region_t | tTargetRegion | |
arm_2d_region_list_item_t * | ptDirtyRegion | |
arm_2d_tile_t | tPFBTile | |
arm_2d_size_t | tFrameSize | |
bool | bFirstIteration | |
bool | bIsRegionChanged | |
uint8_t | chPT | |
struct arm_2d_helper_pfb_t.__unnamed136__.Adapter.__unnamed140__ | __unnamed__ | |
uint16_t | hwFreePFBCount | |
arm_2d_pfb_t * | ptCurrent | |
arm_2d_pfb_t * | ptFreeList | |
arm_2d_pfb_t * | ptFlushing | |
struct arm_2d_helper_pfb_t.__unnamed136__.Adapter.FlushFIFO | FlushFIFO | |
arm_2d_tile_t * | ptFrameBuffer |
struct arm_2d_helper_pfb_t.__unnamed136__.Adapter.__unnamed140__ |
struct arm_2d_helper_pfb_t.__unnamed136__.Adapter.FlushFIFO |
Data Fields | ||
---|---|---|
arm_2d_pfb_t * | ptHead | |
arm_2d_pfb_t * | ptTail |
struct arm_2d_helper_pfb_t.Statistics |
#define arm_2d_scene_player_register_on_draw_navigation_event_handler | ( | __DISP_ADAPTER_PTR, | |
__DRAW_HANDLER, | |||
__USER_TARGET_PTR, | |||
... | |||
) |
register / update the evtOnDrawNavigation event handler. You can use this event to draw an ALWAY-TOP navigation bar or title during switching period.
[in] | __DISP_ADAPTER_PTR | the target scene player |
[in] | __DRAW_HANDLER | the event handler to draw the navigation bar and/or titles |
[in] | __USER_TARGET_PTR | the address of an user specified object. If it is NULL, ptThis will be used instead. |
[in] | ... | an optional dirty region list for the navigation layer. If ommited, NULL is used. |
#define arm_2d_scene_player_set_switching_mode | ( | __DISP_ADAPTER_PTR, | |
__SWITCH_MODE, | |||
... | |||
) |
configure the scene switching mode
[in] | __DISP_ADAPTER_PTR | the target scene player |
[in] | __SWITCH_MODE | a switching mode object |
[in] | ... | an optional configurations for the switching |
#define ARM_2D_HELPER_PFB_INIT | ( | __CB_ADDR, | |
__SCREEN_WIDTH, | |||
__SCREEN_HEIGHT, | |||
__PIXEL_TYPE, | |||
__WIDTH, | |||
__HEIGHT, | |||
__PFB_NUM, | |||
... | |||
) |
a macro wrapper in uppercase to help initialising PFB service
[in] | __CB_ADDR | the address of the arm_2d_helper_pfb_t object |
[in] | __SCREEN_WIDTH | the width of the screen |
[in] | __SCREEN_HEIGHT | the hight of the screen |
[in] | __PIXEL_TYPE | the integer type of the pixel, i.e. uint8_t, uint16_t, uint32_t |
[in] | __WIDTH | the width of the PFB block |
[in] | __HEIGHT | the height of the PFB block |
[in] | __PFB_NUM | the number of PFB blocks in the built-in PFB pool. |
[in] | ... | a code block to add additional initializer, see example below: |
#define ARM_2D_HELPER_PFB_UPDATE_ON_DRAW_HANDLER | ( | __CB_ADDR, | |
__HANDLER, | |||
... | |||
) |
a macro wrapper to update the evtOnDrawring event handler
[in] | __CB_ADDR | the address of the arm_2d_helper_pfb_t object |
[in] | __HANDLER | the new handler |
[in] | ... | [Optional] an address (of user defined structure) passed to the event handler. |
#define __IMPL_ARM_2D_REGION_LIST | ( | __NAME, | |
... | |||
) |
#define __ADD_REGION_TO_LIST | ( | __NAME, | |
... | |||
) |
#define __ADD_LAST_REGION_TO_LIST | ( | __NAME, | |
... | |||
) |
#define IMPL_PFB_ON_DRAW | ( | __NAME | ) |
#define IMPL_PFB_ON_LOW_LV_RENDERING | ( | __NAME | ) |
#define init_arm_2d_helper_pfb | ( | __CB_ADDR, | |
__SCREEN_WIDTH, | |||
__SCREEN_HEIGHT, | |||
__PIXEL_TYPE, | |||
__WIDTH, | |||
__HEIGHT, | |||
__PFB_NUM, | |||
... | |||
) |
a macro wrapper in lowercase to help initialising PFB service
[in] | __CB_ADDR | the address of the arm_2d_helper_pfb_t object |
[in] | __SCREEN_WIDTH | the width of the screen |
[in] | __SCREEN_HEIGHT | the hight of the screen |
[in] | __PIXEL_TYPE | the integer type of the pixel, i.e. uint8_t, uint16_t, uint32_t |
[in] | __WIDTH | the width of the PFB block |
[in] | __HEIGHT | the height of the PFB block |
[in] | __PFB_NUM | the number of PFB blocks in the built-in PFB pool. |
[in] | ... | a code block to add additional initializer, see example below: |
#define update_arm_2d_helper_pfb_on_draw_handler | ( | __CB_ADDR, | |
__HANDLER, | |||
... | |||
) |
a macro wrapper to update the evtOnDrawring event handler
[in] | __CB_ADDR | the address of the arm_2d_helper_pfb_t object |
[in] | __HANDLER | the new handler |
[in] | ... | [Optional] an address (of user defined structure) passed to the event handler. |
#define arm_2d_helper_pfb_report_rendering_complete | ( | __PFB_HELPER_PTR, | |
... | |||
) |
tell PFB helper that a low level LCD flushing work is complete
[in] | ptThis | the PFB control block |
[in] | ... | the used PFB block. |
#define __declare_tile | ( | __name | ) | extern const arm_2d_tile_t __name; |
Please do NOT use this macro.
#define declare_tile | ( | __name | ) | __declare_tile(__name) |
declare a tile
__name | the name of the tile |
#define dcl_tile | ( | __name | ) | declare_tile(__name) |
declare a tile
__name | the name of the tile |
#define dcl_fb | ( | __name | ) | declare_tile(__name) |
declare a framebuffer
__name | the name of the framebuffer |
#define __impl_fb | ( | __name, | |
__width, | |||
__height, | |||
__type, | |||
... | |||
) |
Please do NOT use this macro.
#define impl_fb | ( | __name, | |
__width, | |||
__height, | |||
__type, | |||
... | |||
) | __impl_fb(__name, __width, __height, __type, ##__VA_ARGS__) |
implement a framebuffer
__name | the name of the framebuffer |
__width | the width |
__height | the height |
__type | the type of the pixel |
... | an optional initialisation for other members of arm_2d_tile_t |
#define impl_heap_fb | ( | __tile_name, | |
__width, | |||
__height, | |||
__colour_type | |||
) |
implement a framebuffer and allocate it from the heap
__tile_name | the name of the framebuffer |
__width | the width |
__height | the height |
__colour_type | the type of the pixel |
#define get_tile_buffer_pixel_count | ( | __name | ) |
calculate the number of pixels in a given tile
__name | the target tile |
#define get_tile_buffer_size | ( | __name, | |
__type | |||
) | (get_2d_layer_buffer_pixel_count(__name) * sizeof(__type)) |
calculate the size of a given framebuffer
__name | the target tile |
__type | the pixel type |
#define impl_child_tile | ( | __parent, | |
__x, | |||
__y, | |||
__width, | |||
__height, | |||
... | |||
) |
implement a child tile for a given parent
__parent | the parent tile |
__x | the x offset in the parent region |
__y | the y offset in the parent region |
__width | the width of the new tile |
__height | the height of the new tile |
... | an optional initialisation for other members of arm_2d_tile_t |
#define __arm_2d_align_top_left2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_top_left3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_top_left | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for top-left alignment.
... | parameter list |
#define __arm_2d_align_top_centre2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_top_centre3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_top_centre | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for top-central alignment.
... | parameter list |
#define __arm_2d_align_top_right2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_top_right3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_top_right | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for top-right alignment.
... | parameter list |
#define __arm_2d_align_mid_left2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_mid_left3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_mid_left | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for middle-left alignment.
... | parameter list |
#define __arm_2d_align_centre2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_centre3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_centre | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for central alignment.
... | parameter list |
#define __arm_2d_align_mid_right2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_mid_right3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_mid_right | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for middle-right alignment.
... | parameter list |
#define __arm_2d_align_bottom_left2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_bottom_left3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_bottom_left | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for bottom-left alignment.
... | parameter list |
#define __arm_2d_align_bottom_centre2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_bottom_centre3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_bottom_centre | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for bottom-central alignment.
... | parameter list |
#define __arm_2d_align_bottom_right2 | ( | __region, | |
__size | |||
) |
Please do NOT use this macro.
#define __arm_2d_align_bottom_right3 | ( | __region, | |
__width, | |||
__height | |||
) |
Please do NOT use this macro.
#define arm_2d_align_bottom_right | ( | ... | ) |
generate a temporary arm_2d_region_t object with use specified info for bottom-right alignment.
... | parameter list |
#define arm_2d_helper_is_time_out | ( | __ms, | |
... | |||
) |
set an alarm with given period and check the status
[in] | __ms | a time period in millisecond |
[in] | ... | an optional timestamp holder |
#define arm_2d_helper_time_liner_slider | ( | __from, | |
__to, | |||
__ms, | |||
__stroke_ptr, | |||
... | |||
) |
calculate the stroke of a liner slider based on time
[in] | __from | the start of the slider |
[in] | __to | the end of the slider |
[in] | __ms | a given period (ms) in which the slider should finish the whole stroke |
[out] | __stroke_ptr | the address of an int32_t stroke variable |
[in] | ... | an optional address of a timestamp variable, if you omit it, NULL will be passed, and the code that call this funtion will not be reentrant. |
true | the slider has finished the whole stroke |
false | the slider hasn't reach the target end |
#define arm_2d_helper_time_cos_slider | ( | __from, | |
__to, | |||
__ms, | |||
__phase, | |||
__stroke_ptr, | |||
... | |||
) |
calculate the stroke of a cosine slider based on time
[in] | __from | the start of the slider |
[in] | __to | the end of the slider |
[in] | __ms | a given period (ms) in which the slider should finish the whole stroke |
[in] | __phase | the phase offset |
[out] | __stroke_ptr | the address of an int32_t stroke variable |
[in] | ... | an optional address of a timestamp variable, if you omit it, NULL will be passed, and the code that call this funtion will not be reentrant. |
true | the slider has finished the whole stroke |
false | the slider hasn't reach the target end |
#define arm_2d_helper_time_half_cos_slider | ( | __from, | |
__to, | |||
__ms, | |||
__stroke_ptr, | |||
... | |||
) |
calculate the stroke of a cosine slider(0~pi) based on time
[in] | __from | the start of the slider |
[in] | __to | the end of the slider |
[in] | __ms | a given period (ms) in which the slider should finish the whole stroke |
[out] | __stroke_ptr | the address of an int32_t stroke variable |
[in] | ... | an optional address of a timestamp variable, if you omit it, NULL will be passed, and the code that call this funtion will not be reentrant. |
true | the slider has finished the whole stroke |
false | the slider hasn't reach the target end |
typedef arm_fsm_rt_t arm_2d_helper_draw_handler_t(void *pTarget, const arm_2d_tile_t *ptTile, bool bIsNewFrame) |
the On-Drawing event handler for application layer
[in] | pTarget | a user attached target address |
[in] | ptTile | a tile for the virtual screen |
[in] | bIsNewFrame | a flag indicate the starting of a new frame |
typedef void arm_2d_helper_render_handler_t(void *pTarget, const arm_2d_pfb_t *ptPFB, bool bIsNewFrame) |
the On Low Level Rendering event handler for the low level (LCD Driver)
[in] | pTarget | a user attached target address |
[in] | ptPFB | the PFB block |
[in] | bIsNewFrame | a flag indicate the starting of a new frame |
scene switching mode
anonymous enum |
the enumeration for events
void arm_2d_scene_player_flush_fifo | ( | arm_2d_scene_player_t * | ptThis | ) |
flush the scene FIFO
[in] | ptThis | the target scene player |
void arm_2d_scene_player_append_scenes | ( | arm_2d_scene_player_t * | ptThis, |
arm_2d_scene_t * | ptScenes, | ||
int_fast16_t | hwCount | ||
) |
append a set of scenes to a scene player
[in] | ptThis | the target scene player |
[in] | ptScenes | a scene array |
[in] | hwCount | the number of scenes in the array |
void arm_2d_scene_player_update_scene_background | ( | arm_2d_scene_player_t * | ptThis | ) |
request updating the background of the current scene
[in] | ptThis | the target scene player |
void arm_2d_scene_player_switch_to_next_scene | ( | arm_2d_scene_player_t * | ptThis | ) |
request switching to the next scene safely
[in] | ptThis | the target scene player |
void __arm_2d_scene_player_set_switching_mode | ( | arm_2d_scene_player_t * | ptThis, |
arm_2d_scene_switch_mode_t * | ptMode, | ||
uint16_t | hwSettings | ||
) |
configure the scene switching mode
[in] | ptThis | the target scene player |
[in] | ptMode | a switching mode object |
[in] | hwSettings | configurations for the switching |
uint16_t arm_2d_scene_player_get_switching_cfg | ( | arm_2d_scene_player_t * | ptThis | ) |
read the current scene switching mode
[in] | ptThis | the target scene player |
void arm_2d_scene_player_set_switching_period | ( | arm_2d_scene_player_t * | ptThis, |
uint_fast16_t | hwMS | ||
) |
configure the scene switching period
[in] | ptThis | the target scene player |
[in] | hwMS | period in millisecond |
arm_2d_err_t __arm_2d_scene_player_register_on_draw_navigation_event_handler | ( | arm_2d_scene_player_t * | ptThis, |
arm_2d_helper_draw_handler_t * | fnHandler, | ||
void * | pTarget, | ||
arm_2d_region_list_item_t * | ptDirtyRegions | ||
) |
register / update the evtOnDrawNavigation event handler. You can use this event to draw an ALWAY-TOP navigation bar or title during switching period.
[in] | ptThis | the target scene player |
[in] | fnHandler | the event handler to draw the navigation bar and/or titles |
[in] | pTarget | the address of an user specified object. If it is NULL, ptThis will be used instead. |
[in] | ptDirtyRegions | a dirty region list for the navigation layer. |
arm_fsm_rt_t arm_2d_scene_player_task | ( | arm_2d_scene_player_t * | ptThis | ) |
the scene player task function
[in] | ptThis | the target scene player |
arm_2d_err_t arm_2d_helper_pfb_init | ( | arm_2d_helper_pfb_t * | ptThis, |
arm_2d_helper_pfb_cfg_t * | ptCFG | ||
) |
initialize pfb helper service
[in] | ptThis | the pfb helper control block |
[in] | ptCFG | the configuration |
arm_2d_region_t arm_2d_helper_pfb_get_display_area | ( | arm_2d_helper_pfb_t * | ptThis | ) |
get the display (screen) region
[in] | ptThis | the pfb helper control block |
arm_fsm_rt_t arm_2d_helper_pfb_task | ( | arm_2d_helper_pfb_t * | ptThis, |
arm_2d_region_list_item_t * | ptDirtyRegions | ||
) |
the task function for pfb helper
[in] | ptThis | an initialised PFB control block |
[in] | ptDirtyRegions | a region list pending for refresh, NULL means refreshing the whole screen |
arm_fsm_rt_cpl | complete refreshing one frame |
arm_fsm_rt_on_going | the refreshing work is on-going |
arm_fsm_rt_wait_for_obj | user's OnDrawing event handler wants to wait for some objects, e.g. semaphore etc. |
<0 | An error is detected |
void arm_2d_helper_pfb_flush | ( | arm_2d_helper_pfb_t * | ptThis | ) |
flush the FPB FIFO
[in] | ptThis | an initialised PFB control block |
arm_2d_err_t arm_2d_helper_pfb_update_dependency | ( | arm_2d_helper_pfb_t * | ptThis, |
uint_fast8_t | chMask, | ||
const arm_2d_helper_pfb_dependency_t * | ptDependency | ||
) |
update PFB dependency (event handlers)
[in] | ptThis | the PFB control block |
[in] | chMask | the bit mask for event handlers |
[in] | ptDependency | the new dependency description |
void __arm_2d_helper_pfb_report_rendering_complete | ( | arm_2d_helper_pfb_t * | ptThis, |
arm_2d_pfb_t * | ptPFB | ||
) |
tell PFB helper that a low level LCD flushing work is complete
[in] | ptThis | the PFB control block |
[in] | ptPFB | the used PFB block |
void arm_2d_helper_swap_rgb16 | ( | uint16_t * | phwBuffer, |
uint32_t | wCount | ||
) |
swap the high and low bytes for each rgb16 pixel
[in] | phwBuffer | the pixel buffer |
[in] | wSize | the number of pixels |
arm_2d_pfb_t * __arm_2d_helper_pfb_new | ( | arm_2d_helper_pfb_t * | ptThis | ) |
try to get a PFB block from the pool
[in] | ptThis | the PFB control block |
NULL | the pool is empty |
!NULL | a valid pfb block |
void __arm_2d_helper_pfb_free | ( | arm_2d_helper_pfb_t * | ptThis, |
arm_2d_pfb_t * | ptPFB | ||
) |
free a PFB block to the pool
[in] | ptThis | the PFB control block |
[in] | ptPFB | the target PFB block |
void arm_2d_helper_init | ( | void | ) |
initialize helper services
int64_t arm_2d_helper_convert_ticks_to_ms | ( | int64_t | lTick | ) |
convert ticks of a reference timer to millisecond
[in] | lTick | the tick count |
int64_t arm_2d_helper_convert_ms_to_ticks | ( | uint32_t | wMS | ) |
convert millisecond into ticks of the reference timer
[in] | wMS | the target time in millisecond |
uint32_t arm_2d_helper_get_reference_clock_frequency | ( | void | ) |
get the reference clock frequency
int64_t arm_2d_helper_get_system_timestamp | ( | void | ) |
get the current system stamp from the reference clock
bool __arm_2d_helper_is_time_out | ( | int64_t | lPeriod, |
int64_t * | plTimestamp | ||
) |
set an alarm with given period and check the status
[in] | lPeriod | a time period in ticks |
[in] | plTimestamp | a pointer points to an int64_t integer, if NULL is passed, an static local variable inside the function will be used |
bool __arm_2d_helper_time_liner_slider | ( | int32_t | nFrom, |
int32_t | nTo, | ||
int64_t | lPeriod, | ||
int32_t * | pnStroke, | ||
int64_t * | plTimestamp | ||
) |
calculate the stroke of a liner slider based on time
[in] | nFrom | the start of the slider |
[in] | nTo | the end of the slider |
[in] | lPeriod | a given period in which the slider should finish the whole stroke |
[out] | pnStroke | the address of an int32_t stroke variable |
[in] | plTimestamp | the address of a timestamp variable, if you pass NULL the code that call this funtion will not be reentrant. |
true | the slider has finished the whole stroke |
false | the slider hasn't reach the target end |
bool __arm_2d_helper_time_half_cos_slider | ( | int32_t | nFrom, |
int32_t | nTo, | ||
int64_t | lPeriod, | ||
int32_t * | pnStroke, | ||
int64_t * | plTimestamp | ||
) |
calculate the stroke of a cosine slider (0~pi) based on time
[in] | nFrom | the start of the slider |
[in] | nTo | the end of the slider |
[in] | lPeriod | a given period in which the slider should finish the whole stroke |
[out] | pnStroke | the address of an int32_t stroke variable |
[in] | plTimestamp | the address of a timestamp variable, if you pass NULL the code that call this funtion will not be reentrant. |
true | the slider has finished the whole stroke |
false | the slider hasn't reach the target end |
bool __arm_2d_helper_time_cos_slider | ( | int32_t | nFrom, |
int32_t | nTo, | ||
int64_t | lPeriod, | ||
float | fPhase, | ||
int32_t * | pnStroke, | ||
int64_t * | plTimestamp | ||
) |
calculate the stroke of a consine slider (0~2pi) based on time
[in] | nFrom | the start of the slider |
[in] | nTo | the end of the slider |
[in] | lPeriod | a given period in which the slider should finish the whole stroke |
[in] | lPhase | the phase offset |
[out] | pnStroke | the address of an int32_t stroke variable |
[in] | plTimestamp | the address of a timestamp variable, if you pass NULL the code that call this funtion will not be reentrant. |
true | the slider has finished the whole stroke |
false | the slider hasn't reach the target end |