summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/drawlabel.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/asymptote/drawlabel.h')
-rw-r--r--Build/source/utils/asymptote/drawlabel.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/drawlabel.h b/Build/source/utils/asymptote/drawlabel.h
new file mode 100644
index 00000000000..e631f04a55a
--- /dev/null
+++ b/Build/source/utils/asymptote/drawlabel.h
@@ -0,0 +1,90 @@
+/*****
+ * drawlabel.h
+ * John Bowman 2003/03/14
+ *
+ * Add a label to a picture.
+ *****/
+
+#ifndef DRAWLABEL_H
+#define DRAWLABEL_H
+
+#include "drawelement.h"
+#include "path.h"
+#include "angle.h"
+#include "transform.h"
+
+namespace camp {
+
+class drawLabel : public virtual drawElement {
+protected:
+ string label,size;
+ transform T; // A linear (shiftless) transformation.
+ pair position;
+ pair align;
+ pair scale;
+ pen pentype;
+ double width,height,depth;
+ bool havebounds;
+ bool suppress;
+ pair Align;
+ pair texAlign;
+ bbox Box;
+ bool enabled;
+
+public:
+ drawLabel(string label, string size, transform T, pair position,
+ pair align, pen pentype, const string& key="")
+ : drawElement(key), label(label), size(size), T(shiftless(T)),
+ position(position), align(align), pentype(pentype), width(0.0),
+ height(0.0), depth(0.0), havebounds(false), suppress(false),
+ enabled(false) {}
+
+ virtual ~drawLabel() {}
+
+ void getbounds(iopipestream& tex, const string& texengine);
+
+ void checkbounds();
+
+ void bounds(bbox& b, iopipestream&, boxvector&, bboxlist&);
+
+ bool islabel() {
+ return true;
+ }
+
+ bool write(texfile *out, const bbox&);
+
+ drawElement *transformed(const transform& t);
+
+ void labelwarning(const char *action);
+};
+
+class drawLabelPath : public drawLabel, public drawPathPenBase {
+private:
+ string justify;
+ pair shift;
+public:
+ drawLabelPath(string label, string size, path src,
+ string justify, pair shift, pen pentype,
+ const string& key="") :
+ drawLabel(label,size,identity,pair(0.0,0.0),pair(0.0,0.0),pentype,key),
+ drawPathPenBase(src,pentype), justify(justify), shift(shift) {}
+
+ virtual ~drawLabelPath() {}
+
+ bool svg() {return true;}
+ bool svgpng() {return true;}
+
+ void bounds(bbox& b, iopipestream& tex, boxvector&, bboxlist&);
+
+ bool write(texfile *out, const bbox&);
+
+ drawElement *transformed(const transform& t);
+};
+
+void setpen(iopipestream& tex, const string& texengine, const pen& pentype);
+void texbounds(double& width, double& height, double& depth,
+ iopipestream& tex, string& s);
+
+}
+
+#endif