本文整理汇总了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;
}