Salome HOME
size of image is limited by 7000 pixels
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_ShapeImage.cxx
index 4f832399d26895271f03bb09d14b9c3469372d0e..765e75d615d7f9e3751439d8b9386f1b7b672c8f 100644 (file)
@@ -25,6 +25,9 @@
 #include <HYDROData_Document.h>
 
 #include <gp_Pnt.hxx>
+#include <QMessageBox>
+#include <QApplication>
+#include <QDesktopWidget>
 
 HYDROGUI_ShapeImage::HYDROGUI_ShapeImage( const Handle(AIS_InteractiveContext)& theContext,
                                           const Handle(HYDROData_Image)&         theImage,
@@ -46,20 +49,26 @@ void HYDROGUI_ShapeImage::update( bool theIsUpdateViewer, bool isDeactivateSelec
   HYDROGUI_Shape::update( theIsUpdateViewer, isDeactivateSelection );
 }
 
-Handle(AIS_InteractiveObject) HYDROGUI_ShapeImage::createShape() const
+QList<Handle(AIS_InteractiveObject)> HYDROGUI_ShapeImage::createShape() const
 {
+  QList<Handle(AIS_InteractiveObject)> shapes;
+
   Handle(HYDROGUI_ImagePrs) aPrs;
 
   Handle(HYDROData_Image) anImageObj = Handle(HYDROData_Image)::DownCast( getObject() );
   if ( !anImageObj.IsNull() )
   {
-    aPrs = new HYDROGUI_ImagePrs( imagePixMap( anImageObj ), imageContour( anImageObj ) );
+       QString aMsg;
+    aPrs = new HYDROGUI_ImagePrs( imagePixMap( anImageObj, aMsg ), imageContour( anImageObj ) );
+       if( !aMsg.isEmpty() )
+               QMessageBox::warning( qApp->desktop(), "Warning", aMsg ); 
+    shapes.append( aPrs );
   }
 
-  return aPrs;
+  return shapes;
 }
 
-Handle(Image_PixMap) HYDROGUI_ShapeImage::imagePixMap( const Handle(HYDROData_Image)& theImageObj ) const
+Handle(Image_PixMap) HYDROGUI_ShapeImage::imagePixMap( const Handle(HYDROData_Image)& theImageObj, QString& theMessage ) const
 {
     Handle(Image_PixMap) aPix;
     if ( !theImageObj.IsNull() )
@@ -76,7 +85,14 @@ Handle(Image_PixMap) HYDROGUI_ShapeImage::imagePixMap( const Handle(HYDROData_Im
             if ( aDelta > 0 )
                 aTrsfWidth += ( 4 - aDelta );
       
+                       const int maxWidth = 7000;
+                       if( aTrsfWidth>maxWidth )
+                       {
+                               aTrsfWidth = maxWidth;
+                               theMessage = QString( "The size of image is scaled to %0" ).arg( aTrsfWidth );
+                       }
             anImage = anImage.scaledToWidth( aTrsfWidth );
+                       int pix = anImage.width() * anImage.height();
 
             aPix = HYDROGUI_Tool::Pixmap( anImage );
         }