/** 根据字符串中的标签得到相应的样式数据,并返回指向标签后面字符的指针 */ static const wchar_t* StyleTag_ConvertTagToStyleData( const wchar_t *str, StyleTag_Data *out_data ) { const wchar_t *p, *q; char tag_data[256]; p = str; DEBUG_MSG("StyleTag_ConvertTagToStyleData(): enter\n"); if( (q = StyleTag_GetTagDataByTagName( p, "color", tag_data)) ) { int r,g,b, len, i, j; LCUI_RGB rgb; p = q; DEBUG_MSG("is color style tag, data: %s\n", tag_data); len = strlen(tag_data); for(j=0,i=0; i<len; ++i) { if(tag_data[i] == ',') { ++j; } } if(j == 2) { sscanf( tag_data, "%d,%d,%d", &r, &g, &b ); } else if(tag_data[0] == '#') { switch(len) { case 4: sscanf( tag_data, "#%1X%1X%1X", &r, &g, &b ); r<<=4; g<<=4; b<<=4; break; case 7: sscanf( tag_data, "#%2X%2X%2X", &r, &g, &b ); break; default: r=0; g=0; b=0; break; } } else { r=0; g=0; b=0; } DEBUG_MSG("color: %d,%d,%d\n", r,g,b); rgb = RGB(r, g, b); out_data->tag = TAG_ID_COLOR; out_data->style = malloc( sizeof(LCUI_RGB) ); memcpy( out_data->style, &rgb, sizeof(LCUI_RGB) ); } else if( (q = StyleTag_GetTagDataByTagName( p, "size", tag_data)) ) { PX_PT_t pxpt; p = q; if( get_PX_PT_t( tag_data, &pxpt ) != 0) { return NULL; } out_data->tag = TAG_ID_SIZE; out_data->style = malloc( sizeof(PX_PT_t) ); memcpy( out_data->style, &pxpt, sizeof(PX_PT_t) ); } else { p = NULL; } DEBUG_MSG("StyleTag_ConvertTagToStyleData(): quit\n"); return p; }
static wchar_t * covernt_tag_to_style_data (wchar_t *str, tag_style_data *out_data) /* 根据字符串中的标签得到相应的样式数据,并返回指向标签后面字符的指针 */ { wchar_t *p, *q; char tag_data[256]; p = str; //DEBUG_MSG("covernt_tag_to_style_data(): enter\n"); if( (q = get_style_tag ( p, "color", tag_data)) ) { int r,g,b, len, i, j; LCUI_RGB rgb; p = q; //DEBUG_MSG("is color style tag, data: %s\n", tag_data); len = strlen(tag_data); for(j=0,i=0; i<len; ++i) { if(tag_data[i] == ',') { ++j; } } if(j == 2) { sscanf( tag_data, "%d,%d,%d", &r, &g, &b ); } else if(tag_data[0] == '#') { switch(len) { case 4: sscanf( tag_data, "#%1X%1X%1X", &r, &g, &b ); r<<=4; g<<=4; b<<=4; break; case 7: sscanf( tag_data, "#%2X%2X%2X", &r, &g, &b ); break; default: r=0; g=0; b=0; break; } } else { r=0; g=0; b=0; } DEBUG_MSG("color: %d,%d,%d\n", r,g,b); rgb = RGB(r, g, b); out_data->tag = TAG_ID_COLOR; out_data->style = malloc( sizeof(LCUI_RGB) ); memcpy( out_data->style, &rgb, sizeof(LCUI_RGB) ); } else if( (q = get_style_tag ( p, "size", tag_data)) ) { PX_PT_t pxpt; p = q; if( get_PX_PT_t( tag_data, &pxpt ) != 0) { return NULL; } out_data->tag = TAG_ID_SIZE; out_data->style = malloc( sizeof(PX_PT_t) ); memcpy( out_data->style, &pxpt, sizeof(PX_PT_t) ); } else { p = NULL; } //DEBUG_MSG("covernt_tag_to_style_data(): quit\n"); return p; }