Workaround for includes conflict that stopped compilation with GCC 3.
[tangerine.git] / rom / graphics / getcolormap.c
blob37653f38e8f8933ef9a890544c873fd4bd4c27e6
1 /*
2 Copyright © 1995-2007, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: Graphics function GetColorMap()
6 Lang: english
7 */
8 #include "exec/memory.h"
9 #include "exec/types.h"
10 #include "proto/exec.h"
11 #include "graphics/view.h"
12 #include "graphics_intern.h"
14 /*****************************************************************************
16 NAME */
17 #include <proto/graphics.h>
19 AROS_LH1(struct ColorMap *, GetColorMap,
21 /* SYNOPSIS */
22 AROS_LHA(ULONG, entries, D0),
24 /* LOCATION */
25 struct GfxBase *, GfxBase, 95, Graphics)
27 /* FUNCTION
28 Allocates, initializes a ColorMap structure and passes back the
29 pointer. This enables you to do calls to SetRGB4() and LoadRGB4()
30 to load colors for a view port.
31 The ColorTable pointer in the ColorMap structure points to a hardware
32 specific colormap data structure which you should not interpret.
34 INPUTS
35 entries - the number of entries for the colormap
37 RESULT
38 NULL - not enough memory could be allocated for the necessary
39 data structures
40 other - pointer to a initialized ColorMap structure that may be
41 stored into the ViewPort.ColorMap pointer.
43 NOTES
45 EXAMPLE
47 BUGS
49 SEE ALSO
50 FreeColorMap(), SetRGB4(), graphics/view.h
52 INTERNALS
53 RGB Colortable with preference values is incomplete.
55 HISTORY
57 *****************************************************************************/
59 AROS_LIBFUNC_INIT
61 struct ColorMap * NewCM = (struct ColorMap *)AllocMem(sizeof(struct ColorMap),
62 MEMF_PUBLIC|MEMF_CLEAR);
63 LONG * ptr1, * ptr2;
65 #if 0
66 /* ColorTable with some preference values; !!! incomplete */
67 const WORD RGBColorTable[] = {0x0000,0x0f00,0x00f0,0x0ff0,
68 0x000f,0x0f0f,0x00ff,0x0fff}; /* !!!etc. */
69 #endif
72 /* go on if we got the memory for the ColorMap */
73 if (NULL != NewCM)
75 /* get memory for the ColorTable */
76 NewCM -> ColorTable = AllocMem(entries * sizeof(UWORD), MEMF_CLEAR|MEMF_PUBLIC);
78 /* get memory for LowColorbits !!!how much memory we need for that?? */
79 NewCM -> LowColorBits = AllocMem(entries * sizeof(UWORD), MEMF_CLEAR|MEMF_PUBLIC);
81 ptr1 = NewCM -> ColorTable;
82 ptr2 = NewCM -> LowColorBits;
84 /* did we get all the memory we wanted? */
85 if ( (NULL != ptr1) && (NULL != ptr2) )
87 #if 0
88 ULONG i;
89 LONG * L_RGBColorTable = (LONG *)&RGBColorTable[0];
90 #endif
92 /* further init the GetColorMap structure */
93 NewCM->Type = COLORMAP_TYPE_V39;
94 NewCM->Count = entries;
95 NewCM->SpriteResolution = SPRITERESN_DEFAULT;
96 NewCM->SpriteResDefault = SPRITERESN_ECS;
97 NewCM->AuxFlags = CMAF_FULLPALETTE;
98 NewCM->VPModeID = -1;
99 NewCM->SpriteBase_Even = 0x0010;
100 NewCM->SpriteBase_Odd = 0x0010;
101 NewCM->Bp_1_base = 0x0008;
103 #if 0
104 /* Fill the ColorTable and the LowColorBits with the appropriate Data */
106 /* as we`re clever we`re doing some 32 bit copying with the 16 bit data */
107 for (i = 0; i < (entries >> 1); i++)
109 LONG ColorValue = L_RGBColorTable[i];
110 *ptr1++ = ColorValue;
111 *ptr2++ = ColorValue;
113 /* is there one WORD left to copy? */
114 if (1 == (entries & 1) )
116 WORD ColorValue = RGBColorTable[entries-1];
117 *(WORD *)ptr1 = ColorValue;
118 *(WORD *)ptr2 = ColorValue;
120 #endif
123 else /* not enough memory for the tables */
125 if (NULL != NewCM -> ColorTable)
126 FreeMem(NewCM -> ColorTable, entries * sizeof(UWORD));
127 if (NULL != NewCM -> LowColorBits)
128 FreeMem(NewCM -> LowColorBits, entries * sizeof(UWORD));
130 FreeMem(NewCM, sizeof(struct ColorMap));
131 /* make return value invalid */
132 NewCM = NULL;
135 } /* if (NULL != NewCM) */
137 return NewCM;
139 AROS_LIBFUNC_EXIT
141 } /* GetColorMap */