Създаване на „диалогов прозорец за персонализирани цветове“ във Firefox

Правя разширение за Firefox и бих искал да дам на потребителите си повече контрол върху външния вид и усещането на нещата. В панела с предпочитания на моето разширение бих искал да постигна нещо близко до това:-

CodeProject: Диалогов прозорец за персонализиран цвят

Знам, че мога да постигна това, като направя много различни divs за възможно най-много цветове и добавям слушатели на събития, за да видя дали потребителят е избрал цвят, но това би било твърде много работа и вероятно ще отнеме твърде много време. Чудя се дали има по-лесен начин да направя това, тъй като предполагам, че трябва да е имало някой, който е правил това преди. (Може би чрез XPCOM компонент?)

Благодаря ви предварително! =)


person wai    schedule 01.07.2009    source източник


Отговори (2)


Може би някои от тях биха могли да работят:

http://johndyer.name/post/2007/09/PhotoShop-like-JavaScript-Color-Picker.aspx

http://developer.yahoo.com/yui/colorpicker/

http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/widget/tests/test_ColorPicker.html

http://moorainbow.woolly-sheep.net

person Danita    schedule 02.07.2009
comment
Кажете ми, когато го завършите :) Ще се радвам да го видя. - person Danita; 03.07.2009
comment
Връзката към moorainbow.woolly-sheep.net е остаряла :( - person MattAllegro; 18.08.2018

За секцията с мостри бих направил малко <table> с уникален манипулатор на събития, използващ бълбукане на събития, за да разбера кой мостра е щракнат.

За персонализирания избор на цвят, бих поставил фиксирано фоново изображение, прочетох курсора X и Y спрямо това изображение и разбрах кой цвят е под курсора според X = Hue, Y = Saturation.

За Luminosity можете да направите същото с различна техника: цвят на фона (който променяте, когато нюансът се промени) и градуирано прозрачно наслагване отгоре, от напълно непрозрачно до напълно прозрачно. След това по оста X трябва да имате Luminosity.

Можете да конвертирате HLS в RGB в движение (http://wiki.beyondunreal.com/Legacy:HLS_To_RGB_Conversion)

Останалото трябва да е достатъчно просто. Уведомете ме, ако имате нужда от повече подробности :)

person Danita    schedule 01.07.2009
comment
Благодаря за страхотния отговор. Научих нещо ново! =) Мисля обаче, че в момента няма да мога да отделя време да напиша всички таблици с id и т.н. За този въпрос повече търся повторна употреба на код. Със сигурност някой е написал нещо подобно, тъй като това е като нещо, което повечето хора биха искали. C# има нещо като CustomColourDialog = new CustomColourDialog(Handle) и snap, почти всичко е готово! Като се има предвид всичко това, благодаря за помощта! =) Оценявам! - person wai; 02.07.2009