# Color

The Color structure contains functions to manipulate colours and palettes.

    structure Color:
      sig
        type HPALETTE and HDC

        datatype
          PaletteEntryFlag = PC_EXPLICIT | PC_NOCOLLAPSE | PC_NULL | PC_RESERVED
        type PALETTEENTRY = {red: int, green: int, blue: int, flags: PaletteEntryFlag}

        type COLORREF
        val toRGB :
           COLORREF -> {red: Int.int, blue: Int.int, green: Int.int}
        val RGB : {red: int, blue: int, green: int} -> COLORREF
        val PALETTERGB : {red: int, blue: int, green: int} -> COLORREF

        type SystemPaletteUse
        val SYSPAL_ERROR : SystemPaletteUse
        val SYSPAL_NOSTATIC : SystemPaletteUse
        val SYSPAL_STATIC : SystemPaletteUse

        val AnimatePalette : HPALETTE * int * PALETTEENTRY list -> bool
        val CreateHalftonePalette : HDC -> HPALETTE
        val CreatePalette : PALETTEENTRY list -> HPALETTE
        val GetNearestColor : HDC * COLORREF -> COLORREF
        val GetNearestPaletteIndex : HPALETTE * COLORREF -> int
        val GetPaletteEntries : HPALETTE * int * int -> PALETTEENTRY list
        val GetSystemPaletteEntries : HPALETTE * int * int -> PALETTEENTRY list
        val GetSystemPaletteUse : HDC -> SystemPaletteUse
        val RealizePalette : HDC -> int
        val ResizePalette : HPALETTE * int -> unit
        val SelectPalette : HDC * HPALETTE * bool -> HPALETTE
        val SetPaletteEntries : HPALETTE * int * PALETTEENTRY list -> unit
        val SetSystemPaletteUse : HDC * SystemPaletteUse -> SystemPaletteUse
        val UnrealizeObject : HPALETTE -> unit
        val UpdateColors : HDC -> unit
      end