source: tspsg/src/globals.h @ 31694c8b58

appveyorimgbotreadme
Last change on this file since 31694c8b58 was 31694c8b58, checked in by Oleksii Serdiuk, 12 years ago

Fixed wrong placement of tspsg.ini on Windows Mobile.

Also, Main Window stopped showing maximized on Windows Mobile. Made a
workaround for this.

Closes #15 - Try to fix wrong placement of tspsg.ini.

  • Property mode set to 100644
File size: 5.9 KB
Line 
1/*!
2 * \file globals.h
3 * \author Copyright &copy; 2007-2012 Oleksii Serdiuk <contacts[at]oleksii[dot]name>
4 *
5 *  $Id: $Format:%h %ai %an$ $
6 *  $URL: http://tspsg.info/ $
7 *
8 * \brief Contains TSPSG global defines.
9 *
10 *  <b>TSPSG: TSP Solver and Generator</b>
11 *
12 *  This file is part of TSPSG.
13 *
14 *  TSPSG is free software: you can redistribute it and/or modify
15 *  it under the terms of the GNU General Public License as published by
16 *  the Free Software Foundation, either version 3 of the License, or
17 *  (at your option) any later version.
18 *
19 *  TSPSG is distributed in the hope that it will be useful,
20 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 *  GNU General Public License for more details.
23 *
24 *  You should have received a copy of the GNU General Public License
25 *  along with TSPSG.  If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#ifndef GLOBALS_H
29#define GLOBALS_H
30
31// INCLUDES
32#include <QtCore>
33#if QT_VERSION < QT_VERSION_CHECK(4,5,0)
34#   error You are using Qt version < 4.5 but minimum required version is 4.5.0. Compilation aborted.
35#endif
36#if defined(Q_OS_WINCE_WM) || defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR)
37    //! This is defined on handheld devices (e.g., Windows Mobile, Symbian).
38#   define HANDHELD
39#   define QT_NO_STATUSTIP
40#endif
41#include <QtGui>
42#if defined(QT_NO_SVG) && !defined(NOSVG)
43#   define NOSVG
44#endif
45#if !defined(NOSVG)
46#   include <QtSvg>
47#endif // NOSVG
48#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
49#   include <QtConcurrent>
50#   include <QtPrintSupport>
51#endif
52
53#ifndef HANDHELD
54#   include "qttoolbardialog.h"
55#endif
56
57// Version info
58#include "version.h"
59// OS and ARCH detection
60#include "os.h"
61// TSPSG Defaults
62#include "defaults.h"
63// TSPSolver
64#include "tspsolver.h"
65#ifndef HANDHELD
66    // Eyecandy
67#   include "qtwin.h"
68#endif // HANDHELD
69
70// DEFINES
71//! Maximum available number of cities
72#define MAX_NUM_CITIES 50
73//! Maximum allowed value for random generation limits
74#define MAX_RAND_VALUE 1000
75
76// Paths
77/*!
78 * \def PATH_L10N
79 * \brief Path to internationalization files.
80 */
81#ifndef PATH_L10N
82#   define PATH_L10N "l10n"
83#endif // PATH_L10N
84/*!
85 * \def PATH_DOCS
86 * \brief Bath to documentation files.
87 */
88#ifndef PATH_DOCS
89#   define PATH_DOCS "help"
90#endif // PATH_DOCS
91
92//! TSPSG Task file signature - letters \c TSPT
93#define TSPT quint32(0x54535054)
94//! TSPSG Task file version
95#define TSPT_VERSION quint8(1)
96//! TSPSG Task file metadata version
97#define TSPT_META_VERSION quint8(1)
98//! TSPSG Task file metadata size in bytes (incl. version)
99#define TSPT_META_SIZE 2
100//! ZKomModRd Task file signature - letters \c ZK
101#define ZKT quint16(0x5A4B)
102//! ZKomModRd Task file version
103#define ZKT_VERSION quint8(1)
104
105//! This string represents infinite value in the table
106#define INFSTR "---"
107
108//! Number of centimeters in 1 inch
109#define CM_IN_INCH 2.54
110//! Factor for high quality graph generation
111#define HQ_FACTOR 2
112
113// FUNCTIONS
114/*!
115 * \brief Checks whether \a x contains an integer value.
116 * \param x A value to check.
117 * \return \c true if \a x countains an integer, oherwise \c false.
118 */
119inline bool isInteger(double x)
120{
121double i;
122    return (modf(x, &i) == 0.0);
123}
124
125/*!
126 * \brief Checks whether the updater app is installed/available.
127 * \return \c true if updater app is available, oherwise \c false.
128 * \note The updater app is only available under Windows at this moment.
129 *  On other systems this function always returns \c false.
130 */
131inline bool hasUpdater()
132{
133#ifdef Q_OS_WIN32
134    return QFile::exists("updater/Update.exe");
135#else // Q_OS_WIN32
136    return false;
137#endif // Q_OS_WIN32
138}
139
140/*!
141 * \brief Converts \a in into Base64 format with lines wrapped at 64 characters.
142 * \param in A byte array to be converted.
143 * \return Converted byte array.
144 */
145inline QByteArray toWrappedBase64(const QByteArray &in)
146{
147    QByteArray out, base64(in.toBase64());
148    for (int i = 0; i <= base64.size() - 64; i += 64) {
149        out.append(QByteArray::fromRawData(base64.data() + i, 64)).append('\n');
150    }
151    if (int rest = base64.size() % 64)
152        out.append(QByteArray::fromRawData(base64.data() + base64.size() - rest, rest));
153    return out;
154}
155
156/*!
157 * \brief Creates QSettings instance with TSPSG-specific options.
158 * \param parent A QObject which will become parent for new QSetting instance.
159 * \return A pointer to new QSettings instance.
160 */
161QSettings *initSettings(QObject *parent);
162
163#ifndef HANDHELD
164/*!
165 * \brief Enables or disables a mask for the \a widget.
166 * \param widget A widget to toggle mask on.
167 * \param enable Set to \c true to enable mask or \c false to disable it.
168 *
169 *  This function is used to enable an outlined font effect for \c QLabel with a static text.
170 */
171void toggleStyle(QWidget *widget, bool enable);
172#endif // HANDHELD
173
174#ifndef DOXYGEN_EXCLUDE
175
176#ifndef QT_NO_PRINTER
177    Q_DECLARE_METATYPE(QPrinter::PageSize)
178    Q_DECLARE_METATYPE(QPrinter::Orientation)
179#endif
180
181#ifdef HANDHELD
182#   define ICON_SIZE "48x48"
183#   define ICON_FORMAT "png"
184#else
185#   define ICON_SIZE "128x128"
186#   define ICON_FORMAT "png"
187#endif
188
189#if QT_VERSION >= QT_VERSION_CHECK(4,6,0)
190#   define GET_ICON(x) QIcon::fromTheme(x, QIcon(":/images/icons/"ICON_SIZE"/"x"."ICON_FORMAT))
191#else
192#   define GET_ICON(x) QIcon(":/images/icons/"ICON_SIZE"/"x"."ICON_FORMAT)
193// No QVariant::toReal() member in Qt < 4.6
194// A quick hack to maintain compatibility with Qt 4.5.x
195#   define toReal toDouble
196#endif
197
198// Sanity checks
199// Check that default number of cities is sane (<= MAX_NUM_CITIES)
200#if DEF_NUM_CITIES > MAX_NUM_CITIES
201#   undef DEF_NUM_CITIES
202#   define DEF_NUM_CITIES MAX_NUM_CITIES
203#endif
204// Check that maximum for random generation is sane (<= MAX_RAND_VALUE)
205#if DEF_RAND_MAX > MAX_RAND_VALUE
206#   undef DEF_RAND_MAX
207#   define DEF_RAND_MAX MAX_RAND_VALUE
208#endif
209// Check that DEF_RAND_MIN <= DEF_RAND_MAX
210#if DEF_RAND_MIN > DEF_RAND_MAX
211#   undef DEF_RAND_MIN
212#   define DEF_RAND_MIN DEF_RAND_MAX
213#endif
214
215#endif // DOXYGEN_EXCLUDE
216
217#endif // GLOBALS_H
Note: See TracBrowser for help on using the repository browser.