当前位置: 首页>>代码示例>>C++>>正文


C++ DocumentPtr::get_styleselector_array_size方法代码示例

本文整理汇总了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;
}
开发者ID:afarnham,项目名称:gdal,代码行数:91,代码来源:ogrlibkmlstyle.cpp


注:本文中的DocumentPtr::get_styleselector_array_size方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。