summaryrefslogtreecommitdiff
path: root/graphics/epix/samples/std_F.cc
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/epix/samples/std_F.cc')
-rw-r--r--graphics/epix/samples/std_F.cc124
1 files changed, 0 insertions, 124 deletions
diff --git a/graphics/epix/samples/std_F.cc b/graphics/epix/samples/std_F.cc
deleted file mode 100644
index 9ccd7b90c6..0000000000
--- a/graphics/epix/samples/std_F.cc
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * std_F.cc -- The std_F class definitions
- *
- * Last Change: September 23, 2007
- */
-// Include only the headers we need; burdensome, but generally more
-// efficient for larger projects with many dependencies.
-#ifdef MINIMAL
-#include "epix/affine.h"
-#include "epix/Color.h"
-#include "epix/curves.h"
-#include "epix/pairs.h"
-#include "epix/path.h"
-#include "epix/state.h"
-#include "epix/triples.h"
-
-#else
-#include "epix.h"
-#endif
-
-#include "epix/paint_style.h"
-#include "std_F.h"
-
-namespace ePiX {
-
- // The constructor initializes the class data, ensuring objects are
- // well-formed. For efficiency, we use "initialization" instead of
- // assignment (the "=" operator); this way, data members get their
- // actual values immediately. The constructor body is empty, since
- // this class requires no further initialization.
-
- // All class member function definitions must be qualified with the
- // class name, here "std_F::"
- std_F::std_F()
- : m_loc(0,0), m_e1(1,0), m_e2(0,1),
- m_fore(Black()), m_back(White()),
- m_edge(Black()), m_edge_width(0.4) { }
-
- // Apply the affine map af; return a reference to this object so
- // calls can be daisy-chained. Note the efficiency of storing only
- // the bare minimum data to specify an affine map rather than
- // holding and manipulating the shape of an F.
- std_F& std_F::map_by(const affine& af)
- {
- m_loc = af(m_loc); // affines map locations, so this works
- m_e1 = af(m_e1);
- m_e2 = af(m_e2);
-
- return *this;
- }
-
- // Set the background and foreground colors. Arguments' names chosen
- // to indicate their purpose.
- std_F& std_F::backing(const Color& back)
- {
- m_back = back;
- return *this;
- }
-
- std_F& std_F::fill(const Color& fore)
- {
- m_fore = fore;
- return *this;
- }
-
- // Set outline parameters.
- std_F& std_F::border(const Color& edge, double wid)
- {
- m_edge = edge;
- m_edge_width = wid;
- return *this;
- }
-
- // Draw in the active screen. Most of the "real work" is done here.
- void std_F::draw() const
- {
- // Get global drawing state, so we can restore before returning.
- // Not particularly elegant, but it's what we have to work with.
- Color old_fill(the_paint_style().fill_color());
- bool old_flag(the_paint_style().fill_flag());
-
- Color old_line(the_paint_style().line_color());
- length old_line_width(the_paint_style().line_width());
-
- // now we can draw
- const double r(1.0/6.0);
-
- path F;
-
- // pr converts coords in [0,1] x [0,1] to our coords
- F .pt(pr(r, 0.75*r)).pt(pr(2*r, 0.75*r)).pt(pr(2*r, 2.25*r))
- .pt(pr(4*r, 2.25*r)).pt(pr(4*r, 3.25*r)).pt(pr(2*r, 3.25*r))
- .pt(pr(2*r, 4.25*r)).pt(pr(5*r, 4.25*r)).pt(pr(5*r, 5.25*r))
- .pt(pr( r, 5.25*r));
-
- F.close().fill();
-
- // Set global drawing state. We have a member function named fill,
- // so the call must be explicitly qualified with "ePiX::".
- ePiX::fill(m_back);
- ePiX::pen(m_edge, m_edge_width);
-
- // Bounding parallelogram
- ePiX::quad(pr(0,0), pr(1,0), pr(1,1), pr(0,1));
-
- ePiX::fill(m_fore);
- F.draw();
- // Restore global fill state.
- the_paint_style().fill_color(old_fill);
- the_paint_style().fill_flag(old_flag);
-
- the_paint_style().line_color(old_line);
- the_paint_style().line_width(old_line_width);
- }
-
- // private; convert (x,y) to a location usable in path construction
- // "Privacy" is enforced by the compiler from reading the header;
- // the definition requires no special syntax.
- P std_F::pr(double x, double y) const
- {
- pair loc((1 - x -y)*m_loc + x*m_e1 + y*m_e2);
- return P(loc.x1(), loc.x2());
- }
-} // end of namespace