forgotten commit. disabled until egl is adapted.
[AROS-Contrib.git] / scalos / libraries / popupmenu / pmshadow.h
blobee72b82c440b47e36fa4c2ba29ef7d19ade05bfd
1 //
2 // pmshadow.h
3 //
4 // PopupMenu Library - Shadows
5 //
6 // Copyright (C)2000 Henrik Isaksson <henrik@boing.nu>
7 // All Rights Reserved.
8 //
9 // $Date$
10 // $Revision$
13 #ifndef PM_SHADOW_H
14 #define PM_SHADOW_H
16 #ifndef PM_DLIST_H
17 #include "pmdlist.h"
18 #endif
20 #ifndef MAX
21 #define MAX(a,b) (a>b?a:b)
22 #endif
23 #ifndef MIN
24 #define MIN(a,b) (a<b?a:b)
25 #endif
27 #define SHADOWFLAG_LEFT (1L << 0)
28 #define SHADOWFLAG_BOTTOM (1L << 1)
29 #define SHADOWFLAG_TOP (1L << 2)
30 #define SHADOWFLAG_RIGHT (1L << 3)
32 struct PMShadowRect {
33 PMGLN n;
34 WORD Left;
35 WORD Top;
36 WORD Right;
37 WORD Bottom;
38 UBYTE pmsr_Type;
41 typedef struct PMShadowRect PMSR;
42 typedef struct MinList PMSRList;
44 #define PM_InitShadowList (PMSRList *)PM_InitList
45 #define PM_FreeShadowList(l) PM_FreeList((PMDList *)l)
46 #define PM_CopyShadowList(l) (PMSRList *)PM_CopyList((PMDList *)l)
47 #define PM_AddShadowToList(l, A) PM_AddToList((PMDList *)l, (PMNode *)A)
48 #define PM_UnlinkShadow(l, A) PM_Unlink((PMDList *)l, (PMNode *)A)
49 #define PM_FreeShadowNode(A) PM_FreeNode((PMNode *)A)
50 //#define PM_CopyShadowNode(A) (PMSR *)PM_CopyNode((PMNode *)A)
52 void PM_AddShadowToList(PMSRList *l, PMSR *A); // Add A to l. *
53 void PM_UnlinkShadow(PMSRList *l, PMSR *A); // Remove A from l. *
54 void PM_FreeShadowNode(PMSR *A); // Free a shadow node. *
56 PMSR *PM_CopyShadowNode(PMSR *A); // Copy a shadow node. *
59 //PMSRList *PM_InitShadowList(void); // Create a new list header *
60 //void PM_FreeShadowList(PMSRList *list); // Free a list of shadow rects *
61 //PMSRList *PM_CopyShadowList(PMSRList *list); // Copy a list of shadow rects *
63 BOOL PM_AddShadow(PMSRList *sigma, // Add shadows in delta to
64 PMSRList *delta); // sigma, and modify shadows
65 // in delta so they will not
66 // overlap shadows in sigma. *
68 BOOL PM_SubMenuRect(PMSRList *sigma, // Subract a rectangle from
69 WORD l, WORD t, WORD w, WORD h); // list. *
73 // Support functions.
76 BOOL PM_ShadowOverlap(PMSR *A, PMSR *B); // Does A touch B anywhere? *
78 #endif