[[LONG]] [[HEX$|Hexadecimal]] values can be used to set a [[_PALETTECOLOR]] instead of using [[_RGB32]] or [[_RGBA32]] values.


* Hexadecimal digits can  be represented as any number or letter up to F: '''0 1 2 3 4 5 6 7 8 9 A B C D E F'''

* [[_BYTE|Byte]] values up to 255 can represented by two hexadecimal digits such as 1C, 23, FA, etc.

* The [[HEX$|hex]] value for bright white(attribute 15) is &amp;HFFFFFFFF or:

::: [[_ALPHA|Alpha]] = FF (255), Red = FF (255), Green = FF (255), Blue = FF (255)

* [[_RGB]] will return an alpha value of 255 for fully opaque 32 bit colors only. Values range from &amp;HFF000000 to &amp;HFFFFFFFF.

* [[_RGB32]] will return an alpha value of 255 for fully opaque colors only. Values range from &amp;HFF000000 to &amp;HFFFFFFFF.

* [[_RGBA]] can set the transparency so hexadecimal values range from &amp;H000000 (zero alpha) to &amp;HFFFFFFFF (full alpha).

* [[_RGBA32]] can set the transparency so hexadecimal values range from &amp;H000000 (zero alpha) to &amp;HFFFFFFFF (full alpha).


* So expanding on the principle above allows us to easily make up our own hex color values:

:: _PALETTECOLOR 1, '''&amp;HFFFF0000''' 'COLOR 1 is full red
:: _PALETTECOLOR 2, '''&amp;HFFFF00FF''' 'COLOR 2 is purple
:: _PALETTECOLOR 3, '''&amp;HFFFFFF00''' 'COLOR 3 is brown

:Where '''FF''' is the fully opaque [[_ALPHA]] and the 3 hex color values can range from '''00''' to '''FF''' (0 to 255) each.


''Example:'' Converting the color port RGB intensity palette values 0 to 63 to 32 bit hexadecimal [[STRING|string]] values. 
{{CodeStart}}
{{Cl|SCREEN}} 12
{{Cl|DIM}} hex32$(15)
alpha$ = "FF"                              'solid alpha colors only
{{Cl|OUT}} {{Cl|&amp;H}}3C8, 0: {{Cl|OUT}} {{Cl|&amp;H}}3C9, 0: {{Cl|OUT}} {{Cl|&amp;H}}3C9, 0: {{Cl|OUT}} {{Cl|&amp;H}}3C9, 20 'set black background to dark blue

{{Cl|FOR...NEXT|FOR}} attribute = 0 {{Cl|TO}} 15
  {{Cl|OUT}} {{Cl|&amp;H}}3C7, attribute                     'set color attribute to read
  red$ = {{Cl|HEX$}}({{Cl|INP}}({{Cl|&amp;H}}3C9) * 4)              'convert port setting to 32 bit values
  grn$ = {{Cl|HEX$}}({{Cl|INP}}({{Cl|&amp;H}}3C9) * 4)
  blu$ = {{Cl|HEX$}}({{Cl|INP}}({{Cl|&amp;H}}3C9) * 4)
  {{Cl|IF...THEN|IF}} {{Cl|LEN}}(red$) = 1 {{Cl|THEN}} red$ = "0" + red$  'necessary for low or zero color intensities
  {{Cl|IF...THEN|IF}} {{Cl|LEN}}(grn$) = 1 {{Cl|THEN}} grn$ = "0" + grn$
  {{Cl|IF...THEN|IF}} {{Cl|LEN}}(blu$) = 1 {{Cl|THEN}} blu$ = "0" + blu$
  hex32$(attribute) = "{{Cl|&amp;H}}" + alpha$ + red$ + grn$ + blu$
{{Cl|NEXT}}
{{Cl|PRINT}} "COLOR 0 = " + hex32$(0)
{{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} 15
  {{Cl|_PALETTECOLOR}} i, {{Cl|VAL}}(hex32$(i))
  {{Cl|COLOR}} i
  {{Cl|PRINT}} "COLOR" + {{Cl|STR$}}(i) + " = " + hex32$(i) 'returns closest attribute
{{Cl|NEXT}} '' ''
{{CodeEnd}}{{small|Code by Ted Weissgerber}}
:''Explanation:'' [[VAL]] is used to convert the [[HEX$|hexadecimal]] [[STRING|string]] values to valid 32 bit color values for [[_PALETTECOLOR]].
:: No VAL conversion is necessary if the [[LONG]] [[&amp;H]] hexadecimal values are entered into the program directly by the programmer.


''See also:''
* [[_PALETTECOLOR]]
* [[_RGB32]], [[_RGBA32]]
* [[_RGB]], [[_RGBA]] {{text|(when used in 32 bit only)}}
* [[COLOR]], [[SCREEN]], [[POINT]]
* [http://www.w3schools.com/html/html_colornames.asp HTML Color Table HEX Values and Names]


{{PageNavigation}}
