- Set a default PCM volume so that something can be heard when driver is
[AROS.git] / test / HiddGraphics / hiddmodeid.c
blobab2a679b19046aaad1e5bd39dae3137ccaf2fa15
1 #include <graphics/gfxbase.h>
2 #include <intuition/screens.h>
3 #include <hidd/graphics.h>
4 #include <proto/intuition.h>
5 #include <proto/oop.h>
7 #include <stdio.h>
9 OOP_AttrBase HiddBitMapAttrBase;
10 OOP_AttrBase HiddSyncAttrBase;
12 static void PrintMode(HIDDT_ModeID m, OOP_Object *sync, OOP_Object *pixfmt)
14 STRPTR desc = "No description";
16 if (m == vHidd_ModeID_Invalid)
17 desc = "End of list";
18 else {
19 if (sync) {
20 OOP_GetAttr(sync, aHidd_Sync_Description, (IPTR *)&desc);
21 } else
22 desc = "NULL sync";
25 printf("ModeID: 0x%08lX %s\n", m, desc);
28 int main(void)
30 struct Screen *scr;
31 struct BitMap *bm;
33 HiddBitMapAttrBase = OOP_ObtainAttrBase(IID_Hidd_BitMap);
34 if (!HiddBitMapAttrBase) {
35 printf("Failed to obtain IID_Hidd_BitMap\n");
36 return RETURN_FAIL;
39 HiddSyncAttrBase = OOP_ObtainAttrBase(IID_Hidd_Sync);
40 if (!HiddSyncAttrBase) {
41 printf("Failed to obtain IID_Hidd_Sync\n");
42 OOP_ReleaseAttrBase(IID_Hidd_BitMap);
43 return RETURN_FAIL;
46 scr = LockPubScreen(NULL);
48 if (!scr) {
49 printf("Failed to lock default public screen\n");
50 OOP_ReleaseAttrBase(IID_Hidd_Sync);
51 OOP_ReleaseAttrBase(IID_Hidd_BitMap);
52 return RETURN_FAIL;
55 bm = scr->RastPort.BitMap;
57 if (bm->Flags & BMF_SPECIALFMT) {
58 OOP_Object *bmobj = (OOP_Object *)bm->Planes[0];
59 OOP_Object *gfxhidd = NULL;
61 OOP_GetAttr(bmobj, aHidd_BitMap_GfxHidd, (IPTR *)&gfxhidd);
63 if (gfxhidd) {
64 HIDDT_ModeID *modes;
65 HIDDT_ModeID mode;
66 OOP_Object *sync, *pixfmt;
68 printf("Checking QueryModeIDs()...\n");
69 modes = HIDD_Gfx_QueryModeIDs(gfxhidd, NULL);
70 if (modes) {
71 HIDDT_ModeID *m = modes;
73 do {
74 sync = NULL;
75 pixfmt = NULL;
76 if ((*m == vHidd_ModeID_Invalid) ||
77 HIDD_Gfx_GetMode(gfxhidd, *m, &sync, &pixfmt))
78 PrintMode(*m, sync, pixfmt);
79 else
80 printf("ModeID 0x%08lX GetMode() failed\n", *m);
81 } while (*m++ != vHidd_ModeID_Invalid);
83 HIDD_Gfx_ReleaseModeIDs(gfxhidd, modes);
84 } else
85 printf("Failed to obtain ModeID list\n");
87 printf("Checking NextModeID()...\n");
88 mode = vHidd_ModeID_Invalid;
90 do {
91 sync = NULL;
92 pixfmt = NULL;
93 mode = HIDD_Gfx_NextModeID(gfxhidd, mode, &sync, &pixfmt);
94 PrintMode(mode, sync, pixfmt);
95 } while (mode != vHidd_ModeID_Invalid);
97 } else
98 printf("Public screen bitmap does not have aHidd_BitMap_GfxHidd, weird\n");
99 } else
100 printf("Public screen bitmap is not a HIDD bitmap, unsupported for now\n");
102 UnlockPubScreen(NULL, scr);
103 OOP_ReleaseAttrBase(IID_Hidd_Sync);
104 OOP_ReleaseAttrBase(IID_Hidd_BitMap);
105 return 0;