From 91207d32f032b200bcadc5fa569521212b68b20e Mon Sep 17 00:00:00 2001
From: kramm <kramm>
Date: Sun, 6 Apr 2003 21:03:55 +0000
Subject: [PATCH] tangent interpolation method added and activated by default.

---
 pdf2swf/spline.cc |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/pdf2swf/spline.cc b/pdf2swf/spline.cc
index 37591be..5993c78 100644
--- a/pdf2swf/spline.cc
+++ b/pdf2swf/spline.cc
@@ -336,6 +336,9 @@ void qsplines_getdrawpoints(qspline*s, int num, float**p, int*pnum, double acc)
     *p = positions;
 }
 
+
+#define TANGENTS
+
 int approximate2(struct cspline*s, struct qspline*q, double quality, double start, double end)
 {
     int num=0;
@@ -349,6 +352,23 @@ int approximate2(struct cspline*s, struct qspline*q, double quality, double star
     test.control = cspline_getpoint(s, (start+end)/2);
     test.end = cspline_getpoint(s, end);
     fixcp(&test);
+
+#ifdef TANGENTS
+    if(start< 0.5) {
+	test.control = cspline_getderivative(s, start);
+	test.control.x *= (end-start)/2;
+	test.control.y *= (end-start)/2;
+	test.control.x += test.start.x;
+	test.control.y += test.start.y;
+    } else {
+	test.control = cspline_getderivative(s, end);
+	test.control.x *= -(end-start)/2;
+	test.control.y *= -(end-start)/2;
+	test.control.x += test.end.x;
+	test.control.y += test.end.y;
+    }
+#endif
+
     for(t=0;t<probes;t++) {
 	double pos = 0.5/(probes*2)*(t*2+1);
 	qr1 = qspline_getpoint(&test, pos);
-- 
1.7.10.4