Skip to content
Snippets Groups Projects
Commit 1a73b07c authored by Julien Malik's avatar Julien Malik
Browse files

ENH: remove files which will conflict when merging

parent 314bebb6
Branches
Tags
No related merge requests found
project(OTB-Wrapper)
cmake_minimum_required(VERSION 2.6)
if(COMMAND CMAKE_POLICY)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND CMAKE_POLICY)
# Path to additional CMake modules
set(CMAKE_MODULE_PATH
${CMAKE_SOURCE_DIR}/CMake
${CMAKE_MODULE_PATH})
include(Definitions)
# Link to the Orfeo ToolBox
find_package(OTB REQUIRED PATHS /usr/lib/otb )
include(${OTB_USE_FILE})
set(BUILD_SHARED_LIBS ${OTB_BUILD_SHARED_LIBS})
add_subdirectory(Code)
add_subdirectory(Example)
# Enable / Disable testing
option(BUILD_TESTING "Build testing." OFF)
include(${CMAKE_ROOT}/Modules/Dart.cmake)
mark_as_advanced(TCL_TCLSH DART_ROOT)
if(BUILD_TESTING)
enable_testing()
find_program(OTB_TEST_DRIVER otbTestDriver PATHS ${OTB_DIR}/bin ${OTB_DIR}/../../bin DOC "Path to the otbTestDriver executable from OTB")
find_path(OTB_DATA_ROOT README-OTB-Data PATHS $ENV{OTB_DATA_ROOT} ${OTB_SOURCE_DIR}/../OTB-Data)
mark_as_advanced(OTB_DATA_ROOT)
set(BUILDNAME "${BUILDNAME}" CACHE STRING "Name of build on the dashboard")
mark_as_advanced(BUILDNAME)
add_subdirectory(Testing)
endif(BUILD_TESTING)
## This file should be placed in the root directory of your project.
## Then modify the CMakeLists.txt file in the root directory of your
## project to incorporate the testing dashboard.
## # The following are required to uses Dart and the Cdash dashboard
## ENABLE_TESTING()
## INCLUDE(CTest)
set(CTEST_PROJECT_NAME "OTB-Wrapper")
set(CTEST_NIGHTLY_START_TIME "20:00:00 CEST")
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE "dash.orfeo-toolbox.org")
set(CTEST_DROP_LOCATION "/submit.php?project=OTB-Wrapper")
set(CTEST_DROP_SITE_CDASH TRUE)
add_subdirectory(Common)
add_subdirectory(Core)
add_subdirectory(Wrappers)
== Core ==
- the less classes in the API, the easier to wrap : try to stick to Application and ApplicationRegistry if possible, the other classes are internal details.
- add a ParameterKey class
* constructor can accept string of type "toto.titi.tata"
* elementary strings are checked : only alphanumerical, lowercase, and numbers
* methods :
** last() : return "tata"
** parent() : return "toto.titi"
** root() : return "toto"
** split() : return vector<string> ("toto", "titi", "tata")
** append(std::string)
** append(const Key&)
* internal representation : vector<string> ? use boost::split or itksys equivalent
* use this class as the basis in the Application class
- progress reporting
* use the standard ITK mechanism (Application derive from Object)
* need an ProgressEventForwarder object :
** register to a filter progress event
** read the progress value whenever a ProgressEvent is caught
** make the application throw a ProgressEvent (need a pointer to the application too, itk::Object* should be sufficient)
* provide some sugar : Application::SetProgressSource( itk::Object* theInternalFilter ) to hide the internal plumbing
- log management
* http://www.itk.org/Doxygen/html/classitk_1_1ThreadLogger.html
* http://www.itk.org/Doxygen/html/classitk_1_1LoggerManager.html
* list of parameters
* input image list, string list, ...
* dual-value parameters : size, origin, spacing...
* tags (for QGis plugins at least)
* menu hint (for monteverdi integration)
== Wrappers ==
=== ApplicationLauncherQt ===
* rewrite in PyQt
* if parameters are only the path to modules or nothing, start a gui with menus to select the module
=== C interface ===
* wrap the C++ interface in a pure C interface ?
* would help integration in Zoo where modules cannot be C++ due to a "map" type in the API, or other software where plugins need to be compiled in C (matlab maybe?)
=== PyQt ===
* integrate list : QListView
* dual value params :
** 2 numeric widgets in an horizontal layout.
** possibility to link the two values (usefull for spacing, where it should be the default probably)
* generic widget with possibility to add/remove/move an entry in the list
* use the unitary widgets (int/float/input file/...) and embed them in the ListView ?
* log viewer widget when logging is available in core
* progress reporting :
* look here : http://itk.org/gitweb?p=ITKApps.git;a=tree;f=QtITK;h=402c19a67c9707624e45519b9f6ca179ca2de280;hb=HEAD
* or use PyCommand from OTB-Wrapping/Langages/Python/PyUtils ?
=== QGisProcessing ===
* fit to the framework when possible, adapt the PyQt wrapper widgets for non supported paramter types
=== QtWidget ===
* useless now with the PyQt wrappers ?
=== SWIG Python ===
* numpy support for input/output images
* integrate PyCommand from OTB-Wrapping/Langages/Python/PyUtils to catch progress events from Python ?
* more pythonic API ? like app.input = '/path/to/file' or app.radius = 5 or app.group1.radius = 2
* need a Parameter class in the Python API and reimplement __getattr__ on Application and Parameter
* once done, make possible one-liner call : Smoothing(input='fsfd', type='mean', type_radius=5, output='test.tif')
* create a specific symbol for each application in the Python module ? avoids the Registry part
=== SWIG Java ===
* fix segfault... (smart pointer mess)
* use itkJavaCommand from OTB-Wrapping
=== SWIG Lua ===
* who knows this langage ?
=== SWIG Ruby ===
* who knows this langage ?
=== IDL ===
* make a generic function taking the module name, followed by key/value(s) pairs of parameters
=== ENVI ===
* make a .pro generator, generating the ENVI code for widget declaration from the parameter description
* in what langage ? cmake/python/c++ ?
set(TEMP ${CMAKE_BINARY_DIR}/Testing/Temporary)
file(MAKE_DIRECTORY ${TEMP})
add_subdirectory(Core)
add_subdirectory(Common)
add_subdirectory(Example)
add_subdirectory(CommandLine)
if ( WRAP_PYTHON )
add_subdirectory(Python)
endif ()
if ( WRAP_JAVA )
add_subdirectory(Java)
endif ()
if ( WRAP_RUBY )
add_subdirectory(Ruby)
endif ()
if ( WRAP_LUA )
add_subdirectory(Lua)
endif ()
if ( WRAP_QT )
add_subdirectory(QtWidget)
endif ()
if ( WRAP_PYQT )
add_subdirectory(PyQt)
endif ()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment