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 TEXTSPAN_H
15 #define TEXTSPAN_H
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 /* Bold, Italic, Underline, Sup, Sub, Strike */
22 /* Stored in textfont_t.flags, which is 7 bits, so full */
23 /* Probably should be moved to textspan_t */
24 #define HTML_BF   (1 << 0)
25 #define HTML_IF   (1 << 1)
26 #define HTML_UL   (1 << 2)
27 #define HTML_SUP  (1 << 3)
28 #define HTML_SUB  (1 << 4)
29 #define HTML_S    (1 << 5)
30 #define HTML_OL   (1 << 6)
31 
32     typedef struct _PostscriptAlias {
33         char* name;
34         char* family;
35         char* weight;
36         char* stretch;
37         char* style;
38         int xfig_code;
39 	char* svg_font_family;
40 	char* svg_font_weight;
41 	char* svg_font_style;
42     } PostscriptAlias;
43 
44     /* font information
45      * If name or color is NULL, or size < 0, that attribute
46      * is unspecified.
47      */
48     typedef struct {
49 	char*  name;
50 	char*  color;
51 	PostscriptAlias *postscript_alias;
52 	double size;
53 	unsigned int flags:7;  /* HTML_UL, HTML_IF, HTML_BF, etc. */
54 	unsigned int cnt:(sizeof(unsigned int) * 8 - 7);   /* reference count */
55     } textfont_t;
56 
57     /* atomic unit of text emitted using a single htmlfont_t */
58     typedef struct {
59 	char *str;      /* stored in utf-8 */
60 	textfont_t *font;
61 	void *layout;
62 	void (*free_layout) (void *layout);   /* FIXME - this is ugly */
63 	double yoffset_layout, yoffset_centerline;
64  	pointf size;
65 	char just;	/* 'l' 'n' 'r' */ /* FIXME */
66     } textspan_t;
67 
68 #ifdef __cplusplus
69 }
70 #endif
71 #endif
72