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
135
136
137
138
139
140
141
142
143
144
|
/*
* Draw.h -- Header for common drawing routines.
*
* Authors : Patrick Lecoanet.
* Creation date : Sat Dec 10 12:51:30 1994
*
* $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 _Draw_h
#define _Draw_h
#include "List.h"
#include "Types.h"
#include "Color.h"
#include "Attrs.h"
#include <X11/Xlib.h>
#define LIGHTNING_POINTS 4
#define CORNER_POINTS 3
#define DOUBLE_CORNER_POINTS 4
#define STRAIGHT_POINTS 2
#define LINE_SHAPE_POINTS 4 /* Maximum of all above */
struct _WidgetInfo;
struct _ImageBits;
void SetLineStyle(struct _WidgetInfo *wi, LineStyle line_style);
void GetLineShape(ZnPoint *p1, ZnPoint *p2, unsigned int line_width,
LineShape shape, ZnBBox *bbox, ZnList to_points);
void DrawLineShape(struct _WidgetInfo *wi, ZnPoint *points, int num_points,
LineStyle line_style, ZnColor line_foreground,
unsigned int line_width, LineShape shape);
int PolygonReliefInBBox(ZnPoint *points, int num_points, int line_width,
ZnBBox *bbox);
void GetPolygonReliefBBox(ZnPoint *points, int num_points, int line_width,
ZnBBox *bbox);
double PolygonReliefToPointDist(ZnPoint *points, int num_points, int line_width,
ZnPoint *pp);
void DrawRectangleRelief(struct _WidgetInfo *wi,
ReliefStyle relief, ZnGradient *gradient,
XRectangle *bbox, unsigned int line_width);
void DrawPolygonRelief(struct _WidgetInfo *wi, ReliefStyle relief,
ZnGradient *gradient, ZnPoint *points,
int num_points, int line_width);
#ifdef GLX
void RenderPolygonRelief(struct _WidgetInfo *wi, ReliefStyle relief,
ZnGradient *gradient, int alpha, ZnBool smooth,
ZnPoint *points, int num_points, int line_width);
void RenderGradient(struct _WidgetInfo *wi, ZnGradient *gradient,
void cb(void *), void *closure, ZnPoint *quad);
void RenderTile(struct _WidgetInfo *wi, struct _ImageBits *tile,
ZnGradient *gradient, void cb(void *), void *closure,
ZnPoint *quad);
void RenderImage(struct _WidgetInfo *wi, struct _ImageBits *image,
XColor *color, int alpha, ZnPoint *origin);
void RenderHollowDot(struct _WidgetInfo *wi, ZnPoint *p, ZnReal size);
#endif
#ifdef GLX
/* Copyright (c) Mark J. Kilgard, 1997. */
/* This program is freely distributable without licensing fees and is
provided without guarantee or warrantee expressed or implied. This
program is -not- in the public domain. */
#include <GL/gl.h>
typedef struct {
unsigned short c; /* Potentially support 16-bit glyphs. */
unsigned char width;
unsigned char height;
signed char xoffset;
signed char yoffset;
signed char advance;
char dummy; /* Space holder for alignment reasons. */
short x;
short y;
} TexGlyphInfo;
typedef struct {
GLfloat t0[2];
GLshort v0[2];
GLfloat t1[2];
GLshort v1[2];
GLfloat t2[2];
GLshort v2[2];
GLfloat t3[2];
GLshort v3[2];
GLfloat advance;
} TexGlyphVertexInfo;
typedef struct {
GLuint texobj;
int tex_width;
int tex_height;
int max_ascent;
int max_descent;
int num_glyphs;
int min_glyph;
int range;
unsigned char *teximage;
TexGlyphInfo *tgi;
TexGlyphVertexInfo *tgvi;
TexGlyphVertexInfo **lut;
} TexFont;
extern void txfRenderGlyph(TexFont */* txf */,
int /* c */);
extern void txfRenderString(TexFont */* txf */,
unsigned char */* string */,
int /* len */);
extern void txfRenderFancyString(TexFont */* txf */,
unsigned char */* string */,
int /* len */);
#endif
#endif /* _Draw_h */
|