Board.KolibriOS.org http://board.kolibrios.org/ |
|
ColorDialog - диалог выбора цвета http://board.kolibrios.org/viewtopic.php?f=48&t=1946 |
Page 1 of 6 |
Author: | Mario [ Fri Sep 30, 2011 6:49 pm ] |
Post subject: | ColorDialog - диалог выбора цвета |
Мне тут потребовалось реализовать выбор цвета пользователем для программы zSea и я уже начал над ним работу. Первоначально хотел внедрить в Box_Lib, но в процессе обратил внимание, что в Виндовс используется единообразный диалог для большинства программ, которые взаимодействую с пользователем на предмет выбора цвета и оформлен он в виде отдельного окна: Spoiler: Show Естественно он не у всех такой. Например, в Gimp он такой: Spoiler: Show Если честно, то Gimp мне кажется более удобным, вопрос вкуса естественно. Я решил реализовать подобие последнего, вернее его левую часть и пока сделал только это: Spoiler: Show Изображение нарисовано кодом (ассемблерным хочу заметить) и свободно растягивается и сжимается при указании нужных координат. Основная мысль сделать также как я реализовал OpenDialog, а именно - отдельной программой и вызовом через Proc_Lib Преимущества по сравнению со включением в библиотеку Box_Lib - не распухает библиотека. Хотя сами процедуры выведения цветных диаграммм можно разместить в какую-нибудь библиотеку, но пока не вижу им другого применения как для ColorDialog Если у кого есть конструктивные предложения или дополнения - излагайте. Может в Linux есть такие универсальные компоненты для сравнения? У меня просто времени не было заниматься целенаправленным поиском. |
Author: | s1n [ Fri Sep 30, 2011 6:54 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Quote: Преимущества по сравнению со включением в библиотеку Box_Lib - не распухает библиотека. Предлагаешь вместо того чтобы разбухать Box_Lib, плодить бинарники? |
Author: | Leency [ Fri Sep 30, 2011 6:59 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Общая либа для диалогов? |
Author: | XVilka [ Fri Sep 30, 2011 7:07 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Да, это удобно. |
Author: | Mario [ Fri Sep 30, 2011 7:10 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
s1n wrote: Quote: Преимущества по сравнению со включением в библиотеку Box_Lib - не распухает библиотека. Предлагаешь вместо того чтобы разбухать Box_Lib, плодить бинарники? Есть отдельное окно в котором выбирается цвет и его подключение к программе для программиста содержит минимальные расходы - как по размеру кода, так и по организационной структуре. Я думаю это наиболее годный вариант и наличие еще одного бинарника это меньшее из зол. Как пример OpenDialog, подключение которого достаточно просто. Хочу заметить, что код и данные библиотеки обычно висят в памяти весь сеанс работы приложения, от его запуска до его завершения. OpenDialog не занимает память все время - только когда пользователь его запросил и работает с ним. Leency wrote: Общая либа для диалогов? Нет, не библиотека. Это будет работать также как OpenDialog, через именованную (расшаренную) память. |
Author: | Leency [ Fri Sep 30, 2011 7:20 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Хорошо, а в какую папку его тогда? В сыс? А опендиал в фм. А ещё что-то в девелоп? И т.д. Мне вот это интересно. Может общую папку какую-то? |
Author: | s1n [ Fri Sep 30, 2011 7:44 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Mario wrote: ...наличие еще одного бинарника это меньшее из зол... [без_обид_и_наездов]Насколько это хорошо? OpenDialog используется в чуть более, чем почти всех программах. Тогда ОК. ColorDialog используется чуть, более в 2,5 программах. Это получается по сути UNIX-вэй.[/без_обид_и_наездов] |
Author: | SoUrcerer [ Fri Sep 30, 2011 8:22 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
s1n wrote: Mario wrote: ...наличие еще одного бинарника это меньшее из зол... [без_обид_и_наездов]Насколько это хорошо? OpenDialog используется в чуть более, чем почти всех программах. Тогда ОК. ColorDialog используется чуть, более в 2,5 программах. Это получается по сути UNIX-вэй.[/без_обид_и_наездов] Сейчас - да. А потом? Такой диалог нужен в текстовом и табличном процессорах, редакторах графики, для программы desktop не помешал бы, по-хорошему и веб-браузере нужен. Это лишь то, что пришло на ум. Открывать/сохранять файлы тоже не везде нужно, к примеру. |
Author: | Mario [ Fri Sep 30, 2011 8:30 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Leency wrote: Хорошо, а в какую папку его тогда? В сыс? А опендиал в фм. А ещё что-то в девелоп? И т.д. Мне вот это интересно. Может общую папку какую-то? Для меня это не принципиально. s1n wrote: Mario wrote: ...наличие еще одного бинарника это меньшее из зол... [без_обид_и_наездов]Насколько это хорошо? OpenDialog используется в чуть более, чем почти всех программах. Тогда ОК. ColorDialog используется чуть, более в 2,5 программах. Это получается по сути UNIX-вэй.[/без_обид_и_наездов] Я не делю реализацию на Виндовс, Юникс или еще какой путь. Для меня важна эффективность. Реализация тем же путем, что использован для реализации OpenDialog - в данном конкретном случае более эффективно, чем располагать такую функциональность в библиотеке. А насчет 2,5 программ - давай посчитаем поточней где используется выбор цвета в уже существующих программах Колибри: PIC4, Animage, Desktop, zSea - итого уже 4 программы. OpenDialog, когда я только его начал внедрять, тоже использовался немногими программами и если бы я и IgorA не приложили усилия по внедрению, то ничего бы и не было. |
Author: | kogemyaka [ Sat Oct 01, 2011 9:46 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Может поможет http://habrahabr.ru/blogs/ui/92781/ |
Author: | Mario [ Sat Oct 01, 2011 11:12 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Процесс идет. Spoiler: Show К слову весь код который вывел окошко, создал области с палитрой и оттенком, и вывел их в окно - без сжатия 858 байт. Интересно сколько бы занял аналогичный по функциональности код на ЯВУ (например С), без использования ассемблерных вставок (это такой толстый троллинг фразы про "современные оптимизирующие компиляторы"). |
Author: | SoUrcerer [ Sun Oct 02, 2011 8:56 am ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Не знаю твоего алгоритма, я реализовал похожий градиент (тот, что справа) через три вложенных цикла и скомпилировал его для linux. Вывод делал в консоль через printf. Линкованный динамически занимает 5504 байта, линкованный статически - 552 килобайта. Если компилировать тот же код для kolibri с помощью menuetlibc, получается файл около 1 килобайта. Изменение высоты полосы не предусмотрено. Если ты покажешь кусочек своего кода, ответственный за вывод графики, я могу перевести его на Си и сравнить. Охохо, это будет сильный удар по оптимизирующим компиляторам. Еще бы бенчмарк по скорости отрисовки запустить. |
Author: | Nable [ Sun Oct 02, 2011 9:38 am ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Троллинг действительно толстый. Ибо надо определяться: вам шашечки или ехать. Компиляторы оптимизируют по скорости выполнения, а не по размеру. По размеру ни gcc, ни msvc (не надо тыкать мне в опцию -Os) не умеют оптимизировать, да и считается что никому не нужно. В общем-то, я только в c-- видел фичу, что можно задавать: что оптимизировать по размеру, а что по скорости. А фича очень вкусная, ибо большую часть кода по скорости оптимизировать совсем не надо и современные ОС могли бы занимать куда меньше места. |
Author: | SoUrcerer [ Sun Oct 02, 2011 11:30 am ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
А вот я и предлагаю сделать бенчмарк. |
Author: | Mario [ Sun Oct 02, 2011 3:40 pm ] |
Post subject: | Re: ColorDialog - диалог выбора цвета |
Что же попробую троллить потоньше. ![]() Запуск в Qemu, частота виртуальной машины приведена на скриншоте. Все замеры в сотых долях секунды, так как точнее не позволяет функция 26.9 Первое число вычисление тоновой области (квадратная такая), второе вычисление области палитры (прямоугольная полоска), третье число - общее время с рисованием окна приложения.. Spoiler: Show Вот исходный код ассемблерного приложения: Spoiler: Show Естественно замеренное время не стабильно, так как это эмулятор. Еще прошу заметить, что я даже align 4 в начале каждой процедуры не расставлял, кстати надо будет попробовать. Естественно наличие измерительного когда немного увеличило размер приложения, в данный момент 1033 байт, еще добавило немного вынесение деления за пределы цикла (где это было возможно). |
Page 1 of 6 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |