1st revision

This commit is contained in:
Efi Fogel 2022-10-02 18:56:55 +03:00
parent 2159476dc4
commit f08da8489f
27 changed files with 1327 additions and 0 deletions

View File

@ -0,0 +1,98 @@
# This is the CMake script for compiling a CGAL application.
cmake_minimum_required(VERSION 3.1...3.23)
project(Globus_demo)
if(NOT POLICY CMP0070 AND POLICY CMP0053)
# Only set CMP0053 to OLD with CMake<3.10, otherwise there is a warning.
cmake_policy(SET CMP0053 OLD)
endif()
if(POLICY CMP0071)
cmake_policy(SET CMP0071 NEW)
endif()
# General
set(GLOBUS_MODULES_REL_DIR cmake/modules)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/${GLOBUS_MODULES_REL_DIR})
find_package(CGAL QUIET COMPONENTS Qt5 OPTIONAL_COMPONENTS Core)
find_package(Qt5 QUIET COMPONENTS Gui Widgets)
find_package(FileGDBAPI REQUIRED)
if (CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND)
include(${CGAL_USE_FILE})
add_compile_definitions(QT_NO_KEYWORDS)
include_directories( BEFORE ./ )
include_directories(${FileGDBAPI_INCLUDE_DIR})
# Arrangement package includes
add_definitions(-DQT_NO_KEYWORDS)
option(COMPILE_UTILS_INCREMENTALLY
"Compile files in Utils directory incrementally, or compile them all as a unit. \
Incremental compilation will be better for development and consume less \
memory while compiling but will take longer to compile."
OFF)
set(UTILS_SOURCE_FILES "")
if (COMPILE_UTILS_INCREMENTALLY)
set(UTILS_COMPILE_FILES ${UTILS_SOURCE_FILES})
else()
set(UTILS_CPP_FILES_INCLUDES "")
foreach(utils_src IN LISTS UTILS_SOURCE_FILES)
string(APPEND UTILS_CPP_FILES_INCLUDES "#include \"${utils_src}\"\n")
endforeach()
file(WRITE "${CMAKE_BINARY_DIR}/CombinedUtils.cpp" ${UTILS_CPP_FILES_INCLUDES})
set(UTILS_COMPILE_FILES "${CMAKE_BINARY_DIR}/CombinedUtils.cpp")
endif()
qt5_wrap_ui(globus_uis
Globus_window.ui)
qt5_wrap_cpp(CGAL_Qt5_MOC_FILES
Globus_window.h)
qt5_add_resources(CGAL_Qt5_RESOURCE_FILES Globus.qrc)
add_executable(globus
globus.cpp
Globus_window.cpp
${UTILS_COMPILE_FILES}
${globus_uis}
${CGAL_Qt5_RESOURCE_FILES}
${CGAL_Qt5_MOC_FILES})
target_link_libraries(globus ${FileGDBAPI_LIBRARY})
target_link_libraries(globus Qt5::Core Qt5::Gui Qt5::Widgets)
target_link_libraries(globus CGAL::CGAL CGAL::CGAL_Qt5)
if(CGAL_Core_FOUND)
target_link_libraries(globus CGAL::CGAL_Core)
endif()
add_to_cached_list(CGAL_EXECUTABLE_TARGETS globus)
include(${CGAL_MODULES_DIR}/CGAL_add_test.cmake)
cgal_add_compilation_test(globus)
set_property(TARGET globus PROPERTY INSTALL_RPATH "${FileGDBAPI_LIBRARY_DIR}")
set_property(TARGET globus PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
set_target_properties(globus PROPERTIES LINK_FLAGS "-Wl,--disable-new-dtags")
else()
set(MISSING_DEPS "")
if(NOT CGAL_FOUND)
set(MISSING_DEPS "CGAL, ${MISSING_DEPS}")
endif()
if(NOT CGAL_Qt5_FOUND)
set(MISSING_DEPS "the CGAL Qt5 library, ${MISSING_DEPS}")
endif()
if(NOT Qt5_FOUND)
set(MISSING_DEPS "Qt5, ${MISSING_DEPS}")
endif()
message(STATUS
"NOTICE: This demo requires ${MISSING_DEPS} and will not be compiled.")
endif()

View File

@ -0,0 +1,18 @@
<RCC>
<qresource prefix="/cgal/icons">
<file alias="zoomin.xpm">resources/icons/zoomin.xpm</file>
<file alias="zoomout.xpm">resources/icons/zoomout.xpm</file>
<file alias="zoomreset.xpm">resources/icons/zoomreset.xpm</file>
<file alias="yellow_icon.xpm">resources/icons/yellow_icon.xpm</file>
<file alias="red_icon.xpm">resources/icons/red_icon.xpm</file>
<file alias="green_icon.xpm">resources/icons/green_icon.xpm</file>
<file alias="blue_icon.xpm">resources/icons/blue_icon.xpm</file>
<file alias="pink_icon.xpm">resources/icons/pink_icon.xpm</file>
<file alias="hand.xpm">resources/icons/hand.xpm</file>
<file alias="delete.xpm">resources/icons/delete.xpm</file>
</qresource>
<qresource prefix="/cgal/Globus">
<file alias="about.html">resources/about.html</file>
</qresource>
</RCC>

View File

@ -0,0 +1,166 @@
// Copyright (c) 2022 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
//
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
//
// Author(s): Efi Fogel <efifogel@gmail.com>
#include <QActionGroup>
#include <QColorDialog>
#include <QFileDialog>
#include <QInputDialog>
#include <QMessageBox>
#include <QString>
#include <QGraphicsView>
#include <QLabel>
#include <CGAL/Qt/GraphicsViewNavigation.h>
#include "Globus_window.h"
#include "ui_Globus_window.h"
//! \brief constructs
Globus_window::Globus_window(QWidget* parent) :
CGAL::Qt::DemosMainWindow(parent), ui(new Ui::Globus_window) {
this->setup_ui();
// this->setupStatusBar();
// this->setupOptionsMenu();
this->addAboutDemo(":/cgal/Arrangement_on_surface_2/about.html");
this->addAboutCGAL();
}
//! \brief destructs
Globus_window::~Globus_window() {}
//! \brief
void Globus_window::setup_ui() {
this->ui->setupUi(this);
this->mode_group = new QActionGroup(this);
this->mode_group->addAction(this->ui->action_drag);
}
//! \brief
// void Globus_window::resetActionGroups(ArrangementDemoTab* tab, TraitsType tt) {
// this->hideInsertMethods();
// this->ui->actionInsert->setChecked(false);
// this->ui->actionDrag->setChecked(false);
// this->ui->actionLowerEnvelope->setChecked(false);
// this->ui->actionUpperEnvelope->setChecked(false);
// this->ui->actionShowGrid->setChecked(tab->isGridVisible());
// this->ui->actionGridSnapMode->setChecked(tab->isSnapToGridEnabled());
// this->ui->actionArrangementSnapMode->setChecked(
// tab->isSnapToArrangementEnabled());
// this->ui->actionLowerEnvelope->setChecked(tab->isLowerEnvelopeShown());
// this->ui->actionUpperEnvelope->setChecked(tab->isUpperEnvelopeShown());
// if (
// tt != TraitsType::SEGMENT_TRAITS && tt != TraitsType::POLYLINE_TRAITS &&
// tt != TraitsType::LINEAR_TRAITS)
// this->ui->actionArrangementSnapMode->setVisible(false);
// else
// this->ui->actionArrangementSnapMode->setVisible(true);
// // default action group is scrolling
// this->ui->actionDrag->activate(QAction::Trigger);
// }
//! \brief
// void Globus_window::reset_callback_state(ArrangementDemoTab* tab) {
// if (tab) {
// tab->getView()->setDragMode(QGraphicsView::NoDrag);
// tab->unhookCallbacks();
// }
// }
//! \brief
void Globus_window::on_action_quit_triggered() { qApp->exit(); }
//! \brief
void Globus_window::on_action_open_triggered() {
const QString filename =
QFileDialog::getOpenFileName(this, tr("Open file"), "",
"Globus files (*.gdb)");
if (filename.isNull()) return;
if (filename.endsWith(".gdb")) {
QMessageBox::information(this, "Oops", "Not implemented yet");
// auto tab = this->openArrFile(filename);
// if (tab) {
// tab->setParent(this);
// this->addTab(tab, this->makeTabLabel(tab->traitsType()));
// tab->adjustViewport();
// }
}
else {
QMessageBox::information(this, "Oops", "Unsupported file format");
}
}
//! \brief
void Globus_window::on_action_preferences_triggered() {
// ArrangementDemoPropertiesDialog dialog{this};
// if (dialog.exec() == QDialog::Accepted) {
// typedef ArrangementDemoPropertiesDialog Dialog;
// ArrangementDemoTab::Preferences pref;
// pref.edgeColor = dialog.property(Dialog::EDGE_COLOR_KEY).value<QColor>();
// pref.edgeWidth =
// dialog.property(Dialog::EDGE_WIDTH_KEY).value<unsigned int>();
// pref.vertexColor =
// dialog.property(Dialog::VERTEX_COLOR_KEY).value<QColor>();
// pref.vertexRadius =
// dialog.property(Dialog::VERTEX_RADIUS_KEY).value<unsigned int>();
// pref.envelopeEdgeColor =
// dialog.property(Dialog::ENVELOPE_EDGE_COLOR_KEY).value<QColor>();
// pref.envelopeEdgeWidth =
// dialog.property(Dialog::ENVELOPE_EDGE_WIDTH_KEY).value<unsigned int>();
// pref.envelopeVertexColor =
// dialog.property(Dialog::ENVELOPE_VERTEX_COLOR_KEY).value<QColor>();
// pref.envelopeVertexRadius =
// dialog.property(Dialog::ENVELOPE_VERTEX_RADIUS_KEY).value<unsigned int>();
// pref.verticalRayEdgeColor =
// dialog.property(Dialog::VERTICAL_RAY_EDGE_COLOR_KEY).value<QColor>();
// pref.verticalRayEdgeWidth =
// dialog.property(Dialog::VERTICAL_RAY_EDGE_WIDTH_KEY)
// .value<unsigned int>();
// pref.axesColor = dialog.property(Dialog::GRID_COLOR_KEY).value<QColor>();
// pref.gridColor = pref.axesColor;
// pref.gridColor.setAlphaF(0.5);
// currentTab->updatePreferences(pref);
// }
}
//! \brief
void Globus_window::on_action_save_as_triggered() {
QMessageBox::information(this, "Save as", "Not implemented yet");
}
//! \brief
void Globus_window::on_action_zoom_in_triggered() {
// QGraphicsView* view = currentTab->getView();
// view->scale(2.0, 2.0);
}
//! \brief
void Globus_window::on_action_zoom_out_triggered() {
// QGraphicsView* view = currentTab->getView();
// view->scale(0.5, 0.5);
}
//! \brief
void Globus_window::on_action_zoom_reset_triggered() {
// currentTab->adjustViewport();
}
void Globus_window::on_action_drag_toggled(bool checked) {
// TODO: Move this to DemoTab
// QGraphicsView* activeView = currentTab->getView();
// if (!checked)
// activeView->setDragMode(QGraphicsView::NoDrag);
// else
// activeView->setDragMode(QGraphicsView::ScrollHandDrag);
}

View File

@ -0,0 +1,59 @@
// Copyright (c) 2022 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
//
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
//
// Author(s): Efi Fogel <efifogel@gmail.com>
#ifndef GLOBUS_WINDOW_H
#define GLOBUS_WINDOW_H
#include <utility>
#include <vector>
#include <Qt>
#include <CGAL/Object.h>
#include <CGAL/Qt/DemosMainWindow.h>
namespace Ui { class Globus_window; }
namespace CGAL {
class Object;
namespace Qt {
class GraphicsViewNavigation;
}
}
class QActionGroup;
class Globus_window : public CGAL::Qt::DemosMainWindow {
Q_OBJECT
public:
Globus_window(QWidget* parent = nullptr);
~Globus_window();
public Q_SLOTS:
void on_action_quit_triggered();
void on_action_open_triggered();
void on_action_save_as_triggered();
void on_action_preferences_triggered();
void on_action_zoom_in_triggered();
void on_action_zoom_out_triggered();
void on_action_zoom_reset_triggered();
void on_action_drag_toggled(bool);
Q_SIGNALS:
protected:
void setup_ui();
private:
Ui::Globus_window* ui;
QActionGroup* mode_group;
};
#endif

View File

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Globus_window</class>
<widget class="QMainWindow" name="Globus_window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>946</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>Globus</string>
</property>
<widget class="QStatusBar" name="statusbar"/>
<widget class="QToolBar" name="toolbar">
<property name="windowTitle">
<string>toolBar</string>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="action_drag"/>
<addaction name="separator"/>
<addaction name="action_zoom_in"/>
<addaction name="action_zoom_out"/>
<addaction name="action_zoom_reset"/>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>946</width>
<height>23</height>
</rect>
</property>
<widget class="QMenu" name="menu_file">
<property name="title">
<string>&amp;File</string>
</property>
<addaction name="action_open"/>
<addaction name="action_save_as"/>
<addaction name="separator"/>
<addaction name="action_quit"/>
</widget>
<widget class="QMenu" name="menu_mode">
<property name="title">
<string>&amp;Mode</string>
</property>
<addaction name="action_drag"/>
</widget>
<widget class="QMenu" name="menu_edit">
<property name="title">
<string>&amp;Edit</string>
</property>
<addaction name="action_preferences"/>
</widget>
<widget class="QMenu" name="menu_tools">
<property name="title">
<string>&amp;Tools</string>
</property>
</widget>
<addaction name="menu_file"/>
<addaction name="menu_edit"/>
<addaction name="menu_mode"/>
<addaction name="menu_tools"/>
</widget>
<action name="action_quit">
<property name="text">
<string>&amp;Quit</string>
</property>
</action>
<action name="action_drag">
<property name="checkable">
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="Globus.qrc">
<normaloff>:/cgal/icons/hand.xpm</normaloff>:/cgal/icons/hand.xpm</iconset>
</property>
<property name="text">
<string>Drag</string>
</property>
</action>
<action name="action_preferences">
<property name="text">
<string>&amp;Preferences...</string>
</property>
</action>
<action name="action_save_as">
<property name="text">
<string>Save As...</string>
</property>
<property name="shortcut">
<string>Ctrl+S</string>
</property>
</action>
<action name="action_open">
<property name="text">
<string>Open...</string>
</property>
<property name="shortcut">
<string>Ctrl+O</string>
</property>
</action>
<action name="action_zoom_in">
<property name="icon">
<iconset resource="Globus.qrc">
<normaloff>:/cgal/icons/zoomin.xpm</normaloff>:/cgal/icons/zoomin.xpm</iconset>
</property>
<property name="text">
<string>Zoom In</string>
</property>
<property name="toolTip">
<string>Zoom In</string>
</property>
</action>
<action name="action_zoom_out">
<property name="icon">
<iconset resource="Globus.qrc">
<normaloff>:/cgal/icons/zoomout.xpm</normaloff>:/cgal/icons/zoomout.xpm</iconset>
</property>
<property name="text">
<string>Zoom Out</string>
</property>
<property name="toolTip">
<string>Zoom Out</string>
</property>
</action>
<action name="action_zoom_reset">
<property name="icon">
<iconset resource="Globus.qrc">
<normaloff>:/cgal/icons/zoomreset.xpm</normaloff>:/cgal/icons/zoomreset.xpm</iconset>
</property>
<property name="text">
<string>Zoom Reset</string>
</property>
<property name="toolTip">
<string>Zoom Reset</string>
</property>
</action>
</widget>
<resources>
<include location="Globus.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -0,0 +1,84 @@
# - Try to find FileGDBAPI (FileGDBAPI.lib on Windows and v8_base.x64.a on Linux)
# Once done this will define
# FileGDBAPI_FOUND - System has FileGDBAPI
# FileGDBAPI_INCLUDE_DIR - The FileGDBAPI include directories
# FileGDBAPI_LIBRARY - The library needed to use FileGDBAPI
# FileGDBAPI_LIBRARY_DIR - The directory where lib files are.
set(FileGDBAPI_NAMES_RELEASE FileGDBAPI)
set(FileGDBAPI_NAMES_DEBUG FileGDBAPId ${FileGDBAPI_NAMES_RELEASE})
find_path(FileGDBAPI_INCLUDE_DIR NAMES FileGDBAPI.h
PATH_SUFFIXES include FileGDBAPI include/FileGDBAPI
PATHS /opt/libvFileGDBAPI-$ENV{FileGDBAPI_VER}
HINTS ENV FileGDBAPI_INC_DIR ENV FileGDBAPI_DIR)
# CMake>=2.6 supports the notation "debug XXd optimized XX"
set(FileGDBAPI_HINTS ENV FileGDBAPI_LIB_DIR ENV FileGDBAPI_DIR)
if (UNIX)
set(FileGDBAPI_HINTS_DEBUG ${FileGDBAPI_DIR}/out/x64.debug $ENV{FileGDBAPI_DIR}/out/x64.debug)
set(FileGDBAPI_HINTS_RELEASE ${FileGDBAPI_DIR}/out/x64.release $ENV{FileGDBAPI_DIR}/out/x64.release)
set(FileGDBAPI_PATHS /opt/libFileGDBAPI-$ENV{FileGDBAPI_VER})
elseif(WIN32)
set(FileGDBAPI_HINTS_DEBUG ${FileGDBAPI_DIR}/build/Debug $ENV{FileGDBAPI_DIR}/build/Debug)
set(FileGDBAPI_HINTS_RELEASE ${FileGDBAPI_DIR}/out/build/Release $ENV{FileGDBAPI_DIR}/build/Release)
else()
endif()
find_library(FileGDBAPI_LIBRARY_RELEASE
NAMES ${FileGDBAPI_NAMES_RELEASE}
PATH_SUFFIXES lib
HINTS ${FileGDBAPI_HINTS} ${FileGDBAPI_HINTS_RELEASE}
PATHS ${FileGDBAPI_PATHS}
DOC "Google FileGDBAPI JavaScript Engine Library (Release)")
find_library(FileGDBAPI_LIBRARY_DEBUG
NAMES ${FileGDBAPI_NAMES_DEBUG}
PATH_SUFFIXES lib
HINTS ${FileGDBAPI_HINTS} ${FileGDBAPI_HINTS_DEBUG}
PATHS ${FileGDBAPI_PATHS}
DOC "Google FileGDBAPI JavaScript Engine Library (Debug)")
if(CMAKE_BUILD_TYPE EQUAL "Release")
get_filename_component(FileGDBAPI_LIBRARY_DIR ${FileGDBAPI_LIBRARY_RELEASE} PATH)
set(FileGDBAPI_LIBRARY ${FileGDBAPI_LIBRARY_RELEASE})
else()
get_filename_component(FileGDBAPI_LIBRARY_DIR ${FileGDBAPI_LIBRARY_DEBUG} PATH)
set(FileGDBAPI_LIBRARY_DEBUG ${FileGDBAPI_LIBRARY_RELEASE})
endif()
set(FileGDBAPI_LIBRARY
optimized ${FileGDBAPI_LIBRARY_RELEASE} debug ${FileGDBAPI_LIBRARY_DEBUG})
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set FileGDBAPI_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(FileGDBAPI DEFAULT_MSG
FileGDBAPI_LIBRARY
FileGDBAPI_INCLUDE_DIR)
# Detect FileGDBAPI version
set(FileGDBAPI_VERSION_MAJOR "1")
set(FileGDBAPI_VERSION_MINOR "5")
set(FileGDBAPI_VERSION_PATCH "2")
set(FileGDBAPI_VERSION_TWEAK "")
set(FileGDBAPI_VERSION "${FileGDBAPI_VERSION_MAJOR}.${FileGDBAPI_VERSION_MINOR}.${FileGDBAPI_VERSION_PATCH}.${FileGDBAPI_VERSION_TWEAK}")
set(FileGDBAPI_VERSION_HEX 0x0${FileGDBAPI_VERSION_MAJOR}${FileGDBAPI_VERSION_MINOR}${FileGDBAPI_VERSION_PATCH}${FileGDBAPI_VERSION_TWEAK})
string(LENGTH "${FileGDBAPI_VERSION_HEX}" FileGDBAPI_VERSION_HEX_LENGTH)
while(FileGDBAPI_VERSION_HEX_LENGTH LESS 8)
set(FileGDBAPI_VERSION_HEX "${FileGDBAPI_VERSION_HEX}0")
string(LENGTH "${FileGDBAPI_VERSION_HEX}" FileGDBAPI_VERSION_HEX_LENGTH)
endwhile()
mark_as_advanced(FileGDBAPI_INCLUDE_DIR FileGDBAPI_LIBRARY FileGDBAPI_LIBRARY_DIR)
if(FileGDBAPI_CMAKE_DEBUG)
message(STATUS "FileGDBAPI_INCLUDE_DIR: ${FileGDBAPI_INCLUDE_DIR}")
message(STATUS "FileGDBAPI_LIBRARY: ${FileGDBAPI_LIBRARY}")
message(STATUS "FileGDBAPI_LIBRARY_DEPENDS: ${FileGDBAPI_LIBRARY_DEPENDS}")
message(STATUS "FileGDBAPI_VERSION: ${FileGDBAPI_VERSION}")
message(STATUS "FileGDBAPI_VERSION_HEX: ${FileGDBAPI_VERSION_HEX}")
endif()

View File

@ -0,0 +1,141 @@
// Copyright (c) 2022, 2020 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
//
// $URL$
// $Id$
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
//
// Author(s): Efi Fogel <efifogel@gmail.com>
#include <string>
#include <vector>
#include <QApplication>
#include <FileGDBAPI.h>
#include "Globus_window.h"
//
struct country {
//! Constructor
country(std::string& name) :
m_name(std::move(name))
{}
std::string m_name;
};
namespace FGA = FileGDBAPI;
/*!
*/
int load_countries(std::vector<country>& countries) {
// Open the geodatabase and the table.
fgdbError hr;
FGA::Geodatabase geodatabase;
hr = FGA::OpenGeodatabase(L"/home/efif/tmp/esri/19113835-45b5-40b9-989b-fd04aad324da.gdb", geodatabase);
if (hr != S_OK) return hr;
// std::vector<std::wstring> types;
// hr = geodatabase.GetDatasetTypes(types);
// if (hr != S_OK) return hr;
// std::cout << "Types:\n";
// for (const auto& type : types)
// std::wcout << type << std::endl;
FGA::Table table;
hr = geodatabase.OpenTable(L"World_Countries", table);
if (hr != S_OK) {
std::cerr << "Cannot open table!\n";
return hr;
}
// std::string doc;
// hr = table.GetDocumentation(doc);
// if (hr != S_OK) return hr;
// std::cout << "Table Information:\n";
// std::cout << doc << std::endl;
// FGA::fieldDefs field_defs;
// hr = table.GetFields(fields_defs);
// if (hr != S_OK) return hr;
// std::cout << "Fields:\n";
// for (const auto& field : Fields)
// std::wcout << field << std::endl;
FGA::FieldInfo field_info;
hr = table.GetFieldInformation(field_info);
if (hr != S_OK) return hr;
int count;
hr = field_info.GetFieldCount(count);
std::cout << "Number of fileds: " << count << std::endl;
for (auto i = 0; i < count; ++i) {
std::wstring name;
hr = field_info.GetFieldName(i, name);
if (hr != S_OK) return hr;
std::wcout << "Name: " << name << std::endl;
}
FGA::Envelope envelope;
FGA::EnumRows rows;
hr = table.Search(L"SHAPE, COUNTRY", L"", envelope, true, rows);
if (hr != S_OK) {
std::cerr << "Cannot find rows!\n";
return hr;
}
countries.clear();
FGA::Row row;
while (rows.Next(row) == S_OK) {
std::wstring name;
row.GetString(L"COUNTRY", name);
std::string simple_name;
simple_name.assign(name.begin(), name.end());
countries.emplace_back(simple_name);
}
// Close the table
hr = geodatabase.CloseTable(table);
if (hr != S_OK) {
std::wcout << "An error occurred while closing Cities." << endl;
std::wcout << "Error code: " << hr << endl;
return -1;
}
// Close the geodatabase
hr = FGA::CloseGeodatabase(geodatabase);
if (hr != S_OK) {
std::wcout << "An error occurred while closing the geodatabase." << endl;
std::wcout << "Error code: " << hr << endl;
return -1;
}
return S_OK;
}
//
int main(int argc, char* argv[]) {
// Load the countries based on a search extent.
std::vector<country> countries;
size_t hr = load_countries(countries);
if (hr != S_OK) {
std::cerr << "Failed to load database!\n";
return -1;
}
for (const auto& country : countries) {
std::cout << country.m_name << std::endl;
}
QApplication app(argc, argv);
QCoreApplication::setOrganizationName("CGAL");
QCoreApplication::setApplicationName("globus");
// Import resources from libCGAL (Qt5).
CGAL_QT_INIT_RESOURCES;
Globus_window window;
window.show();
return app.exec();
}

View File

@ -0,0 +1,10 @@
<html>
<head>
<title>Globus</title>
</head>
<body>
<P align="center"><FONT size="5">Globus</FONT></P>
<br>
This program demonstrates the use of the geodesic traits if of the CGAL 2D Arrangements package.
</body>
</html>

View File

@ -0,0 +1,42 @@
/* XPM */
static const char *demo_arrow_down_xpm[] = {
/* width height ncolors chars_per_pixel */
"32 32 3 1",
/* colors */
" c #000000",
". c #808080",
"X c None",
/* pixels */
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXX.XXX. .XXX.XXXXXXXXXX",
"XXXXXXXXXX..XX. .XX..XXXXXXXXXX",
"XXXXXXXXXXX. .. .. .XXXXXXXXXXX",
"XXXXXXXXXXXX.. .XXXXXXXXXXXX",
"XXXXXXXXXXXXX. .XXXXXXXXXXXXX",
"XXXXXXXXXXXXX. .XXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
};

View File

@ -0,0 +1,42 @@
/* XPM */
static const char *demo_arrow_up_xpm[] = {
/* width height ncolors chars_per_pixel */
"32 32 3 1",
/* colors */
" c #000000",
". c #808080",
"X c None",
/* pixels */
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXX. .XXXXXXXXXXXXX",
"XXXXXXXXXXXXX. .XXXXXXXXXXXXX",
"XXXXXXXXXXXX. . . .XXXXXXXXXXXX",
"XXXXXXXXXXX. .. .. .XXXXXXXXXXX",
"XXXXXXXXXX..XX. .XX..XXXXXXXXXX",
"XXXXXXXXXX.XXX. .XXX.XXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXX. .XXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
};

View File

@ -0,0 +1,23 @@
/* XPM */
const char* blue_icon[] = {
/* columns rows colors chars-per-pixel */
"16 16 2 1",
"g c blue",
". c None",
/* pixels */
"................",
"................",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"................",
"................"};

View File

@ -0,0 +1,51 @@
/* XPM */
static const char *demo_colors_xpm[] = {
/* width height ncolors chars_per_pixel */
"32 32 12 1",
/* colors */
" c #000000",
". c #800000",
"X c #C0C0C0",
"o c #008080",
"O c #FF00FF",
"+ c #FF0000",
"@ c #808080",
"# c #000080",
"% c #008000",
"& c #808000",
"* c #0000FF",
"$ c None",
/* pixels */
"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
"$$ $$",
"$$ *******************ooooooo $$",
"$$ *******************o@@o@@o $$",
"$$ *******************o@@o@@o $$",
"$$ *******************ooooooo $$",
"$$ $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ XX XX####XX****XXOOOOXX $$",
"$$ XX XX####XX****XXOOOOXX $$",
"$$ XX XX####XX****XXOOOOXX $$",
"$$ XX XX####XX****XXOOOOXX $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ XX....XX++++XX%%%%XX&&&&XX $$",
"$$ XX....XX++++XX%%%%XX&&&&XX $$",
"$$ XX....XX++++XX%%%%XX&&&&XX $$",
"$$ XX....XX++++XX%%%%XX&&&&XX $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ XXXXXXXXXXXXXXXXXXXXXXXXXX $$",
"$$ $$",
"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

View File

@ -0,0 +1,45 @@
/* XPM */
static const char *delete_xpm[] = {
/* width height ncolors chars_per_pixel */
"32 32 6 1",
/* colors */
" c #000000",
". c #C0C0C0",
"X c #808080",
"o c #FFFFFF",
"O c #FFFF00",
"+ c None",
/* pixels */
"++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++",
"+++++++++++++++ +++++",
"+++++++++++++ oOoOoOoOoOoO ++++",
"++++++++++++ OoOoOoOoOoOoO O +++",
"+++++++++++ OoOoOoOoOoOoO O. +++",
"++++++++++ OoOoOoOoOoOoO O.O +++",
"+++++++++ OoOoOoOoOoOoO O.O. +++",
"++++++++ OoOoOoOoOoOoO O.O.O +++",
"+++++++ OoOoOoOoOoOoO O.O.O ++++",
"++++++ OoOoOoOoOoOoO O.O.O. ++++",
"+++++ OoOoOoOoOoOoO O.O.O. +X+++",
"++++ OoOoOoOoOoOoO O.O.O. +X.+++",
"+++ XO.O.O. +X.++++",
"++ .OOOOOOOOOOOO. .O.O. +X.+++++",
"++ OOOOOOOOOOOOOO O.O. +X.++++++",
"++ OOOOOOOOOOOOOO .O. +X.+++++++",
"++ OOOOOOOOOOOOOO O. +X.++++++++",
"++ OOOOOOOOOOOOOO . +X.+++++++++",
"++ OOOOOOOOOOOOOO +X.++++++++++",
"++ .OOOOOOOOOOOO. +X.+++++++++++",
"+++ +X.++++++++++++",
"++++XXXXXXXXXXXXXX.+++++++++++++",
"++++..............++++++++++++++",
"++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++"
};

View File

@ -0,0 +1,76 @@
/* XPM */
/*static const char * draw_xpm[] = {
"32 32 3 1",
" c None",
". c #FFFFFF",
"x c #000000",
" ",
" ",
" ",
" ... ",
" . .... ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" .xxxxx. ",
" ....... ",
" .xxxx. ",
" .xxx. ",
" .xx. ",
" .x. ",
" . ",
" ",
" ",
" ",
" ",
" "};*/
/* XPM */
static const char * small_draw_xpm[] = {
"32 32 3 1",
" c None",
". c #FFFFFF",
"x c #000000",
" ",
" ",
" ",
" xxxxxx ",
" x.....x ",
" x.xxx.x ",
" x.xxx.x ",
" x.xxx.x ",
" x.xxx.x ",
" x.xxx.x ",
" x.xxx.x ",
" x.xxx.x ",
" x.xxx.x ",
" x.xxx.x ",
" x.....x ",
" x.xx.x ",
" x.x.x ",
" x..x ",
" x.x ",
" x ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -0,0 +1,23 @@
/* XPM */
const char* green_icon[] = {
/* columns rows colors chars-per-pixel */
"16 16 2 1",
"g c green",
". c None",
/* pixels */
"................",
"................",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"................",
"................"};

View File

@ -0,0 +1,43 @@
/* XPM */
const char * hand_xpm[] = {
/* columns rows colors chars-per-pixel */
"32 32 5 1",
" c black",
". c #808080",
"X c #c0c0c0",
"o c white",
"O c None",
/* pixels */
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOO OOOOOOOOOOOOOOO",
"OOOOOOOOOOO O Xo OOOOOOOOOOOO",
"OOOOOOOOOO oo Xo Xo OOOOOOOOOOO",
"OOOOOOOOOO Xo Xo Xo . OOOOOOOOO",
"OOOOOOOOOOO oo Xo Xo X OOOOOOOO",
"OOOOOOOOOOO Xo Xo Xo Xo OOOOOOOO",
"OOOOOOOOO X ooooooo Xo OOOOOOOO",
"OOOOOOOO oo ooXXoXoooo OOOOOOOO",
"OOOOOOOO Xoo XooooooXo OOOOOOOOO",
"OOOOOOOOO XooXoooooooo OOOOOOOOO",
"OOOOOOOOOO ooooooooooo OOOOOOOOO",
"OOOOOOOOOO Xooooooooo OOOOOOOOOO",
"OOOOOOOOOOO Xoooooooo OOOOOOOOOO",
"OOOOOOOOOOOO Xoooooo OOOOOOOOOOO",
"OOOOOOOOOOOOO Oooooo OOOOOOOOOOO",
"OOOOOOOOOOOOO Oooooo OOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
};

View File

@ -0,0 +1,44 @@
/* XPM */
const const char *none_xpm[] = {
/* columns rows colors chars-per-pixel */
"32 32 4 1",
" c opaque",
". c navy",
"X c #c0c0c0",
"o c None",
/* pixels */
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
"oooooooooooooooooooooooooooooooo",
};

View File

@ -0,0 +1,23 @@
/* XPM */
const char* blue_icon[] = {
/* columns rows colors chars-per-pixel */
"16 16 2 1",
"g c #FFC0CB",
". c None",
/* pixels */
"................",
"................",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"................",
"................"};

View File

@ -0,0 +1,23 @@
/* XPM */
const char* red_icon[] = {
/* columns rows colors chars-per-pixel */
"16 16 2 1",
"g c red",
". c None",
/* pixels */
"................",
"................",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"................",
"................"};

View File

@ -0,0 +1,23 @@
/* XPM */
const char* yellow_icon[] = {
/* columns rows colors chars-per-pixel */
"16 16 2 1",
"g c yellow",
". c None",
/* pixels */
"................",
"................",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..ggg......ggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"..gggggggggggg..",
"................",
"................"};

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

View File

@ -0,0 +1,47 @@
/* XPM */
static const char *zoomin_xpm[] = {
/* width height ncolors chars_per_pixel */
"32 32 8 1",
/* colors */
" c #000000",
". c #C0C0C0",
"X c #008080",
"o c #FF0000",
"O c #808080",
"+ c #000080",
"# c #0000FF",
"@ c None",
/* pixels */
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@O O@@@@@@@@@@@@@@@",
"@@@@@@@@O O...O O@@@@@@@@@@@@@",
"@@@@@@@ O..@@@..O @@@@@@@@@@@@",
"@@@@@@ O..@@@@@@@..O @@@@@@@@@@@",
"@@@@@O ..@@@@@@@@@.. O@@@@@@@@@@",
"@@@@@ O.@@@@ooo@@@@.O @@@@@@@@@@",
"@@@@O .@@@@@ooo@@@@@. O@@@@@@@@@",
"@@@@ O.@@@@@ooo@@@@@.O @@@@@@@@@",
"@@@@ .@@@ooooooooo@@@. @@@@@@@@@",
"@@@@ .@@@ooooooooo@@@. @@@@@@@@@",
"@@@@ .@@@ooooooooo@@@. @@@@@@@@@",
"@@@@ O.@@@@@ooo@@@@@.O @@@@@@@@@",
"@@@@O .@@@@@ooo@@@@@. O@@@@@@@@@",
"@@@@@ O.@@@@ooo@@@@.O @@@@@@@@@@",
"@@@@@O ..@@@@@@@@@.. O@@@@@@@@@@",
"@@@@@@ O..@@@@@@@..O +@@@@@@@@@@",
"@@@@@@@ O..@@@..O ##+@@@@@@@@@",
"@@@@@@@@O O...O O+X##+@@@@@@@@",
"@@@@@@@@@@O O@@@+X##+@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@+X##+@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@+X##+@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@+X##+@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@+X##+@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@+X+@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

View File

@ -0,0 +1,47 @@
/* XPM */
static const char *zoomout_xpm[] = {
/* width height ncolors chars_per_pixel */
"32 32 8 1",
/* colors */
" c #000000",
". c #C0C0C0",
"X c #008080",
"o c #FF0000",
"O c #808080",
"+ c #000080",
"# c #0000FF",
"@ c None",
/* pixels */
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@O O@@@@@@@@@@@@@@@",
"@@@@@@@@O O...O O@@@@@@@@@@@@@",
"@@@@@@@ O..@@@..O @@@@@@@@@@@@",
"@@@@@@ O..@@@@@@@..O @@@@@@@@@@@",
"@@@@@O ..@@@@@@@@@.. O@@@@@@@@@@",
"@@@@@ O.@@@@@@@@@@@.O @@@@@@@@@@",
"@@@@O .@@@@@@@@@@@@@. O@@@@@@@@@",
"@@@@ O.@@@@@@@@@@@@@.O @@@@@@@@@",
"@@@@ .@@@ooooooooo@@@. @@@@@@@@@",
"@@@@ .@@@ooooooooo@@@. @@@@@@@@@",
"@@@@ .@@@ooooooooo@@@. @@@@@@@@@",
"@@@@ O.@@@@@@@@@@@@@.O @@@@@@@@@",
"@@@@O .@@@@@@@@@@@@@. O@@@@@@@@@",
"@@@@@ O.@@@@@@@@@@@.O @@@@@@@@@@",
"@@@@@O ..@@@@@@@@@.. O@@@@@@@@@@",
"@@@@@@ O..@@@@@@@..O +@@@@@@@@@@",
"@@@@@@@ O..@@@..O ##+@@@@@@@@@",
"@@@@@@@@O O...O O+X##+@@@@@@@@",
"@@@@@@@@@@O O@@@+X##+@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@+X##+@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@+X##+@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@+X##+@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@+X##+@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@+X+@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
};

View File

@ -0,0 +1,47 @@
/* XPM */
static const char *zoomin_xpm[] = {
/* width height ncolors chars_per_pixel */
"32 32 8 1",
/* colors */
" c #000000",
". c #C0C0C0",
"X c #008080",
"o c #FF0000",
"O c #808080",
"+ c #000080",
"# c #0000FF",
"@ c None",
/* pixels */
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@O O@@@@@@@@@@@@@@@",
"@@@@@@@@O O...O O@@@@@@@@@@@@@",
"@@@@@@@ O..@@@..O @@@@@@@@@@@@",
"@@@@@@ O..@@@@@@@..O @@@@@@@@@@@",
"@@@@@O ..@@@@@@@@@.. O@@@@@@@@@@",
"@@@@@ O.@@ooooo@@@@.O @@@@@@@@@@",
"@@@@O .@@oo@@@ooo@@@. O@@@@@@@@@",
"@@@@ O.@@o@@@@@@o@@@.O @@@@@@@@@",
"@@@@ .@@oo@@@@@@o@@@@. @@@@@@@@@",
"@@@@ .@@oo@@@@o@o@o@@. @@@@@@@@@",
"@@@@ .@@oo@@@@o@o@o@@. @@@@@@@@@",
"@@@@ O.@oo@@@@@ooo@@.O @@@@@@@@@",
"@@@@O .@@ooo@@@@@@@@. O@@@@@@@@@",
"@@@@@ O.@@@oooo@@@@.O @@@@@@@@@@",
"@@@@@O ..@@@@@@@@@.. O@@@@@@@@@@",
"@@@@@@ O..@@@@@@@..O +@@@@@@@@@@",
"@@@@@@@ O..@@@..O ##+@@@@@@@@@",
"@@@@@@@@O O...O O+X##+@@@@@@@@",
"@@@@@@@@@@O O@@@+X##+@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@+X##+@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@+X##+@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@+X##+@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@+X##+@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@+X+@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
};