Backup of the mirror effect of and item on the board

preferencesAboutTextFull
shibakaneki 12 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())
{
// -----------------------------------------------------
// ! We want to keep the aspect ratio with this resize !
// -----------------------------------------------------
qreal scaleX = (width + moveX) / width;
qreal scaleY = (height + moveY) / height;
qreal scaleFactor = (scaleX + scaleY) / 2;
@ -230,39 +233,56 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
mScaleY = scaleY;
}
}
}
else if (resizingLeft())
}else if (resizingLeft() || resizingRight())
{
qreal scaleX = (width - moveX) / width;
if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth)
{
mScaleX = scaleX;
mTranslateX = moveX;
}
}
else if (resizingRight())
{
qreal scaleX = (width + moveX) / width;
if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth)
{
mScaleX = scaleX;
}
}
else if (resizingTop())
{
qreal scaleY = (height - moveY) / height;
if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth)
{
mScaleY = scaleY;
mTranslateY = moveY;
if(width != 0){
qreal scaleX = 0.0;
if(resizingLeft()){
scaleX = (width - moveX) / width;
}else if(resizingRight()){
scaleX = (width + moveX) / width;
}
if(mDelegate->isFlippable() && qAbs(scaleX) != 0){
if((width * qAbs(scaleX)) < 2*mFrameWidth){
bool negative = (scaleX < 0)?true:false;
if(negative){
scaleX = -2*mFrameWidth/width;
}else{
scaleX = 2*mFrameWidth/width;
}
}
mScaleX = scaleX;
}else if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth){
mScaleX = scaleX;
if(resizingLeft()){
mTranslateX = moveX;
}
}
}
}
else if (resizingBottom())
{
qreal scaleY = (height + moveY) / height;
if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth)
{
mScaleY = scaleY;
}else if(resizingTop() || resizingBottom()){
if(height != 0){
qreal scaleY = 0.0;
if(resizingTop()){
scaleY = (height - moveY) / height;
}else if(resizingBottom()){
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)
, mRespectRatio(respectRatio)
, mMimeData(NULL)
, mFlippable(false)
{
// NOOP
}
@ -459,4 +460,12 @@ void UBGraphicsItemDelegate::showMenu()
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; }
void setMimeData(QMimeData* mimeData);
void setFlippable(bool flippable);
bool isFlippable();
signals:
void showOnDisplayChanged(bool shown);
void lockChanged(bool locked);
@ -180,6 +183,9 @@ private:
bool mCanDuplicate;
bool mRespectRatio;
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->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);
setTransformationMode(Qt::SmoothTransformation);

Loading…
Cancel
Save