2 Copyright © 1995-2007, The AROS Development Team. All rights reserved.
3 Copyright © 2001-2003, The MorphOS Development Team. All Rights Reserved.
7 #include <proto/graphics.h>
8 #include <proto/layers.h>
9 #include <graphics/rpattr.h>
10 #include "intuition_intern.h"
12 /*****************************************************************************
15 #include <graphics/rastport.h>
16 #include <intuition/intuition.h>
17 #include <proto/intuition.h>
19 AROS_LH4(void, DrawBorder
,
22 AROS_LHA(struct RastPort
*, rp
, A0
),
23 AROS_LHA(struct Border
*, border
, A1
),
24 AROS_LHA(LONG
, leftOffset
, D0
),
25 AROS_LHA(LONG
, topOffset
, D1
),
28 struct IntuitionBase
*, IntuitionBase
, 18, Intuition
)
31 Draws one or more borders in the specified RastPort. Rendering
32 will start at the position which you get when you add the offsets
33 leftOffset and topOffset to the LeftEdge and TopEdge specified
34 in the Border structure. All coordinates are relative to that point.
37 rp - The RastPort to render into
38 border - Information what and how to render
39 leftOffset, topOffset - Initial starting position
47 // Draw a house with one stroke
48 // The drawing starts at the lower left edge
65 8, // Number of pairs in XY
67 NULL // No next border
70 // Render the house with the bottom left edge at 150, 50
71 DrawBorder (rp, &demo, 50, -50);
80 29-10-95 digulla automatically created from
81 intuition_lib.fd and clib/intuition_protos.h
83 *****************************************************************************/
98 EXTENDWORD(leftOffset
);EXTENDWORD(topOffset
);
100 DEBUG_DRAWBORDER(dprintf("DrawBorder: rp %p border %p Left %ld Top %ld\n",
101 rp
, border
, leftOffset
, topOffset
));
106 if (rp
->Layer
) LockLayer(0,rp
->Layer
);
108 /* Store important variables of the RastPort */
110 GetRPAttrs(rp
,RPTAG_PenMode
,(ULONG
)&penmode
,RPTAG_APen
,(ULONG
)&apen
,
111 RPTAG_BPen
,(ULONG
)&bpen
,RPTAG_DrMd
,(ULONG
)&drmd
,TAG_DONE
);
113 GetRPAttrs(rp
,RPTAG_APen
,(ULONG
)&apen
,
114 RPTAG_BPen
,(ULONG
)&bpen
,RPTAG_DrMd
,(ULONG
)&drmd
,TAG_DONE
);
117 /* For all borders... */
118 for ( ; border
; border
= border
->NextBorder
)
120 /* Change RastPort to the colors/mode specified */
121 SetAPen (rp
, border
->FrontPen
);
122 SetBPen (rp
, border
->BackPen
);
123 SetDrMd (rp
, border
->DrawMode
);
125 /* Get base coords */
127 x
= border
->LeftEdge
+ leftOffset
;
128 y
= border
->TopEdge
+ topOffset
;
130 /* Start of vector offsets */
133 for (t
= 0; t
< border
->Count
; t
++)
135 /* Add vector offset to current position */
141 Move (rp
, x
+ xoff
, y
+ yoff
);
146 Draw (rp
, x
+ xoff
, y
+ yoff
);
150 } /* for ( ; border; border = border->NextBorder) */
152 /* Restore RastPort */
154 SetRPAttrs(rp
,RPTAG_APen
,apen
,RPTAG_BPen
,bpen
,RPTAG_DrMd
,drmd
,RPTAG_PenMode
,penmode
,TAG_DONE
);
156 SetRPAttrs(rp
,RPTAG_APen
,apen
,RPTAG_BPen
,bpen
,RPTAG_DrMd
,drmd
,TAG_DONE
);
159 if (rp
->Layer
) UnlockLayer(rp
->Layer
);