QGIS API Documentation  3.4.15-Madeira (e83d02e274)
qgssymbollayerwidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgssymbollayerwidget.h - symbol layer widgets
3 
4  ---------------------
5  begin : November 2009
6  copyright : (C) 2009 by Martin Dobias
7  email : wonder dot sk at gmail dot com
8  ***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 
17 #ifndef QGSSYMBOLLAYERWIDGET_H
18 #define QGSSYMBOLLAYERWIDGET_H
19 
21 #include "qgis.h"
22 #include "qgssymbolwidgetcontext.h"
23 #include "qgssymbollayer.h"
24 #include <QWidget>
25 #include <QStandardItemModel>
26 
27 class QgsVectorLayer;
28 class QgsMapCanvas;
29 
34 class GUI_EXPORT QgsSymbolLayerWidget : public QWidget, protected QgsExpressionContextGenerator
35 {
36  Q_OBJECT
37 
38  public:
39 
45  QgsSymbolLayerWidget( QWidget *parent SIP_TRANSFERTHIS, QgsVectorLayer *vl = nullptr )
46  : QWidget( parent )
47  , mVectorLayer( vl )
48  {}
49 
50  virtual void setSymbolLayer( QgsSymbolLayer *layer ) = 0;
51  virtual QgsSymbolLayer *symbolLayer() = 0;
52 
59  void setContext( const QgsSymbolWidgetContext &context );
60 
66  QgsSymbolWidgetContext context() const;
67 
72  const QgsVectorLayer *vectorLayer() const { return mVectorLayer; }
73 
74  protected:
75 
82  void registerDataDefinedButton( QgsPropertyOverrideButton *button, QgsSymbolLayer::Property key );
83 
85 
86  private:
87  QgsVectorLayer *mVectorLayer = nullptr;
88 
89  QgsMapCanvas *mMapCanvas = nullptr;
90 
91  signals:
92 
97  void changed();
98 
105  void symbolChanged();
106 
107  protected slots:
108  void updateDataDefinedProperty();
109 
110  private slots:
111  void createAuxiliaryField();
112 
113  private:
114  QgsSymbolWidgetContext mContext;
115 };
116 
118 
119 #include "ui_widget_simpleline.h"
120 
122 
127 class GUI_EXPORT QgsSimpleLineSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetSimpleLine
128 {
129  Q_OBJECT
130 
131  public:
132 
138  QgsSimpleLineSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
139 
145 
146  // from base class
147  void setSymbolLayer( QgsSymbolLayer *layer ) override;
148  QgsSymbolLayer *symbolLayer() override;
149 
150  protected:
151  QgsSimpleLineSymbolLayer *mLayer = nullptr;
152 
153  //creates a new icon for the 'change pattern' button
154  void updatePatternIcon();
155 
156  private slots:
157 
158  void updateAssistantSymbol();
159  void penWidthChanged();
160  void colorChanged( const QColor &color );
161  void penStyleChanged();
162  void offsetChanged();
163  void mCustomCheckBox_stateChanged( int state );
164  void mChangePatternButton_clicked();
165  void mPenWidthUnitWidget_changed();
166  void mOffsetUnitWidget_changed();
167  void mDashPatternUnitWidget_changed();
168  void mDrawInsideCheckBox_stateChanged( int state );
169 
170  private:
171 
172  std::shared_ptr< QgsLineSymbol > mAssistantPreviewSymbol;
173 
174 };
175 
177 
178 #include "ui_widget_simplemarker.h"
179 
181 
186 class GUI_EXPORT QgsSimpleMarkerSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetSimpleMarker
187 {
188  Q_OBJECT
189 
190  public:
191 
197  QgsSimpleMarkerSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
198 
204 
205  // from base class
206  void setSymbolLayer( QgsSymbolLayer *layer ) override;
207  QgsSymbolLayer *symbolLayer() override;
208 
209  public slots:
210 
211  void setColorStroke( const QColor &color );
212  void setColorFill( const QColor &color );
213 
214  protected:
215  QgsSimpleMarkerSymbolLayer *mLayer = nullptr;
216 
217  private slots:
218  void setSize();
219  void setAngle();
220  void setOffset();
221  void mSizeUnitWidget_changed();
222  void mOffsetUnitWidget_changed();
223  void mStrokeWidthUnitWidget_changed();
224  void mStrokeStyleComboBox_currentIndexChanged( int index );
225  void mStrokeWidthSpinBox_valueChanged( double d );
226  void mHorizontalAnchorComboBox_currentIndexChanged( int index );
227  void mVerticalAnchorComboBox_currentIndexChanged( int index );
228  void setShape();
229  void updateAssistantSymbol();
230  void penJoinStyleChanged();
231 
232  private:
233 
234  std::shared_ptr< QgsMarkerSymbol > mAssistantPreviewSymbol;
235 };
236 
238 
239 #include "ui_widget_simplefill.h"
240 
242 
247 class GUI_EXPORT QgsSimpleFillSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetSimpleFill
248 {
249  Q_OBJECT
250 
251  public:
252 
258  QgsSimpleFillSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
259 
265 
266  // from base class
267  void setSymbolLayer( QgsSymbolLayer *layer ) override;
268  QgsSymbolLayer *symbolLayer() override;
269 
270  public slots:
271  void setColor( const QColor &color );
272  void setStrokeColor( const QColor &color );
273 
274  protected:
275  QgsSimpleFillSymbolLayer *mLayer = nullptr;
276 
277  private slots:
278  void setBrushStyle();
279  void strokeWidthChanged();
280  void strokeStyleChanged();
281  void offsetChanged();
282  void mStrokeWidthUnitWidget_changed();
283  void mOffsetUnitWidget_changed();
284 
285 };
286 
287 
289 
290 #include "ui_widget_filledmarker.h"
291 
293 
300 class GUI_EXPORT QgsFilledMarkerSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetFilledMarker
301 {
302  Q_OBJECT
303 
304  public:
305 
311  QgsFilledMarkerSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
312 
318 
319  // from base class
320  void setSymbolLayer( QgsSymbolLayer *layer ) override;
321  QgsSymbolLayer *symbolLayer() override;
322 
323  protected:
324  QgsFilledMarkerSymbolLayer *mLayer = nullptr;
325 
326  private slots:
327 
328  void updateAssistantSymbol();
329  void setShape();
330  void setSize();
331  void setAngle();
332  void setOffset();
333  void mSizeUnitWidget_changed();
334  void mOffsetUnitWidget_changed();
335  void mHorizontalAnchorComboBox_currentIndexChanged( int index );
336  void mVerticalAnchorComboBox_currentIndexChanged( int index );
337 
338  private:
339 
340  std::shared_ptr< QgsMarkerSymbol > mAssistantPreviewSymbol;
341 };
342 
344 
345 #include "ui_widget_gradientfill.h"
346 
348 
353 class GUI_EXPORT QgsGradientFillSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetGradientFill
354 {
355  Q_OBJECT
356 
357  public:
358 
364  QgsGradientFillSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
365 
371 
372  // from base class
373  void setSymbolLayer( QgsSymbolLayer *layer ) override;
374  QgsSymbolLayer *symbolLayer() override;
375 
376  public slots:
377  void setColor( const QColor &color );
378  void setColor2( const QColor &color );
379 
383  void applyColorRamp();
384  void setGradientType( int index );
385  void setCoordinateMode( int index );
386  void setGradientSpread( int index );
387 
388  protected:
389  QgsGradientFillSymbolLayer *mLayer = nullptr;
390 
391  private slots:
392  void offsetChanged();
393  void referencePointChanged();
394  void mOffsetUnitWidget_changed();
395  void colorModeChanged();
396  void mSpinAngle_valueChanged( double value );
397 
398 };
399 
401 
402 #include "ui_widget_shapeburstfill.h"
403 
405 
410 class GUI_EXPORT QgsShapeburstFillSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetShapeburstFill
411 {
412  Q_OBJECT
413 
414  public:
415 
421  QgsShapeburstFillSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
422 
428 
429  // from base class
430  void setSymbolLayer( QgsSymbolLayer *layer ) override;
431  QgsSymbolLayer *symbolLayer() override;
432 
433  public slots:
434  void setColor( const QColor &color );
435  void setColor2( const QColor &color );
436 
437  protected:
438  QgsShapeburstFillSymbolLayer *mLayer = nullptr;
439 
440  private slots:
441  void colorModeChanged();
442  void mSpinBlurRadius_valueChanged( int value );
443  void mSpinMaxDistance_valueChanged( double value );
444  void mDistanceUnitWidget_changed();
445  void mRadioUseWholeShape_toggled( bool value );
446  void applyColorRamp();
447  void offsetChanged();
448  void mOffsetUnitWidget_changed();
449  void mIgnoreRingsCheckBox_stateChanged( int state );
450 };
451 
453 
454 #include "ui_widget_markerline.h"
455 
457 
462 class GUI_EXPORT QgsMarkerLineSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetMarkerLine
463 {
464  Q_OBJECT
465 
466  public:
467 
473  QgsMarkerLineSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
474 
480 
481  // from base class
482  void setSymbolLayer( QgsSymbolLayer *layer ) override;
483  QgsSymbolLayer *symbolLayer() override;
484 
485  public slots:
486 
487  void setInterval( double val );
488  void setOffsetAlongLine( double val );
489 
490  protected:
491 
492  QgsMarkerLineSymbolLayer *mLayer = nullptr;
493 
494  private slots:
495  void setRotate();
496  void setOffset();
497  void setPlacement();
498  void mIntervalUnitWidget_changed();
499  void mOffsetUnitWidget_changed();
500  void mOffsetAlongLineUnitWidget_changed();
501 
502 };
503 
504 
506 
507 #include "ui_widget_svgmarker.h"
508 
510 
515 class GUI_EXPORT QgsSvgMarkerSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetSvgMarker
516 {
517  Q_OBJECT
518 
519  public:
520 
526  QgsSvgMarkerSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
527 
533 
534  // from base class
535  void setSymbolLayer( QgsSymbolLayer *layer ) override;
536  QgsSymbolLayer *symbolLayer() override;
537 
538  protected:
539 
540  void populateList();
541  //update gui for svg file (insert new path, update activation of gui elements for svg params)
542  void setGuiForSvg( const QgsSvgMarkerSymbolLayer *layer );
543 
544  QgsSvgMarkerSymbolLayer *mLayer = nullptr;
545 
546  private slots:
547  void setName( const QModelIndex &idx );
548  void populateIcons( const QModelIndex &idx );
549  void svgSourceChanged( const QString &text );
550  void mChangeColorButton_colorChanged( const QColor &color );
551  void mChangeStrokeColorButton_colorChanged( const QColor &color );
552  void mStrokeWidthSpinBox_valueChanged( double d );
553  void mSizeUnitWidget_changed();
554  void mStrokeWidthUnitWidget_changed();
555  void mOffsetUnitWidget_changed();
556  void mHorizontalAnchorComboBox_currentIndexChanged( int index );
557  void mVerticalAnchorComboBox_currentIndexChanged( int index );
558  void setWidth();
559  void setHeight();
560  void lockAspectRatioChanged( bool locked );
561  void setAngle();
562  void setOffset();
563  void updateAssistantSymbol();
564 
565  private:
566 
567  std::shared_ptr< QgsMarkerSymbol > mAssistantPreviewSymbol;
568  int mIconSize = 30;
569 
570 };
571 
573 
574 #include "ui_widget_rasterfill.h"
575 
577 
582 class GUI_EXPORT QgsRasterFillSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetRasterFill
583 {
584  Q_OBJECT
585 
586  public:
587 
593  QgsRasterFillSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
594 
600 
601  // from base class
602  void setSymbolLayer( QgsSymbolLayer *layer ) override;
603  QgsSymbolLayer *symbolLayer() override;
604 
605  protected:
606  QgsRasterFillSymbolLayer *mLayer = nullptr;
607 
608  private slots:
609  void mBrowseToolButton_clicked();
610  void mImageLineEdit_editingFinished();
611  void setCoordinateMode( int index );
612  void opacityChanged( double value );
613  void offsetChanged();
614  void mOffsetUnitWidget_changed();
615  void mRotationSpinBox_valueChanged( double d );
616  void mWidthUnitWidget_changed();
617  void mWidthSpinBox_valueChanged( double d );
618 
619  private:
620  void updatePreviewImage();
621 };
622 
624 
625 #include "ui_widget_svgfill.h"
626 
628 
633 class GUI_EXPORT QgsSVGFillSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetSVGFill
634 {
635  Q_OBJECT
636 
637  public:
638 
644  QgsSVGFillSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
645 
651 
652  // from base class
653  void setSymbolLayer( QgsSymbolLayer *layer ) override;
654  QgsSymbolLayer *symbolLayer() override;
655 
656  protected:
657  QgsSVGFillSymbolLayer *mLayer = nullptr;
658  void insertIcons();
659 
666  void updateParamGui( bool resetValues = true );
667 
668  private slots:
669  void mTextureWidthSpinBox_valueChanged( double d );
670  void svgSourceChanged( const QString &text );
671  void setFile( const QModelIndex &item );
672  void populateIcons( const QModelIndex &item );
673  void mRotationSpinBox_valueChanged( double d );
674  void mChangeColorButton_colorChanged( const QColor &color );
675  void mChangeStrokeColorButton_colorChanged( const QColor &color );
676  void mStrokeWidthSpinBox_valueChanged( double d );
677  void mTextureWidthUnitWidget_changed();
678  void mSvgStrokeWidthUnitWidget_changed();
679 };
680 
682 
683 #include "ui_widget_linepatternfill.h"
684 
686 
691 class GUI_EXPORT QgsLinePatternFillSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetLinePatternFill
692 {
693  Q_OBJECT
694 
695  public:
696 
702  QgsLinePatternFillSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
703 
709 
710  void setSymbolLayer( QgsSymbolLayer *layer ) override;
711  QgsSymbolLayer *symbolLayer() override;
712 
713  protected:
714  QgsLinePatternFillSymbolLayer *mLayer = nullptr;
715 
716  private slots:
717  void mAngleSpinBox_valueChanged( double d );
718  void mDistanceSpinBox_valueChanged( double d );
719  void mOffsetSpinBox_valueChanged( double d );
720  void mDistanceUnitWidget_changed();
721  void mOffsetUnitWidget_changed();
722 };
723 
725 
726 #include "ui_widget_pointpatternfill.h"
727 
729 
734 class GUI_EXPORT QgsPointPatternFillSymbolLayerWidget: public QgsSymbolLayerWidget, private Ui::WidgetPointPatternFill
735 {
736  Q_OBJECT
737 
738  public:
739 
745  QgsPointPatternFillSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
746 
752 
753  void setSymbolLayer( QgsSymbolLayer *layer ) override;
754  QgsSymbolLayer *symbolLayer() override;
755 
756  protected:
758 
759  private slots:
760  void mHorizontalDistanceSpinBox_valueChanged( double d );
761  void mVerticalDistanceSpinBox_valueChanged( double d );
762  void mHorizontalDisplacementSpinBox_valueChanged( double d );
763  void mVerticalDisplacementSpinBox_valueChanged( double d );
764  void mHorizontalDistanceUnitWidget_changed();
765  void mVerticalDistanceUnitWidget_changed();
766  void mHorizontalDisplacementUnitWidget_changed();
767  void mVerticalDisplacementUnitWidget_changed();
768 };
769 
771 
772 #include "ui_widget_fontmarker.h"
773 
775 class CharacterWidget;
776 
781 class GUI_EXPORT QgsFontMarkerSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetFontMarker
782 {
783  Q_OBJECT
784 
785  public:
786 
792  QgsFontMarkerSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
793 
799 
800  // from base class
801  void setSymbolLayer( QgsSymbolLayer *layer ) override;
802  QgsSymbolLayer *symbolLayer() override;
803 
804  public slots:
805  void setFontFamily( const QFont &font );
806  void setColor( const QColor &color );
807 
811  void setColorStroke( const QColor &color );
812  void setSize( double size );
813  void setAngle( double angle );
814  void setCharacter( QChar chr );
815 
816  protected:
817  QgsFontMarkerSymbolLayer *mLayer = nullptr;
818  CharacterWidget *widgetChar = nullptr;
819 
820  private slots:
821  void setOffset();
822  void mSizeUnitWidget_changed();
823  void mOffsetUnitWidget_changed();
824  void mStrokeWidthUnitWidget_changed();
825  void mStrokeWidthSpinBox_valueChanged( double d );
826  void mHorizontalAnchorComboBox_currentIndexChanged( int index );
827  void mVerticalAnchorComboBox_currentIndexChanged( int index );
828  void penJoinStyleChanged();
829  void updateAssistantSymbol();
830 
831  private:
832 
833  std::shared_ptr< QgsMarkerSymbol > mAssistantPreviewSymbol;
834 
835 };
836 
838 
839 
840 #include "ui_widget_centroidfill.h"
841 
843 
848 class GUI_EXPORT QgsCentroidFillSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::WidgetCentroidFill
849 {
850  Q_OBJECT
851 
852  public:
853 
859  QgsCentroidFillSymbolLayerWidget( QgsVectorLayer *vl, QWidget *parent SIP_TRANSFERTHIS = nullptr );
860 
866 
867  // from base class
868  void setSymbolLayer( QgsSymbolLayer *layer ) override;
869  QgsSymbolLayer *symbolLayer() override;
870 
871  protected:
872  QgsCentroidFillSymbolLayer *mLayer = nullptr;
873 
874  private slots:
875  void mDrawInsideCheckBox_stateChanged( int state );
876  void mDrawAllPartsCheckBox_stateChanged( int state );
877 
878 };
879 
880 
881 #include "ui_qgsgeometrygeneratorwidgetbase.h"
882 #include "qgis_gui.h"
883 
885 
890 class GUI_EXPORT QgsGeometryGeneratorSymbolLayerWidget : public QgsSymbolLayerWidget, private Ui::GeometryGeneratorWidgetBase
891 {
892  Q_OBJECT
893 
894  public:
895 
902 
907 
908  // from base class
909  void setSymbolLayer( QgsSymbolLayer *layer ) override;
910  QgsSymbolLayer *symbolLayer() override;
911 
912  private:
913  QgsGeometryGeneratorSymbolLayer *mLayer = nullptr;
914 
915  private slots:
916  void updateExpression( const QString &string );
917  void updateSymbolType();
918 };
919 
920 #endif
QgsSymbolLayerWidget(QWidget *parent, QgsVectorLayer *vl=nullptr)
Constructor for QgsSymbolLayerWidget.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:46
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsFilledMarkerSymbolLayerWidget.
Simple marker symbol layer, consisting of a rendered shape with solid fill color and an stroke...
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsGradientFillSymbolLayerWidget.
A symbol fill consisting of repeated parallel lines.
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsShapeburstFillSymbolLayerWidget.
A widget for displaying characters available in a preset font, and allowing users to select an indivi...
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsSVGFillSymbolLayerWidget.
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsFontMarkerSymbolLayerWidget.
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:74
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
Definition: MathUtils.cpp:786
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsLinePatternFillSymbolLayerWidget.
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsSimpleLineSymbolLayerWidget.
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsMarkerLineSymbolLayerWidget.
A class for filling symbols with a repeated raster image.
virtual QgsExpressionContext createExpressionContext() const =0
This method needs to be reimplemented in all classes which implement this interface and return an exp...
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsPointPatternFillSymbolLayerWidget.
Widget for configuring QgsFilledMarkerSymbolLayer symbol layers.
A button for controlling property overrides which may apply to a widget.
virtual void setSymbolLayer(QgsSymbolLayer *layer)=0
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsCentroidFillSymbolLayerWidget.
Contains settings which reflect the context in which a symbol (or renderer) widget is shown...
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsSvgMarkerSymbolLayerWidget.
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Will be registered as factory.
virtual QgsSymbolLayer * symbolLayer()=0
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsRasterFillSymbolLayerWidget.
#define SIP_FACTORY
Definition: qgis_sip.h:69
const QgsVectorLayer * vectorLayer() const
Returns the vector layer associated with the widget.
Abstract interface for generating an expression context.
A class for filling symbols with a repeated SVG file.
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsSimpleMarkerSymbolLayerWidget.
static QgsSymbolLayerWidget * create(QgsVectorLayer *vl)
Creates a new QgsSimpleFillSymbolLayerWidget.
Filled marker symbol layer, consisting of a shape which is rendered using a QgsFillSymbol.
Represents a vector layer which manages a vector based data sets.
Property
Data definable properties.