In Zune classes include <proto/alib.h> for BOOPSI related functions
[AROS.git] / workbench / classes / zune / rawimage / Rawimage.c
blob1a654b0cc117bf36ffd673d7651de375b2c3e667
1 /*
2 Copyright © 2011, Thore Böckelmann. All rights reserved.
3 Copyright © 2012, The AROS Development Team. All rights reserved.
4 $Id$
5 */
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)
18 BOOL success = FALSE;
19 LONG format;
20 LONG compression;
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);
27 switch(cformat)
29 case RAWIMAGE_FORMAT_RAW_ARGB_ID:
30 format = MUIV_Pixmap_Format_ARGB32;
31 compression = MUIV_Pixmap_Compression_None;
32 break;
34 case RAWIMAGE_FORMAT_RAW_RGB_ID:
35 format = MUIV_Pixmap_Format_RGB24;
36 compression = MUIV_Pixmap_Compression_None;
37 break;
39 case RAWIMAGE_FORMAT_BZ2_ARGB_ID:
40 format = MUIV_Pixmap_Format_ARGB32;
41 compression = MUIV_Pixmap_Compression_BZip2;
42 break;
44 case RAWIMAGE_FORMAT_BZ2_RGB_ID:
45 format = MUIV_Pixmap_Format_RGB24;
46 compression = MUIV_Pixmap_Compression_BZip2;
47 break;
49 case RAWIMAGE_FORMAT_RLE_ARGB_ID:
50 format = MUIV_Pixmap_Format_ARGB32;
51 compression = MUIV_Pixmap_Compression_RLE;
52 break;
54 case RAWIMAGE_FORMAT_RLE_RGB_ID:
55 format = MUIV_Pixmap_Format_RGB24;
56 compression = MUIV_Pixmap_Compression_RLE;
57 break;
59 default:
60 format = -1;
61 compression = MUIV_Pixmap_Compression_None;
62 break;
65 if(format != -1)
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,
76 TAG_DONE);
79 return success;
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);
94 obj = NULL;
99 return (IPTR)obj;
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);