Always return 0 in OM_SET (instead of TRUE). texteditor
[tangerine.git] / test / HiddGraphics / GCDrawPolygon.c
blobf075b82dcf052b854d08db12ceb3acc8f65b82b3
1 /*
2 (C) 1998 AROS - The Amiga Research OS
3 $Id$
5 Desc: Test for graphics.hidd
6 Lang: english
7 */
9 /*****************************************************************************
11 NAME
13 GCDrawPolygon
15 SYNOPSIS
17 GCDrawPolygon 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 polygons. Waits for key press.
26 Clears gc. Draws some polygons and dispose 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 char wait;
114 struct Args
116 STRPTR hiddName;
117 IPTR *width;
118 IPTR *height;
119 IPTR *depth;
120 IPTR *chunky;
121 ULONG displayable;
124 struct Args args = {hiddName, &width, &height, &depth, 0, 0};
125 struct RDArgs *rda;
127 WORD coords1[] = {10, 10, 20, 20, 30, 10, 40, 20, 60, 10, 80, 20};
128 WORD coords2[] = {160, 100, 200, 180, 120, 180, 160, 100};
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 HIDD_BM_DrawPolygon(gc, 6, coords1);
175 HIDD_BM_DrawPolygon(gc, 4, coords2);
177 printf("Press enter to continue");
178 scanf("%c", &wait);
180 HIDD_BM_Clear(gc);
181 OOP_SetAttrsTags(gc, aHidd_GC_LinePattern, 0x5252, TAG_END);
182 HIDD_BM_DrawPolygon(gc, 6, coords1);
183 HIDD_BM_DrawPolygon(gc, 4, coords2);
185 ret = RETURN_OK;
188 printf("Press enter to continue");
189 scanf("%c", &wait);
191 HIDD_Gfx_DisposeBitMap(gfxHidd, bitMap);
194 if(gfxHidd) OOP_DisposeObject(gfxHidd);
196 } /* if(HiddGfxAttrBase && HiddBitMapAttrBase && HiddGCAttrBase) */
198 if(HiddGfxAttrBase) OOP_ReleaseAttrBase(IID_Hidd_Gfx);
199 if(HiddBitMapAttrBase) OOP_ReleaseAttrBase(IID_Hidd_BitMap);
200 if(HiddGCAttrBase) OOP_ReleaseAttrBase(IID_Hidd_GC);
202 CloseLibrary(HIDDGraphicsBase);
203 } /* if(HIDDGraphicsBase) */
204 FreeArgs(rda);
206 else
208 PrintFault(IoErr(), "");
209 } /* if (rda != NULL) */
210 } /* if OpenLibs() */
212 ght_CloseLibs(LibsArray);
214 return(ret);