# colors

- マニュアル
- 標準ライブラリ
- 索引

検索
分類:

This module implements color handling for Nim.

# インポート

strutils, algorithm

# 型

    Color = distinct int

  A color stored as RGB, e.g. `0xff00cc`. ソース 編集

# 定数

    colAliceBlue = 15792383

  ソース 編集

    colAntiqueWhite = 16444375

  ソース 編集

    colAqua = 65535

  ソース 編集

    colAquamarine = 8388564

  ソース 編集

    colAzure = 15794175

  ソース 編集

    colBeige = 16119260

  ソース 編集

    colBisque = 16770244

  ソース 編集

    colBlack = 0

  ソース 編集

    colBlanchedAlmond = 16772045

  ソース 編集

    colBlue = 255

  ソース 編集

    colBlueViolet = 9055202

  ソース 編集

    colBrown = 10824234

  ソース 編集

    colBurlyWood = 14596231

  ソース 編集

    colCadetBlue = 6266528

  ソース 編集

    colChartreuse = 8388352

  ソース 編集

    colChocolate = 13789470

  ソース 編集

    colCoral = 16744272

  ソース 編集

    colCornflowerBlue = 6591981

  ソース 編集

    colCornsilk = 16775388

  ソース 編集

    colCrimson = 14423100

  ソース 編集

    colCyan = 65535

  ソース 編集

    colDarkBlue = 139

  ソース 編集

    colDarkCyan = 35723

  ソース 編集

    colDarkGoldenRod = 12092939

  ソース 編集

    colDarkGray = 11119017

  ソース 編集

    colDarkGreen = 25600

  ソース 編集

    colDarkKhaki = 12433259

  ソース 編集

    colDarkMagenta = 9109643

  ソース 編集

    colDarkOliveGreen = 5597999

  ソース 編集

    colDarkorange = 16747520

  ソース 編集

    colDarkOrchid = 10040012

  ソース 編集

    colDarkRed = 9109504

  ソース 編集

    colDarkSalmon = 15308410

  ソース 編集

    colDarkSeaGreen = 9419919

  ソース 編集

    colDarkSlateBlue = 4734347

  ソース 編集

    colDarkSlateGray = 3100495

  ソース 編集

    colDarkTurquoise = 52945

  ソース 編集

    colDarkViolet = 9699539

  ソース 編集

    colDeepPink = 16716947

  ソース 編集

    colDeepSkyBlue = 49151

  ソース 編集

    colDimGray = 6908265

  ソース 編集

    colDodgerBlue = 2003199

  ソース 編集

    colFireBrick = 11674146

  ソース 編集

    colFloralWhite = 16775920

  ソース 編集

    colForestGreen = 2263842

  ソース 編集

    colFuchsia = 16711935

  ソース 編集

    colGainsboro = 14474460

  ソース 編集

    colGhostWhite = 16316671

  ソース 編集

    colGold = 16766720

  ソース 編集

    colGoldenRod = 14329120

  ソース 編集

    colGray = 8421504

  ソース 編集

    colGreen = 32768

  ソース 編集

    colGreenYellow = 11403055

  ソース 編集

    colHoneyDew = 15794160

  ソース 編集

    colHotPink = 16738740

  ソース 編集

    colIndianRed = 13458524

  ソース 編集

    colIndigo = 4915330

  ソース 編集

    colIvory = 16777200

  ソース 編集

    colKhaki = 15787660

  ソース 編集

    colLavender = 15132410

  ソース 編集

    colLavenderBlush = 16773365

  ソース 編集

    colLawnGreen = 8190976

  ソース 編集

    colLemonChiffon = 16775885

  ソース 編集

    colLightBlue = 11393254

  ソース 編集

    colLightCoral = 15761536

  ソース 編集

    colLightCyan = 14745599

  ソース 編集

    colLightGoldenRodYellow = 16448210

  ソース 編集

    colLightGrey = 13882323

  ソース 編集

    colLightGreen = 9498256

  ソース 編集

    colLightPink = 16758465

  ソース 編集

    colLightSalmon = 16752762

  ソース 編集

    colLightSeaGreen = 2142890

  ソース 編集

    colLightSkyBlue = 8900346

  ソース 編集

    colLightSlateGray = 7833753

  ソース 編集

    colLightSteelBlue = 11584734

  ソース 編集

    colLightYellow = 16777184

  ソース 編集

    colLime = 65280

  ソース 編集

    colLimeGreen = 3329330

  ソース 編集

    colLinen = 16445670

  ソース 編集

    colMagenta = 16711935

  ソース 編集

    colMaroon = 8388608

  ソース 編集

    colMediumAquaMarine = 6737322

  ソース 編集

    colMediumBlue = 205

  ソース 編集

    colMediumOrchid = 12211667

  ソース 編集

    colMediumPurple = 9662680

  ソース 編集

    colMediumSeaGreen = 3978097

  ソース 編集

    colMediumSlateBlue = 8087790

  ソース 編集

    colMediumSpringGreen = 64154

  ソース 編集

    colMediumTurquoise = 4772300

  ソース 編集

    colMediumVioletRed = 13047173

  ソース 編集

    colMidnightBlue = 1644912

  ソース 編集

    colMintCream = 16121850

  ソース 編集

    colMistyRose = 16770273

  ソース 編集

    colMoccasin = 16770229

  ソース 編集

    colNavajoWhite = 16768685

  ソース 編集

    colNavy = 128

  ソース 編集

    colOldLace = 16643558

  ソース 編集

    colOlive = 8421376

  ソース 編集

    colOliveDrab = 7048739

  ソース 編集

    colOrange = 16753920

  ソース 編集

    colOrangeRed = 16729344

  ソース 編集

    colOrchid = 14315734

  ソース 編集

    colPaleGoldenRod = 15657130

  ソース 編集

    colPaleGreen = 10025880

  ソース 編集

    colPaleTurquoise = 11529966

  ソース 編集

    colPaleVioletRed = 14184595

  ソース 編集

    colPapayaWhip = 16773077

  ソース 編集

    colPeachPuff = 16767673

  ソース 編集

    colPeru = 13468991

  ソース 編集

    colPink = 16761035

  ソース 編集

    colPlum = 14524637

  ソース 編集

    colPowderBlue = 11591910

  ソース 編集

    colPurple = 8388736

  ソース 編集

    colRed = 16711680

  ソース 編集

    colRosyBrown = 12357519

  ソース 編集

    colRoyalBlue = 4286945

  ソース 編集

    colSaddleBrown = 9127187

  ソース 編集

    colSalmon = 16416882

  ソース 編集

    colSandyBrown = 16032864

  ソース 編集

    colSeaGreen = 3050327

  ソース 編集

    colSeaShell = 16774638

  ソース 編集

    colSienna = 10506797

  ソース 編集

    colSilver = 12632256

  ソース 編集

    colSkyBlue = 8900331

  ソース 編集

    colSlateBlue = 6970061

  ソース 編集

    colSlateGray = 7372944

  ソース 編集

    colSnow = 16775930

  ソース 編集

    colSpringGreen = 65407

  ソース 編集

    colSteelBlue = 4620980

  ソース 編集

    colTan = 13808780

  ソース 編集

    colTeal = 32896

  ソース 編集

    colThistle = 14204888

  ソース 編集

    colTomato = 16737095

  ソース 編集

    colTurquoise = 4251856

  ソース 編集

    colViolet = 15631086

  ソース 編集

    colWheat = 16113331

  ソース 編集

    colWhite = 16777215

  ソース 編集

    colWhiteSmoke = 16119285

  ソース 編集

    colYellow = 16776960

  ソース 編集

    colYellowGreen = 10145074

  ソース 編集

# プロシージャ

    proc `==`(a, b: Color): bool {...}{.borrow.}

  Compares two colors.

      var
        a = Color(0xff_00_ff)
        b = colFuchsia
        c = Color(0x00_ff_cc)
      assert a == b
      assert not a == c

  ソース 編集

    proc `+`(a, b: Color): Color {...}{.raises: [], tags: [].}

  Adds two colors.

  This uses saturated arithmetic, so that each color component cannot overflow (255 is used as a maximum).

      var
        a = Color(0xaa_00_ff)
        b = Color(0x11_cc_cc)
      assert a + b == Color(0xbb_cc_ff)

  ソース 編集

    proc `-`(a, b: Color): Color {...}{.raises: [], tags: [].}

  Subtracts two colors.

  This uses saturated artithmetic, so that each color component cannot underflow (0 is used as a minimum).

      var
        a = Color(0xff_33_ff)
        b = Color(0x11_ff_cc)
      assert a - b == Color(0xee_00_33)

  ソース 編集

    proc extractRGB(a: Color): tuple[r, g, b: range[0 .. 255]] {...}{.raises: [], tags: [].}

  Extracts the red/green/blue components of the color `a`.

      var
        a = Color(0xff_00_ff)
        b = Color(0x00_ff_cc)
      type
        Col = range[0..255]
      echo extractRGB(a) # => (r: 255, g: 0, b: 255)
      echo extractRGB(b) # => (r: 0, g: 255, b: 204)

  ソース 編集

    proc intensity(a: Color; f: float): Color {...}{.raises: [], tags: [].}

  Returns `a` with intensity `f`. `f` should be a float from 0.0 (completely dark) to 1.0 (full color intensity).

      var
        a = Color(0xff_00_ff)
        b = Color(0x00_42_cc)
      assert a.intensity(0.5) == Color(0x80_00_80)
      assert b.intensity(0.5) == Color(0x00_21_66)

  ソース 編集

    proc `$`(c: Color): string {...}{.raises: [], tags: [].}

  Converts a color into its textual representation.

      assert $colFuchsia == "#FF00FF"

  ソース 編集

    proc parseColor(name: string): Color {...}{.raises: [ValueError], tags: [].}

  Parses `name` to a color value.

  If no valid color could be parsed `ValueError` is raised. Case insensitive.

      var
        a = "silver"
        b = "#0179fc"
        c = "#zzmmtt"
      assert parseColor(a) == Color(0xc0_c0_c0)
      assert parseColor(b) == Color(0x01_79_fc)
      doAssertRaises(ValueError): discard parseColor(c)

  ソース 編集

    proc isColor(name: string): bool {...}{.raises: [], tags: [].}

  Returns true if `name` is a known color name or a hexadecimal color prefixed with `#`. Case insensitive.

      var
        a = "silver"
        b = "#0179fc"
        c = "#zzmmtt"
      assert a.isColor
      assert b.isColor
      assert not c.isColor

  ソース 編集

    proc rgb(r, g, b: range[0 .. 255]): Color {...}{.raises: [], tags: [].}

  Constructs a color from RGB values.

      assert rgb(0, 255, 128) == Color(0x00_ff_80)

  ソース 編集

# テンプレート

    template mix(a, b: Color; fn: untyped): untyped

  Uses `fn` to mix the colors `a` and `b`.

  `fn` is invoked for each component R, G, and B. If `fn`'s result is not in the `range[0..255]`, it will be saturated to be so.

      var
        a = Color(0x0a2814)
        b = Color(0x050a03)

      proc myMix(x, y: int): int =
        2 * x - 3 * y

      assert mix(a, b, myMix) == Color(0x05_32_1f)

  ソース 編集