1 #include <aros/debug.h>
3 #include <proto/exec.h>
4 #include <proto/intuition.h>
5 #include <exec/memory.h>
6 #include <intuition/gadgetclass.h>
8 #include "dosboot_intern.h"
10 struct ButtonGadget
*createButton
12 ULONG left
, ULONG top
, ULONG width
, ULONG height
,
16 struct DOSBootBase
*DOSBootBase
19 struct TagItem tags
[] =
21 {GA_Left
, (IPTR
)left
}, /* 0 */
22 {GA_Top
, (IPTR
)top
}, /* 1 */
23 {GA_Height
, (IPTR
)height
}, /* 2 */
24 {GA_Width
, (IPTR
)width
}, /* 3 */
25 {GA_Border
, 0}, /* 4 */
26 {GA_SelectRender
, 0}, /* 5 */
27 {GA_Previous
, (IPTR
)prev
}, /* 6 */
28 {GA_Text
, (IPTR
)name
}, /* 7 */
29 {GA_ID
, (IPTR
)id
}, /* 8 */
34 struct ButtonGadget
*button
;
36 D(bug("[BootMenu] createButton()\n"));
38 if ((button
= AllocMem(sizeof(struct ButtonGadget
), MEMF_PUBLIC
| MEMF_CLEAR
)) != NULL
)
40 if (!(prev
)) tags
[6].ti_Tag
= TAG_IGNORE
;
42 tags
[4].ti_Data
= (IPTR
)&button
->uborder2
;
43 tags
[5].ti_Data
= (IPTR
)&button
->sborder2
;
44 button
->XY1
[1] = height
;
45 button
->XY1
[4] = width
;
46 button
->XY2
[0] = width
;
47 button
->XY2
[2] = width
;
48 button
->XY2
[3] = height
;
49 button
->XY2
[5] = height
;
50 button
->uborder1
.FrontPen
= 1;
51 button
->uborder1
.DrawMode
= JAM1
;
52 button
->uborder1
.Count
= 3;
53 button
->uborder1
.XY
= button
->XY2
;
54 button
->uborder2
.FrontPen
= 2;
55 button
->uborder2
.DrawMode
= JAM1
;
56 button
->uborder2
.Count
= 3;
57 button
->uborder2
.XY
= button
->XY1
;
58 button
->uborder2
.NextBorder
= &button
->uborder1
;
59 button
->sborder1
.FrontPen
= 2;
60 button
->sborder1
.DrawMode
= JAM1
;
61 button
->sborder1
.Count
= 3;
62 button
->sborder1
.XY
= button
->XY2
;
63 button
->sborder2
.FrontPen
= 1;
64 button
->sborder2
.DrawMode
= JAM1
;
65 button
->sborder2
.Count
= 3;
66 button
->sborder2
.XY
= button
->XY1
;
67 button
->sborder2
.NextBorder
= &button
->sborder1
;
68 if ((button
->gadget
= NewObjectA(NULL
, FRBUTTONCLASS
, tags
)) != NULL
)
72 prev
->NextGadget
= button
->gadget
;
76 FreeMem(button
, sizeof(struct ButtonGadget
));
81 void freeButtonGadget(struct ButtonGadget
*button
, struct DOSBootBase
*DOSBootBase
)
83 D(bug("[BootMenu] freeButtonGadget()\n"));
86 DisposeObject(button
->gadget
);
87 FreeMem(button
, sizeof(struct ButtonGadget
));