57        template< 
typename T >
 
   62        struct Destroyer< SettingsInterface >
 
   65            static void destroy( SettingsInterface *settings )
 
   73        struct Destroyer< CameraInterface >
 
   76            static void destroy( CameraInterface *camera )
 
   84        struct Destroyer< CameraCalibrationInterface >
 
   87            static void destroy( CameraCalibrationInterface *calib )
 
   95        struct Destroyer< CamerasLoaderInterface >
 
   97            static void destroy( CamerasLoaderInterface *camerasLoader )
 
  105        struct Destroyer< SparsePointCloudInterface >
 
  108            static void destroy( SparsePointCloudInterface *pointCloud )
 
  116        struct Destroyer< StereoPointCloudInterface >
 
  119            static void destroy( StereoPointCloudInterface *pointCloud )
 
  127        struct Destroyer< StereoMeshInterface >
 
  130            static void destroy( StereoMeshInterface *mesh )
 
  138        struct Destroyer< StereoTexturedMeshInterface >
 
  140            static void destroy( StereoTexturedMeshInterface *texturedMesh )
 
  148        struct Destroyer< WorkspaceLoaderInterface >
 
  151            static void destroy( WorkspaceLoaderInterface *workspaceLoader )
 
  159        struct Destroyer< WorkspaceSaverInterface >
 
  162            static void destroy( WorkspaceSaverInterface *workspaceSaver )
 
  170        struct Destroyer< ControlPointConstraintInterface >
 
  173            static void destroy( ControlPointConstraintInterface *controlPoint )
 
  181        struct Destroyer< BoundingBoxInterface >
 
  184            static void destroy( BoundingBoxInterface *bb )
 
  192        struct Destroyer< OrthophotoInterface >
 
  195            static void destroy( OrthophotoInterface *op )
 
  203        struct Destroyer< ProjectedCoordinateSystemInterface >
 
  206            static void destroy( ProjectedCoordinateSystemInterface *pcs )
 
  214        struct Destroyer< CameraConstraintInterface >
 
  217            static void destroy( CameraConstraintInterface *cc )
 
  225        struct Destroyer< DynamicBufferInterface >
 
  228            static void destroy( DynamicBufferInterface *ptr )
 
  236        struct Destroyer< LicenseInfoInterface >
 
  239            static void destroy( LicenseInfoInterface *ptr )
 
  247        struct Destroyer< DistanceConstraintInterface >
 
  250            static void destroy( DistanceConstraintInterface *ptr )
 
  258        struct Destroyer< CameraGroupManagerInterface >
 
  261            static void destroy( CameraGroupManagerInterface *ptr )
 
  267        template< 
typename T >
 
  268        class UniquePtr final
 
  272                UniquePtr() = 
default;
 
  274                UniquePtr( T *
object )
 
  278                UniquePtr( UniquePtr &&other )
 
  279                    : mObject( other.release() )
 
  282                UniquePtr &operator =( UniquePtr &&other )
 
  284                    if ( 
this != &other )
 
  286                        reset( other.release() );
 
  299                explicit operator bool()
 const 
  301                    return mObject != 
nullptr;
 
  309                const T *operator ->()
 const 
  319                const T &operator *()
 const 
  336                void reset( T *
object = 
nullptr )
 
  339                        Detail::Destroyer< T >::destroy( mObject );
 
  353                T *mObject = 
nullptr;
 
  358    template< 
typename T >
 
  361        static_assert( std::is_same< CameraInterface, T >::value ||
 
  362                       std::is_same< CamerasLoaderInterface, T >::value ||
 
  363                       std::is_same< ControlPointConstraintInterface, T >::value ||
 
  364                       std::is_same< SparsePointCloudInterface, T >::value ||
 
  365                       std::is_same< StereoPointCloudInterface, T >::value ||
 
  366                       std::is_same< StereoMeshInterface, T >::value ||
 
  367                       std::is_same< StereoTexturedMeshInterface, T >::value ||
 
  368                       std::is_same< CameraConstraintInterface, T >::value ||
 
  369                       std::is_same< ProjectedCoordinateSystemInterface, T >::value ||
 
  370                       std::is_same< BoundingBoxInterface, T >::value ||
 
  371                       std::is_same< DistanceConstraintInterface, T >::value ||
 
  372                       std::is_same< OrthophotoInterface, T >::value ||
 
  373                       std::is_same< CameraGroupManagerInterface, T >::value,
 
  374                       "This kind of buffer can only be used with object classes" );
 
  386            : data( v.empty() ? nullptr : v.data() )
 
  387            , count( v.empty() ? 0 : v.size() )
 
  393        Buffer( std::vector< Detail::UniquePtr< T > > &v )
 
  394            : data( v.empty() ? nullptr : reinterpret_cast< T ** >( v.data() ) )
 
  395            , count( v.empty() ? 0 : v.size() )
 
  397            static_assert( 
sizeof( Detail::UniquePtr< T > ) ==
 
  398                           sizeof( std::ptrdiff_t ), 
"" );
 
  401        explicit operator bool()
 const 
  403            return data != 
nullptr;
 
  408    template< 
typename T >
 
  411        static_assert( std::is_same< CameraInterface, T >::value ||
 
  412                       std::is_same< CamerasLoaderInterface, T >::value ||
 
  413                       std::is_same< ControlPointConstraintInterface, T >::value ||
 
  414                       std::is_same< SparsePointCloudInterface, T >::value ||
 
  415                       std::is_same< StereoPointCloudInterface, T >::value ||
 
  416                       std::is_same< StereoMeshInterface, T >::value ||
 
  417                       std::is_same< StereoTexturedMeshInterface, T >::value ||
 
  418                       std::is_same< ProjectedCoordinateSystemInterface, T >::value ||
 
  419                       std::is_same< CameraConstraintInterface, T >::value ||
 
  420                       std::is_same< DistanceConstraintInterface, T >::value ||
 
  421                       std::is_same< BoundingBoxInterface, T >::value ||
 
  422                       std::is_same< OrthophotoInterface, T >::value ||
 
  423                       std::is_same< CameraGroupManagerInterface, T >::value,
 
  424                       "This kind of buffer can only be used with object classes" );
 
  427        const T *
const *data = 
nullptr;
 
  436            : data( v.empty() ? nullptr : v.data() )
 
  437            , count( v.empty() ? 0 : v.size() )
 
  439            static_assert( 
sizeof( Detail::UniquePtr< T > ) ==
 
  440                           sizeof( std::ptrdiff_t ), 
"" );
 
  445            : data( v.empty() ? nullptr : reinterpret_cast< const T *const * >( v.data() ) )
 
  446            , count( v.empty() ? 0 : v.size() )
 
  448            static_assert( 
sizeof( Detail::UniquePtr< T > ) ==
 
  449                           sizeof( std::ptrdiff_t ), 
"" );
 
  452        explicit operator bool()
 const 
  454            return data != 
nullptr;
 
  465            const std::size_t len = std::strlen( nMessage );
 
  467            if ( len > 3 && nMessage[ 0 ] == 
'[' && nMessage[ 2 ] == 
']' )
 
  468                nMessage = nMessage + 3;
 
  472                ( *mFileStream ) << nMessage;
 
  476            std::cout << nMessage;
 
  488        void start( 
const char *nWindowTitle, 
bool nShowGlobalProgress, 
bool nShowCancelButton )
 
  500        void resetTicks( 
unsigned int nTicks, 
const char *nLoadingText )
 
  599                               const Point2 &referencePoint,
 
Stores a camera object to feed the Structure from Motion parameters.
Definition: CameraInterface.h:38
 
Pure virtual Log Listener interface.
Definition: LogListenerInterface.h:41
 
Pure virtual Progress Bar interface.
Definition: ProgressBarInterface.h:32
 
Definition: BoundingBoxInterface.cpp:26
 
void DestroyDynamicBuffer(DynamicBufferInterface *buf)
Definition: DynamicBufferInterface.cpp:32
 
void DestroyOrthophoto(OrthophotoInterface *orthophoto)
Definition: OrthophotoInterface.cpp:32
 
void DestroyProjectedCoordinateSystem(ProjectedCoordinateSystemInterface *pcs)
Definition: ProjectedCoordinateSystemInterface.cpp:32
 
Detail::UniquePtr< DynamicBufferInterface > UniqueDynamicBufferPtr
Automatically manages the lifetime of a DynamicBuffer object.
Definition: Utilities.h:570
 
Detail::UniquePtr< OrthophotoInterface > UniqueOrthophotoPtr
Automatically manages the lifetime of a Orthophoto object.
Definition: Utilities.h:561
 
void DestroyStereoTexturedMesh(StereoTexturedMeshInterface *stereoTexturedMesh)
Definition: StereoTexturedMeshInterface.cpp:32
 
void DestroyStereoPointCloud(StereoPointCloudInterface *stereoPointCloud)
Definition: StereoPointCloudInterface.cpp:32
 
void DestroyWorkspaceSaver(WorkspaceSaverInterface *workspaceSaver)
Definition: WorkspaceSaverInterface.cpp:32
 
FLE_DLL void DestroyCameraGroupManager(CameraGroupManagerInterface *cameraGroupManager)
Definition: CameraGroupManagerInterface.cpp:30
 
Detail::UniquePtr< CameraConstraintInterface > UniqueCameraConstraintPtr
Automatically manages the lifetime of a CameraConstraint object.
Definition: Utilities.h:567
 
Result SampleEpipolarLine(const CameraInterface &referenceCamera, const Point2 &referencePoint, const CameraInterface &targetCamera, int sampleCount, Buffer< Point2 > inOutPoints)
Definition: Utilities.cpp:208
 
Detail::UniquePtr< StereoTexturedMeshInterface > UniqueStereoTexturedMeshPtr
Automatically manages the lifetime of a Stereo textured mesh object.
Definition: Utilities.h:543
 
void DestroyBoundingBox(BoundingBoxInterface *boundingBox)
Definition: BoundingBoxInterface.cpp:32
 
void DestroySettings(SettingsInterface *settings)
Definition: SettingsInterface.cpp:32
 
void DestroyWorkspaceLoader(WorkspaceLoaderInterface *workspaceLoader)
Definition: WorkspaceLoaderInterface.cpp:32
 
Result ComputeCamerasRating(Buffer< CameraInterface * > cameras, Buffer< Pair< CameraInterface *, Point2 > > selectedPoints, Buffer< int > inOutRatings)
Compute camera ratings based on point visibility.
Definition: Utilities.cpp:313
 
Detail::UniquePtr< WorkspaceSaverInterface > UniqueWorkspaceSaverPtr
Automatically manages the lifetime of a Workspace Saver object.
Definition: Utilities.h:552
 
void DestroyCamerasLoader(CamerasLoaderInterface *CamerasLoader)
Definition: CamerasLoaderInterface.cpp:32
 
const char * GetResultMessage(Result inResult)
Definition: Utilities.cpp:157
 
Detail::UniquePtr< CamerasLoaderInterface > UniqueCamerasLoaderPtr
Automatically manages the lifetime of a CamerasLoader object.
Definition: Utilities.h:531
 
void DestroyStereoMesh(StereoMeshInterface *stereoMesh)
Definition: StereoMeshInterface.cpp:32
 
void DestroyCameraConstraint(CameraConstraintInterface *cameraConstraint)
Definition: CameraConstraintInterface.cpp:32
 
Detail::UniquePtr< WorkspaceLoaderInterface > UniqueWorkspaceLoaderPtr
Automatically manages the lifetime of a Workspace Loader object.
Definition: Utilities.h:555
 
Detail::UniquePtr< CameraCalibrationInterface > UniqueCameraCalibrationPtr
Automatically manages the lifetime of a Camera calibration object.
Definition: Utilities.h:528
 
Detail::UniquePtr< StereoPointCloudInterface > UniqueStereoPointCloudPtr
Automatically manages the lifetime of a Stereo Point cloud object.
Definition: Utilities.h:537
 
Detail::UniquePtr< LicenseInfoInterface > UniqueLicenseInfoPtr
Automatically manages the lifetime of a LicenseInfo object.
Definition: Utilities.h:573
 
Detail::UniquePtr< BoundingBoxInterface > UniqueBoundingBoxPtr
Automatically manages the lifetime of a Bounding box object.
Definition: Utilities.h:549
 
void DestroySparsePointCloud(SparsePointCloudInterface *boundingBox)
Definition: SparsePointCloudInterface.cpp:32
 
Detail::UniquePtr< ControlPointConstraintInterface > UniqueControlPointConstraintPtr
Automatically manages the lifetime of a Control Point Constraint object.
Definition: Utilities.h:558
 
void DestroyLicenseInfo(LicenseInfoInterface *buf)
Definition: LicenseInfoInterface.cpp:32
 
void DestroyCamera(CameraInterface *camera)
Definition: CameraInterface.cpp:32
 
Detail::UniquePtr< CameraGroupManagerInterface > UniqueCameraGroupManagerPtr
Automatically manages the lifetime of a CameraGroupManager object.
Definition: Utilities.h:579
 
Detail::UniquePtr< StereoMeshInterface > UniqueStereoMeshPtr
Automatically manages the lifetime of a Stereo mesh object.
Definition: Utilities.h:540
 
Detail::UniquePtr< SparsePointCloudInterface > UniqueSparsePointCloudPtr
Automatically manages the lifetime of a Sparse Point Cloud object.
Definition: Utilities.h:534
 
void DestroyCameraCalibration(CameraCalibrationInterface *cameraCalibration)
Definition: CameraCalibrationInterface.cpp:32
 
Detail::UniquePtr< ProjectedCoordinateSystemInterface > UniqueProjectedCoordinateSystemPtr
Automatically manages the lifetime of a ProjectedCoordinateSystem object.
Definition: Utilities.h:564
 
void DestroyDistanceConstraint(DistanceConstraintInterface *distance)
Definition: DistanceConstraintInterface.cpp:32
 
void DestroyControlPointConstraint(ControlPointConstraintInterface *controlPoint)
Definition: ControlPointConstraintInterface.cpp:32
 
std::size_t Size
Size type.
Definition: CommonDef.h:103
 
Detail::UniquePtr< DistanceConstraintInterface > UniqueDistanceConstraintPtr
Automatically manages the lifetime of a DistanceConstraint object.
Definition: Utilities.h:576
 
Detail::UniquePtr< SettingsInterface > UniqueSettingsPtr
Automatically manages the lifetime of a Settings object.
Definition: Utilities.h:546
 
Detail::UniquePtr< CameraInterface > UniqueCameraPtr
Automatically manages the lifetime of a Camera object.
Definition: Utilities.h:525
 
Result
Enumerates possible results generated by FlowEngine.
Definition: CommonDef.h:45
 
Buffer(std::vector< T * > &v)
Constructor from std::vector.
Definition: Utilities.h:385
 
Buffer(std::vector< Detail::UniquePtr< T > > &v)
Constructor from std::vector of unique pointers.
Definition: Utilities.h:393
 
Holds a (mutable) non_owning pointer and a size Used to marshal memory buffers as arguments in a safe...
Definition: CommonDef.h:118
 
ConstBuffer(const std::vector< T * > &v)
Conversion from std::vector.
Definition: Utilities.h:435
 
ConstBuffer(const std::vector< Detail::UniquePtr< T > > &v)
Conversion from std::vector of unique pointers.
Definition: Utilities.h:444
 
Holds a (non mutable) non_owning pointer and a count Used to marshal memory buffers as arguments in a...
Definition: CommonDef.h:191
 
Simple log listener class.
Definition: Utilities.h:460
 
std::ostream * mFileStream
Pointer to an optional file stream.
Definition: Utilities.h:481
 
void messageLogged(const char *nMessage)
Send to stdout and optionally on a file stream.
Definition: Utilities.h:462
 
Bound 2 values together.
Definition: CommonDef.h:506
 
a 2 dimensional point
Definition: CommonDef.h:388
 
Simple/Empty progress bar class.
Definition: Utilities.h:486
 
void resetGlobalTicks(unsigned int nGlobalTicks, const char *nLoadingText)
Set global progress bar ticks (if any) and reset the counter to 0.
Definition: Utilities.h:506
 
void start(const char *nWindowTitle, bool nShowGlobalProgress, bool nShowCancelButton)
Show the progress bar.
Definition: Utilities.h:488
 
void resetTicks(unsigned int nTicks, const char *nLoadingText)
Set progress bar ticks and reset the counter to 0.
Definition: Utilities.h:500
 
void update()
Progress the loading bar - Add + 1 Tick.
Definition: Utilities.h:512
 
void finish()
Hide the loading bar.
Definition: Utilities.h:494
 
void updateGlobal()
Progress the global progress bar - Add + 1 Tick.
Definition: Utilities.h:518