Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
OK Color Space - библиотека для MetaTrader 5
- Опубликовал:
- Maxim Savochkin
- Просмотров:
- 1192
- Рейтинг:
- Опубликован:
- 2023.04.28 18:07
- Обновлен:
- 2023.05.24 12:25
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Цветовые пространства OKhsl и OKhsv являются перцептивно единообразными, то есть учитывают то, как человеческий глаз воспринимает цвета.
На практике эти цветовые пространства позволяют:
- Cоздавать градиенты c плавным изменением оттенка (hue), насыщенности (saturation) и яркости (lightness/value)
- Создавать цветовые палитры с относительно равномерной насыщенностью и яркостью
Сравнение цветовых пространств OKhsl и HSL
Подробнее о цветовых пространствах OKlab, OKhsl и OKhsv:
https://bottosson.github.io/posts/oklab/#comparing-oklab-to-hsv
Библиотека OK Color Space
Структуры
struct OKhsl { float h; float s; float l; }; struct OKhsv { float h; float s; float v; };
Конвертация Color в OKhsl
void ColorToOKhsl(color rgb_color, float &hue, float &saturation, float &lightness)
void ColorToOKhsl(color rgb_color, OKhsl &okhsl)
Конвертация Color в OKhsv
void ColorToOKhsv(color rgb_color, float &hue, float &saturation, float &value)
void ColorToOKhsv(color rgb_color, OKhsv &okhsv)
Конвертация OKhsl в Color
color OKhslToColor(float hue, float saturation, float lightness)
color OKhslToColor(OKhsl &okhsl)
Конвертация OKhsv в Color
color OKhsvToColor(float hue, float saturation, float value)
color OKhsvToColor(OKhsv &okhsv)
Диапазоны значений
- Hue (оттенок): 0-360
- Saturation (насыщенность): 0-100
- Lightness/Value (яркость): 0-100
Пример использования функций
//+------------------------------------------------------------------+ //| Example.mq5 | //+------------------------------------------------------------------+ #include <OK Color Space.mqh> //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- ColorToOKhsl() function with float variables color color_1=clrPlum; float hue,saturation,lightness; ColorToOKhsl(color_1,hue,saturation,lightness); PrintFormat("ColorToOKhsl(): hue=%.2f saturation=%.2f lightness=%.2f",hue,saturation,lightness); //--- ColorToOKhsv() function with OKhsv structure color color_2=clrLime; OKhsv okhsv; ColorToOKhsv(color_2,okhsv); PrintFormat("ColorToOKhsv(): hue=%.2f saturation=%.2f value=%.2f",okhsv.h,okhsv.s,okhsv.v); //--- OKhslToColor() function with OKhsl structure OKhsl okhsl={355,95,50}; color result_1=OKhslToColor(okhsl); PrintFormat("OKhslToColor(): R=%u G=%u B=%u",uchar(result_1),uchar(result_1>>8),uchar(result_1>>16)); //--- OKhsvToColor() function with float values color result_2=OKhsvToColor(150.5f,50.f,75.9f); PrintFormat("OKhsvToColor(): R=%u G=%u B=%u",uchar(result_2),uchar(result_2>>8),uchar(result_2>>16)); } //+------------------------------------------------------------------+ /* Output: ColorToOKhsl(): hue=326.54 saturation=63.91 lightness=74.79 ColorToOKhsv(): hue=142.50 saturation=100.00 value=100.00 OKhslToColor(): R=210 G=17 B=126 OKhsvToColor(): R=109 G=188 B=128 */
Что нового
Исправлена ошибка, из-за которой была невозможна конвертация серого цвета, например, из RGB(139,139,139) в OKhsl.
С новым приложением UI Palette можно создавать палитры на основе цветовых пространств RGB, HSL, HSV, OKhsl и OKhsv.
Возможности UI Palette:
- Delete - удаление текущей палитры
- Save - сохранение изменений в текущей палитре
- Save as New - создание новой палитры на основе текущей (палитры сохраняются в файле "UI Palette.txt" в общей папке терминалов Common/Files)
- Стрелки < > для переключения между палитрами
- Переименование палитры при нажатии на название
- Панель для настройки цвета высвечивается при нажатии на палитру или фон
- Добавление нового цвета с помощью кнопки "+"
- Удаление цвета с помощью кнопки Remove
Смотрите также
Библиотека Smooth Gradient: https://www.mql5.com/ru/code/44140
Скрипт для получения информации о количестве, типах и размерах входных и выходных тензоров onnx-модели
Overbought Oversould LevelИндикатор уровней перекупленности/перепроданности по двум каналам Дончана с большим и меньшим периодом
Градиент с плавным изменением цвета. Расчеты производятся на основе цветового пространства OKhsl.
PriceScale - ценовая шкала для слабовидящих.Замучил мелкий шрифт в терминале? Этот индикатор делает цифры цены видимыми!