/*************************** 基本的处理 *********************************/ void TextLayer_Init( LCUI_TextLayer *layer ) /* 初始化文本图层相关数据 */ { layer->using_code_mode = IS_FALSE; layer->using_style_tags = IS_FALSE; layer->enable_word_wrap = IS_FALSE; layer->enable_multiline = IS_FALSE; layer->have_select = IS_FALSE; layer->start = 0; layer->end = 0; Queue_Init( &layer->color_keyword, sizeof(Special_KeyWord), Destroy_Special_KeyWord ); /* 队列中使用链表储存这些数据 */ Queue_Init( &layer->text_source_data, sizeof(LCUI_CharData), Destroy_CharData ); Queue_Set_DataMode( &layer->text_source_data, QUEUE_DATA_MODE_LINKED_LIST ); Queue_Init( &layer->rows_data, sizeof(Text_RowData), Destroy_Text_RowData ); Queue_Init( &layer->tag_buff, sizeof(tag_style_data), destroy_tag_style_data ); Queue_Init( &layer->style_data, sizeof(LCUI_TextStyle), NULL ); RectQueue_Init( &layer->clear_area ); layer->default_data.pixel_size = 12; layer->current_src_pos = 0; layer->current_des_pos = Pos(0,0); layer->max_text_len = 5000; TextStyle_Init ( &layer->default_data ); //TextLayer_Text_Add_NewRow ( layer );/* 添加新行 */ }
static int TextLayer_Text_Insert_NewRow ( LCUI_TextLayer *layer, int row ) /* 在插入新行至指定位置 */ { Text_RowData data; data.pos = Pos(0,0); data.max_size = Size(0,0); data.last_char = NULL; Queue_Init( &data.string, sizeof(LCUI_CharData), NULL ); Queue_Set_DataMode( &data.string, QUEUE_DATA_MODE_LINKED_LIST ); Queue_Using_Pointer( &data.string ); return Queue_Insert( &layer->rows_data, row, &data ); }
static int TextLayer_Text_Add_NewRow ( LCUI_TextLayer *layer ) /* 添加新行 */ { Text_RowData data; /* 单整行最大尺寸改变时,需要移动整行,目前还未支持此功能 */ data.pos = Pos(0,0); data.max_size = Size(0,0); Queue_Init( &data.string, sizeof(LCUI_CharData), NULL ); /* 使用链表模式,方便数据的插入 */ Queue_Set_DataMode( &data.string, QUEUE_DATA_MODE_LINKED_LIST ); /* 队列成员使用指针,主要是引用text_source_data里面的数据 */ Queue_Using_Pointer( &data.string ); return Queue_Add( &layer->rows_data, &data ); }
void TextLayer_Init( LCUI_TextLayer *layer ) /* 初始化文本图层相关数据 */ { layer->read_only = FALSE; layer->using_code_mode = FALSE; layer->using_style_tags = FALSE; layer->enable_word_wrap = FALSE; layer->enable_multiline = FALSE; layer->need_proc_buff = FALSE; layer->need_scroll_layer = FALSE; layer->have_select = FALSE; layer->start = 0; layer->end = 0; layer->offset_pos = Pos(0,0); layer->old_offset_pos = Pos(0,0); Queue_Init( &layer->color_keyword, sizeof(Special_KeyWord), Destroy_Special_KeyWord ); /* 队列中使用链表储存这些数据 */ Queue_Init( &layer->text_source_data, sizeof(LCUI_CharData), Destroy_CharData ); Queue_Set_DataMode( &layer->text_source_data, QUEUE_DATA_MODE_LINKED_LIST ); Queue_Init( &layer->rows_data, sizeof(Text_RowData), Destroy_Text_RowData ); Queue_Init( &layer->tag_buff, sizeof(tag_style_data), destroy_tag_style_data ); Queue_Init( &layer->style_data, sizeof(LCUI_TextStyle), NULL ); RectQueue_Init( &layer->clear_area ); /* 初始化屏蔽符的数据 */ layer->password_char.display = TRUE; layer->password_char.need_update = FALSE; layer->password_char.data = NULL; layer->password_char.char_code = 0; FontBMP_Init( &layer->password_char.bitmap ); layer->default_data.pixel_size = 12; layer->current_src_pos = 0; layer->current_des_pos = Pos(0,0); layer->max_text_len = 5000; TextStyle_Init ( &layer->default_data ); String_Init( &layer->text_buff ); //TextLayer_Text_Add_NewRow ( layer );/* 添加新行 */ }