Commit 4adaa9d1 authored by Antoine Regimbeau's avatar Antoine Regimbeau

MRG: Merge branch 'develop' into...

MRG: Merge branch 'develop' into 1554-add-wrapper-qgis-to-generate-qgis-descriptors-for-processing-plugin
parents 5d99e03e f3ce2c68
......@@ -22,8 +22,12 @@ Describe the testing strategy for new features.
### Documentation
List or link documentation modifications that were made (doxygen, example, software guide, application documentation, cookbook).
List or link documentation modifications that were made (doxygen, example, Software Guide, application documentation, CookBook).
### Additional notes
List remaining open issues if any, and additional notes.
List remaining open issues if any, and additional notes.
### Copyright
The copyright owner is *COPYRIGHT OWNER (OR OWNER'S AGENT)* and has signed the ORFEO ToolBox Contributor License Agreement
......@@ -13,7 +13,7 @@ There are many ways to contribute to OTB:
* [Publishing a remote module](#remote-modules)
Our main workflow uses GitLab for source control, issues and task tracking. We
use a self-hosted gitlab instance:
use a self-hosted GitLab instance:
[`https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb`](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb)
......@@ -58,11 +58,18 @@ then send a merge request.
Note that we also accept PRs on our [GitHub mirror](https://github.com/orfeotoolbox/OTB)
which we will manually merge.
Feature branches are tested on multiple platforms on the OTB test infrastructure (a.k.a the [Dashboard](https://dash.orfeo-toolbox.org/)). They appear in the FeatureBranches section.
Caveat: even if the Dashboard build on develop branch is broken, it is not
allowed to push fixes directly on develop. The developer trying to fix the
build should create a merge request and submit it for review. Direct push to
develop without review must be avoided.
### Commit message
On your feature branch, write a good [commit message](https://xkcd.com/1296/):
short and descriptive. If fixing an issue or bug, put the issue number in the
commit message so that GitLab can [crosslink it](https://docs.gitlab.com/ce/user/project/issues/crosslinking_issues.html).
commit message so that GitLab can [cross-link it](https://docs.gitlab.com/ce/user/project/issues/crosslinking_issues.html).
You can prefix your commit message with an indicating flag (DOC, BUG, PKG,
TEST, SuperBuild, etc.).
......@@ -93,7 +100,11 @@ OTB team.
* Merge requests **must receive at least 2 positives votes from core developers** (members of Main Repositories group in Gitlab with at least "Developer" level; this includes PSC members) before being merged
* The merger is responsible for checking that the branch is up-to-date with develop
* Merge requests can be merged by anyone (not just PSC or RM) with push access to develop
* Merge requests can be merged once the dashboard is proven green for this branch
* Merge requests can be merged once the dashboard is proven green for this branch.
This condition is mandatory unless reviewers and authors explicitely agree that
it can be skipped (for instance in case of documentation merges or compilation
fixes on develop). Branches of that sort can be identified with the ~patch label,
which tells the reviewer that the author would like to merge without dashboard testing.
Branches can be registered for dashboard testing by adding one line in `Config/feature_branches.txt` in [otb-devutils repository](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils.git).
......@@ -113,14 +124,34 @@ Again, the second branch name is optional.
For users without push access to [otb-devutils repository](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils.git), the modification can be asked through a merge requests to this repository.
Once the feature branch is registered for testing, it should appear in the *FeatureBranches* section of the [OTB dashboard](https://dash.orfeo-toolbox.org/index.php?project=OTB) next day (remember tests are run on a nighlty basis).
Once the feature branch is registered for testing, it should appear in the *FeatureBranches* section of the [OTB dashboard](https://dash.orfeo-toolbox.org/index.php?project=OTB) next day (remember tests are run on a nightly basis).
Do not forget to remove the feature branch for testing once it has been merged.
### Contribution license agreement
OTB requires that contributors sign out a [Contributor License
Agreement](https://en.wikipedia.org/wiki/Contributor_License_Agreement). The
purpose of this CLA is to ensure that the project has the necessary ownership or
grants of rights over all contributions to allow them to distribute under the
chosen license (Apache License Version 2.0)
To accept your contribution, we need you to complete, sign and email to *cla [at]
orfeo-toolbox [dot] org* an [Individual Contributor Licensing
Agreement](https://www.orfeo-toolbox.org/cla/icla-en.doc) (ICLA) form and a
[Corporate Contributor Licensing
Agreement](https://www.orfeo-toolbox.org/cla/ccla-en.doc) (CCLA) form if you are
contributing on behalf of your company or another entity which retains copyright
for your contribution.
The copyright owner (or owner's agent) must be mentioned in headers of all
modified source files and also added to the [NOTICE
file](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/raw/develop/NOTICE).
## Remote modules
[Remote Modules](https://wiki.orfeo-toolbox.org/index.php/Remote_Modules) are
the prefered way if you wish to make your apps and filters available to the
the preferred way if you wish to make your apps and filters available to the
community while keeping control and maintenance of their sources. Remote
modules are just like regular modules, except they are not distributed inside
OTB source code. Under some conditions (dependencies, official acceptance
......@@ -128,13 +159,13 @@ process, etc.), we are also able to distribute your remote module in the
official standalone binaries. See [the wiki](https://wiki.orfeo-toolbox.org/index.php/Remote_Modules)
for more information.
## Gitlab guidelines
## GitLab guidelines
In order to organize the issues in our Gitlab instance, we use both labels and
In order to organize the issues in our GitLab instance, we use both labels and
milestones.
The [milestones](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/milestones) should be used to track in which release a feature is merged.
Gitlab can then provide a summary of all features and bugs added to a given release
GitLab can then provide a summary of all features and bugs added to a given release
version.
Regarding labels, we use the following set:
......@@ -142,6 +173,7 @@ Regarding labels, we use the following set:
correspond to a Request for Comments that has turned into a development action
* ~bug: Bug, crash or unexpected behavior, reported by a user or a developer
* ~feature: Feature request expressed by an OTB user/developer
* ~patch: A small patch fixing build warnings, compilation errors, typos in logs or documentation
* ~"To Do": action is planned
* ~Doing: work in progress
* ~api ~app ~documentation ~monteverdi ~packaging ~qgis: optional context information
......@@ -211,7 +211,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('index_TOC', 'CookBook-@OTB_VERSION_MAJOR@.@OTB_VERSION_MINOR@.tex', u'OTB CookBook Documentation',
('index_TOC', 'CookBook-@OTB_VERSION_MAJOR@.@OTB_VERSION_MINOR@.@OTB_VERSION_PATCH@.tex', u'OTB CookBook Documentation',
u'OTB Team', 'manual'),
]
......
......@@ -87,6 +87,7 @@ const ExtensionDriverAssociation k_ExtensionDriverMap[] =
{".SQLITE", "SQLite"},
{".KML", "KML"},
{".CSV", "CSV"},
{".GPKG", "GPKG"}
};
/**\ingroup GeometryInternals
* \brief Returns the OGR driver name associated to a filename.
......
......@@ -51,7 +51,7 @@ public:
private:
SampleAugmentation() {}
void DoInit()
void DoInit() override
{
SetName("SampleAugmentation");
SetDescription("Generates synthetic samples from a sample data file.");
......@@ -145,7 +145,7 @@ private:
SetOfficialDocLink();
}
void DoUpdateParameters()
void DoUpdateParameters() override
{
if ( HasValue("in") )
{
......@@ -182,7 +182,7 @@ private:
}
}
void DoExecute()
void DoExecute() override
{
ogr::DataSource::Pointer vectors;
ogr::DataSource::Pointer output;
......
......@@ -87,8 +87,9 @@ void Logger::LogSetupInformation()
oss.str("");
oss.clear();
// only switch the flag for the singleton, so that other instances can call
// LogSetupInformation() several times
// ensure LogSetupInformation is done once per logger, and also that it is
// skipped by the singleton when it has already been printed by an other instance
LogSetupInformationDone();
Instance()->LogSetupInformationDone();
}
}
......
......@@ -591,7 +591,7 @@ PersistentStreamingStatisticsVectorImageFilter<TInputImage, TPrecision>
{
for (unsigned int c = 0; c < threadSecondOrder.Cols(); ++c)
{
threadSecondOrder(r, c) += vectorValue[r] * vectorValue[c];
threadSecondOrder(r, c) += static_cast<PrecisionType>(vectorValue[r]) * static_cast<PrecisionType>(vectorValue[c]);
}
}
threadSecondOrderComponent += vectorValue.GetSquaredNorm();
......
......@@ -33,6 +33,8 @@
#pragma GCC diagnostic ignored "-Wsign-compare"
#pragma GCC diagnostic ignored "-Wcast-align"
#pragma GCC diagnostic ignored "-Wunknown-pragmas"
#pragma GCC diagnostic ignored "-Wheader-guard"
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
#endif
#include <shark/Models/Classifier.h>
#include "otb_shark.h"
......
......@@ -150,7 +150,7 @@ public slots:
/**
*/
void ImportImages( const QStringList & filenames );
void ImportImages( const QStringList & filenames, bool enableOverviews );
/*-[ SIGNALS SECTION ]-----------------------------------------------------*/
......
/*
* Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
* Copyright (C) 2017 CS Systemes d'Information (CS SI)
*
* This file is part of Orfeo Toolbox
*
......@@ -31,6 +32,8 @@
//
// Qt includes (sorted by alphabetic order)
//// Must be included before system/custom includes.
#include <QCoreApplication>
#include <QFile>
#include <QPixmap>
#include <QSplashScreen>
......@@ -48,6 +51,7 @@
//
// Monteverdi includes (sorted by alphabetic order)
#include "mvdAlgorithm.h"
#include "mvdApplication.h"
#include "mvdMainWindow.h"
......@@ -65,34 +69,39 @@ struct Flags
{
Flags() :
loadOTBApplications( false ),
forceNoGLSL( false )
forceNoGLSL( false ),
forceNoOverviews( false )
{
}
bool loadOTBApplications: 1;
bool forceNoGLSL: 1;
bool forceNoOverviews: 1;
};
/*****************************************************************************/
/* FUNCTIONS DECLARATION */
/*****************************************************************************/
void
DisplayUsage( const char * );
void
AppendFromTextFile( QStringList &, const QString & );
/*****************************************************************************/
/* MAIN */
/*****************************************************************************/
int
main( int argc, char* argv[] )
main( int argc, char * argv[] )
{
QApplication qtApp( argc, argv );
Flags flags;
//
// 0. Splash-screen.
#if USE_SPLASH_SCREEN
QPixmap pixmap(QLatin1String( ":/images/application_splash" ));
QSplashScreen splash(pixmap);
QPixmap pixmap( QLatin1String( ":/images/application_splash" ) );
QSplashScreen splash( pixmap );
splash.show();
qtApp.processEvents();//This is used to accept a click on the screen so that user can cancel the screen
#endif
......@@ -100,24 +109,16 @@ main( int argc, char* argv[] )
//
// 0bis. Parse pre-initialization command-line arguments.
QStringList args( qtApp.arguments() );
Flags flags;
{
QStringList filenames;
for( QStringList::iterator it( args.begin() );
it!=args.end(); )
if( it->compare( "-h" )==0 ||
it->compare( "--help" )==0 )
{
std::cout
<< mvd::ToLocalStdString(
QCoreApplication::translate(
PROJECT_NAME,
"Usage: %1 [-h|--help] [-a|--applications] [<filename>...]\n"
" -n, --no-glsl force OpenGL 1.x compatible rendering."
" -a, --applications load OTB-applications from OTB_APPLICATIONS_PATH."
" -h, --help display this help message.\n"
)
.arg( QFileInfo( argv[ 0 ] ).baseName() )
)
<< std::endl;
DisplayUsage( argv[ 0 ] );
return ERROR_CODE_USAGE;
}
......@@ -130,15 +131,44 @@ main( int argc, char* argv[] )
it = args.erase( it );
}
else if(it->compare( "-n" )==0 ||
else if(it->compare( "-g" )==0 ||
it->compare( "--no-glsl" )==0 )
{
flags.forceNoGLSL = true;
it = args.erase( it );
}
else if(it->compare( "-o" )==0 ||
it->compare( "--no-overviews" )==0 )
{
flags.forceNoOverviews = true;
it = args.erase( it );
}
else if(it->compare( "-t" )==0 ||
it->compare( "--txt-file" )==0 )
{
it = args.erase( it );
if( it==args.end() ||
it->startsWith( '-' ) )
{
DisplayUsage( argv[ 0 ] );
return ERROR_CODE_USAGE;
}
AppendFromTextFile( filenames, *it );
it = args.erase( it );
}
else
++ it;
args << filenames;
}
//
......@@ -205,14 +235,14 @@ main( int argc, char* argv[] )
#if USE_OTB_APPS
mainWindow.SetupOTBApplications();
#else // USE_OTB_APPS
qWarning() << "OTB-applications support is not included in this build.";
qWarning() << "OTB-applications support is not included in this build.";
#endif // USE_OTB_APPS
//
// 6. Load command-line filenames.
args.pop_front();
mainWindow.ImportImages( args );
mainWindow.ImportImages( args, !flags.forceNoOverviews );
//
// 6. Let's go: run the application and return exit code.
......@@ -232,3 +262,63 @@ main( int argc, char* argv[] )
/*****************************************************************************/
/* FUNCTIONS IMPLEMENTATION */
/*****************************************************************************/
void
DisplayUsage( const char * argv0 )
{
std::cout
<< mvd::ToLocalStdString(
QCoreApplication::translate(
PROJECT_NAME,
"Usage: %1 "
"[-h|--help] "
"[-a|--applications] "
"[-g|--no-glsl] "
"[-o|--no-overviews] "
"[-t|--txt-file <filename>] "
"[<filename>...]\n"
" -a, --applications load OTB-applications from OTB_APPLICATIONS_PATH.\n"
#if 0
" -f, --file load Monteverdi project file.\n"
#endif
" -h, --help display this help message.\n"
" -g, --no-glsl force OpenGL 1.x compatible rendering.\n"
" -o, --no-overviews ignore build GDAL overviews step.\n"
#if 0
" -O, --force-overviews force build GDAL overviews step.\n"
#endif
" -t, --txt-file read layer filenames from text file.\n"
#if 0
" -c, --csv-file read layer filenames & settings from CSV file.\n"
" -x, --xml-file read layer filenames & settings from XML file.\n"
#endif
)
.arg( QFileInfo( argv0 ).baseName() )
)
<< std::endl;
}
/*****************************************************************************/
void
AppendFromTextFile( QStringList & strings,
const QString & filename )
{
QFile file( filename );
if( !file.open( QFile::ReadOnly | QFile::Text ) )
throw mvd::SystemError(
mvd::ToStdString(
QCoreApplication::translate( "mvd::", "Failed to open '%1'" )
.arg( filename )
)
);
QTextStream is( &file );
while( !is.atEnd() )
{
QString line( is.readLine() );
if( !line.isNull() )
strings << line;
}
}
/*
* Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
* Copyright (C) 2017 CS Systemes d'Information (CS SI)
*
* This file is part of Orfeo Toolbox
*
......@@ -1362,7 +1363,7 @@ MainWindow
/*****************************************************************************/
void
MainWindow
::ImportImages( const QStringList & filenames )
::ImportImages( const QStringList & filenames, bool enableOverviews )
{
if( filenames.isEmpty() )
return;
......@@ -1376,7 +1377,8 @@ MainWindow
)
);
if( !( value.isValid() ? value.toBool() : OVERVIEWS_ENABLED_DEFAULT ) ||
if( enableOverviews &&
( value.isValid() ? value.toBool() : OVERVIEWS_ENABLED_DEFAULT ) &&
!BuildGDALOverviews( filenames ) )
return;
}
......@@ -1809,7 +1811,8 @@ MainWindow
// Select filename.
QString caption(tr("Open file..."));
ImportImages(
otb::GetOpenFileNames( this, caption )
otb::GetOpenFileNames( this, caption ),
true
);
}
......
......@@ -729,7 +729,7 @@ std::string CommandLineLauncher::DisplayParameterHelp(const Parameter::Pointer &
{
defPixType = OutputImageParameter::ConvertPixelTypeToString(paramDown->GetDefaultPixelType());
}
oss << " [pixel=uint8/uint16/int16/uint32/int32/float/double]";
oss << " [pixel=uint8/uint16/int16/uint32/int32/float/double/cint16/cint32/cfloat/cdouble]";
oss << " (default value is " << defPixType <<")";
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment