本文整理汇总了C++中Way::getParent方法的典型用法代码示例。如果您正苦于以下问题:C++ Way::getParent方法的具体用法?C++ Way::getParent怎么用?C++ Way::getParent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Way
的用法示例。
在下文中一共展示了Way::getParent方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: render
void MapRenderer::render(
QPainter* P,
QMap<RenderPriority, QSet <Feature*> > theFeatures,
const RendererOptions& options,
MapView* aView
)
{
#ifndef NDEBUG
QTime Start(QTime::currentTime());
#endif
theView = aView;
theOptions = options;
QMap<RenderPriority, QSet<Feature*> >::const_iterator itm;
QSet<Feature*>::const_iterator it;
bool bgLayerVisible = TEST_RFLAGS(RendererOptions::BackgroundVisible);
bool fgLayerVisible = TEST_RFLAGS(RendererOptions::ForegroundVisible);
bool tchpLayerVisible = TEST_RFLAGS(RendererOptions::TouchupVisible);
bool lblLayerVisible = TEST_RFLAGS(RendererOptions::NamesVisible);
Way * R = NULL;
Node * Pt = NULL;
Relation * RR = NULL;
QPixmap pix(theView->size());
thePainter = new QPainter();
itm = theFeatures.constBegin();
while (itm != theFeatures.constEnd())
{
pix.fill(Qt::transparent);
thePainter->begin(&pix);
if (M_PREFS->getUseAntiAlias())
thePainter->setRenderHint(QPainter::Antialiasing);
int curLayer = (itm.key()).layer();
while (itm != theFeatures.constEnd() && (itm.key()).layer() == curLayer)
{
for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it)
{
qreal alpha = (*it)->getAlpha();
thePainter->setOpacity(alpha);
R = NULL;
Pt = NULL;
RR = NULL;
if (!(R = CAST_WAY(*it)))
if (!(Pt = CAST_NODE(*it)))
RR = CAST_RELATION(*it);
if (R) {
// If there is painter at the relation level, don't paint at the way level
bool draw = true;
for (int i=0; i<R->sizeParents(); ++i) {
if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(PixelPerM))
draw = false;
}
if (!draw)
continue;
}
if (!Pt) {
if (bgLayerVisible)
{
thePainter->save();
if (R && R->area() == 0)
thePainter->setCompositionMode(QPainter::CompositionMode_DestinationOver);
if (R)
bglayer.draw(R);
else if (Pt)
bglayer.draw(Pt);
else if (RR)
bglayer.draw(RR);
thePainter->restore();
}
if (fgLayerVisible)
{
thePainter->save();
if (R)
fglayer.draw(R);
else if (Pt)
fglayer.draw(Pt);
else if (RR)
fglayer.draw(RR);
thePainter->restore();
}
}
if (tchpLayerVisible)
{
thePainter->save();
if (R)
tchuplayer.draw(R);
else if (Pt)
//.........这里部分代码省略.........
示例2: render
void MapRenderer::render(
QPainter* P,
const QMap<RenderPriority, QSet <Feature*> >& theFeatures,
const QRectF& pViewport,
const QRect& screen,
const qreal pixelPerM,
const RendererOptions& options
)
{
theViewport = pViewport;
theScreen = screen;
thePixelPerM = pixelPerM;
qreal Aspect = (double)screen.width() / screen.height();
qreal pAspect = fabs(pViewport.width() / pViewport.height());
qreal wv, hv;
if (pAspect > Aspect) {
wv = fabs(pViewport.width());
hv = fabs(pViewport.height() * pAspect / Aspect);
} else {
wv = fabs(pViewport.width() * Aspect / pAspect);
hv = fabs(pViewport.height());
}
qreal ScaleLon = screen.width() / wv;
qreal ScaleLat = screen.height() / hv;
theTransform.reset();
theTransform.scale(ScaleLon, -ScaleLat);
theTransform.translate(-pViewport.topLeft().x(), -pViewport.topLeft().y());
theOptions = options;
theGlobalPainter = M_STYLE->getGlobalPainter();
if (theGlobalPainter.DrawNodes) {
NodeWidth = thePixelPerM*theGlobalPainter.NodesProportional+theGlobalPainter.NodesFixed;
} else {
NodeWidth = thePixelPerM * M_PREFS->getNodeSize();
if (NodeWidth > M_PREFS->getNodeSize())
NodeWidth = M_PREFS->getNodeSize();
}
bool bgLayerVisible = TEST_RFLAGS(RendererOptions::BackgroundVisible);
bool fgLayerVisible = TEST_RFLAGS(RendererOptions::ForegroundVisible);
bool tchpLayerVisible = TEST_RFLAGS(RendererOptions::TouchupVisible);
bool lblLayerVisible = TEST_RFLAGS(RendererOptions::NamesVisible);
QMap<RenderPriority, QSet<Feature*> >::const_iterator itm;
QMap<RenderPriority, QSet<Feature*> >::const_iterator itmCur;
QSet<Feature*>::const_iterator it;
thePainter = P;
thePainter->save();
thePainter->translate(screen.left(), screen.top());
itm = theFeatures.constBegin();
while (itm != theFeatures.constEnd())
{
int curLayer = (itm.key()).layer();
itmCur = itm;
while (itm != theFeatures.constEnd() && (itm.key()).layer() == curLayer)
{
if (bgLayerVisible)
{
for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) {
qreal alpha = (*it)->getAlpha();
if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting))
alpha /= 2.0;
if (alpha != 1.) {
P->save();
P->setOpacity(alpha);
}
if (CHECK_WAY(*it)) {
Way * R = STATIC_CAST_WAY(*it);
for (int i=0; i<R->sizeParents(); ++i)
if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(thePixelPerM))
continue;
bglayer.draw(R);
} else if (CHECK_NODE(*it))
bglayer.draw(STATIC_CAST_NODE(*it));
else if (CHECK_RELATION(*it))
bglayer.draw(STATIC_CAST_RELATION(*it));
if (alpha != 1.) {
P->restore();
}
}
}
++itm;
}
itm = itmCur;
while (itm != theFeatures.constEnd() && (itm.key()).layer() == curLayer)
{
if (fgLayerVisible)
{
for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) {
qreal alpha = (*it)->getAlpha();
if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting))
alpha /= 2.0;
if (alpha != 1.) {
P->save();
//.........这里部分代码省略.........
示例3: render
void MapRenderer::render(
QPainter* P,
const QMap<RenderPriority, QSet <Feature*> >& theFeatures,
const RendererOptions& options,
MapView* aView
)
{
// #ifndef NDEBUG
// QTime Start(QTime::currentTime());
// #endif
theView = aView;
theOptions = options;
theGlobalPainter = M_STYLE->getGlobalPainter();
bool bgLayerVisible = TEST_RFLAGS(RendererOptions::BackgroundVisible);
bool fgLayerVisible = TEST_RFLAGS(RendererOptions::ForegroundVisible);
bool tchpLayerVisible = TEST_RFLAGS(RendererOptions::TouchupVisible);
bool lblLayerVisible = TEST_RFLAGS(RendererOptions::NamesVisible);
QMap<RenderPriority, QSet<Feature*> >::const_iterator itm;
QMap<RenderPriority, QSet<Feature*> >::const_iterator itmCur;
QSet<Feature*>::const_iterator it;
thePainter = P;
itm = theFeatures.constBegin();
while (itm != theFeatures.constEnd())
{
int curLayer = (itm.key()).layer();
itmCur = itm;
while (itm != theFeatures.constEnd() && (itm.key()).layer() == curLayer)
{
if (bgLayerVisible)
{
for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) {
qreal alpha = (*it)->getAlpha();
if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting))
alpha /= 2.0;
if (alpha != 1.) {
P->save();
P->setOpacity(alpha);
}
if (CHECK_WAY(*it)) {
Way * R = STATIC_CAST_WAY(*it);
for (int i=0; i<R->sizeParents(); ++i)
if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(theView->pixelPerM()))
continue;
bglayer.draw(R);
} else if (CHECK_NODE(*it))
bglayer.draw(STATIC_CAST_NODE(*it));
else if (CHECK_RELATION(*it))
bglayer.draw(STATIC_CAST_RELATION(*it));
if (alpha != 1.) {
P->restore();
}
}
}
++itm;
}
itm = itmCur;
while (itm != theFeatures.constEnd() && (itm.key()).layer() == curLayer)
{
if (fgLayerVisible)
{
for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) {
qreal alpha = (*it)->getAlpha();
if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting))
alpha /= 2.0;
if (alpha != 1.) {
P->save();
P->setOpacity(alpha);
}
if (CHECK_WAY(*it)) {
Way * R = STATIC_CAST_WAY(*it);
for (int i=0; i<R->sizeParents(); ++i)
if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(theView->pixelPerM()))
continue;
fglayer.draw(R);
} else if (CHECK_NODE(*it))
fglayer.draw(STATIC_CAST_NODE(*it));
else if (CHECK_RELATION(*it))
fglayer.draw(STATIC_CAST_RELATION(*it));
if (alpha != 1.) {
P->restore();
}
}
}
++itm;
}
}
if (tchpLayerVisible)
{
for (itm = theFeatures.constBegin() ;itm != theFeatures.constEnd(); ++itm) {
for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) {
qreal alpha = (*it)->getAlpha();
if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting))
alpha /= 2.0;
//.........这里部分代码省略.........