Fixed missing fprintf argument.
[AROS.git] / rom / graphics / bltbitmaprastport.c
blob144033f5f899e1c967f2d94ac6e745884b078250
1 /*
2 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc:
6 Lang: english
7 */
8 #include <aros/debug.h>
9 #include <proto/oop.h>
10 #include "graphics_intern.h"
11 #include "gfxfuncsupport.h"
13 struct bitmap_render_data
15 struct render_special_info rsi;
16 ULONG minterm;
17 struct BitMap *srcbm;
18 OOP_Object *srcbm_obj;
22 static ULONG bitmap_render(APTR bitmap_rd, LONG srcx, LONG srcy,
23 OOP_Object *dstbm_obj, OOP_Object *dst_gc,
24 LONG x1, LONG y1, LONG x2, LONG y2, struct GfxBase *GfxBase);
26 /*****************************************************************************
28 NAME */
29 #include <proto/graphics.h>
31 AROS_LH9 (void, BltBitMapRastPort,
33 /* SYNOPSIS */
34 AROS_LHA(struct BitMap *, srcBitMap, A0),
35 AROS_LHA(LONG , xSrc, D0),
36 AROS_LHA(LONG , ySrc, D1),
37 AROS_LHA(struct RastPort *, destRP, A1),
38 AROS_LHA(LONG , xDest, D2),
39 AROS_LHA(LONG , yDest, D3),
40 AROS_LHA(LONG , xSize, D4),
41 AROS_LHA(LONG , ySize, D5),
42 AROS_LHA(ULONG , minterm, D6),
44 /* LOCATION */
45 struct GfxBase *, GfxBase, 101, Graphics)
47 /* FUNCTION
49 INPUTS
51 RESULT
53 NOTES
55 EXAMPLE
57 BUGS
59 SEE ALSO
61 INTERNALS
63 HISTORY
64 27-11-96 digulla automatically created from
65 graphics_lib.fd and clib/graphics_protos.h
67 *****************************************************************************/
69 AROS_LIBFUNC_INIT
71 struct bitmap_render_data brd;
72 struct Rectangle rr;
73 HIDDT_DrawMode old_drmd;
74 OOP_Object *gc;
75 Point src;
77 struct TagItem gc_tags[] =
79 { aHidd_GC_DrawMode , 0UL },
80 { TAG_DONE }
83 EnterFunc(bug("BltBitMapRastPort(%d %d %d, %d, %d, %d)\n"
84 , xSrc, ySrc, xDest, yDest, xSize, ySize));
86 if (!OBTAIN_DRIVERDATA(destRP, GfxBase))
87 return;
89 FIX_GFXCOORD(xSrc);
90 FIX_GFXCOORD(ySrc);
91 FIX_GFXCOORD(xDest);
92 FIX_GFXCOORD(yDest);
94 brd.minterm = minterm;
95 brd.srcbm_obj = OBTAIN_HIDD_BM(srcBitMap);
96 if (NULL == brd.srcbm_obj)
98 RELEASE_DRIVERDATA(destRP, GfxBase);
99 return;
102 brd.srcbm = srcBitMap;
104 gc = GetDriverData(destRP)->dd_GC;
105 OOP_GetAttr(gc, aHidd_GC_DrawMode, &old_drmd);
107 gc_tags[0].ti_Data = MINTERM_TO_GCDRMD(minterm);
108 OOP_SetAttrs(gc, gc_tags);
110 rr.MinX = xDest;
111 rr.MinY = yDest;
112 rr.MaxX = xDest + xSize - 1;
113 rr.MaxY = yDest + ySize - 1;
115 src.x = xSrc;
116 src.y = ySrc;
118 do_render_func(destRP, &src, &rr, bitmap_render, &brd, TRUE, GfxBase);
120 RELEASE_HIDD_BM(brd.srcbm_obj, srcBitMap);
122 gc_tags[0].ti_Data = old_drmd;
123 OOP_SetAttrs(gc, gc_tags);
125 RELEASE_DRIVERDATA(destRP, GfxBase);
127 ReturnVoid("BltBitMapRastPort");
129 AROS_LIBFUNC_EXIT
131 } /* BltBitMapRastPort */
133 /****************************************************************************************/
135 static ULONG bitmap_render(APTR bitmap_rd, LONG srcx, LONG srcy,
136 OOP_Object *dstbm_obj, OOP_Object *dst_gc,
137 LONG x1, LONG y1, LONG x2, LONG y2, struct GfxBase *GfxBase)
139 struct bitmap_render_data *brd;
140 ULONG width, height;
142 width = x2 - x1 + 1;
143 height = y2 - y1 + 1;
145 brd = (struct bitmap_render_data *)bitmap_rd;
147 // D(bug("bitmap_render(%p, %d, %d, %p, %p, %d, %d, %d, %d, %p)\n"
148 // , bitmap_rd, srcx, srcy, dstbm_obj, dst_gc, x1, y1, x2, y2, GfxBase));
151 /* Get some info on the colormaps. We have to make sure
152 that we have the apropriate mapping tables set.
155 if (!int_bltbitmap(brd->srcbm
156 , brd->srcbm_obj
157 , srcx, srcy
158 , brd->rsi.curbm
159 , dstbm_obj
160 , x1, y1
161 , x2 - x1 + 1, y2 - y1 + 1
162 , brd->minterm
163 , dst_gc
164 , GfxBase
166 return 0;
168 return width * height;
171 /****************************************************************************************/