summaryrefslogtreecommitdiffstats
path: root/tksao
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2019-08-08 20:10:24 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2019-08-08 20:10:24 (GMT)
commit84b475d6f6ef32461040a450821f62823b6e0300 (patch)
treeb45e51b746fb449bed1390f156b2ba4aa13359b9 /tksao
parent791fb8b344212d10904c2b2462713ddb86879970 (diff)
downloadblt-84b475d6f6ef32461040a450821f62823b6e0300.zip
blt-84b475d6f6ef32461040a450821f62823b6e0300.tar.gz
blt-84b475d6f6ef32461040a450821f62823b6e0300.tar.bz2
simplify code
Diffstat (limited to 'tksao')
-rw-r--r--tksao/frame/base.C2
-rw-r--r--tksao/frame/base.h8
-rw-r--r--tksao/frame/composite.C8
-rw-r--r--tksao/frame/composite.h2
-rw-r--r--tksao/frame/frmarker.C170
-rw-r--r--tksao/frame/marker.C13
-rw-r--r--tksao/frame/marker.h7
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*);