Backup of the mirror effect of and item on the board

preferencesAboutTextFull
shibakaneki 13 years ago
parent ad44468429
commit b45c784ebc
  1. 82
      src/domain/UBGraphicsDelegateFrame.cpp
  2. 9
      src/domain/UBGraphicsItemDelegate.cpp
  3. 6
      src/domain/UBGraphicsItemDelegate.h
  4. 4
      src/domain/UBGraphicsPixmapItem.cpp

@ -210,6 +210,9 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{ {
if (resizingBottomRight()) if (resizingBottomRight())
{ {
// -----------------------------------------------------
// ! We want to keep the aspect ratio with this resize !
// -----------------------------------------------------
qreal scaleX = (width + moveX) / width; qreal scaleX = (width + moveX) / width;
qreal scaleY = (height + moveY) / height; qreal scaleY = (height + moveY) / height;
qreal scaleFactor = (scaleX + scaleY) / 2; qreal scaleFactor = (scaleX + scaleY) / 2;
@ -230,39 +233,56 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
mScaleY = scaleY; mScaleY = scaleY;
} }
} }
} }else if (resizingLeft() || resizingRight())
else if (resizingLeft())
{ {
qreal scaleX = (width - moveX) / width; if(width != 0){
if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth) qreal scaleX = 0.0;
{ if(resizingLeft()){
mScaleX = scaleX; scaleX = (width - moveX) / width;
mTranslateX = moveX; }else if(resizingRight()){
} scaleX = (width + moveX) / width;
} }
else if (resizingRight()) if(mDelegate->isFlippable() && qAbs(scaleX) != 0){
{ if((width * qAbs(scaleX)) < 2*mFrameWidth){
qreal scaleX = (width + moveX) / width; bool negative = (scaleX < 0)?true:false;
if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth) if(negative){
{ scaleX = -2*mFrameWidth/width;
mScaleX = scaleX; }else{
} scaleX = 2*mFrameWidth/width;
} }
else if (resizingTop()) }
{ mScaleX = scaleX;
qreal scaleY = (height - moveY) / height; }else if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth){
if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth) mScaleX = scaleX;
{ if(resizingLeft()){
mScaleY = scaleY; mTranslateX = moveX;
mTranslateY = moveY; }
}
} }
} }else if(resizingTop() || resizingBottom()){
else if (resizingBottom()) if(height != 0){
{ qreal scaleY = 0.0;
qreal scaleY = (height + moveY) / height; if(resizingTop()){
if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth) scaleY = (height - moveY) / height;
{ }else if(resizingBottom()){
mScaleY = scaleY; scaleY = (height + moveY) / height;
}
if(mDelegate->isFlippable() && qAbs(scaleY) != 0){
if((height * qAbs(scaleY)) < 2*mFrameWidth){
bool negative = (scaleY < 0)?true:false;
if(negative){
scaleY = -2*mFrameWidth/width;
}else{
scaleY = 2*mFrameWidth/width;
}
}
mScaleY = scaleY;
}else if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth)
{
mScaleY = scaleY;
mTranslateY = moveY;
}
} }
} }
} }

@ -64,6 +64,7 @@ UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObjec
, mCanDuplicate(true) , mCanDuplicate(true)
, mRespectRatio(respectRatio) , mRespectRatio(respectRatio)
, mMimeData(NULL) , mMimeData(NULL)
, mFlippable(false)
{ {
// NOOP // NOOP
} }
@ -459,4 +460,12 @@ void UBGraphicsItemDelegate::showMenu()
mMenu->exec(cv->mapToGlobal(pinPos.bottomRight())); mMenu->exec(cv->mapToGlobal(pinPos.bottomRight()));
} }
void UBGraphicsItemDelegate::setFlippable(bool flippable)
{
mFlippable = flippable;
}
bool UBGraphicsItemDelegate::isFlippable()
{
return mFlippable;
}

@ -130,6 +130,9 @@ class UBGraphicsItemDelegate : public QObject
QMimeData* mimeData(){ return mMimeData; } QMimeData* mimeData(){ return mMimeData; }
void setMimeData(QMimeData* mimeData); void setMimeData(QMimeData* mimeData);
void setFlippable(bool flippable);
bool isFlippable();
signals: signals:
void showOnDisplayChanged(bool shown); void showOnDisplayChanged(bool shown);
void lockChanged(bool locked); void lockChanged(bool locked);
@ -180,6 +183,9 @@ private:
bool mCanDuplicate; bool mCanDuplicate;
bool mRespectRatio; bool mRespectRatio;
QMimeData* mMimeData; QMimeData* mMimeData;
/** A boolean saying that this object can be flippable (mirror effect) */
bool mFlippable;
}; };

@ -30,6 +30,10 @@ UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent)
{ {
mDelegate = new UBGraphicsItemDelegate(this, 0, true, true); mDelegate = new UBGraphicsItemDelegate(this, 0, true, true);
mDelegate->init(); mDelegate->init();
// NOTE: Do not remove this code, I'm just doing a backup of my changes! thx..
//mDelegate->setFlippable(true);
setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
setTransformationMode(Qt::SmoothTransformation); setTransformationMode(Qt::SmoothTransformation);

Loading…
Cancel
Save