/** 清除已记录的无效矩形 */ void TextLayer_ClearInvalidRect( LCUI_TextLayer *layer ) { int n; LCUI_Rect *rect_ptr; LCUI_Graph invalid_graph; if( !layer->is_using_buffer ) { DirtyRectList_Destroy( &layer->dirty_rect ); DirtyRectList_Init( &layer->dirty_rect ); return; } n = LinkedList_GetTotal( &layer->dirty_rect ); LinkedList_Goto( &layer->dirty_rect, 0 ); while(n--) { rect_ptr = (LCUI_Rect*)LinkedList_Get( &layer->dirty_rect ); Graph_Quote( &invalid_graph, &layer->graph, rect_ptr ); Graph_FillAlpha( &invalid_graph, 0 ); LinkedList_ToNext( &layer->dirty_rect ); } DirtyRectList_Destroy( &layer->dirty_rect ); DirtyRectList_Init( &layer->dirty_rect ); }
/** 部件析构函数 */ static void $(OnDestroy)( void *arg ) { LCUI_WidgetEvent e; LCUI_Widget widget = (LCUI_Widget)arg; Widget_DestroyTaskBox( widget ); LCUIEventBox_Destroy( widget->event ); widget->event = NULL; LinkedList_Destroy( &widget->children ); LinkedList_Destroy( &widget->children_show ); DirtyRectList_Destroy( &widget->dirty_rects ); /* 如果是从根级部件中移出,则触发 WET_REMOVE 事件 */ if( widget->parent == LCUIRootWidget ) { e.type_name = "TopLevelWidget"; e.target = widget; Widget_PostEvent( LCUIRootWidget, &e, (int*)WET_REMOVE ); } }
/** 销毁TextLayer */ void TextLayer_Destroy( LCUI_TextLayer *layer ) { DirtyRectList_Destroy( &layer->dirty_rect ); Graph_Free( &layer->graph ); TextRowList_Destroy( &layer->row_list ); }