37int QgisEvent = QEvent::User + 1;
61#define QHASH_FOR_CLASS_ENUM(T) \
62 inline uint qHash(const T &t, uint seed) { \
63 return ::qHash(static_cast<typename std::underlying_type<T>::type>(t), seed); \
81 static QString version();
88 static int versionInt();
95 static QString releaseName();
105 static QString devVersion();
122 Q_ENUM( MessageLevel )
143 ARGB32_Premultiplied = 13
159 Q_ENUM( CaptureTechnique )
170 Q_ENUM( VectorLayerTypeFlag )
172 Q_DECLARE_FLAGS( VectorLayerTypeFlags, VectorLayerTypeFlag )
173 Q_FLAG( VectorLayerTypeFlags )
187 Q_ENUM( PythonMacroMode )
199 Q_ENUM( FeatureCountState )
224 Q_ENUM( ScaleMethod )
241 Q_ENUM( SettingsType )
249 SaveFormerValue = 1 << 1,
250 SaveEnumFlagAsInt = 1 << 2,
252 Q_ENUM( SettingsOption )
253 Q_DECLARE_FLAGS( SettingsOptions, SettingsOption )
254 Q_FLAG( SettingsOptions )
264 AdvancedConfiguration = 3,
266 Q_ENUM( SnappingMode )
282 Q_ENUM( SnappingType )
285 Q_FLAG( SnappingTypes )
296 Q_ENUM( SymbolRenderHint )
299 Q_FLAG( SymbolRenderHints )
308 RendererShouldUseSymbolLevels = 1 << 0,
312 Q_DECLARE_FLAGS( SymbolFlags, SymbolFlag )
313 Q_FLAG( SymbolFlags )
322 FlagIncludeCrosshairsForMarkerSymbols = 1 << 0,
324 Q_ENUM( SymbolPreviewFlag )
327 Q_FLAG( SymbolPreviewFlags )
336 DisableFeatureClipping = 1 << 0,
338 Q_ENUM( SymbolLayerFlag )
340 Q_DECLARE_FLAGS( SymbolLayerFlags, SymbolLayerFlag )
341 Q_FLAG( SymbolLayerFlags )
360 Q_ENUM( BrowserItemType )
373 Q_ENUM( BrowserItemState )
389 ItemRepresentsFile = 1 << 6,
390 RefreshChildrenWhenItemIsRefreshed = 1 << 7,
392 Q_ENUM( BrowserItemCapability )
395 Q_FLAG( BrowserItemCapabilities )
418 Q_ENUM( BrowserLayerType )
431 Q_ENUM( BrowserDirectoryMonitoring )
464 Q_ENUM( VectorExportResult )
472 SubsetStringFilter = 1 << 1,
473 GeometryColumn = 1 << 2,
474 PrimaryKeys = 1 << 3,
475 UnstableFeatureIds = 1 << 4
477 Q_ENUM( SqlLayerDefinitionCapability )
479 Q_DECLARE_FLAGS( SqlLayerDefinitionCapabilities, SqlLayerDefinitionCapability )
480 Q_FLAG( SqlLayerDefinitionCapabilities )
499 Q_ENUM( SqlKeywordCategory )
526 Q_ENUM( ActionStart )
538 Q_ENUM( UnplacedLabelVisibility )
548 AllowOverlapIfRequired,
549 AllowOverlapAtNoCost,
551 Q_ENUM( LabelOverlapHandling )
568 OrderedPositionsAroundPoint,
572 Q_ENUM( LabelPlacement )
597 Q_ENUM( LabelPredefinedPointPosition )
612 Q_ENUM( LabelOffsetType )
633 Q_ENUM( LabelQuadrantPosition )
648 Q_ENUM( UpsideDownLabelHandling )
665 Q_ENUM( LabelMultiLineAlignment )
675 ResolveGeometryType = 1 << 1,
676 CountFeatures = 1 << 2,
677 IncludeSystemTables = 1 << 3,
680 Q_DECLARE_FLAGS( SublayerQueryFlags, SublayerQueryFlag )
681 Q_ENUM( SublayerQueryFlag )
682 Q_FLAG( SublayerQueryFlags )
691 SystemTable = 1 << 0,
694 Q_DECLARE_FLAGS( SublayerFlags, SublayerFlag )
695 Q_ENUM( SublayerFlag )
696 Q_FLAG( SublayerFlags )
714 Q_ENUM( RasterPipeInterfaceRole )
727 Q_ENUM( RasterResamplingStage )
736 InternalLayerOpacityHandling = 1 << 0,
744 Q_DECLARE_FLAGS( RasterRendererFlags, RasterRendererFlag )
746 Q_ENUM( RasterRendererFlag )
747 Q_FLAG( RasterRendererFlags )
758 TooManyVerticesInFace,
764 Q_ENUM( MeshEditingErrorType )
776 Q_ENUM( FilePathType )
786 AskExcludingRasterBands,
790 Q_ENUM( SublayerPromptMode )
804 Q_ENUM( SelectBehavior )
816 Q_ENUM( SelectGeometryRelationship )
825 SingleFeatureSelection = 1 << 0,
826 ToggleSelection = 1 << 1,
834 Q_DECLARE_FLAGS( SelectionFlags, SelectionFlag )
836 Q_ENUM( SelectionFlag )
837 Q_FLAG( SelectionFlags )
849 FetchFeatureFailed = 3,
852 Q_ENUM( VectorEditResult )
861 SemiTransparentCircle,
865 Q_ENUM( VertexMarkerType )
879 Q_ENUM( ContentStatus )
899 Q_ENUM( GpsQualityIndicator )
915 Q_DECLARE_FLAGS( BabelFormatCapabilities, BabelFormatCapability )
916 Q_ENUM( BabelFormatCapability )
917 Q_FLAG( BabelFormatCapabilities )
927 QuoteFilePaths = 1 << 0,
930 Q_DECLARE_FLAGS( BabelCommandFlags, BabelCommandFlag )
931 Q_ENUM( BabelCommandFlag )
932 Q_FLAG( BabelCommandFlags )
945 Q_ENUM( GpsFeatureType )
957 NothingHappened = 1000,
959 InvalidInputGeometryType,
961 SelectionIsGreaterThanOne,
965 AddPartSelectedGeometryNotFound,
966 AddPartNotMultiGeometry,
970 AddRingCrossesExistingRings,
971 AddRingNotInExistingFeature,
973 SplitCannotSplitPoint,
975 Q_ENUM( GeometryOperationResult )
989 Q_FLAG( GeometryValidityFlags )
1000 Q_ENUM( GeometryValidationEngine )
1012 Q_ENUM( BufferSide )
1025 Q_ENUM( EndCapStyle )
1050 Q_ENUM( MakeValidMethod )
1063 Q_ENUM( SpatialFilterType )
1072 IncludeMetadataFile = 1 << 0,
1073 IncludeStyleFile = 1 << 1,
1076 Q_DECLARE_FLAGS( FileOperationFlags, FileOperationFlag )
1077 Q_ENUM( FileOperationFlag )
1078 Q_FLAG( FileOperationFlags )
1087 UsersCannotToggleEditing = 1 << 0,
1088 IsBasemapLayer = 1 << 1,
1091 Q_DECLARE_FLAGS( MapLayerProperties, MapLayerProperty )
1092 Q_ENUM( MapLayerProperty )
1093 Q_FLAG( MapLayerProperties )
1102 IsBasemapSource = 1 << 1,
1105 Q_DECLARE_FLAGS( DataProviderFlags, DataProviderFlag )
1106 Q_ENUM( DataProviderFlag )
1107 Q_FLAG( DataProviderFlags )
1159 Q_ENUM( CrsAxisDirection )
1172 Q_ENUM( CoordinateOrder )
1181 ScaleDependentBoundingBox = 1 << 0,
1184 Q_DECLARE_FLAGS( AnnotationItemFlags, AnnotationItemFlag )
1185 Q_ENUM( AnnotationItemFlag )
1186 Q_FLAG( AnnotationItemFlags )
1195 FlagNoCreationTools = 1 << 0,
1198 Q_DECLARE_FLAGS( AnnotationItemGuiFlags, AnnotationItemGuiFlag )
1199 Q_ENUM( AnnotationItemGuiFlag )
1200 Q_FLAG( AnnotationItemGuiFlags )
1211 Q_ENUM( AnnotationItemNodeType )
1224 Q_ENUM( AnnotationItemEditOperationResult )
1240 Q_ENUM( VectorTemporalMode )
1249 IncludeBeginExcludeEnd = 0,
1250 IncludeBeginIncludeEnd,
1252 Q_ENUM( VectorTemporalLimitMode )
1263 StoresFeatureDateTimeStartAndEndInSeparateFields
SIP_MONKEYPATCH_COMPAT_NAME( ProviderStoresFeatureDateTimeStartAndEndInSeparateFields ),
1265 Q_ENUM( VectorDataProviderTemporalMode )
1278 Q_ENUM( RasterTemporalMode )
1287 MatchUsingWholeRange,
1288 MatchExactUsingStartOfRange,
1289 MatchExactUsingEndOfRange,
1290 FindClosestMatchToStartOfRange,
1291 FindClosestMatchToEndOfRange
1293 Q_ENUM( TemporalIntervalMatchMethod )
1302 RequestedTimesMustExactlyMatchAllAvailableTemporalRanges = 1 << 0,
1304 Q_ENUM( RasterTemporalCapabilityFlag )
1311 Q_DECLARE_FLAGS( RasterTemporalCapabilityFlags, RasterTemporalCapabilityFlag )
1312 Q_ENUM( RasterTemporalCapabilityFlags )
1324 Q_ENUM( TransformDirection )
1333 BallparkTransformsAreAppropriate = 1 << 0,
1334 IgnoreImpossibleTransformations = 1 << 1,
1336 Q_ENUM( CoordinateTransformationFlag )
1343 Q_DECLARE_FLAGS( CoordinateTransformationFlags, CoordinateTransformationFlag )
1344 Q_ENUM( CoordinateTransformationFlags )
1353 Antialiasing = 0x01,
1354 DrawEditingInfo = 0x02,
1355 ForceVectorOutput = 0x04,
1356 UseAdvancedEffects = 0x08,
1357 DrawLabeling = 0x10,
1358 UseRenderingOptimization = 0x20,
1359 DrawSelection = 0x40,
1360 DrawSymbolBounds = 0x80,
1361 RenderMapTile = 0x100,
1362 RenderPartialOutput = 0x200,
1363 RenderPreviewJob = 0x400,
1364 RenderBlocking = 0x800,
1365 LosslessImageRendering = 0x1000,
1366 Render3DMap = 0x2000,
1367 HighQualityImageTransforms = 0x4000,
1368 SkipSymbolRendering = 0x8000,
1369 ForceRasterMasks = 0x10000,
1374 Q_FLAG( MapSettingsFlags )
1383 DrawEditingInfo = 0x01,
1384 ForceVectorOutput = 0x02,
1385 UseAdvancedEffects = 0x04,
1386 UseRenderingOptimization = 0x08,
1387 DrawSelection = 0x10,
1388 DrawSymbolBounds = 0x20,
1389 RenderMapTile = 0x40,
1390 Antialiasing = 0x80,
1391 RenderPartialOutput = 0x100,
1392 RenderPreviewJob = 0x200,
1393 RenderBlocking = 0x400,
1394 RenderSymbolPreview = 0x800,
1395 LosslessImageRendering = 0x1000,
1396 ApplyScalingWorkaroundForTextRendering = 0x2000,
1397 Render3DMap = 0x4000,
1398 ApplyClipAfterReprojection = 0x8000,
1399 RenderingSubSymbol = 0x10000,
1400 HighQualityImageTransforms = 0x20000,
1401 SkipSymbolRendering = 0x40000,
1406 Q_FLAG( RenderContextFlags )
1420 Q_ENUM( TextRenderFormat )
1435 Q_ENUM( TextOrientation )
1450 Q_ENUM( TextLayoutMode )
1466 Q_ENUM( TextComponent )
1482 Q_ENUM( TextHorizontalAlignment )
1497 Q_ENUM( TextVerticalAlignment )
1511 Q_ENUM( RenderSubcomponentProperty )
1522 Q_ENUM( VertexType )
1538 EquilateralTriangle,
1571 Q_ENUM( MarkerShape )
1584 LastVertex = 1 << 2,
1585 FirstVertex = 1 << 3,
1586 CentralPoint = 1 << 4,
1587 CurvePoint = 1 << 5,
1588 SegmentCenter = 1 << 6,
1589 InnerVertices = 1 << 7,
1591 Q_ENUM( MarkerLinePlacement )
1592 Q_DECLARE_FLAGS( MarkerLinePlacements, MarkerLinePlacement )
1593 Q_FLAG( MarkerLinePlacements )
1607 Q_ENUM( GradientColorSource )
1622 Q_ENUM( GradientType )
1636 Q_ENUM( SymbolCoordinateReference )
1652 Q_ENUM( GradientSpread )
1666 Q_ENUM( PointCountMethod )
1680 Q_ENUM( MarkerClipMode )
1693 Q_ENUM( LineClipMode )
1708 Q_ENUM( DashPatternLineEndingRule )
1717 ScaleBothDashAndGap,
1721 Q_ENUM( DashPatternSizeAdjustment )
1735 Q_ENUM( GraduatedMethod )
1766 ForceFirstLetterToCapital = 4,
1769 UpperCamelCase = 1005,
1770 AllSmallCaps = 1006,
1772 Q_ENUM( Capitalization )
1783 Q_ENUM( TextRendererFlag )
1784 Q_DECLARE_FLAGS( TextRendererFlags, TextRendererFlag )
1785 Q_FLAG( TextRendererFlags )
1809 Q_ENUM( AngularDirection )
1822 Q_ENUM( RendererUsage )
1831 Sync3DTo2D = 1 << 0,
1832 Sync2DTo3D = 1 << 1,
1834 Q_ENUM( ViewSyncModeFlag )
1835 Q_DECLARE_FLAGS( ViewSyncModeFlags, ViewSyncModeFlag )
1844 LocalProfile = 1 << 0,
1847 Q_ENUM( HistoryProviderBackend )
1848 Q_DECLARE_FLAGS( HistoryProviderBackends, HistoryProviderBackend )
1849 Q_FLAG( HistoryProviderBackends )
1861 Q_ENUM( CrsDefinitionFormat )
1877 Q_ENUM( FieldDomainSplitPolicy )
1893 Q_ENUM( FieldDomainMergePolicy )
1906 Q_ENUM( FieldDomainType )
1916 AutomaticGroups = 1,
1919 Q_ENUM( TransactionMode )
1932 Q_ENUM( AltitudeClamping )
1944 Q_ENUM( AltitudeBinding )
1957 Q_ENUM( BetweenLineConstraint )
1970 Q_ENUM( LineExtensionSide )
1979 EvaluateDefaultValuesOnProviderSide = 1 << 0,
1980 TrustStoredLayerStatistics = 1 << 1,
1981 RememberLayerEditStatusBetweenSessions = 1 << 2,
1982 RememberAttributeTableWindowsBetweenSessions = 1 << 3,
1984 Q_ENUM( ProjectFlag )
1985 Q_DECLARE_FLAGS( ProjectFlags, ProjectFlag )
1986 Q_FLAG( ProjectFlags )
1995 ShowContextMenu = 1 << 0,
1997 Q_ENUM( PlotToolFlag )
1998 Q_DECLARE_FLAGS( PlotToolFlags, PlotToolFlag )
1999 Q_FLAG( PlotToolFlags )
2011 Q_ENUM( LightSourceType )
2044 RespectsMaximumErrorMapUnit = 1 << 0,
2045 RespectsDistanceRange = 1 << 1,
2046 RespectsElevationRange = 1 << 2,
2048 Q_ENUM( ProfileGeneratorFlag )
2049 Q_DECLARE_FLAGS( ProfileGeneratorFlags, ProfileGeneratorFlag )
2050 Q_FLAG( ProfileGeneratorFlags )
2062 Q_ENUM( PointCloudSymbol )
2075 Q_ENUM( PointCloudDrawOrder )
2087 AvoidIntersectionsCurrentLayer,
2088 AvoidIntersectionsLayers,
2090 Q_ENUM( AvoidIntersectionsMode )
2104 Q_ENUM( ProjectFileFormat )
2120 DontLoadProjectStyles = 1 << 5,
2121 ForceReadOnlyLayers = 1 << 6,
2123 Q_ENUM( ProjectReadFlag )
2133 Q_FLAG( ProjectReadFlags )
2145 ProjectStyles = 1 << 0,
2147 Q_ENUM( ProjectCapability )
2154 Q_DECLARE_FLAGS( ProjectCapabilities, ProjectCapability )
2155 Q_FLAG( ProjectCapabilities )
2172 Q_ENUM( MapBoxGlStyleSourceType )
2191 Q_ENUM( ArcGisRestServiceType )
2205 Q_ENUM( RelationshipType )
2219 Q_ENUM( RelationshipStrength )
2233 Q_ENUM( RelationshipCardinality )
2246 Q_ENUM( CoordinateDisplayType )
2252 static const
double DEFAULT_SEARCH_RADIUS_MM;
2255 static const
float DEFAULT_MAPTOPIXEL_THRESHOLD;
2263 static const QColor DEFAULT_HIGHLIGHT_COLOR;
2269 static const
double DEFAULT_HIGHLIGHT_BUFFER_MM;
2275 static const
double DEFAULT_HIGHLIGHT_MIN_WIDTH_MM;
2283 static const
double SCALE_PRECISION;
2290 static const
double DEFAULT_Z_COORDINATE;
2297 static const
double DEFAULT_M_COORDINATE;
2304 static const
double UI_SCALE_FACTOR;
2310 static const
double DEFAULT_SNAP_TOLERANCE;
2323 static QString defaultProjectScales();
2330 static
int geosVersionInt();
2337 static
int geosVersionMajor();
2344 static
int geosVersionMinor();
2351 static
int geosVersionPatch();
2358 static QString geosVersion();
2399#define cast_to_fptr(f) f
2421 , mPreviousState( object->blockSignals( true ) )
2426 mObject->blockSignals( mPreviousState );
2434 Object *mObject =
nullptr;
2435 bool mPreviousState;
2459CORE_EXPORT uint
qHash(
const QVariant &variant );
2473 const double roundFactor = std::pow( 10, -
precision );
2474 str = QString::number(
static_cast< long long >( std::round( a / roundFactor ) * roundFactor ) );
2479 if (
str.contains( QLatin1Char(
'.' ) ) )
2482 int idx =
str.length() - 1;
2483 while (
str.at( idx ) ==
'0' && idx > 1 )
2487 if ( idx <
str.length() - 1 )
2488 str.truncate(
str.at( idx ) ==
'.' ? idx : idx + 1 );
2498 if (
str == QLatin1String(
"-0" ) )
2500 return QLatin1String(
"0" );
2513 const bool aIsNan = std::isnan( a );
2514 const bool bIsNan = std::isnan( b );
2515 if ( aIsNan || bIsNan )
2516 return aIsNan && bIsNan;
2527inline bool qgsDoubleNear(
double a,
double b,
double epsilon = 4 * std::numeric_limits<double>::epsilon() )
2529 const bool aIsNan = std::isnan( a );
2530 const bool bIsNan = std::isnan( b );
2531 if ( aIsNan || bIsNan )
2532 return aIsNan && bIsNan;
2534 const double diff = a - b;
2535 return diff > -epsilon && diff <= epsilon;
2544inline bool qgsFloatNear(
float a,
float b,
float epsilon = 4 * FLT_EPSILON )
2546 const bool aIsNan = std::isnan( a );
2547 const bool bIsNan = std::isnan( b );
2548 if ( aIsNan || bIsNan )
2549 return aIsNan && bIsNan;
2551 const float diff = a - b;
2552 return diff > -epsilon && diff <= epsilon;
2558 const bool aIsNan = std::isnan( a );
2559 const bool bIsNan = std::isnan( b );
2560 if ( aIsNan || bIsNan )
2561 return aIsNan && bIsNan;
2569 const double ar = std::frexp( a, &aexp );
2570 const double br = std::frexp( b, &bexp );
2572 return aexp == bexp &&
2583 const double m = ( number < 0.0 ) ? -1.0 : 1.0;
2584 const double scaleFactor = std::pow( 10.0, places );
2585 return ( std::round( number * m * scaleFactor ) / scaleFactor ) * m;
2617 template<
typename To,
typename From>
inline To down_cast( From *f )
2620 ( std::is_base_of<From,
2621 typename std::remove_pointer<To>::type>::value ),
2622 "target type not derived from source type" );
2623 Q_ASSERT( f ==
nullptr ||
dynamic_cast<To
>( f ) !=
nullptr );
2624 return static_cast<To
>( f );
2628 QSet<T> listToSet(
const QList<T> &list )
2630 return QSet<T>( list.begin(), list.end() );
2634 QList<T> setToList(
const QSet<T> &set )
2636 return QList<T>( set.begin(), set.end() );
2649 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
2650 Q_ASSERT( metaEnum.isValid() );
2652 for (
int idx = 0; idx < metaEnum.keyCount(); ++idx )
2654 enumList.append(
static_cast<T
>( metaEnum.value( idx ) ) );
2666 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
2667 Q_ASSERT( metaEnum.isValid() );
2668 QMap<T, QString> enumMap;
2669 for (
int idx = 0; idx < metaEnum.keyCount(); ++idx )
2671 enumMap.insert(
static_cast<T
>( metaEnum.value( idx ) ), QString( metaEnum.key( idx ) ) );
2683 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
2684 Q_ASSERT( metaEnum.isValid() );
2685 const char *key = metaEnum.valueToKey(
static_cast<int>( value ) );
2688 *returnOk = key ? true :
false;
2690 return QString::fromUtf8( key );
2700template<
class T> T
qgsEnumKeyToValue(
const QString &key,
const T &defaultValue,
bool tryValueAsKey =
true,
bool *returnOk =
nullptr )
SIP_SKIP
2702 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
2703 Q_ASSERT( metaEnum.isValid() );
2705 T v =
static_cast<T
>( metaEnum.keyToValue( key.toUtf8().data(), &ok ) );
2717 if ( tryValueAsKey )
2719 bool canConvert =
false;
2720 const int intValue = key.toInt( &canConvert );
2721 if ( canConvert && metaEnum.valueToKey( intValue ) )
2727 return static_cast<T
>( intValue );
2731 return defaultValue;
2741 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
2742 Q_ASSERT( metaEnum.isValid() );
2743 int intValue =
static_cast<int>( value );
2744 const QByteArray ba = metaEnum.valueToKeys( intValue );
2747 const int intValueCheck = metaEnum.keysToValue( ba );
2748 bool ok = intValue == intValueCheck;
2751 return ok ? QString::fromUtf8( ba ) : QString();
2761template<
class T> T
qgsFlagKeysToValue(
const QString &keys,
const T &defaultValue,
bool tryValueAsKey =
true,
bool *returnOk =
nullptr )
SIP_SKIP
2763 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
2764 Q_ASSERT( metaEnum.isValid() );
2766 T v =
static_cast<T
>( metaEnum.keysToValue( keys.toUtf8().constData(), &ok ) );
2778 if ( tryValueAsKey )
2780 bool canConvert =
false;
2781 const int intValue = keys.toInt( &canConvert );
2784 const QByteArray keys = metaEnum.valueToKeys( intValue );
2785 const int intValueCheck = metaEnum.keysToValue( keys );
2786 if ( intValue == intValueCheck )
2792 return T( intValue );
2797 return defaultValue;
2853CORE_EXPORT
bool qgsVariantEqual(
const QVariant &lhs,
const QVariant &rhs );
2863#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
2871inline bool operator> (
const QVariant &v1,
const QVariant &v2 )
2885inline bool operator< (
const QVariant &v1,
const QVariant &v2 )
2892#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
2897template<> CORE_EXPORT
bool qMapLessThanKey<QVariantList>(
const QVariantList &key1,
const QVariantList &key2 )
SIP_SKIP;
2900CORE_EXPORT QString
qgsVsiPrefix(
const QString &path );
2918#define CONSTLATIN1STRING inline const QLatin1String
2920#define CONSTLATIN1STRING constexpr QLatin1String
2924class ScopedIntIncrementor
2928 ScopedIntIncrementor(
int *variable )
2929 : mVariable( variable )
2934 ScopedIntIncrementor(
const ScopedIntIncrementor &other ) =
delete;
2935 ScopedIntIncrementor &operator=(
const ScopedIntIncrementor &other ) =
delete;
2942 mVariable =
nullptr;
2945 ~ScopedIntIncrementor()
2951 int *mVariable =
nullptr;
2961 return QLatin1String(
2962 R
"""(GEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["unknown"],AREA["World"],BBOX[-90,-180,90,180]],ID["EPSG",4326]] )"""
2969 return QLatin1String(
"+proj=longlat +datum=WGS84 +no_defs" );
2975 return QLatin1String(
"EPSG:4326" );
2981 return QLatin1String(
"NONE" );
2987const int PREVIEW_JOB_DELAY_MS = 250;
2990const int MAXIMUM_LAYER_PREVIEW_TIME_MS = 250;
3035#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
3037#define Q_NOWARN_DEPRECATED_PUSH \
3038 _Pragma("GCC diagnostic push") \
3039 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"");
3040#define Q_NOWARN_DEPRECATED_POP \
3041 _Pragma("GCC diagnostic pop");
3042#define Q_NOWARN_UNREACHABLE_PUSH
3043#define Q_NOWARN_UNREACHABLE_POP
3045#elif defined(_MSC_VER)
3047#define Q_NOWARN_DEPRECATED_PUSH \
3048 __pragma(warning(push)) \
3049 __pragma(warning(disable:4996))
3050#define Q_NOWARN_DEPRECATED_POP \
3051 __pragma(warning(pop))
3052#define Q_NOWARN_UNREACHABLE_PUSH \
3053 __pragma(warning(push)) \
3054 __pragma(warning(disable:4702))
3055#define Q_NOWARN_UNREACHABLE_POP \
3056 __pragma(warning(pop))
3060#define Q_NOWARN_DEPRECATED_PUSH
3061#define Q_NOWARN_DEPRECATED_POP
3062#define Q_NOWARN_UNREACHABLE_PUSH
3063#define Q_NOWARN_UNREACHABLE_POP
3070# define QGISEXTERN extern "C" __declspec( dllexport )
3072# if defined(__GNUC__) || defined(__clang__)
3073# define QGISEXTERN extern "C" __attribute__ ((visibility ("default")))
3075# define QGISEXTERN extern "C"
3081#if __cplusplus >= 201500
3082#define FALLTHROUGH [[fallthrough]];
3083#elif defined(__clang__)
3084#define FALLTHROUGH [[clang::fallthrough]];
3085#elif defined(__GNUC__) && __GNUC__ >= 7
3086#define FALLTHROUGH [[gnu::fallthrough]];
3092#if __cplusplus >= 201703L
3093#define NODISCARD [[nodiscard]]
3094#elif defined(__clang__)
3095#define NODISCARD [[nodiscard]]
3096#elif defined(_MSC_VER)
3098#elif defined(__has_cpp_attribute)
3099#if __has_cpp_attribute(nodiscard)
3100#define NODISCARD [[nodiscard]]
3101#elif __has_cpp_attribute(gnu::warn_unused_result)
3102#define NODISCARD [[gnu::warn_unused_result]]
3104#define NODISCARD Q_REQUIRED_RESULT
3107#define NODISCARD Q_REQUIRED_RESULT
3110#if __cplusplus >= 201703L
3111#define MAYBE_UNUSED [[maybe_unused]]
3112#elif defined(__clang__)
3113#define MAYBE_UNUSED [[maybe_unused]]
3114#elif defined(_MSC_VER)
3116#elif defined(__has_cpp_attribute)
3117#if __has_cpp_attribute(gnu::unused)
3118#define MAYBE_UNUSED [[gnu::unused]]
3132#define BUILTIN_UNREACHABLE \
3134#elif defined(__GNUC__) && !defined(__clang__)
3145#define BUILTIN_UNREACHABLE \
3146 __builtin_unreachable();
3148#define BUILTIN_UNREACHABLE
3158QString CORE_EXPORT
geoWkt();
The Qgis class provides global constants for use throughout the application.
SettingsOption
Settings options.
ProfileGeneratorFlag
Flags that control the way the QgsAbstractProfileGenerator operate.
GpsQualityIndicator
GPS signal quality indicator.
ProjectReadFlag
Flags which control project read behavior.
PointCloudSymbol
Rendering symbols for point cloud points.
GeometryValidityFlag
Geometry validity check flags.
MapLayerProperty
File operation flags.
BufferSide
Side of line to buffer.
RasterResamplingStage
Stage at which raster resampling occurs.
AltitudeClamping
Altitude clamping.
VectorTemporalMode
Vector layer temporal feature modes.
SublayerFlag
Sublayer query flags.
CoordinateDisplayType
Formats for displaying coordinates.
DashPatternSizeAdjustment
Dash pattern size adjustment options.
AnnotationItemNodeType
Annotation item GUI flags.
static const char * QGIS_DEV_VERSION
The development version.
AngularDirection
Angular directions.
ContentStatus
Status for fetched or stored content.
SnappingType
SnappingTypeFlag defines on what object the snapping is performed.
RelationshipStrength
Relationship strength.
MarkerLinePlacement
Defines how/where the symbols should be placed on a line.
GeometryOperationResult
Success or failure of a geometry operation.
BrowserItemState
Browser item states.
MarkerClipMode
Marker clipping modes.
AnnotationItemFlag
Flags for annotation items.
RenderSubcomponentProperty
Rendering subcomponent properties.
SymbolRenderHint
Flags controlling behavior of symbols during rendering.
CaptureTechnique
Capture technique.
BrowserItemCapability
Browser item capabilities.
LineClipMode
Line clipping modes.
BrowserDirectoryMonitoring
Browser directory item monitoring switches.
LabelOffsetType
Behavior modifier for label offset and distance, only applies in some label placement modes.
GradientColorSource
Gradient color sources.
LabelPlacement
Placement modes which determine how label candidates are generated for a feature.
VectorExportResult
Vector layer export result codes.
RasterTemporalCapabilityFlag
Flags for raster layer temporal capabilities.
SymbolLayerFlag
Flags controlling behavior of symbol layers.
GradientSpread
Gradient spread options, which control how gradients are rendered outside of their start and end poin...
ScaleMethod
Scale methods.
FilePathType
File path types.
PointCountMethod
Methods which define the number of points randomly filling a polygon.
VertexType
Types of vertex.
DataProviderFlag
Map layer properties.
GeometryValidationEngine
Available engines for validating geometries.
TransactionMode
Transaction mode.
Q_ENUM(ScaleToTileZoomLevelMethod)
ViewSyncModeFlag
Synchronization of 2D map canvas and 3D view.
FileOperationFlag
File operation flags.
ProjectCapability
Flags which control project capabilities.
Q_ENUM(VectorProfileType)
FieldDomainMergePolicy
Merge policy for field domains.
MessageLevel
Level for messages This will be used both for message log and message bar in application.
SqlKeywordCategory
SQL layer definition capabilities.
GraduatedMethod
Methods for modifying symbols by range in a graduated symbol renderer.
TextLayoutMode
Text layout modes.
RasterRendererFlag
Flags which control behavior of raster renderers.
MeshEditingErrorType
Flags which control behavior of raster renderers.
FieldDomainSplitPolicy
Split policy for field domains.
ArcGisRestServiceType
Available ArcGIS REST service types.
AnnotationItemEditOperationResult
Results from an edit operation on an annotation item.
ActionStart
Enum to determine when an operation would begin.
AvoidIntersectionsMode
Flags which control how intersections of pre-existing feature are handled when digitizing new feature...
MarkerShape
Marker shapes.
Capitalization
String capitalization options.
TemporalIntervalMatchMethod
Method to use when resolving a temporal range to a data provider layer or band.
LabelQuadrantPosition
Label quadrant positions.
ScaleToTileZoomLevelMethod
Available methods for converting map scales to tile zoom levels.
SublayerQueryFlag
Flags which control how data providers will scan for sublayers in a dataset.
TextOrientation
Text orientations.
PythonMacroMode
Vector layer type flags.
UnplacedLabelVisibility
Unplaced label visibility.
CrsDefinitionFormat
CRS definition formats.
SpatialFilterType
Feature request spatial filter types.
ProjectFlag
Flags which control the behavior of QgsProjects.
BrowserItemType
Symbol layer flags.
SettingsType
Types of settings entries.
RasterTemporalMode
Raster layer temporal modes.
RelationshipType
Relationship types.
JoinStyle
Join styles for buffers.
PointCloudDrawOrder
Pointcloud rendering order for 2d views.
BrowserLayerType
Browser item layer types.
AltitudeBinding
Altitude binding.
LabelMultiLineAlignment
Text alignment for multi-line labels.
VectorDataProviderTemporalMode
Vector data provider temporal handling modes.
TextRenderFormat
Options for rendering text.
DataType
Raster data types.
Q_ENUM(ProfileSurfaceSymbology)
Q_DECLARE_FLAGS(RenderContextFlags, RenderContextFlag) SIP_MONKEYPATCH_FLAGS_UNNEST(QgsRenderContext
Render context flags.
PlotToolFlag
Flags that control the way the QgsPlotTools operate.
CoordinateOrder
Order of coordinates.
SelectionFlag
Flags which control feature selection behavior.
EndCapStyle
End cap styles for buffers.
BabelCommandFlag
Babel GPS format capabilities.
FieldDomainType
Types of field domain.
RenderContextFlag
Flags which affect rendering operations.
RasterPipeInterfaceRole
Sublayer flags.
SymbolPreviewFlag
Symbol flags.
AnnotationItemGuiFlag
Annotation item flags.
MapBoxGlStyleSourceType
Flags which control project capabilities.
DashPatternLineEndingRule
Dash pattern line ending rules.
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
HistoryProviderBackend
History provider backends.
SublayerPromptMode
Specifies how to handle layer sources with multiple sublayers.
TextVerticalAlignment
Text vertical alignment.
RelationshipCardinality
Relationship cardinality.
GradientType
Gradient types.
VectorProfileType
Types of elevation profiles to generate for vector sources.
GpsFeatureType
Babel command flags.
VectorLayerTypeFlag
Vector layer type flags.
MakeValidMethod
Algorithms to use when repairing invalid geometries.
VectorTemporalLimitMode
Mode for the handling of the limits of the filtering timeframe for vector features.
SqlLayerDefinitionCapability
SqlLayerDefinitionCapability enum lists the arguments supported by the provider when creating SQL que...
VectorEditResult
Flags which control feature selection behavior.
Q_DECLARE_FLAGS(GeometryValidityFlags, GeometryValidityFlag) SIP_MONKEYPATCH_FLAGS_UNNEST(QgsGeometry
Geometry validity flags.
ProjectFileFormat
Flags which control project read behavior.
SnappingMode
SnappingMode defines on which layer the snapping is performed.
ProfileSurfaceSymbology
Surface symbology type for elevation profile plots.
RendererUsage
Usage of the renderer.
BabelFormatCapability
Babel GPS format capabilities.
BetweenLineConstraint
Between line constraints which can be enabled.
TextHorizontalAlignment
Text horizontal alignment.
SymbolFlag
Flags controlling behavior of symbols.
LineExtensionSide
Designates whether the line extension constraint is currently soft locked with the previous or next v...
HttpMethod
Different methods of HTTP requests.
SymbolCoordinateReference
Symbol coordinate reference modes.
TextRendererFlag
Flags which control the behavior of rendering text.
SelectGeometryRelationship
Geometry relationship test to apply for selecting features.
CrsAxisDirection
Data provider flags.
LabelOverlapHandling
Label overlap handling.
CoordinateTransformationFlag
Flags which adjust the coordinate transformations behave.
TextComponent
Text components.
TransformDirection
Flags for raster layer temporal capabilities.
LightSourceType
Light source types for 3D scenes.
LabelPredefinedPointPosition
Positions for labels when using the Qgis::LabelPlacement::OrderedPositionsAroundPoint placement mode.
UpsideDownLabelHandling
Handling techniques for upside down labels.
Q_DECLARE_FLAGS(MapSettingsFlags, MapSettingsFlag) SIP_MONKEYPATCH_FLAGS_UNNEST(QgsMapSettings
Map settings flags.
MapSettingsFlag
Coordinate transformation flags.
SelectBehavior
Specifies how a selection should be applied.
Utility functions for working with ArcGIS REST services.
This class represents a coordinate reference system (CRS).
Abstract base class for curved geometry type.
Base class for all items in the model.
A geometry is the spatial representation of a feature.
Item that represents a layer that can be opened with one of the providers.
Base class for all map layer types.
The QgsMapSettings class contains configuration for rendering of the map.
Registry for temporary fetched files.
Contains settings for how a map layer will be labeled.
Abstract base class for 2d point cloud renderers.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
A fill symbol layer which places markers at random locations within polygons.
Implementation of data provider temporal properties for QgsRasterDataProviders.
Implementation of map layer temporal properties for raster layers.
Contains a pipeline of raster interfaces for sequential raster processing.
Contains information about the context of a rendering operation.
Represent settings entry and provides methods for reading and writing settings values.
RAII signal blocking class.
Object * operator->()
Returns pointer to blocked QObject.
QgsSignalBlocker(Object *object)
Constructor for QgsSignalBlocker.
Abstract base class for simple marker symbol layers.
This is a container for configuration of the snapping of the project.
Utility functions for working with strings.
Abstract base class for all rendered symbols.
Base class for templated line symbols, e.g.
Container for all settings relating to text rendering.
Handles rendering text using rich formatting options, including drop shadows, buffers and background ...
This is the class is providing tolerance value in map unit values.
Implementation of data provider temporal properties for QgsVectorDataProviders.
This is the base class for vector data providers.
A convenience class for exporting vector layers to a destination data provider.
Implementation of map layer temporal properties for vector layers.
Represents a vector layer which manages a vector based data sets.
FeatureCountState
Enumeration of feature count states.
QgsMapLayerType
Types of layers that can be added to a map.
@ PointCloudLayer
Point cloud layer. Added in QGIS 3.18.
@ MeshLayer
Mesh layer. Added in QGIS 3.2.
@ VectorLayer
Vector layer.
@ RasterLayer
Raster layer.
@ GroupLayer
Composite group layer. Added in QGIS 3.24.
@ VectorTileLayer
Vector tile layer. Added in QGIS 3.14.
@ AnnotationLayer
Contains freeform, georeferenced annotations. Added in QGIS 3.16.
@ PluginLayer
Plugin based layer.
int significantDigits(const Qgis::DataType rasterDataType)
Returns the maximum number of significant digits a for the given rasterDataType.
As part of the API refactoring and improvements which landed in QGIS
CONSTLATIN1STRING geoNone()
Constant that holds the string representation for "No ellips/No CRS".
const double DEFAULT_LINE_WIDTH
CORE_EXPORT uint qHash(const QVariant &variant)
Hash for QVariant.
bool operator>(const QVariant &v1, const QVariant &v2)
Compares two QVariant values and returns whether the first is greater than the second.
CORE_EXPORT QString qgsVsiPrefix(const QString &path)
CORE_EXPORT bool qgsVariantEqual(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether they are equal, two NULL values are always treated a...
T qgsEnumKeyToValue(const QString &key, const T &defaultValue, bool tryValueAsKey=true, bool *returnOk=nullptr)
Returns the value corresponding to the given key of an enum.
QString qgsDoubleToString(double a, int precision=17)
Returns a string representation of a double.
QString qgsEnumValueToKey(const T &value, bool *returnOk=nullptr)
Returns the value for the given key of an enum.
QString qgsFlagValueToKeys(const T &value, bool *returnOk=nullptr)
Returns the value for the given keys of a flag.
const long GEO_EPSG_CRS_ID
Magic number for a geographic coord sys in EpsgCrsId ID format.
T qgsFlagKeysToValue(const QString &keys, const T &defaultValue, bool tryValueAsKey=true, bool *returnOk=nullptr)
Returns the value corresponding to the given keys of a flag.
CORE_EXPORT bool qgsVariantGreaterThan(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether the first is greater than the second.
unsigned long long qgssize
Qgssize is used instead of size_t, because size_t is stdlib type, unknown by SIP, and it would be har...
const QMap< T, QString > qgsEnumMap()
Returns a map of all enum entries.
bool qgsFloatNear(float a, float b, float epsilon=4 *FLT_EPSILON)
Compare two floats (but allow some difference)
CORE_EXPORT double qgsPermissiveToDouble(QString string, bool &ok)
Converts a string to a double in a permissive way, e.g., allowing for incorrect numbers of digits bet...
const QList< T > qgsEnumList()
Returns a list all enum entries.
double qgsRound(double number, int places)
Returns a double number, rounded (as close as possible) to the specified number of places.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
CONSTLATIN1STRING geoProj4()
PROJ4 string that represents a geographic coord sys.
bool qgsNanCompatibleEquals(double a, double b)
Compare two doubles, treating nan values as equal.
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
void CORE_EXPORT * qgsMalloc(size_t size)
Allocates size bytes and returns a pointer to the allocated memory.
const double DEFAULT_SEGMENT_EPSILON
Default snapping tolerance for segments.
QMap< QString, QString > QgsStringMap
#define CONSTLATIN1STRING
CONSTLATIN1STRING geoWkt()
Wkt string that represents a geographic coord sys.
bool qgsDoubleNearSig(double a, double b, int significantDigits=10)
Compare two doubles using specified number of significant digits.
const int USER_CRS_START_ID
Magick number that determines whether a projection crsid is a system (srs.db) or user (~/....
void CORE_EXPORT qgsFree(void *ptr)
Frees the memory space pointed to by ptr.
CORE_EXPORT qlonglong qgsPermissiveToLongLong(QString string, bool &ok)
Converts a string to an qlonglong in a permissive way, e.g., allowing for incorrect numbers of digits...
CORE_EXPORT int qgsPermissiveToInt(QString string, bool &ok)
Converts a string to an integer in a permissive way, e.g., allowing for incorrect numbers of digits b...
CORE_EXPORT bool qgsVariantLessThan(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether the first is less than the second.
const long GEOSRID
Magic number for a geographic coord sys in POSTGIS SRID.
#define QHASH_FOR_CLASS_ENUM(T)
bool operator<(const QVariant &v1, const QVariant &v2)
Compares two QVariant values and returns whether the first is less than the second.
CONSTLATIN1STRING geoEpsgCrsAuthId()
Geographic coord sys from EPSG authority.
const long GEOCRS_ID
Magic number for a geographic coord sys in QGIS srs.db tbl_srs.srs_id.
const double DEFAULT_POINT_SIZE
Magic number that determines the default point size for point symbols.
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS, FORMERNAME)
#define SIP_MONKEYPATCH_FLAGS_UNNEST(OUTSIDE_CLASS, FORMERNAME)
#define SIP_MONKEYPATCH_SCOPEENUM
#define SIP_MONKEYPATCH_COMPAT_NAME(FORMERNAME)
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsField::ConfigurationFlags) CORE_EXPORT QDataStream &operator<<(QDataStream &out
Writes the field to stream out. QGIS version compatibility is not guaranteed.
Utility class for identifying a unique vertex within a geometry.