2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
18 // ui library not C++ ized properly yet
26 static IRes
*gButtBack
;
28 static Rect full_rect
= {{281,434},{281 + 78, 434 + 44}};
29 static Rect close_rect
= {{23,3},{23 + 32, 3 + 40}};
31 static LGadButton close_button
;
32 static DrawElement close_elem
;
33 static IRes
*close_handles
[2];
34 static grs_bitmap
*close_bitmaps
[4];
36 //--------------------------------------------------------------------------------------
37 void DPCMouseModeInit(int )
43 close_handles
[0] = LoadPCX("ML0");
44 close_handles
[1] = LoadPCX("ML1");
45 close_bitmaps
[0] = (grs_bitmap
*) close_handles
[0]->Lock();
46 close_bitmaps
[1] = (grs_bitmap
*) close_handles
[1]->Lock();
47 for (i
= 2; i
< 4; i
++)
49 close_bitmaps
[i
] = close_bitmaps
[0];
52 gButtBack
= LoadPCX("MICELOOK");
60 use_rect
.ul
.x
= (smode
.w
- RectWidth(&full_rect
)) / 2;
61 use_rect
.ul
.y
= smode
.h
- RectHeight(&full_rect
);
62 use_rect
.lr
.x
= use_rect
.ul
.x
+ RectWidth(&full_rect
);
63 use_rect
.lr
.y
= use_rect
.ul
.y
+ RectHeight(&full_rect
);
64 DPCOverlaySetRect(kOverlayMouseMode
,use_rect
);
67 DPCOverlaySetRect(kOverlayMouseMode
,full_rect
);
71 //--------------------------------------------------------------------------------------
72 void DPCMouseModeTerm(void)
76 SafeFreeHnd(&gButtBack
);
78 close_handles
[0]->Unlock();
79 close_handles
[1]->Unlock();
80 SafeFreeHnd(&close_handles
[0]);
81 SafeFreeHnd(&close_handles
[1]);
85 //--------------------------------------------------------------------------------------
86 void DPCMouseModeDraw(unsigned long inDeltaTicks
)
90 Rect r
= DPCOverlayGetRect(kOverlayMouseMode
);
92 DrawByHandle(gButtBack
,r
.ul
);
94 LGadDrawBox(VB(&close_button
),NULL
);
97 mouse_get_xy(&mpt
.x
,&mpt
.y
);
98 if (RectTestPt(&r
,mpt
))
99 DPCStringFetch(gHelpString
,sizeof(gHelpString
),"MouseHelpMouseMode","misc");
102 //--------------------------------------------------------------------------------------
103 void DeferredMouseMode(void *)
105 MouseMode(FALSE
,TRUE
);
107 //--------------------------------------------------------------------------------------
108 static bool close_cb(short action
, void* data
, LGadBox
* vb
)
110 uiDefer(DeferredMouseMode
,NULL
);
113 //--------------------------------------------------------------------------------------
114 static void BuildInterfaceButtons(void)
118 Rect r
= DPCOverlayGetRect(kOverlayMouseMode
);
120 close_elem
.draw_type
= DRAWTYPE_BITMAPOFFSET
;
121 close_elem
.draw_data
= close_bitmaps
;
122 close_elem
.draw_data2
= (void *)4; // should be 2 but hackery required
124 LGadCreateButtonArgs(&close_button
, LGadCurrentRoot(), close_rect
.ul
.x
+ r
.ul
.x
, close_rect
.ul
.y
+ r
.ul
.y
,
125 RectWidth(&close_rect
), RectHeight(&close_rect
), &close_elem
, close_cb
, 0);
129 //--------------------------------------------------------------------------------------
130 static void DestroyInterfaceButtons(void)
133 LGadDestroyBox(VB(&close_button
),FALSE
);
136 //--------------------------------------------------------------------------------------
137 void DPCMouseModeStateChange(int which
)
139 if (DPCOverlayCheck(which
))
141 BuildInterfaceButtons();
145 DestroyInterfaceButtons();
148 //--------------------------------------------------------------------------------------
150 sOverlayFunc OverlayMouseMode
=
152 DPCMouseModeDraw
, // draw
153 DPCMouseModeInit
, // init
154 DPCMouseModeTerm
, // term
156 NULL
, // dclick (really use)
162 DPCMouseModeStateChange
, // state
163 NULL
, // transparency