Xmu.h revision e120bd27
11.11Sriastrad/*
21.1Sriastrad
31.1SriastradCopyright 1988, 1998  The Open Group
41.1Sriastrad
51.1SriastradPermission to use, copy, modify, distribute, and sell this software and its
61.1Sriastraddocumentation for any purpose is hereby granted without fee, provided that
71.1Sriastradthe above copyright notice appear in all copies and that both that
81.1Sriastradcopyright notice and this permission notice appear in supporting
91.1Sriastraddocumentation.
101.1Sriastrad
111.1SriastradThe above copyright notice and this permission notice shall be included in
121.1Sriastradall copies or substantial portions of the Software.
131.1Sriastrad
141.2SriastradTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
151.11SriastradIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
161.2SriastradFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
171.2SriastradOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
181.2SriastradAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
191.1SriastradCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
201.1Sriastrad
211.1SriastradExcept as contained in this notice, the name of The Open Group shall not be
221.1Sriastradused in advertising or otherwise to promote the sale, use or other dealings
231.1Sriastradin this Software without prior written authorization from The Open Group.
241.1Sriastrad
251.1Sriastrad*/
261.1Sriastrad
271.1Sriastrad/*
281.1Sriastrad * The interfaces described by this header file are for miscellaneous utilities
291.1Sriastrad * and are not part of the Xlib standard.
301.1Sriastrad */
311.1Sriastrad
321.1Sriastrad#ifndef _XMU_H_
331.1Sriastrad#define _XMU_H_
341.1Sriastrad
351.1Sriastrad#include <X11/Xfuncproto.h>
361.1Sriastrad#include <X11/Intrinsic.h>
371.1Sriastrad#include <X11/Xmu/Atoms.h>		/* _XA_... */
381.1Sriastrad#include <X11/Xmu/CharSet.h>		/* CopyISOLatin1Lowered */
391.1Sriastrad#include <X11/Xmu/Converters.h>		/* CvtStringTo... */
401.1Sriastrad#include <X11/Xmu/Drawing.h>		/* DrawRoundedRect, DrawLogo */
411.1Sriastrad#include <X11/Xmu/Error.h>		/* PrintDefaultError */
421.1Sriastrad#include <X11/Xmu/StdSel.h>		/* ConvertStandardSelection */
431.1Sriastrad
441.1Sriastrad/*
451.1Sriastrad * clip lists
461.1Sriastrad */
471.1Sriastradtypedef struct _XmuSegment {
481.1Sriastrad  int x1, x2;
491.1Sriastrad  struct _XmuSegment *next;
501.1Sriastrad} XmuSegment;
511.1Sriastrad
521.1Sriastradtypedef struct _XmuScanline {
531.1Sriastrad  int y;
541.1Sriastrad  XmuSegment *segment;
551.1Sriastrad  struct _XmuScanline *next;
561.1Sriastrad} XmuScanline;
571.1Sriastrad
581.1Sriastradtypedef struct _XmuArea {
591.1Sriastrad  XmuScanline *scanline;
601.1Sriastrad} XmuArea;
611.1Sriastrad
621.1Sriastrad#define XmuCreateArea()		XmuNewArea(0, 0, 0, 0)
631.1Sriastrad#define XmuAreaOr(dst, src)	XmuAreaOrXor((dst), (src), True)
641.1Sriastrad#define XmuAreaXor(dst, src)	XmuAreaOrXor((dst), (src), False)
651.1Sriastrad
661.1Sriastrad#define XmuDestroyArea(a)					\
671.1Sriastrad		  do {						\
681.1Sriastrad		    XmuDestroyScanlineList((a)->scanline);	\
691.1Sriastrad		    XtFree((char *)(a));			\
701.1Sriastrad		  } while (0)
711.1Sriastrad
721.1Sriastrad#define FreeArea(a)						\
731.1Sriastrad		  do {						\
741.1Sriastrad		    XmuDestroyScanlineList((a)->scanline);	\
751.1Sriastrad		    a->scanline = (Scanline *)0;		\
761.1Sriastrad		  } while (0)
771.1Sriastrad
781.1Sriastrad#define XmuValidSegment(s)	((s)->x1 < (s)->x2)
791.1Sriastrad#define XmuSegmentEqu(s1, s2)	((s1)->x1 == (s2)->x1 && (s1)->x2 == (s2)->x2)
801.1Sriastrad#define XmuDestroySegment(s)	XtFree((char *)(s))
811.1Sriastrad
821.1Sriastrad#define XmuDestroyScanline(s)					\
831.1Sriastrad		  do {						\
841.1Sriastrad		    XmuDestroySegmentList((s)->segment);	\
851.1Sriastrad		    XtFree((char*)(s));				\
861.1Sriastrad		  } while (0)
871.1Sriastrad
881.1SriastradXmuArea *XmuNewArea(int, int, int, int);
891.1SriastradXmuArea *XmuAreaDup(XmuArea*);
901.1SriastradXmuArea *XmuAreaCopy(XmuArea*, XmuArea*);
911.1SriastradXmuArea *XmuAreaNot(XmuArea*, int, int, int, int);
921.1SriastradXmuArea *XmuAreaOrXor(XmuArea*, XmuArea*, Bool);
931.1SriastradXmuArea *XmuAreaAnd(XmuArea*, XmuArea*);
941.1SriastradBool XmuValidArea(XmuArea*);
951.1SriastradBool XmuValidScanline(XmuScanline*);
961.1SriastradBool XmuScanlineEqu(XmuScanline*, XmuScanline*);
971.1SriastradXmuSegment *XmuNewSegment(int, int);
981.1Sriastradvoid XmuDestroySegmentList(XmuSegment*);
991.1SriastradXmuScanline *XmuScanlineCopy(XmuScanline*, XmuScanline*);
1001.1SriastradBool XmuAppendSegment(XmuSegment*, XmuSegment*);
1011.1SriastradXmuScanline *XmuOptimizeScanline(XmuScanline*);
1021.1SriastradXmuScanline *XmuScanlineNot(XmuScanline *scanline, int, int);
1031.1SriastradXmuScanline *XmuScanlineOr(XmuScanline*, XmuScanline*);
1041.1SriastradXmuScanline *XmuScanlineAnd(XmuScanline*, XmuScanline*);
1051.1SriastradXmuScanline *XmuScanlineXor(XmuScanline*, XmuScanline*);
1061.1SriastradXmuScanline *XmuNewScanline(int, int, int);
1071.1Sriastradvoid XmuDestroyScanlineList(XmuScanline*);
1081.1SriastradXmuArea *XmuOptimizeArea(XmuArea *area);
1091.1Sriastrad
1101.1Sriastrad#ifndef notdef
1111.1SriastradXmuScanline *XmuScanlineOrSegment(XmuScanline*, XmuSegment*);
1121.1SriastradXmuScanline *XmuScanlineAndSegment(XmuScanline*, XmuSegment*);
1131.1SriastradXmuScanline *XmuScanlineXorSegment(XmuScanline*, XmuSegment*);
1141.1Sriastrad#endif /* notdef */
1151.1Sriastrad
1161.1Sriastrad#ifndef _SYSUTIL_H_
1171.1Sriastradint XmuSnprintf(char *str, int size, _Xconst char *fmt, ...)
1181.1Sriastrad    _X_ATTRIBUTE_PRINTF(3,4);
1191.1Sriastrad#endif
1201.1Sriastrad
1211.1Sriastrad#endif /* _XMU_H_ */
1221.1Sriastrad
1231.1Sriastrad