Check for SYS/GL during library init. Reason is that
[AROS.git] / workbench / devs / diskimage / png_image / include / class.h
blob041850f54f059fdea90de1da342652547225b4f0
1 /* Copyright 2007-2012 Fredrik Wikstrom. All rights reserved.
2 **
3 ** Redistribution and use in source and binary forms, with or without
4 ** modification, are permitted provided that the following conditions
5 ** are met:
6 **
7 ** 1. Redistributions of source code must retain the above copyright
8 ** notice, this list of conditions and the following disclaimer.
9 **
10 ** 2. Redistributions in binary form must reproduce the above copyright
11 ** notice, this list of conditions and the following disclaimer in the
12 ** documentation and/or other materials provided with the distribution.
14 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
15 ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18 ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 ** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 ** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 ** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 ** POSSIBILITY OF SUCH DAMAGE.
27 #ifndef CLASS_H
28 #define CLASS_H
30 #ifndef EXEC_EXEC_H
31 #include <exec/exec.h>
32 #endif
33 #ifndef DOS_DOS_H
34 #include <dos/dos.h>
35 #endif
36 #ifndef INTUITION_CLASSES_H
37 #include <intuition/classes.h>
38 #endif
39 #ifndef INTUITION_IMAGECLASS_H
40 #include <intuition/imageclass.h>
41 #endif
42 #ifndef IMAGES_BITMAP_H
43 #include <images/bitmap.h>
44 #endif
45 #ifndef TYPES_H
46 #include <types.h>
47 #endif
48 #ifndef SDI_COMPILER_H
49 #include <SDI_compiler.h>
50 #endif
52 struct ClassBase {
53 struct Library libNode;
54 UWORD pad;
55 Class *class;
56 BPTR seglist;
59 #define PNG_Screen BITMAP_Screen
60 #define PNG_SourceFile BITMAP_SourceFile
61 #define PNG_SelectSourceFile BITMAP_SelectSourceFile
62 #define PNG_DisabledSourceFile (BITMAP_Dummy + 19)
64 enum {
65 IMG_NORMAL = 0,
66 IMG_SELECTED,
67 IMG_DISABLED
70 struct ClassData {
71 struct Screen *screen;
72 WORD width, height;
73 UBYTE *image[3];
74 ULONG pen_map[8];
75 struct BitMap *bm[3];
76 PLANEPTR mask[3];
77 BOOL rtg;
78 BOOL truecolor;
81 #define HAS_IMAGE(d,x) ((d)->truecolor ? (IPTR)(d)->image[x] : \
82 (IPTR)((d)->bm[x] && (d)->mask[x]))
84 struct HookData {
85 LONG x, y, w, h;
86 UBYTE *image;
89 struct BackFillMessage {
90 struct Layer *Layer;
91 struct Rectangle Bounds;
92 LONG OffsetX;
93 LONG OffsetY;
96 /* class.c */
97 IPTR ClassDispatch (REG(a0, Class *cl), REG(a2, Object *o), REG(a1, Msg msg));
99 /* loadpng.c */
100 BOOL LoadPNG (struct ClassData *data, const char *filename, LONG index);
102 /* remap.c */
103 void PenMap_ReleasePens (ULONG *pen_map, struct Screen *screen);
104 BOOL RemapRGBAImage (struct Screen *screen, BOOL rtg, UBYTE *rgba, WORD w, WORD h,
105 ULONG *pen_map, struct BitMap **bm_p, PLANEPTR *mask_p);
107 /* writergbapixels_p96.c */
108 BOOL IsSupportedRGBFormat_P96 (ULONG rgbformat);
109 IPTR WriteRGBAPixels_P96 (REG(a0, struct Hook *hook), REG(a2, struct RastPort *rp),
110 REG(a1, struct BackFillMessage *msg));
112 /* writergbapixels_cgx.c */
113 BOOL IsSupportedRGBFormat_CGX (ULONG rgbformat);
114 IPTR WriteRGBAPixels_CGX (REG(a0, struct Hook *hook), REG(a2, struct RastPort *rp),
115 REG(a1, struct BackFillMessage *msg));
117 #endif