aboutsummaryrefslogtreecommitdiff
path: root/generic/Attrs.h
blob: 85583fd99c957730023cb992b2f67bdd0b0d77c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
 * Attrs.h -- Header for the attribute manipulation routines.
 *
 * Authors		: Patrick Lecoanet.
 * Creation date	: Fri Dec 31 10:06:37 1999
 *
 * $Id$
 */

/*
 *  Copyright (c) 1993 - 1999 CENA, Patrick Lecoanet --
 *
 * This code is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This code 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this code; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */


#ifndef _Attrs_h
#define _Attrs_h

#ifdef __CPLUSPLUS__
extern "C" {
#endif


#include <Types.h>
  

/*
 * Label Formats.
 */
  
/*
 * field flags.
 */
#define	LF_ATTACH_PIXEL	0
#define	LF_ATTACH_FWD	1
#define	LF_ATTACH_BWD	2
#define	LF_ATTACH_LEFT	3	/* Align left on left or top on top */
#define	LF_ATTACH_RIGHT	4	/* Align right on right or bottom on bottom */

#define LF_DIM_PIXEL	0
#define	LF_DIM_FONT	1
#define	LF_DIM_ICON	2
#define LF_DIM_AUTO	3
#define LF_DIM_LABEL	4
  
typedef struct {
  int		x_spec;
  int		y_spec;
  short		width_spec;
  short		height_spec;
  char		x_attach;
  char		y_attach;
  char		x_dim;
  char		y_dim;
} ZnFieldFormatStruct, *ZnFieldFormat;

typedef struct {
  short		clip_width;
  short		clip_height;
  int		num_fields;
  Tcl_HashEntry	*entry;
  int		ref_count;
  ZnFieldFormatStruct fields[1];
} ZnLabelFormatStruct, *ZnLabelFormat;


ZnLabelFormat
LabelFormatCreate(Tcl_Interp	* /* interp */,
		  char		* /* format_str */,
		  int		/* num_fields */);
ZnLabelFormat
LabelFormatDuplicate(ZnLabelFormat	/* label_format */);
void
LabelFormatDelete(ZnLabelFormat	/* label_format */);
char *
LabelFormatGetString(ZnLabelFormat	/* label_format */);
ZnBool
LabelFormatGetClipBox(ZnLabelFormat	/* label_format */,
		      ZnDim		*/* width */,
		      ZnDim		*/* height */);
#define LabelFormatNumFields(lf)	((lf)->num_fields)
void
LabelFormatGetField(ZnLabelFormat	/* label_format */,
		    int		/* field */,
		    char	*/* x_attach */,
		    char	*/* y_attach */,
		    char	*/* x_dim */,
		    char	*/* y_dim */,
		    int		*/* x_spec */,
		    int		*/* y_spec */,
		    short	*/* width_spec */,
		    short	*/* height_spec */);

/*
 * Line Ends.
 */
typedef struct {
  ZnReal	shape_a;
  ZnReal	shape_b;
  ZnReal	shape_c;
  Tcl_HashEntry	*entry;
  int		ref_count;
} ZnLineEndStruct, *ZnLineEnd;

ZnLineEnd
LineEndCreate(Tcl_Interp	*interp,
	      char		*line_end_str);
ZnLineEnd
LineEndDuplicate(ZnLineEnd	le);
void
LineEndDelete(ZnLineEnd	le);
char *
LineEndGetString(ZnLineEnd	le);

  
#ifdef __CPLUSPLUS__
}
#endif

#endif	/* _Attrs_h */