color.txt


\ color 3/14/00 11:21 pm NAB

needs toolkit

0 enum mode
  mode DisplayModeGetDefaults
  mode DisplayModeGet
  mode DisplayModeSetToDefaults
  mode DisplayModeSet
  mode DisplayModeGetSupportedDepths
  mode DisplayModeSupportsColor

: color-depth ( bits -- )
  0 sp@
  0. 2swap
  0.
  0.
  DisplayModeSet >byte
  ScrDisplayMode throw 2drop ;

: grayscale ( -- )  2 color-depth ;

: monochrome ( -- )  1 color-depth ;

: >rgb ( r g b -- rgb. )
  swap >byte or swap ;

: rgb> ( rgb. -- r g b )
  swap dup 8 rshift swap 15 and ;

: gray ( gray -- rgb. )
  dup dup ;

: color>gray ( r g b -- gray )
  100 877 */  swap  100 170 */  +
  swap  100 334 */  + ;

: set-colors ( fore-rgb. back-rgb. -- )
  sp@ 0. 2swap 0. 2over 16 m+
  WinSetColors 2drop 2drop ;

: get-colors ( -- fore-rgb. back-rgb. )
  0. 0. sp@ 0. 2over 4 m+ 0.
  WinSetColors ;

: foreground ( rgb. -- )
  sp@ 2>r
  0. 0. 0. 2r> WinSetColors 2drop ;

: background ( rgb. -- )
  sp@ 2>r
  0. 2r> 0. 0. WinSetColors 2drop ;

: color: ( r g b "name" -- )
  >rgb 2constant ;

0 gray color: black
127 gray color: dark-gray
191 gray color: light-gray
255 gray color: white

 \ Example:
 \ grayscale
 \ light-gray background
 \ black foreground


  HTMLized by Forth2HTML