цвета
Этот модуль реализует обработку цветов для Nim.
Импорты
- strutils, algorithm
Типы
Color = distinct int
- Цвет, хранящийся как RGB, например,
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.}- Сравнивает два цвета.
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: [].}-
Складывает два цвета.
Используется насыщенная арифметика, чтобы каждый компонент цвета не переполнялся (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: [].}-
Вычитает два цвета.
Используется насыщенная арифметика, чтобы каждый компонент цвета не перешел в отрицательные значения (0 используется как минимум).
Пример:
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: [].}- Извлекает компоненты красного/зелёного/синего цвета
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: [].}- Возвращает
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 `$`(c: Color): string {...}{.raises: [], tags: [].}- Преобразует цвет в его текстовое представление.
Пример:
assert $colFuchsia == "#FF00FF"
Исходный код Редактировать proc parseColor(name: string): Color {...}{.raises: [ValueError], tags: [].}-
Парсит
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 isColor(name: string): bool {...}{.raises: [], tags: [].}- Возвращает true, если
nameявляется известным именем цвета или шестнадцатеричным цветом, начинающимся с#. Регистронезависимо.Пример:
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: [].}- Создаёт цвет из значений 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–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/colors.html