2 Copyright © 1995-2013, The AROS Development Team. All rights reserved.
3 Copyright © 2001-2003, The MorphOS Development Team. All Rights Reserved.
8 #include <proto/graphics.h>
9 #include "intuition_intern.h"
11 /*****************************************************************************
14 #include <graphics/rastport.h>
15 #include <graphics/rpattr.h>
16 #include <intuition/intuition.h>
17 #include <proto/intuition.h>
19 AROS_LH4(void, PrintIText
,
22 AROS_LHA(struct RastPort
*, rp
, A0
),
23 AROS_LHA(struct IntuiText
*, iText
, A1
),
24 AROS_LHA(LONG
, leftOffset
, D0
),
25 AROS_LHA(LONG
, topOffset
, D1
),
28 struct IntuitionBase
*, IntuitionBase
, 36, Intuition
)
31 Render an IntuiText in the specified RastPort with the
35 rp - Draw into this RastPort
36 iText - Render this text
37 leftOffset, topOffset - Starting-Point. All coordinates in the
38 IntuiText structures are relative to this point.
53 *****************************************************************************/
57 int_PrintIText(rp
, iText
, leftOffset
, topOffset
, FALSE
, IntuitionBase
);
63 void int_PrintIText(struct RastPort
* rp
, struct IntuiText
* iText
,
64 LONG leftOffset
, LONG topOffset
, BOOL ignore_attributes
,
65 struct IntuitionBase
*IntuitionBase
)
68 struct GfxBase
*GfxBase
= GetPrivIBase(IntuitionBase
)->GfxBase
;
76 struct TextFont
*font
;
77 struct TextFont
*newfont
= NULL
;
79 EXTENDWORD(leftOffset
);
80 EXTENDWORD(topOffset
);
82 DEBUG_PRINTITEXT(dprintf("int_PrintIText: rp %p text %p Left %ld Top %ld IgnoreAttrs %ld\n",
83 rp
, iText
, leftOffset
, topOffset
, ignore_attributes
));
85 /* Store important variables of the RastPort */
87 GetRPAttrs(rp
,RPTAG_PenMode
,(IPTR
)&penmode
,RPTAG_APen
,(IPTR
)&apen
,
88 RPTAG_BPen
,(IPTR
)&bpen
,RPTAG_DrMd
,(IPTR
)&drmd
,TAG_DONE
);
90 GetRPAttrs(rp
,RPTAG_APen
,(IPTR
)&apen
,
91 RPTAG_BPen
,(IPTR
)&bpen
,RPTAG_DrMd
,(IPTR
)&drmd
,TAG_DONE
);
95 style
= rp
->AlgoStyle
;
97 /* For all borders... */
98 for ( ; iText
; iText
= iText
->NextText
)
100 if (!ignore_attributes
)
102 /* Change RastPort to the colors/mode specified */
103 SetABPenDrMd (rp
, iText
->FrontPen
, iText
->BackPen
, iText
->DrawMode
);
106 if (iText
->ITextFont
)
108 newfont
= OpenFont (iText
->ITextFont
);
111 SetFont (rp
, newfont
);
113 SetSoftStyle(rp
, iText
->ITextFont
->ta_Style
, AskSoftStyle(rp
));
116 /* Move to initial position */
118 , iText
->LeftEdge
+ leftOffset
119 , iText
->TopEdge
+ topOffset
+ rp
->Font
->tf_Baseline
121 Text (rp
, iText
->IText
, iText
->IText
? strlen (iText
->IText
) : 0);
123 if (iText
->ITextFont
)
133 /* Restore RastPort */
135 SetRPAttrs(rp
,RPTAG_APen
,apen
,RPTAG_BPen
,bpen
,RPTAG_DrMd
,drmd
,RPTAG_PenMode
,penmode
,TAG_DONE
);
137 SetRPAttrs(rp
,RPTAG_APen
,apen
,RPTAG_BPen
,bpen
,RPTAG_DrMd
,drmd
,TAG_DONE
);
140 SetSoftStyle (rp
, style
, AskSoftStyle(rp
));