2 #include <hidd/graphics.h>
3 #include <aros/debug.h>
7 /* It's a hack anyway... */
8 #include "../../../test/patchrgbconv_macros.h"
9 #include "../../../test/patchrgbconv_rgbswap.h"
10 #include "../../../test/patchrgbconv_argb32.h"
11 #include "../../../test/patchrgbconv_bgra32.h"
12 #include "../../../test/patchrgbconv_rgba32.h"
13 #include "../../../test/patchrgbconv_abgr32.h"
14 #include "../../../test/patchrgbconv_rgb24.h"
15 #include "../../../test/patchrgbconv_bgr24.h"
16 #include "../../../test/patchrgbconv_rgb15.h"
17 #include "../../../test/patchrgbconv_bgr15.h"
18 #include "../../../test/patchrgbconv_rgb16.h"
19 #include "../../../test/patchrgbconv_bgr16.h"
20 #include "../../../test/patchrgbconv_rgb16oe.h"
21 #include "../../../test/patchrgbconv_bgr16oe.h"
22 #include "../../../test/patchrgbconv_rgb15oe.h"
23 #include "../../../test/patchrgbconv_bgr15oe.h"
24 #include "../../../test/patchrgbconv_xrgb32.h"
25 #include "../../../test/patchrgbconv_bgrx32.h"
26 #include "../../../test/patchrgbconv_rgbx32.h"
27 #include "../../../test/patchrgbconv_xbgr32.h"
29 typedef void (*DOFUNC
)(ULONG srcfmt
, ULONG dstfmt
, HIDDT_RGBConversionFunction f
, OOP_Object
*bm
);
31 static void installfunc(ULONG srcfmt
, ULONG dstfmt
, HIDDT_RGBConversionFunction f
, OOP_Object
*bm
)
33 struct pHidd_BitMap_SetRGBConversionFunction __m
=
35 OOP_GetMethodID((STRPTR
)CLID_Hidd_BitMap
, moHidd_BitMap_SetRGBConversionFunction
),
38 OOP_DoMethod(bm
, (OOP_Msg
)m
);
41 #define PATCHFUNC(a,b) \
42 (*func)(FMT_ ## a, FMT_ ## b, convert_ ## a ## _ ## b, bitmap);
44 void HACK_PATCHRGBCONV(OOP_Object
* bitmap
)
46 DOFUNC func
= installfunc
;
48 #define P(a,b) PATCHFUNC(a,b)
51 P(ARGB32
,RGB16
) P(ARGB32
,BGR16
) P(ARGB32
,RGB15
) P(ARGB32
,BGR15
)
52 P(ARGB32
,BGRA32
) P(ARGB32
,RGBA32
) P(ARGB32
,ABGR32
) P(ARGB32
,RGB24
)
53 P(ARGB32
,BGR24
) P(ARGB32
,RGB16OE
) P(ARGB32
,BGR16OE
) P(ARGB32
,RGB15OE
)
54 P(ARGB32
,BGR15OE
) P(ARGB32
,XRGB32
) P(ARGB32
,BGRX32
) P(ARGB32
,RGBX32
)
58 P(BGRA32
,RGB16
) P(BGRA32
,BGR16
) P(BGRA32
,RGB15
) P(BGRA32
,BGR15
)
59 P(BGRA32
,ARGB32
) P(BGRA32
,RGBA32
) P(BGRA32
,ABGR32
) P(BGRA32
,RGB24
)
60 P(BGRA32
,BGR24
) P(BGRA32
,RGB16OE
) P(BGRA32
,BGR16OE
) P(BGRA32
,RGB15OE
)
61 P(BGRA32
,BGR15OE
) P(BGRA32
,XRGB32
) P(BGRA32
,BGRX32
) P(BGRA32
,RGBX32
)
65 P(RGBA32
,RGB16
) P(RGBA32
,BGR16
) P(RGBA32
,RGB15
) P(RGBA32
,BGR15
)
66 P(RGBA32
,BGRA32
) P(RGBA32
,ARGB32
) P(RGBA32
,ABGR32
) P(RGBA32
,RGB24
)
67 P(RGBA32
,BGR24
) P(RGBA32
,RGB16OE
) P(RGBA32
,BGR16OE
) P(RGBA32
,RGB15OE
)
68 P(RGBA32
,BGR15OE
) P(RGBA32
,XRGB32
) P(RGBA32
,BGRX32
) P(RGBA32
,RGBX32
)
72 P(ABGR32
,RGB16
) P(ABGR32
,BGR16
) P(ABGR32
,RGB15
) P(ABGR32
,BGR15
)
73 P(ABGR32
,BGRA32
) P(ABGR32
,ARGB32
) P(ABGR32
,RGBA32
) P(ABGR32
,RGB24
)
74 P(ABGR32
,BGR24
) P(ABGR32
,RGB16OE
) P(ABGR32
,BGR16OE
) P(ABGR32
,RGB15OE
)
75 P(ABGR32
,BGR15OE
) P(ABGR32
,XRGB32
) P(ABGR32
,BGRX32
) P(ABGR32
,RGBX32
)
79 P(RGB24
,RGB16
) P(RGB24
,BGR16
) P(RGB24
,RGB15
) P(RGB24
,BGR15
)
80 P(RGB24
,ARGB32
) P(RGB24
,BGRA32
) P(RGB24
,RGBA32
) P(RGB24
,ABGR32
)
81 P(RGB24
,BGR24
) P(RGB24
,RGB16OE
) P(RGB24
,BGR16OE
) P(RGB24
,RGB15OE
)
82 P(RGB24
,BGR15OE
) P(RGB24
,XRGB32
) P(RGB24
,BGRX32
) P(RGB24
,RGBX32
)
86 P(BGR24
,RGB16
) P(BGR24
,BGR16
) P(BGR24
,RGB15
) P(BGR24
,BGR15
)
87 P(BGR24
,ARGB32
) P(BGR24
,BGRA32
) P(BGR24
,RGBA32
) P(BGR24
,ABGR32
)
88 P(BGR24
,RGB24
) P(BGR24
,RGB16OE
) P(BGR24
,BGR16OE
) P(BGR24
,RGB15OE
)
89 P(BGR24
,BGR15OE
) P(BGR24
,XRGB32
) P(BGR24
,BGRX32
) P(BGR24
,RGBX32
)
93 P(RGB15
,RGB16
) P(RGB15
,BGR16
) P(RGB15
,BGR15
) P(RGB15
,ARGB32
)
94 P(RGB15
,BGRA32
) P(RGB15
,RGBA32
) P(RGB15
,ABGR32
) P(RGB15
,RGB24
)
95 P(RGB15
,BGR24
) P(RGB15
,RGB16OE
) P(RGB15
,RGB15OE
) P(RGB15
,BGR16OE
)
96 P(RGB15
,BGR15OE
) P(RGB15
,XRGB32
) P(RGB15
,BGRX32
) P(RGB15
,RGBX32
)
100 P(BGR15
,RGB16
) P(BGR15
,BGR16
) P(BGR15
,RGB15
) P(BGR15
,ARGB32
)
101 P(BGR15
,BGRA32
) P(BGR15
,RGBA32
) P(BGR15
,ABGR32
) P(BGR15
,RGB24
)
102 P(BGR15
,BGR24
) P(BGR15
,RGB16OE
) P(BGR15
,RGB15OE
) P(BGR15
,BGR16OE
)
103 P(BGR15
,BGR15OE
) P(BGR15
,XRGB32
) P(BGR15
,BGRX32
) P(BGR15
,RGBX32
)
107 P(RGB16
,RGB15
) P(RGB16
,BGR16
) P(RGB16
,BGR15
) P(RGB16
,ARGB32
)
108 P(RGB16
,BGRA32
) P(RGB16
,RGBA32
) P(RGB16
,ABGR32
) P(RGB16
,RGB24
)
109 P(RGB16
,BGR24
) P(RGB16
,RGB16OE
) P(RGB16
,RGB15OE
) P(RGB16
,BGR16OE
)
110 P(RGB16
,BGR15OE
) P(RGB16
,XRGB32
) P(RGB16
,BGRX32
) P(RGB16
,RGBX32
)
114 P(BGR16
,RGB15
) P(BGR16
,RGB16
) P(BGR16
,BGR15
) P(BGR16
,ARGB32
)
115 P(BGR16
,BGRA32
) P(BGR16
,RGBA32
) P(BGR16
,ABGR32
) P(BGR16
,RGB24
)
116 P(BGR16
,BGR24
) P(BGR16
,RGB16OE
) P(BGR16
,RGB15OE
) P(BGR16
,BGR16OE
)
117 P(BGR16
,BGR15OE
) P(BGR16
,XRGB32
) P(BGR16
,BGRX32
) P(BGR16
,RGBX32
)
121 P(RGB16OE
,RGB16
) P(RGB16OE
,RGB15
) P(RGB16OE
,BGR16
) P(RGB16OE
,BGR15
)
122 P(RGB16OE
,ARGB32
) P(RGB16OE
,BGRA32
) P(RGB16OE
,RGBA32
) P(RGB16OE
,ABGR32
)
123 P(RGB16OE
,RGB24
) P(RGB16OE
,BGR24
) P(RGB16OE
,RGB15OE
) P(RGB16OE
,BGR16OE
)
124 P(RGB16OE
,BGR15OE
) P(RGB16OE
,XRGB32
) P(RGB16OE
,BGRX32
) P(RGB16OE
,RGBX32
)
128 P(BGR16OE
,RGB16
) P(BGR16OE
,RGB15
) P(BGR16OE
,BGR16
) P(BGR16OE
,BGR15
)
129 P(BGR16OE
,ARGB32
) P(BGR16OE
,BGRA32
) P(BGR16OE
,RGBA32
) P(BGR16OE
,ABGR32
)
130 P(BGR16OE
,RGB24
) P(BGR16OE
,BGR24
) P(BGR16OE
,RGB15OE
) P(BGR16OE
,RGB16OE
)
131 P(BGR16OE
,BGR15OE
) P(BGR16OE
,XRGB32
) P(BGR16OE
,BGRX32
) P(BGR16OE
,RGBX32
)
135 P(RGB15OE
,RGB16
) P(RGB15OE
,RGB15
) P(RGB15OE
,BGR16
) P(RGB15OE
,BGR15
)
136 P(RGB15OE
,ARGB32
) P(RGB15OE
,BGRA32
) P(RGB15OE
,RGBA32
) P(RGB15OE
,ABGR32
)
137 P(RGB15OE
,RGB24
) P(RGB15OE
,BGR24
) P(RGB15OE
,RGB16OE
) P(RGB15OE
,BGR16OE
)
138 P(RGB15OE
,BGR15OE
) P(RGB15OE
,XRGB32
) P(RGB15OE
,BGRX32
) P(RGB15OE
,RGBX32
)
142 P(BGR15OE
,RGB16
) P(BGR15OE
,RGB15
) P(BGR15OE
,BGR16
) P(BGR15OE
,BGR15
)
143 P(BGR15OE
,ARGB32
) P(BGR15OE
,BGRA32
) P(BGR15OE
,RGBA32
) P(BGR15OE
,ABGR32
)
144 P(BGR15OE
,RGB24
) P(BGR15OE
,BGR24
) P(BGR15OE
,RGB16OE
) P(BGR15OE
,BGR16OE
)
145 P(BGR15OE
,RGB15OE
) P(BGR15OE
,XRGB32
) P(BGR15OE
,BGRX32
) P(BGR15OE
,RGBX32
)
149 P(XRGB32
,RGB16
) P(XRGB32
,BGR16
) P(XRGB32
,RGB15
) P(XRGB32
,BGR15
)
150 P(XRGB32
,ARGB32
) P(XRGB32
,BGRA32
) P(XRGB32
,RGBA32
) P(XRGB32
,ABGR32
)
151 P(XRGB32
,RGB24
) P(XRGB32
,BGR24
) P(XRGB32
,RGB16OE
) P(XRGB32
,BGR16OE
)
152 P(XRGB32
,RGB15OE
) P(XRGB32
,BGR15OE
) P(XRGB32
,BGRX32
) P(XRGB32
,RGBX32
)
156 P(BGRX32
,RGB16
) P(BGRX32
,BGR16
) P(BGRX32
,RGB15
) P(BGRX32
,BGR15
)
157 P(BGRX32
,ARGB32
) P(BGRX32
,BGRA32
) P(BGRX32
,RGBA32
) P(BGRX32
,ABGR32
)
158 P(BGRX32
,RGB24
) P(BGRX32
,BGR24
) P(BGRX32
,RGB16OE
) P(BGRX32
,BGR16OE
)
159 P(BGRX32
,RGB15OE
) P(BGRX32
,BGR15OE
) P(BGRX32
,XRGB32
) P(BGRX32
,RGBX32
)
163 P(RGBX32
,RGB16
) P(RGBX32
,BGR16
) P(RGBX32
,RGB15
) P(RGBX32
,BGR15
)
164 P(RGBX32
,BGRA32
) P(RGBX32
,ARGB32
) P(RGBX32
,ABGR32
) P(RGBX32
,RGBA32
)
165 P(RGBX32
,RGB24
) P(RGBX32
,BGR24
) P(RGBX32
,RGB16OE
) P(RGBX32
,BGR16OE
)
166 P(RGBX32
,RGB15OE
) P(RGBX32
,BGR15OE
) P(RGBX32
,XRGB32
) P(RGBX32
,BGRX32
)
170 P(XBGR32
,RGB16
) P(XBGR32
,BGR16
) P(XBGR32
,RGB15
) P(XBGR32
,BGR15
)
171 P(XBGR32
,BGRA32
) P(XBGR32
,ARGB32
) P(XBGR32
,RGBA32
) P(XBGR32
,ABGR32
)
172 P(XBGR32
,RGB24
) P(XBGR32
,BGR24
) P(XBGR32
,RGB16OE
) P(XBGR32
,BGR16OE
)
173 P(XBGR32
,RGB15OE
) P(XBGR32
,BGR15OE
) P(XBGR32
,XRGB32
) P(XBGR32
,BGRX32
)