@@ -163,6 +163,21 @@ bool Transformation::getVisible()
163163 return mVisible ;
164164}
165165
166+ void Transformation::updatePosition (qreal x, qreal y)
167+ {
168+ switch (mViewType )
169+ {
170+ case StringHandler::Icon:
171+ updatePositionIcon (x, y);
172+ break ;
173+ case StringHandler::Diagram:
174+ case StringHandler::ModelicaText:
175+ default :
176+ updatePositionDiagram (x, y);
177+ break ;
178+ }
179+ }
180+
166181void Transformation::setOrigin (QPointF origin)
167182{
168183 switch (mViewType )
@@ -365,12 +380,25 @@ bool Transformation::getFlipVertical()
365380
366381QTransform Transformation::getTransformationMatrixDiagram ()
367382{
368- mPositionXDiagram = mOriginDiagram .x () + ((mExtent1Diagram .x () + mExtent2Diagram .x ()) / 2 );
369- mPositionYDiagram = mOriginDiagram .y () + ((mExtent1Diagram .y () + mExtent2Diagram .y ()) / 2 );
370-
383+ // determine X position
384+ if (mExtent1Diagram .x () + mExtent2Diagram .x () == 0 ) {
385+ mPositionXDiagram = mOriginDiagram .x ();
386+ } else if ((mExtent1Diagram .x () + mExtent2Diagram .x () != 0 ) && mOriginDiagram .x () == 0 ) {
387+ mPositionXDiagram = (mExtent1Diagram .x () + mExtent2Diagram .x ()) / 2 ;
388+ } else {
389+ mPositionXDiagram = mOriginDiagram .x () + ((mExtent1Diagram .x () + mExtent2Diagram .x ()) / 2 );
390+ }
391+ // determine Y position
392+ if (mExtent1Diagram .y () + mExtent2Diagram .y () == 0 ) {
393+ mPositionYDiagram = mOriginDiagram .y ();
394+ } else if ((mExtent1Diagram .y () + mExtent2Diagram .y () != 0 ) && mOriginDiagram .y () == 0 ) {
395+ mPositionYDiagram = (mExtent1Diagram .y () + mExtent2Diagram .y ()) / 2 ;
396+ } else {
397+ mPositionYDiagram = mOriginDiagram .y () + ((mExtent1Diagram .y () + mExtent2Diagram .y ()) / 2 );
398+ }
399+ // get scale
371400 qreal tempwidth = fabs (mExtent1Diagram .x () - mExtent2Diagram .x ());
372401 qreal tempHeight = fabs (mExtent1Diagram .y () - mExtent2Diagram .y ());
373- // get scale
374402 mScaleDiagram = tempwidth / mWidth ;
375403 // get aspectratio
376404 mAspectRatioDiagram = tempHeight / (mHeight * mScaleDiagram );
@@ -402,12 +430,25 @@ QTransform Transformation::getTransformationMatrixDiagram()
402430
403431QTransform Transformation::getTransformationMatrixIcon ()
404432{
405- mPositionXIcon = mOriginIcon .x () + ((mExtent1Icon .x () + mExtent2Icon .x ()) / 2 );
406- mPositionYIcon = mOriginIcon .y () + ((mExtent1Icon .y () + mExtent2Icon .y ()) / 2 );
407-
433+ // determine X position
434+ if (mExtent1Icon .x () + mExtent2Icon .x () == 0 ) {
435+ mPositionXIcon = mOriginIcon .x ();
436+ } else if ((mExtent1Icon .x () + mExtent2Icon .x () != 0 ) && mOriginIcon .x () == 0 ) {
437+ mPositionXIcon = (mExtent1Icon .x () + mExtent2Icon .x ()) / 2 ;
438+ } else {
439+ mPositionXIcon = mOriginIcon .x () + ((mExtent1Icon .x () + mExtent2Icon .x ()) / 2 );
440+ }
441+ // determine Y position
442+ if (mExtent1Icon .y () + mExtent2Icon .y () == 0 ) {
443+ mPositionYIcon = mOriginIcon .y ();
444+ } else if ((mExtent1Icon .y () + mExtent2Icon .y () != 0 ) && mOriginIcon .y () == 0 ) {
445+ mPositionYIcon = (mExtent1Icon .y () + mExtent2Icon .y ()) / 2 ;
446+ } else {
447+ mPositionYIcon = mOriginIcon .y () + ((mExtent1Icon .y () + mExtent2Icon .y ()) / 2 );
448+ }
449+ // get scale
408450 qreal tempwidthIcon = fabs (mExtent1Icon .x () - mExtent2Icon .x ());
409451 qreal tempHeightIcon = fabs (mExtent1Icon .y () - mExtent2Icon .y ());
410- // get scale
411452 mScaleIcon = tempwidthIcon / mWidth ;
412453 // get aspectratio
413454 mAspectRatioIcon = tempHeightIcon / (mHeight * mScaleIcon );
@@ -437,6 +478,24 @@ QTransform Transformation::getTransformationMatrixIcon()
437478 return QTransform (m11, m12, m21, m22, m31, m32);
438479}
439480
481+ void Transformation::updatePositionDiagram (qreal x, qreal y)
482+ {
483+ // determine X position
484+ if (mExtent1Diagram .x () + mExtent2Diagram .x () == 0 ) {
485+ mOriginDiagram .setX (mOriginDiagram .x () + x);
486+ } else {
487+ mExtent1Diagram .setX (mExtent1Diagram .x () + x);
488+ mExtent2Diagram .setX (mExtent2Diagram .x () + x);
489+ }
490+ // determine Y position
491+ if (mExtent1Diagram .y () + mExtent2Diagram .y () == 0 ) {
492+ mOriginDiagram .setY (mOriginDiagram .y () + y);
493+ } else {
494+ mExtent1Diagram .setY (mExtent1Diagram .y () + y);
495+ mExtent2Diagram .setY (mExtent2Diagram .y () + y);
496+ }
497+ }
498+
440499void Transformation::setOriginDiagram (QPointF origin)
441500{
442501 mOriginDiagram = origin;
@@ -501,6 +560,23 @@ bool Transformation::getFlipVerticalDiagram()
501560{
502561 return mFlipVerticalDiagram ;
503562}
563+ void Transformation::updatePositionIcon (qreal x, qreal y)
564+ {
565+ // determine X position
566+ if (mExtent1Icon .x () + mExtent2Icon .x () == 0 ) {
567+ mOriginIcon .setX (mOriginIcon .x () + x);
568+ } else {
569+ mExtent1Icon .setX (mExtent1Icon .x () + x);
570+ mExtent2Icon .setX (mExtent2Icon .x () + x);
571+ }
572+ // determine Y position
573+ if (mExtent1Icon .y () + mExtent2Icon .y () == 0 ) {
574+ mOriginIcon .setY (mOriginIcon .y () + y);
575+ } else {
576+ mExtent1Icon .setY (mExtent1Icon .y () + y);
577+ mExtent2Icon .setY (mExtent2Icon .y () + y);
578+ }
579+ }
504580
505581void Transformation::setOriginIcon (QPointF origin)
506582{
0 commit comments