From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- graphics/epix/label_data.h | 97 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 graphics/epix/label_data.h (limited to 'graphics/epix/label_data.h') diff --git a/graphics/epix/label_data.h b/graphics/epix/label_data.h new file mode 100644 index 0000000000..53ccd0abe5 --- /dev/null +++ b/graphics/epix/label_data.h @@ -0,0 +1,97 @@ +/* + * label_data.h -- ePiX::label_data class + * + * This file is part of ePiX, a C++ library for creating high-quality + * figures in LaTeX + * + * Version 1.1.18 + * Last Change: September 16, 2007 + */ + +/* + * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 + * Andrew D. Hwang + * Department of Mathematics and Computer Science + * College of the Holy Cross + * Worcester, MA, 01610-2395, USA + */ + +/* + * ePiX 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. + * + * ePiX is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + * License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ePiX; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * label_data comprises spatial location, screen offsets, text (contents), + * mark type, and a label_style (q.v.). label_data can be constructed from + * string-valued functions of position; examples are given below. + */ + +#ifndef EPIX_LABEL +#define EPIX_LABEL + +#include + +#include "enums.h" +#include "triples.h" + +#include "pairs.h" + +#include "marker_style.h" +#include "label_style.h" + +namespace ePiX { + + class Camera; + class Color; + class screen; + + class label_data { + public: + label_data(const P& here, const P& offset, + const std::string& text, epix_mark_type mark=TEXT); + + // generate label text from user-specified function of 2 or 3 variables + label_data(const P& here, const P& offset, + std::string f(double,double), epix_mark_type mark=TEXT); + + label_data(const P& here, const P& offset, + std::string f(double,double,double), epix_mark_type mark=TEXT); + + // marker; alignment affects only TICK marks + label_data(const P& here, epix_mark_type mark, epix_label_posn align=c); + + // pass through to m_style + label_data& text_color(const Color&); + label_data& mask_color(const Color&); + label_data& align_to(epix_label_posn); + + void draw() const; + + private: + P m_here; + pair m_offset; + + std::string m_text; + epix_mark_type m_mark; + + marker_sizes m_sizes; + label_state m_style; + + bool m_seen; + }; // end of label_data class + +} // end of namespace + +#endif /* EPIX_LABEL */ -- cgit v1.2.3