Don't call InvertPixelArray with negative width and/or height.
[tangerine.git] / workbench / libs / muimaster / mui_createcustomclass.c
blob0cc4cde95283691613ee997fc6d0d85a066ffa9e
1 /*
2 Copyright © 2002-2003, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <proto/exec.h>
7 #include <proto/intuition.h>
8 #include <proto/graphics.h>
9 #include <proto/dos.h>
10 #include <proto/muimaster.h>
11 #include <proto/utility.h>
13 #include "mui.h"
14 #include "muimaster_intern.h"
15 #include "support.h"
16 #include "support_classes.h"
18 /*****************************************************************************
20 NAME */
21 AROS_LH5(struct MUI_CustomClass *, MUI_CreateCustomClass,
23 /* SYNOPSIS */
24 AROS_LHA(struct Library *, base, A0),
25 AROS_LHA(ClassID, supername, A1),
26 AROS_LHA(struct MUI_CustomClass *, supermcc, A2),
27 AROS_LHA(ULONG, datasize, D0),
28 AROS_LHA(APTR, dispatcher, A3),
30 /* LOCATION */
31 struct Library *, MUIMasterBase, 18, MUIMaster)
33 /* FUNCTION
35 INPUTS
37 RESULT
39 NOTES
41 EXAMPLE
43 BUGS
44 The function itself is a bug ;-) Remove it!
46 SEE ALSO
48 INTERNALS
50 HISTORY
52 *****************************************************************************/
54 AROS_LIBFUNC_INIT
55 AROS_LIBBASE_EXT_DECL(struct MUIMasterBase *,MUIMasterBase)
57 struct MUI_CustomClass *mcc;
58 struct IClass *cl, *super;
59 ClassID id = NULL;
61 if ((supername == NULL) && (supermcc == NULL))
62 return NULL;
64 if (!supermcc)
66 super = MUI_GetClass(supername);
67 if (!super) return NULL;
69 else super = supermcc->mcc_Class;
71 if (!(mcc = mui_alloc_struct(struct MUI_CustomClass)))
72 return NULL;
74 if (base)
75 id = FilePart(((struct Node *)base)->ln_Name);
77 if (!(cl = MakeClass(id, NULL, super, datasize, 0)))
79 mui_free(mcc);
80 return NULL;
83 mcc->mcc_UtilityBase = (struct Library *)UtilityBase;
84 mcc->mcc_DOSBase = (struct Library *)DOSBase;
85 mcc->mcc_GfxBase = (struct Library *)GfxBase;
86 mcc->mcc_IntuitionBase = (struct Library *)IntuitionBase;
88 mcc->mcc_Class = cl;
89 mcc->mcc_Super = super;
90 mcc->mcc_Module = NULL; /* _zune_class_load() will set this */
92 #if defined(__MAXON__) || defined(__amigaos4__)
93 cl->cl_Dispatcher.h_Entry = (HOOKFUNC)dispatcher;
94 #else
95 cl->cl_Dispatcher.h_Entry = (HOOKFUNC)metaDispatcher;
96 cl->cl_Dispatcher.h_SubEntry = (HOOKFUNC)dispatcher;
97 #endif
98 cl->cl_Dispatcher.h_Data = base;
100 return mcc;
102 AROS_LIBFUNC_EXIT
103 } /* MUIA_CreateCustomClass */