summaryrefslogtreecommitdiffstats
path: root/tksao/frame
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-03-13 15:52:18 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-03-13 15:52:18 (GMT)
commit233845c07587f8f078cc167831b94f2d4692dfcf (patch)
tree2fc19f6fe83cb5f4ee9b4d1c38113072c6f01c0a /tksao/frame
parent7bb419ae0262ed4c4f9f58cfa90da98f0faa7f70 (diff)
downloadblt-233845c07587f8f078cc167831b94f2d4692dfcf.zip
blt-233845c07587f8f078cc167831b94f2d4692dfcf.tar.gz
blt-233845c07587f8f078cc167831b94f2d4692dfcf.tar.bz2
simplify code
Diffstat (limited to 'tksao/frame')
-rw-r--r--tksao/frame/basefill.C77
-rw-r--r--tksao/frame/basefill.h19
-rw-r--r--tksao/frame/circle.C57
-rw-r--r--tksao/frame/circle.h2
-rw-r--r--tksao/frame/ellipse.C59
-rw-r--r--tksao/frame/ellipse.h2
6 files changed, 111 insertions, 105 deletions
diff --git a/tksao/frame/basefill.C b/tksao/frame/basefill.C
index 458ea12..4da1ae5 100644
--- a/tksao/frame/basefill.C
+++ b/tksao/frame/basefill.C
@@ -6,6 +6,8 @@
#include "basefill.h"
+// BaseFill
+
BaseFill::BaseFill(const BaseFill& a)
{
fill_ = a.fill_;
@@ -20,3 +22,78 @@ BaseFill::BaseFill(int ff)
{
fill_ =ff;
}
+
+// BaseFillEllipse
+
+BaseFillEllipse::BaseFillEllipse(const BaseFillEllipse& a) : BaseFill(a) {}
+
+BaseFillEllipse::BaseFillEllipse() : BaseFill() {}
+
+BaseFillEllipse::BaseFillEllipse(int ff) : BaseFill(ff) {}
+
+void BaseFillEllipse::renderXCircleDraw(Display* display, Drawable drawable,
+ GC lgc,
+ Vector& st, Vector& size,
+ int a1, int aa)
+{
+ if (fill_)
+ XFillArc(display, drawable, lgc, st[0], st[1], size[0], size[1], a1, aa);
+ else
+ XDrawArc(display, drawable, lgc, st[0], st[1], size[0], size[1], a1, aa);
+}
+
+void BaseFillEllipse::renderPSCircleDraw(Base* parent,
+ Vector& cc, double l,
+ float a1, float a2)
+{
+ ostringstream str;
+ str << "newpath "
+ << cc.TkCanvasPs(parent->getCanvas()) << ' '
+ << l << ' '
+ << a1 << ' ' << a2 << ' '
+ << "arc ";
+ if (fill_)
+ str << "fill";
+ else
+ str << "stroke";
+ str << endl << ends;
+
+ Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+}
+
+void BaseFillEllipse::renderPSEllipseArcDraw(Base* parent, Vector& center,
+ Vector& tt0, Vector& xx1,
+ Vector& xx2, Vector& tt1)
+{
+ ostringstream str;
+ if (fill_) {
+ Vector cc = parent->mapFromRef(center,Coord::CANVAS);
+
+ str << "newpath "
+ << tt0.TkCanvasPs(parent->getCanvas()) << ' '
+ << "moveto "
+ << xx1.TkCanvasPs(parent->getCanvas()) << ' '
+ << xx2.TkCanvasPs(parent->getCanvas()) << ' '
+ << tt1.TkCanvasPs(parent->getCanvas()) << ' '
+ << "curveto fill" << endl
+ << "newpath "
+ << cc.TkCanvasPs(parent->getCanvas()) << ' '
+ << "moveto "
+ << tt0.TkCanvasPs(parent->getCanvas()) << ' '
+ << "lineto "
+ << tt1.TkCanvasPs(parent->getCanvas()) << ' '
+ << "lineto closepath gsave" << endl
+ << "1 setlinejoin .75 setlinewidth stroke" << endl
+ << "grestore fill" << endl << ends;
+ }
+ else
+ str << "newpath "
+ << tt0.TkCanvasPs(parent->getCanvas()) << ' '
+ << "moveto "
+ << xx1.TkCanvasPs(parent->getCanvas()) << ' '
+ << xx2.TkCanvasPs(parent->getCanvas()) << ' '
+ << tt1.TkCanvasPs(parent->getCanvas()) << ' '
+ << "curveto stroke" << endl << ends;
+
+ Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+}
diff --git a/tksao/frame/basefill.h b/tksao/frame/basefill.h
index 4b586c1..f50adcf 100644
--- a/tksao/frame/basefill.h
+++ b/tksao/frame/basefill.h
@@ -5,10 +5,16 @@
#ifndef __basefill_h__
#define __basefill_h__
+#include "vector.h"
+#include "base.h"
+
class BaseFill {
protected:
int fill_;
+ protected:
+ void doit();
+
public:
BaseFill();
BaseFill(int);
@@ -18,4 +24,17 @@ class BaseFill {
int getFill() {return fill_;}
};
+class BaseFillEllipse : public BaseFill {
+ protected:
+ void renderXCircleDraw(Display*, Drawable, GC, Vector&, Vector&, int, int);
+ void renderPSCircleDraw(Base*, Vector&, double, float, float);
+ void renderPSEllipseArcDraw(Base*, Vector&, Vector&, Vector&,
+ Vector&, Vector&);
+
+ public:
+ BaseFillEllipse();
+ BaseFillEllipse(int);
+ BaseFillEllipse(const BaseFillEllipse& a);
+};
+
#endif
diff --git a/tksao/frame/circle.C b/tksao/frame/circle.C
index 3ea410f..3015d07 100644
--- a/tksao/frame/circle.C
+++ b/tksao/frame/circle.C
@@ -7,10 +7,10 @@
#include "circle.h"
#include "fitsimage.h"
-Circle::Circle(const Circle& a) : BaseEllipse(a), BaseFill(a) {}
+Circle::Circle(const Circle& a) : BaseEllipse(a), BaseFillEllipse(a) {}
Circle::Circle(Base* p, const Vector& ctr, double r, int fill)
- : BaseEllipse(p, ctr, 0), BaseFill(fill)
+ : BaseEllipse(p, ctr, 0), BaseFillEllipse(fill)
{
numAnnuli_ = 1;
annuli_ = new Vector[1];
@@ -29,7 +29,7 @@ Circle::Circle(Base* p, const Vector& ctr,
unsigned short prop, const char* cmt,
const List<Tag>& tg, const List<CallBack>& cb)
: BaseEllipse(p, ctr, 0, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb),
- BaseFill(fill)
+ BaseFillEllipse(fill)
{
numAnnuli_ = 1;
annuli_ = new Vector[numAnnuli_];
@@ -58,63 +58,18 @@ void Circle::renderXCircleDraw(Drawable drawable, GC lgc,
Vector& st, Vector& size,
int a1, int aa)
{
- if (fill_)
- XFillArc(display, drawable, lgc, st[0], st[1], size[0], size[1], a1, aa);
- else
- XDrawArc(display, drawable, lgc, st[0], st[1], size[0], size[1], a1, aa);
+ BaseFillEllipse::renderXCircleDraw(display, drawable, lgc, st, size, a1, aa);
}
void Circle::renderPSCircleDraw(Vector& cc, double l, float a1, float a2)
{
- ostringstream str;
- str << "newpath "
- << cc.TkCanvasPs(parent->canvas) << ' '
- << l << ' '
- << a1 << ' ' << a2 << ' '
- << "arc ";
- if (fill_)
- str << "fill";
- else
- str << "stroke";
- str << endl << ends;
-
- Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+ BaseFillEllipse::renderPSCircleDraw(parent, cc, l, a1, a2);
}
void Circle::renderPSEllipseArcDraw(Vector& tt0, Vector& xx1,
Vector& xx2, Vector& tt1)
{
- ostringstream str;
- if (fill_) {
- Vector cc = parent->mapFromRef(center,Coord::CANVAS);
-
- str << "newpath "
- << tt0.TkCanvasPs(parent->canvas) << ' '
- << "moveto "
- << xx1.TkCanvasPs(parent->canvas) << ' '
- << xx2.TkCanvasPs(parent->canvas) << ' '
- << tt1.TkCanvasPs(parent->canvas) << ' '
- << "curveto fill" << endl
- << "newpath "
- << cc.TkCanvasPs(parent->canvas) << ' '
- << "moveto "
- << tt0.TkCanvasPs(parent->canvas) << ' '
- << "lineto "
- << tt1.TkCanvasPs(parent->canvas) << ' '
- << "lineto closepath gsave" << endl
- << "1 setlinejoin .75 setlinewidth stroke" << endl
- << "grestore fill" << endl << ends;
- }
- else
- str << "newpath "
- << tt0.TkCanvasPs(parent->canvas) << ' '
- << "moveto "
- << xx1.TkCanvasPs(parent->canvas) << ' '
- << xx2.TkCanvasPs(parent->canvas) << ' '
- << tt1.TkCanvasPs(parent->canvas) << ' '
- << "curveto stroke" << endl << ends;
-
- Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+ BaseFillEllipse::renderPSEllipseArcDraw(parent, center, tt0, xx1, xx2, tt1);
}
void Circle::analysis(AnalysisTask mm, int which)
diff --git a/tksao/frame/circle.h b/tksao/frame/circle.h
index c59de03..1d7ff77 100644
--- a/tksao/frame/circle.h
+++ b/tksao/frame/circle.h
@@ -8,7 +8,7 @@
#include "baseellipse.h"
#include "basefill.h"
-class Circle : public BaseEllipse, public BaseFill {
+class Circle : public BaseEllipse, public BaseFillEllipse {
protected:
void renderXCircleDraw(Drawable, GC, Vector&, Vector&, int, int);
void renderPSCircleDraw(Vector& cc, double l, float a1, float a2);
diff --git a/tksao/frame/ellipse.C b/tksao/frame/ellipse.C
index e6d3a9c..7992090 100644
--- a/tksao/frame/ellipse.C
+++ b/tksao/frame/ellipse.C
@@ -7,11 +7,11 @@
#include "ellipse.h"
#include "fitsimage.h"
-Ellipse::Ellipse(const Ellipse& a) : BaseEllipse(a), BaseFill(a) {}
+Ellipse::Ellipse(const Ellipse& a) : BaseEllipse(a), BaseFillEllipse(a) {}
Ellipse::Ellipse(Base* p, const Vector& ctr, const Vector& r,
double ang, int fill)
- : BaseEllipse(p, ctr, ang), BaseFill(fill)
+ : BaseEllipse(p, ctr, ang), BaseFillEllipse(fill)
{
numAnnuli_ = 1;
annuli_ = new Vector[1];
@@ -30,7 +30,7 @@ Ellipse::Ellipse(Base* p, const Vector& ctr,
unsigned short prop, const char* cmt,
const List<Tag>& tg, const List<CallBack>& cb)
: BaseEllipse(p, ctr, ang, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb),
- BaseFill(fill)
+ BaseFillEllipse(fill)
{
numAnnuli_ = 1;
annuli_ = new Vector[1];
@@ -46,63 +46,18 @@ void Ellipse::renderXCircleDraw(Drawable drawable, GC lgc,
Vector& st, Vector& size,
int a1, int aa)
{
- if (fill_)
- XFillArc(display, drawable, lgc, st[0], st[1], size[0], size[1], a1, aa);
- else
- XDrawArc(display, drawable, lgc, st[0], st[1], size[0], size[1], a1, aa);
+ BaseFillEllipse::renderXCircleDraw(display, drawable, lgc, st, size, a1, aa);
}
void Ellipse::renderPSCircleDraw(Vector& cc, double l, float a1, float a2)
{
- ostringstream str;
- str << "newpath "
- << cc.TkCanvasPs(parent->canvas) << ' '
- << l << ' '
- << a1 << ' ' << a2 << ' '
- << "arc ";
- if (fill_)
- str << "fill";
- else
- str << "stroke";
- str << endl << ends;
-
- Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+ BaseFillEllipse::renderPSCircleDraw(parent, cc, l, a1, a2);
}
void Ellipse::renderPSEllipseArcDraw(Vector& tt0, Vector& xx1,
- Vector& xx2, Vector& tt1)
+ Vector& xx2, Vector& tt1)
{
- ostringstream str;
- if (fill_) {
- Vector cc = parent->mapFromRef(center,Coord::CANVAS);
-
- str << "newpath "
- << tt0.TkCanvasPs(parent->canvas) << ' '
- << "moveto "
- << xx1.TkCanvasPs(parent->canvas) << ' '
- << xx2.TkCanvasPs(parent->canvas) << ' '
- << tt1.TkCanvasPs(parent->canvas) << ' '
- << "curveto fill" << endl
- << "newpath "
- << cc.TkCanvasPs(parent->canvas) << ' '
- << "moveto "
- << tt0.TkCanvasPs(parent->canvas) << ' '
- << "lineto "
- << tt1.TkCanvasPs(parent->canvas) << ' '
- << "lineto closepath gsave" << endl
- << "1 setlinejoin .75 setlinewidth stroke" << endl
- << "grestore fill" << endl << ends;
- }
- else
- str << "newpath "
- << tt0.TkCanvasPs(parent->canvas) << ' '
- << "moveto "
- << xx1.TkCanvasPs(parent->canvas) << ' '
- << xx2.TkCanvasPs(parent->canvas) << ' '
- << tt1.TkCanvasPs(parent->canvas) << ' '
- << "curveto stroke" << endl << ends;
-
- Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+ BaseFillEllipse::renderPSEllipseArcDraw(parent, center, tt0, xx1, xx2, tt1);
}
void Ellipse::edit(const Vector& v, int h)
diff --git a/tksao/frame/ellipse.h b/tksao/frame/ellipse.h
index 27d6184..25bf115 100644
--- a/tksao/frame/ellipse.h
+++ b/tksao/frame/ellipse.h
@@ -8,7 +8,7 @@
#include "baseellipse.h"
#include "basefill.h"
-class Ellipse : public BaseEllipse, public BaseFill {
+class Ellipse : public BaseEllipse, public BaseFillEllipse {
protected:
void renderXCircleDraw(Drawable, GC, Vector&, Vector&, int, int);
void renderPSCircleDraw(Vector& cc, double l, float a1, float a2);