کتابخانه‌ی استاندارد · گرافیک و بازی

رنگ color

رنگ در استاندارد رابط کاربری سلام: همه‌ی نگارش‌های رنگ به انگلیسی و فارسی با پیام خطای روشن، تبدیل میان فضاهای رنگ، آمیختن در oklab، جفت روشن و تیره، تضاد و CSS خروجی وب.

واردسازی رنگ

نام آرگومان‌ها شناسه‌ی خود کد است و معادل فارسی ندارد؛ گونه‌ها، کلیدواژه‌ها و نام بسته‌ها با معادل فارسی نوشته می‌شوند.

رنگ بسته‌ی رنگ در سلام است. هر رنگی را که یک صفحه به کار می‌برد می‌خواند، با همان نگارش در کد صفحه، در یک رشته و در مقداری که هنگام اجرا ساخته می‌شود، و رنگ را به آنچه هر مقصد لازم دارد تبدیل می‌کند: یک طبیعی۳۲ فشرده برای نمایشگر بومی و متن CSS برای وب.

هر رنگ کانال‌های sRGB از ۰ تا ۱ و یک آلفا دارد. رنگی از گستره‌ای پهن‌تر، مانند color(display p3, 1, 0, 0)، کانال‌های کمتر از ۰ یا بیشتر از ۱ را نگه می‌دارد، پس تا هنگام کشیدن چیزی از دست نمی‌رود.

آنچه تجزیه می‌پذیرد:

  • نام‌ها: هر ۱۴۸ نام رنگ CSS به همراه transparent و current (رنگ متن)، با حروف کوچک یا بزرگ و با فاصله یا بی‌فاصله (alice blue)، و نام‌های فارسی مانند قرمز، آبی، قهوه ای، شفاف و کنونی.
  • هگز: #rgb، #rgba، #rrggbb و #rrggbbaa.
  • تابع‌ها: rgb، rgba، hsl، hsla، hwb، lab، lch، oklab، oklch، cmyk (و device cmyk) و color(فضا, c1, c2, c3) با فضاهای srgb، srgb linear، display p3، a98 rgb، prophoto rgb، rec2020، xyz، xyz d50 و xyz d65. مقدارها با ویرگول جدا می‌شوند، مانند rgb(51, 102, 170)، یا مانند CSS با فاصله و / پیش از آلفا. نگارش خط‌تیره‌دار CSS (display-p3) هم کار می‌کند.
  • mix(a, b, مقدار, فضا) یا ترکیب(...): مقدار سهم b است، عددی از ۰ تا ۱ یا درصد، و اگر نیاید ۵۰٪؛ فضا اگر نیاید oklab است.
  • light dark(a, b) یا روشن تیره(a، b): رنگی با یک گونه‌ی روشن و یک گونه‌ی تیره.
  • عددها: درصد با % یا ٪، رقم‌های فارسی، ویرگول فارسی ،، و زاویه‌ی فام به صورت عدد خالی بر حسب درجه یا با deg، rad، grad یا turn.

چند نکته:

  • مقدارها بررسی می‌شوند، نه بریده. rgb(300, 0, 0) خطاست، نه قرمز. خطا می‌گوید چه انتظار می‌رفت و مشکل از کدام ستون شروع می‌شود، و اگر نامی نزدیک باشد پیشنهادش می‌کند.
  • سی اس اس چیزی می‌نویسد که همه‌ی مرورگرهای امروزی یکسان می‌کشند: #rrggbb یا #rrggbbaa درون sRGB، color(display-p3 ...) برای رنگ پهن‌گستره‌ای که در Display P3 جا می‌شود، و فراتر از آن oklch(...)، currentColor و light-dark(a, b).
  • ای آر جی بی هر کانال را به sRGB می‌بُرد، پس رنگ پهن‌گستره در مقصد بومی با نزدیک‌ترین رنگ sRGB کشیده می‌شود.
  • cmyk همان فرمول ساده است (قرمز برابر (1 - c) * (1 - k))، بدون نمایه‌ی چاپگر.
  • current را هنگام خواندن نمی‌توان آمیخت، چون رنگ متن تنها هنگام نمایش صفحه معلوم می‌شود.

یک رنگ‌بندی روشن و تیره

یک پوسته از یک رنگ نشان آغاز می‌شود. هر نقش یک جفت روشن تیره می‌گیرد، روشن تر و تیره تر روشنایی را در oklch جابه‌جا می‌کنند و درون sRGB می‌مانند، و آمیختن هر دو گونه را با هم می‌آمیزد. سپس نسبت تضاد هر جفت را با نسبت ۴٫۵ که WCAG برای متن اصلی می‌خواهد، در حالت روشن و تیره، می‌سنجد.

color-guide-theme.salam
واردسازی رابط گرافیکی.رنگ
واردسازی ریاضی

تابع r2(v: اعشار۶۴): اعشار۶۴:
    برگشت ریاضی.گردکردن(v * 100.0) / 100.0
پایان

تابع check(name: رشته، text: رنگ.رنگ، back: رنگ.رنگ):
    light := رنگ.نسبت تضاد(رنگ.روشن(text)، رنگ.روشن(back))
    dark := رنگ.نسبت تضاد(رنگ.تیره(text)، رنگ.تیره(back))
    ناپایا verdict := "ok"
    اگر light کوچکتر 4.5 یا dark کوچکتر 4.5:
        verdict = "too low for body text"
    پایان
    سرچاپ name، "light"، r2(light)، "dark"، r2(dark)، verdict
پایان

تابع ریشه:
    ناپایا brand := رنگ.رنگ {}
    اگر وارونه رنگ.تجزیه("#3366aa"، brand):
        برگشت 1
    پایان
    page := رنگ.روشن تیره(رنگ.هگز(0xffffff)، رنگ.هگز(0x121212))
    text := رنگ.روشن تیره(رنگ.هگز(0x1a1a1a)، رنگ.هگز(0xeeeeee))
    accent := رنگ.روشن تیره(brand، رنگ.روشن تر(brand، 0.2))
    muted := رنگ.آمیختن(text، page، 0.45)
    hover := رنگ.روشن تیره(رنگ.تیره تر(brand، 0.08)، رنگ.روشن تر(brand، 0.28))
    سرچاپ "page   "، رنگ.سی اس اس(page)
    سرچاپ "text   "، رنگ.سی اس اس(text)
    سرچاپ "accent "، رنگ.سی اس اس(accent)
    سرچاپ "muted  "، رنگ.سی اس اس(muted)
    سرچاپ "hover  "، رنگ.سی اس اس(hover)
    check("text on page  "، text، page)
    check("accent on page"، accent، page)
    check("muted on page "، muted، page)
پایان
خروجیpage light-dark(#ffffff, #121212) text light-dark(#1a1a1a, #eeeeee) accent light-dark(#3366aa, #6ea3ec) muted light-dark(#777777, #818181) hover light-dark(#1b4f91, #8cbdff) text on page light 17.4 dark 16.15 ok accent on page light 5.8 dark 7.25 ok muted on page light 4.47 dark 4.82 too low for body text

بررسی رنگی که کاربر می‌نویسد

صفحه‌ی تنظیماتی که رنگ را به صورت متن می‌گیرد باید بگوید چه چیزی نادرست است. خطا برای رنگی که تجزیه می‌پذیرد رشته‌ی خالی برمی‌گرداند و در غیر این صورت یک خط با شماره‌ی ستون و شکل مورد انتظار، که می‌توان همان را زیر فیلد نشان داد.

color-guide-input.salam
واردسازی رابط گرافیکی.رنگ

تابع ریشه:
    inputs := ["#3366aa"، "rgb(51 102 170 / 50%)"، "hsl(210, 50%, 40%)"، "mix(red, blue, 30%)"، "rgb(300, 0, 0)"، "hsl(210 50%)"، "darkgrey"، "dark grey"، "darkgray"، "lightgreem"، "rgb(51, 102 170)"، "#12345"]
    ناپایا accepted := 0
    هر text در inputs:
        message := رنگ.خطا(text)
        اگر message برابر "":
            ناپایا c := رنگ.رنگ {}
            رنگ.تجزیه(text، c)
            سرچاپ "ok     "، text، "=>"، رنگ.سی اس اس(c)
            accepted++
        وگرنه:
            سرچاپ "refused"، text
            سرچاپ "       "، message
        پایان
    پایان
    سرچاپ accepted، "of"، inputs.طول()، "accepted"
پایان
خروجیok #3366aa => #3366aa ok rgb(51 102 170 / 50%) => #3366aa80 ok hsl(210, 50%, 40%) => #336699 ok mix(red, blue, 30%) => #ba4d79 refused rgb(300, 0, 0) column 5: the red channel of rgb() must be 0 to 255, found 300 refused hsl(210 50%) column 12: hsl() takes 3 values (hue, saturation, lightness) and an optional alpha, found 2 values ok darkgrey => #a9a9a9 ok dark grey => #a9a9a9 ok darkgray => #a9a9a9 refused lightgreem column 1: unknown colour name 'lightgreem'; did you mean 'lightgreen'? refused rgb(51, 102 170) column 13: expected ',' between the values of rgb(...), found '170' refused #12345 column 1: '#12345' has 5 hex digits; a hex colour has 3, 4, 6 or 8 7 of 12 accepted

گونه‌ها

رنگ Color

ساختار رنگ
یک رنگ: کانال‌های sRGB از ۰ تا ۱، یک آلفا و گونه‌ی تیره‌ای اختیاری که light dark می‌سازد. برای رنگ‌های بیرون از sRGB کانال‌ها می‌توانند کمتر از ۰ یا بیشتر از ۱ باشند.
نامانگلیسیگونهتوضیح
قرمزrاعشار۶۴ = 0کانال قرمز، درون sRGB از ۰ تا ۱.
سبزgاعشار۶۴ = 0کانال سبز، درون sRGB از ۰ تا ۱.
آبیbاعشار۶۴ = 0کانال آبی، درون sRGB از ۰ تا ۱.
آلفاaاعشار۶۴ = 1آلفا، از ۰ (شفاف) تا ۱ (کدر)، بدون پیش‌ضرب.
کنونیcurrentمنطقی = نادرستبرای current، یعنی رنگ متن عنصر، درست است؛ آن‌گاه کانال‌ها به کار نمی‌آیند.
دارای تیرهhas_darkمنطقی = نادرستوقتی رنگ گونه‌ی تیره دارد درست است، مانند رنگی که light dark(a, b) یا روشن تیره می‌سازد.
قرمز تیرهdark_rاعشار۶۴ = 0کانال قرمز گونه‌ی تیره. به جای این فیلدها گونه‌ی تیره را با تیره بخوانید.
سبز تیرهdark_gاعشار۶۴ = 0کانال سبز گونه‌ی تیره.
آبی تیرهdark_bاعشار۶۴ = 0کانال آبی گونه‌ی تیره.
آلفای تیرهdark_aاعشار۶۴ = 1آلفای گونه‌ی تیره.
کنونی تیرهdark_currentمنطقی = نادرستوقتی گونه‌ی تیره current است درست است.
color-Fields.salam
واردسازی رابط گرافیکی.رنگ

تابع ریشه:
    c := رنگ.آر جی بی آلفا(51، 102، 170، 0.5)
    سرچاپ "r"، c.قرمز، "g"، c.سبز، "b"، c.آبی، "a"، c.آلفا، "current"، c.کنونی
    wide := رنگ.تازه(1.093، -0.227، -0.15، 1.0)
    سرچاپ "wide gamut red keeps channels outside 0 to 1:"، wide.قرمز، wide.سبز
    سرچاپ "argb"، رنگ.ای آر جی بی(c)، "back"، رنگ.سی اس اس(رنگ.از ای آر جی بی(رنگ.ای آر جی بی(c)))
    سرچاپ "argb clamps"، رنگ.ای آر جی بی(wide)
پایان
خروجیr 0.2 g 0.4 b 0.6666666666666666 a 0.5 current false wide gamut red keeps channels outside 0 to 1: 1.093 -0.227 argb 2150852266 back #3366aa80 argb clamps 4294901760

تابع‌ها

تجزیه Parse

تابع تجزیه(text: رشته، out &: رنگ): منطقی
رنگی را با هر نگارشی که بسته می‌پذیرد در out می‌خواند و درست برمی‌گرداند. در خطا نادرست برمی‌گرداند و out را دست نمی‌زند؛ پیام را خطا می‌دهد.
color-Parse.salam
واردسازی رابط گرافیکی.رنگ

تابع ریشه:
    هر text در ["#3366aa"، "rgb(51, 102, 170)"، "hsl(210, 50%, 40%)"، "oklch(0.7 0.25 30)"، "light dark(white, #222)"، "قرمز"، "rgb(51, 102)"، "redd"]:
        ناپایا c := رنگ.رنگ {}
        اگر رنگ.تجزیه(text، c):
            سرچاپ text، "=>"، رنگ.سی اس اس(c)
        وگرنه:
            سرچاپ text، "=>"، رنگ.خطا(text)
        پایان
    پایان
پایان
خروجی#3366aa => #3366aa rgb(51, 102, 170) => #3366aa hsl(210, 50%, 40%) => #336699 oklch(0.7 0.25 30) => oklch(0.7 0.25 30) light dark(white, #222) => light-dark(#ffffff, #222222) قرمز => #ff0000 rgb(51, 102) => column 12: rgb() takes 3 channels (red, green, blue) and an optional alpha, found 2 values redd => column 1: unknown colour name 'redd'; did you mean 'red'?

خطا Error

تابع خطا(text: رشته): رشته
اگر تجزیه متن را بپذیرد رشته‌ی خالی برمی‌گرداند و در غیر این صورت پیامی که با شماره‌ی ستون آغاز می‌شود و می‌گوید چه انتظار می‌رفت. رشته مال فراخواننده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Parse.salam

تازه New

تابع تازه(r: اعشار۶۴، g: اعشار۶۴، b: اعشار۶۴، a: اعشار۶۴): رنگ
رنگی از کانال‌های sRGB و آلفا، همه از ۰ تا ۱، می‌سازد. کانال بیرون از ۰ تا ۱ رنگی بیرون از sRGB را نشان می‌دهد.
color-Build.salam
واردسازی رابط گرافیکی.رنگ

تابع ریشه:
    سرچاپ رنگ.سی اس اس(رنگ.آر جی بی(51، 102، 170))
    سرچاپ رنگ.سی اس اس(رنگ.آر جی بی آلفا(51، 102، 170، 0.5))
    سرچاپ رنگ.سی اس اس(رنگ.هگز(0x3366aa))
    سرچاپ رنگ.سی اس اس(رنگ.تازه(0.2، 0.4، 0.6، 1.0))
    سرچاپ رنگ.سی اس اس(رنگ.اچ اس ال(210.0، 0.5، 0.4))
    سرچاپ رنگ.سی اس اس(رنگ.اچ دبلیو بی(194.0، 0.0، 0.0))
    سرچاپ رنگ.سی اس اس(رنگ.ال ای بی(29.2345، 39.3825، 20.0664))
    سرچاپ رنگ.سی اس اس(رنگ.ال سی اچ(52.2345، 72.2، 56.2))
    سرچاپ رنگ.سی اس اس(رنگ.اوکی ال ای بی(0.40101، 0.1147، 0.0453))
    سرچاپ رنگ.سی اس اس(رنگ.اوکی ال سی اچ(0.7، 0.25، 30.0))
    سرچاپ رنگ.سی اس اس(رنگ.سی ام وای کی(0.0، 0.4، 0.6، 0.1))
    سرچاپ رنگ.سی اس اس(رنگ.با آلفا(رنگ.هگز(0x3366aa)، 0.25))
    سرچاپ رنگ.سی اس اس(رنگ.رنگ کنونی())
پایان
خروجی#3366aa #3366aa80 #3366aa #336699 #336699 #00c3ff #7d2329 #c65d06 #7d2329 oklch(0.7 0.25 30) #e68a5c #3366aa40 currentColor

آر جی بی Rgb

تابع آر جی بی(r: صحیح، g: صحیح، b: صحیح): رنگ
رنگی کدر از کانال‌های ۸ بیتی، ۰ تا ۲۵۵، می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

آر جی بی آلفا Rgba

تابع آر جی بی آلفا(r: صحیح، g: صحیح، b: صحیح، a: اعشار۶۴): رنگ
رنگی از کانال‌های ۸ بیتی و آلفایی از ۰ تا ۱ می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

هگز Hex

تابع هگز(v: صحیح): رنگ
رنگی کدر از عددی به شکل 0xrrggbb می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

از ای آر جی بی FromArgb

تابع از ای آر جی بی(v: طبیعی۳۲): رنگ
رنگی از مقدار فشرده‌ی 0xAARRGGBB با آلفای ساده (بدون پیش‌ضرب) می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Fields.salam

ای آر جی بی Argb

تابع ای آر جی بی(c: رنگ): طبیعی۳۲
رنگ را به شکل 0xAARRGGBB با آلفای ساده فشرده می‌کند و هر کانال را به sRGB می‌بُرد. برای رنگ روشن تیره گونه‌ی روشن و برای current صفر می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Fields.salam

اچ اس ال Hsl

تابع اچ اس ال(h: اعشار۶۴، s: اعشار۶۴، l: اعشار۶۴): رنگ
رنگی از فام بر حسب درجه و اشباع و روشنایی از ۰ تا ۱ می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

اچ دبلیو بی Hwb

تابع اچ دبلیو بی(h: اعشار۶۴، w: اعشار۶۴، b: اعشار۶۴): رنگ
رنگی از فام بر حسب درجه و سفیدی و سیاهی از ۰ تا ۱ می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

ال ای بی Lab

تابع ال ای بی(l: اعشار۶۴، a: اعشار۶۴، b: اعشار۶۴): رنگ
رنگی از CIE Lab (D50) می‌سازد: روشنایی ۰ تا ۱۰۰ و محورهای a و b.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

ال سی اچ Lch

تابع ال سی اچ(l: اعشار۶۴، c: اعشار۶۴، h: اعشار۶۴): رنگ
رنگی از CIE LCh (D50) می‌سازد: روشنایی ۰ تا ۱۰۰، کروما و فام بر حسب درجه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

اوکی ال ای بی Oklab

تابع اوکی ال ای بی(l: اعشار۶۴، a: اعشار۶۴، b: اعشار۶۴): رنگ
رنگی از Oklab می‌سازد: روشنایی ۰ تا ۱ و محورهای a و b.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

اوکی ال سی اچ Oklch

تابع اوکی ال سی اچ(l: اعشار۶۴، c: اعشار۶۴، h: اعشار۶۴): رنگ
رنگی از Oklch می‌سازد: روشنایی ۰ تا ۱، کروما و فام بر حسب درجه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

سی ام وای کی Cmyk

تابع سی ام وای کی(c: اعشار۶۴، m: اعشار۶۴، y: اعشار۶۴، k: اعشار۶۴): رنگ
رنگی از فیروزه‌ای، ارغوانی، زرد و سیاه، هر یک از ۰ تا ۱، با فرمول ساده و بدون نمایه‌ی چاپگر می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

با آلفا WithAlpha

تابع با آلفا(c: رنگ، a: اعشار۶۴): رنگ
رنگ را با آلفای تازه برمی‌گرداند، برای رنگ روشن تیره در هر دو گونه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

رنگ کنونی Current

تابع رنگ کنونی(): رنگ
current را برمی‌گرداند، یعنی رنگ متن عنصر که نمایشگر آن را پر می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Build.salam

روشن تیره LightDark

تابع روشن تیره(light: رنگ، dark: رنگ): رنگ
رنگی با یک گونه‌ی روشن و یک گونه‌ی تیره می‌سازد. اگر آرگومانی خودش روشن تیره باشد، گونه‌ی روشنش به جای اول و گونه‌ی تیره‌اش به جای دوم می‌رود.
color-LightDark.salam
واردسازی رابط گرافیکی.رنگ

تابع ریشه:
    c := رنگ.روشن تیره(رنگ.هگز(0x3366aa)، رنگ.آر جی بی(200، 220، 255))
    سرچاپ رنگ.سی اس اس(c)، رنگ.تیره دارد(c)، رنگ.تیره دارد(رنگ.هگز(0x3366aa))
    سرچاپ "light"، رنگ.سی اس اس(رنگ.روشن(c))، "dark"، رنگ.سی اس اس(رنگ.تیره(c))
    سرچاپ "fields"، c.دارای تیره، c.قرمز تیره، c.سبز تیره، c.آبی تیره، c.آلفای تیره، c.کنونی تیره
    ناپایا t := رنگ.رنگ {}
    اگر رنگ.تجزیه("light dark(current, white)"، t):
        سرچاپ رنگ.سی اس اس(t)، t.کنونی، t.کنونی تیره
    پایان
    سرچاپ "mix keeps both"، رنگ.سی اس اس(رنگ.آمیختن(c، رنگ.هگز(0xffffff)، 0.5))
پایان
خروجیlight-dark(#3366aa, #c8dcff) true false light #3366aa dark #c8dcff fields true 0.7843137254901961 0.8627450980392157 1 1 false light-dark(currentColor, #ffffff) true false mix keeps both light-dark(#97b2d6, #e3eeff)

روشن Light

تابع روشن(c: رنگ): رنگ
گونه‌ی روشن رنگ را برمی‌گرداند، یا خود رنگ را اگر گونه‌ی تیره نداشته باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-LightDark.salam

تیره Dark

تابع تیره(c: رنگ): رنگ
گونه‌ی تیره‌ی رنگ را برمی‌گرداند، یا خود رنگ را اگر گونه‌ی تیره نداشته باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-LightDark.salam

تیره دارد HasDark

تابع تیره دارد(c: رنگ): منطقی
می‌گوید آیا رنگ گونه‌ی تیره دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-LightDark.salam

سی اس اس Css

تابع سی اس اس(c: رنگ): رشته
CSS ای را که مقصد وب برای رنگ می‌نویسد برمی‌گرداند: #rrggbb یا #rrggbbaa درون sRGB، color(display-p3 ...) یا oklch(...) بیرون از آن، currentColor یا light-dark(a, b). رشته مال فراخواننده است.
color-Css.salam
واردسازی رابط گرافیکی.رنگ

تابع show(text: رشته):
    ناپایا c := رنگ.رنگ {}
    اگر رنگ.تجزیه(text، c):
        سرچاپ text
        سرچاپ "  css   "، رنگ.سی اس اس(c)
        سرچاپ "  source"، رنگ.کد سلام(c)
        سرچاپ "  in sRGB"، رنگ.درون گستره(c)، "same as #f00"، رنگ.یکسان(c، رنگ.هگز(0xff0000))
    پایان
پایان

تابع ریشه:
    show("red")
    show("rgba(0, 0, 0, 0.25)")
    show("color(display p3, 1, 0, 0)")
    show("color(rec2020, 1, 0, 0)")
    show("current")
پایان
خروجیred css #ff0000 source color.Rgb(255, 0, 0) in sRGB true same as #f00 true rgba(0, 0, 0, 0.25) css #00000040 source color.Rgba(0, 0, 0, 0.25) in sRGB true same as #f00 false color(display p3, 1, 0, 0) css color(display-p3 1 0 0) source color.New(1.093066362, -0.226741974, -0.150134581, 1.0) in sRGB false same as #f00 false color(rec2020, 1, 0, 0) css oklch(0.6871 0.3647 24.19) source color.New(1.248219828, -0.387907503, -0.143514393, 1.0) in sRGB false same as #f00 false current css currentColor source color.Current() in sRGB true same as #f00 false

کد سلام Source

تابع کد سلام(c: رنگ): رشته
یک عبارت سلام، مانند color.Rgb(51, 102, 170)، برمی‌گرداند که همان رنگ را بی‌تجزیه می‌سازد. رشته مال فراخواننده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Css.salam

آمیختن Mix

تابع آمیختن(a: رنگ، b: رنگ، amount: اعشار۶۴): رنگ
دو رنگ را در oklab با آلفای پیش‌ضرب‌شده می‌آمیزد. amount سهم b است و به ۰ تا ۱ بریده می‌شود. رنگ‌های روشن تیره هر گونه را جدا می‌آمیزند.
color-Mix.salam
واردسازی رابط گرافیکی.رنگ

تابع ریشه:
    red := رنگ.هگز(0xff0000)
    blue := رنگ.هگز(0x0000ff)
    سرچاپ "Mix 30%"، رنگ.سی اس اس(رنگ.آمیختن(red، blue، 0.3))
    هر space در ["oklab"، "oklch"، "srgb"، "hsl"]:
        سرچاپ "MixIn"، space، رنگ.سی اس اس(رنگ.آمیختن با فضا(red، blue، 0.5، space))
    پایان
    clear := رنگ.آر جی بی آلفا(255، 0، 0، 0.0)
    تکرار 5 در i:
        t := i برگردان اعشار۶۴ / 4.0
        سرچاپ "Lerp"، t، رنگ.سی اس اس(رنگ.درون یابی(clear، blue، t))
    پایان
پایان
خروجیMix 30% #ba4d79 MixIn oklab #8c53a2 MixIn oklch oklch(0.54 0.2854 326.64) MixIn srgb #800080 MixIn hsl #ff00ff Lerp 0 #ff000000 Lerp 0.25 #0000ff40 Lerp 0.5 #0000ff80 Lerp 0.75 #0000ffbf Lerp 1 #0000ff

آمیختن با فضا MixIn

تابع آمیختن با فضا(a: رنگ، b: رنگ، amount: اعشار۶۴، space: رشته): رنگ
مانند آمیختن، در فضای رنگی که space نام می‌برد (oklab، oklch، lab، lch، srgb، srgb linear، hsl، hwb، display p3، a98 rgb، prophoto rgb، rec2020، xyz، xyz d50، xyz d65). فام‌ها کمان کوتاه‌تر را می‌روند. نام ناشناخته در oklab می‌آمیزد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Mix.salam

درون یابی Lerp

تابع درون یابی(a: رنگ، b: رنگ، t: اعشار۶۴): رنگ
برای گذارها از a به b در oklab با آلفای پیش‌ضرب‌شده درون‌یابی می‌کند. t بریده نمی‌شود، پس منحنی نرمش می‌تواند از اندازه بگذرد. با current در میانه عوض می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Mix.salam

درخشندگی Luminance

تابع درخشندگی(c: رنگ): اعشار۶۴
درخشندگی نسبی WCAG را برمی‌گرداند، ۰ برای سیاه و ۱ برای سفید، برای رنگ بریده‌شده به sRGB.
color-Contrast.salam
واردسازی رابط گرافیکی.رنگ
واردسازی ریاضی

تابع r2(v: اعشار۶۴): اعشار۶۴:
    برگشت ریاضی.گردکردن(v * 100.0) / 100.0
پایان

تابع ریشه:
    white := رنگ.هگز(0xffffff)
    هر hex در [0x777777، 0x3366aa، 0x1a1a1a]:
        c := رنگ.هگز(hex)
        سرچاپ رنگ.سی اس اس(c)، "luminance"، r2(رنگ.درخشندگی(c))، "contrast on white"، r2(رنگ.نسبت تضاد(c، white))
    پایان
    base := رنگ.هگز(0x3366aa)
    سرچاپ "lighter"، رنگ.سی اس اس(رنگ.روشن تر(base، 0.1))، "darker"، رنگ.سی اس اس(رنگ.تیره تر(base، 0.1))
پایان
خروجی#777777 luminance 0.18 contrast on white 4.48 #3366aa luminance 0.13 contrast on white 5.8 #1a1a1a luminance 0.01 contrast on white 17.4 lighter #5084cb darker #15498a

نسبت تضاد Contrast

تابع نسبت تضاد(a: رنگ، b: رنگ): اعشار۶۴
نسبت تضاد WCAG دو رنگ را برمی‌گرداند، از ۱ تا ۲۱. متن اصلی دست کم ۴٫۵ می‌خواهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Contrast.salam

روشن تر Lighten

تابع روشن تر(c: رنگ، amount: اعشار۶۴): رنگ
روشنایی Oklch را به اندازه‌ی amount (۰ تا ۱) بالا می‌برد. رنگی که درون sRGB است در صورت نیاز از کروما می‌کاهد تا درون آن بماند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Contrast.salam

تیره تر Darken

تابع تیره تر(c: رنگ، amount: اعشار۶۴): رنگ
روشنایی Oklch را به اندازه‌ی amount پایین می‌آورد، مانند روشن تر در جهت دیگر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Contrast.salam

درون گستره InGamut

تابع درون گستره(c: رنگ): منطقی
می‌گوید آیا رنگ، و گونه‌ی تیره‌اش اگر داشته باشد، درون sRGB است، تا سی اس اس آن را به صورت هگز بنویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Css.salam

یکسان Equal

تابع یکسان(a: رنگ، b: رنگ): منطقی
می‌گوید آیا دو رنگ یکی‌اند، با مقایسه‌ی کانال‌ها با رواداری اندک، current و هر دو گونه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: color-Css.salam