73
73
/* Bezier third order curve path segment */
74
74
extern struct beziersegment *t1_Bezier ( struct segment *B, struct segment *C,
75
75
struct segment *D );
76
/* produce a font 'hint' path segment */
77
extern struct hintsegment *t1_Hint ( struct XYspace *S, float ref, float width,
78
char orientation, char hinttype,
79
char adjusttype, char direction,
81
/* reverse the complete order of paths */
82
extern struct segment *t1_Reverse ( struct segment *p );
83
/* reverse only sub-paths; moves unchanged */
84
extern struct segment *t1_ReverseSubPaths ( struct segment *p );
85
/* subtract two location objects */
86
extern struct segment *t1_SubLoc ( struct segment *p1, struct segment *p2 );
87
/* Drop the first segment in a path */
88
extern struct segment *t1_DropSegment ( struct segment *path );
89
/* return the first segment in a path */
90
extern struct segment *t1_HeadSegment ( struct segment *path );
91
76
/* Query location; return its (x,y) */
92
77
extern void t1_QueryLoc ( struct segment *P, struct XYspace *S, double *xP,
94
/* Query segment at head of a path */
95
extern void t1_QueryPath ( struct segment *path, int *typeP,
96
struct segment **Bp, struct segment **Cp,
97
struct segment **Dp, double *fP );
98
/* Query the bounding box of a path */
99
extern void t1_QueryBounds ( struct segment *p0, struct XYspace *S,
100
double *xminP, double *yminP,
101
double *xmaxP, double *ymaxP );
111
87
#define PathSegment(t,x,y) t1_PathSegment(t,(fractpel)x,(fractpel)y)
112
88
#define JoinSegment(b,t,x,y,a) t1_JoinSegment(b,t,(fractpel)x,(fractpel)y,a)
113
89
#define Hypoteneuse(dx,dy) t1_Hypoteneuse(dx,dy)
114
#define BoxPath(S,h,w) t1_BoxPath(S,h,w)
116
91
/* duplicate a path */
117
92
extern struct segment *t1_CopyPath ( struct segment *p0 );
121
96
extern struct segment *t1_PathXform ( struct segment *p0, struct XYspace *S );
122
97
/* calculate the ending point of a path */
123
98
extern void t1_PathDelta ( struct segment *p, struct fractpoint *pt );
125
extern struct segment *t1_BoundingBox ( pel h, pel w );
126
99
/* produce a MOVE or LINE segment */
127
100
extern struct segment *t1_PathSegment ( int type, fractpel x, fractpel y );
128
101
/* join a MOVE or LINE segment to a path */
129
102
extern struct segment *t1_JoinSegment ( struct segment *before, int type, fractpel x, fractpel y, struct segment *after );
131
double t1_Hypoteneuse(); /* returns the length of a line */
133
/* returns a rectangular path */
134
extern struct segment *t1_BoxPath ( struct XYspace *S, int h, int w );