int main(int argc, char** argv) { // Initialize the Qt Application QGuiApplication app(argc, argv); // Register the HullRenderer QML Type qmlRegisterType<HullRenderer>("com.nearce.HullRenderer", 1, 0, "HullRenderer"); // Establish the Qt Quick View QQuickView view; // Create the algorithm objecsts GrahamScan grahamScan; JarvisMarch jarvisMarch; // Create the input genration objects RandomPointInput randomPointInput(50, 1000); CircularPointInput circularPointInput(50, 1000); // Establish list of avalible alogrithms & inputs for the Hull Solver QMap<QString, HullAlgorithm*> algorithms({ {grahamScan.name(), &grahamScan}, {jarvisMarch.name(), &jarvisMarch} }); QMap<QString, DataInput*> inputs({ {randomPointInput.name(), &randomPointInput}, {circularPointInput.name(), &circularPointInput} }); HullSolver solver(algorithms, inputs); // Inject some C++ objects into the QML document structure view.engine()->rootContext()->setContextProperty("random_input", &randomPointInput); view.engine()->rootContext()->setContextProperty("circular_input", &circularPointInput); view.engine()->rootContext()->setContextProperty("hull_solver", &solver); // Establish a dynamicly resizing content resize policy & display the QML window view.setResizeMode(QQuickView::SizeRootObjectToView); view.setSource(QUrl("qrc:///resources/main.qml")); view.showMaximized(); // Create a signal slot connection between the HullRenderer QML object // and the hull solver in C++ for convience HullRenderer* renderer = view.rootObject()->findChild<HullRenderer*>("renderer"); QObject::connect(&solver, SIGNAL(solutionFound(const HullTimeline&)), renderer, SLOT(setTimeline(const HullTimeline&))); return app.exec(); }
int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QCoreApplication::setApplicationName(kApplicationName); QCoreApplication::setApplicationVersion(kApplicationVersion); QCoreApplication::setOrganizationName(kOrganizationName); #ifdef Q_OS_MAC QCoreApplication::setOrganizationDomain(kOrganizationName); #else QCoreApplication::setOrganizationDomain(kOrganizationDomain); #endif QSettings::setDefaultFormat(kSettingsFormat); #ifdef Q_OS_WIN // Force usage of OpenGL ES through ANGLE on Windows QCoreApplication::setAttribute(Qt::AA_UseOpenGLES); #endif // Before initializing ArcGIS Runtime, first set the // ArcGIS Runtime license setting required for your application. // ArcGISRuntimeEnvironment::setLicense("Place license string in here"); // use this code to check for initialization errors // QObject::connect(ArcGISRuntimeEnvironment::instance(), &ArcGISRuntimeEnvironment::errorOccurred, [](const Error& error){ // QMessageBox msgBox; // msgBox.setText(error.message); // msgBox.exec(); // }); // if (ArcGISRuntimeEnvironment::initialize() == false) // { // application.quit(); // return 1; // } // Register the map view for QML qmlRegisterType<MapQuickView>("Esri.GeocodeWhat3Words", 1, 0, "MapView"); // Register the GeocodeWhat3Words (QQuickItem) for QML qmlRegisterType<GeocodeWhat3Words>("Esri.GeocodeWhat3Words", 1, 0, "GeocodeWhat3Words"); // Intialize application view QQuickView view; view.setResizeMode(QQuickView::SizeRootObjectToView); // Add the import Path view.engine()->addImportPath(QDir(QCoreApplication::applicationDirPath()).filePath("qml")); QString arcGISRuntimeImportPath = QUOTE(ARCGIS_RUNTIME_IMPORT_PATH); QString arcGISToolkitImportPath = QUOTE(ARCGIS_TOOLKIT_IMPORT_PATH); #if defined(LINUX_PLATFORM_REPLACEMENT) // on some linux platforms the string 'linux' is replaced with 1 // fix the replacement paths which were created QString replaceString = QUOTE(LINUX_PLATFORM_REPLACEMENT); arcGISRuntimeImportPath = arcGISRuntimeImportPath.replace(replaceString, "linux", Qt::CaseSensitive); arcGISToolkitImportPath = arcGISToolkitImportPath.replace(replaceString, "linux", Qt::CaseSensitive); #endif // Add the Runtime and Extras path view.engine()->addImportPath(arcGISRuntimeImportPath); // Add the Toolkit path view.engine()->addImportPath(arcGISToolkitImportPath); // Set the source view.setSource(QUrl(kApplicationSourceUrl)); #if !defined(Q_OS_IOS) && !defined(Q_OS_ANDROID) // Process command line QCommandLineOption showOption(kArgShowName, kArgShowDescription, kArgShowValueName, kArgShowDefault); QCommandLineParser commandLineParser; commandLineParser.setApplicationDescription(kApplicationDescription); commandLineParser.addOption(showOption); commandLineParser.addHelpOption(); commandLineParser.addVersionOption(); commandLineParser.process(app); // Show app window auto showValue = commandLineParser.value(kArgShowName).toLower(); if (showValue.compare(kShowMaximized) == 0) { view.showMaximized(); } else if (showValue.compare(kShowMinimized) == 0) { view.showMinimized(); } else if (showValue.compare(kShowFullScreen) == 0) { view.showFullScreen(); } else if (showValue.compare(kShowNormal) == 0) { view.showNormal(); } else { view.show(); } #else view.show(); #endif return app.exec(); }