r6831@lvps87-230-33-50: verhaegs | 2008-02-03 14:08:57 +0100
[AROS.git] / test / HiddGraphics / GCWritePixel.c
blobeabf5943903908593cbc2fd2dc8731bacddea3a0
1 /*
2 Copyright © 1998, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: Test for graphics.hidd
6 Lang: english
7 */
9 /*****************************************************************************
11 NAME
13 GCWritePixel
15 SYNOPSIS
17 GCWritePixel HIDD/K,WIDTH/N/K,HEIGHT/N/K,DEPTH/N/K,CHUNKY/S,DISPLAYABLE=DP/S
19 LOCATION
21 test/HiddGraphics
23 FUNCTION
25 Creates a gc, writes some pixels and disposes
26 the gc.
28 INPUTS
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)
37 RESULT
38 RETURN_OK - hidd works
39 RETURN_ERROR - hidd produce errors
40 RETURN_FAIL - could not test hidd i.e. OpenLibrary() fails
42 NOTES
44 EXAMPLE
46 BUGS
48 SEE ALSO
50 INTERNALS
52 HISTORY
54 ******************************************************************************/
56 #define AROS_USE_OOP
58 #include <stdlib.h>
59 #include <stdio.h>
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>
72 #include <oop/oop.h>
73 #include <hidd/graphics.h>
74 #include <hidd/graphics-amiga-intuition.h>
76 #include "gfxhiddtool.h"
78 #undef SDEBUG
79 #undef DEBUG
80 #define DEBUG 1
81 #include <aros/debug.h>
83 struct DosLibrary *DOSBase;
84 struct Library *OOPBase;
85 struct Library *HIDDGraphicsBase;
87 struct ght_OpenLibs LibsArray[] =
89 GHT_LIB("dos.library" , 37, &DOSBase),
90 GHT_LIB(AROSOOP_NAME , 0, &OOPBase),
91 GHT_LIB(NULL , 0, NULL)
93 /***************************************************************/
95 int main(int argc, char **argv)
97 ULONG ret = RETURN_FAIL;
99 OOP_AttrBase HiddGCAttrBase;
100 OOP_AttrBase HiddGfxAttrBase;
101 OOP_AttrBase HiddBitMapAttrBase;
103 OOP_Object *gfxHidd;
104 OOP_Object *bitMap;
105 OOP_Object *gc;
107 STRPTR hiddName = "graphics.hidd";
108 ULONG width = 320;
109 ULONG height = 200;
110 ULONG depth = 8;
111 ULONG format = vHidd_BitMap_Format_Planar;
113 WORD x;
114 char wait;
116 struct Args
118 STRPTR hiddName;
119 IPTR *width;
120 IPTR *height;
121 IPTR *depth;
122 IPTR *chunky;
123 ULONG displayable;
126 struct Args args = {hiddName, &width, &height, &depth, 0, 0};
127 struct RDArgs *rda;
130 if(ght_OpenLibs(LibsArray))
132 rda = ReadArgs("HIDD/K,WIDTH/N/K,HEIGHT/N/K,DEPTH/N/K,CHUNKY/S,DISPLAYABLE=DP/S", (IPTR *)&args, NULL);
133 if (rda != NULL)
135 if(args.chunky != 0) format = vHidd_BitMap_Format_Chunky;
136 if(args.displayable != 0) args.displayable = (ULONG) TRUE;
138 HIDDGraphicsBase = OpenLibrary(args.hiddName, 0);
139 if(HIDDGraphicsBase)
141 ret = RETURN_ERROR;
143 HiddGfxAttrBase = OOP_ObtainAttrBase(IID_Hidd_Gfx);
144 HiddBitMapAttrBase = OOP_ObtainAttrBase(IID_Hidd_BitMap);
145 HiddGCAttrBase = OOP_ObtainAttrBase(IID_Hidd_GC);
147 if(HiddGfxAttrBase && HiddBitMapAttrBase && HiddGCAttrBase)
149 gfxHidd = OOP_NewObject(NULL, args.hiddName, NULL);
150 if(gfxHidd)
152 struct TagItem bm_tags[] =
154 {aHidd_BitMap_Width, (IPTR) *args.width},
155 {aHidd_BitMap_Height, (IPTR) *args.height},
156 {aHidd_BitMap_Depth, (IPTR) *args.depth},
157 {aHidd_BitMap_Format, (IPTR) format},
158 {aHidd_BitMap_Displayable, (IPTR) args.displayable},
159 {TAG_DONE, 0UL}
162 bitMap = HIDD_Gfx_NewBitMap(gfxHidd, bm_tags);
163 if(bitMap)
165 struct TagItem gc_tags[] =
167 {aHidd_GC_BitMap, (IPTR) bitMap},
168 {TAG_DONE, 0UL}
171 gc = HIDD_Gfx_NewGC(gfxHidd, gc_tags);
172 if(gc)
174 OOP_SetAttrsTags(gc, aHidd_GC_Foreground, 15, TAG_END);
176 for(x = 10; x < 30; x++)
178 OOP_SetAttrsTags(gc, aHidd_GC_ColorMask, ~0, TAG_END);
179 HIDD_BM_DrawPixel(gc, x, 10);
181 OOP_SetAttrsTags(gc, aHidd_GC_ColorMask, ~0 - 7, TAG_END);
182 HIDD_BM_DrawPixel(gc, x, 12);
184 OOP_SetAttrsTags(gc, aHidd_GC_ColorMask, 0, TAG_END);
185 HIDD_BM_DrawPixel(gc, x, 14);
188 printf("Press enter to continue");
189 scanf("%c", &wait);
191 HIDD_Gfx_DisposeGC(gfxHidd, gc);
193 ret = RETURN_OK;
196 HIDD_Gfx_DisposeBitMap(gfxHidd, bitMap);
199 if(gfxHidd) OOP_DisposeObject(gfxHidd);
201 } /* if(HiddGfxAttrBase && HiddBitMapAttrBase && HiddGCAttrBase) */
203 if(HiddGfxAttrBase) OOP_ReleaseAttrBase(IID_Hidd_Gfx);
204 if(HiddBitMapAttrBase) OOP_ReleaseAttrBase(IID_Hidd_BitMap);
205 if(HiddGCAttrBase) OOP_ReleaseAttrBase(IID_Hidd_GC);
207 CloseLibrary(HIDDGraphicsBase);
208 } /* if(HIDDGraphicsBase) */
209 FreeArgs(rda);
211 else
213 PrintFault(IoErr(), "");
214 } /* if (rda != NULL) */
215 } /* if OpenLibs() */
217 ght_CloseLibs(LibsArray);
219 return(ret);