-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+// Copyright (C) 2014-2015 EDF-R&D
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
if( !aParent )
return aRect;
- QTransform aTransform = aParent->getViewTransform();
- double aScale = aTransform.m11(); // same as m22(), viewer specific
- if( fabs( aScale ) < EPSILON )
+ // take into account a transformation of the base image item
+ double aXScale = 1.0;
+ double aYScale = 1.0;
+ if( QGraphicsItem* aGrandParent = aParent->parentItem() )
+ {
+ QTransform aTransform = aGrandParent->transform();
+ QLineF aLine( 0, 0, 1, 1 );
+ aLine = aTransform.map( aLine );
+ aXScale = aLine.dx();
+ aYScale = aLine.dy();
+ }
+
+ QTransform aViewTransform = aParent->getViewTransform();
+ double aScale = aViewTransform.m11(); // same as m22(), viewer specific
+ if( fabs( aScale ) < EPSILON || fabs( aXScale ) < EPSILON || fabs( aYScale ) < EPSILON)
return aRect;
QPointF aCenter = aRect.center();
- double aWidth = aRect.width() / aScale;
- double aHeight = aRect.height() / aScale;
+ double aWidth = aRect.width() / aScale / aXScale;
+ double aHeight = aRect.height() / aScale / aYScale;
aRect = QRectF( aCenter.x() - aWidth / 2, aCenter.y() - aHeight / 2, aWidth, aHeight );
return aRect;
thePainter->save();
thePainter->setTransform( GenerateTranslationOnlyTransform( thePainter->transform(),
myBasePoint ) );
-
QGraphicsEllipseItem::paint( thePainter, theOption, theWidget );
thePainter->restore();
}