summaryrefslogtreecommitdiff
path: root/amiga/iff_dr2d.h
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2009-05-19 07:23:56 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2009-05-19 07:23:56 +0000
commit6f120338edb03bbdf7224f1b4d5560caf61bb002 (patch)
tree90161e3be8f111dc224a0c1b0c98e61098abeee1 /amiga/iff_dr2d.h
parentefe2151c9a1d811b7b28d2f8c169688e7615ea11 (diff)
downloadnetsurf-6f120338edb03bbdf7224f1b4d5560caf61bb002.tar.gz
netsurf-6f120338edb03bbdf7224f1b4d5560caf61bb002.tar.bz2
Add ability to copy SVGs to the clipboard and save in IFF DR2D format.
svn path=/trunk/netsurf/; revision=7523
Diffstat (limited to 'amiga/iff_dr2d.h')
-rw-r--r--amiga/iff_dr2d.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/amiga/iff_dr2d.h b/amiga/iff_dr2d.h
new file mode 100644
index 000000000..19286a62b
--- /dev/null
+++ b/amiga/iff_dr2d.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2009 Chris Young <chris@unsatisfactorysoftware.co.uk>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf 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; version 2 of the License.
+ *
+ * NetSurf 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef WITH_NS_SVG
+#ifndef AMIGA_IFF_DR2D_H
+#define AMIGA_IFF_DR2D_H
+#include <proto/iffparse.h>
+#include <datatypes/pictureclass.h>
+#include <stdbool.h>
+#ifndef AMIGA_DR2D_STANDALONE
+#include "content/content.h"
+#endif
+
+#define ID_DR2D MAKE_ID('D','R','2','D')
+#define ID_DRHD MAKE_ID('D','R','H','D')
+#define ID_ATTR MAKE_ID('A','T','T','R')
+#define ID_CPLY MAKE_ID('C','P','L','Y')
+#define ID_OPLY MAKE_ID('O','P','L','Y')
+#define ID_STXT MAKE_ID('S','T','X','T')
+#define ID_DASH MAKE_ID('D','A','S','H')
+//#define ID_CMAP MAKE_ID('C','M','A','P') in dt/pictureclass
+//#define ID_NAME MAKE_ID('N','A','M','E') in dt/datatypes
+#define ID_ANNO MAKE_ID('A','N','N','O')
+#define ID_FONS MAKE_ID('F','O','N','S')
+
+struct drhd_struct {
+ float XLeft, YTop, XRight, YBot;
+};
+
+struct poly_struct {
+ USHORT NumPoints;
+// float PolyPoints[]; // 2*numpoints
+};
+
+#define INDICATOR 0xFFFFFFFF
+#define IND_SPLINE 0x00000001
+#define IND_MOVETO 0x00000002
+#define IND_CURVE 0x00000001
+
+struct fons_struct {
+ UBYTE FontID; /* ID the font is referenced by */
+ UBYTE Pad1; /* Always 0 */
+ UBYTE Proportional; /* Is it proportional? */
+ UBYTE Serif; /* does it have serifs? */
+};
+
+struct stxt_struct {
+ UBYTE Pad0; /* Always 0 (for future expansion) */
+ UBYTE WhichFont; /* Which font to use */
+ float CharW, CharH, /* W/H of an individual char */
+ BaseX, BaseY, /* Start of baseline */
+ Rotation; /* Angle of text (in degrees) */
+ uint16 NumChars;
+ //char TextChars[NumChars];
+};
+
+/* Various fill types */
+#define FT_NONE 0 /* No fill */
+#define FT_COLOR 1 /* Fill with color from palette */
+#define FT_OBJECTS 2 /* Fill with tiled objects */
+
+struct attr_struct {
+ UBYTE FillType; /* One of FT_*, above */
+ UBYTE JoinType; /* One of JT_*, below */
+ UBYTE DashPattern; /* ID of edge dash pattern */
+ UBYTE ArrowHead; /* ID of arrowhead to use */
+ USHORT FillValue; /* Color or object with which to fill */
+ USHORT EdgeValue; /* Edge color index */
+ USHORT WhichLayer; /* ID of layer it's in */
+ float EdgeThick; /* Line width */
+};
+
+/* Join types */
+#define JT_NONE 0 /* Don't do line joins */
+#define JT_MITER 1 /* Mitered join */
+#define JT_BEVEL 2 /* Beveled join */
+#define JT_ROUND 3 /* Round join */
+
+struct dash_struct {
+ USHORT DashID; /* ID of the dash pattern */
+ USHORT NumDashes; /* Should always be even */
+// IEEE Dashes[NumDashes]; /* On-off pattern */
+};
+
+bool ami_svg_to_dr2d(struct IFFHandle *iffh,char *buffer, uint32 size, char *url);
+#ifndef AMIGA_DR2D_STANDALONE
+bool ami_save_svg(struct content *c,char *filename);
+#endif
+#endif // AMIGA_IFF_DR2D_H
+#endif // WITH_NS_SVG