2 (C) 1998 AROS - The Amiga Research OS
5 Desc: Test for graphics.hidd
9 /*****************************************************************************
13 GCReadWritePixelDirect
17 GCReadWritePixelDirect HIDD/K,WIDTH/N/K,HEIGHT/N/K,DEPTH/N/K,CHUNKY/S,DISPLAYABLE=DP/S
25 Creates a gc, writes and reads some pixels and disposes
29 HIDD - name of the hidd to use e.g. "graphics-X11.hidd"
30 (default: graphics.hidd)
31 WIDTH - width of bitmap (default: 320)
32 HEIGHT - height of bitmap (default: 200)
33 DEPTH - depth of bitmap (default: 8)
34 CHUNKY - create bitmap in chunky-mode (default: planar)
35 DISPLAYABLE - show bitmap (default: FALSE)
38 RETURN_OK - hidd works
39 RETURN_ERROR - hidd produce errors
40 RETURN_FAIL - could not test hidd i.e. OpenLibrary() fails
54 ******************************************************************************/
61 #include <aros/config.h>
63 #include <exec/types.h>
65 #include <proto/exec.h>
66 #include <proto/dos.h>
67 #include <proto/oop.h>
68 #include <proto/utility.h>
70 #include <utility/tagitem.h>
73 #include <hidd/graphics.h>
74 #include <hidd/graphics-amiga-intuition.h>
76 #include "gfxhiddtool.h"
82 #include <aros/debug.h>
84 struct DosLibrary
*DOSBase
;
85 struct Library
*OOPBase
;
86 struct Library
*HIDDGraphicsBase
;
88 struct ght_OpenLibs LibsArray
[] =
90 GHT_LIB("dos.library" , 37, &DOSBase
),
91 GHT_LIB(AROSOOP_NAME
, 0, &OOPBase
),
92 GHT_LIB(NULL
, 0, NULL
)
94 /***************************************************************/
96 int main(int argc
, char **argv
)
98 ULONG ret
= RETURN_FAIL
;
100 OOP_AttrBase HiddGCAttrBase
;
101 OOP_AttrBase HiddGfxAttrBase
;
102 OOP_AttrBase HiddBitMapAttrBase
;
104 struct pHidd_BitMap_GetPixel msg_ReadPixel
;
105 struct pHidd_BitMap_PutPixel msg_WritePixel
;
111 STRPTR hiddName
= "graphics.hidd";
115 ULONG format
= vHidd_BitMap_Format_Planar
;
131 struct Args args
= {hiddName
, &width
, &height
, &depth
, 0, 0};
135 if(ght_OpenLibs(LibsArray
))
137 rda
= ReadArgs("HIDD/K,WIDTH/N/K,HEIGHT/N/K,DEPTH/N/K,CHUNKY/S,DISPLAYABLE=DP/S", (IPTR
*)&args
, NULL
);
140 if(args
.chunky
!= 0) format
= vHidd_BitMap_Format_Chunky
;
141 if(args
.displayable
!= 0) args
.displayable
= (ULONG
) TRUE
;
143 HIDDGraphicsBase
= OpenLibrary(args
.hiddName
, 0);
148 HiddGfxAttrBase
= OOP_ObtainAttrBase(IID_Hidd_Gfx
);
149 HiddBitMapAttrBase
= OOP_ObtainAttrBase(IID_Hidd_BitMap
);
150 HiddGCAttrBase
= OOP_ObtainAttrBase(IID_Hidd_GC
);
152 if(HiddGfxAttrBase
&& HiddBitMapAttrBase
&& HiddGCAttrBase
)
154 gfxHidd
= OOP_NewObject(NULL
, args
.hiddName
, NULL
);
157 struct TagItem bm_tags
[] =
159 {aHidd_BitMap_Width
, (IPTR
) *args
.width
},
160 {aHidd_BitMap_Height
, (IPTR
) *args
.height
},
161 {aHidd_BitMap_Depth
, (IPTR
) *args
.depth
},
162 {aHidd_BitMap_Format
, (IPTR
) format
},
163 {aHidd_BitMap_Displayable
, (IPTR
) args
.displayable
},
167 bitMap
= HIDD_Gfx_NewBitMap(gfxHidd
, bm_tags
);
170 struct TagItem gc_tags
[] =
172 {aHidd_GC_BitMap
, (IPTR
) bitMap
},
176 gc
= HIDD_Gfx_NewGC(gfxHidd
, gc_tags
);
179 msg_WritePixel
.val
= 0;
180 msg_WritePixel
.mID
= GetMethodID(IID_Hidd_BitMap
, moHidd_BitMap_PutPixel
);
181 msg_ReadPixel
.mID
= GetMethodID(IID_Hidd_BitMap
, moHidd_BitMap_GetPixel
);
183 for(x
= 0; x
< 30; x
++)
185 msg_WritePixel
.x
= x
;
186 msg_WritePixel
.y
= 1;
187 OOP_DoMethod(gc
, (OOP_Msg
) &msg_WritePixel
);
190 for(y
= 1; y
< 11; y
++)
192 for(x
= 0; x
< 10; x
++)
194 printf(" x: %i y: %i val: %li ", x
, y
, msg_WritePixel
.val
);
195 msg_WritePixel
.x
= x
;
196 msg_WritePixel
.y
= y
;
197 DoMethod(gc
, (Msg
) &msg_WritePixel
);
201 printf("ret: %li: ", (val
= OOP_DoMethod(gc
, (OOP_Msg
) &msg_ReadPixel
)));
202 if(msg_WritePixel
.val
== OOP_DoMethod(gc
, (OOP_Msg
) &msg_ReadPixel
))
212 msg_WritePixel
.val
++;
216 printf("Press enter to continue");
219 HIDD_Gfx_DisposeGC(gfxHidd
, gc
);
224 HIDD_Gfx_DisposeBitMap(gfxHidd
, bitMap
);
227 if(gfxHidd
) OOP_DisposeObject(gfxHidd
);
229 } /* if(HiddGfxAttrBase && HiddBitMapAttrBase && HiddGCAttrBase) */
231 if(HiddGfxAttrBase
) OOP_ReleaseAttrBase(IID_Hidd_Gfx
);
232 if(HiddBitMapAttrBase
) OOP_ReleaseAttrBase(IID_Hidd_BitMap
);
233 if(HiddGCAttrBase
) OOP_ReleaseAttrBase(IID_Hidd_GC
);
235 CloseLibrary(HIDDGraphicsBase
);
236 } /* if(HIDDGraphicsBase) */
241 PrintFault(IoErr(), "");
242 } /* if (rda != NULL) */
243 } /* if OpenLibs() */
245 ght_CloseLibs(LibsArray
);