20 #include "qgsversion.h"    22 #include <QCoreApplication>    28 #include "qgsconfig.h"    50 const QString 
GEOPROJ4 = QStringLiteral( 
"+proj=longlat +datum=WGS84 +no_defs" );
    54   "  DATUM[\"WGS_1984\", "    55   "    SPHEROID[\"WGS 84\",6378137,298.257223563, "    56   "      AUTHORITY[\"EPSG\",7030]], "    57   "    TOWGS84[0,0,0,0,0,0,0], "    58   "    AUTHORITY[\"EPSG\",6326]], "    59   "  PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",8901]], "    60   "  UNIT[\"DMSH\",0.0174532925199433,AUTHORITY[\"EPSG\",9108]], "    61   "  AXIS[\"Lat\",NORTH], "    62   "  AXIS[\"Long\",EAST], "    63   "  AUTHORITY[\"EPSG\",4326]]";
    66   "1:1000000,1:500000,1:250000,1:100000,1:50000,1:25000,"    67   "1:10000,1:5000,1:2500,1:1000,1:500";
    71 const QString 
GEO_NONE = QStringLiteral( 
"NONE" );
    94 const double Qgis::UI_SCALE_FACTOR = 1;
   100   string.remove( QLocale().groupSeparator() );
   101   return QLocale().toDouble( 
string, &ok );
   107   string.remove( QLocale().groupSeparator() );
   108   return QLocale().toInt( 
string, &ok );
   114   string.remove( QLocale().groupSeparator() );
   115   return QLocale().toLongLong( 
string, &ok );
   120   if ( size == 0 || 
long( size ) < 0 )
   122     QgsDebugMsg( QStringLiteral( 
"Negative or zero size %1." ).arg( size ) );
   125   void *p = malloc( size );
   128     QgsDebugMsg( QStringLiteral( 
"Allocation of %1 bytes failed." ).arg( size ) );
   135   if ( nmemb == 0 || 
long( nmemb ) < 0 || size == 0 || 
long( size ) < 0 )
   137     QgsDebugMsg( QStringLiteral( 
"Negative or zero nmemb %1 or size %2." ).arg( nmemb ).arg( size ) );
   143     memset( p, 0, nmemb * size );
   156   if ( !lhs.isValid() )
   157     return rhs.isValid();
   158   else if ( lhs.isNull() )
   159     return rhs.isValid() && !rhs.isNull();
   160   else if ( !rhs.isValid() || rhs.isNull() )
   163   switch ( lhs.type() )
   166       return lhs.toInt() < rhs.toInt();
   168       return lhs.toUInt() < rhs.toUInt();
   169     case QVariant::LongLong:
   170       return lhs.toLongLong() < rhs.toLongLong();
   171     case QVariant::ULongLong:
   172       return lhs.toULongLong() < rhs.toULongLong();
   173     case QVariant::Double:
   174       return lhs.toDouble() < rhs.toDouble();
   176       return lhs.toChar() < rhs.toChar();
   178       return lhs.toDate() < rhs.toDate();
   180       return lhs.toTime() < rhs.toTime();
   181     case QVariant::DateTime:
   182       return lhs.toDateTime() < rhs.toDateTime();
   184       return lhs.toBool() < rhs.toBool();
   188       const QList<QVariant> &lhsl = lhs.toList();
   189       const QList<QVariant> &rhsl = rhs.toList();
   191       int i, n = std::min( lhsl.size(), rhsl.size() );
   192       for ( i = 0; i < n && lhsl[i].type() == rhsl[i].type() && 
qgsVariantEqual( lhsl[i], rhsl[i] ); i++ )
   196         return lhsl.size() < rhsl.size();
   201     case QVariant::StringList:
   203       const QStringList &lhsl = lhs.toStringList();
   204       const QStringList &rhsl = rhs.toStringList();
   206       int i, n = std::min( lhsl.size(), rhsl.size() );
   207       for ( i = 0; i < n && lhsl[i] == rhsl[i]; i++ )
   211         return lhsl.size() < rhsl.size();
   213         return lhsl[i] < rhsl[i];
   217       return QString::localeAwareCompare( lhs.toString(), rhs.toString() ) < 0;
   228   if ( path.startsWith( QLatin1String( 
"/vsizip/" ), Qt::CaseInsensitive ) ||
   229        path.endsWith( QLatin1String( 
".zip" ), Qt::CaseInsensitive ) )
   230     return QStringLiteral( 
"/vsizip/" );
   231   else if ( path.startsWith( QLatin1String( 
"/vsitar/" ), Qt::CaseInsensitive ) ||
   232             path.endsWith( QLatin1String( 
".tar" ), Qt::CaseInsensitive ) ||
   233             path.endsWith( QLatin1String( 
".tar.gz" ), Qt::CaseInsensitive ) ||
   234             path.endsWith( QLatin1String( 
".tgz" ), Qt::CaseInsensitive ) )
   235     return QStringLiteral( 
"/vsitar/" );
   236   else if ( path.startsWith( QLatin1String( 
"/vsigzip/" ), Qt::CaseInsensitive ) ||
   237             path.endsWith( QLatin1String( 
".gz" ), Qt::CaseInsensitive ) )
   238     return QStringLiteral( 
"/vsigzip/" );
   243 uint 
qHash( 
const QVariant &variant )
   245   if ( !variant.isValid() || variant.isNull() )
   246     return std::numeric_limits<uint>::max();
   248   switch ( variant.type() )
   251       return qHash( variant.toInt() );
   253       return qHash( variant.toUInt() );
   255       return qHash( variant.toBool() );
   256     case QVariant::Double:
   257       return qHash( variant.toDouble() );
   258     case QVariant::LongLong:
   259       return qHash( variant.toLongLong() );
   260     case QVariant::ULongLong:
   261       return qHash( variant.toULongLong() );
   262     case QVariant::String:
   263       return qHash( variant.toString() );
   265       return qHash( variant.toChar() );
   268 #if QT_VERSION >= 0x050600   269       return qHash( variant.toList() );
   272         QVariantList list = variant.toList();
   273         if ( list.isEmpty() )
   276           return qHash( list.at( 0 ) );
   279     case QVariant::StringList:
   280 #if QT_VERSION >= 0x050600   281       return qHash( variant.toStringList() );
   284         QStringList list = variant.toStringList();
   285         if ( list.isEmpty() )
   288           return qHash( list.at( 0 ) );
   291     case QVariant::ByteArray:
   292       return qHash( variant.toByteArray() );
   294       return qHash( variant.toDate() );
   296       return qHash( variant.toTime() );
   297     case QVariant::DateTime:
   298       return qHash( variant.toDateTime() );
   300     case QVariant::Locale:
   301     case QVariant::RegExp:
   302       return qHash( variant.toString() );
   307   return std::numeric_limits<uint>::max();
   312   return lhs.isNull() == rhs.isNull() && lhs == rhs;
 static const QString QGIS_VERSION
Version string. 
 
static const char * QGIS_DEV_VERSION
The development version. 
 
void * qgsMalloc(size_t size)
Allocates size bytes and returns a pointer to the allocated memory. 
 
bool qMapLessThanKey< QVariantList >(const QVariantList &key1, const QVariantList &key2)
Compares two QVariantList values and returns whether the first is less than the second. 
 
static const double UI_SCALE_FACTOR
UI scaling factor. 
 
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...
 
void * 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...
 
UnitType
Type of unit of tolerance value from settings. 
 
static const QColor DEFAULT_HIGHLIGHT_COLOR
Default highlight color. 
 
bool qgsVariantGreaterThan(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether the first is greater than the second. 
 
static const int QGIS_VERSION_INT
Version number used for comparing versions using the "Check QGIS Version" function. 
 
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...
 
bool qgsVariantLessThan(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether the first is less than the second. 
 
const QString GEO_NONE
Constant that holds the string representation for "No ellips/No CRS". 
 
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...
 
static const double DEFAULT_SNAP_TOLERANCE
Default snapping distance tolerance. 
 
Pixels unit of tolerance. 
 
const QString GEOPROJ4
PROJ4 string that represents a geographic coord sys. 
 
qlonglong qgsPermissiveToLongLong(QString string, bool &ok)
Converts a string to an qlonglong in a permissive way, e.g., allowing for incorrect numbers of digits...
 
static const double DEFAULT_SEARCH_RADIUS_MM
Identify search radius in mm. 
 
const QString GEO_EPSG_CRS_AUTHID
Geographic coord sys from EPSG authority. 
 
static const QgsTolerance::UnitType DEFAULT_SNAP_UNITS
Default snapping distance units. 
 
const QString GEOWKT
Wkt string that represents a geographic coord sys. 
 
uint qHash(const QVariant &variant)
Hash for QVariant. 
 
static const float DEFAULT_MAPTOPIXEL_THRESHOLD
Default threshold between map coordinates and device coordinates for map2pixel simplification. 
 
static const QString QGIS_RELEASE_NAME
Release name. 
 
const QString PROJECT_SCALES
 
QString qgsVsiPrefix(const QString &path)
 
static const double DEFAULT_HIGHLIGHT_MIN_WIDTH_MM
Default highlight line/stroke minimum width in mm. 
 
bool qgsVariantEqual(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether they are equal, NULL values are treated as equal...
 
static const double DEFAULT_HIGHLIGHT_BUFFER_MM
Default highlight buffer in mm. 
 
void qgsFree(void *ptr)
Frees the memory space pointed to by ptr. 
 
static const double SCALE_PRECISION
Fudge factor used to compare two scales.