(* @B- @P- *) IMPLEMENTATION MODULE Intuition ; FROM SYSTEM IMPORT ADR, ADDRESS ; IMPORT M2Lib ; CONST SHIFT5 = 32 ; SHIFT11 = 2048 ; PROCEDURE CUSTOM_HOOK( gadget : GadgetPtr ) : ADDRESS ; BEGIN RETURN ADDRESS( gadget^.MutualExclude ) END CUSTOM_HOOK ; PROCEDURE GADGET_BOX( g : GadgetPtr ) : IBoxPtr ; BEGIN RETURN ADR( g^.LeftEdge ) END GADGET_BOX ; PROCEDURE IM_BOX( im : ImagePtr ) : IBoxPtr ; BEGIN RETURN ADR( im^.LeftEdge ) END IM_BOX ; PROCEDURE IM_FGPEN( im : ImagePtr ) : SHORTCARD ; BEGIN RETURN im^.PlanePick END IM_FGPEN ; PROCEDURE IM_BGPEN( im : ImagePtr ) : SHORTCARD ; BEGIN RETURN im^.PlaneOnOff END IM_BGPEN ; PROCEDURE MENUNUM( n : CARDINAL ) : CARDINAL ; BEGIN RETURN CARDINAL( BITSET( n ) * BITSET( 01FH ) ) END MENUNUM ; PROCEDURE ITEMNUM( n : CARDINAL ) : CARDINAL ; BEGIN RETURN CARDINAL( BITSET( n / SHIFT5 ) * BITSET( 0003FH ) ) END ITEMNUM ; PROCEDURE SUBNUM( n : CARDINAL ) : CARDINAL ; BEGIN RETURN CARDINAL( BITSET( n / SHIFT11 ) * BITSET( 0001FH ) ) END SUBNUM ; PROCEDURE SHIFTMENU( n : CARDINAL ) : CARDINAL ; BEGIN RETURN CARDINAL( BITSET( n ) * BITSET( 01FH ) ) END SHIFTMENU ; PROCEDURE SHIFTITEM( n : CARDINAL ) : CARDINAL ; BEGIN RETURN CARDINAL( BITSET( n ) * BITSET( 03FH ) ) * SHIFT5 END SHIFTITEM ; PROCEDURE SHIFTSUB( n : CARDINAL ) : CARDINAL ; BEGIN RETURN CARDINAL( BITSET( n ) * BITSET( 01FH ) ) * SHIFT11 END SHIFTSUB ; PROCEDURE FULLMENUNUM( menu, item, sub : CARDINAL ) : CARDINAL ; BEGIN RETURN SHIFTMENU( menu ) + SHIFTITEM( item ) + SHIFTSUB( sub ) END FULLMENUNUM ; BEGIN IntuitionBase := M2Lib.OpenLib( "intuition.library", VERSION ) END Intuition.