2 Copyright © 1995-2010, The AROS Development Team. All rights reserved.
5 Desc: Graphics function SetRGB32CM()
8 #include <graphics/view.h>
9 #include "graphics_intern.h"
11 /*****************************************************************************
14 #include <proto/graphics.h>
16 AROS_LH5(void, SetRGB32CM
,
19 AROS_LHA(struct ColorMap
*, cm
, A0
),
20 AROS_LHA(ULONG
, n
, D0
),
21 AROS_LHA(ULONG
, r
, D1
),
22 AROS_LHA(ULONG
, g
, D2
),
23 AROS_LHA(ULONG
, b
, D3
),
26 struct GfxBase
*, GfxBase
, 166, Graphics
)
29 Set one color in the ColorMap.
32 cm - ColorMap structure obtained via GetColorMap()
33 n - the number of the color register to set
34 r - red level (32 bit left justified fraction)
35 g - green level (32 bit left justified fraction)
36 b - blue level (32 bit left justified fraction)
39 Store the (r,g,b) triplet at index n in the ColorMap structure.
40 The changes will not be immediately displayed. Use this function
41 before linking the ColorMap to a ViewPort. Do not access the entries
42 in the ColorTable yourself, as the ColorTable is subject to change.
51 GetColorMap(), SetRGB32(), GetRGB32(), SetRGB4CM(), graphics/view.h
54 This function depends on the ColorMap->ColorTable structure
58 *****************************************************************************/
62 if (NULL
!= cm
&& n
< cm
->Count
)
64 /* Preserve the highest nibble. Needed for interoperability
65 with m68k graphics.library. Exact purpose is currently
67 UWORD a
= ((UWORD
*)cm
->ColorTable
)[n
];
69 ((UWORD
*)cm
->ColorTable
)[n
] = (a
& 0xF000) |
70 ((r
>> 20) & 0x0f00) |
71 ((g
>> 24) & 0x00f0) |
74 if (cm
->Type
> COLORMAP_TYPE_V1_2
)
75 ((UWORD
*)cm
->LowColorBits
)[n
] = ((r
>> 16) & 0x0f00) |
76 ((g
>> 20) & 0x00f0) |