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/poly.e,v 1.11 2011/05/16 16:21:59 william Exp $ 19 */ 20 21#ifndef _POLY_E_ 22#define _POLY_E_ 23 24#include "list.e" 25 26typedef struct tagWiringInfo { 27 int num_ports_to_connect; /* this used to be drawPolyToEndInANode */ 28 29 struct ObjRec *first_port_obj, *first_port_owner_obj; 30 char first_port_name[MAXSTRING]; /* this used to be drawPolyFirstNodeName */ 31 32 struct ObjRec *last_port_obj, *last_port_owner_obj; 33 char last_port_name[MAXSTRING]; /* this used to be drawPolyLastNodeName */ 34} WiringInfo; 35 36extern WiringInfo gstWiringInfo; 37 38extern int polyDrawn; 39extern int queryPolyNameOnConnect; 40 41extern short origWidthOfLine[]; 42extern short origArrowHeadH[]; 43extern short origArrowHeadW[]; 44 45extern short *curWidthOfLine; 46extern short *curArrowHeadH; 47extern short *curArrowHeadW; 48 49extern char **curWidthOfLineSpec; 50extern char **curArrowHeadHSpec; 51extern char **curArrowHeadWSpec; 52 53extern int numPtsInPoly; 54extern CVList gStructSplineList; 55 56extern struct PtRec *lastPtPtr; 57extern struct ObjRec * drawPolyHighlightedNode; 58 59#ifdef _INCLUDE_FROM_POLY_C_ 60#undef extern 61#define extern 62#endif /*_INCLUDE_FROM_POLY_C_*/ 63 64extern IntPoint *GetPolyOrPolygonAbsVs ARGS_DECL((int *pnReturn, 65 int *pnAllocated, 66 struct ObjRec *)); 67extern XPoint *MakePolyVertex ARGS_DECL((int XOff, int YOff, int NumVs, 68 IntPoint*)); 69extern void CalcPolyBBox ARGS_DECL((struct ObjRec *)); 70extern void UpdPolyBBox ARGS_DECL((struct ObjRec *, int NumPts, 71 IntPoint*)); 72extern void UpdNonIntSplinePolyBBox ARGS_DECL((struct ObjRec *, int NumPts, 73 IntPoint*)); 74extern void UpdPolyOrPolygonBBox ARGS_DECL((struct ObjRec *)); 75extern void CreatePolyObj ARGS_DECL((int NumPts, int CreateAbsolute)); 76extern void ResetCreatePoly ARGS_DECL((void)); 77extern void AddPtToCreatePoly ARGS_DECL((int AbsX, int AbsY)); 78extern void FreePointsForCont ARGS_DECL((int *pn_ltx, int *pn_lty, 79 int *pn_rbx, int *pn_rby)); 80extern int SetFirstPoint ARGS_DECL((int grid_x, int grid_y, 81 IntPointTriplet*)); 82extern int AddPointForCont ARGS_DECL((int grid_x, int grid_y, 83 IntPointTriplet*)); 84extern void UpdateLastPointForCont ARGS_DECL((IntPointTriplet*)); 85extern void DrawAllStructSplinePointsForCont ARGS_DECL((int num_pts)); 86extern void UpdatePrevToLastPointForCont ARGS_DECL((IntPointTriplet*)); 87extern void DrawPoly ARGS_DECL((XEvent*)); 88extern void SetWiringNodeInfo ARGS_DECL((struct ObjRec *port_obj, 89 struct ObjRec *port_owner_obj, 90 char *port_name, int first)); 91extern void ResetWiringNodeInfo ARGS_DECL((void)); 92extern void InputPolyPts ARGS_DECL((void)); 93extern void JoinPoly ARGS_DECL((void)); 94extern void CutPoly ARGS_DECL((void)); 95extern double GetWidthInDouble ARGS_DECL((int nVal, char *pszSpec, 96 int *pnIsInt)); 97extern void SetWidthAndSpec ARGS_DECL((double dWidth, int *pnWidth, 98 char *pszWidthSpec)); 99extern void ScaleWidthAndSpec ARGS_DECL((double dScale, int *pnWidth, 100 char *pszWidthSpec)); 101extern void DumpArrow ARGS_DECL((FILE*, IntPoint *TailV, IntPoint *HeadV, 102 int ArrowW, int ArrowH, char *AWSpec, 103 char *AHSpec, int Pen, int TransPat, 104 int ColorIndex)); 105extern void DumpPolyObj ARGS_DECL((FILE*, struct ObjRec *)); 106extern int NeedsToCachePolyObj ARGS_DECL((struct ObjRec *)); 107extern void DrawPolyObj ARGS_DECL((Window, int XOff, int YOff, 108 struct ObjRec *)); 109extern void SaveSmoothHinge ARGS_DECL((FILE*, int Curved, int NumPts, 110 char *Smooth)); 111extern void SavePolyObj ARGS_DECL((FILE*, struct ObjRec *)); 112extern int ReadSmoothHinge ARGS_DECL((FILE*, int Curved, int NumPts, 113 char *Smooth)); 114extern void ReadPolyObj ARGS_DECL((FILE*, char *Inbuf, struct ObjRec **)); 115extern void SetPolyPropMask ARGS_DECL((struct ObjRec *, long *plMask, 116 long *plSkip, 117 struct PropertiesRec *pProp)); 118extern void FreePolyObj ARGS_DECL((struct ObjRec *)); 119extern void InitPoly ARGS_DECL((void)); 120 121#ifdef _INCLUDE_FROM_POLY_C_ 122#undef extern 123#ifndef _NO_RECURSIVE_EXTERN 124#define extern extern 125#endif /* ~_NO_RECURSIVE_EXTERN */ 126#endif /*_INCLUDE_FROM_POLY_C_*/ 127 128#endif /*_POLY_E_*/ 129