mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
sip sync and indentation update
This commit is contained in:
parent
7e5b6f735d
commit
a168b9031b
@ -5,66 +5,70 @@ class QgsInvertedPolygonRenderer : QgsFeatureRendererV2
|
||||
%End
|
||||
public:
|
||||
|
||||
/** Constructor
|
||||
* @param embeddedRenderer optional embeddedRenderer. If null, a default one will be assigned
|
||||
*/
|
||||
QgsInvertedPolygonRenderer( const QgsFeatureRendererV2* embeddedRenderer /Transfer/ = 0 );
|
||||
virtual ~QgsInvertedPolygonRenderer();
|
||||
/** Constructor
|
||||
* @param embeddedRenderer optional embeddedRenderer. If null, a default one will be assigned
|
||||
*/
|
||||
QgsInvertedPolygonRenderer( const QgsFeatureRendererV2* embeddedRenderer /Transfer/ = 0 );
|
||||
virtual ~QgsInvertedPolygonRenderer();
|
||||
|
||||
/** Used to clone this feature renderer.*/
|
||||
virtual QgsFeatureRendererV2* clone() /Factory/;
|
||||
/** Used to clone this feature renderer.*/
|
||||
virtual QgsFeatureRendererV2* clone() /Factory/;
|
||||
|
||||
virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
|
||||
virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
|
||||
|
||||
/** Renders a given feature.
|
||||
* This will here collect features. The actual rendering will be postponed to stopRender()
|
||||
* @param feature the feature to render
|
||||
* @param context the rendering context
|
||||
* @param layer the symbol layer to render, if that makes sense
|
||||
* @param selected whether this feature has been selected (this will add decorations)
|
||||
* @param drawVertexMarker whether this feature has vertex markers (in edit mode usually)
|
||||
* @returns true if the rendering was ok
|
||||
*/
|
||||
virtual bool renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool selected = false, bool drawVertexMarker = false );
|
||||
/** Renders a given feature.
|
||||
* This will here collect features. The actual rendering will be postponed to stopRender()
|
||||
* @param feature the feature to render
|
||||
* @param context the rendering context
|
||||
* @param layer the symbol layer to render, if that makes sense
|
||||
* @param selected whether this feature has been selected (this will add decorations)
|
||||
* @param drawVertexMarker whether this feature has vertex markers (in edit mode usually)
|
||||
* @returns true if the rendering was ok
|
||||
*/
|
||||
virtual bool renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool selected = false, bool drawVertexMarker = false );
|
||||
|
||||
/**
|
||||
* The actual rendering will take place here.
|
||||
* Features collected during renderFeature() are rendered using the embedded feature renderer
|
||||
*/
|
||||
virtual void stopRender( QgsRenderContext& context );
|
||||
/**
|
||||
* The actual rendering will take place here.
|
||||
* Features collected during renderFeature() are rendered using the embedded feature renderer
|
||||
*/
|
||||
virtual void stopRender( QgsRenderContext& context );
|
||||
|
||||
/** @returns a textual reprensation of the renderer */
|
||||
virtual QString dump() const;
|
||||
/** @returns a textual representation of the renderer */
|
||||
virtual QString dump() const;
|
||||
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QList<QString> usedAttributes();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual int capabilities();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2List symbols();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2List symbolsForFeature( QgsFeature& feat );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual bool willRenderFeature( QgsFeature& feat );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QList<QString> usedAttributes();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual int capabilities();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2List symbols();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2List symbolsForFeature( QgsFeature& feat );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
|
||||
/** Proxy that will call this method on the embedded renderer.
|
||||
@note not available in python bindings
|
||||
*/
|
||||
// virtual QgsLegendSymbolList legendSymbolItems( double scaleDenominator = -1, QString rule = "" );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual bool willRenderFeature( QgsFeature& feat );
|
||||
|
||||
/** Creates a renderer out of an XML, for loading*/
|
||||
static QgsFeatureRendererV2* create( QDomElement& element ) /Factory/;
|
||||
/** Creates a renderer out of an XML, for loading*/
|
||||
static QgsFeatureRendererV2* create( QDomElement& element ) /Factory/;
|
||||
|
||||
/** Creates an XML representation of the renderer. Used for saving purpose
|
||||
* @param doc the XML document where to create the XML subtree
|
||||
* @returns the created XML subtree
|
||||
*/
|
||||
virtual QDomElement save( QDomDocument& doc );
|
||||
/** Creates an XML representation of the renderer. Used for saving purpose
|
||||
* @param doc the XML document where to create the XML subtree
|
||||
* @returns the created XML subtree
|
||||
*/
|
||||
virtual QDomElement save( QDomDocument& doc );
|
||||
|
||||
/** sets the embedded renderer
|
||||
* @param subRenderer the embedded renderer (will be cloned)
|
||||
*/
|
||||
void setEmbeddedRenderer( const QgsFeatureRendererV2* subRenderer );
|
||||
/** @returns the current embedded renderer
|
||||
*/
|
||||
const QgsFeatureRendererV2* embeddedRenderer() const;
|
||||
/** sets the embedded renderer
|
||||
* @param subRenderer the embedded renderer (will be cloned)
|
||||
*/
|
||||
void setEmbeddedRenderer( const QgsFeatureRendererV2* subRenderer );
|
||||
/** @returns the current embedded renderer
|
||||
*/
|
||||
const QgsFeatureRendererV2* embeddedRenderer() const;
|
||||
};
|
||||
|
@ -3,21 +3,21 @@ class QgsInvertedPolygonRendererWidget : QgsRendererV2Widget
|
||||
%TypeHeaderCode
|
||||
#include <qgsinvertedpolygonrendererwidget.h>
|
||||
%End
|
||||
public:
|
||||
/** static creation method
|
||||
* @param layer the layer where this renderer is applied
|
||||
* @param style
|
||||
* @param renderer the mask renderer (will take ownership)
|
||||
*/
|
||||
static QgsRendererV2Widget* create( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) /Factory/;
|
||||
public:
|
||||
/** static creation method
|
||||
* @param layer the layer where this renderer is applied
|
||||
* @param style
|
||||
* @param renderer the mask renderer (will take ownership)
|
||||
*/
|
||||
static QgsRendererV2Widget* create( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) /Factory/;
|
||||
|
||||
/** Constructor
|
||||
* @param layer the layer where this renderer is applied
|
||||
* @param style
|
||||
* @param renderer the mask renderer (will take ownership)
|
||||
*/
|
||||
QgsInvertedPolygonRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer );
|
||||
/** Constructor
|
||||
* @param layer the layer where this renderer is applied
|
||||
* @param style
|
||||
* @param renderer the mask renderer (will take ownership)
|
||||
*/
|
||||
QgsInvertedPolygonRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer );
|
||||
|
||||
/** @returns the current feature renderer */
|
||||
virtual QgsFeatureRendererV2* renderer();
|
||||
/** @returns the current feature renderer */
|
||||
virtual QgsFeatureRendererV2* renderer();
|
||||
};
|
||||
|
@ -22,30 +22,6 @@ set -e
|
||||
export elcr="$(tput el)$(tput cr)"
|
||||
|
||||
find python src tests -type f -print | while read f; do
|
||||
case "$f" in
|
||||
src/app/gps/qwtpolar-*|src/core/spatialite/*|src/core/spatialindex/src/*|src/core/gps/qextserialport/*|src/plugins/grass/qtermwidget/*|src/astyle/*|python/ext-libs/*|src/providers/sqlanywhere/sqlanyconnection/*|src/providers/spatialite/qspatialite/*|src/plugins/dxf2shp_converter/dxflib/src/*|src/plugins/globe/osgEarthQt/*|src/plugins/globe/osgEarthUtil/*)
|
||||
echo $f skipped
|
||||
continue
|
||||
;;
|
||||
|
||||
*.cpp|*.h|*.c|*.h|*.cxx|*.hxx|*.c++|*.h++|*.cc|*.hh|*.C|*.H|*.hpp)
|
||||
cmd=astyle.sh
|
||||
;;
|
||||
|
||||
*.ui|*.qgm|*.txt|*.t2t|*.sip|resources/context_help/*)
|
||||
cmd="flip -ub"
|
||||
;;
|
||||
|
||||
*.py)
|
||||
cmd="perl -i.prepare -pe 's/[\r\t ]+$//;'"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo -ne "$f skipped $elcr"
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -f "$f.astyle" ]; then
|
||||
# reformat backup
|
||||
cp "$f.astyle" "$f"
|
||||
@ -56,8 +32,8 @@ find python src tests -type f -print | while read f; do
|
||||
touch -r "$f" "$f.astyle"
|
||||
fi
|
||||
|
||||
echo -ne "Reformating $f $elcr"
|
||||
eval "$cmd '$f'"
|
||||
echo -ne "Reformatting $f $elcr"
|
||||
astyle.sh "$f"
|
||||
done
|
||||
|
||||
echo
|
||||
|
@ -59,6 +59,30 @@ $ARTISTIC_STYLE_OPTIONS \
|
||||
--unpad=paren"
|
||||
|
||||
for f in "$@"; do
|
||||
case "$f" in
|
||||
src/app/gps/qwtpolar-*|src/core/spatialite/*|src/core/spatialindex/src/*|src/core/gps/qextserialport/*|src/plugins/grass/qtermwidget/*|src/astyle/*|python/ext-libs/*|src/providers/sqlanywhere/sqlanyconnection/*|src/providers/spatialite/qspatialite/*|src/plugins/dxf2shp_converter/dxflib/src/*|src/plugins/globe/osgEarthQt/*|src/plugins/globe/osgEarthUtil/*)
|
||||
echo $f skipped
|
||||
continue
|
||||
;;
|
||||
|
||||
*.cpp|*.h|*.c|*.h|*.cxx|*.hxx|*.c++|*.h++|*.cc|*.hh|*.C|*.H|*.hpp)
|
||||
cmd="$ASTYLE $ARTISTIC_STYLE_OPTIONS"
|
||||
;;
|
||||
|
||||
*.ui|*.qgm|*.txt|*.t2t|*.sip|resources/context_help/*)
|
||||
cmd=:
|
||||
;;
|
||||
|
||||
*.py)
|
||||
cmd="perl -i.prepare -pe 's/[\r\t ]+$//;'"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo -ne "$f skipped $elcr"
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
if ! [ -f "$f" ]; then
|
||||
echo "$f not found" >&2
|
||||
continue
|
||||
@ -66,5 +90,5 @@ for f in "$@"; do
|
||||
|
||||
flip -ub "$f"
|
||||
#qgsloggermig.pl "$f"
|
||||
$ASTYLE $ARTISTIC_STYLE_OPTIONS "$f"
|
||||
eval "$cmd '$f'"
|
||||
done
|
||||
|
@ -28,12 +28,14 @@
|
||||
#include <QDomElement>
|
||||
|
||||
QgsInvertedPolygonRenderer::QgsInvertedPolygonRenderer( const QgsFeatureRendererV2* subRenderer )
|
||||
: QgsFeatureRendererV2( "invertedPolygonRenderer" )
|
||||
: QgsFeatureRendererV2( "invertedPolygonRenderer" )
|
||||
{
|
||||
if ( subRenderer ) {
|
||||
if ( subRenderer )
|
||||
{
|
||||
setEmbeddedRenderer( subRenderer );
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
mSubRenderer.reset( QgsFeatureRendererV2::defaultRenderer( QGis::Polygon ) );
|
||||
}
|
||||
}
|
||||
@ -44,10 +46,12 @@ QgsInvertedPolygonRenderer::~QgsInvertedPolygonRenderer()
|
||||
|
||||
void QgsInvertedPolygonRenderer::setEmbeddedRenderer( const QgsFeatureRendererV2* subRenderer )
|
||||
{
|
||||
if ( subRenderer ) {
|
||||
mSubRenderer.reset( const_cast<QgsFeatureRendererV2*>(subRenderer)->clone() );
|
||||
if ( subRenderer )
|
||||
{
|
||||
mSubRenderer.reset( const_cast<QgsFeatureRendererV2*>( subRenderer )->clone() );
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
mSubRenderer.reset( 0 );
|
||||
}
|
||||
}
|
||||
@ -59,7 +63,8 @@ const QgsFeatureRendererV2* QgsInvertedPolygonRenderer::embeddedRenderer() const
|
||||
|
||||
void QgsInvertedPolygonRenderer::startRender( QgsRenderContext& context, const QgsFields& fields )
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@ -90,14 +95,14 @@ void QgsInvertedPolygonRenderer::startRender( QgsRenderContext& context, const Q
|
||||
// If we don't do that, there is no need to have a simple rectangular extent
|
||||
// that covers the whole screen
|
||||
// (a rectangle in the destCRS cannot be expressed as valid coordinates in the sourceCRS in general)
|
||||
if (mTransform)
|
||||
if ( mTransform )
|
||||
{
|
||||
// disable projection
|
||||
context.setCoordinateTransform(0);
|
||||
context.setCoordinateTransform( 0 );
|
||||
}
|
||||
|
||||
mExtentPolygon.clear();
|
||||
mExtentPolygon.append(exteriorRing);
|
||||
mExtentPolygon.append( exteriorRing );
|
||||
}
|
||||
|
||||
bool QgsInvertedPolygonRenderer::renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer, bool selected, bool drawVertexMarker )
|
||||
@ -107,7 +112,7 @@ bool QgsInvertedPolygonRenderer::renderFeature( QgsFeature& feature, QgsRenderCo
|
||||
// store this feature as a feature to render with decoration if needed
|
||||
if ( selected || drawVertexMarker )
|
||||
{
|
||||
mFeatureDecorations.append( FeatureDecoration( feature, selected, drawVertexMarker, layer) );
|
||||
mFeatureDecorations.append( FeatureDecoration( feature, selected, drawVertexMarker, layer ) );
|
||||
}
|
||||
|
||||
// Features are grouped by category of symbols (returned by symbol(s)ForFeature)
|
||||
@ -116,7 +121,7 @@ bool QgsInvertedPolygonRenderer::renderFeature( QgsFeature& feature, QgsRenderCo
|
||||
// that have transparency.
|
||||
//
|
||||
// In order to assign a unique category to a set of symbols
|
||||
// during each rendering session (between startRender() and stopRender()),
|
||||
// during each rendering session (between startRender() and stopRender()),
|
||||
// we build an unique id as a QByteArray that is the concatenation
|
||||
// of each symbol's memory address.
|
||||
// The only assumption made here is that symbol(s)ForFeature will
|
||||
@ -125,19 +130,21 @@ bool QgsInvertedPolygonRenderer::renderFeature( QgsFeature& feature, QgsRenderCo
|
||||
// This QByteArray can then be used as a key for a QMap where the list of
|
||||
// features for this category is stored
|
||||
QByteArray catId;
|
||||
if ( capabilities() & MoreSymbolsPerFeature ) {
|
||||
if ( capabilities() & MoreSymbolsPerFeature )
|
||||
{
|
||||
QgsSymbolV2List syms( mSubRenderer->symbolsForFeature( feature ) );
|
||||
foreach ( QgsSymbolV2* sym, syms )
|
||||
{
|
||||
// append the memory address
|
||||
catId.append( reinterpret_cast<const char*>(&sym), sizeof(sym) );
|
||||
catId.append( reinterpret_cast<const char*>( &sym ), sizeof( sym ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QgsSymbolV2* sym = mSubRenderer->symbolForFeature( feature );
|
||||
if (sym) {
|
||||
catId.append( reinterpret_cast<const char*>(&sym), sizeof(sym) );
|
||||
if ( sym )
|
||||
{
|
||||
catId.append( reinterpret_cast<const char*>( &sym ), sizeof( sym ) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,7 +162,7 @@ bool QgsInvertedPolygonRenderer::renderFeature( QgsFeature& feature, QgsRenderCo
|
||||
//
|
||||
// No validity check is done, on purpose, it will be very slow and painting
|
||||
// operations do not need geometries to be valid
|
||||
if ( ! mFeaturesCategoryMap.contains(catId) )
|
||||
if ( ! mFeaturesCategoryMap.contains( catId ) )
|
||||
{
|
||||
// the exterior ring must be a square in the destination CRS
|
||||
CombinedFeature cFeat;
|
||||
@ -173,21 +180,26 @@ bool QgsInvertedPolygonRenderer::renderFeature( QgsFeature& feature, QgsRenderCo
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ( (geom->wkbType() == QGis::WKBPolygon) ||
|
||||
(geom->wkbType() == QGis::WKBPolygon25D) ) {
|
||||
multi.append(geom->asPolygon() );
|
||||
if (( geom->wkbType() == QGis::WKBPolygon ) ||
|
||||
( geom->wkbType() == QGis::WKBPolygon25D ) )
|
||||
{
|
||||
multi.append( geom->asPolygon() );
|
||||
}
|
||||
else if ( (geom->wkbType() == QGis::WKBMultiPolygon) ||
|
||||
(geom->wkbType() == QGis::WKBMultiPolygon25D) ) {
|
||||
else if (( geom->wkbType() == QGis::WKBMultiPolygon ) ||
|
||||
( geom->wkbType() == QGis::WKBMultiPolygon25D ) )
|
||||
{
|
||||
multi = geom->asMultiPolygon();
|
||||
}
|
||||
|
||||
for ( int i = 0; i < multi.size(); i++ ) {
|
||||
for ( int i = 0; i < multi.size(); i++ )
|
||||
{
|
||||
// add the exterior ring as interior ring to the first polygon
|
||||
if ( mTransform ) {
|
||||
if ( mTransform )
|
||||
{
|
||||
QgsPolyline new_ls;
|
||||
QgsPolyline& old_ls = multi[i][0];
|
||||
for ( int k = 0; k < old_ls.size(); k++ ) {
|
||||
for ( int k = 0; k < old_ls.size(); k++ )
|
||||
{
|
||||
new_ls.append( mTransform->transform( old_ls[k] ) );
|
||||
}
|
||||
cFeat.multiPolygon[0].append( new_ls );
|
||||
@ -197,12 +209,15 @@ bool QgsInvertedPolygonRenderer::renderFeature( QgsFeature& feature, QgsRenderCo
|
||||
cFeat.multiPolygon[0].append( multi[i][0] );
|
||||
}
|
||||
// add interior rings as new polygons
|
||||
for ( int j = 1; j < multi[i].size(); j++ ) {
|
||||
for ( int j = 1; j < multi[i].size(); j++ )
|
||||
{
|
||||
QgsPolygon new_poly;
|
||||
if ( mTransform ) {
|
||||
if ( mTransform )
|
||||
{
|
||||
QgsPolyline new_ls;
|
||||
QgsPolyline& old_ls = multi[i][j];
|
||||
for ( int k = 0; k < old_ls.size(); k++ ) {
|
||||
for ( int k = 0; k < old_ls.size(); k++ )
|
||||
{
|
||||
new_ls.append( mTransform->transform( old_ls[k] ) );
|
||||
}
|
||||
new_poly.append( new_ls );
|
||||
@ -220,11 +235,12 @@ bool QgsInvertedPolygonRenderer::renderFeature( QgsFeature& feature, QgsRenderCo
|
||||
|
||||
void QgsInvertedPolygonRenderer::stopRender( QgsRenderContext& context )
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for ( FeatureCategoryMap::iterator cit = mFeaturesCategoryMap.begin(); cit != mFeaturesCategoryMap.end(); ++cit)
|
||||
for ( FeatureCategoryMap::iterator cit = mFeaturesCategoryMap.begin(); cit != mFeaturesCategoryMap.end(); ++cit )
|
||||
{
|
||||
QgsFeature feat( cit.value().feature );
|
||||
feat.setGeometry( QgsGeometry::fromMultiPolygon( cit.value().multiPolygon ) );
|
||||
@ -244,7 +260,7 @@ void QgsInvertedPolygonRenderer::stopRender( QgsRenderContext& context )
|
||||
}
|
||||
|
||||
// draw feature decorations
|
||||
foreach (FeatureDecoration deco, mFeatureDecorations )
|
||||
foreach ( FeatureDecoration deco, mFeatureDecorations )
|
||||
{
|
||||
mSubRenderer->renderFeature( deco.feature, context, deco.layer, deco.selected, deco.drawMarkers );
|
||||
}
|
||||
@ -260,7 +276,8 @@ void QgsInvertedPolygonRenderer::stopRender( QgsRenderContext& context )
|
||||
|
||||
QString QgsInvertedPolygonRenderer::dump() const
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return "INVERTED: NULL";
|
||||
}
|
||||
return "INVERTED [" + mSubRenderer->dump() + "]";
|
||||
@ -304,7 +321,8 @@ QDomElement QgsInvertedPolygonRenderer::save( QDomDocument& doc )
|
||||
|
||||
QgsSymbolV2* QgsInvertedPolygonRenderer::symbolForFeature( QgsFeature& feature )
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return mSubRenderer->symbolForFeature( feature );
|
||||
@ -312,7 +330,8 @@ QgsSymbolV2* QgsInvertedPolygonRenderer::symbolForFeature( QgsFeature& feature )
|
||||
|
||||
QgsSymbolV2List QgsInvertedPolygonRenderer::symbolsForFeature( QgsFeature& feature )
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return QgsSymbolV2List();
|
||||
}
|
||||
return mSubRenderer->symbolsForFeature( feature );
|
||||
@ -320,7 +339,8 @@ QgsSymbolV2List QgsInvertedPolygonRenderer::symbolsForFeature( QgsFeature& featu
|
||||
|
||||
QgsSymbolV2List QgsInvertedPolygonRenderer::symbols()
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return QgsSymbolV2List();
|
||||
}
|
||||
return mSubRenderer->symbols();
|
||||
@ -328,7 +348,8 @@ QgsSymbolV2List QgsInvertedPolygonRenderer::symbols()
|
||||
|
||||
int QgsInvertedPolygonRenderer::capabilities()
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return mSubRenderer->capabilities();
|
||||
@ -336,7 +357,8 @@ int QgsInvertedPolygonRenderer::capabilities()
|
||||
|
||||
QList<QString> QgsInvertedPolygonRenderer::usedAttributes()
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return QList<QString>();
|
||||
}
|
||||
return mSubRenderer->usedAttributes();
|
||||
@ -344,7 +366,8 @@ QList<QString> QgsInvertedPolygonRenderer::usedAttributes()
|
||||
|
||||
QgsLegendSymbologyList QgsInvertedPolygonRenderer::legendSymbologyItems( QSize iconSize )
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return QgsLegendSymbologyList();
|
||||
}
|
||||
return mSubRenderer->legendSymbologyItems( iconSize );
|
||||
@ -352,7 +375,8 @@ QgsLegendSymbologyList QgsInvertedPolygonRenderer::legendSymbologyItems( QSize i
|
||||
|
||||
QgsLegendSymbolList QgsInvertedPolygonRenderer::legendSymbolItems( double scaleDenominator, QString rule )
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return QgsLegendSymbolList();
|
||||
}
|
||||
return mSubRenderer->legendSymbolItems( scaleDenominator, rule );
|
||||
@ -360,7 +384,8 @@ QgsLegendSymbolList QgsInvertedPolygonRenderer::legendSymbolItems( double scaleD
|
||||
|
||||
bool QgsInvertedPolygonRenderer::willRenderFeature( QgsFeature& feat )
|
||||
{
|
||||
if ( !mSubRenderer ) {
|
||||
if ( !mSubRenderer )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return mSubRenderer->willRenderFeature( feat );
|
||||
|
@ -31,7 +31,7 @@
|
||||
*
|
||||
* It is designed on top of another feature renderer, which is called "embedded"
|
||||
* Most of the methods are then only proxies to the embedded renderer.
|
||||
*
|
||||
*
|
||||
* Features are collected to form one "inverted" polygon
|
||||
* during renderFeature() and rendered on stopRender().
|
||||
*
|
||||
@ -41,112 +41,114 @@ class CORE_EXPORT QgsInvertedPolygonRenderer : public QgsFeatureRendererV2
|
||||
{
|
||||
public:
|
||||
|
||||
/** Constructor
|
||||
* @param embeddedRenderer optional embeddedRenderer. If null, a default one will be assigned
|
||||
*/
|
||||
QgsInvertedPolygonRenderer( const QgsFeatureRendererV2* embeddedRenderer = 0 );
|
||||
virtual ~QgsInvertedPolygonRenderer();
|
||||
/** Constructor
|
||||
* @param embeddedRenderer optional embeddedRenderer. If null, a default one will be assigned
|
||||
*/
|
||||
QgsInvertedPolygonRenderer( const QgsFeatureRendererV2* embeddedRenderer = 0 );
|
||||
virtual ~QgsInvertedPolygonRenderer();
|
||||
|
||||
/** Used to clone this feature renderer.*/
|
||||
virtual QgsFeatureRendererV2* clone();
|
||||
/** Used to clone this feature renderer.*/
|
||||
virtual QgsFeatureRendererV2* clone();
|
||||
|
||||
virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
|
||||
virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
|
||||
|
||||
/** Renders a given feature.
|
||||
* This will here collect features. The actual rendering will be postponed to stopRender()
|
||||
* @param feature the feature to render
|
||||
* @param context the rendering context
|
||||
* @param layer the symbol layer to render, if that makes sense
|
||||
* @param selected whether this feature has been selected (this will add decorations)
|
||||
* @param drawVertexMarker whether this feature has vertex markers (in edit mode usually)
|
||||
* @returns true if the rendering was ok
|
||||
*/
|
||||
virtual bool renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool selected = false, bool drawVertexMarker = false );
|
||||
/** Renders a given feature.
|
||||
* This will here collect features. The actual rendering will be postponed to stopRender()
|
||||
* @param feature the feature to render
|
||||
* @param context the rendering context
|
||||
* @param layer the symbol layer to render, if that makes sense
|
||||
* @param selected whether this feature has been selected (this will add decorations)
|
||||
* @param drawVertexMarker whether this feature has vertex markers (in edit mode usually)
|
||||
* @returns true if the rendering was ok
|
||||
*/
|
||||
virtual bool renderFeature( QgsFeature& feature, QgsRenderContext& context, int layer = -1, bool selected = false, bool drawVertexMarker = false );
|
||||
|
||||
/**
|
||||
* The actual rendering will take place here.
|
||||
* Features collected during renderFeature() are rendered using the embedded feature renderer
|
||||
*/
|
||||
virtual void stopRender( QgsRenderContext& context );
|
||||
/**
|
||||
* The actual rendering will take place here.
|
||||
* Features collected during renderFeature() are rendered using the embedded feature renderer
|
||||
*/
|
||||
virtual void stopRender( QgsRenderContext& context );
|
||||
|
||||
/** @returns a textual reprensation of the renderer */
|
||||
virtual QString dump() const;
|
||||
/** @returns a textual representation of the renderer */
|
||||
virtual QString dump() const;
|
||||
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QList<QString> usedAttributes();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual int capabilities();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2List symbols();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2List symbolsForFeature( QgsFeature& feat );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsLegendSymbolList legendSymbolItems( double scaleDenominator = -1, QString rule = "" );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual bool willRenderFeature( QgsFeature& feat );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QList<QString> usedAttributes();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual int capabilities();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2List symbols();
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsSymbolV2List symbolsForFeature( QgsFeature& feat );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
|
||||
/** Proxy that will call this method on the embedded renderer.
|
||||
@note not available in python bindings
|
||||
*/
|
||||
virtual QgsLegendSymbolList legendSymbolItems( double scaleDenominator = -1, QString rule = "" );
|
||||
/** Proxy that will call this method on the embedded renderer. */
|
||||
virtual bool willRenderFeature( QgsFeature& feat );
|
||||
|
||||
/** Creates a renderer out of an XML, for loading*/
|
||||
static QgsFeatureRendererV2* create( QDomElement& element );
|
||||
/** Creates a renderer out of an XML, for loading*/
|
||||
static QgsFeatureRendererV2* create( QDomElement& element );
|
||||
|
||||
/** Creates an XML representation of the renderer. Used for saving purpose
|
||||
* @param doc the XML document where to create the XML subtree
|
||||
* @returns the created XML subtree
|
||||
*/
|
||||
virtual QDomElement save( QDomDocument& doc );
|
||||
/** Creates an XML representation of the renderer. Used for saving purpose
|
||||
* @param doc the XML document where to create the XML subtree
|
||||
* @returns the created XML subtree
|
||||
*/
|
||||
virtual QDomElement save( QDomDocument& doc );
|
||||
|
||||
/** sets the embedded renderer
|
||||
* @param subRenderer the embedded renderer (will be cloned)
|
||||
*/
|
||||
void setEmbeddedRenderer( const QgsFeatureRendererV2* subRenderer );
|
||||
/** @returns the current embedded renderer
|
||||
*/
|
||||
const QgsFeatureRendererV2* embeddedRenderer() const;
|
||||
/** sets the embedded renderer
|
||||
* @param subRenderer the embedded renderer (will be cloned)
|
||||
*/
|
||||
void setEmbeddedRenderer( const QgsFeatureRendererV2* subRenderer );
|
||||
/** @returns the current embedded renderer
|
||||
*/
|
||||
const QgsFeatureRendererV2* embeddedRenderer() const;
|
||||
|
||||
private:
|
||||
/** Private copy constructor. @see clone() */
|
||||
QgsInvertedPolygonRenderer( const QgsInvertedPolygonRenderer& );
|
||||
/** Private assignment operator. @see clone() */
|
||||
QgsInvertedPolygonRenderer& operator=( const QgsInvertedPolygonRenderer& );
|
||||
private:
|
||||
/** Private copy constructor. @see clone() */
|
||||
QgsInvertedPolygonRenderer( const QgsInvertedPolygonRenderer& );
|
||||
/** Private assignment operator. @see clone() */
|
||||
QgsInvertedPolygonRenderer& operator=( const QgsInvertedPolygonRenderer& );
|
||||
|
||||
/** Embedded renderer */
|
||||
QScopedPointer<QgsFeatureRendererV2> mSubRenderer;
|
||||
/** Embedded renderer */
|
||||
QScopedPointer<QgsFeatureRendererV2> mSubRenderer;
|
||||
|
||||
/** Structure where the reversed geometry is built during renderFeature */
|
||||
struct CombinedFeature
|
||||
{
|
||||
QgsMultiPolygon multiPolygon; //< the final combined geometry
|
||||
QgsFeature feature; //< one feature (for attriute-based rendering)
|
||||
};
|
||||
typedef QMap< QByteArray, CombinedFeature > FeatureCategoryMap;
|
||||
/** where features are stored, based on their symbol category */
|
||||
FeatureCategoryMap mFeaturesCategoryMap;
|
||||
/** Structure where the reversed geometry is built during renderFeature */
|
||||
struct CombinedFeature
|
||||
{
|
||||
QgsMultiPolygon multiPolygon; //< the final combined geometry
|
||||
QgsFeature feature; //< one feature (for attriute-based rendering)
|
||||
};
|
||||
typedef QMap< QByteArray, CombinedFeature > FeatureCategoryMap;
|
||||
/** where features are stored, based on their symbol category */
|
||||
FeatureCategoryMap mFeaturesCategoryMap;
|
||||
|
||||
/** the polygon used as exterior ring that covers the current extent */
|
||||
QgsPolygon mExtentPolygon;
|
||||
/** the polygon used as exterior ring that covers the current extent */
|
||||
QgsPolygon mExtentPolygon;
|
||||
|
||||
/** the current coordinate transform (or null) */
|
||||
const QgsCoordinateTransform* mTransform;
|
||||
/** the current coordinate transform (or null) */
|
||||
const QgsCoordinateTransform* mTransform;
|
||||
|
||||
/** fields of each feature*/
|
||||
QgsFields mFields;
|
||||
/** fields of each feature*/
|
||||
QgsFields mFields;
|
||||
|
||||
/** Class used to represent features that must be rendered
|
||||
with decorations (selection, vertex markers)
|
||||
*/
|
||||
struct FeatureDecoration
|
||||
{
|
||||
QgsFeature feature;
|
||||
bool selected;
|
||||
bool drawMarkers;
|
||||
int layer;
|
||||
FeatureDecoration( QgsFeature& a_feature, bool a_selected, bool a_drawMarkers, int a_layer ) :
|
||||
feature(a_feature),selected(a_selected), drawMarkers(a_drawMarkers), layer(a_layer) {}
|
||||
};
|
||||
QList<FeatureDecoration> mFeatureDecorations;
|
||||
/** Class used to represent features that must be rendered
|
||||
with decorations (selection, vertex markers)
|
||||
*/
|
||||
struct FeatureDecoration
|
||||
{
|
||||
QgsFeature feature;
|
||||
bool selected;
|
||||
bool drawMarkers;
|
||||
int layer;
|
||||
FeatureDecoration( QgsFeature& a_feature, bool a_selected, bool a_drawMarkers, int a_layer ) :
|
||||
feature( a_feature ), selected( a_selected ), drawMarkers( a_drawMarkers ), layer( a_layer ) {}
|
||||
};
|
||||
QList<FeatureDecoration> mFeatureDecorations;
|
||||
};
|
||||
|
||||
|
||||
|
@ -29,7 +29,8 @@ QgsRendererV2Widget* QgsInvertedPolygonRendererWidget::create( QgsVectorLayer* l
|
||||
QgsInvertedPolygonRendererWidget::QgsInvertedPolygonRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer )
|
||||
: QgsRendererV2Widget( layer, style )
|
||||
{
|
||||
if ( !layer ) {
|
||||
if ( !layer )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@ -66,7 +67,7 @@ QgsInvertedPolygonRendererWidget::QgsInvertedPolygonRendererWidget( QgsVectorLay
|
||||
else
|
||||
{
|
||||
// an existing inverted renderer
|
||||
mRenderer.reset( static_cast<QgsInvertedPolygonRenderer*>(renderer) );
|
||||
mRenderer.reset( static_cast<QgsInvertedPolygonRenderer*>( renderer ) );
|
||||
}
|
||||
|
||||
int currentEmbeddedIdx = 0;
|
||||
@ -78,7 +79,7 @@ QgsInvertedPolygonRendererWidget::QgsInvertedPolygonRendererWidget( QgsVectorLay
|
||||
for ( ; it != rendererList.constEnd(); ++it, ++idx )
|
||||
{
|
||||
if (( *it != "invertedPolygonRenderer" ) && //< an inverted renderer cannot contain another inverted renderer
|
||||
( *it != "pointDisplacement" )) //< an inverted renderer can only contain a polygon renderer
|
||||
( *it != "pointDisplacement" ) ) //< an inverted renderer can only contain a polygon renderer
|
||||
{
|
||||
QgsRendererV2AbstractMetadata* m = QgsRendererV2Registry::instance()->rendererMetadata( *it );
|
||||
mRendererComboBox->addItem( m->icon(), m->visibleName(), /* data */ *it );
|
||||
@ -120,9 +121,10 @@ void QgsInvertedPolygonRendererWidget::on_mRendererComboBox_currentIndexChanged(
|
||||
QgsRendererV2AbstractMetadata* m = QgsRendererV2Registry::instance()->rendererMetadata( rendererId );
|
||||
if ( m )
|
||||
{
|
||||
mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, const_cast<QgsFeatureRendererV2*>(mRenderer->embeddedRenderer())->clone() ) );
|
||||
mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, const_cast<QgsFeatureRendererV2*>( mRenderer->embeddedRenderer() )->clone() ) );
|
||||
|
||||
if ( mLayout->count() > 1 ) {
|
||||
if ( mLayout->count() > 1 )
|
||||
{
|
||||
// remove the current renderer widget
|
||||
mLayout->takeAt( 1 );
|
||||
}
|
||||
|
@ -28,34 +28,34 @@ class QMenu;
|
||||
*/
|
||||
class GUI_EXPORT QgsInvertedPolygonRendererWidget : public QgsRendererV2Widget, private Ui::QgsInvertedPolygonRendererWidgetBase
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/** static creation method
|
||||
* @param layer the layer where this renderer is applied
|
||||
* @param style
|
||||
* @param renderer the mask renderer (will take ownership)
|
||||
*/
|
||||
static QgsRendererV2Widget* create( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer );
|
||||
public:
|
||||
/** static creation method
|
||||
* @param layer the layer where this renderer is applied
|
||||
* @param style
|
||||
* @param renderer the mask renderer (will take ownership)
|
||||
*/
|
||||
static QgsRendererV2Widget* create( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer );
|
||||
|
||||
/** Constructor
|
||||
* @param layer the layer where this renderer is applied
|
||||
* @param style
|
||||
* @param renderer the mask renderer (will take ownership)
|
||||
*/
|
||||
QgsInvertedPolygonRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer );
|
||||
/** Constructor
|
||||
* @param layer the layer where this renderer is applied
|
||||
* @param style
|
||||
* @param renderer the mask renderer (will take ownership)
|
||||
*/
|
||||
QgsInvertedPolygonRendererWidget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer );
|
||||
|
||||
/** @returns the current feature renderer */
|
||||
virtual QgsFeatureRendererV2* renderer();
|
||||
/** @returns the current feature renderer */
|
||||
virtual QgsFeatureRendererV2* renderer();
|
||||
|
||||
protected:
|
||||
/** the mask renderer */
|
||||
QScopedPointer<QgsInvertedPolygonRenderer> mRenderer;
|
||||
/** the widget used to represent the mask's embedded renderer */
|
||||
QScopedPointer<QgsRendererV2Widget> mEmbeddedRendererWidget;
|
||||
protected:
|
||||
/** the mask renderer */
|
||||
QScopedPointer<QgsInvertedPolygonRenderer> mRenderer;
|
||||
/** the widget used to represent the mask's embedded renderer */
|
||||
QScopedPointer<QgsRendererV2Widget> mEmbeddedRendererWidget;
|
||||
|
||||
private slots:
|
||||
void on_mRendererComboBox_currentIndexChanged( int index );
|
||||
private slots:
|
||||
void on_mRendererComboBox_currentIndexChanged( int index );
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user