33 #include <type_traits> 39 #include "qgis_core.h" 48 int QgisEvent = QEvent::User + 1;
106 ARGB32_Premultiplied = 13
170 #define cast_to_fptr(f) f 192 , mPreviousState( object->blockSignals( true ) )
197 mObject->blockSignals( mPreviousState );
205 Object *mObject =
nullptr;
230 CORE_EXPORT uint
qHash(
const QVariant &variant );
240 return QString::number( a,
'f', precision ).remove( QRegExp(
"\\.?0+$" ) );
242 return QString::number( a,
'f', precision );
251 inline bool qgsDoubleNear(
double a,
double b,
double epsilon = 4 * DBL_EPSILON )
253 const double diff = a - b;
254 return diff > -epsilon && diff <= epsilon;
263 inline bool qgsFloatNear(
float a,
float b,
float epsilon = 4 * FLT_EPSILON )
265 const float diff = a - b;
266 return diff > -epsilon && diff <= epsilon;
278 double ar = std::frexp( a, &aexp );
279 double br = std::frexp( b, &bexp );
281 return aexp == bexp &&
282 std::round( ar * std::pow( 10.0, significantDigits ) ) == std::round( br * std::pow( 10.0, significantDigits ) );
290 inline double qgsRound(
double number,
double places )
292 int scaleFactor = std::pow( 10, places );
293 return static_cast<double>(
static_cast<qlonglong
>( number * scaleFactor + 0.5 ) ) / scaleFactor;
321 template <
typename T>
struct QgsAddConst {
typedef const T Type; };
323 template <
typename T>
324 constexpr
typename QgsAddConst<T>::Type &as_const( T &t ) noexcept {
return t; }
326 template <
typename T>
327 void as_const(
const T && ) =
delete;
331 template<
class T>
struct _Unique_if
333 typedef std::unique_ptr<T> _Single_object;
336 template<
class T>
struct _Unique_if<T[]>
338 typedef std::unique_ptr<T[]> _Unknown_bound;
341 template<
class T,
size_t N>
struct _Unique_if<T[N]>
343 typedef void _Known_bound;
346 template<
class T,
class... Args>
347 typename _Unique_if<T>::_Single_object
348 make_unique( Args &&... args )
350 return std::unique_ptr<T>(
new T( std::forward<Args>( args )... ) );
354 typename _Unique_if<T>::_Unknown_bound
355 make_unique(
size_t n )
357 typedef typename std::remove_extent<T>::type U;
358 return std::unique_ptr<T>(
new U[n]() );
361 template<
class T,
class... Args>
362 typename _Unique_if<T>::_Known_bound
363 make_unique( Args &&... ) =
delete;
406 CORE_EXPORT QString
qgsVsiPrefix(
const QString &path );
434 extern CORE_EXPORT
const QString
GEOWKT;
438 extern CORE_EXPORT
const QString
GEOPROJ4;
454 extern CORE_EXPORT
const QString
GEO_NONE;
471 const int PREVIEW_JOB_DELAY_MS = 250;
474 const int MAXIMUM_LAYER_PREVIEW_TIME_MS = 250;
491 #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__) 493 #define Q_NOWARN_DEPRECATED_PUSH \ 494 _Pragma("GCC diagnostic push") \ 495 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\""); 496 #define Q_NOWARN_DEPRECATED_POP \ 497 _Pragma("GCC diagnostic pop"); 498 #define Q_NOWARN_UNREACHABLE_PUSH 499 #define Q_NOWARN_UNREACHABLE_POP 501 #elif defined(_MSC_VER) 503 #define Q_NOWARN_DEPRECATED_PUSH \ 504 __pragma(warning(push)) \ 505 __pragma(warning(disable:4996)) 506 #define Q_NOWARN_DEPRECATED_POP \ 507 __pragma(warning(pop)) 508 #define Q_NOWARN_UNREACHABLE_PUSH \ 509 __pragma(warning(push)) \ 510 __pragma(warning(disable:4702)) 511 #define Q_NOWARN_UNREACHABLE_POP \ 512 __pragma(warning(pop)) 516 #define Q_NOWARN_DEPRECATED_PUSH 517 #define Q_NOWARN_DEPRECATED_POP 518 #define Q_NOWARN_UNREACHABLE_PUSH 519 #define Q_NOWARN_UNREACHABLE_POP 526 # define QGISEXTERN extern "C" __declspec( dllexport ) 529 # pragma warning(disable:4190) 532 # if defined(__GNUC__) || defined(__clang__) 533 # define QGISEXTERN extern "C" __attribute__ ((visibility ("default"))) 535 # define QGISEXTERN extern "C" 541 #if __cplusplus >= 201500 542 #define FALLTHROUGH [[fallthrough]]; 543 #elif defined(__clang__) 544 #define FALLTHROUGH //[[clang::fallthrough]] 545 #elif defined(__GNUC__) && __GNUC__ >= 7 546 #define FALLTHROUGH [[gnu::fallthrough]]; CORE_EXPORT QString qgsVsiPrefix(const QString &path)
static const QString QGIS_VERSION
Version string.
static const char * QGIS_DEV_VERSION
The development version.
static const double UI_SCALE_FACTOR
UI scaling factor.
bool qgsFloatNear(float a, float b, float epsilon=4 *FLT_EPSILON)
Compare two floats (but allow some difference)
DataType
Raster data types.
UnitType
Type of unit of tolerance value from settings.
static const QColor DEFAULT_HIGHLIGHT_COLOR
Default highlight color.
void CORE_EXPORT * qgsCalloc(size_t nmemb, size_t size)
Allocates memory for an array of nmemb elements of size bytes each and returns a pointer to the alloc...
MessageLevel
Level for messages This will be used both for message log and message bar in application.
static const int QGIS_VERSION_INT
Version number used for comparing versions using the "Check QGIS Version" function.
QMap< QString, QString > QgsStringMap
bool qgsDoubleNear(double a, double b, double epsilon=4 *DBL_EPSILON)
Compare two doubles (but allow some difference)
double qgsRound(double number, double places)
Returns a double number, rounded (as close as possible) to the specified number of places...
The Qgis class provides global constants for use throughout the application.
CORE_EXPORT bool qgsVariantLessThan(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether the first is less than the second.
static const double DEFAULT_Z_COORDINATE
Default Z coordinate value for 2.5d geometry This value have to be assigned to the Z coordinate for t...
QgsSignalBlocker(Object *object)
Constructor for QgsSignalBlocker.
static const double DEFAULT_SNAP_TOLERANCE
Default snapping distance tolerance.
CORE_EXPORT const QString GEO_NONE
Constant that holds the string representation for "No ellips/No CRS".
const double DEFAULT_SEGMENT_EPSILON
Default snapping tolerance for segments.
QString qgsDoubleToString(double a, int precision=17)
Returns a string representation of a double.
const long GEOCRS_ID
Magic number for a geographic coord sys in QGIS srs.db tbl_srs.srs_id.
static const double DEFAULT_SEARCH_RADIUS_MM
Identify search radius in mm.
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...
CORE_EXPORT const QString GEOPROJ4
PROJ4 string that represents a geographic coord sys.
RAII signal blocking class.
static const QgsTolerance::UnitType DEFAULT_SNAP_UNITS
Default snapping distance units.
void CORE_EXPORT qgsFree(void *ptr)
Frees the memory space pointed to by ptr.
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 double DEFAULT_POINT_SIZE
Magic number that determines the default point size for point symbols.
static const float DEFAULT_MAPTOPIXEL_THRESHOLD
Default threshold between map coordinates and device coordinates for map2pixel simplification.
const int USER_CRS_START_ID
Magick number that determines whether a projection crsid is a system (srs.db) or user (~/...
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
const long GEOSRID
Magic number for a geographic coord sys in POSTGIS SRID.
static const QString QGIS_RELEASE_NAME
Release name.
bool qgsDoubleNearSig(double a, double b, int significantDigits=10)
Compare two doubles using specified number of significant digits.
const double DEFAULT_LINE_WIDTH
CORE_EXPORT const QString PROJECT_SCALES
CORE_EXPORT uint qHash(const QVariant &variant)
Hash for QVariant.
static const double DEFAULT_HIGHLIGHT_MIN_WIDTH_MM
Default highlight line/stroke minimum width in mm.
static const double DEFAULT_HIGHLIGHT_BUFFER_MM
Default highlight buffer in mm.
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 qgsVariantGreaterThan(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether the first is greater than the second.
void CORE_EXPORT * qgsMalloc(size_t size)
Allocates size bytes and returns a pointer to the allocated memory.
Object * operator->()
Returns pointer to blocked QObject.
const long GEO_EPSG_CRS_ID
Magic number for a geographic coord sys in EpsgCrsId ID format.
static const double SCALE_PRECISION
Fudge factor used to compare two scales.
CORE_EXPORT const QString GEO_EPSG_CRS_AUTHID
Geographic coord sys from EPSG authority.
CORE_EXPORT const QString GEOWKT
Wkt string that represents a geographic coord sys.