2 Copyright © 1995-2011, 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.
54 29-10-95 digulla automatically created from
55 intuition_lib.fd and clib/intuition_protos.h
57 *****************************************************************************/
61 int_PrintIText(rp
, iText
, leftOffset
, topOffset
, FALSE
, IntuitionBase
);
67 void int_PrintIText(struct RastPort
* rp
, struct IntuiText
* iText
,
68 LONG leftOffset
, LONG topOffset
, BOOL ignore_attributes
,
69 struct IntuitionBase
*IntuitionBase
)
72 struct GfxBase
*GfxBase
= GetPrivIBase(IntuitionBase
)->GfxBase
;
80 struct TextFont
*font
;
81 struct TextFont
*newfont
= NULL
;
83 EXTENDWORD(leftOffset
);
84 EXTENDWORD(topOffset
);
86 DEBUG_PRINTITEXT(dprintf("int_PrintIText: rp %p text %p Left %ld Top %ld IgnoreAttrs %ld\n",
87 rp
, iText
, leftOffset
, topOffset
, ignore_attributes
));
89 /* Store important variables of the RastPort */
91 GetRPAttrs(rp
,RPTAG_PenMode
,(IPTR
)&penmode
,RPTAG_APen
,(IPTR
)&apen
,
92 RPTAG_BPen
,(IPTR
)&bpen
,RPTAG_DrMd
,(IPTR
)&drmd
,TAG_DONE
);
94 GetRPAttrs(rp
,RPTAG_APen
,(IPTR
)&apen
,
95 RPTAG_BPen
,(IPTR
)&bpen
,RPTAG_DrMd
,(IPTR
)&drmd
,TAG_DONE
);
99 style
= rp
->AlgoStyle
;
101 /* For all borders... */
102 for ( ; iText
; iText
= iText
->NextText
)
104 if (!ignore_attributes
)
106 /* Change RastPort to the colors/mode specified */
107 SetABPenDrMd (rp
, iText
->FrontPen
, iText
->BackPen
, iText
->DrawMode
);
110 if (iText
->ITextFont
)
112 newfont
= OpenFont (iText
->ITextFont
);
115 SetFont (rp
, newfont
);
117 SetSoftStyle(rp
, iText
->ITextFont
->ta_Style
, AskSoftStyle(rp
));
120 /* Move to initial position */
122 , iText
->LeftEdge
+ leftOffset
123 , iText
->TopEdge
+ topOffset
+ rp
->Font
->tf_Baseline
125 Text (rp
, iText
->IText
, strlen (iText
->IText
));
127 if (iText
->ITextFont
)
137 /* Restore RastPort */
139 SetRPAttrs(rp
,RPTAG_APen
,apen
,RPTAG_BPen
,bpen
,RPTAG_DrMd
,drmd
,RPTAG_PenMode
,penmode
,TAG_DONE
);
141 SetRPAttrs(rp
,RPTAG_APen
,apen
,RPTAG_BPen
,bpen
,RPTAG_DrMd
,drmd
,TAG_DONE
);
144 SetSoftStyle (rp
, style
, AskSoftStyle(rp
));