1/* $Id$ $Revision$ */
2/* vim:set shiftwidth=4 ts=8: */
3
4/*************************************************************************
5 * Copyright (c) 2011 AT&T Intellectual Property
6 * All rights reserved. This program and the accompanying materials
7 * are made available under the terms of the Eclipse Public License v1.0
8 * which accompanies this distribution, and is available at
9 * http://www.eclipse.org/legal/epl-v10.html
10 *
11 * Contributors: See CVS logs. Details at http://www.graphviz.org/
12 *************************************************************************/
13
14#ifndef USERSHAPE_H
15#define USERSHAPE_H
16
17#include "cdt.h"
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23 typedef enum { FT_NULL,
24 FT_BMP, FT_GIF, FT_PNG, FT_JPEG,
25 FT_PDF, FT_PS, FT_EPS, FT_SVG, FT_XML,
26 FT_RIFF, FT_WEBP, FT_ICO, FT_TIFF
27 } imagetype_t;
28
29 typedef enum {
30 IMAGESCALE_FALSE, /* no image scaling */
31 IMAGESCALE_TRUE, /* scale image to fit but keep aspect ratio */
32 IMAGESCALE_WIDTH, /* scale image width to fit, keep height fixed */
33 IMAGESCALE_HEIGHT, /* scale image height to fit, keep width fixed */
34 IMAGESCALE_BOTH /* scale image to fit without regard for aspect ratio */
35 } imagescale_t;
36
37 typedef enum {
38 IMAGEPOS_TOP_LEFT, /* top left */
39 IMAGEPOS_TOP_CENTER, /* top center */
40 IMAGEPOS_TOP_RIGHT, /* top right */
41 IMAGEPOS_MIDDLE_LEFT, /* middle left */
42 IMAGEPOS_MIDDLE_CENTER, /* middle center (true center, the default)*/
43 IMAGEPOS_MIDDLE_RIGHT, /* middle right */
44 IMAGEPOS_BOTTOM_LEFT, /* bottom left */
45 IMAGEPOS_BOTTOM_CENTER, /* bottom center */
46 IMAGEPOS_BOTTOM_RIGHT /* bottom right */
47 } imagepos_t;
48
49 typedef struct usershape_s usershape_t;
50
51 struct usershape_s {
52 Dtlink_t link;
53 const char *name;
54 int macro_id;
55 boolean must_inline;
56 boolean nocache;
57 FILE *f;
58 imagetype_t type;
59 char *stringtype;
60 int x, y, w, h, dpi;
61 void *data; /* data loaded by a renderer */
62 size_t datasize; /* size of data (if mmap'ed) */
63 void (*datafree)(usershape_t *us); /* renderer's function for freeing data */
64 };
65
66#ifdef __cplusplus
67}
68#endif
69#endif
70