summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/drawclipend.h
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-05-16 00:19:13 +0000
committerKarl Berry <karl@freefriends.org>2009-05-16 00:19:13 +0000
commitbab45528d65eaafe68a705dbb2a57075c7b7cbd8 (patch)
tree10b4ae2b5195c8dede153ab89359ec00f55f325f /Build/source/utils/asymptote/drawclipend.h
parent8643d90372e9c31e0f461c15c596b60a545bd7d3 (diff)
asymptote 1.72 sources (not integrated into build yet)
git-svn-id: svn://tug.org/texlive/trunk@13110 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/drawclipend.h')
-rw-r--r--Build/source/utils/asymptote/drawclipend.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/drawclipend.h b/Build/source/utils/asymptote/drawclipend.h
new file mode 100644
index 00000000000..d6b2ef33199
--- /dev/null
+++ b/Build/source/utils/asymptote/drawclipend.h
@@ -0,0 +1,65 @@
+/*****
+ * drawclipend.h
+ * John Bowman
+ *
+ * End clip of picture to specified path.
+ *****/
+
+#ifndef DRAWCLIPEND_H
+#define DRAWCLIPEND_H
+
+#include "drawclipbegin.h"
+#include "path.h"
+
+namespace camp {
+
+class drawClipEnd : public drawElement {
+ bool grestore;
+ drawClipBegin *partner;
+public:
+ drawClipEnd(bool grestore=true, drawClipBegin *partner=NULL) :
+ grestore(grestore), partner(partner) {}
+
+ virtual ~drawClipEnd() {}
+
+ bool endclip() {return true;}
+
+ void bounds(bbox& b, iopipestream&, boxvector&, bboxlist& bboxstack) {
+ if(bboxstack.size() < 2)
+ reportError("endclip without matching beginclip");
+ b.clip(bboxstack.back());
+ bboxstack.pop_back();
+ b += bboxstack.back();
+ bboxstack.pop_back();
+ }
+
+ bool endgroup() {return true;}
+
+ void save(bool b) {
+ grestore=b;
+ if(partner) partner->save(b);
+ }
+
+ bool draw(psfile *out) {
+ if(grestore) out->grestore();
+ return true;
+ }
+
+ bool write(texfile *out, const bbox& bpath) {
+ out->verbatimline(settings::endpicture(out->texengine));
+ out->verbatim("\\kern");
+ double width=bpath.right-bpath.left;
+ out->write(-width*ps2tex);
+ out->verbatim(settings::texunits(out->texengine));
+ out->verbatimline("%");
+ if(grestore) out->grestore();
+ return true;
+ }
+
+};
+
+}
+
+GC_DECLARE_PTRFREE(camp::drawClipEnd);
+
+#endif