{ Максимальные значения } Const HLSMAX = 240; RGBMAX = 255; UNDEFINED = (HLSMAX*2) div 3; Var H, L, S : integer; { H-оттенок, L-яркость, S-насыщенность } R, G, B : integer; { цвета }
procedure RGBtoHLS; Var cMax,cMin : integer; Rdelta,Gdelta,Bdelta : single; Begin cMax := max( max(R,G), B); cMin := min( min(R,G), B); L := round( ( ((cMax+cMin)*HLSMAX) + RGBMAX )/(2*RGBMAX) );
if (cMax = cMin) thenbegin S := 0; H := UNDEFINED; endelsebegin if (L <= (HLSMAX/2)) then S := round( ( ((cMax-cMin)*HLSMAX) + ((cMax+cMin)/2) ) / (cMax+cMin) ) else S := round( ( ((cMax-cMin)*HLSMAX) + ((2*RGBMAX-cMax-cMin)/2) ) / (2*RGBMAX-cMax-cMin) );
Rdelta := ( ((cMax-R)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); !
Gdelta := ( ((cMax-G)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); Bdelta := ( ((cMax-B)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); if (R = cMax) then H := round(Bdelta - Gdelta) elseif (G = cMax) then H := round( (HLSMAX/3) + Rdelta - Bdelta) else H := round( ((2*HLSMAX)/3) + Gdelta - Rdelta ); if (H < 0) then H:=H + HLSMAX; if (H > HLSMAX) then H:= H - HLSMAX; end; if S<0 then S:=0; if S>HLSMAX then S:=HLSMAX; if L<0 then L:=0; if L>HLSMAX then L:=HLSMAX; end;
procedure HLStoRGB; Var Magic1,Magic2 : single;
function HueToRGB(n1,n2,hue : single) : single; begin if (hue < 0) then
hue := hue+HLSMAX; if (hue > HLSMAX) then hue:=hue -!
HLSMAX; if (hue < (HLSMAX/6)) then result:= ( n1 + (((n2-n1)*hue+(HLSMAX/12))/(HLSMAX/6)) ) else if (hue < (HLSMAX/2)) then result:=n2 else if (hue < ((HLSMAX*2)/3)) then result:= ( n1 + (((n2-n1)*(((HLSMAX*2)/3)-hue)+(HLSMAX/12))/(HLSMAX/6))) else result:= ( n1 ); end;
begin if (S = 0) thenbegin B:=round( (L*RGBMAX)/HLSMAX ); R:=B; G:=B; endelsebegin if (L <= (HLSMAX/2)) then Magic2 := (L*(HLSMAX + S) + (HLSMAX/2))/HLSMAX else Magic2 := L + S - ((L*S) + (HLSMAX/2))/HLSMAX; Magic1 := 2*L-Magic2; R := round( (HueToRGB(Magic1,Magic2,H+(HLSMAX/3))*RGBMAX + (HLSMAX/2))/HLSMAX ); G := round( (HueToRGB(Magic1,Magic2,H)*RGBMAX
+ (HLSMAX/2)) / HLSMAX ); B := round( (HueToRGB(Magic1,Ma!
gic2,H-(HLSMAX/3))*RGBMAX + (HLSMAX/2))/HLSMAX ); end; if R<0 then R:=0; if R>RGBMAX then R:=RGBMAX; if G<0 then G:=0; if G>RGBMAX then G:=RGBMAX; if B<0 then B:=0; if B>RGBMAX then B:=RGBMAX; end;
Необходимость создания кистей и перьев
При создании компонента-наследника TGraphicControl нужно ли создавать новые кисти и перья, или нужно просто менять ...
Проблема при создании lookUp поля
Вроде бы ответ должен быть простым но информации нигде не нашол... Есть 2 таблицы: Предприятия: ID (Основной ...
Реестр >>> Помогите плиз!!!!!
Как это не ужастно но я не умею работать с реестром в D6. Может кто ниить поможет? Илил подскажите какие нить ...
Не открывается DBF-ник!!!
Перестал открываться dbf в VFP 6.0 хотя в DBGrid'е моя прога его видит и работает с ним без проблем.Когда пытаюсь ...
программирование сервиса для w2k
Привет всем! В общем, проблема такая - В Delphi 7 программирую сервис для 2k, создал Service Application когда ...
Создание COM-объектов средствами Delphi. Часть 1
Как преодолеть отсутствие множественного наследования в Delphi. Однако есть способ решения этих проблем: применение единого стандарта для организации связи между объектами, который не зависит от используемой платформы и языка. Именно такова разработанная Microsoft компонентная модель объекта COM (Component Object Model). Данная технология уже получила широкое внедрение: ведь на ее базе работают механизмы OLE и ActiveX.
Borland C++ Builder 5. Энциклопедия программиста
Borland C++ Builder 5. Энциклопедия программиста написана большим авторским коллективом под руководством Чарли Калверта и Кента Рейсдорфа и продолжает серию книг о C++ Builder, начатую Чарли Калвертом после выхода в свет первой версии этого замечательного продукта. Все без исключения авторы книги имеют не только многолетний опыт создания коммерческих продуктов при помощи систем программирования C++ Builder и Delphi, но и принимали непосредственное участие в написании большого количества книг соответствующей тематики.Книга написана опытными программистами для опытных программистов и этим она резко отличается от подавляющего большинства других книг о C++ Builder (и вообще других книг, посвященных программированию). В ней вы не найдете подробного и планомерного описания интегрированной среды разработки (IDE), перечисления всех стандартных компонентов, их свойств и методов,
а также обсуждения тому подобных вопросов. Взамен этого, авторы сосредоточились на о!
бсуждении наиболее сложных разделов программирования с использованием C++ Builder, которые обычно обходятся авторами других книг. Характерным является также и то, что в примерах программ, представленных на поставляемом вместе с книгой компакт-диске, авторы наряду с использованием стандартных возможностей библиотеки VCL, зачастую применяют и функции Windows API.
Автор: Калверт Ч.
Afalina Soft: by Delphi-developers for Delphi-developers Сайт компании Afalina Soft. Здесь вы найдете множество полезной информации, оригинальные Delphi-компоненты оттестированные и проверенные в реальной работе, которые, мы надеемся, вам очень пригодятся.
» Оценка сайта: 4
Дорогие друзья! Мы рады представить вам новый совместный проект сайтов www.rsdn.ru, delphi.mastak.ru и www.optim.ru - профессиональный журнал для программистов RSDN Magazine.
Несомненно, ваше мнение о необходимости такого журнала, содержании рубрик и темах отдельных статей поможет сделать журнал более полезным и интересным. Высказать свое мнение, проголосовать или же подписаться вы можете на сайте. Без вашего участия, нам будет трудно сделать правильный журнал!
На сайте выложен анонс пилотного выпуска журнала, вступительное слово от редакции.
Для души
Хокку дня
капли дождя на стеклах ее очков: весна уже недалеко
Афоризмы
Расставаясь с нечестным партнером, надо помнить, что удовольствие - больше не видеть его - тоже имеет определённую ценность......
Фраза дня
...и написал Иисус конвертер water2wine, и стал раздавать его freeware...
Дурацкие законы (информация предоставлена сайтом kurilka.com)
На Аляске (США) запрещается поить спиртными напитками лосей.
В Аризоне (США) под угрозой крупного штрафа запрещена охота на верблюдов. В этом же штате серьезным преступлением считается также срубить кактус- нарушителям закона грозит до 25 ти лет тюрьмы.
И на закуску коротенький анекдот
Отец за сыном в детсад приходит. У него спрашивают: - Который ваш? - А какая разница? Все равно завтра обратно вести.