+ Ответить в теме
Показано с 1 по 2 из 2
  1. #1
    Аватар для Kashaket Kashaket На пути к лучшему Странник
    Сообщений
    118
    Поблагодарили 3 раз(а) в 3 сообщениях

    TColor - работа с цветами

    Объектный класс для работы с цветами, поддерживает как DS php 5.3.8, так и веб-php
    Имеются статические и не статические функции для обработки, анализа и получения цветов
    Описание класса
    Класс/Компонент был составлен и написан Andrew Zenin 04.10.2018
    *Алгоритм сравнения контрастности был взят и доработан с stackoverflow.com
    Был добавлен класс TColor, для создания, конвертирования (rgb, hsv, hsl, cmyk, hex, delphi hex(TColor)) и сравнения цветов(lightness, contrast, hue, vibrance, saturation, darkness)
    Так же, он работает и так: TColor( [arguments] ).

    Почему нужен этот класс?
    Скрытый текст:

    1) В DevelStudio по стандарту Delphi используется BGR вместо RGB, самостоятельно трудно это постоянно переводить, можно запутаться, этот же класс
    переводит сам себя в строку именно подходящую для DevelStudio/Delphi BGR ( пример: (string)TColor( 255, 255, 255 ) )
    2) Данный класс поддерживает большинство наиболее используемых функций при работе с цветами, далее они более подробно описаны
    3) Данный класс быстро работает и имеет простоту использования
    4) Екземпляр класса можно сравнить с почти что бесконечным числом других екземпляров этого класса, благодаря функциям сравнивания
    ( $tcolor->compare_contrast( $tcolor2 ) / $tcolor->compare_vibrance( $tcolor / 'c' / 'this', $tcolor3, $tcolor4, $tcolor5 ) / etcetera
    5) Типизированность и заглушённость с проверками значений и выбрасами ошибок E_USER_ERROR при каждом неверном действии программиста.


    Свойства
    Lightness - яркость цвета, integer
    Contrast - контрастность цвета, float
    Hue - оттенок, float
    Vibrance - резонансность цвета, float
    Saturation - резкость цвета, float
    Darkness - тусклость цвета, зависит от яркости, integer
    BGR, RGB, HSL, HSV - трёхмерный массив с integer/float-числами, значение цвета
    CMYK - четырёхмерный массив с float и integer числами, значение цвета
    DHEX, COLOR - строка, значение цвета в представлении Delphi (и DevelStudio)
    HEX - строка, значение цвета в представлении HTML
    Name - имя константы объекта, необязательная функция
    *Все свойства writeable (редактируемы!)

    Функции и их перегрузки:
    (Обозначения: [...] - функции с поддержкой перегруженных аргументов, как и в TColor::__construct(), $unknown - неопределённая запись без указания типа записи, $UUU - массив неопределённой записи, $UUUtype - массив неопределённой записи с указанием типа записи, $CMYK)
    PHP код:
    TColorTColor $color ) - возвращает екземпляр класса TColor
    TColor
    hex $color )
    TColor( array $rgb )
    TColor( array $unknownstring $type )
    TColorint $rint $gint $b )
    TColorint $unknown1int $unknown2int $unknown3string $type )
    TColor( array $UUUtype )
    TColorfloat $cfloat $mfloat $yfloat $k )
    $TColor->compare_NTColor $c ) - сравнивает екземпляр класса или несколько других цветов по свойству N
    $TColor
    ->compare_TColor $cTColor $c2 )
    $TColor->compare_TColor $cTColor $c2TColor $c3, [...] )
    $TColor->compare_$red$green$blue )
    $TColor->compare_( array $rgb )
    $TColor->compare_( array $UUUtype )
    $TColor->compare_( array $cmyk )
    $TColor->compare_( array, array, array, [...] )
    $TColor->MakeStatic() - сделать объект статическимт.е не редактируемым
    (внимание отменить действие невозможно!)
    $TColor->assign( [...] ) - приравнять объект екземпляра к другому екземпляру класса TColor и т.д
    $TColor
    ( [...] ) - то-же самоечто и TColor$color )
    $TColor->add([...]) - добавить к цвету значениеподдерживает numeric
    $TColor
    ->subtract([...]) - отнять от цвета значениеподдерживает numeric
    $TColor
    ->mix([...]) - вмешать цвет
    $TColor
    ->unmix([...]) - изьять цвет
    $TColor
    ->multiply(int $v) - умножить цвет на значение $v
    $TColor
    ->divide(int $v) - разделить цвет на значение $v
    $TColor
    ->increase(int $percent) - увеличить цвет на $percentтолько int
    $TColor
    ->decrease(int $percent) - уменьшить цвет на $percentтолько int 
    Статические свойства:
    PHP код:
    TColor::$def стандартная запись цветаот свойства зависит как класс будет конвертировать цвет из массива без указания вида записи цвета 
    Статические функции:
    PHP код:
    check_color(&$cl$return false) - проверить правильность написания цветаизменить при необходимостиаргумент $cl соответственно цвет (строкаинтегралчисло с запятойдвойное числодвоичное числоhex-строка), а $return отвечает за выполнение возврата значенияустанавливается в true при необходимости.
    BGRHSVHSLCMYKHEXDHEXCOLOR <=> RGB (RGBtoHSL и так далее)
    compare_contrast($hexStr1$hexStr2) - возвращает наиболее контрастный цвет
    search
    string $name ) - ищет цвет TColor по имени константы
    formats 
    void ) - возвращает массив поддерживаемых форматов 
    Итерирование по объекту поддерживается относительно, т.к класс не осуществляет интерфейс Iterable, и по-этому на него действуют только и только магические методы, но не обращения к элементам массива.

    P.p.s комментарии к коду на русско-английском, так, как изначально писалось на английском, но лень было переводить все комментарии, впринципе там не сложно, In-class trait достаточно в гугл вбить и вам выдаст php.net со справкой про Trait'ы
    Skachat, Download, Завантажити, Скачать:
    Github
    Скачать файлом|Вконтакте
    Последний раз редактировалось Kashaket; 04.10.2018 в 22:58. Причина: редакнул спойлер
    Er hat im perfera

  2. #2
    Аватар для gignorie gignorie Очень опасный тип Прохожий
    Сообщений
    52
    Поблагодарили 1 раз в 1 сообщении
    Сори что не в тему, но shikimori топ)

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения