Path: utzoo!telly!ddsw1!mcdchg!rutgers!tut.cis.ohio-state.edu!UUNET.UU.NET!eplrx7!mcneill From: eplrx7!mcneill@UUNET.UU.NET (Keith McNeill) Newsgroups: gnu.gcc.bug Subject: Re: GCC 1.31 Sun4, Sys4-3.2 & X.V11R3 Message-ID: <8812051644.AA08474@chip_and_dips.com> Date: 5 Dec 88 16:44:52 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 3288 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'miarc.part.i' <<'END_OF_FILE' X# 1 "miarc.c" X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../.././X11/X.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef unsigned long XID; X Xtypedef XID Window; Xtypedef XID Drawable; Xtypedef XID Font; Xtypedef XID Pixmap; Xtypedef XID Cursor; Xtypedef XID Colormap; Xtypedef XID GContext; Xtypedef XID KeySym; X Xtypedef unsigned long Mask; X Xtypedef unsigned long Atom; X Xtypedef unsigned long VisualID; X Xtypedef unsigned long Time; X Xtypedef unsigned char KeyCode; X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 311 "../../.././X11/X.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 27 "miarc.c" X X# 1 "../../.././X11/Xprotostr.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../.././X11/Xmd.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef long INT32; Xtypedef short INT16; Xtypedef char INT8; X Xtypedef unsigned long CARD32; Xtypedef unsigned short CARD16; Xtypedef unsigned char CARD8; X Xtypedef unsigned long BITS32; Xtypedef unsigned short BITS16; Xtypedef unsigned char BYTE; X Xtypedef unsigned char BOOL; X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 28 "../../.././X11/Xprotostr.h" X X X X Xtypedef struct _xSegment { X INT16 x1 , y1 , x2 , y2 ; X} xSegment; X X X Xtypedef struct _xPoint { X INT16 x , y ; X} xPoint; X Xtypedef struct _xRectangle { X INT16 x , y ; X CARD16 width , height ; X} xRectangle; X X X Xtypedef struct _xArc { X INT16 x , y ; X CARD16 width , height ; X INT16 angle1 , angle2 ; X} xArc; X X X# 28 "miarc.c" X X# 1 "../../include/misc.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xextern unsigned long globalSerialNumber; X X X X X X X X X X X X X X Xtypedef unsigned char *pointer; Xtypedef int Bool; Xtypedef unsigned long PIXEL; Xtypedef unsigned long ATOM; X X X X X X X# 1 "../../include/os.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/misc.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 117 "../../include/misc.h" X X# 29 "../../include/os.h" X X X X X X X X X X X X X X Xtypedef pointer FID; Xtypedef struct _FontPathRec *FontPathPtr; Xtypedef struct _NewClientRec *NewClientPtr; X X X X X X X X X X X# 69 "../../include/os.h" X X X X X X X X X Xchar *alloca(); X X X X X X# 92 "../../include/os.h" X X X X X X X X X X X X X X Xchar *ReadRequestFromClient(); Xchar *strcat(); Xchar *strncat(); Xchar *strcpy(); Xchar *strncpy(); XBool CloseDownConnection(); XFontPathPtr GetFontPath(); XFontPathPtr ExpandFontNamePattern(); XFID FiOpenForRead(); Xvoid CreateWellKnownSockets(); Xvoid SetDefaultFontPath(); Xvoid FreeFontRecord(); Xvoid SetFontPath(); Xvoid ErrorF(); Xvoid Error(); Xvoid FatalError(); Xvoid ProcessCommandLine(); Xvoid Xfree(); Xvoid FlushAllOutput(); Xvoid FlushIfCriticalOutputPending(); Xunsigned long *Xalloc(); Xunsigned long *Xrealloc(); Xlong GetTimeInMillis(); X X X# 58 "../../include/misc.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _DDXPoint *DDXPointPtr; Xtypedef struct _Box *BoxPtr; X X X# 29 "miarc.c" X X# 1 "../../include/gcstruct.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/gc.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _GCInterest *GCInterestPtr; Xtypedef struct _GC *GCPtr; Xextern void ValidateGC(); Xextern int ChangeGC(); Xextern GCPtr CreateGC(); Xextern int CopyGC(); Xextern int FreeGC(); Xextern void SetGCMask(); Xextern GCPtr GetScratchGC(); Xextern void FreeScratchGC(); X X# 29 "../../include/gcstruct.h" X X X# 1 "../../include/miscstruct.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/misc.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 117 "../../include/misc.h" X X# 28 "../../include/miscstruct.h" X X Xextern unsigned long globalSerialNumber; Xtypedef struct _DDXPoint { X short x, y; X} DDXPointRec; X Xtypedef struct _Box { X short x1, y1, x2, y2; X} BoxRec; X X# 31 "../../include/gcstruct.h" X X# 1 "../../include/region.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _Region *RegionPtr; X Xextern int SingleRectRegionEqual(); X X X X X X X# 32 "../../include/gcstruct.h" X X# 1 "../../include/pixmap.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _DrawInfo *DrawablePtr; Xtypedef struct _Pixmap *PixmapPtr; X X# 33 "../../include/gcstruct.h" X X# 1 "../../include/screenint.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _PixmapFormat *PixmapFormatPtr; Xtypedef struct _Visual *VisualPtr; Xtypedef struct _Depth *DepthPtr; Xtypedef struct _Screen *ScreenPtr; X X X# 34 "../../include/gcstruct.h" X X# 1 "../../include/dixfont.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _DIXFontProp *DIXFontPropPtr; Xtypedef struct _Font *FontPtr; X X X X Xtypedef enum {Linear8Bit, TwoD8Bit, Linear16Bit, TwoD16Bit} FontEncoding; Xtypedef struct _FontData *FontDataPtr; X Xextern FontPtr OpenFont(); X X# 35 "../../include/gcstruct.h" X X Xtypedef struct _GCInterest { X struct _GCInterest *pNextGCInterest; X struct _GCInterest *pLastGCInterest; X int length; X ATOM owner; X unsigned long ValInterestMask; X void (* ValidateGC) (); X unsigned long ChangeInterestMask; X int (* ChangeGC) (); X void (* CopyGCSource) (); X void (* CopyGCDest) (); X void (* DestroyGC) (); X pointer extPriv; X} GCInterestRec; X Xtypedef struct _GC{ X ScreenPtr pScreen; X pointer devPriv; X pointer devBackingStore; X int depth; X unsigned long serialNumber; X GCInterestPtr pNextGCInterest; X GCInterestPtr pLastGCInterest; X int alu; X unsigned long planemask; X unsigned long fgPixel, bgPixel; X int lineWidth; X int lineStyle; X int capStyle; X int joinStyle; X int fillStyle; X int fillRule; X int arcMode; X PixmapPtr tile; X PixmapPtr stipple; X DDXPointRec patOrg; X FontPtr font; X int subWindowMode; X Bool graphicsExposures; X DDXPointRec clipOrg; X pointer clientClip; X int clientClipType; X int dashOffset; X int numInDashList; X unsigned char *dash; X X unsigned long stateChanges; X DDXPointRec lastWinOrg; X int miTranslate:1; X X void (* FillSpans)(); X void (* SetSpans)(); X X void (* PutImage)(); X RegionPtr (* CopyArea)(); X RegionPtr (* CopyPlane)(); X void (* PolyPoint)(); X void (* Polylines)(); X void (* PolySegment)(); X void (* PolyRectangle)(); X void (* PolyArc)(); X void (* FillPolygon)(); X void (* PolyFillRect)(); X void (* PolyFillArc)(); X int (* PolyText8)(); X int (* PolyText16)(); X void (* ImageText8)(); X void (* ImageText16)(); X void (* ImageGlyphBlt)(); X void (* PolyGlyphBlt)(); X void (* PushPixels)(); X void (* LineHelper)(); X void (* ChangeClip) (); X void (* DestroyClip) (); X void (* CopyClip)(); X} GC; X X X# 30 "miarc.c" X X# 1 "../../include/scrnintstr.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/screenint.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 33 "../../include/screenint.h" X X# 28 "../../include/scrnintstr.h" X X# 1 "../../include/misc.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 117 "../../include/misc.h" X X# 29 "../../include/scrnintstr.h" X X# 1 "../../include/region.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 41 "../../include/region.h" X X X X X X# 30 "../../include/scrnintstr.h" X X# 1 "../../include/pixmap.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 45 "../../include/pixmap.h" X X# 31 "../../include/scrnintstr.h" X X# 1 "../../include/gc.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X# 65 "../../include/gc.h" X X# 32 "../../include/scrnintstr.h" X X# 1 "../../include/colormap.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 55 "../../include/colormap.h" X X X X X X X X X Xtypedef unsigned long Pixel; Xtypedef struct _CMEntry *EntryPtr; Xtypedef struct _ColormapRec *ColormapPtr; X Xextern int CreateColormap(); Xextern Pixel FindColor(); Xextern int FreeColormap(); Xextern int TellNoMap(); Xextern int TellLostMap(); Xextern int TellGainedMap(); Xextern int IsMapInstalled(); Xextern void UninstallColormap(); X X X# 33 "../../include/scrnintstr.h" X X X Xtypedef struct _PixmapFormat { X unsigned char depth; X unsigned char bitsPerPixel; X unsigned char scanlinePad; X } PixmapFormatRec; X Xtypedef struct _Visual { X unsigned long vid; X short screen; X short class; X unsigned long redMask, greenMask, blueMask; X int offsetRed, offsetGreen, offsetBlue; X short bitsPerRGBValue; X short ColormapEntries; X short nplanes; X X X } VisualRec; X Xtypedef struct _Depth { X int depth; X int numVids; X unsigned long *vids; X } DepthRec; X Xtypedef struct _Screen { X int myNum; X ATOM id; X short width, height; X short mmWidth, mmHeight; X short numDepths; X DepthPtr allowedDepths; X short rootDepth; X unsigned long rootVisual; X unsigned long defColormap; X short minInstalledCmaps, maxInstalledCmaps; X char backingStoreSupport, saveUnderSupport; X unsigned long whitePixel, blackPixel; X unsigned long rgf; X GCPtr GCperDepth[8+1]; X X X X X X X X PixmapPtr PixmapPerDepth[1]; X pointer devPrivate; X short numVisuals; X VisualPtr visuals; X X X X Bool (* CloseScreen)(); X void (* QueryBestSize)(); X Bool (* SaveScreen)(); X void (* GetImage)(); X X unsigned int *(* GetSpans)(); X X void (* PointerNonInterestBox)(); X X X X Bool (* CreateWindow)(); X Bool (* DestroyWindow)(); X Bool (* PositionWindow)(); X Bool (* ChangeWindowAttributes)(); X Bool (* RealizeWindow)(); X Bool (* UnrealizeWindow)(); X int (* ValidateTree)(); X void (* WindowExposures)(); X X X X PixmapPtr (* CreatePixmap)(); X Bool (* DestroyPixmap)(); X X X X Bool (* RealizeFont)(); X Bool (* UnrealizeFont)(); X X X void (* ConstrainCursor)(); X void (* CursorLimits)(); X Bool (* DisplayCursor)(); X Bool (* RealizeCursor)(); X Bool (* UnrealizeCursor)(); X void (* RecolorCursor)(); X Bool (* SetCursorPosition)(); X X X X Bool (* CreateGC)(); X X X X void (* CreateColormap)(); X void (* DestroyColormap)(); X void (* InstallColormap)(); X void (* UninstallColormap)(); X int (* ListInstalledColormaps) (); X void (* StoreColors)(); X void (* ResolveColor)(); X X X X RegionPtr (* RegionCreate)(); X void (* RegionCopy)(); X void (* RegionDestroy)(); X int (* Intersect)(); X int (* Union)(); X int (* Subtract)(); X int (* Inverse)(); X void (* RegionReset)(); X void (* TranslateRegion)(); X int (* RectIn)(); X Bool (* PointInRegion)(); X Bool (* RegionNotEmpty)(); X void (* RegionEmpty)(); X BoxPtr (*RegionExtents)(); X void (* SendGraphicsExpose)(); X X X void (* BlockHandler)(); X void (* WakeupHandler)(); X pointer blockData; X pointer wakeupData; X} ScreenRec; X Xtypedef struct _ScreenInfo { X int imageByteOrder; X int bitmapScanlineUnit; X int bitmapScanlinePad; X int bitmapBitOrder; X int numPixmapFormats; X PixmapFormatRec X formats[8]; X int arraySize; X int numScreens; X ScreenPtr screen; X} ScreenInfo; X Xextern ScreenInfo screenInfo; X X# 31 "miarc.c" X X# 1 "../../include/pixmapstr.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/pixmap.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 45 "../../include/pixmap.h" X X# 28 "../../include/pixmapstr.h" X X# 1 "../../include/screenint.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 33 "../../include/screenint.h" X X# 29 "../../include/pixmapstr.h" X X# 1 "../../include/misc.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 117 "../../include/misc.h" X X# 30 "../../include/pixmapstr.h" X X X Xtypedef struct _DrawInfo { X short type; X ScreenPtr pScreen; X int depth; X unsigned long serialNumber; X} DrawableRec; X X X X Xtypedef struct _Pixmap { X DrawableRec drawable; X int width, height; X int refcnt; X int devKind; X pointer devPrivate; X } PixmapRec; X X# 32 "miarc.c" X X# 1 "../../include/windowstr.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/window.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _BackingStore *BackingStorePtr; Xtypedef struct _Window *WindowPtr; X X X# 29 "../../include/windowstr.h" X X# 1 "../../include/pixmapstr.h" X X X X X X X X X X X X X X X X X X X X X X X X X X# 50 "../../include/pixmapstr.h" X X# 30 "../../include/windowstr.h" X X# 1 "../../include/region.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 41 "../../include/region.h" X X X X X X# 31 "../../include/windowstr.h" X X# 1 "../../include/cursor.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _Cursor *CursorPtr; Xtypedef struct _CursorMetric *CursorMetricPtr; X Xextern CursorPtr rootCursor; X X# 32 "../../include/windowstr.h" X X# 1 "../../include/property.h" X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _Property *PropertyPtr; X X# 33 "../../include/windowstr.h" X X# 1 "../../include/resource.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/misc.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 117 "../../include/misc.h" X X# 27 "../../include/resource.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xunsigned short CreateNewResourceType(); Xshort CreateNewResourceClass(); Xunsigned long FakeClientID(); Xvoid AddResource(); Xvoid FreeResource(); Xvoid FreeClientResources(); Xpointer LookupID(); X X X# 34 "../../include/windowstr.h" X X# 1 "../../include/dix.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/gc.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X# 65 "../../include/gc.h" X X# 29 "../../include/dix.h" X X# 1 "../../include/window.h" X X X X X X X X X X X X X X X X X X X X X X X X X X# 53 "../../include/window.h" X X# 30 "../../include/dix.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _TimeStamp *TimeStampPtr; Xtypedef struct _Client *ClientPtr; Xextern ClientPtr requestingClient; Xextern ClientPtr *clients; Xextern ClientPtr serverClient; Xextern int currentMaxClients; X Xextern int ProcAllowEvents(); Xextern int ProcBell(); Xextern int ProcChangeActivePointerGrab(); Xextern int ProcChangeKeyboardControl(); Xextern int ProcChangePointerControl(); Xextern int ProcGetKeyboardMapping(); Xextern int ProcGetPointerMapping(); Xextern int ProcGetInputFocus(); Xextern int ProcGetKeyboardControl(); Xextern int ProcGetMotionEvents(); Xextern int ProcGetPointerControl(); Xextern int ProcGrabButton(); Xextern int ProcGrabKey(); Xextern int ProcGrabKeyboard(); Xextern int ProcGrabPointer(); Xextern int ProcQueryKeymap(); Xextern int ProcQueryPointer(); Xextern int ProcSetInputFocus(); Xextern int ProcSetKeyboardMapping(); Xextern int ProcSetPointerMapping(); Xextern int ProcSendEvent(); Xextern int ProcUngrabButton(); Xextern int ProcUngrabKey(); Xextern int ProcUngrabKeyboard(); Xextern int ProcUngrabPointer(); Xextern int ProcWarpPointer(); Xextern int ProcRecolorCursor(); X Xextern WindowPtr LookupWindow(); Xextern pointer LookupDrawable(); X Xextern void NoopDDA(); X X X# 35 "../../include/windowstr.h" X X# 1 "../../include/miscstruct.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 38 "../../include/miscstruct.h" X X# 36 "../../include/windowstr.h" X X# 1 "../../.././X11/Xprotostr.h" X X# 55 "../../.././X11/Xprotostr.h" X X# 37 "../../include/windowstr.h" X X X X X Xtypedef struct _BackingStore { X RegionPtr obscured; X DDXPointRec oldAbsCorner; X void (* SaveDoomedAreas)(); X RegionPtr (* RestoreAreas)(); X void (* ExposeCopy)(); X void (* TranslateBackingStore)(); X X void (* ClearToBackground)(); X void (* DrawGuarantee)(); X} BackingStoreRec; X X X X X X Xtypedef struct _Window { X X DrawableRec drawable; X X VisualID visual; X X struct _Window *parent; X struct _Window *nextSib; X struct _Window *prevSib; X struct _Window *firstChild; X struct _Window *lastChild; X X CursorPtr cursor; X X ClientPtr client; X Window wid; X X RegionPtr clipList; X RegionPtr winSize; X X RegionPtr borderClip; X RegionPtr borderSize; X RegionPtr exposed; X X X X X RegionPtr borderExposed; X xRectangle clientWinSize; X X DDXPointRec absCorner; X DDXPointRec oldAbsCorner; X int class; X Mask eventMask; X Mask dontPropagateMask; X Mask allEventMasks; X Mask deliverableEvents; X pointer otherClients; X pointer passiveGrabs; X X PropertyPtr userProps; X X XID nolongerused; X PixmapPtr backgroundTile; X unsigned long backgroundPixel; X PixmapPtr borderTile; X unsigned long borderPixel; X int borderWidth; X void (* PaintWindowBackground)(); X void (* PaintWindowBorder)(); X void (* CopyWindow)(); X void (* ClearToBackground)(); X X unsigned long backingBitPlanes; X unsigned long backingPixel; X int backingStore; X BackingStorePtr backStorage; X X char bitGravity; X char winGravity; X Colormap colormap; X X X X Bool saveUnder:1; X unsigned visibility:2; X unsigned mapped:1; X unsigned realized:1; X unsigned viewable:1; X unsigned overrideRedirect:1; X unsigned marked:1; X X pointer devBackingStore; X pointer devPrivate; X} WindowRec; X Xextern int DeleteWindow(); Xextern int ChangeWindowAttributes(); Xextern int WalkTree(); Xextern CreateRootWindow(); Xextern WindowPtr CreateWindow(); Xextern int DeleteWindow(); Xextern int DestroySubwindows(); Xextern int ChangeWindowAttributes(); Xextern int GetWindowAttributes(); Xextern int ConfigureWindow(); Xextern int ReparentWindow(); Xextern int MapWindow(); Xextern int MapSubwindow(); Xextern int UnmapWindow(); Xextern int UnmapSubwindow(); Xextern RegionPtr NotClippedByChildren(); X X X X# 33 "miarc.c" X X# 1 "mifpoly.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Xtypedef struct _SppPoint { X double x, y; X} SppPointRec, *SppPointPtr; X Xtypedef struct _SppArc { X double x, y, width, height; X double angle1, angle2; X} SppArcRec, *SppArcPtr; X Xextern SppPointRec miExtendSegment(); X# 34 "miarc.c" X X# 1 "../../include/mi.h" X X X X X X X X X X X X X X X X X X X X X X X X X X X# 1 "../../include/region.h" X X X X X X X X X X X X X X X X X X X X X X X X X# 41 "../../include/region.h" X X X X X X# 27 "../../include/mi.h" X X Xtypedef struct _miDash *miDashPtr; X X X Xextern void miPutImage(); Xextern void miGetImage(); Xextern RegionPtr miCopyArea(); Xextern RegionPtr miCopyPlane(); Xextern void miClearToBackground(); Xextern int miValidateTree(); Xextern void miPolySegment(); Xextern void miPolyRectangle(); Xextern void miFillPolygon(); Xextern int miPolyText8(); Xextern int miPolyText16(); Xextern void miImageText8(); Xextern void miImageText16(); Xextern int miFillConvexPoly(); Xextern int miFillGeneralPoly(); Xextern void miNotMiter(); Xextern void miMiter(); Xextern void miWideLine(); Xextern void miWideDash(); Xextern void miPolyArc(); Xextern void miPolyFillRect(); Xextern void miPolyFillArc(); Xextern void miPolyGlyphBlt(); Xextern void miImageGlyphBlt(); Xextern void miZeroLine(); Xextern void miPaintWindow(); Xextern miDashPtr miDashLine(); Xextern void miPushPixels(); Xextern void miGetPts(), miRoundCap(), miOneSegWide(); Xextern int miPtToAngle(); Xextern RegionPtr miRegionCreate(); Xextern void miRegionCopy(); Xextern void miRegionDestroy(); Xextern int miIntersect(); Xextern int miInverse(); Xextern int miUnion(); Xextern int miSubtract(); Xextern void miRegionReset(); Xextern void miTranslateRegion(); Xextern int miRectIn(); Xextern RegionPtr miRectsToRegion(); Xextern Bool miPointInRegion(); Xextern Bool miRegionNotEmpty(); Xextern void miRegionEmpty(); Xextern int miNumberRectsInRegion(); Xextern void miWindowExposures(); Xextern BoxPtr miRegionExtents(); Xextern void miSendGraphicsExpose(); Xextern RegionPtr miHandleExposures(); X X X# 35 "miarc.c" X X Xextern double sqrt(), cos(), sin(), atan(); X X X X X X X X X X X X X X X X X X X X Xtypedef struct _miArcJoin { X int arcIndex0, arcIndex1; X int phase0, phase1; X int end0, end1; X} miArcJoinRec, *miArcJoinPtr; X Xtypedef struct _miArcCap { X int arcIndex; X int end; X} miArcCapRec, *miArcCapPtr; X Xtypedef struct _miArcFace { X SppPointRec clock; X SppPointRec center; X SppPointRec counterClock; X} miArcFaceRec, *miArcFacePtr; X X X X X X Xtypedef struct _miArcData { X xArc arc; X int render; X int join; X int cap; X miArcFaceRec bounds[2]; X double x0, y0, x1, y1; X} miArcDataRec, *miArcDataPtr; X Xtypedef struct _miPolyArc { X int narcs; X miArcDataPtr arcs; X int ncaps; X miArcCapPtr caps; X int njoins; X miArcJoinPtr joins; X} miPolyArcRec, *miPolyArcPtr; X Xstatic miPolyArcPtr miComputeArcs (); X X X X X X X X X Xstatic CARD32 gcvals[6]; X X X X X Xstruct arcData { X double x0, y0, x1, y1; X int selfJoin; X}; X X Xstatic miPolyArcPtr XmiComputeArcs (parcs, narcs, isDashed, isDoubleDash, pDash, nDashes, dashOffset) X xArc *parcs; X int narcs; X int isDashed, isDoubleDash; X unsigned char *pDash; X int nDashes, dashOffset; X{ X miPolyArcPtr arcs; X int start, i, j, k, nexti, nextk; X int joinSize[2]; X int capSize[2]; X int arcSize[2]; X int angle2; X double x0, y0, x1, y1, a0, a1, xc, yc; X struct arcData *data; X miArcDataPtr arc; X xArc xarc; X int iphase, prevphase, joinphase; X int arcsJoin; X X int iDash, dashRemaining; X int iDashStart, dashRemainingStart, iphaseStart; X int startAngle, spanAngle, endAngle, backwards; X int prevDashAngle, dashAngle; X static int computeAngleFromPath (); X X arcs = (miPolyArcPtr) Xalloc (sizeof (*arcs) * (isDoubleDash ? 2 : 1)); X data = (struct arcData *) alloca((int)(narcs * sizeof (struct arcData))); X X for (i = 0; i < narcs; i++) { X a0 = (((double) (parcs[i].angle1)) / 64.0 * 3.14159265358979323846/180.0); X angle2 = parcs[i].angle2; X if (angle2 > (64 * 360)) X angle2 = (64 * 360); X else if (angle2 < -(64 * 360)) X angle2 = -(64 * 360); X data[i].selfJoin = angle2 == (64 * 360) || angle2 == -(64 * 360); X a1 = (((double) (parcs[i].angle1 + angle2)) / 64.0 * 3.14159265358979323846/180.0); X data[i].x0 = parcs[i].x + (double) parcs[i].width / 2 * (1 + cos (a0)); X data[i].y0 = parcs[i].y + (double) parcs[i].height / 2 * (1 - sin (a0)); X data[i].x1 = parcs[i].x + (double) parcs[i].width / 2 * (1 + cos (a1)); X data[i].y1 = parcs[i].y + (double) parcs[i].height / 2 * (1 - sin (a1)); X } X X for (iphase = 0; iphase < (isDoubleDash ? 2 : 1); iphase++) { X arcs[iphase].njoins = 0; X arcs[iphase].joins = 0; X joinSize[iphase] = 0; X X arcs[iphase].ncaps = 0; X arcs[iphase].caps = 0; X capSize[iphase] = 0; X X arcs[iphase].narcs = 0; X arcs[iphase].arcs = 0; X arcSize[iphase] = 0; X } X X iphase = 0; X if (isDashed) { X iDash = 0; X dashRemaining = pDash[0]; X while (dashOffset > 0) { X if (dashOffset >= dashRemaining) { X dashOffset -= dashRemaining; X iphase = iphase ? 0 : 1; X iDash++; X dashRemaining = pDash[iDash]; X } else { X dashRemaining -= dashOffset; X dashOffset = 0; X } X } X iDashStart = iDash; X dashRemainingStart = dashRemaining; X } X iphaseStart = iphase; X X for (i = narcs - 1; i >= 0; i--) { X j = i + 1; X if (j == narcs) X j = 0; X if (!data[i].selfJoin && X (((((data[i].x1) - ( data[j].x0)) > 0.0 ? ((data[i].x1) - ( data[j].x0)) : -((data[i].x1) - ( data[j].x0))) > 0.000001) || X ((((data[i].y1) - ( data[j].y0)) > 0.0 ? ((data[i].y1) - ( data[j].y0)) : -((data[i].y1) - ( data[j].y0))) > 0.000001))) X { X if (iphase == 0 || isDoubleDash) X addCap (&arcs[iphase].caps, &arcs[iphase].ncaps, X &capSize[iphase], 0, 0); X break; X } X } X start = i + 1; X if (start == narcs) X start = 0; X i = start; X for (;;) { X j = i + 1; X if (j == narcs) X j = 0; X nexti = i+1; X if (nexti == narcs) X nexti = 0; X if (isDashed) { X startAngle = parcs[i].angle1; X spanAngle = parcs[i].angle2; X if (spanAngle > (64 * 360)) X spanAngle = (64 * 360); X else if (spanAngle < -(64 * 360)) X spanAngle = -(64 * 360); X if (startAngle < 0) X startAngle = (64 * 360) - (-startAngle) % (64 * 360); X if (startAngle >= (64 * 360)) X startAngle = startAngle % (64 * 360); X endAngle = startAngle + spanAngle; X backwards = spanAngle < 0; X prevDashAngle = startAngle; X while (prevDashAngle != endAngle) { X dashAngle = computeAngleFromPath X (prevDashAngle, endAngle, X parcs[i].width, parcs[i].height, X &dashRemaining, backwards); X if (iphase == 0 || isDoubleDash) { X xarc = parcs[i]; X xarc.angle1 = prevDashAngle; X if (backwards) { X spanAngle = dashAngle - prevDashAngle; X if (dashAngle > prevDashAngle) X spanAngle = - 360 * 64 + spanAngle; X } else { X spanAngle = dashAngle - prevDashAngle; X if (dashAngle < prevDashAngle) X spanAngle = 360 * 64 + spanAngle; X } X xarc.angle2 = spanAngle; X arc = addArc (&arcs[iphase].arcs, &arcs[iphase].narcs, X &arcSize[iphase], xarc); X if (!isDoubleDash) { X if (prevDashAngle != startAngle) { X addCap (&arcs[iphase].caps, X &arcs[iphase].ncaps, X &capSize[iphase], 0, X arc - arcs[iphase].arcs); X X } X if (dashAngle != endAngle) { X addCap (&arcs[iphase].caps, X &arcs[iphase].ncaps, X &capSize[iphase], 1, X arc - arcs[iphase].arcs); X } X } X arc->cap = arcs[iphase].ncaps; X arc->join = arcs[iphase].njoins; X arc->render = 0; X } X prevphase = iphase; X if (dashRemaining <= 0) { X ++iDash; X if (iDash == nDashes) X iDash = 0; X iphase = iphase ? 0:1; X dashRemaining = pDash[iDash]; X } X prevDashAngle = dashAngle; X } X } else { X arc = addArc (&arcs[iphase].arcs, &arcs[iphase].narcs, X &arcSize[iphase], parcs[i]); X arc->join = arcs[iphase].njoins; X arc->cap = arcs[iphase].ncaps; X prevphase = iphase; X } X if (prevphase == 0 || isDoubleDash) X k = arcs[prevphase].narcs - 1; X if (iphase == 0 || isDoubleDash) X nextk = arcs[iphase].narcs; X if (nexti == start) { X nextk = 0; X if (isDashed) { X iDash = iDashStart; X iphase = iphaseStart; X dashRemaining = dashRemainingStart; X } X } X arcsJoin = narcs > 1 && X ((((data[i].x1) - ( data[j].x0)) > 0.0 ? ((data[i].x1) - ( data[j].x0)) : -((data[i].x1) - ( data[j].x0))) <= 0.000001) && X ((((data[i].y1) - ( data[j].y0)) > 0.0 ? ((data[i].y1) - ( data[j].y0)) : -((data[i].y1) - ( data[j].y0))) <= 0.000001); X if (arcsJoin) X arc->render = 0; X else X arc->render = 1; X if (arcsJoin && X (prevphase == 0 || isDoubleDash) && X (iphase == 0 || isDoubleDash)) X { X joinphase = iphase; X if (isDoubleDash) { X if (nexti == start) X joinphase = iphaseStart; X X X X X X X X if (joinphase != prevphase) X joinphase = 0; X } X if (joinphase == 0 || isDoubleDash) { X addJoin (&arcs[joinphase].joins, X &arcs[joinphase].njoins, X &joinSize[joinphase], X 1, k, prevphase, X 0, nextk, iphase); X arc->join = arcs[prevphase].njoins; X } X } else { X if ((prevphase == 0 || isDoubleDash) && X !data[i].selfJoin) X { X addCap (&arcs[prevphase].caps, &arcs[prevphase].ncaps, X &capSize[prevphase], 1, k); X arc->cap = arcs[prevphase].ncaps; X } X if (isDashed && !arcsJoin) { X iDash = iDashStart; X iphase = iphaseStart; X dashRemaining = dashRemainingStart; X } X nextk = arcs[iphase].narcs; X if (nexti == start) { X nextk = 0; X iDash = iDashStart; X iphase = iphaseStart; X dashRemaining = dashRemainingStart; X } X X X X X X X X X X if ((iphase == 0 || isDoubleDash) && X (nexti != start || arcsJoin && isDashed) && X !data[j].selfJoin) X addCap (&arcs[iphase].caps, &arcs[iphase].ncaps, X &capSize[iphase], 0, nextk); X } X i = nexti; X if (i == start) X break; X } X X X X for (iphase = 0; iphase < (isDoubleDash ? 2 : 1); iphase++) X if (arcs[iphase].narcs > 0) { X arcs[iphase].arcs[arcs[iphase].narcs-1].render = 1; X arcs[iphase].arcs[arcs[iphase].narcs-1].join = X arcs[iphase].njoins; X arcs[iphase].arcs[arcs[iphase].narcs-1].cap = X arcs[iphase].ncaps; X } X return arcs; X} X END_OF_FILE if test 27753 -ne `wc -c <'miarc.part.i'`; then echo shar: \"'miarc.part.i'\" unpacked with wrong size! fi # end of 'miarc.part.i' fi echo shar: End of shell archive. exit 0