Spec-Zone.ru › Nim

std/colors

SourceEdit

Этот модуль реализует обработку цвета для Nim, а именно смешивание цветов и разбор имен цветов CSS.

Импорты

strutils, algorithm

Типы

Color = distinct int
Цвет, хранящийся как RGB, например 0xff00cc. Source Edit

Константы

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
Исходный код Редактировать
colDarkGrey = 11119017
Исходный код Редактировать
colDarkKhaki = 12433259
Исходный код Редактировать
colDarkMagenta = 9109643
Исходный код Редактировать
colDarkOliveGreen = 5597999
Исходный код Редактировать
colDarkorange = 16747520
Исходный код Редактировать
colDarkOrchid = 10040012
Исходный код Редактировать
colDarkRed = 9109504
Исходный код Редактировать
colDarkSalmon = 15308410
Исходный код Редактировать
colDarkSeaGreen = 9419919
Исходный код Редактировать
colDarkSlateBlue = 4734347
Исходный код Редактировать
colDarkSlateGray = 3100495
Исходный код Редактировать
colDarkSlateGrey = 3100495
Исходный код Редактировать
colDarkTurquoise = 52945
Исходный код Редактировать
colDarkViolet = 9699539
Исходный код Редактировать
colDeepPink = 16716947
Исходный код Редактировать
colDeepSkyBlue = 49151
Исходный код Редактировать
colDimGray = 6908265
Исходный код Редактировать
colDimGrey = 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
Исходный код Редактировать
colGrey = 8421504
Исходный код Редактировать
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
Исходный код Редактировать
colLightGray = 13882323
Исходный код Редактировать
colLightGreen = 9498256
Исходный код Редактировать
colLightGrey = 13882323
Исходный код Редактировать
colLightPink = 16758465
Исходный код Редактировать
colLightSalmon = 16752762
Исходный код Редактировать
colLightSeaGreen = 2142890
Исходный код Редактировать
colLightSkyBlue = 8900346
Исходный код Редактировать
colLightSlateGray = 7833753
Исходный код Редактировать
colLightSlateGrey = 7833753
Исходный код Редактировать
colLightSteelBlue = 11584734
Исходный код Редактировать
colLightYellow = 16777184
Исходный код Редактировать
colLime = 65280
Исходный код Редактировать
colLimeGreen = 3329330
Исходный код Редактировать
colLinen = 16445670
Исходный код Редактировать
colMagenta = 16711935
Исходный код Редактировать
colMaroon = 8388608
Исходный код Редактировать
colMediumAquaMarine = 6737322
Исходный код Редактировать
colMediumBlue = 205
Исходный код Редактировать
colMediumOrchid = 12211667
Исходный код Редактировать
colMediumPurple = 9662683
Исходный код Редактировать
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 = 14381203
Исходный код Редактировать
colPapayaWhip = 16773077
Исходный код Редактировать
colPeachPuff = 16767673
Исходный код Редактировать
colPeru = 13468991
Исходный код Редактировать
colPink = 16761035
Исходный код Редактировать
colPlum = 14524637
Исходный код Редактировать
colPowderBlue = 11591910
Исходный код Редактировать
colPurple = 8388736
Исходный код Редактировать
colRebeccaPurple = 6697881
Исходный код Редактировать
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
Исходный код Редактировать
colSlateGrey = 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 `$`(c: Color): string {....raises: [], tags: [], forbids: [].}
Преобразует цвет в его текстовое представление.

Пример:

assert $colFuchsia == "#FF00FF"
Исходный код Редактировать
proc `+`(a, b: Color): Color {....raises: [], tags: [], forbids: [].}

Складывает два цвета.

Используется насыщенная арифметика, поэтому каждый компонент цвета не может переполниться (255 используется как максимальное значение).

Пример:

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: [], forbids: [].}

Вычитает два цвета.

Используется насыщенная арифметика, поэтому каждый компонент цвета не может стать меньше нуля (0 используется как минимальное значение).

Пример:

var
  a = Color(0xff_33_ff)
  b = Color(0x11_ff_cc)
assert a - b == Color(0xee_00_33)
Исходный код Редактировать
proc `==`(a, b: Color): bool {.borrow, ...raises: [], tags: [], forbids: [].}

Сравнивает два цвета.

var
  a = Color(0xff_00_ff)
  b = colFuchsia
  c = Color(0x00_ff_cc)
assert a == b
assert not (a == c)
Исходный код Редактировать
proc extractRGB(a: Color): tuple[r, g, b: range[0 .. 255]] {....raises: [],
    tags: [], forbids: [].}
Извлекает компоненты красного/зелёного/синего цвета a.

Пример:

var
  a = Color(0xff_00_ff)
  b = Color(0x00_ff_cc)
type
  Col = range[0..255]
# assert extractRGB(a) == (r: 255.Col, g: 0.Col, b: 255.Col)
# assert extractRGB(b) == (r: 0.Col, g: 255.Col, b: 204.Col)
echo extractRGB(a)
echo typeof(extractRGB(a))
echo extractRGB(b)
echo typeof(extractRGB(b))
Исходный код Редактировать
proc intensity(a: Color; f: float): Color {....raises: [], tags: [], forbids: [].}
Возвращает a с интенсивностью f. f должно быть числом с плавающей точкой от 0.0 (полностью тёмный) до 1.0 (полная интенсивность цвета).

Пример:

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 isColor(name: string): bool {....raises: [], tags: [], forbids: [].}
Возвращает true, если name является известным именем цвета или шестнадцатеричным цветом, начинающимся с #. Без учета регистра.

Пример:

var
  a = "silver"
  b = "#0179fc"
  c = "#zzmmtt"
assert a.isColor
assert b.isColor
assert not c.isColor
Исходный код Редактировать
proc parseColor(name: string): Color {....raises: [ValueError], tags: [],
                                       forbids: [].}

Парсит name в значение цвета.

Если не удалось разобрать допустимый цвет, ValueError поднимается. Без учета регистра.

Пример:

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 rgb(r, g, b: range[0 .. 255]): Color {....raises: [], tags: [], forbids: [].}
Создаёт цвет из значений RGB.

Пример:

assert rgb(0, 255, 128) == Color(0x00_ff_80)
Исходный код Редактировать

Шаблоны

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

Использует fn для смешивания цветов a и b.

fn вызывается для каждого компонента R, G и B. Если результат fn не находится в range[0..255], он будет насыщен до него.

Пример:

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)
Исходный код Изменить

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/colors.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API