1/*
2 * Author:      William Chia-Wei Cheng (bill.cheng@acm.org)
3 *
4 * Copyright (C) 2001-2009, William Chia-Wei Cheng.
5 *
6 * This file may be distributed under the terms of the Q Public License
7 * as defined by Trolltech AS of Norway and appearing in the file
8 * LICENSE.QPL included in the packaging of this file.
9 *
10 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
11 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
12 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
13 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
16 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 * @(#)$Header: /mm2/home/cvs/bc-src/tgif/arc.e,v 1.6 2011/05/16 16:21:56 william Exp $
19 */
20
21#ifndef _ARC_E_
22#define _ARC_E_
23
24extern int	arcDrawn;
25
26#ifdef _INCLUDE_FROM_ARC_C_
27#undef extern
28#define extern
29#endif /*_INCLUDE_FROM_ARC_C_*/
30
31extern void	PointsToArc ARGS_DECL((int xc, int yc, int x1, int y1,
32		                       int x2, int y2, int dir, int int_degree,
33		                       int *ltx, int *lty, int *w, int *h,
34		                       int *angle1, int *angle2));
35extern void	ArcRealX2Y2 ARGS_DECL((struct ArcRec *, int *X2, int *Y2));
36extern void	GetArcArrowInfo ARGS_DECL((struct ObjRec *,
37		                           IntPoint *tipvs1, IntPoint *tailvs1,
38		                           IntPoint *vs1, int *a_angle1,
39		                           IntPoint *tipvs2, IntPoint *tailvs2,
40		                           IntPoint *vs2, int *a_angle2));
41extern void	CalcArcOBBox ARGS_DECL((struct ObjRec *));
42extern void	CalcArcBBox ARGS_DECL((struct ObjRec *, struct BBRec obbox,
43		                       struct BBRec *bbox));
44extern void	DumpArcObj ARGS_DECL((FILE *, struct ObjRec *));
45extern int	NeedsToCacheArcObj ARGS_DECL((struct ObjRec *));
46extern void	DrawArcObj ARGS_DECL((Window, int X, int Y, struct ObjRec *));
47extern struct ObjRec	*CreateArcObj ARGS_DECL((int xc, int yc, int x1, int y1,
48			                         int x2, int y2, int dir,
49			                         int ltx, int lty, int w, int h,
50			                         int angle1, int angle2,
51			                         int CreateAbsolute));
52extern void	DrawArc ARGS_DECL((XEvent *));
53extern void	SaveArcObj ARGS_DECL((FILE *, struct ObjRec *));
54extern void	ReadArcObj ARGS_DECL((FILE *, char *, struct ObjRec **));
55extern void	SetArcPropMask ARGS_DECL((struct ObjRec *, long *plMask,
56		                          long *plSkip,
57		                          struct PropertiesRec *pProp));
58extern void	FreeArcObj ARGS_DECL((struct ObjRec *));
59extern void	MakePreciseArc ARGS_DECL((void));
60extern void	PreciseRotateAnArc ARGS_DECL((void));
61
62#ifdef _INCLUDE_FROM_ARC_C_
63#undef extern
64#ifndef _NO_RECURSIVE_EXTERN
65#define extern extern
66#endif /* ~_NO_RECURSIVE_EXTERN */
67#endif /*_INCLUDE_FROM_ARC_C_*/
68
69#endif /*_ARC_E_*/
70