summaryrefslogtreecommitdiffstats
path: root/k9author/k9canvasselection.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-17 00:32:19 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-17 00:32:19 +0000
commit0d382a262c0638d0f572fc37193ccc5ed3dc895f (patch)
tree8578dcddfce4191f3f7a142a37769df7add48475 /k9author/k9canvasselection.cpp
downloadk9copy-0d382a262c0638d0f572fc37193ccc5ed3dc895f.tar.gz
k9copy-0d382a262c0638d0f572fc37193ccc5ed3dc895f.zip
Added old abandoned version of k9copy
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/k9copy@1091546 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'k9author/k9canvasselection.cpp')
-rw-r--r--k9author/k9canvasselection.cpp330
1 files changed, 330 insertions, 0 deletions
diff --git a/k9author/k9canvasselection.cpp b/k9author/k9canvasselection.cpp
new file mode 100644
index 0000000..8b9d72f
--- /dev/null
+++ b/k9author/k9canvasselection.cpp
@@ -0,0 +1,330 @@
+// //
+// C++ Implementation: k9canvasselection
+//
+// Description:
+//
+//
+// Author: Jean-Michel PETIT <[email protected]>, (C) 2007
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "k9canvasselection.h"
+#include "k9menubutton.h"
+
+k9CanvasSelectionRedim::k9CanvasSelectionRedim (ePosition _position,int _x,int _y,int _w,int _h,QCanvas *canvas,k9CanvasSelection *selection):QCanvasRectangle(_x,_y,_w,_h,canvas) {
+ m_position=_position;
+ m_selection=selection;
+}
+
+void k9CanvasSelectionRedim::moveBy(double _x,double _y) {
+ m_offsetX=_x;
+ m_offsetY=_y;
+ QCanvasRectangle::moveBy(_x,_y);
+}
+
+void k9CanvasSelectionRedim::updateSelection() {
+ int w,h;
+ int w1=m_selection->getWidth();
+ int h1=m_selection->getHeight();
+ int x1=m_selection->getLeft();
+ int y1=m_selection->getTop();
+ switch (m_position) {
+ case RedimTopLeft:
+ w=m_selection->getWidth()-m_offsetX;
+ h=m_selection->getHeight()-m_offsetY;
+ if (m_selection->canScale(-m_offsetX,-m_offsetY)) {
+ m_selection->setWidth(w);
+ m_selection->setHeight(h);
+ m_selection->moveBy(m_offsetX,m_offsetY);
+ }
+ break;
+ case RedimMiddleRight :
+ w= m_selection->getWidth()+ m_offsetX;
+ if (m_selection->canScale(m_offsetX,0))
+ m_selection->setWidth(w);
+ break;
+ case RedimTopMiddle:
+ h=m_selection->getHeight()-m_offsetY;
+ if (m_selection->canScale(0,-m_offsetY)) {
+ m_selection->setHeight(h);
+ m_selection->moveBy(0,m_offsetY);
+ }
+ break;
+ case RedimTopRight:
+ h=m_selection->getHeight()-m_offsetY;
+ w=m_selection->getWidth()+ m_offsetX;
+ if (m_selection->canScale(m_offsetX,-m_offsetY)) {
+ m_selection->setHeight(h);
+ m_selection->setWidth( w);
+ m_selection->moveBy(0,m_offsetY);
+ }
+ break;
+ case RedimMiddleLeft:
+ w=m_selection->getWidth()-m_offsetX;
+ if (m_selection->canScale(-m_offsetX,0)) {
+ m_selection->setWidth(w);
+ m_selection->moveBy(m_offsetX,0);
+ }
+ break;
+ case RedimBottomLeft:
+ w=m_selection->getWidth()-m_offsetX;
+ h=m_selection->getHeight()+m_offsetY;
+ if (m_selection->canScale(-m_offsetX,+m_offsetY)) {
+ m_selection->setWidth(w);
+ m_selection->setHeight(h);
+ m_selection->moveBy(m_offsetX,0);
+ }
+ break;
+ case RedimBottomMiddle:
+ h=m_selection->getHeight()+m_offsetY;
+ if (m_selection->canScale(0,+m_offsetY))
+ m_selection->setHeight(h);
+ break;
+
+ case RedimBottomRight:
+ w=m_selection->getWidth()+m_offsetX;
+ h=m_selection->getHeight()+m_offsetY;
+ if (m_selection->canScale(+m_offsetX,+m_offsetY)) {
+ m_selection->setWidth(w);
+ m_selection->setHeight(h);
+ }
+ break;
+ }
+ m_selection->scale(m_selection->getLeft()-x1,m_selection->getTop()-y1, m_selection->getWidth()-w1,m_selection->getHeight()-h1);
+ m_selection->update();
+
+}
+
+
+k9CanvasSelection::k9CanvasSelection(k9MenuEditor *_editor)
+ : QObject(_editor) {
+ m_rect=NULL;
+ m_editor=_editor;
+}
+
+
+k9CanvasSelection::~k9CanvasSelection() {}
+
+void k9CanvasSelection::setPosition(QPoint _p) {
+ if (m_rect==NULL) {
+ QCanvas *m_canvas=m_editor->canvas();
+ m_rect=new QCanvasRectangle(m_editor->canvas());
+ QBrush brush(Qt::green);
+ m_rm=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimMiddleRight,0,0,10,10,m_canvas,this);
+ m_rm->setPen(Qt::black);
+ m_rm->setBrush(brush);
+
+ m_lt=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimTopLeft,0,0,10,10,m_canvas,this);
+ m_lt->setPen(Qt::black);
+ m_lt->setBrush(brush);
+
+ m_mt=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimTopMiddle,0,0,10,10,m_canvas,this);
+ m_mt->setPen(Qt::black);
+ m_mt->setBrush(brush);
+
+ m_mt=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimTopMiddle,0,0,10,10,m_canvas,this);
+ m_mt->setPen(Qt::black);
+ m_mt->setBrush(brush);
+
+ m_rt=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimTopRight,0,0,10,10,m_canvas,this);
+ m_rt->setPen(Qt::black);
+ m_rt->setBrush(brush);
+
+ m_lm=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimMiddleLeft,0,0,10,10,m_canvas,this);
+ m_lm->setPen(Qt::black);
+ m_lm->setBrush(brush);
+
+ m_lb=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimBottomLeft,0,0,10,10,m_canvas,this);
+ m_lb->setPen(Qt::black);
+ m_lb->setBrush(brush);
+
+ m_mb=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimBottomMiddle,0,0,10,10,m_canvas,this);
+ m_mb->setPen(Qt::black);
+ m_mb->setBrush(brush);
+
+ m_rb=new k9CanvasSelectionRedim(k9CanvasSelectionRedim::RedimBottomRight,0,0,10,10,m_canvas,this);
+ m_rb->setPen(Qt::black);
+ m_rb->setBrush(brush);
+ } else {
+ m_rect->setCanvas(m_editor->canvas());
+ m_lt->setCanvas(m_editor->canvas());
+ m_mt->setCanvas(m_editor->canvas());
+ m_rt->setCanvas(m_editor->canvas());
+ m_lm->setCanvas(m_editor->canvas());
+ m_rm->setCanvas(m_editor->canvas());
+ m_lb->setCanvas(m_editor->canvas());
+ m_mb->setCanvas(m_editor->canvas());
+ m_rb->setCanvas(m_editor->canvas());
+ ;
+ }
+ m_rect->setPen(QPen(Qt::red));
+ m_rect->setX(_p.x());
+ m_rect->setY(_p.y());
+ m_rect->setSize(0,0);
+
+}
+
+void k9CanvasSelection::release() {
+ if (m_rect) {
+ if (m_editor->getSelection()->count() !=0) {
+ drawSelection();
+ } else {
+ hide();
+ hideRedim();
+ }
+ m_editor->canvas()->update();
+ }
+}
+
+void k9CanvasSelection::drawSelection() {
+ int left=720,top=576,right=0,bottom=0;
+ QPtrList <k9MenuButton> *selection=m_editor->getSelection();
+
+ for (k9MenuButton *b=selection->first();b;b=selection->next()) {
+ left=QMIN(left,b->getLeft());
+ top=QMIN(top,b->getTop());
+ right=QMAX(right,b->getWidth()+b->getLeft());
+ bottom=QMAX(bottom,b->getTop()+b->getHeight());
+ }
+ m_rect->setX(left-2);
+ m_rect->setY(top-2);
+ m_rect->setSize(right-left+4,bottom-top+4);
+ update();
+}
+
+void k9CanvasSelection::update() {
+ int x=(int)m_rect->x() -5;
+ int y=(int)m_rect->y()-5;
+ int w=getWidth();
+ int h=getHeight();
+
+ int count=m_editor->canvas()->allItems().count();
+
+ m_lt->move(x,y);
+ m_lt->setZ(count--);
+
+ m_mt->move(x+w/2,y);
+ m_mt->setZ(count--);
+
+ m_rt->move(x+w,y);
+ m_rt->setZ(count--);
+
+ m_lm->move(x,y+h/2);
+ m_lm->setZ(count--);
+
+ m_rm->move(x+w,y+h/2);
+ m_rm->setZ(count--);
+
+ m_lb->move(x,y+h);
+ m_lb->setZ(count--);
+
+ m_mb->move(x+w/2,y+h);
+ m_mb->setZ(count--);
+
+ m_rb->move(x+w,y+h);
+ m_rb->setZ(count--);
+
+ m_rect->setZ(count--);
+
+ QCanvasItemList l=m_editor->canvas()->allItems();
+ for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) {
+ QCanvasItem *item=*it;
+ if (item != m_rect && item !=m_lt && item !=m_rt && item != m_mt && item !=m_lm && item != m_rm && item != m_lb && item != m_mb && item !=m_rb)
+ item->setZ(count--);
+ }
+
+ showRedim();
+ show();
+}
+
+void k9CanvasSelection::scale(int _x,int _y,int _w, int _h) {
+ QPtrList <k9MenuButton> *buttons=m_editor->getSelection();
+ for (k9MenuButton *b=buttons->first();b;b=buttons->next()) {
+ b->moveBy(_x,_y,false);
+ if (b->getWidth() + _w >10)
+ b->setWidth(b->getWidth()+_w,false);
+ if (b->getHeight() +_h >10)
+ b->setHeight(b->getHeight()+_h);
+ }
+
+}
+
+bool k9CanvasSelection::canScale(int _w, int _h) {
+ QPtrList <k9MenuButton> *buttons=m_editor->getSelection();
+ for (k9MenuButton *b=buttons->first();b;b=buttons->next()) {
+ if (b->getWidth() + _w <10)
+ return false;
+ if (b->getHeight() +_h <10)
+ return false;
+ }
+ return true;
+}
+
+
+void k9CanvasSelection::hide() {
+ m_rect->hide();
+ hideRedim();
+}
+void k9CanvasSelection::hideRedim() {
+ m_lt->hide();
+ m_mt->hide();
+ m_rt->hide();
+ m_lm->hide();
+ m_rm->hide();
+ m_lb->hide();
+ m_mb->hide();
+ m_rb->hide();
+
+}
+
+void k9CanvasSelection::show() {
+ m_rect->show();
+}
+void k9CanvasSelection::showRedim() {
+ m_lt->show();
+ m_mt->show();
+ m_rt->show();
+ m_lm->show();
+ m_rm->show();
+ m_lb->show();
+ m_mb->show();
+ m_rb->show();
+
+}
+
+
+void k9CanvasSelection::setSize(int _w,int _h) {
+ m_rect->setSize(_w,_h);
+}
+
+QRect k9CanvasSelection::getRect() {
+ return m_rect->rect();
+
+}
+
+void k9CanvasSelection::moveBy(int _x,int _y) {
+ m_rect->moveBy(_x,_y);
+}
+
+int k9CanvasSelection::getWidth() {
+ return m_rect->width();
+}
+void k9CanvasSelection::setWidth(int _w) {
+ m_rect->setSize(_w,m_rect->height());
+}
+int k9CanvasSelection::getHeight() {
+ return m_rect->height();
+}
+void k9CanvasSelection::setHeight(int _h) {
+ m_rect->setSize(m_rect->width(),_h);
+}
+
+int k9CanvasSelection::getLeft() {
+ return (int)m_rect->x();
+}
+int k9CanvasSelection::getTop() {
+ return (int)m_rect->y();
+}
+
+#include "k9canvasselection.moc"