diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2019-08-08 20:10:24 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2019-08-08 20:10:24 (GMT) |
commit | 84b475d6f6ef32461040a450821f62823b6e0300 (patch) | |
tree | b45e51b746fb449bed1390f156b2ba4aa13359b9 /tksao | |
parent | 791fb8b344212d10904c2b2462713ddb86879970 (diff) | |
download | blt-84b475d6f6ef32461040a450821f62823b6e0300.zip blt-84b475d6f6ef32461040a450821f62823b6e0300.tar.gz blt-84b475d6f6ef32461040a450821f62823b6e0300.tar.bz2 |
simplify code
Diffstat (limited to 'tksao')
-rw-r--r-- | tksao/frame/base.C | 2 | ||||
-rw-r--r-- | tksao/frame/base.h | 8 | ||||
-rw-r--r-- | tksao/frame/composite.C | 8 | ||||
-rw-r--r-- | tksao/frame/composite.h | 2 | ||||
-rw-r--r-- | tksao/frame/frmarker.C | 170 | ||||
-rw-r--r-- | tksao/frame/marker.C | 13 | ||||
-rw-r--r-- | tksao/frame/marker.h | 7 |
7 files changed, 62 insertions, 148 deletions
diff --git a/tksao/frame/base.C b/tksao/frame/base.C index dbbe13a..17e4711 100644 --- a/tksao/frame/base.C +++ b/tksao/frame/base.C @@ -169,8 +169,6 @@ Base::Base(Tcl_Interp* i, Tk_Canvas c, Tk_Item* item) undoMarkerType = NONE; editMarker = NULL; - rotateMarker = NULL; - compositeMarker = NULL; inverseScale = NULL; diff --git a/tksao/frame/base.h b/tksao/frame/base.h index 619510e..4a9f9a5 100644 --- a/tksao/frame/base.h +++ b/tksao/frame/base.h @@ -154,9 +154,7 @@ public: UndoMarkerType undoMarkerType; // type Vector markerBegin; // marker move begin in image coords - Marker* editMarker; // pointer to marker currently being edited - Marker* rotateMarker; // pointer to marker currently being rotated - + Marker* editMarker; // pointer to current being edited/moved/rotated Composite* compositeMarker; // pointer to current composite marker Vector cursor; // current cursor position in REF coords @@ -490,7 +488,6 @@ public: virtual void x11MagnifierCursor(const Vector&) {} void x11MagnifierMarkers(List<Marker>*, const BBox& bb); void x11Markers(List<Marker>*, const BBox&); - void x11MarkerXOR(Marker*); void xmlParse(istream&); void xmlParseFIELD(void*, int*, char**, char**, char**, char**, int); void xmlParseTR(char**, int*, char**, char**, char**, char**, int); @@ -1466,11 +1463,8 @@ public: void markerMoveCmd(const char*, const Vector&); void markerMoveCmd(int id, const Vector&); void markerMoveBeginCmd(const Vector&); - void markerMoveBeginCmd(int, const Vector&); void markerMoveMotionCmd(const Vector&); - void markerMoveMotionCmd(int, const Vector&); void markerMoveEndCmd(); - void markerMoveEndCmd(int); void markerMoveToCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame); void markerMoveToCmd(const char*, const Vector&, Coord::CoordSystem, Coord::SkyFrame); void markerMoveToCmd(int, const Vector&, Coord::CoordSystem, Coord::SkyFrame); diff --git a/tksao/frame/composite.C b/tksao/frame/composite.C index c058469..e7ca75e 100644 --- a/tksao/frame/composite.C +++ b/tksao/frame/composite.C @@ -32,12 +32,12 @@ Composite::Composite(Base* p, const Vector& ctr, } void Composite::x11(Drawable drawable, Coord::InternalSystem sys, - int tt, RenderMode mode, HandleMode hh) + int tt, HandleMode hh) { - if (hh==HANDLES) + if (hh==HANDLES && renderMode != Marker::XOR) renderXHandles(drawable); if (tt) - renderXText(drawable, sys, mode); + renderXText(drawable, sys, renderMode); Marker* mk=members.head(); while (mk) { @@ -45,7 +45,7 @@ void Composite::x11(Drawable drawable, Coord::InternalSystem sys, m->setComposite(fwdMatrix(), angle); if (global) m->setComposite(colorName, lineWidth, highlited); - m->x11(drawable, sys, tt, mode, hh); + m->x11(drawable, sys, tt, hh); delete m; mk=mk->next(); } diff --git a/tksao/frame/composite.h b/tksao/frame/composite.h index 5261fed..b6ee43e 100644 --- a/tksao/frame/composite.h +++ b/tksao/frame/composite.h @@ -36,7 +36,7 @@ public: Marker* dup() {return new Composite(*this);} - void x11(Drawable, Coord::InternalSystem, int, RenderMode, HandleMode); + void x11(Drawable, Coord::InternalSystem, int, HandleMode); void ps(int,int); #ifdef MAC_OSX_TK void macosx(int); diff --git a/tksao/frame/frmarker.C b/tksao/frame/frmarker.C index 8e1b353..a505d2a 100644 --- a/tksao/frame/frmarker.C +++ b/tksao/frame/frmarker.C @@ -3641,7 +3641,7 @@ void Base::markerDeleteTagCmd(int id, int which) } } -void Base::markerEditBeginCmd(int id, int h) +void Base::markerEditBeginCmd(int id, int hh) { // remember which marker is being edited Marker* mm=markers->head(); @@ -3650,7 +3650,7 @@ void Base::markerEditBeginCmd(int id, int h) markerUndo(mm, EDIT); editMarker = mm; - editMarker->editBegin(h); + editMarker->editBegin(hh); return; } mm=mm->next(); @@ -3659,7 +3659,7 @@ void Base::markerEditBeginCmd(int id, int h) editMarker = NULL; } -void Base::markerEditBeginCmd(const Vector& v, int h) +void Base::markerEditBeginCmd(const Vector& vv, int hh) { // remember which marker is being edited Marker* mm=markers->head(); @@ -3668,7 +3668,7 @@ void Base::markerEditBeginCmd(const Vector& v, int h) markerUndo(mm, EDIT); editMarker = mm; - editMarker->editBegin(h); + editMarker->editBegin(hh); return; } mm=mm->next(); @@ -3680,21 +3680,21 @@ void Base::markerEditBeginCmd(const Vector& v, int h) void Base::markerEditMotionCmd(const Vector& vv, int hh) { if (editMarker) { - // erase current marker now - redraw(editMarker->getAllBBox()); - forceUpdate(); - + editMarker->setRenderMode(Marker::XOR); editMarker->edit(mapToRef(vv,Coord::CANVAS), hh); - x11MarkerXOR(editMarker); } + + update(PIXMAP); } void Base::markerEditEndCmd() { - if (editMarker) + if (editMarker) { + editMarker->setRenderMode(Marker::SRC); editMarker->editEnd(); - editMarker = NULL; + } + editMarker = NULL; update(PIXMAP); } @@ -4795,10 +4795,10 @@ void Base::markerMoveCmd(int id, const Vector& v) } } -void Base::markerMoveBeginCmd(const Vector& v) +void Base::markerMoveBeginCmd(const Vector& vv) { - markerBegin = mapToRef(v,Coord::CANVAS); - + markerBegin = mapToRef(vv,Coord::CANVAS); + undoMarkers->deleteAll(); Marker* mm=markers->head(); while (mm) { @@ -4811,112 +4811,35 @@ void Base::markerMoveBeginCmd(const Vector& v) } } -void Base::markerMoveBeginCmd(int id, const Vector& v) +void Base::markerMoveMotionCmd(const Vector& vv) { - markerBegin = mapToRef(v,Coord::CANVAS); + Vector markerEnd = mapToRef(vv,Coord::CANVAS); + Vector diff = markerEnd - markerBegin; + markerBegin = markerEnd; - undoMarkers->deleteAll(); Marker* mm=markers->head(); while (mm) { - if (mm->getId() == id) { - if (mm->canMove()) { - undoMarkers->append(mm->dup()); - undoMarkerType = MOVE; - mm->moveBegin(); - } - return; + if (mm->isSelected() && mm->canMove()) { + mm->setRenderMode(Marker::XOR); + mm->move(diff); } mm=mm->next(); } -} - -void Base::markerMoveMotionCmd(const Vector& v) -{ - // first, accumulate erase markers - Marker* mm=markers->head(); - if (mm) { - while (mm) { - if (mm->isSelected() && mm->canMove()) - redraw(mm->getAllBBox()); - mm=mm->next(); - } - - // and erase now - forceUpdate(); - - // ok, now draw selected markers in new location - Vector markerEnd = mapToRef(v,Coord::CANVAS); - Vector diff = markerEnd - markerBegin; - markerBegin = markerEnd; - - mm=markers->head(); - while (mm) { - if (mm->isSelected() && mm->canMove()) { - mm->move(diff); - x11MarkerXOR(mm); - } - mm=mm->next(); - } - } -} - -void Base::markerMoveMotionCmd(int id, const Vector& v) -{ - // first, accumulate erase markers - Marker* mm=markers->head(); - if (mm) { - while (mm) { - if (mm->getId() && mm->canMove()) { - redraw(mm->getAllBBox()); - break; - } - mm=mm->next(); - } - - if (!mm) - return; // can't find it - - Marker *ptr = mm; - // and erase now - forceUpdate(); - - // ok, now draw selected markers in new location - Vector markerEnd = mapToRef(v,Coord::CANVAS); - Vector diff = markerEnd - markerBegin; - markerBegin = markerEnd; - - ptr->move(diff); - x11MarkerXOR(ptr); - } + update(PIXMAP); } void Base::markerMoveEndCmd() { Marker* mm=markers->head(); while (mm) { - if (mm->isSelected() && mm->canMove()) + if (mm->isSelected() && mm->canMove()) { + mm->setRenderMode(Marker::SRC); mm->moveEnd(); - mm=mm->next(); - } - - // update widget since we don't know where the selected markers came from - update(PIXMAP); -} - -void Base::markerMoveEndCmd(int id) -{ - Marker* mm=markers->head(); - while (mm) { - if (mm->getId() == id) { - if (mm->canMove()) - mm->moveEnd(); - return; } mm=mm->next(); } - // update widget since we don't know where the selected markers came from update(PIXMAP); } @@ -5267,15 +5190,15 @@ void Base::markerRotateBeginCmd(int id) if (mm->getId() == id) { if (mm->canRotate()) { markerUndo(mm, EDIT); - rotateMarker = mm; - rotateMarker->rotateBegin(); + editMarker = mm; + editMarker->rotateBegin(); } return; } mm=mm->next(); } - rotateMarker = NULL; + editMarker = NULL; } void Base::markerRotateBeginCmd(const Vector& v) @@ -5285,33 +5208,34 @@ void Base::markerRotateBeginCmd(const Vector& v) while (mm) { if (mm->isSelected() && mm->canRotate()) { markerUndo(mm, EDIT); - rotateMarker = mm; - rotateMarker->rotateBegin(); + editMarker = mm; + editMarker->rotateBegin(); return; } mm=mm->next(); } - rotateMarker = NULL; + editMarker = NULL; } void Base::markerRotateMotionCmd(const Vector& vv, int hh) { - if (rotateMarker) { - // erase current marker now - redraw(rotateMarker->getAllBBox()); - forceUpdate(); - - rotateMarker->rotate(mapToRef(vv,Coord::CANVAS), hh); - x11MarkerXOR(rotateMarker); + if (editMarker) { + editMarker->setRenderMode(Marker::XOR); + editMarker->rotate(mapToRef(vv,Coord::CANVAS), hh); } + + update(PIXMAP); } void Base::markerRotateEndCmd() { - if (rotateMarker) - rotateMarker->rotateEnd(); - rotateMarker = NULL; + if (editMarker) { + editMarker->setRenderMode(Marker::SRC); + editMarker->rotateEnd(); + } + + editMarker = NULL; update(PIXMAP); } @@ -6221,7 +6145,7 @@ void Base::x11MagnifierMarkers(List<Marker>* ml, const BBox& bb) while (mm) { if (mm->isVisible(bb)) mm->x11(magnifierPixmap, Coord::MAGNIFIER, showMarkersText, - Marker::SRC, Marker::NOHANDLES); + Marker::NOHANDLES); mm=mm->previous(); } } @@ -6233,19 +6157,11 @@ void Base::x11Markers(List<Marker>* ml, const BBox& bb) Marker* mm=ml->tail(); while (mm) { if (mm->isVisible(bb)) - mm->x11(pixmap, Coord::WIDGET, showMarkersText, - Marker::SRC, Marker::HANDLES); + mm->x11(pixmap, Coord::WIDGET, showMarkersText, Marker::HANDLES); mm=mm->previous(); } } -void Base::x11MarkerXOR(Marker* ptr) -{ - if (ptr) - ptr->x11(Tk_WindowId(tkwin), Coord::WINDOW, showMarkersText, - Marker::XOR, Marker::NOHANDLES); -} - void Base::unselectMarkers(List<Marker>* ml) { Marker* mm=ml->head(); diff --git a/tksao/frame/marker.C b/tksao/frame/marker.C index 65563f2..b694940 100644 --- a/tksao/frame/marker.C +++ b/tksao/frame/marker.C @@ -68,6 +68,7 @@ Marker::Marker(Base* p, const Vector& ctr, double ang) properties = INCLUDE|SOURCE; selected = 0; highlited = 0; + renderMode = Marker::SRC; dlist[0] = 8; dlist[1] = 3; @@ -123,6 +124,7 @@ Marker::Marker(Base* p, const Vector& ctr, properties = prop; selected = 0; highlited = 0; + renderMode = Marker::SRC; dlist[0] = dsh[0]; dlist[1] = dsh[1]; @@ -183,6 +185,7 @@ Marker::Marker(const Marker& a) properties = a.properties; selected = a.selected; highlited = a.highlited; + renderMode = a.renderMode; dlist[0] = a.dlist[0]; dlist[1] = a.dlist[1]; @@ -243,15 +246,15 @@ Marker::~Marker() } void Marker::x11(Drawable drawable, Coord::InternalSystem sys, - int tt, RenderMode mode, HandleMode hh) + int tt, HandleMode hh) { - if (hh==HANDLES) + if (hh==HANDLES && renderMode != Marker::XOR) renderXHandles(drawable); if (tt) - renderXText(drawable, sys, mode); + renderXText(drawable, sys, renderMode); - renderX(drawable, sys, mode); - renderXInclude(drawable, sys, mode); + renderX(drawable, sys, renderMode); + renderXInclude(drawable, sys, renderMode); } void Marker::renderXInclude(Drawable drawable, Coord::InternalSystem sys, diff --git a/tksao/frame/marker.h b/tksao/frame/marker.h index 3ebab25..ac3ca0f 100644 --- a/tksao/frame/marker.h +++ b/tksao/frame/marker.h @@ -66,6 +66,7 @@ protected: unsigned short properties; int selected; int highlited; + RenderMode renderMode; float dlist[2]; @@ -209,8 +210,7 @@ protected: virtual Vector fwdMap(const Vector&, Coord::InternalSystem); virtual Vector bckMap(const Vector&, Coord::InternalSystem); - virtual void x11(Drawable, Coord::InternalSystem, int, RenderMode, - HandleMode); + virtual void x11(Drawable, Coord::InternalSystem, int, HandleMode); virtual void ps(int,int); #ifdef MAC_OSX_TK virtual void macosx(int); @@ -287,6 +287,9 @@ protected: void toggleHighlite(); int isHighlited() {return highlited;} + void setRenderMode(RenderMode rr) {renderMode = rr;} + RenderMode getRenderMode() {return renderMode;} + void key(); void setColor(const char*); |