•  Back 
  •  VDI-Strukturen 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File7.13.2  COLOR_RGB                                                  TOS

typedef struct
{
   uint16   reserved;     /* auf 0 oder den Index des Eintrags setzen */
   uint16   red;          /* Rot:  0<->65535 */
   uint16   green;        /* Grün: 0<->65535 */
   uint16   blue;         /* Blau: 0<->65535 */
} COLOR_RGB;

Falls in einem Programm die Farbdaten bereits in einem vernünftigen 
Format (z.B. 8 Bit pro Kanal) vorliegen, kann man sich eine Umwandlung 
mit Multiplikation und Division ersparen. Die Shift- und OR-Funktion 
des Prozessors erledigt das dann schneller und eleganter.

Beispiel: Der Farbwert sei durch die Byte-Variablen r, g, b 
beschrieben. Die korrekte Umsetzung auf das 16-Bit-Format der 
COLOR_RGB-Struktur erfolgt dann so:

COLOR_RGB color;

color.reserved = 0;

color.red = r;
color.red |= (color.red << 8);

color.green = g;
color.green |= (color.green << 8);

color.blue = b;
color.blue |= (color.blue << 8);

Das Strukturelement reserved sollte auf 0 gesetzt werden oder (beim 
Aufbau einer Farbtabelle) den Index des Eintrags enthalten. In jedem 
Fall müssen aber die oberen 8 Bits von reserved auf 0 gesetzt werden, 
da sie von den Farbroutinen ggf. für Flags verwendet werden.