Пример #1
0
void TextLayer_Init( LCUI_TextLayer *layer )
{
	layer->max_width = 0;
	layer->max_height = 0;
	layer->offset_x = 0;
	layer->offset_y = 0;
	layer->new_offset_x = 0;
	layer->new_offset_y = 0;
	layer->insert_x = 0;
	layer->insert_y = 0;
	layer->is_mulitiline_mode = FALSE;
	layer->is_autowrap_mode = FALSE;
	layer->is_using_style_tags = FALSE;
	layer->is_using_buffer = TRUE;
	layer->text_align = TEXT_ALIGN_LEFT;

	layer->row_list.max_rows = 0;
	layer->row_list.rows = 0;
	layer->row_list.rowdata = NULL;
	
	TextStyle_Init( &layer->text_style );
	TaskData_Init( &layer->task );
	DirtyRectList_Init( &layer->dirty_rect );
	Graph_Init( &layer->graph );
	TextRowList_InsertNewRow( &layer->row_list, 0 );
	layer->graph.color_type = COLOR_TYPE_ARGB;
}
Пример #2
0
/** 清空文本 */
void TextLayer_ClearText( LCUI_TextLayer layer )
{
	layer->length = 0;
	layer->insert_x = 0;
	layer->insert_y = 0;
	layer->width = 0;
	TextLayer_InvalidateRowsRect( layer, 0, -1 );
	TextRowList_Destroy( &layer->rowlist );
	LinkedList_Clear( &layer->style_cache, (FuncPtr)TextStyle_Destroy );
	TextRowList_InsertNewRow( &layer->rowlist, 0 );
	layer->task.redraw_all = TRUE;
}
Пример #3
0
/** 对文本行进行断行 */
static void TextLayer_BreakTextRow( LCUI_TextLayer layer, int i_row,
				    int col, EOLChar eol )
{
	int n;
	TextRow txtrow, next_txtrow;
	txtrow = layer->rowlist.rows[i_row];
	next_txtrow = TextRowList_InsertNewRow( &layer->rowlist, i_row + 1 );
	/* 将本行原有的行尾符转移至下一行 */
	next_txtrow->eol = txtrow->eol;
	txtrow->eol = eol;
	for( n = txtrow->length - 1; n >= col; --n ) {
		TextRow_Insert( next_txtrow, 0, txtrow->string[n] );
		txtrow->string[n] = NULL;
	}
	txtrow->length = col;
	TextLayer_UpdateRowSize( layer, txtrow );
	TextLayer_UpdateRowSize( layer, next_txtrow );
}
Пример #4
0
/** 对文本行进行断行 */
static void TextLayer_BreakTextRow( LCUI_TextLayer *layer, int i_row, 
						int col, EOLChar eol )
{
	int n;
	TextRowData *p_row, *p_next_row;

	p_row = layer->row_list.rowdata[i_row];
	p_next_row = TextRowList_InsertNewRow( &layer->row_list, i_row+1 );
	/* 将本行原有的行尾符转移至下一行 */
	p_next_row->eol = p_row->eol;
	p_row->eol = eol;
	for( n=p_row->string_len-1; n>=col; --n ) {
		TextRow_Insert( p_next_row, 0, p_row->string[n] );
		p_row->string[n] = NULL;
	}
	p_row->string_len = col;
	TextRow_UpdateSize( p_row, layer->text_style.pixel_size );
	TextRow_UpdateSize( p_next_row, layer->text_style.pixel_size );
}
Пример #5
0
/** 新建文本图层 */
LCUI_TextLayer TextLayer_New(void)
{
	LCUI_TextLayer layer;
	layer = malloc( sizeof( LCUI_TextLayerRec ) );
	layer->width = 0;
	layer->length = 0;
	layer->offset_x = 0;
	layer->offset_y = 0;
	layer->insert_x = 0;
	layer->insert_y = 0;
	layer->max_width = 0;
	layer->max_height = 0;
	layer->fixed_width = 0;
	layer->fixed_height = 0;
	layer->new_offset_x = 0;
	layer->new_offset_y = 0;
	layer->rowlist.length = 0;
	layer->rowlist.rows = NULL;
	layer->text_align = SV_LEFT;
	layer->is_using_buffer = FALSE;
	layer->is_autowrap_mode = FALSE;
	layer->is_mulitiline_mode = FALSE;
	layer->is_using_style_tags = FALSE;
	layer->line_height.scale = 1.428f;
	layer->line_height.type = SVT_SCALE;
	TextStyle_Init( &layer->text_style );
	LinkedList_Init( &layer->style_cache );
	layer->task.typeset_start_row = 0;
	layer->task.update_typeset = 0;
	layer->task.update_bitmap = 0;
	layer->task.redraw_all = 0;
	Graph_Init( &layer->graph );
	LinkedList_Init( &layer->dirty_rect );
	layer->graph.color_type = COLOR_TYPE_ARGB;
	TextRowList_InsertNewRow( &layer->rowlist, 0 );
	return layer;
}