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
|
#include <string.h>
typedef struct {
float x,y;
} Jwgpos;
typedef struct {
Jwgpos *data;
int npts;
} Jwgline;
typedef struct {
float xc,yc;
float a,b,c,d;
float det;
} Transform;
BEGIN_OBJECT(Data)
int w,h;
int l;
float *data;
END_OBJECT(Data);
extern void Data_Destructor(Data);
CREATOR(Data)=Obj_DefaultCreator;
DESTRUCTOR(Data)=Data_Destructor;
typedef struct {
float r,g,b;
} Color;
typedef struct {
float width;
Color color;
} Pen;
typedef struct {
float density;
Color color;
} Brush;
typedef struct {
int font;
Color color;
float height;
} Ink;
#define JWG_FM_XFIG 0
#define JWG_FM_CGM 1
#define JWG_DEFAULT_LINE_SIZE 4096
BEGIN_OBJECT(Handle)
int serial;
struct Handle_struct *stack;
Data data;
Transform transform;
Brush brush;
Pen pen;
Ink ink;
int format;
FILE *file;
Jwgline current_line;
int current_line_size;
void *private;
END_OBJECT(Handle)
extern void Handle_Destructor(Handle);
CREATOR(Handle)=Obj_DefaultCreator;
DESTRUCTOR(Handle)=Handle_Destructor;
extern void jwg_xform(Handle,Jwgpos *);
extern void jwg_write_line(Handle,Jwgline *);
extern void jwg_write_polygon(Handle,Jwgline *);
extern float jwg_decompose_matrix(Transform,int);
extern int jwg_create_handle(int *,char *,int);
extern void jwg_pass_data(int *,float *,int *,int *,int *);
extern void jwg_destory_data(int *);
extern void jwg_set_xform(int *,float *,float *,float *,float *, float *, float *);
extern void jwg_set_brush(int *, float *,float *,float *,float *);
extern void jwg_set_pen(int *, float *,float *,float *,float *);
extern void jwg_set_textcolor(int *,float *,float *,float *);
extern void jwg_set_textheight(int *,float *);
extern void jwg_draw_text(int *,float *,float *,char *,int);
extern void jwg_contour(int *, float *,int *,int *);
extern void jwg_draw_line(int *,float *,float *,int *);
extern void jwg_draw_polygon(int *,float *,float *,int *);
extern void jwg_destroy_handle(int *);
|