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


C++ Style::draw方法代码示例

本文整理汇总了C++中Style::draw方法的典型用法代码示例。如果您正苦于以下问题:C++ Style::draw方法的具体用法?C++ Style::draw怎么用?C++ Style::draw使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Style的用法示例。


在下文中一共展示了Style::draw方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: draw

bool GlEditLayerOverlay::draw()
{
    if(!visible()) {
        return true;
    }

    if(isCrossVisible()) {
        fillCrossElement();
    }
    else if(!m_walkingMode) {
        auto findIt = m_elements.find(EET_SELECTED_POINT);
        if(m_elements.end() == findIt || !findIt->second) {
            // One of the vertices must always be selected.
            return false; // Data is not yet loaded.
        }
    }

    for(auto it = m_elements.begin(); it != m_elements.end(); ++it) {
        GlObjectPtr glBuffer = it->second;
        if(!glBuffer) {
            continue;
        }

        enum ngsEditElementType styleType = it->first;
        Style *style = nullptr;
        if(EET_POINT == styleType ||
           EET_SELECTED_POINT == styleType ||
           EET_WALK_POINT == styleType ||
           EET_MEDIAN_POINT == styleType ||
           EET_SELECTED_MEDIAN_POINT == styleType) {
            style = m_pointStyle.get();

            EditPointStyle *editPointStyle = ngsDynamicCast(EditPointStyle,
                                                            m_pointStyle);
            if(editPointStyle) {
                editPointStyle->setEditElementType(it->first);
            }
        }
        if(EET_LINE == styleType || EET_SELECTED_LINE == styleType) {
            style = m_lineStyle.get();
            m_lineStyle->setEditElementType(it->first);
        }
        if(EET_POLYGON == styleType || EET_SELECTED_POLYGON == styleType) {
            style = m_fillStyle.get();
            m_fillStyle->setEditElementType(it->first);
        }
        if(EET_CROSS == styleType) {
            style = m_crossStyle.get();
        }
        if(!style) {
            continue;
        }

        VectorGlObject *vectorGlBuffer = ngsDynamicCast(VectorGlObject, glBuffer);
        for(const GlBufferPtr& buff : vectorGlBuffer->buffers()) {
            if(buff->bound()) {
                buff->rebind();
            }
            else {
                buff->bind();
            }

            style->prepare(m_map->getSceneMatrix(), m_map->getInvViewMatrix(),
                           buff->type());
            style->draw(*buff);
        }
    }
    return true;
}
开发者ID:nextgis,项目名称:nextgis_datastore,代码行数:69,代码来源:overlay.cpp


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