Updated PCI IDs to latest snapshot.
[tangerine.git] / test / HiddGraphics / GCDrawLine.c
blob592f036594d410ef3fcd2885a83cad60b8a203c4
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 GCDrawLine
15 SYNOPSIS
17 GCDrawLine 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, draws some lines with and without a pattern and
26 disposes 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;
112 ULONG linePat;
113 char wait;
115 struct Args
117 STRPTR hiddName;
118 IPTR *width;
119 IPTR *height;
120 IPTR *depth;
121 IPTR *chunky;
122 ULONG displayable;
125 struct Args args = {hiddName, &width, &height, &depth, 0, 0};
126 struct RDArgs *rda;
129 if(ght_OpenLibs(LibsArray))
131 rda = ReadArgs("HIDD/K,WIDTH/N/K,HEIGHT/N/K,DEPTH/N/K,CHUNKY/S,DISPLAYABLE=DP/S", (IPTR *)&args, NULL);
132 if (rda != NULL)
134 if(args.chunky != 0) format = vHidd_BitMap_Format_Chunky;
135 if(args.displayable != 0) args.displayable = (ULONG) TRUE;
137 HIDDGraphicsBase = OpenLibrary(args.hiddName, 0);
138 if(HIDDGraphicsBase)
140 ret = RETURN_ERROR;
142 HiddGfxAttrBase = OOP_ObtainAttrBase(IID_Hidd_Gfx);
143 HiddBitMapAttrBase = OOP_ObtainAttrBase(IID_Hidd_BitMap);
144 HiddGCAttrBase = OOP_ObtainAttrBase(IID_Hidd_GC);
146 if(HiddGfxAttrBase && HiddBitMapAttrBase && HiddGCAttrBase)
148 gfxHidd = OOP_NewObject(NULL, args.hiddName, NULL);
149 if(gfxHidd)
151 struct TagItem bm_tags[] =
153 {aHidd_BitMap_Width, (IPTR) *args.width},
154 {aHidd_BitMap_Height, (IPTR) *args.height},
155 {aHidd_BitMap_Depth, (IPTR) *args.depth},
156 {aHidd_BitMap_Format, (IPTR) format},
157 {aHidd_BitMap_Displayable, (IPTR) args.displayable},
158 {TAG_DONE, 0UL}
161 bitMap = HIDD_Gfx_NewBitMap(gfxHidd, bm_tags);
162 if(bitMap)
164 struct TagItem gc_tags[] =
166 {aHidd_GC_BitMap, (IPTR) bitMap},
167 {TAG_DONE, 0UL}
170 gc = HIDD_Gfx_NewGC(gfxHidd, gc_tags);
171 if(gc)
173 OOP_SetAttrsTags(gc, aHidd_GC_Foreground, ~0, TAG_END);
175 HIDD_BM_DrawLine(gc, 160, 100, 160, 20);
176 HIDD_BM_DrawLine(gc, 160, 100, 260, 100);
177 HIDD_BM_DrawLine(gc, 160, 100, 160, 180);
178 HIDD_BM_DrawLine(gc, 160, 100, 60, 100);
180 OOP_SetAttrsTags(gc, aHidd_GC_LinePattern, 0xF0F0, TAG_END);
181 OOP_GetAttr(gc, aHidd_GC_LinePattern, &linePat);
182 printf("Line pattern: %lx\n", linePat);
183 HIDD_BM_DrawLine(gc, 0, 10, 30, 10);
185 OOP_SetAttrsTags(gc, aHidd_GC_LinePattern, 0x5252, TAG_END);
186 OOP_GetAttr(gc, aHidd_GC_LinePattern, &linePat);
187 printf("Line pattern: %lx\n", linePat);
188 HIDD_BM_DrawLine(gc, 0, 14, 30, 14);
190 printf("Press enter to continue");
191 scanf("%c", &wait);
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);