RGB: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 27: Line 27:
{{Cl|DIM}} hex32$(15)
{{Cl|DIM}} hex32$(15)
{{Cl|FOR...NEXT|FOR}} attribute = 1 {{Cl|TO}} 15
{{Cl|FOR...NEXT|FOR}} attribute = 1 {{Cl|TO}} 15
   {{Cl|OUT}} {{Cl|&H}}3C7, attribute      'set color attribute to read
   {{Cl|OUT}} {{Cl|&H}}3C7, attribute      'set color attribute to read
   red = {{Cl|INP}}({{Cl|&H}}3C9) * 4      'multiply by 4 to convert intensity to 0 to 255 RGB values
   red = {{Cl|INP}}({{Cl|&H}}3C9) * 4      'multiply by 4 to convert intensity to 0 to 255 RGB values
   grn = {{Cl|INP}}({{Cl|&H}}3C9) * 4
   grn = {{Cl|INP}}({{Cl|&H}}3C9) * 4
   blu = {{Cl|INP}}({{Cl|&H}}3C9) * 4
   blu = {{Cl|INP}}({{Cl|&H}}3C9) * 4
   hex32$(attribute) = "{{Cl|&H}}" + {{Cl|HEX$}}({{Cl|_RGB32}}(red, grn, blu))  'always returns the 32 bit value
   hex32$(attribute) = "{{Cl|&H}}" + {{Cl|HEX$}}({{Cl|_RGB32}}(red, grn, blu))  'always returns the 32 bit value
   {{Cl|COLOR}} attribute
   {{Cl|COLOR}} attribute
   {{Cl|PRINT}} "{{Cl|COLOR}}" + {{Cl|STR$}}({{Cl|_RGB}}(red, grn, blu)) + " = " + hex32$(attribute)  'closest attribute
   {{Cl|PRINT}} "{{Cl|COLOR}}" + {{Cl|STR$}}({{Cl|_RGB}}(red, grn, blu)) + " = " + hex32$(attribute)  'closest attribute
Line 60: Line 60:
* [[_LOADIMAGE]], [[_NEWIMAGE]]
* [[_LOADIMAGE]], [[_NEWIMAGE]]
* [[HEX$ 32 Bit Values]], [[POINT]]
* [[HEX$ 32 Bit Values]], [[POINT]]
* [[SAVEIMAGE]]
* [[SaveImage SUB]]
* [http://www.w3schools.com/html/html_colornames.asp Hexadecimal Color Values]
* [https://www.w3schools.com/colors/colors_names.asp Hexadecimal Color Values]




{{PageNavigation}}
{{PageNavigation}}

Latest revision as of 21:02, 3 December 2024

The _RGB function returns the closest palette attribute index (legacy SCREEN modes) OR the LONG 32-bit color value (32-bit screens).


Syntax

colorIndex~& = _RGB(red&, green&, blue&[, imageHandle&])


Description

  • The value returned is either the closest color attribute number or a 32-bit _UNSIGNED LONG color value.
  • Return variable types must be LONG or resulting color may lose the _BLUE value.
  • red& specifies the red component intensity from 0 to 255.
  • green& specifies the green component intensity from 0 to 255.
  • blue& specifies the blue component intensity from 0 to 255.
  • Intensity values outside the valid range are clipped.
  • Returns LONG 32-bit hexadecimal values from &HFF000000 to &HFFFFFFFF, always with full _ALPHA.
  • When LONG values are PUT to file, the ARGB values become BGRA. Use LEFT$(MKL$(colorIndex~&), 3) to place 3 colors.
  • If the imageHandle& is omitted the image is assumed to be the current destination or SCREEN page.
  • Colors returned are always opaque as the transparency value is always 255. Use _ALPHA or _CLEARCOLOR to change it.
  • NOTE: Default 32-bit backgrounds are clear black or _RGBA(0, 0, 0, 0). Use CLS to make the black opaque.


Examples

Example: Converting the color port RGB intensity palette values 0 to 63 to 32 bit hexadecimal values.

SCREEN 12
DIM hex32$(15)
FOR attribute = 1 TO 15
  OUT &H3C7, attribute      'set color attribute to read
  red = INP(&H3C9) * 4      'multiply by 4 to convert intensity to 0 to 255 RGB values
  grn = INP(&H3C9) * 4
  blu = INP(&H3C9) * 4
  hex32$(attribute) = "&H" + HEX$(_RGB32(red, grn, blu))   'always returns the 32 bit value
  COLOR attribute
  PRINT "COLOR" + STR$(_RGB(red, grn, blu)) + " = " + hex32$(attribute)  'closest attribute
NEXT
COLOR 1 = &HFF0000A8
COLOR 2 = &HFF00A800
COLOR 3 = &HFF00A8A8
COLOR 4 = &HFFA80000
COLOR 5 = &HFFA800A8
COLOR 6 = &HFFA85400
COLOR 7 = &HFFA8A8A8
COLOR 8 = &HFF545454
COLOR 9 = &HFF5454FC
COLOR 10 = &HFF54FC54
COLOR 11 = &HFF54FCFC
COLOR 12 = &HFFFC5454
COLOR 13 = &HFFFC54FC
COLOR 14 = &HFFFCFC54
COLOR 15 = &HFFFCFCFC
Note: This procedure also shows how the returns from _RGB and _RGB32 differ in a non-32 bit screen mode.


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link