Salome HOME
Fix for the bug #37: Error when import image with format not supported.
[modules/hydro.git] / src / HYDROPy / HYDROData_Image.sip
index 0861739430ed22a5d66075015fcaf9052ec27361..ca4ded28ee6a12c7223ea47dd03f6d688698a82d 100644 (file)
 #include <HYDROData_Image.h>
 %End
 
-class HYDROData_Image : HYDROData_Object
+class HYDROData_Image : HYDROData_Entity
 {
 
 %ConvertToSubClassCode
-    if ( !Handle(HYDROData_Image)::DownCast( sipCpp ).IsNull() )
-      sipClass = sipClass_HYDROData_Image;
-    else
-      sipClass = NULL;
+    switch ( sipCpp->GetKind() )
+    {
+      case KIND_IMAGE:
+        sipClass = sipClass_HYDROData_Image;
+        break;
+
+      default:
+        // We don't recognise the type.
+        sipClass = NULL;
+    }
 %End
 
 %TypeHeaderCode
 #include <HYDROData_Image.h>
 %End
 
-public:
-
-  const ObjectKind           GetKind() const;
-
 public:      
 
   /**
@@ -50,6 +52,12 @@ public:
    */
   void                       SetImage( const QImage& theImage );
 
+  /**
+   * Load the image from file
+   * \param theFilePath path to image
+   */
+  bool                       LoadImage( const QString& theFilePath );
+
   /**
    * Returns the kept image
    */
@@ -68,77 +76,104 @@ public:
 
   /**
    * Stores the image transformation points (3 input + 3 output)
-   * \param thePointAIn input point A
-   * \param thePointBIn input point B
-   * \param thePointCIn input point C
-   * \param thePointAOut output point A
-   * \param thePointBOut output point B
-   * \param thePointCOut output point C
+   * \param thePointA input point A
+   * \param thePointB input point B
+   * \param thePointC input point C
+   * \param theLambertPointA output point A in Lambert93 coordinates
+   * \param theLambertPointB output point B in Lambert93 coordinates
+   * \param theLambertPointC output point C in Lambert93 coordinates
+   * \param theCartesianPointA output point A in Cartesian coordinates
+   * \param theCartesianPointB output point B in Cartesian coordinates
+   * \param theCartesianPointC output point C in Cartesian coordinates
    */
-  void                       SetTrsfPoints( const QPoint&  thePointAIn,
-                                            const QPoint&  thePointBIn,
-                                            const QPoint&  thePointCIn,
-                                            const QPointF& thePointAOut,
-                                            const QPointF& thePointBOut,
-                                            const QPointF& thePointCOut );
+  void                       SetTrsfPoints( const QPoint& thePointA,
+                                            const QPoint& thePointB,
+                                            const QPoint& thePointC,
+                                            const QPointF& theLambertPointA,
+                                            const QPointF& theLambertPointB,
+                                            const QPointF& theLambertPointC,
+                                            const QPointF& theCartesianPointA,
+                                            const QPointF& theCartesianPointB,
+                                            const QPointF& theCartesianPointC );
 
   /**
    * Returns the image transformation points (3 input + 3 output)
-   * \param thePointAIn input point A
-   * \param thePointBIn input point B
-   * \param thePointCIn input point C
-   * \param thePointAOut output point A
-   * \param thePointBOut output point B
-   * \param thePointCOut output point C
+   * \param thePointA input point A
+   * \param thePointB input point B
+   * \param thePointC input point C
+   * \param theLambertPointA output point A in Lambert93 coordinates
+   * \param theLambertPointB output point B in Lambert93 coordinates
+   * \param theLambertPointC output point C in Lambert93 coordinates
+   * \param theCartesianPointA output point A in Cartesian coordinates
+   * \param theCartesianPointB output point B in Cartesian coordinates
+   * \param theCartesianPointC output point C in Cartesian coordinates
+   */
+  void                       TrsfPoints( QPoint& thePointA,
+                                         QPoint& thePointB,
+                                         QPoint& thePointC,
+                                         QPointF& theLambertPointA,
+                                         QPointF& theLambertPointB,
+                                         QPointF& theLambertPointC,
+                                         QPointF& theCartesianPointA,
+                                         QPointF& theCartesianPointB,
+                                         QPointF& theCartesianPointC ) const;
+
+  /**
+   * Returns true if the image has stored transformation points
+   */
+  bool                       HasTrsfPoints() const;
+
+  /**
+   * Stores the transformation mode (0 - Lambert93, 1 - Cartesian)
+   */
+  void                       SetTrsfMode(const int theMode);
+
+  /**
+   * Returns the transformation mode (0 - Lambert93, 1 - Cartesian)
    */
-  void                       TrsfPoints( QPoint&  thePointAIn,
-                                         QPoint&  thePointBIn,
-                                         QPoint&  thePointCIn,
-                                         QPointF& thePointAOut,
-                                         QPointF& thePointBOut,
-                                         QPointF& thePointCOut );
+  int                        TrsfMode() const;
+
+
+  /**
+   * Returns the number of referenced images
+   * \return zero if there is no references
+   */
+  int                        NbReferences();
 
   /**
    * Appends reference to other image.
    * \param theReferenced the image referenced by this
    */
-  void AppendReference( HYDROData_Image theReferenced ) [void (Handle_HYDROData_Image)];
+  void AppendReference( HYDROData_Entity theReferenced ) [void (Handle_HYDROData_Entity)];
   %MethodCode
 
-    Handle(HYDROData_Image) anImage = 
-      Handle(HYDROData_Image)::DownCast( createHandle( a0 ) );
-    if ( !anImage.IsNull() )
+    Handle(HYDROData_Entity) aRefObj = createHandle( a0 );
+    if ( !aRefObj.IsNull() )
     {
       Py_BEGIN_ALLOW_THREADS
-      sipSelfWasArg ? sipCpp->HYDROData_Image::AppendReference( anImage ) : 
-                      sipCpp->AppendReference( anImage );
+      sipSelfWasArg ? sipCpp->HYDROData_Image::AppendReference( aRefObj ) : 
+                      sipCpp->AppendReference( aRefObj );
       Py_END_ALLOW_THREADS
     }
 
   %End
 
-  /**
-   * Returns the number of referenced images
-   * \return zero if there is no references
-   */
-  int                        NbReferences();
-
   /**
    * Returns reference by index.
    * \param theIndex number of reference [0; NbReference)
    * \returns the referenced image, or Null if index is invalid
    */
-  HYDROData_Image Reference( const int theIndex ) const [Handle_HYDROData_Image (const int)];
+  HYDROData_Entity Reference( const int theIndex ) const [Handle_HYDROData_Entity (const int)];
   %MethodCode
 
-    Handle(HYDROData_Image) anImage;
+    Handle(HYDROData_Entity) aRefObj;
     
     Py_BEGIN_ALLOW_THREADS
-    sipSelfWasArg ? sipCpp->HYDROData_Image::Reference( a0 ) : 
-                    sipCpp->Reference( a0 );
+    aRefObj = sipSelfWasArg ? sipCpp->HYDROData_Image::Reference( a0 ) : 
+                              sipCpp->Reference( a0 );
     Py_END_ALLOW_THREADS
     
-    sipRes = dynamic_cast<HYDROData_Image*>( createPointer( anImage ) );
+    sipRes = createPointer( aRefObj );
   
   %End
 
@@ -148,16 +183,15 @@ public:
    * \param theIndex number of reference [0; NbReference]
    * \param theReferenced the image referenced by this
    */
-  void ChangeReference( const int theIndex, HYDROData_Image theReferenced ) [void (const int, Handle_HYDROData_Image)];
+  void ChangeReference( const int theIndex, HYDROData_Entity theReferenced ) [void (const int, Handle_HYDROData_Entity)];
   %MethodCode
 
-    Handle(HYDROData_Image) anImage = 
-      Handle(HYDROData_Image)::DownCast( createHandle( a1 ) );
-    if ( !anImage.IsNull() )
+    Handle(HYDROData_Entity) aRefObj = createHandle( a1 );
+    if ( !aRefObj.IsNull() )
     {
       Py_BEGIN_ALLOW_THREADS
-      sipSelfWasArg ? sipCpp->HYDROData_Image::ChangeReference( a0, anImage ) : 
-                      sipCpp->ChangeReference( a0, anImage );
+      sipSelfWasArg ? sipCpp->HYDROData_Image::ChangeReference( a0, aRefObj ) : 
+                      sipCpp->ChangeReference( a0, aRefObj );
       Py_END_ALLOW_THREADS
     }