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
18extern "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