Added the possibility for renderers to have different transparency levels for different classes

git-svn-id: http://svn.osgeo.org/qgis/trunk@6967 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
mhugent 2007-05-30 10:02:12 +00:00
parent be40dae943
commit 44d8225e7d
3 changed files with 26 additions and 3 deletions

View File

@ -38,6 +38,9 @@ class QgsRenderer /Abstract/
static void setSelectionColor(QColor color);
/**Returns true if this renderer returns a pixmap in the render method (e.g. for point data or diagrams)*/
virtual bool containsPixmap() const;
/**Returns true if this renderer uses its own transparency settings, e.g. differentiated by classification.
This is a hint for QgsVectorLayer to not use the transparency setting on layer level in this cases*/
virtual bool usesTransparency() const;
};

View File

@ -407,7 +407,12 @@ unsigned char* QgsVectorLayer::drawLineString(unsigned char* feature,
//
QPen myTransparentPen = p->pen(); // store current pen
QColor myColor = myTransparentPen.color();
myColor.setAlpha(mTransparencyLevel);
//only set transparency from layer level if renderer does not provide
//transparency on class level
if(!mRenderer->usesTransparency())
{
myColor.setAlpha(mTransparencyLevel);
}
myTransparentPen.setColor(myColor);
p->setPen(myTransparentPen);
p->drawPolyline(pa);
@ -631,11 +636,23 @@ std::cerr << i << ": " << ring->first[i]
//
QBrush myTransparentBrush = p->brush();
QColor myColor = brush.color();
myColor.setAlpha(mTransparencyLevel);
//only set transparency from layer level if renderer does not provide
//transparency on class level
if(!mRenderer->usesTransparency())
{
myColor.setAlpha(mTransparencyLevel);
}
myTransparentBrush.setColor(myColor);
QPen myTransparentPen = p->pen(); // store current pen
myColor = myTransparentPen.color();
myColor.setAlpha(mTransparencyLevel);
//only set transparency from layer level if renderer does not provide
//transparency on class level
if(!mRenderer->usesTransparency())
{
myColor.setAlpha(mTransparencyLevel);
}
myTransparentPen.setColor(myColor);
p->setBrush(myTransparentBrush);

View File

@ -73,6 +73,9 @@ class CORE_EXPORT QgsRenderer
static void setSelectionColor(QColor color);
/**Returns true if this renderer returns a pixmap in the render method (e.g. for point data or diagrams)*/
virtual bool containsPixmap() const;
/**Returns true if this renderer uses its own transparency settings, e.g. differentiated by classification.
This is a hint for QgsVectorLayer to not use the transparency setting on layer level in this cases*/
virtual bool usesTransparency() const {return false;}
protected:
/**Color to draw selected features - static so we can change it in proj props and automatically