4 // PopupMenu Library - Topographical Menu Map
6 // Copyright ©2000 Henrik Isaksson <henrik@boing.nu>
7 // All Rights Reserved.
10 #ifndef PM_TOPOGRAPHY_H
11 #define PM_TOPOGRAPHY_H
17 #define PMSHADOW_HORIZ 0x01 // Adjust shadow width
18 #define PMSHADOW_VERT 0x02 // Adjust shadow height
19 #define PMSHADOW_LEFT 0x04 // Adjust shadow left pos
20 #define PMSHADOW_TOP 0x08 // Adjust shadow top pos
22 struct PMTopographicRect
{
28 WORD Height
; // Height over 'ground' measured in menu levels
31 typedef struct PMTopographicRect PMTR
;
32 typedef struct MinList PMTRList
;
34 #define PM_InitTopographicList() ((PMTRList *)PM_InitList())
35 #define PM_FreeTopographicList(l) PM_FreeList((PMDList *)l)
36 #define PM_CopyTopographicList(l) ((PMTRList *)PM_CopyList((PMDList *)l))
37 #define PM_RegionOverlap(A, B) PM_ShadowOverlap((PMSR *)A, (PMSR *)B)
38 #define PM_AddRegionToList(l, A) PM_AddToList((PMDList *)l, (PMNode *)A)
39 #define PM_UnlinkRegion(l, A) PM_Unlink((PMDList *)l, (PMNode *)A)
40 #define PM_FreeTopographicNode(A) PM_FreeNode((PMNode *)A)
42 BOOL
PM_AddTopographicRegion(PMTRList
*lst
, // Add a rectangular region of height
43 WORD l
, WORD t
, WORD r
, WORD b
, WORD h
); // 'h' to the topographic map.
45 BOOL
PM_MapShadow(PMTRList
*top
, PMSRList
*delta
,
46 WORD x
, WORD y
, WORD w
, WORD h
,
47 UWORD menulevel
, UWORD direction
);
49 PMTR
*PM_CopyTopographicNode(PMTR
*A
);
51 BOOL
PM_SubTopographicRects(PMTRList
*dest
, PMTR
*worknode
, PMTR
*rect
);