2 Copyright © 2011, Thore Böckelmann. All rights reserved.
3 Copyright © 2012, The AROS Development Team. All rights reserved.
7 #include <proto/intuition.h>
8 #include <proto/utility.h>
9 #include <proto/alib.h>
11 #include "Rawimage_mcc.h"
14 /* ------------------------------------------------------------------------- */
16 static BOOL
setRawimage(struct IClass
*cl
, Object
*obj
, struct MUI_RawimageData
*rdata
)
22 ULONG cwidth
= AROS_BE2LONG(rdata
->ri_Width
);
23 ULONG cheight
= AROS_BE2LONG(rdata
->ri_Height
);
24 ULONG cformat
= AROS_BE2LONG(rdata
->ri_Format
);
25 ULONG csize
= AROS_BE2LONG(rdata
->ri_Size
);
29 case RAWIMAGE_FORMAT_RAW_ARGB_ID
:
30 format
= MUIV_Pixmap_Format_ARGB32
;
31 compression
= MUIV_Pixmap_Compression_None
;
34 case RAWIMAGE_FORMAT_RAW_RGB_ID
:
35 format
= MUIV_Pixmap_Format_RGB24
;
36 compression
= MUIV_Pixmap_Compression_None
;
39 case RAWIMAGE_FORMAT_BZ2_ARGB_ID
:
40 format
= MUIV_Pixmap_Format_ARGB32
;
41 compression
= MUIV_Pixmap_Compression_BZip2
;
44 case RAWIMAGE_FORMAT_BZ2_RGB_ID
:
45 format
= MUIV_Pixmap_Format_RGB24
;
46 compression
= MUIV_Pixmap_Compression_BZip2
;
49 case RAWIMAGE_FORMAT_RLE_ARGB_ID
:
50 format
= MUIV_Pixmap_Format_ARGB32
;
51 compression
= MUIV_Pixmap_Compression_RLE
;
54 case RAWIMAGE_FORMAT_RLE_RGB_ID
:
55 format
= MUIV_Pixmap_Format_RGB24
;
56 compression
= MUIV_Pixmap_Compression_RLE
;
61 compression
= MUIV_Pixmap_Compression_None
;
67 // Pixmap.mui will return failure in case the compression is not supported
68 success
= SetSuperAttrs(cl
, obj
, MUIA_FixWidth
, cwidth
,
69 MUIA_FixHeight
, cheight
,
70 MUIA_Pixmap_Width
, cwidth
,
71 MUIA_Pixmap_Height
, cheight
,
72 MUIA_Pixmap_Format
, format
,
73 MUIA_Pixmap_Data
, rdata
->ri_Data
,
74 MUIA_Pixmap_Compression
, compression
,
75 MUIA_Pixmap_CompressedSize
, csize
,
82 IPTR
Rawimage__OM_NEW(struct IClass
*cl
, Object
*obj
, struct opSet
*msg
)
84 if((obj
= (Object
*)DoSuperNewTags(cl
, obj
, NULL
,
85 TAG_MORE
, msg
->ops_AttrList
)) != NULL
)
87 struct MUI_RawimageData
*rdata
;
89 if((rdata
= (struct MUI_RawimageData
*)GetTagData(MUIA_Rawimage_Data
, 0, msg
->ops_AttrList
)) != NULL
)
91 if(setRawimage(cl
, obj
, rdata
) == FALSE
)
93 CoerceMethod(cl
, obj
, OM_DISPOSE
);
103 IPTR
Rawimage__OM_SET(struct IClass
*cl
, Object
*obj
, struct opSet
*msg
)
105 struct MUI_RawimageData
*rdata
;
107 if((rdata
= (struct MUI_RawimageData
*)GetTagData(MUIA_Rawimage_Data
, 0, msg
->ops_AttrList
)) != NULL
)
109 setRawimage(cl
, obj
, rdata
);
112 return DoSuperMethodA(cl
, obj
, (Msg
)msg
);