From 62e509e9c90d728c9f65145947276f79112ab48c Mon Sep 17 00:00:00 2001 From: "Christian A. Weber" Date: Tue, 2 Nov 1993 18:53:33 +0000 Subject: Initial revision --- GadgetSupport.S | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 GadgetSupport.S (limited to 'GadgetSupport.S') diff --git a/GadgetSupport.S b/GadgetSupport.S new file mode 100644 index 0000000..2d8b02b --- /dev/null +++ b/GadgetSupport.S @@ -0,0 +1,123 @@ +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +*+ +* +*+ GadgetSupport - Routinen zum De-/Selektieren v. BoolGadgets +* +*+ +* +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +*+ +* +*+ Modification History: +* +*+ -------------------- +* +*+ +* +*+ 26-Oct-87 CHW Created this file! +* +*+ 25-Jun-89 CHW Cleaned up for chlib +* +*+ 20-Jan-90 CHW Window pointer may be 0 +* +*+ 10-Sep-90 CHW A6 wird jetzt auch gerettet, macht jetzt brav +* +*+ RemoveGadget() und wieder AddGadget(), kann jetzt +* +*+ auch GRELRIGHT und GRELHEIGHT +* +*+ +* +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + IDNT GadgetSupport + SECTION text,CODE + + INCLUDE "exec/macros.i" + INCLUDE "intuition/intuition.i" + + XREF _GfxBase,_IntuitionBase + + XDEF @SelectGadget,@DeselectGadget + + +GB_RELBOTTOM: EQU 3 ; Bit 3 im WORD +GB_RELRIGHT: EQU 4 ; Bit 4 im WORD +GB_SELECTED: EQU 7 ; Bit 7 im WORD + + + +************************************************************************** +** ** +** SelectGadget - Boolean-Gadget selektieren & highlighten ** +** ** +** Parameter : A0.L : Adresse der Window-Struktur oder 0 ** +** A1.L : Zeiger auf zu selektierendes Gadget ** +** Resultat : nix ** +** ** +************************************************************************** + +@SelectGadget: + movem.l d0-d4/a0-a3/a6,-(SP) ; muss so bleiben, siehe unten + + movea.l a0,a2 ; A2 : Window + movea.l a1,a3 ; A3 : Gadget + bset.b #GB_SELECTED,gg_Flags+1(a3) + bne norefresh ; Gleicher wie vorher ---> fertig + bra.s commoncont ; ---> + + + +************************************************************************** +** ** +** DeselectGadget - Boolean-Gadget deselektieren ** +** ** +** Parameter : A0.L : Adresse der Window-Struktur oder 0 ** +** A1.L : Zeiger auf zu deselektierendes Gadget ** +** Resultat : nix ** +** ** +************************************************************************** + +@DeselectGadget: + movem.l d0-d4/a0-a3/a6,-(SP) ; muss so bleiben + + movea.l a0,a2 ; A2 : Window + movea.l a1,a3 ; A3 : Gadget + bclr.b #GB_SELECTED,gg_Flags+1(a3) + beq.s norefresh ; Gleicher wie vorher ---> fertig + +commoncont: move.l a2,d0 ; Window + beq.s norefresh ; Null ---> Kein Refresh + movea.l _IntuitionBase,a6 + JSRLIB RemoveGadget + move.l d0,d4 ; D4 : Gadget-Position + + moveq.l #0,d0 ; Farbe 0 + movea.l wd_RPort(a2),a1 ; Window's RastPort + movea.l _GfxBase,a6 + JSRLIB SetAPen ; Farbe setzen + moveq.l #RP_JAM2,d0 + movea.l wd_RPort(a2),a1 ; Window's RastPort + JSRLIB SetDrMd ; Modus setzen + + movea.l wd_RPort(a2),a1 + movem.w gg_LeftEdge(a3),d0-d3 ; Alles auf einmal! + + btst #GB_RELRIGHT,gg_Flags+1(a3) + beq.s 1$ + add.w wd_Width(a2),d0 ; Korrektur von GRELRIGHT + subq.w #1,d0 +1$: + btst #GB_RELBOTTOM,gg_Flags+1(a3) + beq.s 2$ + add.w wd_Height(a2),d1 ; Korrektur von GRELBOTTOM + subq.w #1,d1 +2$: + add.w d0,d2 ; Width -> X2 + add.w d1,d3 ; Height -> Y2 + subq.w #1,d2 + subq.w #1,d3 + JSRLIB RectFill ; Gadget löschen + + move.l d4,d0 ; Gadget-Position + movea.l a2,a0 ; Window + movea.l a3,a1 ; Gadget + movea.l _IntuitionBase,a6 + JSRLIB AddGadget + + movea.l a3,a0 ; Gadget + movea.l a2,a1 ; Window + suba.l a2,a2 ; Requester + moveq.l #1,d0 ; nur dieses Gadget + JSRLIB RefreshGList + +norefresh: movem.l (SP)+,d0-d4/a0-a3/a6 + rts + + END -- cgit v1.2.3