本文整理汇总了C++中DocumentPtr::get_styleselector_array_size方法的典型用法代码示例。如果您正苦于以下问题:C++ DocumentPtr::get_styleselector_array_size方法的具体用法?C++ DocumentPtr::get_styleselector_array_size怎么用?C++ DocumentPtr::get_styleselector_array_size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DocumentPtr
的用法示例。
在下文中一共展示了DocumentPtr::get_styleselector_array_size方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ParseStyles
void ParseStyles (
DocumentPtr poKmlDocument,
OGRStyleTable ** poStyleTable )
{
/***** if document is null just bail now *****/
if ( !poKmlDocument )
return;
/***** loop over the Styles *****/
size_t nKmlStyles = poKmlDocument->get_styleselector_array_size ( );
size_t iKmlStyle;
/***** Lets first build the style table. *****/
/***** to begin this is just proper styles. *****/
for ( iKmlStyle = 0; iKmlStyle < nKmlStyles; iKmlStyle++ ) {
StyleSelectorPtr poKmlStyle =
poKmlDocument->get_styleselector_array_at ( iKmlStyle );
/***** Everything that is not a style you skip *****/
if ( !poKmlStyle->IsA ( kmldom::Type_Style ) )
continue;
/***** We need to check to see if this is the first style. if it *****/
/***** is we will not have a style table and need to create one *****/
if ( !*poStyleTable )
*poStyleTable = new OGRStyleTable ( );
/***** TODO:: Not sure we need to do this as we seem *****/
/***** to cast to element and then back to style. *****/
ElementPtr poKmlElement = AsElement ( poKmlStyle );
kml2styletable ( *poStyleTable, AsStyle ( poKmlElement ) );
}
/***** Now we have to loop back around and get the style maps. We *****/
/***** have to do this a second time since the stylemap might matter *****/
/***** and we are just looping reference styles that are farther *****/
/***** down in the file. Order through the XML as it is parsed. *****/
for ( iKmlStyle = 0; iKmlStyle < nKmlStyles; iKmlStyle++ ) {
StyleSelectorPtr poKmlStyle =
poKmlDocument->get_styleselector_array_at ( iKmlStyle );
/***** Everything that is not a stylemap you skip *****/
if ( !poKmlStyle->IsA ( kmldom::Type_StyleMap ) )
continue;
/***** We need to check to see if this is the first style. if it *****/
/***** is we will not have a style table and need to create one *****/
if ( !*poStyleTable )
*poStyleTable = new OGRStyleTable ( );
/***** copy the style the style map points to since *****/
char *pszStyleMapId = CPLStrdup ( poKmlStyle->get_id().c_str ( ) );
poKmlStyle = StyleFromStyleMap(kmldom::AsStyleMap(poKmlStyle), *poStyleTable);
if (poKmlStyle == NULL) {
CPLFree(pszStyleMapId);
continue;
}
char *pszStyleId = CPLStrdup ( poKmlStyle->get_id().c_str ( ) );
/***** TODO:: Not sure we need to do this as we seem *****/
/***** to cast to element and then back to style. *****/
ElementPtr poKmlElement = AsElement ( poKmlStyle );
kml2styletable ( *poStyleTable, AsStyle ( poKmlElement ) );
// Change the name of the new style in the style table
const char *pszTest = NULL;
pszTest = (*poStyleTable)->Find(pszStyleId);
// If we found the style we want in the style table we...
if ( pszTest ) {
(*poStyleTable)->AddStyle(pszStyleMapId, pszTest);
(*poStyleTable)->RemoveStyle ( pszStyleId );
}
CPLFree ( pszStyleId );
CPLFree ( pszStyleMapId );
}
return;
}