Commit 535c731a authored by Ivan Ilin's avatar Ivan Ilin

Merge branch 'master' of github.com:Sankore/Sankore-3.1

parents cd7bfd39 b45c784e
......@@ -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
}
......@@ -486,4 +487,12 @@ void UBGraphicsItemDelegate::showMenu()
mMenu->exec(cv->mapToGlobal(pinPos.bottomRight()));
}
void UBGraphicsItemDelegate::setFlippable(bool flippable)
{
mFlippable = flippable;
}
bool UBGraphicsItemDelegate::isFlippable()
{
return mFlippable;
}
......@@ -136,6 +136,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);
......@@ -196,6 +199,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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment