Arm-2D  
2D Image Processing Library for Cortex-M Processors
8 Helper Services

Data Structures

union  __arm_2d_helper_scene_switch_t
 an internal data structure for scene switching More...
 
struct  arm_2d_scene_switch_mode_t
 scene switching mode descriptor More...
 
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 More...
 
struct  arm_2d_scene_before_scene_switching_evt_t
 on low level render event More...
 
struct  arm_2d_scene_player_t
 a class to manage scenes More...
 
struct  arm_2d_list_item_param_t
 runtime parameters passed to on-draw-list-item event handler More...
 
struct  arm_2d_list_item_t
 the list core item class More...
 
struct  __arm_2d_list_work_area_t
 the target working area for one list core item More...
 
struct  __arm_2d_list_core_cfg_t
 list core configuration structure More...
 
struct  __arm_2d_list_core_t
 the list core class More...
 
struct  arm_2d_helper_2d_copy_evt_t
 
struct  arm_2d_helper_dma_copy_evt_t
 
struct  arm_2d_helper_3fb_cfg_t
 configuration structure for the 3fb (direct mode) helper service More...
 
struct  arm_2d_helper_3fb_t
 the control block of the 3FB (direct mode) service More...
 
struct  arm_2d_pfb_t
 the header of a PFB block More...
 
struct  arm_2d_region_list_item_t
 the node of a region list More...
 
struct  arm_2d_helper_render_evt_t
 low level render event More...
 
struct  arm_2d_helper_before_flushing_evt_t
 screen rotation event More...
 
struct  arm_2d_helper_pfb_dependency_t
 The PFB Helper Service Dependency. More...
 
struct  arm_2d_helper_pfb_cfg_t
 PFB Helper configuration. More...
 
struct  arm_2d_helper_pfb_t
 the PFB helper control block More...
 
struct  arm_2d_helper_dirty_region_item_t
 
struct  arm_2d_helper_dirty_region_t
 
struct  arm_2d_helper_dirty_region_transform_t
 the Transform helper control block More...
 
struct  arm_2d_helper_transform_t
 the Transform helper control block More...
 
struct  arm_2d_control_node_t
 
struct  arm_2d_control_enumeration_policy_t
 
struct  arm_2d_control_enumerator_t
 
struct  arm_2d_char_descriptor_t
 
struct  arm_2d_font_t
 
struct  arm_2d_char_idx_t
 
struct  arm_2d_user_font_t
 
struct  arm_2d_a1_font_t
 
struct  arm_2d_helper_film_t
 a helper class to represent a GIF-like resource More...
 
struct  arm_2d_helper_pi_slider_cfg_t
 the configuration structure for the Proportional-Integral Control More...
 
struct  arm_2d_helper_pi_slider_t
 a helper class for Proportional-Integral Control More...
 
struct  __arm_2d_fifo_reader_pointer
 
struct  arm_2d_byte_fifo_t
 
struct  __arm_2d_helper_scene_switch_t.Feature
 
struct  arm_2d_scene_t.__unnamed186__
 < next scene More...
 
struct  arm_2d_scene_t.__unnamed186__.__unnamed190__
 
struct  arm_2d_scene_t.__unnamed188__
 
struct  arm_2d_scene_player_t.Benchmark
 
struct  arm_2d_scene_player_t.__unnamed193__
 < before-scene-switch-out event handler More...
 
struct  arm_2d_scene_player_t.__unnamed193__.SceneFIFO
 
struct  arm_2d_scene_player_t.__unnamed193__.Runtime
 
struct  arm_2d_scene_player_t.__unnamed193__.Switch
 
union  arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__
 
struct  arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Fade
 
struct  arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Erase
 
struct  arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.FlyIn
 
struct  arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Slide
 
struct  arm_2d_scene_player_t.__unnamed193__.Events
 
union  arm_2d_list_item_t.__unnamed205__
 
struct  arm_2d_list_item_t.__unnamed205__.__unnamed208__
 
struct  arm_2d_list_item_t.Padding
 
struct  arm_2d_helper_3fb_t.__unnamed212__
 
struct  arm_2d_helper_3fb_t.__unnamed212__.Runtime
 
struct  arm_2d_region_list_item_t.__unnamed215__
 
struct  arm_2d_helper_pfb_dependency_t.Navigation
 event handler for drawing GUI More...
 
struct  arm_2d_helper_pfb_cfg_t.FrameBuffer
 
struct  arm_2d_helper_pfb_cfg_t.DirtyRegion
 
struct  arm_2d_helper_pfb_t.__unnamed220__
 < user configuration More...
 
struct  arm_2d_helper_pfb_t.__unnamed220__.Adapter
 
struct  arm_2d_helper_pfb_t.__unnamed220__.Adapter.OptimizedDirtyRegions
 
struct  arm_2d_helper_pfb_t.__unnamed220__.Adapter.__unnamed225__
 
struct  arm_2d_helper_pfb_t.__unnamed220__.Adapter.FlushFIFO
 
struct  arm_2d_helper_pfb_t.Statistics
 
union  arm_2d_helper_dirty_region_item_t.__unnamed228__
 
struct  arm_2d_helper_dirty_region_item_t.__unnamed228__.__unnamed230__
 
union  arm_2d_helper_dirty_region_item_t.__unnamed228__.__unnamed230__.__unnamed232__
 
struct  arm_2d_helper_dirty_region_transform_t.__unnamed234__
 
struct  arm_2d_helper_dirty_region_transform_t.__unnamed234__.Angle
 
struct  arm_2d_helper_dirty_region_transform_t.__unnamed234__.Scale
 
struct  arm_2d_helper_transform_t.__unnamed238__
 
struct  arm_2d_helper_transform_t.__unnamed238__.Angle
 
struct  arm_2d_helper_transform_t.__unnamed238__.Scale
 
union  arm_2d_control_enumerator_t.__unnamed242__
 
struct  arm_2d_control_enumerator_t.__unnamed242__.Preorder
 
struct  arm_2d_control_enumerator_t.__unnamed242__.BottomUp
 
struct  arm_2d_control_enumerator_t.__unnamed242__.Postorder
 
struct  arm_2d_helper_pi_slider_t.__unnamed247__
 

Macros

#define arm_2d_scene_player_register_on_draw_navigation_event_handler( __SCENE_PLAYER_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(__SCENE_PLAYER_PTR, __SWITCH_MODE, ...)
 configure the scene switching mode More...
 
#define arm_2d_scene_player_register_before_switching_event_handler( __SCENE_PLAYER_PTR, __HANDLER, ...)
 register / update the evtBeforeSwitching event handler. You can use this event to prepare next scenes. More...
 
#define ARM_2D_FPS_MODE_RENDER_ONLY   0
 
#define ARM_2D_FPS_MODE_REAL   1
 
#define ARM_2D_HELPER_PFB_INIT(__CB_ADDR, __SCREEN_WIDTH, __SCREEN_HEIGHT, __PIXEL_TYPE, __COLOUR_FORMAT, __PFB_WIDTH, __PFB_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)   IMPL_ON_DRAW_EVT(__NAME)
 
#define IMPL_PFB_ON_LOW_LV_RENDERING(__NAME)
 
#define IMPL_PFB_ON_FRAME_SYNC_UP(__NAME)    bool __NAME(void *pTarget)
 
#define IMPL_PFB_BEFORE_FLUSHING(__NAME)
 
#define init_arm_2d_helper_pfb(__CB_ADDR, __SCREEN_WIDTH, __SCREEN_HEIGHT, __PIXEL_TYPE, __COLOUR_FORMAT, __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 __arm_2d_helper_dirty_region_update_dirty_regions0    __arm_2d_helper_dirty_region_update_dirty_regions
 
#define __arm_2d_helper_dirty_region_update_dirty_regions3(__helper_ptr, __tile_ptr, __visible_area_ptr, __new_region_ptr, __is_new_frame)
 update a specified new region while erase the previous region More...
 
#define __arm_2d_helper_dirty_region_update_dirty_regions1(__helper_ptr, __tile_ptr, __new_region_ptr)
 update a specified new region while erase the previous region More...
 
#define arm_2d_helper_dirty_region_update_dirty_regions( __helper_ptr, __tile_ptr, ...)
 update a specified new region while erase the previous region 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 ARM_2D_3FB_INVALID_IDX   3
 
#define ARM_CONTROL_ENUMERATE(__ROOT, __ITEM_NAME, __POLICY)
 
#define arm_control_enumerate   ARM_CONTROL_ENUMERATE
 
#define arm_ctrl_enum   ARM_CONTROL_ENUMERATE
 
#define ARM_CTRL_ENUM   ARM_CONTROL_ENUMERATE
 
#define arm_ctrl_foreach   ARM_CONTROL_ENUMERATE
 
#define ARM_CTRL_FOREACH   ARM_CONTROL_ENUMERATE
 
#define __GLCD_CFG_COLOUR_DEPTH__   16
 
#define COLOUR_INT_TYPE   uint16_t
 
#define __GLCD_CFG_SCEEN_WIDTH__   320
 
#define __GLCD_CFG_SCEEN_HEIGHT__   320
 
#define __arm_print_banner3(__STR, __REGION, __FONT_PTR)
 
#define __arm_print_banner2(__STR, __REGION)    __arm_print_banner3(__STR, __REGION, NULL)
 
#define __arm_print_banner1(__STR)
 
#define arm_print_banner(...)
 
#define arm_lcd_print_banner(...)   arm_print_banner(__VA_ARGS__)
 
#define arm_lcd_get_string_line_box(__STR, ...)
 
#define IMPL_FONT_DRAW_CHAR(__NAME)
 
#define IMPL_FONT_GET_CHAR_DESCRIPTOR(__NAME)
 
#define arm_2d_helper_is_time_out(__ms, ...)
 set an alarm with given period and check the status More...
 
#define arm_2d_helper_time_elapsed(__timestamp_ptr)
 
#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...
 
#define impl_film( __sprites_tile, __width, __height, __column, __frame_count, __period)
 initialize/implement a given film (arm_2d_helper_file_t) object at compile-time. More...
 

Typedefs

typedef void arm_2d_scene_before_scene_switching_handler_t(void *pTarget, arm_2d_scene_player_t *ptPlayer, arm_2d_scene_t *ptScene)
 the scene player event handler More...
 
typedef arm_fsm_rt_t arm_2d_draw_list_item_handler_t(arm_2d_list_item_t *ptThis, const arm_2d_tile_t *ptTile, bool bIsNewFrame, arm_2d_list_item_param_t *ptParam)
 the prototype of On-Drawing-List-Item event handler More...
 
typedef arm_2d_list_item_t__arm_2d_list_item_iterator(__arm_2d_list_core_t *ptThis, arm_2d_list_iterator_dir_t tDirection, uint_fast16_t hwID)
 the list core interator prototype More...
 
typedef __arm_2d_list_work_area_t__arm_2d_list_region_calculator_t(__arm_2d_list_core_t *ptThis, __arm_2d_list_item_iterator *fnIterator, int32_t nOffset)
 the list region calculaor prototype More...
 
typedef bool arm_2d_helper_2d_copy_handler_t(arm_2d_helper_3fb_t *ptThis, void *pObj, uintptr_t pnSource, uint32_t wSourceStride, uintptr_t pnTarget, uint32_t wTargetStride, int16_t iWidth, int16_t iHeight, uint_fast8_t chBytePerPixel)
 An interface for 2D-Copy. More...
 
typedef void arm_2d_helper_dma_copy_handler_t(arm_2d_helper_3fb_t *ptThis, void *pObj, uintptr_t pnSource, uintptr_t pnTarget, uint32_t nDataItemCount, uint_fast8_t chDataItemSize)
 An interface for DMA memory-to-memory copy. If you have a DMA, you can implement this function by using __OVERRIDE_WEAK. You should implement an ISR for copy-complete event and call arm_2d_helper_3fb_report_dma_copy_complete() to notify the 3FB (direct mode) helper service. 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...
 
typedef bool arm_2d_helper_before_flushing_handler_t(void *pTarget, arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch)
 before-flushing event handler More...
 
typedef arm_2d_char_descriptor_tarm_2d_font_get_char_descriptor_handler_t(const arm_2d_font_t *ptFont, arm_2d_char_descriptor_t *ptDescriptor, uint8_t *pchCharCode)
 
typedef arm_fsm_rt_t arm_2d_font_draw_char_handler_t(const arm_2d_tile_t *ptTile, const arm_2d_region_t *ptRegion, const arm_2d_font_t *ptFont, arm_2d_tile_t *ptileChar, COLOUR_INT tForeColour, uint_fast8_t chOpacity, float fScale)
 

Enumerations

enum  arm_2d_scene_player_switch_mode_t {
  ARM_2D_SCENE_SWITCH_CFG_NONE = 0 ,
  ARM_2D_SCENE_SWITCH_CFG_USER = 1 ,
  ARM_2D_SCENE_SWITCH_CFG_FADE_WHITE = 2 ,
  ARM_2D_SCENE_SWITCH_CFG_FADE_BLACK = 3 ,
  ARM_2D_SCENE_SWITCH_CFG_SLIDE_LEFT = 4 ,
  ARM_2D_SCENE_SWITCH_CFG_SLIDE_RIGHT ,
  ARM_2D_SCENE_SWITCH_CFG_SLIDE_UP ,
  ARM_2D_SCENE_SWITCH_CFG_SLIDE_DOWN ,
  ARM_2D_SCENE_SWITCH_CFG_ERASE_LEFT = 8 ,
  ARM_2D_SCENE_SWITCH_CFG_ERASE_RIGHT ,
  ARM_2D_SCENE_SWITCH_CFG_ERASE_UP ,
  ARM_2D_SCENE_SWITCH_CFG_ERASE_DOWN ,
  ARM_2D_SCENE_SWITCH_CFG_FLY_IN_FROM_LEFT = 12 ,
  ARM_2D_SCENE_SWITCH_CFG_FLY_IN_FROM_RIGHT ,
  ARM_2D_SCENE_SWITCH_CFG_FLY_IN_FROM_TOP ,
  ARM_2D_SCENE_SWITCH_CFG_FLY_IN_FROM_BOTTOM ,
  __ARM_2D_SCENE_SWITCH_CFG_VALID ,
  ARM_2D_SCENE_SWITCH_CFG_IGNORE_OLD_BG = _BV(8) ,
  ARM_2D_SCENE_SWITCH_CFG_IGNORE_OLD_SCEBE = _BV(9) ,
  ARM_2D_SCENE_SWITCH_CFG_IGNORE_NEW_BG = _BV(10) ,
  ARM_2D_SCENE_SWITCH_CFG_IGNORE_NEW_SCEBE = _BV(11) ,
  ARM_2D_SCENE_SWITCH_CFG_DEFAULT_BG_WHITE = 0 << 12 ,
  ARM_2D_SCENE_SWITCH_CFG_DEFAULT_BG_BLACK = 1 << 12 ,
  ARM_2D_SCENE_SWITCH_CFG_DEFAULT_BG_USER = 2 << 12 ,
  __ARM_2D_SCENE_SWTICH_CFG_IGNORE_msk = 0x0F << 8 ,
  __ARM_2D_SCENE_SWTICH_CFG_IGNORE_pos = 8 ,
  __ARM_2D_SCENE_SWTICH_CFG_DEFAULT_BG_msk = 3 << 12 ,
  __ARM_2D_SCENE_SWTICH_CFG_DEFAULT_BG_pos = 12 ,
  ARM_2D_SCENE_SWITCH_CFG_BG_BLUR = _BV(14)
}
 scene switching mode More...
 
enum  arm_2d_scene_player_switch_status_t {
  ARM_2D_SCENE_SWITCH_STATUS_AUTO ,
  ARM_2D_SCENE_SWITCH_STATUS_MANUAL ,
  ARM_2D_SCENE_SWITCH_STATUS_MANUAL_CANCEL ,
  ARM_2D_SCENE_SWITCH_STATUS_MANUAL_AUTO_CPL
}
 the scene switching status More...
 
enum  arm_2d_list_iterator_dir_t {
  __ARM_2D_LIST_GET_ITEM_WITH_ID_WITHOUT_MOVE_POINTER = 0 ,
  __ARM_2D_LIST_GET_ITEM_AND_MOVE_POINTER ,
  __ARM_2D_LIST_GET_PREVIOUS ,
  __ARM_2D_LIST_GET_NEXT ,
  __ARM_2D_LIST_GET_FIRST_ITEM_WITHOUT_MOVE_POINTER ,
  __ARM_2D_LIST_GET_FIRST_ITEM ,
  __ARM_2D_LIST_GET_CURRENT ,
  __ARM_2D_LIST_GET_LAST_ITEM_WITHOUT_MOVE_POINTER ,
  __ARM_2D_LIST_GET_LAST_ITEM
}
 intructions for how to move the list core item iterator More...
 
enum  arm_2d_list_dir_t {
  ARM_2D_LIST_VERTICAL ,
  ARM_2D_LIST_HORIZONTAL
}
 
enum  {
  ARM_3FB_STATE_UNUSED = 0 ,
  ARM_3FB_STATE_COPYING_AS_TARGET ,
  ARM_3FB_STATE_READY_TO_DRAW ,
  ARM_3FB_STATE_DRAWING ,
  ARM_3FB_STATE_COPYING_AS_SOURCE ,
  ARM_3FB_STATE_READY_TO_FLUSH ,
  ARM_3FB_STATE_FLUSHING
}
 direct mode helper service frame-buffer control block states More...
 
enum  {
  ARM_2D_PFB_DEPEND_ON_LOW_LEVEL_RENDERING = _BV(0) ,
  ARM_2D_PFB_DEPEND_ON_DRAWING = _BV(1) ,
  ARM_2D_PFB_DEPEND_ON_LOW_LEVEL_SYNC_UP = _BV(2) ,
  ARM_2D_PFB_DEPEND_ON_FRAME_SYNC_UP = _BV(3) ,
  ARM_2D_PFB_DEPEND_ON_EACH_FRAME_CPL = _BV(4) ,
  ARM_2D_PFB_DEPEND_ON_NAVIGATION = _BV(5)
}
 the enumeration for events More...
 
enum  arm_2d_perfc_type_t {
  ARM_2D_PERFC_RENDER = 0 ,
  ARM_2D_PERFC_DRIVER ,
  __ARM_2D_PERFC_COUNT
}
 the type of perf counter 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...
 
arm_2d_size_t arm_2d_scene_player_get_screen_size (arm_2d_scene_player_t *ptThis)
 get the screen size of a specified display adapter. 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_auto_switching_period (arm_2d_scene_player_t *ptThis, int_fast16_t iMS)
 configure the scene switching period in auto-switching More...
 
void arm_2d_scene_player_set_manual_switching_offset (arm_2d_scene_player_t *ptThis, arm_2d_location_t tPointer)
 use manual switch mode and set the offset More...
 
arm_2d_err_t arm_2d_scene_player_finish_manual_switching (arm_2d_scene_player_t *ptThis, bool bMoveToPreviousScene, int_fast16_t iInMS)
 end the manual switching and finish the left part in a specific period (ms) More...
 
bool arm_2d_scene_player_is_switching (arm_2d_scene_player_t *ptThis)
 check whether scene player is switching scenes More...
 
arm_2d_scene_player_switch_status_t arm_2d_scene_player_get_switching_status (arm_2d_scene_player_t *ptThis)
 get the scene player switching status 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...
 
void arm_2d_scene_player_hide_navigation_layer (arm_2d_scene_player_t *ptThis)
 hide the navigation layer More...
 
void arm_2d_scene_player_show_navigation_layer (arm_2d_scene_player_t *ptThis)
 show the navigation layer if there is a valid one More...
 
arm_2d_err_t __arm_2d_scene_player_register_before_switching_event_handler (arm_2d_scene_player_t *ptThis, arm_2d_scene_before_scene_switching_handler_t *fnHandler, void *pTarget)
 register / update the evtBeforeSwitching event handler. You can use this event to prepare next scenes. More...
 
arm_fsm_rt_t arm_2d_scene_player_task (arm_2d_scene_player_t *ptThis)
 the scene player task function More...
 
bool arm_2d_scene_player_append_dirty_regions (arm_2d_scene_t *ptScene, arm_2d_region_list_item_t *ptItems, size_t tCount)
 append dirty regions to the a specified scene More...
 
bool arm_2d_scene_player_remove_dirty_regions (arm_2d_scene_t *ptScene, arm_2d_region_list_item_t *ptItems, size_t tCount)
 remove dirty regions from the a specified scene More...
 
arm_2d_scene_tarm_2d_scene_player_get_the_current_scene (arm_2d_scene_player_t *ptThis)
 get the current scene of a given scene player More...
 
arm_2d_region_list_item_tarm_2d_scene_player_dynamic_dirty_region_init (arm_2d_region_list_item_t *ptThis, arm_2d_scene_t *ptScene)
 initialize a user dynamic dirty region More...
 
void arm_2d_scene_player_dynamic_dirty_region_depose (arm_2d_region_list_item_t *ptThis, arm_2d_scene_t *ptScene)
 depose a given user dynamic dirty region More...
 
arm_2d_err_t __arm_2d_list_core_init (__arm_2d_list_core_t *ptThis, __arm_2d_list_core_cfg_t *ptCFG)
 initialize a target list core object More...
 
arm_2d_size_t __arm_2d_list_core_get_list_size (__arm_2d_list_core_t *ptThis)
 get the size of the target list More...
 
arm_fsm_rt_t __arm_2d_list_core_show (__arm_2d_list_core_t *ptThis, const arm_2d_tile_t *ptTarget, const arm_2d_region_t *ptRegion, bool bIsNewFrame)
 show a given list core More...
 
void __arm_2d_list_core_move_request (__arm_2d_list_core_t *ptThis, int16_t iSteps, int32_t nFinishInMs)
 request to move selection with specified steps More...
 
void __arm_2d_list_core_move_offset (__arm_2d_list_core_t *ptThis, int16_t iOffset)
 move selection with specified pixel offset More...
 
uint16_t __arm_2d_list_core_get_selected_item_id (__arm_2d_list_core_t *ptThis)
 get the currently selected item id More...
 
arm_2d_list_item_t__arm_2d_list_core_get_selected_item (__arm_2d_list_core_t *ptThis)
 get the currently selected item More...
 
bool __arm_2d_list_core_need_redraw (__arm_2d_list_core_t *ptThis, bool bAutoreset)
 check whether the list need a redraw More...
 
bool __arm_2d_list_core_is_list_moving (__arm_2d_list_core_t *ptThis)
 check whether the list is moving its items More...
 
arm_2d_list_item_t__arm_2d_list_core_get_item (__arm_2d_list_core_t *ptThis, __arm_2d_list_item_iterator *fnIterator, arm_2d_list_iterator_dir_t tDirection, uint16_t hwID, bool bIgnoreStatusCheck, bool bForceRingMode)
 get list item with a specified direction instruction 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...
 
void arm_2d_helper_pfb_deinit (arm_2d_helper_pfb_t *ptThis)
 uninitialize 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_2d_location_t arm_2d_helper_pfb_get_absolute_location (arm_2d_tile_t *ptTile, arm_2d_location_t tLocation)
 get the absolute location for a given location on the target tile canvas More...
 
arm_2d_size_t arm_2d_helper_pfb_get_pfb_size (arm_2d_helper_pfb_t *ptThis)
 get the inital PFB size More...
 
bool arm_2d_helper_pfb_is_region_being_drawing (const arm_2d_tile_t *ptTarget, const arm_2d_region_t *ptRegion, const arm_2d_tile_t **ppVirtualScreen)
 test whether specified region is being drawing More...
 
bool arm_2d_helper_pfb_is_region_active (const arm_2d_tile_t *ptTarget, const arm_2d_region_t *ptRegion, bool bConsiderDryRun)
 test whether the target region is active (used by PFB service) 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...
 
void arm_2d_helper_hide_navigation_layer (arm_2d_helper_pfb_t *ptThis)
 hide the navigation layer More...
 
void arm_2d_helper_show_navigation_layer (arm_2d_helper_pfb_t *ptThis)
 show the navigation layer if there is a valid one More...
 
void __arm_2d_helper_pfb_enable_drawing_canvas_colour (arm_2d_helper_pfb_t *ptThis, arm_2d_colour_t tColour)
 enable filling canvas with specified colour More...
 
void __arm_2d_helper_pfb_disable_drawing_canvas_colour (arm_2d_helper_pfb_t *ptThis)
 disable filling canvas with specified colour More...
 
void arm_2d_helper_ignore_low_level_flush (arm_2d_helper_pfb_t *ptThis)
 ignore the low level PFB flushing only More...
 
void arm_2d_helper_resume_low_level_flush (arm_2d_helper_pfb_t *ptThis)
 resume the low level PFB flushing 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...
 
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...
 
void arm_2d_helper_3fb_init (arm_2d_helper_3fb_t *ptThis, const arm_2d_helper_3fb_cfg_t *ptCFG)
 initialize the 3FB (direct mode) service More...
 
void arm_2d_helper_3fb_report_dma_copy_complete (arm_2d_helper_3fb_t *ptThis)
 report the copy-completion event to the 3FB (direct mode) service More...
 
void * arm_2d_helper_3fb_get_flush_pointer (arm_2d_helper_3fb_t *ptThis)
 get a pointer for flushing More...
 
bool __arm_2d_helper_3fb_draw_bitmap (arm_2d_helper_3fb_t *ptThis, const arm_2d_pfb_t *ptPFB)
 please do NOT use this function. It is used by the display adapter. More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate90_c8bit (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given c8bit PFB for 90 degree More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate180_c8bit (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given c8bit PFB for 180 degree More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate270_c8bit (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given c8bit PFB for 270 degree More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate90_rgb16 (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given rgb16 PFB for 90 degree More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate180_rgb16 (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given rgb16 PFB for 180 degree More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate270_rgb16 (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given rgb16 PFB for 270 degree More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate90_rgb32 (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given rgb32 PFB for 90 degree More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate180_rgb32 (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given rgb32 PFB for 180 degree More...
 
arm_2d_pfb_t__arm_2d_helper_pfb_rotate270_rgb32 (arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch, const arm_2d_size_t *ptScreenSize)
 rotate a given rgb32 PFB for 270 degree More...
 
bool arm_2d_helper_pfb_append_dirty_regions_to_list (arm_2d_region_list_item_t **ppDirtyRegionList, arm_2d_region_list_item_t *ptItems, size_t tCount)
 append dirty regions to the a specified list More...
 
bool arm_2d_helper_pfb_remove_dirty_regions_from_list (arm_2d_region_list_item_t **ppDirtyRegionList, arm_2d_region_list_item_t *ptItems, size_t tCount)
 remove dirty regions from the a specified list More...
 
bool arm_2d_dirty_region_item_ignore_set (arm_2d_region_list_item_t *ptThis, bool bIgnore)
 decide whether ignore the specified dirty region item More...
 
bool arm_2d_dirty_region_item_ignore_get (arm_2d_region_list_item_t *ptThis)
 get the ignore status of a given dirty region item More...
 
void arm_2d_helper_pfb_enable_dirty_region_optimization (arm_2d_helper_pfb_t *ptThis, arm_2d_region_list_item_t *ptRegions, uint_fast8_t chCount)
 enable dirty region optimization service More...
 
void arm_2d_helper_pfb_disable_dirty_region_optimization (arm_2d_helper_pfb_t *ptThis)
 disable dirty region optimization service More...
 
void arm_2d_dynamic_dirty_region_on_frame_start (arm_2d_region_list_item_t *ptThis, uint8_t chUserRegionIndex)
 the on-frame-start event handler for a given user dynamic dirty region More...
 
arm_2d_region_list_item_tarm_2d_dynamic_dirty_region_init (arm_2d_region_list_item_t *ptThis)
 initialize a dynamic dirty region More...
 
void arm_2d_dynamic_dirty_region_depose (arm_2d_region_list_item_t *ptThis)
 depose a given dynamic dirty region More...
 
uint_fast8_t arm_2d_dynamic_dirty_region_wait_next (arm_2d_region_list_item_t *ptThis)
 wait for the PFB helper service requesting the next region More...
 
void arm_2d_dynamic_dirty_region_update (arm_2d_region_list_item_t *ptThis, arm_2d_tile_t *ptTarget, arm_2d_region_t *ptRegion, uint8_t chNextUserIndex)
 update a given user dynamic dirty region with a new region More...
 
void arm_2d_dynamic_dirty_region_change_user_region_index_only (arm_2d_region_list_item_t *ptThis, uint8_t chNextUserIndex)
 only change the user region index without update the dynamic dirty region More...
 
void arm_2d_helper_dirty_region_init (arm_2d_helper_dirty_region_t *ptThis, arm_2d_region_list_item_t **ppDirtyRegionList)
 initialize a given dirtt region helper More...
 
void arm_2d_helper_dirty_region_add_items (arm_2d_helper_dirty_region_t *ptThis, arm_2d_helper_dirty_region_item_t *ptItems, uint_fast16_t hwCount)
 add an array of region items to a dirty region helper More...
 
void arm_2d_helper_dirty_region_remove_items (arm_2d_helper_dirty_region_t *ptThis, arm_2d_helper_dirty_region_item_t *ptItems, uint_fast16_t hwCount)
 remove an array of region items to a dirty region helper More...
 
arm_2d_helper_dirty_region_item_tarm_2d_helper_dirty_region_depose (arm_2d_helper_dirty_region_t *ptThis)
 depose a given dirty region helper More...
 
void arm_2d_helper_dirty_region_on_frame_start (arm_2d_helper_dirty_region_t *ptThis)
 the on-frame-start event handler for a given dirty region helper More...
 
void arm_2d_helper_dirty_region_update_item (arm_2d_helper_dirty_region_t *ptHelper, arm_2d_helper_dirty_region_item_t *ptThis, const arm_2d_tile_t *ptTargetTile, const arm_2d_region_t *ptVisibleArea, const arm_2d_region_t *ptNewRegion)
 update a specified new region while erase the previous region More...
 
void __arm_2d_helper_dirty_region_update_dirty_regions (arm_2d_helper_dirty_region_t *ptThis, const arm_2d_tile_t *ptTargetTile)
 update a specified new region while erase the previous region More...
 
void __arm_2d_helper_dirty_region_update_dirty_regions2 (arm_2d_helper_dirty_region_t *ptThis, const arm_2d_tile_t *ptTargetTile, const arm_2d_region_t *ptVisibleArea, const arm_2d_region_t *ptNewRegion)
 update a specified new region while erase the previous region More...
 
bool arm_2d_helper_dirty_region_item_force_to_use_minimal_enclosure (arm_2d_helper_dirty_region_item_t *ptThis, bool bEnable)
 force an arm_2d_helper_dirty_region_item_t object to use the minimal enclosure region to update. More...
 
bool arm_2d_helper_dirty_region_force_to_use_minimal_enclosure (arm_2d_helper_dirty_region_t *ptThis, bool bEnable)
 force the dirty region helper to use the minimal enclosure region to update. More...
 
bool arm_2d_helper_dirty_region_suspend_update (arm_2d_helper_dirty_region_t *ptThis, bool bEnable)
 force the dirty region helper to suspend the dirty region update. More...
 
bool arm_2d_helper_dirty_region_item_suspend_update (arm_2d_helper_dirty_region_item_t *ptThis, bool bEnable)
 force the arm_2d_helper_dirty_region_item_t object to suspend the dirty region update. More...
 
void arm_2d_helper_transform_init (arm_2d_helper_transform_t *ptThis, arm_2d_op_t *ptTransformOP, float fAngleStep, float fScaleStep, arm_2d_region_list_item_t **ppDirtyRegionList)
 initialize a given transform helper More...
 
void arm_2d_helper_transform_depose (arm_2d_helper_transform_t *ptThis)
 depose a given transform helper More...
 
void arm_2d_helper_transform_on_frame_begin (arm_2d_helper_transform_t *ptThis)
 the on-frame-begin event handler for a given transform helper More...
 
void arm_2d_helper_transform_force_update (arm_2d_helper_transform_t *ptThis)
 force transform helper to update dirty region More...
 
bool arm_2d_helper_transform_force_to_use_minimal_enclosure (arm_2d_helper_transform_t *ptThis, bool bEnable)
 force the transform helper to use the minimal enclosure region as the dirty region. More...
 
bool arm_2d_helper_transform_suspend_update (arm_2d_helper_transform_t *ptThis, bool bEnable)
 force the transform helper to suspend the dirty region update. More...
 
void arm_2d_helper_transform_update_value (arm_2d_helper_transform_t *ptThis, float fAngle, float fScale)
 update a given transform helper with new values More...
 
void arm_2d_helper_transform_update_dirty_regions (arm_2d_helper_transform_t *ptThis, const arm_2d_region_t *ptCanvas, bool bIsNewFrame)
 update the dirty region after a transform operation More...
 
void arm_2d_helper_dirty_region_transform_init (arm_2d_helper_dirty_region_transform_t *ptThis, arm_2d_helper_dirty_region_t *ptHelper, arm_2d_op_t *ptTransformOP, float fAngleStep, float fScaleStep)
 initialize a given dirty region transform helper More...
 
void arm_2d_helper_dirty_region_transform_depose (arm_2d_helper_dirty_region_transform_t *ptThis)
 depose a given dirty region transform helper More...
 
void arm_2d_helper_dirty_region_transform_on_frame_start (arm_2d_helper_dirty_region_transform_t *ptThis)
 the on-frame-begin event handler for a given dirty region transform helper More...
 
void arm_2d_helper_dirty_region_transform_force_update (arm_2d_helper_dirty_region_transform_t *ptThis)
 force a dirty region transform helper to update its dirty region More...
 
bool arm_2d_helper_dirty_region_transform_force_to_use_minimal_enclosure (arm_2d_helper_dirty_region_transform_t *ptThis, bool bEnable)
 force a dirty region transform helper to use the minimal enclosure region as the dirty region. More...
 
bool arm_2d_helper_dirty_region_transform_suspend_update (arm_2d_helper_dirty_region_transform_t *ptThis, bool bEnable)
 force a dirty region transform helper to suspend updating. More...
 
void arm_2d_helper_dirty_region_transform_update_value (arm_2d_helper_dirty_region_transform_t *ptThis, float fAngle, float fScale)
 update a given dirty region transform helper with new values More...
 
void arm_2d_helper_dirty_region_transform_update (arm_2d_helper_dirty_region_transform_t *ptThis, const arm_2d_region_t *ptCanvas, bool bIsNewFrame)
 update the dirty region after a transform operation More...
 
arm_2d_err_t arm_2d_helper_control_enum_init (arm_2d_control_enumerator_t *ptThis, const arm_2d_control_enumeration_policy_t *ptPolicy, const arm_2d_control_node_t *ptRoot)
 Initialize a enumerator for the target element tree with a given
traversal policy. More...
 
arm_2d_control_node_tarm_2d_helper_control_enum_get_next_node (arm_2d_control_enumerator_t *ptThis)
 get the next node of the target enumerator More...
 
arm_2d_err_t arm_2d_helper_control_enum_depose (arm_2d_control_enumerator_t *ptThis)
 depose (de-initialize) a given enumerator More...
 
arm_2d_control_node_tarm_2d_helper_control_find_node_with_location (arm_2d_control_node_t *ptRoot, arm_2d_location_t tLocation)
 find the top node on the screen with a given touch location. More...
 
arm_2d_region_tarm_2d_helper_control_get_absolute_region (arm_2d_control_node_t *ptNode, arm_2d_region_t *ptOutRegion, bool bClip)
 get the absolute region of a given target control in an element tree More...
 
int8_t arm_2d_helper_get_utf8_byte_valid_length (const uint8_t *pchChar)
 return a valid code length of a given UTF8 char More...
 
int8_t arm_2d_helper_get_utf8_byte_length (const uint8_t *pchChar)
 return the code length based on the first byte of a given UTF8 char More...
 
uint32_t arm_2d_helper_utf8_to_unicode (const uint8_t *pchUTF8)
 convert an UTF8 char into unicode char More...
 
arm_2d_char_descriptor_tarm_2d_helper_get_char_descriptor (const arm_2d_font_t *ptFont, arm_2d_char_descriptor_t *ptDescriptor, uint8_t *pchCharCode)
 get char descriptor More...
 
void arm_lcd_text_init (arm_2d_region_t *ptScreen)
 initialize lcd text display service More...
 
int arm_lcd_printf (const char *format,...)
 
void arm_lcd_puts_label (const char *pchString, arm_2d_align_t tAlignment)
 
int arm_lcd_printf_label (arm_2d_align_t tAlignment, const char *format,...)
 
void arm_lcd_puts (const char *str)
 
void arm_lcd_text_location (uint8_t chY, uint8_t chX)
 
void arm_lcd_text_reset_display_region_tracking (void)
 
arm_2d_region_tarm_lcd_text_get_last_display_region (void)
 
int16_t lcd_draw_char (int16_t iX, int16_t iY, uint8_t **ppchCharCode, uint_fast8_t chOpacity)
 draw a char to a given location in the draw region More...
 
void arm_lcd_putchar (const char *str)
 
void arm_lcd_text_set_colour (COLOUR_INT_TYPE wForeground, COLOUR_INT_TYPE wBackground)
 
void arm_lcd_text_set_opacity (uint8_t chOpacity)
 
void arm_lcd_text_set_scale (float fScale)
 
bool arm_lcd_text_force_char_use_same_width (bool bForced)
 Force all char use the same width. More...
 
void arm_lcd_text_set_target_framebuffer (const arm_2d_tile_t *ptFrameBuffer)
 
void arm_lcd_text_set_display_mode (uint32_t wMode)
 set the display mode for characters More...
 
void arm_lcd_text_set_draw_region (arm_2d_region_t *ptRegion)
 
arm_2d_err_t arm_lcd_text_set_font (const arm_2d_font_t *ptFont)
 
arm_2d_size_t __arm_lcd_get_string_line_box (const char *str, const arm_2d_font_t *ptFont)
 
 IMPL_FONT_DRAW_CHAR (__arm_2d_lcd_text_default_a8_font_draw_char)
 
 IMPL_FONT_DRAW_CHAR (__arm_2d_lcd_text_default_a4_font_draw_char)
 
 IMPL_FONT_DRAW_CHAR (__arm_2d_lcd_text_default_a2_font_draw_char)
 
 IMPL_FONT_DRAW_CHAR (__arm_2d_lcd_text_default_a1_font_draw_char)
 
void arm_2d_helper_init (void)
 initialize helper services More...
 
void arm_2d_helper_backend_task (void)
 backend task for asynchronose mode 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...
 
int64_t __arm_2d_helper_time_elapsed (int64_t *plTimestamp)
 get the elapsed time since a reference timestamp 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...
 
uintptr_t arm_2d_port_new_semaphore (void)
 get a new semaphore from host RTOS More...
 
void arm_2d_port_free_semaphore (uintptr_t pSemaphore)
 free a semaphore More...
 
bool arm_2d_port_wait_for_semaphore (uintptr_t pSemaphore)
 wait for a semaphore More...
 
void arm_2d_port_set_semaphore (uintptr_t pSemaphore)
 set a semaphore 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...
 
uint32_t __arm_2d_helper_colour_slider (uint32_t wFrom, uint32_t wTo, int32_t nDistance, int32_t nOffset)
 
arm_2d_helper_pi_slider_tarm_2d_helper_pi_slider_init (arm_2d_helper_pi_slider_t *ptThis, arm_2d_helper_pi_slider_cfg_t *ptCFG, int32_t nStartPosition)
 initialize the Proportional-Integral Control helper More...
 
bool arm_2d_helper_pi_slider (arm_2d_helper_pi_slider_t *ptThis, int32_t nTargetPosition, int32_t *pnResult)
 A helper function for Proportional-Integral Control. More...
 
void arm_2d_helper_pi_slider_set_current (arm_2d_helper_pi_slider_t *ptThis, int32_t nCurrent)
 reset the PI slider and set the current value More...
 
bool arm_2d_helper_pi_slider_f32 (arm_2d_helper_pi_slider_t *ptThis, float fTargetPosition, float *pfResult)
 A helper function for Proportional-Integral Control. More...
 
void arm_2d_helper_pi_slider_set_current_f32 (arm_2d_helper_pi_slider_t *ptThis, float fCurrent)
 reset the PI slider and set the current value More...
 
void arm_2d_helper_draw_box (const arm_2d_tile_t *ptTarget, const arm_2d_region_t *ptRegion, int16_t iBorderWidth, COLOUR_INT tColour, uint8_t chOpacity)
 
void arm_2d_helper_film_next_frame (arm_2d_helper_film_t *ptThis)
 
void arm_2d_helper_film_reset (arm_2d_helper_film_t *ptThis)
 
void arm_2d_helper_film_set_frame (arm_2d_helper_film_t *ptThis, int32_t nIndex)
 
bool arm_2d_byte_fifo_init (arm_2d_byte_fifo_t *ptThis, void *pBuffer, uint16_t hwSize)
 initialize a given byte fifo More...
 
void arm_2d_byte_fifo_drop_all (arm_2d_byte_fifo_t *ptThis)
 Empty a given byte fifo. More...
 
bool arm_2d_byte_fifo_enqueue (arm_2d_byte_fifo_t *ptThis, uint8_t chChar)
 write a byte to a given fifo More...
 
bool arm_2d_byte_fifo_dequeue (arm_2d_byte_fifo_t *ptThis, uint8_t *pchChar)
 read a byte from a given fifo More...
 
bool arm_2d_byte_fifo_peek (arm_2d_byte_fifo_t *ptThis, uint8_t *pchChar, bool bMovePointer)
 peek a byte continuously from a given fifo More...
 
void arm_2d_byte_fifo_get_all_peeked (arm_2d_byte_fifo_t *ptThis)
 drop all peeked byte from a given fifo More...
 
void arm_2d_byte_fifo_reset_peeked (arm_2d_byte_fifo_t *ptThis)
 reset the peek pointer, so you can restart from the beginning to peek. More...
 
void arm_2d_helper_swap_rgb16 (uint16_t *phwBuffer, uint32_t wCount)
 swap the high and low bytes for each rgb16 pixel More...
 
void arm_2d_helper_fill_tile_colour (const arm_2d_tile_t *ptTile, arm_2d_color_info_t tColourFormat, arm_2d_colour_t tColour)
 fill the target tile with a specified colour 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
 
arm_2d_scene_switch_mode_t ARM_2D_SCENE_SWITCH_MODE_FLY_IN_FROM_LEFT
 
arm_2d_scene_switch_mode_t ARM_2D_SCENE_SWITCH_MODE_FLY_IN_FROM_RIGHT
 
arm_2d_scene_switch_mode_t ARM_2D_SCENE_SWITCH_MODE_FLY_IN_FROM_TOP
 
arm_2d_scene_switch_mode_t ARM_2D_SCENE_SWITCH_MODE_FLY_IN_FROM_BOTTOM
 
__arm_2d_list_region_calculator_t ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_VERTICAL
 a list calculator for vertical lists, which puts selected item in the centre of the target list More...
 
__arm_2d_list_region_calculator_t ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_HORIZONTAL
 a list calculator for horizontal lists, which puts selected item in the centre of the target list More...
 
__arm_2d_list_region_calculator_t ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_FIXED_SIZED_ITEM_NO_STATUS_CHECK_VERTICAL
 a list calculator for vertical lists, which puts selected item in the centre of the target list, item size is fixed and no status checking (i.e. visible or enabled). More...
 
__arm_2d_list_region_calculator_t ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_FIXED_SIZED_ITEM_NO_STATUS_CHECK_HORIZONTAL
 a list calculator for horizontal lists, which puts selected item in the centre of the target list, item size is fixed and no status checking (i.e. visible or enabled). More...
 
__arm_2d_list_item_iterator ARM_2D_LIST_ITERATOR_ARRAY
 a list iterator for the list that stores items in an array More...
 
const arm_2d_control_enumeration_policy_t ARM_2D_CONTROL_ENUMERATION_POLICY_PREORDER_TRAVERSAL
 The Preorder traversal is suitable for the following operations in the control (element tree) management. More...
 
const arm_2d_control_enumeration_policy_t ARM_2D_CONTROL_ENUMERATION_POLICY_POSTORDER_TRAVERSAL
 The Postorder traversal is suitable for the following operations in the control (element tree) management: More...
 
const arm_2d_control_enumeration_policy_t ARM_2D_CONTROL_ENUMERATION_POLICY_BOTTOM_UP_TRAVERSAL
 The Bottom-Up traversal is suitable for the normal message handling in the control (element tree) management. More...
 
const arm_2d_a1_font_t ARM_2D_FONT_16x24
 
const arm_2d_a1_font_t ARM_2D_FONT_6x8
 
arm_2d_font_get_char_descriptor_handler_t ARM_2D_A1_FONT_GET_CHAR_DESCRIPTOR_HANDLER
 

Description


Data Structure Documentation

◆ __arm_2d_helper_scene_switch_t

union __arm_2d_helper_scene_switch_t

an internal data structure for scene switching

Note
Please do not use it.
Data Fields
struct __arm_2d_helper_scene_switch_t.Feature Feature
uint16_t hwSetting the setting value

◆ arm_2d_scene_switch_mode_t

struct arm_2d_scene_switch_mode_t

scene switching mode descriptor

Data Fields

uint8_t chEffects
 switching effects More...
 
arm_2d_helper_draw_handler_t * fnSwitchDrawer
 switching algorithm More...
 
void(* fnOnRequestChangeSwitchingStatus )(arm_2d_scene_player_t *ptThis)
 on request change-switch-status event handler More...
 
void(* fnOnSwitchComplete )(arm_2d_scene_player_t *ptThis)
 on request switch complete event handler More...
 

Field Documentation

◆ chEffects

uint8_t arm_2d_scene_switch_mode_t::chEffects

switching effects

◆ fnSwitchDrawer

arm_2d_helper_draw_handler_t* arm_2d_scene_switch_mode_t::fnSwitchDrawer

switching algorithm

◆ fnOnRequestChangeSwitchingStatus

void(* arm_2d_scene_switch_mode_t::fnOnRequestChangeSwitchingStatus) (arm_2d_scene_player_t *ptThis)

on request change-switch-status event handler

◆ fnOnSwitchComplete

void(* arm_2d_scene_switch_mode_t::fnOnSwitchComplete) (arm_2d_scene_player_t *ptThis)

on request switch complete event handler

◆ arm_2d_scene_t

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

struct {
arm_2d_scene_tptNext
 
   struct {
uint8_t bLoaded: 1
 
   } 
 
}; 
 < next scene More...
 
arm_2d_scene_player_tptPlayer
 points to the host scene player More...
 
arm_2d_colour_t tCanvas
 the canvas colour More...
 
arm_2d_helper_draw_handler_t * fnBackground
 
arm_2d_region_list_item_tptDirtyRegion
 dirty region list for the scene More...
 
arm_2d_helper_draw_handler_t * fnScene
 the function pointer for the scene More...
 
void(* fnOnLoad )(arm_2d_scene_t *ptThis)
 on load event handler More...
 
void(* fnAfterSwitch )(arm_2d_scene_t *ptThis)
 after scene switching event handler 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(* fnBeforeSwitchOut )(arm_2d_scene_t *ptThis)
 before-scene-switch-out 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...
 
uint8_t __pad1__: 3
 
uint8_t bUseDirtyRegionHelper: 1
 indicate whether use the built-in dirty region helper. More...
 
}; 
 
arm_2d_helper_dirty_region_t tDirtyRegionHelper
 

Field Documentation

◆ 

struct { ... } arm_2d_scene_t::@186

< next scene

◆ ptPlayer

arm_2d_scene_player_t* arm_2d_scene_t::ptPlayer

points to the host scene player

◆ tCanvas

arm_2d_colour_t arm_2d_scene_t::tCanvas

the canvas colour

◆ fnBackground

arm_2d_helper_draw_handler_t* arm_2d_scene_t::fnBackground
Note
Please do NOT use it unless it is necessary

◆ ptDirtyRegion

arm_2d_region_list_item_t* arm_2d_scene_t::ptDirtyRegion

dirty region list for the scene

◆ fnScene

arm_2d_helper_draw_handler_t* arm_2d_scene_t::fnScene

the function pointer for the scene

◆ fnOnLoad

void(* arm_2d_scene_t::fnOnLoad) (arm_2d_scene_t *ptThis)

on load event handler

◆ fnAfterSwitch

void(* arm_2d_scene_t::fnAfterSwitch) (arm_2d_scene_t *ptThis)

after scene switching event handler

◆ fnOnBGStart

void(* arm_2d_scene_t::fnOnBGStart) (arm_2d_scene_t *ptThis)

on-start-drawing-background event handler

◆ fnOnBGComplete

void(* arm_2d_scene_t::fnOnBGComplete) (arm_2d_scene_t *ptThis)

on-complete-drawing-background event handler

◆ fnOnFrameStart

void(* arm_2d_scene_t::fnOnFrameStart) (arm_2d_scene_t *ptThis)

on-frame-start event handler

◆ fnOnFrameCPL

void(* arm_2d_scene_t::fnOnFrameCPL) (arm_2d_scene_t *ptThis)

on-frame-complete event handler

◆ fnBeforeSwitchOut

void(* arm_2d_scene_t::fnBeforeSwitchOut) (arm_2d_scene_t *ptThis)

before-scene-switch-out event handler

Note
We can use this event to initialize/generate the new(next) scene

◆ fnDepose

void(* arm_2d_scene_t::fnDepose) (arm_2d_scene_t *ptThis)

on-scene-depose event handler

Note
We use fnDepose to free the resources

◆ arm_2d_scene_before_scene_switching_evt_t

struct arm_2d_scene_before_scene_switching_evt_t

on low level render event

Data Fields
arm_2d_scene_before_scene_switching_handler_t * fnHandler event handler function
void * pTarget user attached target

◆ arm_2d_scene_player_t

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
struct arm_2d_scene_player_t.Benchmark Benchmark scene window

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 a flag to request using manual switching a flag to request cancel a manual switching a flag to request finishing a manual switching manual switching cancel a manual switching finish a manual switching indication of scene switching completion update the background of the current scene call the old scene frame complete event handler call the new scene frame complete event handler call the old scene Background complete event handler call the new scene Background complete event handler the state of the FSM used by runtime. scene player runtime the switching mode FSM state erase offset opacity of the cover the colour of the cover scene window a temp tile scene window for blur the switching configuration the coordinate offset for manual switching mode, used in erasing, sliding etc. the full length of the axis of switching the switching should finish in specified millisecond

struct arm_2d_scene_player_t.__unnamed193__ __unnamed__ < before-scene-switch-out event handler
Note
We can use this event to initialize/generate the new(next) scene

◆ arm_2d_list_item_param_t

struct arm_2d_list_item_param_t

runtime parameters passed to on-draw-list-item event handler

Data Fields
uint8_t bIsChecked: 1

is this item checked

uint8_t bIsSelected: 1

is this item seleteced

uint8_t chOpacity

opacity proposal

uint16_t hwRatio

other ratio proposal

◆ arm_2d_list_item_t

struct arm_2d_list_item_t

the list core item class

Public Member Functions

 ARM_PROTECTED (arm_2d_list_item_t *ptNext;) uint16_t hwID
 

Data Fields

union {
uint16_t hwAttribute
 
   struct {
uint16_t bIsEnabled: 1
 
uint16_t bIsVisible: 1
 
uint16_t bIsReadOnly: 1
 
uint16_t u4Alignment: 4
 
uint16_t __pad1__: 8
 
   } 
 
}; 
 
__arm_2d_list_core_tptListView
 
struct {
int8_t chPrevious
 
int8_t chNext
 
Padding
 
arm_2d_margin_t Margin
 
arm_2d_size_t tSize
 
uintptr_t pTarget
 
arm_2d_draw_list_item_handler_tfnOnDrawItem
 

Member Function Documentation

◆ ARM_PROTECTED()

arm_2d_list_item_t::ARM_PROTECTED ( arm_2d_list_item_t *ptNext;  )

the ID used by the list iterator

Field Documentation

◆ ptListView

__arm_2d_list_core_t* arm_2d_list_item_t::ptListView

the parent list core

◆ tSize

arm_2d_size_t arm_2d_list_item_t::tSize

the size of the item

◆ pTarget

uintptr_t arm_2d_list_item_t::pTarget

user specified object

◆ fnOnDrawItem

arm_2d_draw_list_item_handler_t* arm_2d_list_item_t::fnOnDrawItem

on-draw-list-view-item event handler

◆ __arm_2d_list_work_area_t

struct __arm_2d_list_work_area_t

the target working area for one list core item

Data Fields
arm_2d_list_item_t * ptItem

the target item

arm_2d_region_t tRegion

the target region on the list

arm_2d_list_item_param_t tParam

paramters for the target item

arm_2d_list_dir_t tDirection

list direction (only region calculator knows )

◆ __arm_2d_list_core_cfg_t

struct __arm_2d_list_core_cfg_t

list core configuration structure

Data Fields
arm_2d_size_t tListSize

the size of the list

__arm_2d_list_item_iterator * fnIterator

the item iterator

__arm_2d_list_region_calculator_t * fnCalculator

the region calculator

arm_2d_draw_list_item_handler_t * fnOnDrawListItemBackground

the On-Draw-List-Item-Background event handler

arm_2d_helper_draw_handler_t * fnOnDrawListBackground

the On-Draw-List-Background event handler

arm_2d_helper_draw_handler_t * fnOnDrawListCover

the On-Draw-List-Cover event handler

int32_t nTotalLength

the total length of the list in pixel, 0 means update later

arm_2d_list_item_t * ptItems

an optional pointer for items (array/list)

uint16_t hwItemSizeInByte

the size of the item (in byte)

uint16_t hwItemCount

the total number of items, 0 means update later

uint16_t hwSwitchingPeriodInMs

A constant period (in ms) for switching item, zero means using default value

uint16_t bDisableRingMode: 1

whether disable ring mode

uint16_t bDisableStatusCheck: 1

whether disable the item status

◆ __arm_2d_list_core_t

struct __arm_2d_list_core_t

the list core class

Public Member Functions

 ARM_PROTECTED (__arm_2d_list_core_cfg_t tCFG;) struct
 

Data Fields

 Runtime
 

Member Function Documentation

◆ ARM_PROTECTED()

__arm_2d_list_core_t::ARM_PROTECTED ( __arm_2d_list_core_cfg_t tCFG;  )
inline

< the target draw area

< the target tile for the list

< the working area

< indicate whether the region calcluator is initialized or not

< array iterator index

< array iterator

< iterator control block

< the target tile for list items

< time to run target distance

< timestamp used by animation

< list offset

< the start offset

< the target list offset

< item selection

< state used by list core task

< a flag to indicate whether the list is moving

< a flag to indicate whether a redraw is requested, this is a sticky flag

< reserved

< steps to move

< finish in ms

Field Documentation

◆ Runtime

__arm_2d_list_core_t::Runtime

list runtime

◆ arm_2d_helper_2d_copy_evt_t

struct arm_2d_helper_2d_copy_evt_t
Data Fields
arm_2d_helper_2d_copy_handler_t * fnHandler
void * pObj

◆ arm_2d_helper_dma_copy_evt_t

struct arm_2d_helper_dma_copy_evt_t
Data Fields
arm_2d_helper_dma_copy_handler_t * fnHandler
void * pObj

◆ arm_2d_helper_3fb_cfg_t

struct arm_2d_helper_3fb_cfg_t

configuration structure for the 3fb (direct mode) helper service

Data Fields
arm_2d_size_t tScreenSize the screen size
uint8_t chPixelBits the number of bits in one pixel
uintptr_t pnAddress[3] addresses of the 3 full-frame-buffer
arm_2d_helper_2d_copy_evt_t evtOn2DCopy
arm_2d_helper_dma_copy_evt_t evtOnDMACopy

◆ arm_2d_helper_3fb_t

struct arm_2d_helper_3fb_t

the control block of the 3FB (direct mode) service

Data Fields
struct arm_2d_helper_3fb_t.__unnamed212__ __unnamed__

< FB pointer for drawing FB pointer for flushing FB pointer of ready to flush FB pointer of ready to draw < semaphore for async access a flag to indicate the completion of a DMA copy

◆ arm_2d_pfb_t

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 u7ColourFormat: 7 colour format
uint32_t bIsNewFrame: 1 a flag to indicate the starting of a frame

◆ arm_2d_region_list_item_t

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

the next node in the internal list

struct arm_2d_region_list_item_t.__unnamed215__ __unnamed__
arm_2d_region_t tRegion the region

◆ arm_2d_helper_render_evt_t

struct arm_2d_helper_render_evt_t

low level render event

Data Fields
arm_2d_helper_render_handler_t * fnHandler event handler function
void * pTarget user attached target

◆ arm_2d_helper_before_flushing_evt_t

struct arm_2d_helper_before_flushing_evt_t

screen rotation event

Data Fields
arm_2d_helper_before_flushing_handler_t * fnHandler
void * pTarget

◆ arm_2d_helper_pfb_dependency_t

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
arm_2d_helper_before_flushing_evt_t evtBeforeFlushing event handler for screen rotation

◆ arm_2d_helper_pfb_cfg_t

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
struct arm_2d_helper_pfb_cfg_t.DirtyRegion DirtyRegion
arm_2d_helper_pfb_dependency_t Dependency user registered dependency

◆ arm_2d_helper_pfb_t

struct arm_2d_helper_pfb_t

the PFB helper control block

Data Fields
struct arm_2d_helper_pfb_t.__unnamed220__ __unnamed__ < user configuration

< A flag to indicate whether the first iteration was a dry run

struct arm_2d_helper_pfb_t.Statistics Statistics performance statistics

◆ arm_2d_helper_dirty_region_item_t

struct arm_2d_helper_dirty_region_item_t
Data Fields
arm_2d_helper_dirty_region_item_t * ptNext
arm_2d_helper_dirty_region_t * ptHelper
union arm_2d_helper_dirty_region_item_t.__unnamed228__ __unnamed__
uint8_t bForceToUseMinimalEnclosure: 1
uint8_t bSuspendUpdate: 1
uint8_t bIgnore: 1
uint8_t bOnlyUpdateMinimalEnclosure: 1
uint8_t chUpdateLifeCycle
uint16_t u16Key
arm_2d_region_t tRegionPatch

◆ arm_2d_helper_dirty_region_t

struct arm_2d_helper_dirty_region_t
Data Fields
arm_2d_region_list_item_t tDirtyRegion
arm_2d_region_list_item_t ** ppDirtyRegionList
arm_2d_helper_dirty_region_item_t * ptCurrent
uint8_t chUpdateLifeCycle
uint16_t __pad1__: 16
arm_2d_helper_dirty_region_item_t tDefaultItem

◆ arm_2d_helper_dirty_region_transform_t

struct arm_2d_helper_dirty_region_transform_t

the Transform helper control block

Data Fields
float fAngle
float fScale
arm_2d_helper_dirty_region_item_t tItem
struct arm_2d_helper_dirty_region_transform_t.__unnamed234__ __unnamed__

◆ arm_2d_helper_transform_t

struct arm_2d_helper_transform_t

the Transform helper control block

Note
Deprecated.
Data Fields
arm_2d_helper_dirty_region_t
float fAngle
float fScale
struct arm_2d_helper_transform_t.__unnamed238__ __unnamed__

◆ arm_2d_control_node_t

struct arm_2d_control_node_t

Public Member Functions

 ARM_PROTECTED (arm_2d_control_node_t *ptNext;arm_2d_control_node_t *ptParent;arm_2d_control_node_t *ptChildList;) arm_2d_region_t tRegion
 

◆ arm_2d_control_enumeration_policy_t

struct arm_2d_control_enumeration_policy_t

Data Fields

arm_2d_err_t(* fnInit )(arm_2d_control_enumerator_t *ptThis, const arm_2d_control_node_t *ptRoot)
 
arm_2d_err_t(* fnDepose )(arm_2d_control_enumerator_t *ptThis)
 
arm_2d_control_node_t *(* fnGetNextNode )(arm_2d_control_enumerator_t *ptThis)
 

◆ arm_2d_control_enumerator_t

struct arm_2d_control_enumerator_t

◆ arm_2d_char_descriptor_t

struct arm_2d_char_descriptor_t
Data Fields
arm_2d_tile_t tileChar
int16_t iAdvance
int16_t iBearingX
int16_t iBearingY
int8_t chCodeLength

◆ arm_2d_font_t

struct arm_2d_font_t
Data Fields
arm_2d_tile_t tileFont
arm_2d_size_t tCharSize CharSize.
uint32_t nCount Character count.
arm_2d_font_get_char_descriptor_handler_t * fnGetCharDescriptor On-Get-Char-Descriptor event handler.
arm_2d_font_draw_char_handler_t * fnDrawChar On-Draw-Char event handler.

◆ arm_2d_char_idx_t

struct arm_2d_char_idx_t
Data Fields
uint8_t chStartCode[4]
uint16_t hwCount
uint16_t hwOffset

◆ arm_2d_user_font_t

struct arm_2d_user_font_t

Public Member Functions

 implement (arm_2d_font_t)
 

Data Fields

uint16_t hwCount
 
uint16_t hwDefaultCharIndex
 
arm_2d_char_idx_t tLookUpTable []
 

◆ arm_2d_a1_font_t

struct arm_2d_a1_font_t

Public Member Functions

 implement (arm_2d_font_t)
 

Data Fields

uint32_t nOffset
 Character offset. More...
 

Field Documentation

◆ nOffset

uint32_t arm_2d_a1_font_t::nOffset

Character offset.

◆ arm_2d_helper_film_t

struct arm_2d_helper_film_t

a helper class to represent a GIF-like resource

Public Member Functions

 implement (arm_2d_tile_t)
 

Data Fields

uint16_t hwColumn
 
uint16_t hwFrameNum
 
uint16_t hwPeriodPerFrame
 
uint16_t hwFrameIndex
 

Member Function Documentation

◆ implement()

arm_2d_helper_film_t::implement ( arm_2d_tile_t  )

derived from arm_2d_tile_t

Field Documentation

◆ hwColumn

uint16_t arm_2d_helper_film_t::hwColumn

number of frames per row in a sprite tile

◆ hwFrameNum

uint16_t arm_2d_helper_film_t::hwFrameNum

the total number of frames

◆ hwPeriodPerFrame

uint16_t arm_2d_helper_film_t::hwPeriodPerFrame

the period per frame (optional, used as a reference)

◆ hwFrameIndex

uint16_t arm_2d_helper_film_t::hwFrameIndex

the frame index used at runtime

◆ arm_2d_helper_pi_slider_cfg_t

struct arm_2d_helper_pi_slider_cfg_t

the configuration structure for the Proportional-Integral Control

Data Fields
int32_t nInterval
float fProportion
float fIntegration

◆ arm_2d_helper_pi_slider_t

struct arm_2d_helper_pi_slider_t

a helper class for Proportional-Integral Control

Data Fields
struct arm_2d_helper_pi_slider_t.__unnamed247__ __unnamed__

◆ __arm_2d_fifo_reader_pointer

struct __arm_2d_fifo_reader_pointer
Data Fields
uint16_t hwPointer
uint16_t hwDataAvailable

◆ arm_2d_byte_fifo_t

struct arm_2d_byte_fifo_t

◆ __arm_2d_helper_scene_switch_t.Feature

struct __arm_2d_helper_scene_switch_t.Feature
Data Fields
uint8_t chMode the switch visual effect
uint8_t bIgnoreOldSceneBG: 1 when set, ignore the background of the old scene
uint8_t bIgnoreOldScene: 1 when set, ignore the old scene
uint8_t bIgnoreNewSceneBG: 1 when set, ignore the background of the new scene
uint8_t bIgnoreNewScene: 1 when set, ignore the new scene
uint8_t u2DefaultBG: 2 the default background
uint8_t bBlurBG: 1 when set, enable blurring when possible

◆ arm_2d_scene_t.__unnamed186__

struct arm_2d_scene_t.__unnamed186__

< next scene

Data Fields
arm_2d_scene_t * ptNext
struct arm_2d_scene_t.__unnamed186__.__unnamed190__ __unnamed__

◆ arm_2d_scene_t.__unnamed186__.__unnamed190__

struct arm_2d_scene_t.__unnamed186__.__unnamed190__
Data Fields
uint8_t bLoaded: 1

◆ arm_2d_scene_t.__unnamed188__

struct arm_2d_scene_t.__unnamed188__
Data Fields
uint8_t bOnSwitchingIgnoreBG: 1 ignore background during switching period
uint8_t bOnSwitchingIgnoreScene: 1 ignore forground during switching period
uint8_t __pad1__: 3
uint8_t bUseDirtyRegionHelper: 1 indicate whether use the built-in dirty region helper.

◆ arm_2d_scene_player_t.Benchmark

struct arm_2d_scene_player_t.Benchmark
Data Fields
uint32_t wMin
uint32_t wMax
uint64_t dwTotal
uint64_t dwRenderTotal
uint32_t wAverage
float fCPUUsage
uint16_t hwIterations
uint16_t hwFrameCounter
uint32_t wLCDLatency
int64_t lTimestamp

◆ arm_2d_scene_player_t.__unnamed193__

struct arm_2d_scene_player_t.__unnamed193__

< before-scene-switch-out event handler

Note
We can use this event to initialize/generate the new(next) scene
Data Fields
struct arm_2d_scene_player_t.__unnamed193__.SceneFIFO SceneFIFO
struct arm_2d_scene_player_t.__unnamed193__.Runtime Runtime
struct arm_2d_scene_player_t.__unnamed193__.Switch Switch
struct arm_2d_scene_player_t.__unnamed193__.Events Events

◆ arm_2d_scene_player_t.__unnamed193__.SceneFIFO

struct arm_2d_scene_player_t.__unnamed193__.SceneFIFO
Data Fields
arm_2d_scene_t * ptHead
arm_2d_scene_t * ptTail

◆ arm_2d_scene_player_t.__unnamed193__.Runtime

struct arm_2d_scene_player_t.__unnamed193__.Runtime
Data Fields
uint8_t bNextSceneReq: 1
uint8_t bManualSwitchReq: 1
uint8_t bCancelSwitchReq: 1
uint8_t bFinishManualSwitchReq: 1
uint8_t bManualSwitch: 1
uint8_t bCancelSwitch: 1
uint8_t bFinishManualSwitch: 1
uint8_t bFirstFrameAfterSwitch: 1
uint8_t __pad1__: 4
uint8_t bSwitchCPL: 1
uint8_t bUpdateBG: 1
uint8_t __pad2__: 2
uint8_t bCallOldSceneFrameCPL: 1
uint8_t bCallNewSceneFrameCPL: 1
uint8_t bCallOldSceneBGCPL: 1
uint8_t bCallNewSceneBGCPL: 1
uint8_t chState

◆ arm_2d_scene_player_t.__unnamed193__.Switch

struct arm_2d_scene_player_t.__unnamed193__.Switch
Data Fields
arm_2d_scene_switch_mode_t * ptMode
uint8_t chState
int16_t iOffset
union arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__ __unnamed__
__arm_2d_helper_scene_switch_t tConfig
arm_2d_location_t tTouchPointer
int16_t iFullLength
uint16_t hwPeriod
int64_t lTimeStamp

◆ arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__

◆ arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Fade

struct arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Fade
Data Fields
uint8_t chOpacity
bool bIsFadeBlack

◆ arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Erase

struct arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Erase
Data Fields
arm_2d_tile_t tSceneWindow
arm_2d_tile_t tTemp

◆ arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.FlyIn

struct arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.FlyIn
Data Fields
arm_2d_tile_t tSceneWindow
arm_2d_filter_iir_blur_descriptor_t tBlurOP

◆ arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Slide

struct arm_2d_scene_player_t.__unnamed193__.Switch.__unnamed199__.Slide
Data Fields
arm_2d_tile_t tSceneWindow

◆ arm_2d_scene_player_t.__unnamed193__.Events

struct arm_2d_scene_player_t.__unnamed193__.Events
Data Fields
arm_2d_scene_before_scene_switching_evt_t evtBeforeSwitching

◆ arm_2d_list_item_t.__unnamed205__

union arm_2d_list_item_t.__unnamed205__
Data Fields
uint16_t hwAttribute

16bit attribute value

struct arm_2d_list_item_t.__unnamed205__.__unnamed208__ __unnamed__

◆ arm_2d_list_item_t.__unnamed205__.__unnamed208__

struct arm_2d_list_item_t.__unnamed205__.__unnamed208__
Data Fields
uint16_t bIsEnabled: 1

whether this item is enabled or not

uint16_t bIsVisible: 1

visibility

uint16_t bIsReadOnly: 1

indicate whether this item is readonly or not

uint16_t u4Alignment: 4

alignment: see ARM_2D_ALIGN_xxxx

uint16_t __pad1__: 8

reserved

◆ arm_2d_list_item_t.Padding

struct arm_2d_list_item_t.Padding
Data Fields
int8_t chPrevious

padding between this item and the previous one

int8_t chNext

padding between this item and the next one

◆ arm_2d_helper_3fb_t.__unnamed212__

struct arm_2d_helper_3fb_t.__unnamed212__

< FB pointer for drawing FB pointer for flushing FB pointer of ready to flush FB pointer of ready to draw < semaphore for async access a flag to indicate the completion of a DMA copy

Data Fields
arm_2d_helper_3fb_cfg_t tCFG
struct arm_2d_helper_3fb_t.__unnamed212__.Runtime Runtime

◆ arm_2d_helper_3fb_t.__unnamed212__.Runtime

struct arm_2d_helper_3fb_t.__unnamed212__.Runtime
Data Fields
uint8_t u2Drawing: 2
uint8_t u2Flushing: 2
uint8_t u2ReadyToFlush: 2
uint8_t u2ReadyToDraw: 2
uint8_t tState[3]
uintptr_t tSemaphore
bool bFBCopyComplete

◆ arm_2d_region_list_item_t.__unnamed215__

struct arm_2d_region_list_item_t.__unnamed215__
Data Fields
struct arm_2d_region_list_item_t * ptInternalNext

◆ arm_2d_helper_pfb_dependency_t.Navigation

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

◆ arm_2d_helper_pfb_cfg_t.FrameBuffer

struct arm_2d_helper_pfb_cfg_t.FrameBuffer
Data Fields
arm_2d_pfb_t * ptPFBs PFB blocks for the internal PFB pool.
arm_2d_size_t tFrameSize the size of the frame
uint32_t u24BufferSize: 24 the buffer size
uint32_t u7ColourFormat: 7 the colour format
uint32_t u8PFBNum: 8 the number of PFB
uint32_t bDoNOTUpdateDefaultFrameBuffer: 1 A flag to disable automatically default-framebuffer-registration.
uint32_t bDisableDynamicFPBSize: 1 A flag to disable resize of the PFB block.
uint32_t bSwapRGB16: 1 A flag to enable swapping high and low bytes of an RGB16 pixel.
uint32_t bDebugDirtyRegions: 1 A flag to show dirty regions on screen for debug.
uint32_t __pad1__: 10
uint32_t u3PixelWidthAlign: 3 Pixel alignment in Width for dirty region (2^n)
uint32_t u3PixelHeightAlign: 3 Pixel alignment in Height for dirty region (2^n)
uint32_t u4PoolReserve: 4 reserve specific number of PFB for other helper services

◆ arm_2d_helper_pfb_cfg_t.DirtyRegion

struct arm_2d_helper_pfb_cfg_t.DirtyRegion
Data Fields
arm_2d_region_list_item_t * ptRegions dirty region list item for internal pool
uint8_t chCount number of dirty region list items

◆ arm_2d_helper_pfb_t.__unnamed220__

struct arm_2d_helper_pfb_t.__unnamed220__

< user configuration

< A flag to indicate whether the first iteration was a dry run

Data Fields
arm_2d_helper_pfb_cfg_t tCFG
struct arm_2d_helper_pfb_t.__unnamed220__.Adapter Adapter

◆ arm_2d_helper_pfb_t.__unnamed220__.Adapter

struct arm_2d_helper_pfb_t.__unnamed220__.Adapter
Data Fields
arm_2d_location_t tScanOffset
arm_2d_region_t tTargetRegion
arm_2d_region_list_item_t * ptDirtyRegion
struct arm_2d_helper_pfb_t.__unnamed220__.Adapter.OptimizedDirtyRegions OptimizedDirtyRegions
arm_2d_tile_t tPFBTile
arm_2d_size_t tFrameSize
uint32_t wPFBPixelCount
uint8_t chPT
uint8_t chFreePFBCount
struct arm_2d_helper_pfb_t.__unnamed220__.Adapter.__unnamed225__ __unnamed__
arm_2d_colour_t tCanvas
uintptr_t pFPBPoolAvailable
arm_2d_pfb_t * ptCurrent
arm_2d_pfb_t * ptFreeList
arm_2d_pfb_t * ptFlushing
struct arm_2d_helper_pfb_t.__unnamed220__.Adapter.FlushFIFO FlushFIFO
arm_2d_tile_t * ptFrameBuffer

◆ arm_2d_helper_pfb_t.__unnamed220__.Adapter.OptimizedDirtyRegions

struct arm_2d_helper_pfb_t.__unnamed220__.Adapter.OptimizedDirtyRegions
Data Fields
arm_2d_region_list_item_t * ptWorkingList
arm_2d_region_list_item_t * ptOriginalList
arm_2d_region_list_item_t * ptCandidateList
arm_2d_region_list_item_t * ptFreeList
arm_2d_region_list_item_t tWorkingItem
int16_t iFreeCount

◆ arm_2d_helper_pfb_t.__unnamed220__.Adapter.__unnamed225__

struct arm_2d_helper_pfb_t.__unnamed220__.Adapter.__unnamed225__
Data Fields
uint16_t bIsDirtyRegionOptimizationEnabled: 1
uint16_t bEnableDirtyRegionOptimizationRequest: 1
uint16_t bDisableDirtyRegionOptimizationRequest: 1
uint16_t bEncounterDynamicDirtyRegion: 1
uint16_t bFailedToOptimizeDirtyRegion: 1
uint16_t bIsUsingOptimizedDirtyRegionList: 1
uint16_t bIsNewFrame: 1
uint16_t bIgnoreCanvasColour: 1
uint16_t bIgnoreLowLevelFlush: 1
uint16_t bHideNavigationLayer: 1
uint16_t bIsDryRun: 1
uint16_t bNoAdditionalDirtyRegionList: 1
uint16_t bFirstIteration: 1
uint16_t bIsRegionChanged: 1

◆ arm_2d_helper_pfb_t.__unnamed220__.Adapter.FlushFIFO

struct arm_2d_helper_pfb_t.__unnamed220__.Adapter.FlushFIFO
Data Fields
arm_2d_pfb_t * ptHead
arm_2d_pfb_t * ptTail

◆ arm_2d_helper_pfb_t.Statistics

struct arm_2d_helper_pfb_t.Statistics
Data Fields
int64_t lTimestamp PLEASE DO NOT USE.
int32_t nTotalCycle cycles used by drawing
int32_t nRenderingCycle cycles used in LCD flushing

◆ arm_2d_helper_dirty_region_item_t.__unnamed228__

union arm_2d_helper_dirty_region_item_t.__unnamed228__

◆ arm_2d_helper_dirty_region_item_t.__unnamed228__.__unnamed230__

struct arm_2d_helper_dirty_region_item_t.__unnamed228__.__unnamed230__

◆ arm_2d_helper_dirty_region_item_t.__unnamed228__.__unnamed230__.__unnamed232__

union arm_2d_helper_dirty_region_item_t.__unnamed228__.__unnamed230__.__unnamed232__
Data Fields
arm_2d_region_t tOldRegion
arm_2d_region_t tEnclosureArea

◆ arm_2d_helper_dirty_region_transform_t.__unnamed234__

struct arm_2d_helper_dirty_region_transform_t.__unnamed234__

◆ arm_2d_helper_dirty_region_transform_t.__unnamed234__.Angle

struct arm_2d_helper_dirty_region_transform_t.__unnamed234__.Angle
Data Fields
float fValue
float fStep

◆ arm_2d_helper_dirty_region_transform_t.__unnamed234__.Scale

struct arm_2d_helper_dirty_region_transform_t.__unnamed234__.Scale
Data Fields
float fValue
float fStep

◆ arm_2d_helper_transform_t.__unnamed238__

struct arm_2d_helper_transform_t.__unnamed238__
Data Fields
arm_2d_op_t * ptTransformOP
struct arm_2d_helper_transform_t.__unnamed238__.Angle Angle
struct arm_2d_helper_transform_t.__unnamed238__.Scale Scale
bool bNeedUpdate

◆ arm_2d_helper_transform_t.__unnamed238__.Angle

struct arm_2d_helper_transform_t.__unnamed238__.Angle
Data Fields
float fValue
float fStep

◆ arm_2d_helper_transform_t.__unnamed238__.Scale

struct arm_2d_helper_transform_t.__unnamed238__.Scale
Data Fields
float fValue
float fStep

◆ arm_2d_control_enumerator_t.__unnamed242__

union arm_2d_control_enumerator_t.__unnamed242__

◆ arm_2d_control_enumerator_t.__unnamed242__.Preorder

struct arm_2d_control_enumerator_t.__unnamed242__.Preorder
Data Fields
bool bFirstNode

◆ arm_2d_control_enumerator_t.__unnamed242__.BottomUp

struct arm_2d_control_enumerator_t.__unnamed242__.BottomUp
Data Fields
bool bFirstNode

◆ arm_2d_control_enumerator_t.__unnamed242__.Postorder

struct arm_2d_control_enumerator_t.__unnamed242__.Postorder
Data Fields
uint8_t chPTState

◆ arm_2d_helper_pi_slider_t.__unnamed247__

struct arm_2d_helper_pi_slider_t.__unnamed247__
Data Fields
arm_2d_helper_pi_slider_cfg_t tCFG
int64_t lTimestamp
int32_t nTimeResidual
float fCurrent
float fOP

Macro Definition Documentation

◆ arm_2d_scene_player_register_on_draw_navigation_event_handler

#define arm_2d_scene_player_register_on_draw_navigation_event_handler (   __SCENE_PLAYER_PTR,
  __DRAW_HANDLER,
  __USER_TARGET_PTR,
  ... 
)
Value:
(__SCENE_PLAYER_PTR), \
(__DRAW_HANDLER), \
(__USER_TARGET_PTR), \
(NULL,##__VA_ARGS__))

register / update the evtOnDrawNavigation event handler. You can use this event to draw an ALWAY-TOP navigation bar or title during switching period.

Parameters
[in]__DISP_ADAPTER_PTRthe target scene player
[in]__DRAW_HANDLERthe event handler to draw the navigation bar and/or titles
[in]__USER_TARGET_PTRthe 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.
Note
if the optional dirty region list is omitted and the normal scene doesn't cover the region of the content in the navigation layer, you won't see the content.
Returns
arm_2d_err_t the operation result

◆ arm_2d_scene_player_set_switching_mode

#define arm_2d_scene_player_set_switching_mode (   __SCENE_PLAYER_PTR,
  __SWITCH_MODE,
  ... 
)
Value:
&(__SWITCH_MODE), \
(0,##__VA_ARGS__))

configure the scene switching mode

Parameters
[in]__DISP_ADAPTER_PTRthe target scene player
[in]__SWITCH_MODEa switching mode object
[in]...an optional configurations for the switching

◆ arm_2d_scene_player_register_before_switching_event_handler

#define arm_2d_scene_player_register_before_switching_event_handler (   __SCENE_PLAYER_PTR,
  __HANDLER,
  ... 
)
Value:
(__SCENE_PLAYER_PTR), \
(__HANDLER), \
(NULL,##__VA_ARGS__))

register / update the evtBeforeSwitching event handler. You can use this event to prepare next scenes.

Parameters
[in]ptThisthe target scene player
[in]fnHandlerthe event handler
[in]...optional, the address of an user specified object.
Returns
arm_2d_err_t the operation result

◆ ARM_2D_HELPER_PFB_INIT

#define ARM_2D_HELPER_PFB_INIT (   __CB_ADDR,
  __SCREEN_WIDTH,
  __SCREEN_HEIGHT,
  __PIXEL_TYPE,
  __COLOUR_FORMAT,
  __PFB_WIDTH,
  __PFB_HEIGHT,
  __PFB_NUM,
  ... 
)
Value:
({ \
ARM_SECTION(".bss.noinit.arm_2d_pfb_pool") \
static struct { \
arm_2d_pfb_t tFPB; \
__ALIGNED(4) \
__PIXEL_TYPE tBuffer[(__PFB_WIDTH) * (__PFB_HEIGHT)]; \
} s_tPFBs[__PFB_NUM]; \
\
arm_2d_helper_pfb_cfg_t tCFG = { \
.tDisplayArea.tSize = { \
.iWidth = (__SCREEN_WIDTH), \
.iHeight = (__SCREEN_HEIGHT), \
}, \
\
.FrameBuffer.ptPFBs = (arm_2d_pfb_t *)s_tPFBs, \
.FrameBuffer.tFrameSize = { \
.iWidth = (__PFB_WIDTH), \
.iHeight = (__PFB_HEIGHT), \
}, \
.FrameBuffer.u24BufferSize = sizeof(s_tPFBs[0].tBuffer), \
.FrameBuffer.u7ColourFormat = (__COLOUR_FORMAT), \
.FrameBuffer.u8PFBNum = dimof(s_tPFBs), \
.Dependency = \
__VA_ARGS__ \
}; \
arm_2d_helper_pfb_init((__CB_ADDR), &tCFG); \
})

a macro wrapper in uppercase to help initialising PFB service

Parameters
[in]__CB_ADDRthe address of the arm_2d_helper_pfb_t object
[in]__SCREEN_WIDTHthe width of the screen
[in]__SCREEN_HEIGHTthe hight of the screen
[in]__PIXEL_TYPEthe integer type of the pixel, i.e. uint8_t, uint16_t, uint32_t
[in]__COLOUR_FORMATthe screen colour format, i.e. ARM_2D_COLOUR_CCCN888, ARM_2D_COLOUR_RGB565 etc.
[in]__WIDTHthe width of the PFB block
[in]__HEIGHTthe height of the PFB block
Note
For the same number of pixels in a PFB block, please priority the width over height, for example, 240 * 1 is better than 30 * 8
Parameters
[in]__PFB_NUMthe number of PFB blocks in the built-in PFB pool.
[in]...a code block to add additional initializer, see example below:
Returns
arm_2d_err_t the result of the initialisation process
static ARM_NOINIT arm_2d_helper_pfb_t s_tExamplePFB;
...
// initialise FPB helper
&s_tExamplePFB, // FPB Helper object
__GLCD_CFG_SCEEN_WIDTH__, // screen width
__GLCD_CFG_SCEEN_HEIGHT__, // screen height
uint16_t, // colour date type
ARM_2D_COLOUR_RGB565, // colour format
240, // PFB block width
1, // PFB block height
1, // number of PFB in the PFB pool
{
.evtOnLowLevelRendering = {
// callback for low level rendering
.fnHandler = &__pfb_render_handler,
},
.evtOnDrawing = {
// callback for drawing GUI
.fnHandler = &__pfb_draw_background_handler,
},
},
//.FrameBuffer.bSwapRGB16 = true,
) < 0) {
//! error detected
assert(false);
}

◆ ARM_2D_HELPER_PFB_UPDATE_ON_DRAW_HANDLER

#define ARM_2D_HELPER_PFB_UPDATE_ON_DRAW_HANDLER (   __CB_ADDR,
  __HANDLER,
  ... 
)
Value:
/* An optional target address */ \
arm_2d_helper_pfb_update_dependency((__CB_ADDR), \
.evtOnDrawing = { \
.fnHandler = (__HANDLER), \
.pTarget = (NULL,##__VA_ARGS__),\
}, \
}})

a macro wrapper to update the evtOnDrawring event handler

Parameters
[in]__CB_ADDRthe address of the arm_2d_helper_pfb_t object
[in]__HANDLERthe new handler
[in]...[Optional] an address (of user defined structure) passed to the event handler.
Returns
arm_2d_err_t the process result

◆ __IMPL_ARM_2D_REGION_LIST

#define __IMPL_ARM_2D_REGION_LIST (   __NAME,
  ... 
)
Value:
enum { \
__NAME##_offset = __COUNTER__, \
}; \
__VA_ARGS__ \
arm_2d_region_list_item_t __NAME[] = {

◆ __ADD_REGION_TO_LIST

#define __ADD_REGION_TO_LIST (   __NAME,
  ... 
)
Value:
{ \
.ptNext = (arm_2d_region_list_item_t *) \
&(__NAME[__COUNTER__ - __NAME##_offset]), \
.tRegion = { \
__VA_ARGS__ \
}, \
}

◆ __ADD_LAST_REGION_TO_LIST

#define __ADD_LAST_REGION_TO_LIST (   __NAME,
  ... 
)
Value:
{ \
.ptNext = NULL, \
.tRegion = { \
__VA_ARGS__ \
}, \
}

◆ IMPL_PFB_ON_LOW_LV_RENDERING

#define IMPL_PFB_ON_LOW_LV_RENDERING (   __NAME)
Value:
void __NAME(void *pTarget, \
const arm_2d_pfb_t *ptPFB, \
bool bIsNewFrame)

◆ IMPL_PFB_BEFORE_FLUSHING

#define IMPL_PFB_BEFORE_FLUSHING (   __NAME)
Value:
bool __NAME(void *pTarget, \
arm_2d_pfb_t *ptOrigin, \
arm_2d_pfb_t *ptScratch)

◆ init_arm_2d_helper_pfb

#define init_arm_2d_helper_pfb (   __CB_ADDR,
  __SCREEN_WIDTH,
  __SCREEN_HEIGHT,
  __PIXEL_TYPE,
  __COLOUR_FORMAT,
  __WIDTH,
  __HEIGHT,
  __PFB_NUM,
  ... 
)
Value:
__CB_ADDR, \
__SCREEN_WIDTH, \
__SCREEN_HEIGHT, \
__PIXEL_TYPE, \
__COLOUR_FORMAT, \
__WIDTH, \
__HEIGHT, \
__PFB_NUM, \
##__VA_ARGS__ \
)

a macro wrapper in lowercase to help initialising PFB service

Parameters
[in]__CB_ADDRthe address of the arm_2d_helper_pfb_t object
[in]__SCREEN_WIDTHthe width of the screen
[in]__SCREEN_HEIGHTthe hight of the screen
[in]__PIXEL_TYPEthe integer type of the pixel, i.e. uint8_t, uint16_t, uint32_t
[in]__COLOUR_FORMATthe screen colour format, i.e. ARM_2D_COLOUR_CCCN888, ARM_2D_COLOUR_RGB565 etc.
[in]__WIDTHthe width of the PFB block
[in]__HEIGHTthe height of the PFB block
Note
For the same number of pixels in a PFB block, please priority the width over height, for example, 240 * 1 is better than 30 * 8
Parameters
[in]__PFB_NUMthe number of PFB blocks in the built-in PFB pool.
[in]...a code block to add additional initializer, see example below:
Returns
arm_2d_err_t the result of the initialisation process
static ARM_NOINIT arm_2d_helper_pfb_t s_tExamplePFB;
...
// initialise FPB helper
&s_tExamplePFB, // FPB Helper object
__GLCD_CFG_SCEEN_WIDTH__, // screen width
__GLCD_CFG_SCEEN_HEIGHT__, // screen height
uint16_t, // colour date type
ARM_2D_COLOUR_RGB565, // colour format
240, // PFB block width
1, // PFB block height
1, // number of PFB in the PFB pool
{
.evtOnLowLevelRendering = {
// callback for low level rendering
.fnHandler = &__pfb_render_handler,
},
.evtOnDrawing = {
// callback for drawing GUI
.fnHandler = &__pfb_draw_background_handler,
},
},
//.FrameBuffer.bSwapRGB16 = true,
) < 0) {
//! error detected
assert(false);
}

◆ update_arm_2d_helper_pfb_on_draw_handler

#define update_arm_2d_helper_pfb_on_draw_handler (   __CB_ADDR,
  __HANDLER,
  ... 
)
Value:
/* An optional target address */ \
ARM_2D_HELPER_PFB_UPDATE_ON_DRAW_HANDLER( \
(__CB_ADDR), \
(__HANDLER),##__VA_ARGRS__)

a macro wrapper to update the evtOnDrawring event handler

Parameters
[in]__CB_ADDRthe address of the arm_2d_helper_pfb_t object
[in]__HANDLERthe new handler
[in]...[Optional] an address (of user defined structure) passed to the event handler.
Returns
arm_2d_err_t the process result

◆ arm_2d_helper_pfb_report_rendering_complete

#define arm_2d_helper_pfb_report_rendering_complete (   __PFB_HELPER_PTR,
  ... 
)
Value:
(NULL,##__VA_ARGS__))

tell PFB helper that a low level LCD flushing work is complete

Note
This function is THREAD-SAFE, You can call this function asynchronously, e.g.
  • A ISR to indicate DMA-transfer complete event or
  • A different Thread
Parameters
[in]ptThisthe PFB helper control block
[in]...the used PFB block.
Note
please do not use this parameter, it is only kept for backward compatability.

◆ __arm_2d_helper_dirty_region_update_dirty_regions3

#define __arm_2d_helper_dirty_region_update_dirty_regions3 (   __helper_ptr,
  __tile_ptr,
  __visible_area_ptr,
  __new_region_ptr,
  __is_new_frame 
)
Value:
(__helper_ptr), \
(__tile_ptr), \
(__visible_area_ptr), \
(__new_region_ptr))

update a specified new region while erase the previous region

Parameters
[in]ptThisthe target helper
[in]ptTargetTilethe target tile to draw content
[in]ptVisibleAreaa visible region in the target tile used to clip the ptNewRegion, NULL means no clipping.
[in]ptNewRegionthe new region to update, NULL means nothing to update
[in]bIsNewFrameunused, keep for backward compatibility

◆ __arm_2d_helper_dirty_region_update_dirty_regions1

#define __arm_2d_helper_dirty_region_update_dirty_regions1 (   __helper_ptr,
  __tile_ptr,
  __new_region_ptr 
)
Value:
(__helper_ptr), \
(__tile_ptr), \
NULL, \
(__new_region_ptr))

update a specified new region while erase the previous region

Parameters
[in]ptThisthe target helper
[in]ptTargetTilethe target tile to draw content
[in]ptNewRegionthe new region to update, NULL means nothing to update

◆ arm_2d_helper_dirty_region_update_dirty_regions

#define arm_2d_helper_dirty_region_update_dirty_regions (   __helper_ptr,
  __tile_ptr,
  ... 
)
Value:
__ARM_VA_NUM_ARGS(__VA_ARGS__))((__helper_ptr), \
(__tile_ptr) \
,##__VA_ARGS__)

update a specified new region while erase the previous region

Parameters
[in]__helper_ptrthe target helper
[in]__tile_ptrthe target tile to draw content
[in]...optional parameters, and the following combinations are valid: a. new region ptr b. the canvas ptr and the new region ptr c. the canvas ptr, the new region ptr and a reserved option (bIsNewFrame)

◆ ARM_CONTROL_ENUMERATE

#define ARM_CONTROL_ENUMERATE (   __ROOT,
  __ITEM_NAME,
  __POLICY 
)
Value:
for ( \
*ARM_2D_SAFE_NAME(ptPointer) = NULL; \
(({ \
arm_2d_helper_control_enum_init( \
&ARM_2D_SAFE_NAME(tEnum), \
&(ARM_2D_CONTROL_ENUMERATION_POLICY_##__POLICY), \
(__ROOT)); \
ARM_2D_SAFE_NAME(ptPointer)++; \
}) == NULL); \
({ \
arm_2d_helper_control_enum_depose(&ARM_2D_SAFE_NAME(tEnum)); \
})) for ( \
arm_2d_control_node_t *(__ITEM_NAME) = NULL; \
(NULL != ((__ITEM_NAME) = arm_2d_helper_control_enum_get_next_node( \
&ARM_2D_SAFE_NAME(tEnum))) \
); \
)

◆ __arm_print_banner3

#define __arm_print_banner3 (   __STR,
  __REGION,
  __FONT_PTR 
)
Value:
do { \
if (NULL != (__FONT_PTR)) { \
arm_lcd_text_set_font((const arm_2d_font_t *)(__FONT_PTR)); \
} \
arm_2d_region_t ARM_2D_SAFE_NAME(tTargetRegion) = (__REGION); \
arm_2d_align_centre( \
ARM_2D_SAFE_NAME(tTargetRegion), \
arm_lcd_get_string_line_box((__STR),(__FONT_PTR))) {\
arm_lcd_text_set_draw_region(&__centre_region); \
arm_lcd_puts(__STR); \
} \
} while(0)

◆ __arm_print_banner1

#define __arm_print_banner1 (   __STR)
Value:
do { \
arm_2d_tile_t *ARM_2D_SAFE_NAME(ptTile) \
arm_2d_canvas(ARM_2D_SAFE_NAME(ptTile), __banner_canvas) { \
__arm_print_banner3(__STR, __banner_canvas, NULL); \
} \
} while(0)

◆ arm_print_banner

#define arm_print_banner (   ...)
Value:
ARM_CONNECT2( __arm_print_banner, \
__ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__)

◆ arm_lcd_get_string_line_box

#define arm_lcd_get_string_line_box (   __STR,
  ... 
)
Value:
__arm_lcd_get_string_line_box( \
(__STR), \
(const arm_2d_font_t *)(NULL, ##__VA_ARGS__))

◆ IMPL_FONT_DRAW_CHAR

#define IMPL_FONT_DRAW_CHAR (   __NAME)
Value:
arm_fsm_rt_t __NAME(const arm_2d_tile_t *ptTile, \
const arm_2d_region_t *ptRegion, \
const arm_2d_font_t *ptFont, \
arm_2d_tile_t *ptileChar, \
COLOUR_INT tForeColour, \
uint_fast8_t chOpacity, \
float fScale)

◆ IMPL_FONT_GET_CHAR_DESCRIPTOR

#define IMPL_FONT_GET_CHAR_DESCRIPTOR (   __NAME)
Value:
const arm_2d_font_t *ptFont, \
arm_2d_char_descriptor_t *ptDescriptor, \
uint8_t *pchCharCode)

◆ arm_2d_helper_is_time_out

#define arm_2d_helper_is_time_out (   __ms,
  ... 
)
Value:
({ static int64_t arm_2d_safe_name(s_lTimestamp); \
__arm_2d_helper_is_time_out(arm_2d_helper_convert_ms_to_ticks(__ms), \
(&arm_2d_safe_name(s_lTimestamp),##__VA_ARGS__));})

set an alarm with given period and check the status

Parameters
[in]__msa time period in millisecond
[in]...an optional timestamp holder
Returns
bool whether it is timeout

◆ arm_2d_helper_time_elapsed

#define arm_2d_helper_time_elapsed (   __timestamp_ptr)

◆ arm_2d_helper_time_liner_slider

#define arm_2d_helper_time_liner_slider (   __from,
  __to,
  __ms,
  __stroke_ptr,
  ... 
)
Value:
({static int64_t arm_2d_safe_name(s_lTimestamp); \
__arm_2d_helper_time_liner_slider((__from), \
(__to), \
(__stroke_ptr), \
(&arm_2d_safe_name(s_lTimestamp),##__VA_ARGS__));})

calculate the stroke of a liner slider based on time

Parameters
[in]__fromthe start of the slider
[in]__tothe end of the slider
[in]__msa given period (ms) in which the slider should finish the whole stroke
[out]__stroke_ptrthe 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.
Return values
truethe slider has finished the whole stroke
falsethe slider hasn't reach the target end

◆ arm_2d_helper_time_cos_slider

#define arm_2d_helper_time_cos_slider (   __from,
  __to,
  __ms,
  __phase,
  __stroke_ptr,
  ... 
)
Value:
({static int64_t arm_2d_safe_name(s_lTimestamp); \
__arm_2d_helper_time_cos_slider((__from), \
(__to), \
(__phase), \
(__stroke_ptr), \
(&arm_2d_safe_name(s_lTimestamp),##__VA_ARGS__));})

calculate the stroke of a cosine slider based on time

Parameters
[in]__fromthe start of the slider
[in]__tothe end of the slider
[in]__msa given period (ms) in which the slider should finish the whole stroke
[in]__phasethe phase offset
[out]__stroke_ptrthe 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.
Return values
truethe slider has finished the whole stroke
falsethe slider hasn't reach the target end

◆ arm_2d_helper_time_half_cos_slider

#define arm_2d_helper_time_half_cos_slider (   __from,
  __to,
  __ms,
  __stroke_ptr,
  ... 
)
Value:
({static int64_t arm_2d_safe_name(s_lTimestamp); \
__arm_2d_helper_time_half_cos_slider((__from), \
(__to), \
(__stroke_ptr), \
(&arm_2d_safe_name(s_lTimestamp),##__VA_ARGS__));})

calculate the stroke of a cosine slider(0~pi) based on time

Parameters
[in]__fromthe start of the slider
[in]__tothe end of the slider
[in]__msa given period (ms) in which the slider should finish the whole stroke
[out]__stroke_ptrthe 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.
Return values
truethe slider has finished the whole stroke
falsethe slider hasn't reach the target end

◆ impl_film

#define impl_film (   __sprites_tile,
  __width,
  __height,
  __column,
  __frame_count,
  __period 
)
Value:
{ \
.use_as__arm_2d_tile_t = \
impl_child_tile((__sprites_tile), 0, 0, (__width), (__height)), \
.hwColumn = (__column), \
.hwFrameNum = (__frame_count), \
.hwPeriodPerFrame = (__period), \
}

initialize/implement a given film (arm_2d_helper_file_t) object at compile-time.

Parameters
[in]__sprites_tilethe sprites tile
[in]__widththe width of each frame
[in]__heightthe height of each frame
[in]__columnthe number of frames per row in the sprite tile
[in]__frame_countthe total number of frames in the sprite tile
[in]__periodthe period per-frame
Note
__period is used as a reference for applications. The helper service doesn't use it at all.

Typedef Documentation

◆ arm_2d_scene_before_scene_switching_handler_t

typedef void arm_2d_scene_before_scene_switching_handler_t(void *pTarget, arm_2d_scene_player_t *ptPlayer, arm_2d_scene_t *ptScene)

the scene player event handler

Parameters
[in]pTargeta user attached target address
[in]ptPlayerthe scene player
[in]ptScenethe old scene that is to be switched out

◆ arm_2d_draw_list_item_handler_t

typedef arm_fsm_rt_t arm_2d_draw_list_item_handler_t(arm_2d_list_item_t *ptThis, const arm_2d_tile_t *ptTile, bool bIsNewFrame, arm_2d_list_item_param_t *ptParam)

the prototype of On-Drawing-List-Item event handler

Parameters
[in]ptThisthe current list core item object.
[in]ptTilea tile for the virtual screen
[in]bIsNewFramea flag indicate the starting of a new frame
[in]ptParamthe runtime paramters
Returns
arm_fsm_rt_t the status of the FSM.

◆ __arm_2d_list_item_iterator

typedef arm_2d_list_item_t * __arm_2d_list_item_iterator(__arm_2d_list_core_t *ptThis, arm_2d_list_iterator_dir_t tDirection, uint_fast16_t hwID)

the list core interator prototype

Parameters
[in]ptThisthe target list core object
[in]tDirectionthe direction for fetching a list item.
[in]hwIDthe ID of the target item
Returns
arm_2d_list_item_t* a list item

◆ __arm_2d_list_region_calculator_t

typedef __arm_2d_list_work_area_t * __arm_2d_list_region_calculator_t(__arm_2d_list_core_t *ptThis, __arm_2d_list_item_iterator *fnIterator, int32_t nOffset)

the list region calculaor prototype

Parameters
[in]ptThisthe target list core object
[in]iOffsetthe offset in the list core
Returns
__arm_2d_list_core_target_area_t* the working area for a target list core item

◆ arm_2d_helper_2d_copy_handler_t

typedef bool arm_2d_helper_2d_copy_handler_t(arm_2d_helper_3fb_t *ptThis, void *pObj, uintptr_t pnSource, uint32_t wSourceStride, uintptr_t pnTarget, uint32_t wTargetStride, int16_t iWidth, int16_t iHeight, uint_fast8_t chBytePerPixel)

An interface for 2D-Copy.

Parameters
[in]pnSourcethe source image address
[in]wSourceStridethe stride of the source image
[in]pnTargetthe address in the target framebuffer
[in]wTargetStridethe stride of the target framebuffer
[in]iWidththe safe width of the source image
[in]iHeightthe safe height of the source image
Return values
truethe 2D copy is complete when leaving this function
falseAn async 2D copy request is sent to the DMA

◆ arm_2d_helper_dma_copy_handler_t

typedef void arm_2d_helper_dma_copy_handler_t(arm_2d_helper_3fb_t *ptThis, void *pObj, uintptr_t pnSource, uintptr_t pnTarget, uint32_t nDataItemCount, uint_fast8_t chDataItemSize)

An interface for DMA memory-to-memory copy. If you have a DMA, you can implement this function by using __OVERRIDE_WEAK. You should implement an ISR for copy-complete event and call arm_2d_helper_3fb_report_dma_copy_complete() to notify the 3FB (direct mode) helper service.

Parameters
[in]ptThisthe helper service control block
[in]pObjthe address of the user object
[in]pnSourcethe source address of the memory block
[in]pnTargetthe target address
[in]nDataItemCountthe number of date items
[in]chDataItemSizethe size of each data item

◆ arm_2d_helper_render_handler_t

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)

Parameters
[in]pTargeta user attached target address
[in]ptPFBthe PFB block
[in]bIsNewFramea flag indicate the starting of a new frame

◆ arm_2d_helper_before_flushing_handler_t

typedef bool arm_2d_helper_before_flushing_handler_t(void *pTarget, arm_2d_pfb_t *ptOrigin, arm_2d_pfb_t *ptScratch)

before-flushing event handler

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
Returns
true the new content is stored in ptScratch
false the new content is stored in ptOrigin

Enumeration Type Documentation

◆ arm_2d_scene_player_switch_mode_t

scene switching mode

Enumerator
ARM_2D_SCENE_SWITCH_CFG_NONE 

no switching visual effect

ARM_2D_SCENE_SWITCH_CFG_USER 

user defined switching visual effect

ARM_2D_SCENE_SWITCH_CFG_FADE_WHITE 

fade in fade out (white)

ARM_2D_SCENE_SWITCH_CFG_FADE_BLACK 

fade in fade out (black)

ARM_2D_SCENE_SWITCH_CFG_SLIDE_LEFT 

slide left

ARM_2D_SCENE_SWITCH_CFG_SLIDE_RIGHT 

slide right

ARM_2D_SCENE_SWITCH_CFG_SLIDE_UP 

slide up

ARM_2D_SCENE_SWITCH_CFG_SLIDE_DOWN 

slide down

ARM_2D_SCENE_SWITCH_CFG_ERASE_LEFT 

erase to the right

ARM_2D_SCENE_SWITCH_CFG_ERASE_RIGHT 

erase to the left

ARM_2D_SCENE_SWITCH_CFG_ERASE_UP 

erase to the top

ARM_2D_SCENE_SWITCH_CFG_ERASE_DOWN 

erase to the bottom

ARM_2D_SCENE_SWITCH_CFG_FLY_IN_FROM_LEFT 

fly in from left

ARM_2D_SCENE_SWITCH_CFG_FLY_IN_FROM_RIGHT 

fly in from right

ARM_2D_SCENE_SWITCH_CFG_FLY_IN_FROM_TOP 

fly in from top

ARM_2D_SCENE_SWITCH_CFG_FLY_IN_FROM_BOTTOM 

fly in from bottom

__ARM_2D_SCENE_SWITCH_CFG_VALID 

For internal user only.

ARM_2D_SCENE_SWITCH_CFG_IGNORE_OLD_BG 

ignore the background of the old scene

ARM_2D_SCENE_SWITCH_CFG_IGNORE_OLD_SCEBE 

ignore the old scene

ARM_2D_SCENE_SWITCH_CFG_IGNORE_NEW_BG 

ignore the background of the new scene

ARM_2D_SCENE_SWITCH_CFG_IGNORE_NEW_SCEBE 

ignore the new scene

ARM_2D_SCENE_SWITCH_CFG_DEFAULT_BG_WHITE 

use white as default background

ARM_2D_SCENE_SWITCH_CFG_DEFAULT_BG_BLACK 

use black as default background

ARM_2D_SCENE_SWITCH_CFG_DEFAULT_BG_USER 

use user defined default background

__ARM_2D_SCENE_SWTICH_CFG_IGNORE_msk 

For internal user only.

__ARM_2D_SCENE_SWTICH_CFG_IGNORE_pos 

For internal user only.

__ARM_2D_SCENE_SWTICH_CFG_DEFAULT_BG_msk 

For internal user only.

__ARM_2D_SCENE_SWTICH_CFG_DEFAULT_BG_pos 

For internal user only.

ARM_2D_SCENE_SWITCH_CFG_BG_BLUR 

blurring the background when possible

◆ arm_2d_scene_player_switch_status_t

the scene switching status

Enumerator
ARM_2D_SCENE_SWITCH_STATUS_AUTO 

time-based auto switching

ARM_2D_SCENE_SWITCH_STATUS_MANUAL 

offset-based manual switching

ARM_2D_SCENE_SWITCH_STATUS_MANUAL_CANCEL 

cancel existing manual switching

ARM_2D_SCENE_SWITCH_STATUS_MANUAL_AUTO_CPL 

automatically finish the rest part of switching.

◆ arm_2d_list_iterator_dir_t

intructions for how to move the list core item iterator

Note
For internal use only

◆ anonymous enum

anonymous enum

direct mode helper service frame-buffer control block states

Note
state transition diagram <<< service initialization >>> | ARM_3FB_STATE_READY_FOR_FLUSH <---—+ | | ARM_3FB_STATE_FLUSHING | | | ARM_3FB_STATUS_UNUSED —> ARM_3FB_STATE_READY_TO_DRAW | | | ARM_3FB_STATE_COPYING_AS_TARGET | | ARM_3FB_STATE_DRAWING | | | ARM_3FB_STATE_COPYING_AS_SOURCE --—+
Enumerator
ARM_3FB_STATE_UNUSED 

the FB hasn't been used

ARM_3FB_STATE_COPYING_AS_TARGET 

the FB is used as the target of frame copy, the previous state is ARM_3FB_STATE_FLUSHING (or ARM_3FB_STATE_UNUSED)

ARM_3FB_STATE_READY_TO_DRAW 

the FB is ready to draw, the previous state is ARM_3FB_STATE_COPYING_AS_TARGET

ARM_3FB_STATE_DRAWING 

the FB is used for drawing, the previous state is ARM_3FB_STATE_READY_TO_DRAW

ARM_3FB_STATE_COPYING_AS_SOURCE 

the FB is used as the source of frame copy, the previous state is ARM_3FB_STATE_READY_FOR_FLUSH

ARM_3FB_STATE_READY_TO_FLUSH 

the FB is ready for flushing and waiting for a v-sync event, the previous state is ARM_3FB_STATE_COPYING_AS_SOURCE

ARM_3FB_STATE_FLUSHING 

the FB is used for flushing, the previous state is ARM_3FB_STATE_READY_FOR_FLUSH

◆ anonymous enum

anonymous enum

the enumeration for events

Enumerator
ARM_2D_PFB_DEPEND_ON_LOW_LEVEL_RENDERING 

On Low Level Rendering Event.

ARM_2D_PFB_DEPEND_ON_DRAWING 

On Drawing Event.

ARM_2D_PFB_DEPEND_ON_LOW_LEVEL_SYNC_UP 

On Low Level Sync-up Event.

ARM_2D_PFB_DEPEND_ON_FRAME_SYNC_UP 

On Frame Sync-up Event.

ARM_2D_PFB_DEPEND_ON_EACH_FRAME_CPL 

On Each Frame Complete Event.

ARM_2D_PFB_DEPEND_ON_NAVIGATION 

On Drawing Navigation Event.

◆ arm_2d_perfc_type_t

the type of perf counter

Function Documentation

◆ arm_2d_scene_player_flush_fifo()

void arm_2d_scene_player_flush_fifo ( arm_2d_scene_player_t ptThis)

flush the scene FIFO

Parameters
[in]ptThisthe target scene player

◆ arm_2d_scene_player_append_scenes()

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

Parameters
[in]ptThisthe target scene player
[in]ptScenesa scene array
[in]hwCountthe number of scenes in the array

◆ arm_2d_scene_player_update_scene_background()

void arm_2d_scene_player_update_scene_background ( arm_2d_scene_player_t ptThis)

request updating the background of the current scene

Parameters
[in]ptThisthe target scene player

◆ arm_2d_scene_player_get_screen_size()

arm_2d_size_t arm_2d_scene_player_get_screen_size ( arm_2d_scene_player_t ptThis)

get the screen size of a specified display adapter.

Parameters
[in]ptThisthe target scene player
Returns
arm_2d_size_t the screen size

◆ arm_2d_scene_player_switch_to_next_scene()

void arm_2d_scene_player_switch_to_next_scene ( arm_2d_scene_player_t ptThis)

request switching to the next scene safely

Parameters
[in]ptThisthe target scene player
Note
Once received a request, the scene player will only switch to the next scene at the end of a frame.

◆ __arm_2d_scene_player_set_switching_mode()

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

Parameters
[in]ptThisthe target scene player
[in]ptModea switching mode object
[in]hwSettingsconfigurations for the switching

◆ arm_2d_scene_player_get_switching_cfg()

uint16_t arm_2d_scene_player_get_switching_cfg ( arm_2d_scene_player_t ptThis)

read the current scene switching mode

Parameters
[in]ptThisthe target scene player
Returns
uint16_t the current setting value for the scene switching mode

◆ arm_2d_scene_player_set_auto_switching_period()

void arm_2d_scene_player_set_auto_switching_period ( arm_2d_scene_player_t ptThis,
int_fast16_t  iMS 
)

configure the scene switching period in auto-switching

Parameters
[in]ptThisthe target scene player
[in]iMSperiod in millisecond

◆ arm_2d_scene_player_set_manual_switching_offset()

void arm_2d_scene_player_set_manual_switching_offset ( arm_2d_scene_player_t ptThis,
arm_2d_location_t  tPointer 
)

use manual switch mode and set the offset

Parameters
[in]ptThisthe target scene player
[in]tPointerthe touch pointer location

◆ arm_2d_scene_player_finish_manual_switching()

arm_2d_err_t arm_2d_scene_player_finish_manual_switching ( arm_2d_scene_player_t ptThis,
bool  bMoveToPreviousScene,
int_fast16_t  iInMS 
)

end the manual switching and finish the left part in a specific period (ms)

Parameters
[in]ptThisthe target scene player
[in]bMoveToPreviousScenea boolean value indicating whether move back to the previous scene, i.e. whether cancel the current switching
iInMSthe planned period as if the switching is done in auto-switching mode
Returns
arm_2d_err_t configuration result

◆ arm_2d_scene_player_is_switching()

bool arm_2d_scene_player_is_switching ( arm_2d_scene_player_t ptThis)

check whether scene player is switching scenes

Parameters
[in]ptThisthe target scene player
Returns
true the scene player is switching scenes
false the scene player stays in tge current scene.

◆ arm_2d_scene_player_get_switching_status()

arm_2d_scene_player_switch_status_t arm_2d_scene_player_get_switching_status ( arm_2d_scene_player_t ptThis)

get the scene player switching status

Parameters
[in]ptThisthe target scene player
Returns
arm_2d_scene_player_switch_status_t the switching status

◆ __arm_2d_scene_player_register_on_draw_navigation_event_handler()

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.

Parameters
[in]ptThisthe target scene player
[in]fnHandlerthe event handler to draw the navigation bar and/or titles
[in]pTargetthe address of an user specified object. If it is NULL, ptThis will be used instead.
[in]ptDirtyRegionsa dirty region list for the navigation layer.
Note
if ptDirtyRegions is NULL and the normal scene doesn't cover the region of the content in the navigation layer, you won't see the content.
Returns
arm_2d_err_t the operation result

◆ arm_2d_scene_player_hide_navigation_layer()

void arm_2d_scene_player_hide_navigation_layer ( arm_2d_scene_player_t ptThis)

hide the navigation layer

Parameters
[in]ptThisan initialised scene player

◆ arm_2d_scene_player_show_navigation_layer()

void arm_2d_scene_player_show_navigation_layer ( arm_2d_scene_player_t ptThis)

show the navigation layer if there is a valid one

Parameters
[in]ptThisan initialised scene player

◆ __arm_2d_scene_player_register_before_switching_event_handler()

arm_2d_err_t __arm_2d_scene_player_register_before_switching_event_handler ( arm_2d_scene_player_t ptThis,
arm_2d_scene_before_scene_switching_handler_t fnHandler,
void *  pTarget 
)

register / update the evtBeforeSwitching event handler. You can use this event to prepare next scenes.

Parameters
[in]ptThisthe target scene player
[in]fnHandlerthe event handler
[in]pTargetthe address of an user specified object.
Returns
arm_2d_err_t the operation result

◆ arm_2d_scene_player_task()

arm_fsm_rt_t arm_2d_scene_player_task ( arm_2d_scene_player_t ptThis)

the scene player task function

Parameters
[in]ptThisthe target scene player
Note
the event sequence of a scene:
  1. when fnBackground is valid
    • invoke fnOnBGStart when it is valid
    • invoke fnBackground
    • invoke fnOnBGComplete when it is valid
  2. invoke fnOnFrameStart when it is valid
  3. invoke fnScene
  4. invoke fnOnFrameCPL when it is valid
  5. Check bNextSceneReq
    • false (0), go back to step 2
    • true, invoke fnDepose when it is valid and switch to the next scene

◆ arm_2d_scene_player_append_dirty_regions()

bool arm_2d_scene_player_append_dirty_regions ( arm_2d_scene_t ptScene,
arm_2d_region_list_item_t ptItems,
size_t  tCount 
)

append dirty regions to the a specified scene

Parameters
[in]ptScenethe target scene
[in]ptItemsthe dirty regions
[in]tCountthe number of dirty regions
Return values
trueoperation is successful
falsethe operation is failed.

◆ arm_2d_scene_player_remove_dirty_regions()

bool arm_2d_scene_player_remove_dirty_regions ( arm_2d_scene_t ptScene,
arm_2d_region_list_item_t ptItems,
size_t  tCount 
)

remove dirty regions from the a specified scene

Parameters
[in]ptScenethe target scene
[in]ptItemsthe dirty regions
[in]tCountthe number of dirty regions
Return values
trueoperation is successful
falsethe operation is failed.

◆ arm_2d_scene_player_get_the_current_scene()

arm_2d_scene_t * arm_2d_scene_player_get_the_current_scene ( arm_2d_scene_player_t ptThis)

get the current scene of a given scene player

Parameters
[in]ptThisthe target scene player
Returns
arm_2d_scene_t * the current scene

◆ arm_2d_scene_player_dynamic_dirty_region_init()

arm_2d_region_list_item_t * arm_2d_scene_player_dynamic_dirty_region_init ( arm_2d_region_list_item_t ptThis,
arm_2d_scene_t ptScene 
)

initialize a user dynamic dirty region

Parameters
[in]ptThisthe target region list item. If it is NULL, this function will allocate an object from the heap
[in]ptScenethe target scene.
Returns
arm_2d_region_list_item_t* the target region list item

◆ arm_2d_scene_player_dynamic_dirty_region_depose()

void arm_2d_scene_player_dynamic_dirty_region_depose ( arm_2d_region_list_item_t ptThis,
arm_2d_scene_t ptScene 
)

depose a given user dynamic dirty region

Parameters
[in]ptThisthe target region list item.
[in]ptScenethe target scene.

◆ __arm_2d_list_core_init()

arm_2d_err_t __arm_2d_list_core_init ( __arm_2d_list_core_t ptThis,
__arm_2d_list_core_cfg_t ptCFG 
)

initialize a target list core object

Parameters
[in]ptThisthe target list core object
[in]ptCFGthe user specified configuration
Returns
arm_2d_err_t the operation result

◆ __arm_2d_list_core_get_list_size()

arm_2d_size_t __arm_2d_list_core_get_list_size ( __arm_2d_list_core_t ptThis)

get the size of the target list

Parameters
[in]ptThisthe target list core object
Returns
arm_2d_size_t the list size

◆ __arm_2d_list_core_show()

arm_fsm_rt_t __arm_2d_list_core_show ( __arm_2d_list_core_t ptThis,
const arm_2d_tile_t ptTarget,
const arm_2d_region_t ptRegion,
bool  bIsNewFrame 
)

show a given list core

Parameters
[in]ptThisthe target list core object
[in]ptTargetthe target framebuffer
[in]ptRegionthe target region
[in]bIsNewFramea flag to indicate whether current iteration is the first one of a new frame.
Returns
arm_fsm_rt_t the fsm status

◆ __arm_2d_list_core_move_request()

void __arm_2d_list_core_move_request ( __arm_2d_list_core_t ptThis,
int16_t  iSteps,
int32_t  nFinishInMs 
)

request to move selection with specified steps

Parameters
[in]ptThisthe target list core object
[in]iStepsnumber of steps, here negative value means move to previous items and positive value means move to next items
Note
for current stage, ring mode is permanently enabled.
Parameters
[in]nFinishInMs
  • (nFinishInMs > 0) the list should turn to those steps in specified time (ms)
  • (nFinishInMs < 0) use the configuration passed at the
    initialisation stage.
  • (nFinishInMs == 0) do not change current configuration

◆ __arm_2d_list_core_move_offset()

void __arm_2d_list_core_move_offset ( __arm_2d_list_core_t ptThis,
int16_t  iOffset 
)

move selection with specified pixel offset

Parameters
[in]ptThisthe target list core object
[in]iOffsetnumber of pixels, here negative value means move to previous items and positive value means move to next items
Note
for current stage, ring mode is permanently enabled.
Returns
arm_2d_err_t the operation result

◆ __arm_2d_list_core_get_selected_item_id()

uint16_t __arm_2d_list_core_get_selected_item_id ( __arm_2d_list_core_t ptThis)

get the currently selected item id

Parameters
[in]ptThisthe target list core object
Returns
uint16_t the item ID

◆ __arm_2d_list_core_get_selected_item()

arm_2d_list_item_t * __arm_2d_list_core_get_selected_item ( __arm_2d_list_core_t ptThis)

get the currently selected item

Parameters
[in]ptThisthe target list core object
Returns
arm_2d_list_item_t* the selected item

◆ __arm_2d_list_core_need_redraw()

bool __arm_2d_list_core_need_redraw ( __arm_2d_list_core_t ptThis,
bool  bAutoreset 
)

check whether the list need a redraw

Parameters
[in]ptThisthe target list core object
[in]bAutoreseta flag to indicate whether we have to clear the redraw flag automatically when calling this function.
Returns
true the list need a redraw
false the list has no change.

◆ __arm_2d_list_core_is_list_moving()

bool __arm_2d_list_core_is_list_moving ( __arm_2d_list_core_t ptThis)

check whether the list is moving its items

Parameters
[in]ptThisthe target list core object
Returns
true the list is moving
false the list has no change.

◆ __arm_2d_list_core_get_item()

arm_2d_list_item_t * __arm_2d_list_core_get_item ( __arm_2d_list_core_t ptThis,
__arm_2d_list_item_iterator fnIterator,
arm_2d_list_iterator_dir_t  tDirection,
uint16_t  hwID,
bool  bIgnoreStatusCheck,
bool  bForceRingMode 
)

get list item with a specified direction instruction

Parameters
[in]ptThisthe target list core object
[in]fnIteratora list iterator
[in]tDirectionthe direction instruction
[in]hwIDthe item ID (when required by the direction instruction)
[in]bIgnoreStatusCheckwhether ignore the status checking
[in]bForceRingModewhether force to enable ring mode anyway
Returns
arm_2d_list_item_t*

◆ arm_2d_helper_pfb_init()

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

Parameters
[in]ptThisthe pfb helper control block
[in]ptCFGthe configuration
Returns
arm_2d_err_t the process result

◆ arm_2d_helper_pfb_deinit()

void arm_2d_helper_pfb_deinit ( arm_2d_helper_pfb_t ptThis)

uninitialize pfb helper service

Parameters
[in]ptThisthe pfb helper control block
Returns
none

◆ arm_2d_helper_pfb_get_display_area()

arm_2d_region_t arm_2d_helper_pfb_get_display_area ( arm_2d_helper_pfb_t ptThis)

get the display (screen) region

Parameters
[in]ptThisthe pfb helper control block
Returns
arm_2d_region_t the screen region

◆ arm_2d_helper_pfb_get_absolute_location()

arm_2d_location_t arm_2d_helper_pfb_get_absolute_location ( arm_2d_tile_t ptTile,
arm_2d_location_t  tLocation 
)

get the absolute location for a given location on the target tile canvas

Parameters
[in]ptTilethe target tile
[in]tLocationthe location on the target tile canvas
Returns
arm_2d_location_t the absolute location on a (virtual) screen or on a root tile canvas

◆ arm_2d_helper_pfb_get_pfb_size()

arm_2d_size_t arm_2d_helper_pfb_get_pfb_size ( arm_2d_helper_pfb_t ptThis)

get the inital PFB size

Parameters
[in]ptThisthe pfb helper control block
Returns
arm_2d_size_t the PFB size

◆ arm_2d_helper_pfb_is_region_being_drawing()

bool arm_2d_helper_pfb_is_region_being_drawing ( const arm_2d_tile_t ptTarget,
const arm_2d_region_t ptRegion,
const arm_2d_tile_t **  ppVirtualScreen 
)

test whether specified region is being drawing

Parameters
[in]ptTargetthe target tile
[in]ptRegionthe target region to test
[out]ppVirtualScreenthe address of the pointer that used to point the virtual screen tile
Returns
true the specified region is currently being drawing
false the PFB is out of the range.

◆ arm_2d_helper_pfb_is_region_active()

bool arm_2d_helper_pfb_is_region_active ( const arm_2d_tile_t ptTarget,
const arm_2d_region_t ptRegion,
bool  bConsiderDryRun 
)

test whether the target region is active (used by PFB service)

Parameters
[in]ptTargetthe target tile
[in]ptRegionthe target region to test
bConsiderDryRunwhether taking dry run into consideration
Returns
true the region is active
false the region is inactive

◆ arm_2d_helper_pfb_task()

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

Parameters
[in]ptThisan initialised PFB helper control block
[in]ptDirtyRegionsa region list pending for refresh, NULL means refreshing the whole screen
Return values
arm_fsm_rt_cplcomplete refreshing one frame
arm_fsm_rt_on_goingthe refreshing work is on-going
arm_fsm_rt_wait_for_objuser's OnDrawing event handler wants to wait for some objects, e.g. semaphore etc.
<0An error is detected

◆ arm_2d_helper_pfb_flush()

void arm_2d_helper_pfb_flush ( arm_2d_helper_pfb_t ptThis)

flush the FPB FIFO

Note
This function is THREAD-SAFE
For normal usage, please DO NOT use this function unless you know what you are doing.
Parameters
[in]ptThisan initialised PFB helper control block

◆ arm_2d_helper_hide_navigation_layer()

void arm_2d_helper_hide_navigation_layer ( arm_2d_helper_pfb_t ptThis)

hide the navigation layer

Parameters
[in]ptThisan initialised PFB helper control block

◆ arm_2d_helper_show_navigation_layer()

void arm_2d_helper_show_navigation_layer ( arm_2d_helper_pfb_t ptThis)

show the navigation layer if there is a valid one

Parameters
[in]ptThisan initialised PFB helper control block

◆ __arm_2d_helper_pfb_enable_drawing_canvas_colour()

void __arm_2d_helper_pfb_enable_drawing_canvas_colour ( arm_2d_helper_pfb_t ptThis,
arm_2d_colour_t  tColour 
)

enable filling canvas with specified colour

Parameters
[in]ptThisan initialised PFB helper control block
[in]tColourthe target canvas colour

◆ __arm_2d_helper_pfb_disable_drawing_canvas_colour()

void __arm_2d_helper_pfb_disable_drawing_canvas_colour ( arm_2d_helper_pfb_t ptThis)

disable filling canvas with specified colour

Parameters
[in]ptThisan initialised PFB helper control block

◆ arm_2d_helper_ignore_low_level_flush()

void arm_2d_helper_ignore_low_level_flush ( arm_2d_helper_pfb_t ptThis)

ignore the low level PFB flushing only

Parameters
[in]ptThisan initialised PFB helper control block

◆ arm_2d_helper_resume_low_level_flush()

void arm_2d_helper_resume_low_level_flush ( arm_2d_helper_pfb_t ptThis)

resume the low level PFB flushing

Parameters
[in]ptThisan initialised PFB helper control block

◆ arm_2d_helper_pfb_update_dependency()

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)

Parameters
[in]ptThisthe PFB helper control block
[in]chMaskthe bit mask for event handlers
[in]ptDependencythe new dependency description
Returns
arm_2d_err_t the process result

◆ __arm_2d_helper_pfb_report_rendering_complete()

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

Note
This function is THREAD-SAFE, You can call this function asynchronously, e.g.
  • A ISR to indicate DMA-transfer complete event or
  • A different Thread
Parameters
[in]ptThisthe PFB helper control block
[in]ptPFBthe used PFB block

◆ __arm_2d_helper_pfb_new()

arm_2d_pfb_t * __arm_2d_helper_pfb_new ( arm_2d_helper_pfb_t ptThis)

try to get a PFB block from the pool

Parameters
[in]ptThisthe PFB helper control block
Return values
NULLthe pool is empty
!NULLa valid pfb block

◆ __arm_2d_helper_pfb_free()

void __arm_2d_helper_pfb_free ( arm_2d_helper_pfb_t ptThis,
arm_2d_pfb_t ptPFB 
)

free a PFB block to the pool

Parameters
[in]ptThisthe PFB helper control block
[in]ptPFBthe target PFB block

◆ arm_2d_helper_3fb_init()

void arm_2d_helper_3fb_init ( arm_2d_helper_3fb_t ptThis,
const arm_2d_helper_3fb_cfg_t ptCFG 
)

initialize the 3FB (direct mode) service

Parameters
[in]ptThisthe helper service control block
[in]ptCFGthe configuration structure

◆ arm_2d_helper_3fb_report_dma_copy_complete()

void arm_2d_helper_3fb_report_dma_copy_complete ( arm_2d_helper_3fb_t ptThis)

report the copy-completion event to the 3FB (direct mode) service

Note
see function __arm_2d_helper_3fb_dma_copy for details
Parameters
[in]ptThisthe helper service control block

◆ arm_2d_helper_3fb_get_flush_pointer()

void * arm_2d_helper_3fb_get_flush_pointer ( arm_2d_helper_3fb_t ptThis)

get a pointer for flushing

Parameters
[in]ptThisthe helper service control block
Returns
void * the address of a framebuffer
Note
please only call this function when on vsync event.

◆ __arm_2d_helper_3fb_draw_bitmap()

bool __arm_2d_helper_3fb_draw_bitmap ( arm_2d_helper_3fb_t ptThis,
const arm_2d_pfb_t ptPFB 
)

please do NOT use this function. It is used by the display adapter.

◆ __arm_2d_helper_pfb_rotate90_c8bit()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate90_c8bit ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given c8bit PFB for 90 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ __arm_2d_helper_pfb_rotate180_c8bit()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate180_c8bit ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given c8bit PFB for 180 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ __arm_2d_helper_pfb_rotate270_c8bit()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate270_c8bit ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given c8bit PFB for 270 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ __arm_2d_helper_pfb_rotate90_rgb16()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate90_rgb16 ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given rgb16 PFB for 90 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ __arm_2d_helper_pfb_rotate180_rgb16()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate180_rgb16 ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given rgb16 PFB for 180 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ __arm_2d_helper_pfb_rotate270_rgb16()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate270_rgb16 ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given rgb16 PFB for 270 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ __arm_2d_helper_pfb_rotate90_rgb32()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate90_rgb32 ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given rgb32 PFB for 90 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ __arm_2d_helper_pfb_rotate180_rgb32()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate180_rgb32 ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given rgb32 PFB for 180 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ __arm_2d_helper_pfb_rotate270_rgb32()

arm_2d_pfb_t * __arm_2d_helper_pfb_rotate270_rgb32 ( arm_2d_pfb_t ptOrigin,
arm_2d_pfb_t ptScratch,
const arm_2d_size_t ptScreenSize 
)

rotate a given rgb32 PFB for 270 degree

Parameters
[in]ptOriginthe original PFB
[in]ptScratchA scratch PFB
[in]ptScreenSizethe screen size
Returns
arm_2d_pfb_t * the output PFB

◆ arm_2d_helper_pfb_append_dirty_regions_to_list()

bool arm_2d_helper_pfb_append_dirty_regions_to_list ( arm_2d_region_list_item_t **  ppDirtyRegionList,
arm_2d_region_list_item_t ptItems,
size_t  tCount 
)

append dirty regions to the a specified list

Parameters
[in]ppDirtyRegionListthe target list
[in]ptItemsthe dirty regions
[in]tCountthe number of dirty regions
Return values
trueoperation is successful
falsethe operation is failed.

◆ arm_2d_helper_pfb_remove_dirty_regions_from_list()

bool arm_2d_helper_pfb_remove_dirty_regions_from_list ( arm_2d_region_list_item_t **  ppDirtyRegionList,
arm_2d_region_list_item_t ptItems,
size_t  tCount 
)

remove dirty regions from the a specified list

Parameters
[in]ppDirtyRegionListthe target list
[in]ptItemsthe dirty regions
[in]tCountthe number of dirty regions
Return values
trueoperation is successful
falsethe operation is failed.

◆ arm_2d_dirty_region_item_ignore_set()

bool arm_2d_dirty_region_item_ignore_set ( arm_2d_region_list_item_t ptThis,
bool  bIgnore 
)

decide whether ignore the specified dirty region item

Parameters
[in]ptThisthe target dirty region item object
[in]bIgnorewhether ignore
Returns
bool the previous ignore status

◆ arm_2d_dirty_region_item_ignore_get()

bool arm_2d_dirty_region_item_ignore_get ( arm_2d_region_list_item_t ptThis)

get the ignore status of a given dirty region item

Parameters
[in]ptThisthe target dirty region item object
Return values
truethe dirty region item is ignored.
falsethe dirty region item is in-use.

◆ arm_2d_helper_pfb_enable_dirty_region_optimization()

void arm_2d_helper_pfb_enable_dirty_region_optimization ( arm_2d_helper_pfb_t ptThis,
arm_2d_region_list_item_t ptRegions,
uint_fast8_t  chCount 
)

enable dirty region optimization service

Parameters
[in]ptThisthe PFB helper control block
[in]ptRegionsan optional array of dirty region items, which will be added to the dirty region item pool. NULL is acceptable.
[in]chCountthe number of items in the array.

◆ arm_2d_helper_pfb_disable_dirty_region_optimization()

void arm_2d_helper_pfb_disable_dirty_region_optimization ( arm_2d_helper_pfb_t ptThis)

disable dirty region optimization service

Parameters
[in]ptThisthe PFB helper control block

◆ arm_2d_dynamic_dirty_region_on_frame_start()

void arm_2d_dynamic_dirty_region_on_frame_start ( arm_2d_region_list_item_t ptThis,
uint8_t  chUserRegionIndex 
)

the on-frame-start event handler for a given user dynamic dirty region

Parameters
[in]ptThisthe target region list item.
[in]chUserRegionIndexa specified user region index. When 0xFF is given, the existing user region index will not be changed.

◆ arm_2d_dynamic_dirty_region_init()

arm_2d_region_list_item_t * arm_2d_dynamic_dirty_region_init ( arm_2d_region_list_item_t ptThis)

initialize a dynamic dirty region

Parameters
[in]ptThisthe target region list item. If it is NULL, this function will allocate an object from the heap
Returns
arm_2d_region_list_item_t* the target region list item

◆ arm_2d_dynamic_dirty_region_depose()

void arm_2d_dynamic_dirty_region_depose ( arm_2d_region_list_item_t ptThis)

depose a given dynamic dirty region

Parameters
[in]ptThisthe target region list item.

◆ arm_2d_dynamic_dirty_region_wait_next()

uint_fast8_t arm_2d_dynamic_dirty_region_wait_next ( arm_2d_region_list_item_t ptThis)

wait for the PFB helper service requesting the next region

Parameters
[in]ptThisthe target region list item.
Returns
uint_fast8_t the user region index
Note
You can use the return value, i.e. the user region index to address the new region you want to cover.

◆ arm_2d_dynamic_dirty_region_update()

void arm_2d_dynamic_dirty_region_update ( arm_2d_region_list_item_t ptThis,
arm_2d_tile_t ptTarget,
arm_2d_region_t ptRegion,
uint8_t  chNextUserIndex 
)

update a given user dynamic dirty region with a new region

Parameters
[in]ptThisthe target region list item.
[in]ptTargetthe target tile (the frame-buffer to draw)
[in]ptRegionthe new region
Note
- when the ptTarget isn't NULL, the ptRegion should points a region inside the canvas of the ptTarget (i.e. an relative region of the ptTarget)
Parameters
[in]chNextUserIndexthe next user region index, 0xFF means complete.

◆ arm_2d_dynamic_dirty_region_change_user_region_index_only()

void arm_2d_dynamic_dirty_region_change_user_region_index_only ( arm_2d_region_list_item_t ptThis,
uint8_t  chNextUserIndex 
)

only change the user region index without update the dynamic dirty region

Parameters
[in]ptThisthe target region list item.
[in]chNextUserIndexthe next user region index. When encounter 0xFF, the user region index will be reset to zero.

◆ arm_2d_helper_dirty_region_init()

void arm_2d_helper_dirty_region_init ( arm_2d_helper_dirty_region_t ptThis,
arm_2d_region_list_item_t **  ppDirtyRegionList 
)

initialize a given dirtt region helper

Parameters
[in]ptThisthe target helper
[in]ppDirtyRegionListthe address of the dirty region list

◆ arm_2d_helper_dirty_region_add_items()

void arm_2d_helper_dirty_region_add_items ( arm_2d_helper_dirty_region_t ptThis,
arm_2d_helper_dirty_region_item_t ptItems,
uint_fast16_t  hwCount 
)

add an array of region items to a dirty region helper

Parameters
[in]ptThisthe target helper
[in]ptItemsthe array of the region items
[in]hwCountthe number of items in the array

◆ arm_2d_helper_dirty_region_remove_items()

void arm_2d_helper_dirty_region_remove_items ( arm_2d_helper_dirty_region_t ptThis,
arm_2d_helper_dirty_region_item_t ptItems,
uint_fast16_t  hwCount 
)

remove an array of region items to a dirty region helper

Parameters
[in]ptThisthe target helper
[in]ptItemsthe array of the region items
[in]hwCountthe number of items in the array

◆ arm_2d_helper_dirty_region_depose()

arm_2d_helper_dirty_region_item_t * arm_2d_helper_dirty_region_depose ( arm_2d_helper_dirty_region_t ptThis)

depose a given dirty region helper

Parameters
[in]ptThisthe target helper
Returns
arm_2d_helper_dirty_region_item_t * the region list items

◆ arm_2d_helper_dirty_region_on_frame_start()

void arm_2d_helper_dirty_region_on_frame_start ( arm_2d_helper_dirty_region_t ptThis)

the on-frame-start event handler for a given dirty region helper

Parameters
[in]ptThisthe target helper
Note
Usually this event handler should be insert the frame start event handler of a target scene.

◆ arm_2d_helper_dirty_region_update_item()

void arm_2d_helper_dirty_region_update_item ( arm_2d_helper_dirty_region_t ptHelper,
arm_2d_helper_dirty_region_item_t ptThis,
const arm_2d_tile_t ptTargetTile,
const arm_2d_region_t ptVisibleArea,
const arm_2d_region_t ptNewRegion 
)

update a specified new region while erase the previous region

Parameters
[in]ptHelperthe target dirty region helper
[in]ptThisthe target region item
[in]ptTargetTilethe target tile to draw content
[in]ptVisibleAreaa visible region in the target tile used to clip the ptNewRegion, NULL means no clipping.
[in]ptNewRegionthe new region to update, NULL means nothing to update

◆ __arm_2d_helper_dirty_region_update_dirty_regions()

void __arm_2d_helper_dirty_region_update_dirty_regions ( arm_2d_helper_dirty_region_t ptThis,
const arm_2d_tile_t ptTargetTile 
)

update a specified new region while erase the previous region

Parameters
[in]ptThisthe target helper
[in]ptTargetTilethe target tile to draw content

◆ __arm_2d_helper_dirty_region_update_dirty_regions2()

void __arm_2d_helper_dirty_region_update_dirty_regions2 ( arm_2d_helper_dirty_region_t ptThis,
const arm_2d_tile_t ptTargetTile,
const arm_2d_region_t ptVisibleArea,
const arm_2d_region_t ptNewRegion 
)

update a specified new region while erase the previous region

Parameters
[in]ptThisthe target helper
[in]ptTargetTilethe target tile to draw content
[in]ptVisibleAreaa visible region in the target tile used to clip the ptNewRegion, NULL means no clipping.
[in]ptNewRegionthe new region to update, NULL means nothing to update

◆ arm_2d_helper_dirty_region_item_force_to_use_minimal_enclosure()

bool arm_2d_helper_dirty_region_item_force_to_use_minimal_enclosure ( arm_2d_helper_dirty_region_item_t ptThis,
bool  bEnable 
)

force an arm_2d_helper_dirty_region_item_t object to use the minimal enclosure region to update.

Parameters
[in]ptThisthe target item
[in]bEnablewhether enable this feature.
Returns
boolean the original setting

◆ arm_2d_helper_dirty_region_force_to_use_minimal_enclosure()

bool arm_2d_helper_dirty_region_force_to_use_minimal_enclosure ( arm_2d_helper_dirty_region_t ptThis,
bool  bEnable 
)

force the dirty region helper to use the minimal enclosure region to update.

Parameters
[in]ptThisthe target helper
[in]bEnablewhether enable this feature.
Returns
boolean the original setting

◆ arm_2d_helper_dirty_region_suspend_update()

bool arm_2d_helper_dirty_region_suspend_update ( arm_2d_helper_dirty_region_t ptThis,
bool  bEnable 
)

force the dirty region helper to suspend the dirty region update.

Parameters
[in]ptThisthe target helper
[in]bEnablewhether enable this feature.
Returns
boolean the original setting

◆ arm_2d_helper_dirty_region_item_suspend_update()

bool arm_2d_helper_dirty_region_item_suspend_update ( arm_2d_helper_dirty_region_item_t ptThis,
bool  bEnable 
)

force the arm_2d_helper_dirty_region_item_t object to suspend the dirty region update.

Parameters
[in]ptThisthe target item
[in]bEnablewhether enable this feature.
Returns
boolean the original setting

◆ arm_2d_helper_transform_init()

void arm_2d_helper_transform_init ( arm_2d_helper_transform_t ptThis,
arm_2d_op_t ptTransformOP,
float  fAngleStep,
float  fScaleStep,
arm_2d_region_list_item_t **  ppDirtyRegionList 
)

initialize a given transform helper

Note
Deprecated.
Parameters
[in]ptThisthe target helper
[in]ptTransformOPthe target transform OP, NULL is not accepted.
[in]fAngleStepthe minimal acceptable angle change.
[in]fScaleStepthe minimal acceptable scale ratio change.
[in]ppDirtyRegionListthe address of the dirty region list

◆ arm_2d_helper_transform_depose()

void arm_2d_helper_transform_depose ( arm_2d_helper_transform_t ptThis)

depose a given transform helper

Note
Deprecated.
Parameters
[in]ptThisthe target helper

◆ arm_2d_helper_transform_on_frame_begin()

void arm_2d_helper_transform_on_frame_begin ( arm_2d_helper_transform_t ptThis)

the on-frame-begin event handler for a given transform helper

Note
Deprecated.
Parameters
[in]ptThisthe target helper
Note
Usually this event handler should be insert the frame start event handler of a target scene.

◆ arm_2d_helper_transform_force_update()

void arm_2d_helper_transform_force_update ( arm_2d_helper_transform_t ptThis)

force transform helper to update dirty region

Note
Deprecated.
sometimes, we want to force transform helper to update dirty regions even if both the angel and scale keep the same, for example, the pivots are updated.
Parameters
[in]ptThisthe target helper

◆ arm_2d_helper_transform_force_to_use_minimal_enclosure()

bool arm_2d_helper_transform_force_to_use_minimal_enclosure ( arm_2d_helper_transform_t ptThis,
bool  bEnable 
)

force the transform helper to use the minimal enclosure region as the dirty region.

Note
Deprecated.
Parameters
[in]ptThisthe target helper
[in]bEnablewhether enable this feature.
Returns
boolean the original setting

◆ arm_2d_helper_transform_suspend_update()

bool arm_2d_helper_transform_suspend_update ( arm_2d_helper_transform_t ptThis,
bool  bEnable 
)

force the transform helper to suspend the dirty region update.

Note
Deprecated.
Parameters
[in]ptThisthe target helper
[in]bEnablewhether enable this feature.
Returns
boolean the original setting

◆ arm_2d_helper_transform_update_value()

void arm_2d_helper_transform_update_value ( arm_2d_helper_transform_t ptThis,
float  fAngle,
float  fScale 
)

update a given transform helper with new values

Note
Deprecated.
Parameters
[in]ptThisthe target helper
[in]fAnglethe new angle value
[in]fScalethe new scale ratio
Note
The new value is only accepted when the change between the old value and the new value is larger than the minimal acceptable mount.

◆ arm_2d_helper_transform_update_dirty_regions()

void arm_2d_helper_transform_update_dirty_regions ( arm_2d_helper_transform_t ptThis,
const arm_2d_region_t ptCanvas,
bool  bIsNewFrame 
)

update the dirty region after a transform operation

Note
Deprecated.
Parameters
[in]ptThisthe target helper
[in]ptCanvasthe canvas
[in]bIsNewFramewhether this is a new frame

◆ arm_2d_helper_dirty_region_transform_init()

void arm_2d_helper_dirty_region_transform_init ( arm_2d_helper_dirty_region_transform_t ptThis,
arm_2d_helper_dirty_region_t ptHelper,
arm_2d_op_t ptTransformOP,
float  fAngleStep,
float  fScaleStep 
)

initialize a given dirty region transform helper

Parameters
[in]ptThisthe target helper
[in]ptHelperthe host arm_2d_helper_dirty_region_t object.
[in]ptTransformOPthe target transform OP, NULL is not accepted.
[in]fAngleStepthe minimal acceptable angle change.
[in]fScaleStepthe minimal acceptable scale ratio change.

◆ arm_2d_helper_dirty_region_transform_depose()

void arm_2d_helper_dirty_region_transform_depose ( arm_2d_helper_dirty_region_transform_t ptThis)

depose a given dirty region transform helper

Parameters
[in]ptThisthe target helper

◆ arm_2d_helper_dirty_region_transform_on_frame_start()

void arm_2d_helper_dirty_region_transform_on_frame_start ( arm_2d_helper_dirty_region_transform_t ptThis)

the on-frame-begin event handler for a given dirty region transform helper

Parameters
[in]ptThisthe target helper
Note
Usually this event handler should be insert the frame start event handler of a target scene.

◆ arm_2d_helper_dirty_region_transform_force_update()

void arm_2d_helper_dirty_region_transform_force_update ( arm_2d_helper_dirty_region_transform_t ptThis)

force a dirty region transform helper to update its dirty region

Note
sometimes, we want to force transform helper to update dirty regions even if both the angel and scale keep the same, for example, the pivots are updated.
Parameters
[in]ptThisthe target helper

◆ arm_2d_helper_dirty_region_transform_force_to_use_minimal_enclosure()

bool arm_2d_helper_dirty_region_transform_force_to_use_minimal_enclosure ( arm_2d_helper_dirty_region_transform_t ptThis,
bool  bEnable 
)

force a dirty region transform helper to use the minimal enclosure region as the dirty region.

Parameters
[in]ptThisthe target helper
[in]bEnablewhether enable this feature.
Returns
boolean the original setting

◆ arm_2d_helper_dirty_region_transform_suspend_update()

bool arm_2d_helper_dirty_region_transform_suspend_update ( arm_2d_helper_dirty_region_transform_t ptThis,
bool  bEnable 
)

force a dirty region transform helper to suspend updating.

Parameters
[in]ptThisthe target helper
[in]bEnablewhether enable this feature.
Returns
boolean the original setting

◆ arm_2d_helper_dirty_region_transform_update_value()

void arm_2d_helper_dirty_region_transform_update_value ( arm_2d_helper_dirty_region_transform_t ptThis,
float  fAngle,
float  fScale 
)

update a given dirty region transform helper with new values

Parameters
[in]ptThisthe target helper
[in]fAnglethe new angle value
[in]fScalethe new scale ratio
Note
The new value is only accepted when the change between the old value and the new value is larger than the minimal acceptable mount.

◆ arm_2d_helper_dirty_region_transform_update()

void arm_2d_helper_dirty_region_transform_update ( arm_2d_helper_dirty_region_transform_t ptThis,
const arm_2d_region_t ptCanvas,
bool  bIsNewFrame 
)

update the dirty region after a transform operation

Parameters
[in]ptThisthe target helper
[in]ptCanvasthe canvas
[in]bIsNewFramewhether this is a new frame

◆ arm_2d_helper_control_enum_init()

arm_2d_err_t arm_2d_helper_control_enum_init ( arm_2d_control_enumerator_t ptThis,
const arm_2d_control_enumeration_policy_t ptPolicy,
const arm_2d_control_node_t ptRoot 
)

Initialize a enumerator for the target element tree with a given
traversal policy.

Parameters
[in]ptThisan arm_2d_control_enumerator_t object
[in]ptPolicythe policy
[in]ptRootthe root of the target element tree
Returns
arm_2d_err_t

◆ arm_2d_helper_control_enum_get_next_node()

arm_2d_control_node_t * arm_2d_helper_control_enum_get_next_node ( arm_2d_control_enumerator_t ptThis)

get the next node of the target enumerator

Parameters
[in]ptThisthe target enumerator
Returns
arm_2d_control_node_t* the next node

◆ arm_2d_helper_control_enum_depose()

arm_2d_err_t arm_2d_helper_control_enum_depose ( arm_2d_control_enumerator_t ptThis)

depose (de-initialize) a given enumerator

Parameters
[in]ptThisthe target enumerator
Returns
arm_2d_err_t the operation result

◆ arm_2d_helper_control_find_node_with_location()

arm_2d_control_node_t * arm_2d_helper_control_find_node_with_location ( arm_2d_control_node_t ptRoot,
arm_2d_location_t  tLocation 
)

find the top node on the screen with a given touch location.

Parameters
[in]ptRootthe root of the target element tree
[in]tLocationthe touch coordinate
Returns
arm_2d_control_node_t* the target node

◆ arm_2d_helper_control_get_absolute_region()

arm_2d_region_t * arm_2d_helper_control_get_absolute_region ( arm_2d_control_node_t ptNode,
arm_2d_region_t ptOutRegion,
bool  bClip 
)

get the absolute region of a given target control in an element tree

Parameters
[in]ptNodethe target control in an element tree
[in]ptOutRegionthe object buffer to hold the result
[in]bClipwhether clip the control region during the calculation
Return values
NULLthe target control is out of the container area
!NULLthe ptOutRegion

◆ arm_2d_helper_get_utf8_byte_valid_length()

int8_t arm_2d_helper_get_utf8_byte_valid_length ( const uint8_t *  pchChar)

return a valid code length of a given UTF8 char

Parameters
[in]pchCharthe start address of an UTF8 char
Return values
-1this isn't a legal UTF8 char
>0the UTF8 char length

◆ arm_2d_helper_get_utf8_byte_length()

int8_t arm_2d_helper_get_utf8_byte_length ( const uint8_t *  pchChar)

return the code length based on the first byte of a given UTF8 char

Parameters
[in]pchCharthe start address of an UTF8 char
Return values
-1this isn't a legal UTF8 char
>0the UTF8 char length

◆ arm_2d_helper_utf8_to_unicode()

uint32_t arm_2d_helper_utf8_to_unicode ( const uint8_t *  pchUTF8)

convert an UTF8 char into unicode char

Parameters
[in]pchUTF8
Returns
uint32_t generated unicode

◆ arm_2d_helper_get_char_descriptor()

arm_2d_char_descriptor_t * arm_2d_helper_get_char_descriptor ( const arm_2d_font_t ptFont,
arm_2d_char_descriptor_t ptDescriptor,
uint8_t *  pchCharCode 
)

get char descriptor

Parameters
[in]ptFontthe target font
[in]ptDescriptora buffer to store a char descriptor
[in]pchCharCodean UTF8 Char
Returns
arm_2d_char_descriptor_t * the descriptor

◆ arm_lcd_text_init()

void arm_lcd_text_init ( arm_2d_region_t ptScreen)

initialize lcd text display service

Parameters
[in]ptScreenthe default display area

◆ lcd_draw_char()

int16_t lcd_draw_char ( int16_t  iX,
int16_t  iY,
uint8_t **  ppchCharCode,
uint_fast8_t  chOpacity 
)

draw a char to a given location in the draw region

Parameters
[in]iXthe x coordinate
[in]iYthe y coordinate
[in]ppchCharCodea pointer of pointer that points to the string
Note
this function will advance the pointer automatically
Parameters
[in]chOpacitythe opacity of the char
Note
this chOpacity has NO effect on the default monochrome(A1) font
Returns
int16_t char advance in pixels

◆ arm_lcd_text_force_char_use_same_width()

bool arm_lcd_text_force_char_use_same_width ( bool  bForced)

Force all char use the same width.

Parameters
[in]bForcedforce or not
Returns
boolean the original configuration

◆ arm_lcd_text_set_display_mode()

void arm_lcd_text_set_display_mode ( uint32_t  wMode)

set the display mode for characters

Parameters
[in]wModethe display mode which could be the combination of following enum values:
  • ARM_2D_DRW_PATN_MODE_COPY (default) - Copy without background colour
  • ARM_2D_DRW_PATN_MODE_WITH_BG_COLOR - with background colour
  • ARM_2D_DRW_PATN_MODE_NO_FG_COLOR - without foreground colour
  • ARM_2D_DRW_PATH_MODE_COMP_FG_COLOUR - use complement value as the foreground colour

◆ arm_2d_helper_init()

void arm_2d_helper_init ( void  )

initialize helper services

◆ arm_2d_helper_backend_task()

void arm_2d_helper_backend_task ( void  )

backend task for asynchronose mode

◆ arm_2d_helper_convert_ticks_to_ms()

int64_t arm_2d_helper_convert_ticks_to_ms ( int64_t  lTick)

convert ticks of a reference timer to millisecond

Parameters
[in]lTickthe tick count
Returns
int64_t the millisecond

◆ arm_2d_helper_convert_ms_to_ticks()

int64_t arm_2d_helper_convert_ms_to_ticks ( uint32_t  wMS)

convert millisecond into ticks of the reference timer

Parameters
[in]wMSthe target time in millisecond
Returns
int64_t the ticks

◆ arm_2d_helper_get_reference_clock_frequency()

uint32_t arm_2d_helper_get_reference_clock_frequency ( void  )

get the reference clock frequency

Returns
uint32_t the frequency

◆ arm_2d_helper_get_system_timestamp()

int64_t arm_2d_helper_get_system_timestamp ( void  )

get the current system stamp from the reference clock

Returns
int64_t the timestamp in ticks
Note
you have to call arm_2d_helper_convert_ticks_to_ms() to convert the the timestamp into milliseconds when required.

◆ __arm_2d_helper_time_elapsed()

int64_t __arm_2d_helper_time_elapsed ( int64_t *  plTimestamp)

get the elapsed time since a reference timestamp

Parameters
[in]plTimestampthe reference timestamp
Returns
int64_t the timestamp in ticks

◆ __arm_2d_helper_is_time_out()

bool __arm_2d_helper_is_time_out ( int64_t  lPeriod,
int64_t *  plTimestamp 
)

set an alarm with given period and check the status

Parameters
[in]lPerioda time period in ticks
[in]plTimestampa pointer points to an int64_t integer, if NULL is passed, an static local variable inside the function will be used
Returns
bool whether it is timeout or not

◆ arm_2d_port_new_semaphore()

uintptr_t arm_2d_port_new_semaphore ( void  )

get a new semaphore from host RTOS

Returns
uintptr_t a handler for the semaphore

◆ arm_2d_port_free_semaphore()

void arm_2d_port_free_semaphore ( uintptr_t  pSemaphore)

free a semaphore

Parameters
[in]pSemaphorethe target semaphore

◆ arm_2d_port_wait_for_semaphore()

bool arm_2d_port_wait_for_semaphore ( uintptr_t  pSemaphore)

wait for a semaphore

Parameters
[in]pSemaphorethe target semaphore
Return values
truewe get the semaphore
falsewe haven't get the sempahore

◆ arm_2d_port_set_semaphore()

void arm_2d_port_set_semaphore ( uintptr_t  pSemaphore)

set a semaphore

Parameters
[in]pSemaphorethe target semaphore

◆ __arm_2d_helper_time_liner_slider()

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

Parameters
[in]nFromthe start of the slider
[in]nTothe end of the slider
[in]lPerioda given period in which the slider should finish the whole stroke
[out]pnStrokethe address of an int32_t stroke variable
[in]plTimestampthe address of a timestamp variable, if you pass NULL the code that call this funtion will not be reentrant.
Return values
truethe slider has finished the whole stroke
falsethe slider hasn't reach the target end

◆ __arm_2d_helper_time_half_cos_slider()

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

Parameters
[in]nFromthe start of the slider
[in]nTothe end of the slider
[in]lPerioda given period in which the slider should finish the whole stroke
[out]pnStrokethe address of an int32_t stroke variable
[in]plTimestampthe address of a timestamp variable, if you pass NULL the code that call this funtion will not be reentrant.
Return values
truethe slider has finished the whole stroke
falsethe slider hasn't reach the target end

◆ __arm_2d_helper_time_cos_slider()

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

Parameters
[in]nFromthe start of the slider
[in]nTothe end of the slider
[in]lPerioda given period in which the slider should finish the whole stroke
[in]lPhasethe phase offset
[out]pnStrokethe address of an int32_t stroke variable
[in]plTimestampthe address of a timestamp variable, if you pass NULL the code that call this funtion will not be reentrant.
Return values
truethe slider has finished the whole stroke
falsethe slider hasn't reach the target end

◆ __arm_2d_helper_colour_slider()

uint32_t __arm_2d_helper_colour_slider ( uint32_t  wFrom,
uint32_t  wTo,
int32_t  nDistance,
int32_t  nOffset 
)

\brier colour intrapolation

Parameters
[in]wFroma 32bit colour (4 8bit colour channels) on the start
[in]wToa 32bit colour (4 8bit colour channels) on the end
[in]nDistancethe reference full distance between two end points
[in]nOffsetthe offset from the start
Returns
uint32_t 32bit colour

◆ arm_2d_helper_pi_slider_init()

arm_2d_helper_pi_slider_t * arm_2d_helper_pi_slider_init ( arm_2d_helper_pi_slider_t ptThis,
arm_2d_helper_pi_slider_cfg_t ptCFG,
int32_t  nStartPosition 
)

initialize the Proportional-Integral Control helper

Parameters
[in]thetarget helper control block
[in]theconfiguration structure, NULL means using the default parameters, i.e P = 5.0f, I = 3.0f and Interval = 20ms
[in]nStartPositionthe start postion
Returns
arm_2d_helper_pi_slider_t* the control block

◆ arm_2d_helper_pi_slider()

bool arm_2d_helper_pi_slider ( arm_2d_helper_pi_slider_t ptThis,
int32_t  nTargetPosition,
int32_t *  pnResult 
)

A helper function for Proportional-Integral Control.

Parameters
[in]ptThisthe control block (arm_2d_helper_pi_slider_t)
[in]nTargetPositionthe new target position
[in]pnResulta int32_t buffer for reading the current postion
Return values
truethe slider has reached the target postion
falsethe slider is still moving

◆ arm_2d_helper_pi_slider_set_current()

void arm_2d_helper_pi_slider_set_current ( arm_2d_helper_pi_slider_t ptThis,
int32_t  nCurrent 
)

reset the PI slider and set the current value

Parameters
[in]ptThisthe control block (arm_2d_helper_pi_slider_t)
[in]nCurrentthe new current value

◆ arm_2d_helper_pi_slider_f32()

bool arm_2d_helper_pi_slider_f32 ( arm_2d_helper_pi_slider_t ptThis,
float  fTargetPosition,
float *  pfResult 
)

A helper function for Proportional-Integral Control.

Parameters
[in]ptThisthe control block (arm_2d_helper_pi_slider_t)
[in]fTargetPositionthe new target position
[in]pfResulta int32_t buffer for reading the current postion
Return values
truethe slider has reached the target postion
falsethe slider is still moving

◆ arm_2d_helper_pi_slider_set_current_f32()

void arm_2d_helper_pi_slider_set_current_f32 ( arm_2d_helper_pi_slider_t ptThis,
float  fCurrent 
)

reset the PI slider and set the current value

Parameters
[in]ptThisthe control block (arm_2d_helper_pi_slider_t)
[in]fCurrentthe new current value

◆ arm_2d_helper_draw_box()

void arm_2d_helper_draw_box ( const arm_2d_tile_t ptTarget,
const arm_2d_region_t ptRegion,
int16_t  iBorderWidth,
COLOUR_INT  tColour,
uint8_t  chOpacity 
)

\brier draw a box with specified colour, border width and opacity

Parameters
[in]ptTargetthe target tile
[in]ptRegionthe target region
[in]iBorderWidththe border width
[in]tColourthe target colour
[in]chOpacitythe opacity

◆ arm_2d_helper_film_next_frame()

void arm_2d_helper_film_next_frame ( arm_2d_helper_film_t ptThis)

\brier move to the next frame of a given film

Parameters
[in]ptThisthe target film

◆ arm_2d_helper_film_reset()

void arm_2d_helper_film_reset ( arm_2d_helper_film_t ptThis)

\brier reset the frame index to zero

Parameters
[in]ptThisthe target film

◆ arm_2d_helper_film_set_frame()

void arm_2d_helper_film_set_frame ( arm_2d_helper_film_t ptThis,
int32_t  nIndex 
)

\brier reset the frame index to a specified value and wrap around if the index number is out of range.

Parameters
[in]ptThisthe target film
[in]nIndexthe given index

◆ arm_2d_byte_fifo_init()

bool arm_2d_byte_fifo_init ( arm_2d_byte_fifo_t ptThis,
void *  pBuffer,
uint16_t  hwSize 
)

initialize a given byte fifo

Parameters
[in]ptThisthe target FIFO control block
[in]pBuffera buffer for storing the data
[in]hwSizethe buffer size
Return values
falseIllegal parameters
truethe target FIFO is initialized

◆ arm_2d_byte_fifo_drop_all()

void arm_2d_byte_fifo_drop_all ( arm_2d_byte_fifo_t ptThis)

Empty a given byte fifo.

Parameters
[in]ptThisthe target byte fifo

◆ arm_2d_byte_fifo_enqueue()

bool arm_2d_byte_fifo_enqueue ( arm_2d_byte_fifo_t ptThis,
uint8_t  chChar 
)

write a byte to a given fifo

Parameters
[in]ptThisthe target FIFO control block
[in]chCharthe target byte
Return values
falsethe FIFO is FULL
trueoperation is successful

◆ arm_2d_byte_fifo_dequeue()

bool arm_2d_byte_fifo_dequeue ( arm_2d_byte_fifo_t ptThis,
uint8_t *  pchChar 
)

read a byte from a given fifo

Parameters
[in]ptThisthe target FIFO control block
[in]pchChara buffer to store the byte, NULL means drop a byte
Return values
falsethe FIFO is EMPTY
trueoperation is successful

◆ arm_2d_byte_fifo_peek()

bool arm_2d_byte_fifo_peek ( arm_2d_byte_fifo_t ptThis,
uint8_t *  pchChar,
bool  bMovePointer 
)

peek a byte continuously from a given fifo

Parameters
[in]ptThisthe target FIFO control block
[in]pchChara buffer to store the byte, NULL means drop a byte
Return values
falsethe FIFO is EMPTY
trueoperation is successful

◆ arm_2d_byte_fifo_get_all_peeked()

void arm_2d_byte_fifo_get_all_peeked ( arm_2d_byte_fifo_t ptThis)

drop all peeked byte from a given fifo

Parameters
[in]ptThisthe target FIFO control block
Returns
none

◆ arm_2d_byte_fifo_reset_peeked()

void arm_2d_byte_fifo_reset_peeked ( arm_2d_byte_fifo_t ptThis)

reset the peek pointer, so you can restart from the beginning to peek.

Parameters
[in]ptThisthe target FIFO control block
Returns
none

◆ arm_2d_helper_swap_rgb16()

void arm_2d_helper_swap_rgb16 ( uint16_t *  phwBuffer,
uint32_t  wCount 
)

swap the high and low bytes for each rgb16 pixel

Parameters
[in]phwBufferthe pixel buffer
Note
the phwBuffer MUST aligned to half-word addresses
Parameters
[in]wSizethe number of pixels

◆ arm_2d_helper_fill_tile_colour()

void arm_2d_helper_fill_tile_colour ( const arm_2d_tile_t ptTile,
arm_2d_color_info_t  tColourFormat,
arm_2d_colour_t  tColour 
)

fill the target tile with a specified colour

Parameters
[in]ptTilethe target tile
[in]tColourFormatthe colour format of the target tile
[in]tColourthe target colour

Variable Documentation

◆ ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_VERTICAL

__arm_2d_list_region_calculator_t ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_VERTICAL
extern

a list calculator for vertical lists, which puts selected item in the centre of the target list

◆ ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_HORIZONTAL

__arm_2d_list_region_calculator_t ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_HORIZONTAL
extern

a list calculator for horizontal lists, which puts selected item in the centre of the target list

◆ ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_FIXED_SIZED_ITEM_NO_STATUS_CHECK_VERTICAL

__arm_2d_list_region_calculator_t ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_FIXED_SIZED_ITEM_NO_STATUS_CHECK_VERTICAL
extern

a list calculator for vertical lists, which puts selected item in the centre of the target list, item size is fixed and no status checking (i.e. visible or enabled).

◆ ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_FIXED_SIZED_ITEM_NO_STATUS_CHECK_HORIZONTAL

__arm_2d_list_region_calculator_t ARM_2D_LIST_CALCULATOR_MIDDLE_ALIGNED_FIXED_SIZED_ITEM_NO_STATUS_CHECK_HORIZONTAL
extern

a list calculator for horizontal lists, which puts selected item in the centre of the target list, item size is fixed and no status checking (i.e. visible or enabled).

◆ ARM_2D_LIST_ITERATOR_ARRAY

__arm_2d_list_item_iterator ARM_2D_LIST_ITERATOR_ARRAY
extern

a list iterator for the list that stores items in an array

◆ ARM_2D_CONTROL_ENUMERATION_POLICY_PREORDER_TRAVERSAL

const arm_2d_control_enumeration_policy_t ARM_2D_CONTROL_ENUMERATION_POLICY_PREORDER_TRAVERSAL
extern

The Preorder traversal is suitable for the following operations in the control (element tree) management.

  • Element-Tree-Refresh Event Handling
  • Element-Tree-Construction Event Handling
  • Element-Tree-Onload Event Handling

◆ ARM_2D_CONTROL_ENUMERATION_POLICY_POSTORDER_TRAVERSAL

const arm_2d_control_enumeration_policy_t ARM_2D_CONTROL_ENUMERATION_POLICY_POSTORDER_TRAVERSAL
extern

The Postorder traversal is suitable for the following operations in the control (element tree) management:

  • Element-Tree-Updating Event Handling (Including Resize etc.)
  • Element-Tree-Destruction Event Handling
  • Element-Tree-OnDepose Event Handling

◆ ARM_2D_CONTROL_ENUMERATION_POLICY_BOTTOM_UP_TRAVERSAL

const arm_2d_control_enumeration_policy_t ARM_2D_CONTROL_ENUMERATION_POLICY_BOTTOM_UP_TRAVERSAL
extern

The Bottom-Up traversal is suitable for the normal message handling in the control (element tree) management.