From: Darius S. <dst...@us...> - 2001-07-24 11:34:53
|
Update of /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators In directory usw-pr-cvs1:/tmp/cvs-serv15670/common/manipulators Modified Files: AbstractViewManipulator.cpp AbstractViewManipulator.h RectangleViewResizer.cpp RectangleViewResizer.h ViewResizer.cpp ViewResizer.h ViewSelector.cpp ViewSelector.h Log Message: Added more core implementation. Editor now supports simple line Index: AbstractViewManipulator.cpp =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators/AbstractViewManipulator.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** AbstractViewManipulator.cpp 2001/07/22 23:21:38 1.2 --- AbstractViewManipulator.cpp 2001/07/24 11:34:49 1.3 *************** *** 22,25 **** --- 22,27 ---- #include "AbstractViewManipulator.h" + void AbstractViewManipulator::move(const QPoint& delta){ + } View* AbstractViewManipulator::getTarget(){ return target; *************** *** 40,43 **** --- 42,46 ---- void AbstractViewManipulator::mouseRMBPress(QMouseEvent * e){ oldMousePos = e->pos(); + getTarget()->mouseRMBPress(e); } void AbstractViewManipulator::mouseLMBPress(QMouseEvent * e){ Index: AbstractViewManipulator.h =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators/AbstractViewManipulator.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** AbstractViewManipulator.h 2001/07/22 23:21:38 1.2 --- AbstractViewManipulator.h 2001/07/24 11:34:49 1.3 *************** *** 52,56 **** /** Implementation of interface View */ ! virtual QRect & bounds() { } /** Implementation of interface View */ --- 52,56 ---- /** Implementation of interface View */ ! virtual QRect bounds() { } /** Implementation of interface View */ *************** *** 111,114 **** --- 111,116 ---- virtual View* getTarget(); + + virtual void move(const QPoint& delta); protected: Index: RectangleViewResizer.cpp =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators/RectangleViewResizer.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** RectangleViewResizer.cpp 2001/07/22 23:21:38 1.2 --- RectangleViewResizer.cpp 2001/07/24 11:34:49 1.3 *************** *** 25,36 **** class RectangleView; - void RectangleViewResizer::handleMoveEvent(SelectionHandle * handle, QMouseEvent * event){ - int dx = event->x() - oldMousePos.x(); - int dy = event->y() - oldMousePos.y(); - - resizeTarget(handle, dx, dy); - - oldMousePos = event->pos(); - } void RectangleViewResizer::resizeTarget(SelectionHandle *handle, int diffx, int diffy) { QRect damagedArea = getTarget()->bounds(); --- 25,28 ---- *************** *** 86,99 **** } RectangleViewResizer::RectangleViewResizer(RectangleView * target) : ViewResizer((View*)target) { // this->target = target; } RectangleViewResizer::~RectangleViewResizer(){ } ! QRect & RectangleViewResizer::bounds() { ! return getTarget()->bounds(); ! } ! bool RectangleViewResizer::intersects(const QPoint & p) { ! return getTarget()->intersects(p); ! } void RectangleViewResizer::placeHandles() { View *target = getTarget(); --- 78,88 ---- } RectangleViewResizer::RectangleViewResizer(RectangleView * target) : ViewResizer((View*)target) { + selectionLayer = 0; // this->target = target; } RectangleViewResizer::~RectangleViewResizer(){ + qDebug("RectangleViewResizer deleted"); } ! void RectangleViewResizer::placeHandles() { View *target = getTarget(); *************** *** 151,154 **** --- 140,145 ---- } void RectangleViewResizer::createHandles(SelectionLayer *layer) { + CHECK_PTR(layer); + selectionLayer = layer; SelectionHandle *handle = 0; Index: RectangleViewResizer.h =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators/RectangleViewResizer.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** RectangleViewResizer.h 2001/07/22 23:21:38 1.2 --- RectangleViewResizer.h 2001/07/24 11:34:49 1.3 *************** *** 33,50 **** virtual void placeHandles(); - /** Implementation of interface View */ - virtual QRect & bounds(); - - /** Implementation of interface View */ - virtual bool intersects(const QPoint & p); - - /** - * This method will be called when a handle has been moved - * - */ - virtual void handleMoveEvent(SelectionHandle * handle, QMouseEvent * event); - protected: ! void resizeTarget(SelectionHandle *handle, int diffx, int diffy); enum Handles { enumTopLeft = 1, --- 33,38 ---- virtual void placeHandles(); protected: ! virtual void resizeTarget(SelectionHandle *handle, int diffx, int diffy); enum Handles { enumTopLeft = 1, Index: ViewResizer.cpp =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators/ViewResizer.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** ViewResizer.cpp 2001/07/22 23:10:09 1.1 --- ViewResizer.cpp 2001/07/24 11:34:49 1.2 *************** *** 1,2 **** --- 1,4 ---- + + /*************************************************************************** ViewResizer.cpp - description *************** *** 7,20 **** email : sta...@in... ***************************************************************************/ - - /*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - #include "ViewResizer.h" #include "ige/common/editors/Viewer.h" --- 9,12 ---- *************** *** 23,26 **** --- 15,33 ---- #include <qevent.h> + void ViewResizer::handleMoveEvent(SelectionHandle * handle, QMouseEvent * event){ + int dx = event->x() - oldMousePos.x(); + int dy = event->y() - oldMousePos.y(); + + resizeTarget(handle, dx, dy); + + oldMousePos = event->pos(); + } + bool ViewResizer::intersects(const QPoint & p) { + return getTarget()->intersects(p); + } + QRect ViewResizer::bounds() { + return ViewSelector::bounds(); + // return getTarget()->bounds(); + } ViewResizer::ViewResizer(View * target) : ViewSelector(target) { } *************** *** 28,31 **** --- 35,39 ---- } void ViewResizer::mouseLMBPress(QMouseEvent * e) { + qDebug("Mover clicked"); oldMousePos = e->pos(); } *************** *** 33,39 **** QRect damagedArea = getTarget()->bounds(); SelectableView *view = (SelectableView *)getTarget(); ! view->setCenter(QPoint(view->getCenter().x() + diffx, view->getCenter().y() + diffy)); placeHandles(); ! damagedArea = damagedArea.unite(view->bounds()); view->getViewer()->refresh(damagedArea); } --- 41,51 ---- QRect damagedArea = getTarget()->bounds(); SelectableView *view = (SelectableView *)getTarget(); ! damagedArea = damagedArea.unite(ViewSelector::bounds()); ! ! view->move(QPoint(diffx, diffy)); ! // view->setCenter(QPoint(view->getCenter().x() + diffx, view->getCenter().y() + diffy)); placeHandles(); ! damagedArea = damagedArea.unite(view->bounds()); ! damagedArea = damagedArea.unite(ViewSelector::bounds()); view->getViewer()->refresh(damagedArea); } Index: ViewResizer.h =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators/ViewResizer.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** ViewResizer.h 2001/07/22 23:21:38 1.2 --- ViewResizer.h 2001/07/24 11:34:49 1.3 *************** *** 21,24 **** --- 21,25 ---- #include "AbstractViewManipulator.h" #include "ViewSelector.h" + class SelectionHandle; class ViewResizer : public ViewSelector { *************** *** 32,39 **** /** Implementation of interface EventHandler */ ! virtual void mouseMove(QMouseEvent* e); protected: void moveTarget(int diffx, int diffy); }; #endif //VIEWRESIZER_H --- 33,54 ---- /** Implementation of interface EventHandler */ ! virtual void mouseMove(QMouseEvent* e); + /** Implementation of interface View */ + virtual QRect bounds(); + + /** Implementation of interface View */ + virtual bool intersects(const QPoint & p); + + /** + * This method will be called when a handle has been moved + * + */ + virtual void handleMoveEvent(SelectionHandle * handle, QMouseEvent * event); + protected: void moveTarget(int diffx, int diffy); + + virtual void resizeTarget(SelectionHandle *handle, int diffx, int diffy) =0; }; #endif //VIEWRESIZER_H Index: ViewSelector.cpp =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators/ViewSelector.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** ViewSelector.cpp 2001/07/23 12:50:54 1.1 --- ViewSelector.cpp 2001/07/24 11:34:49 1.2 *************** *** 2,23 **** #include "ViewSelector.h" #include <qevent.h> void ViewSelector::mouseLMBPress(QMouseEvent * e) { getTarget()->mouseLMBPress(e); - oldMousePos = e->pos(); } ViewSelector::ViewSelector(View * target) : AbstractViewManipulator(target) { } ViewSelector::~ViewSelector() { if(handles.empty() == false) { ! removeAllHandles(); } } ! void ViewSelector::removeAllHandles() { HandleVectorIter iter = handles.begin(); while ( iter != handles.end()) { delete *iter; ++iter; --- 2,26 ---- #include "ViewSelector.h" + #include "ige/common/editors/SelectionLayer.h" #include <qevent.h> void ViewSelector::mouseLMBPress(QMouseEvent * e) { getTarget()->mouseLMBPress(e); oldMousePos = e->pos(); } ViewSelector::ViewSelector(View * target) : AbstractViewManipulator(target) { + selectionLayer = 0; } ViewSelector::~ViewSelector() { if(handles.empty() == false) { ! deleteAllHandles(); } } ! void ViewSelector::deleteAllHandles() { HandleVectorIter iter = handles.begin(); + CHECK_PTR(selectionLayer); while ( iter != handles.end()) { + selectionLayer->removeHandle(*iter); delete *iter; ++iter; *************** *** 25,29 **** --- 28,44 ---- handles.clear(); } + QRect ViewSelector::bounds() { + QRect boundingRect = getTarget()->bounds(); + + vector<SelectionHandle*>::iterator iter = handles.begin(); + + while( iter != handles.end()) { + boundingRect = boundingRect.unite((*iter)->bounds()); + ++iter; + } + return boundingRect; + } void ViewSelector::addHandle(SelectionHandle *handle) { + CHECK_PTR(handle); handles.insert(handles.end(), handle); } Index: ViewSelector.h =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/manipulators/ViewSelector.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** ViewSelector.h 2001/07/22 23:21:38 1.2 --- ViewSelector.h 2001/07/24 11:34:49 1.3 *************** *** 30,36 **** virtual ~ViewSelector(); ! // virtual void createHandles(SelectionLayer *layer) = 0; virtual void placeHandles() = 0; HandleVectorIter getHandleIterator() { return handles.begin(); --- 30,43 ---- virtual ~ViewSelector(); ! /** Creates some selection handles to show the object has been selected ! * You need to store the given layer in the selectionLayer member variable ! ! * This is needed later to delete the created handles. ! */ ! virtual void createHandles(SelectionLayer *layer) = 0; ! virtual void placeHandles() = 0; + virtual void deleteAllHandles(); + HandleVectorIter getHandleIterator() { return handles.begin(); *************** *** 41,47 **** virtual void mouseLMBPress(QMouseEvent * e); protected: - void removeAllHandles(); void addHandle(SelectionHandle *handle); private: --- 48,63 ---- virtual void mouseLMBPress(QMouseEvent * e); + /** Implementation of interface View */ + virtual QRect bounds(); + + SelectionLayer *getSelectionLayer() { + return selectionLayer; + } + protected: void addHandle(SelectionHandle *handle); + + /** This variable must be set in the createHandles() method */ + SelectionLayer *selectionLayer; private: |