Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт авг 18, 2017 1:39 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 443 сообщения ]  На страницу 1 2 3 4 530 След.
Автор Сообщение
СообщениеДобавлено: Вт сен 14, 2010 10:30 pm 
Занимаясь прикручиванием OpenDialog к приложениям, дошла очередь и до приложения Icon. Я думал просто прикрутить к приложению OpenDialog, но посмотрев на размер занимаемый программой в памяти (более 600 Кб) я полез смотреть код и честно говоря он мне не очень нравится. В свое время менеджер иконок был объединен с собственно самой программой ради экономии пространства на рамдиске. Такое объединение вылилось в распухание кода. К тому же в приложении используется статичное выделение памяти - т.е. надо или не надо но 600 килобайт будут потрачены.

Хотя если прикинуть при текущем максимальном количестве иконок в 48 штук (кстати сказать их реально используется еще меньше - около 27), максимальные потребности памяти в структурах данных такие: 48*32*32*4 (4 байта = 32 бита = 24 бита цвет и 8 бит альфа-канал) = 192 Кб + 4 Кб (выводимый буфер в котором фон смешивается с самой иконкой учитывая альфа-канал) = 196 Кб. Это собственно на данные.
Еще если прикинуть размер занимаемый OpenDialog в памяти (учитывая все загруженные библиотеки) 152 Кб, но Icon не будет содержать менеджер иконок, а это значит минус Box_Lib. Пусть для самого худшего случая будет 100 Кб. Далее на каждую иконку будем динамически выделять стек (не важно мультипоточный или не мультипоточный Icon - промежуточные данные все равно нужно где-то хранить) в 4 Кб, потому что менеджер памяти ядра меньше не может выделить из-за архитектурных особенностей центрального процессора. 48*4=192 Кб.

Итого получаем размер 192+100+192=484 Кб и это в самом худшем случае, когда присутствуют все 48 иконок. При 27 иконках будет 192+100+108=400 Кб. В любом случае меньше текущего Icon. Но это опять же наихудший прогноз, скорее всего память будет потребляться еще меньше.

Из возможных плюсов новой реализации:
1) Иконки глубиной цвета в 24 бита и альфа каналом, пожатые в PNG, который к слову сжимает в большинстве случаев лучше чем GIF.
2) Можно сделать регулируемым размер иконок. Какие пользователь положил, такие система и выведет. Разумеется в разумных пределах - иконки 128*128 могут попросту не влезть на рамдиск..
3) Можно вернуть эффект вращения иконок и сделать его опциональным. Это потребует около 8 Кб на данные вращающейся иконки при размере 32*32.
4) Можно попытаться реализовать все в одном потоке - хотя это очень непросто с текущими возможностями ядра.

Собственно мне нужна помощь в подборе полноцветных иконок и подготовка их в формате 24+8 бит. Такое можно сделать например в Gimp. Я могу и сам попробовать сделать, но дизайнер из меня не важный, да и время отнимает. Можно даже несколько наборов иконок сделать и положить их потом в архив дистрибутива, чтобы пользователю было из чего выбирать, также как например со скинами окошек.


Вернуться к началу
   
СообщениеДобавлено: Вт сен 14, 2010 10:48 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
32-х битные иконки - это здорово!
Думаю, можно невозбранно взять свободный набор иконок. Например, oxygen (по лицензиям gpl или ccsa).
А можно и самим нарисовать. В конце концов, теперь не нужно будет ограничиваться 256 цветами для всех иконок, и поэтому наборы иконок будет делать гораздо проще.
Готов предложить свою посильную помощь :)


Вернуться к началу
СообщениеДобавлено: Вт сен 14, 2010 10:59 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Сб мар 04, 2006 12:53 am
Сообщения: 221
в гимпе не силён... на фотошопе попробую нарисовать чё-нить


Вернуться к началу
СообщениеДобавлено: Ср сен 15, 2010 12:04 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
Думаю что для рисования иконок удобно использовать программу Inkscape http://ru.wikipedia.org/wiki/Inkscape . Ее я использовал для рисования игры Nu_pogodi. Она создает изображения в векторном формате, которые можно экспортировать в png (с прозрачностью). Могу в случае необходимости нарисовать иконку по образцу, дизайнер из меня слабый.
Векторные редакторы при изменении размеров какраз то что нужно, в отличие от растровых.


Вернуться к началу
СообщениеДобавлено: Ср сен 15, 2010 7:18 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
Mario
возможность использования полноцветных изображений в качестве иконок и возвращение эффекта вращения это ИМХО здорово. а зачем делать ICON однопоточным?


Вернуться к началу
СообщениеДобавлено: Ср сен 15, 2010 8:41 am 
Рад что тема вызвала живой отклик, жду готовые иконки. :)

Albom
В принципе не обязательно это делать, но с другой стороны у нас только 256 возможных потоков в текущей системе и один из них всегда занят самим ядром. Конечно при нормальной работе исчерпать 255 потоков сложно. В общем нужно подумать.


Вернуться к началу
   
СообщениеДобавлено: Ср сен 15, 2010 9:33 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Мне кажется, что 255 потоков могут закончиться очень даже быстро... Сейчас в моем linux'е запущено около 160 процессов, хотя не запушен ни десяток шеллов, ни eclipse, ни куча редакторов с множеством внешних фильтров.
Я конечно понимаю, что понятие "unixway" к Колибри неприменимо.
Но 30 процессов на иконки - это как-то многовато...


Вернуться к началу
СообщениеДобавлено: Ср сен 15, 2010 9:55 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Наборк иконок из всем известной GNOME. Для любителей.
http://www.iconspedia.com/dload.php?up_id=60229
Под лицензией GPL, в архиве список авторов и иконки 32x32, 48x48 и 64x64


Вложения:
Gnome-Accessories-Text-Editor-32.png
Gnome-Accessories-Text-Editor-32.png [ 4.62 КБ | 4328 просмотров ]
Gnome-Accessories-Calculator-32.png
Gnome-Accessories-Calculator-32.png [ 4.8 КБ | 4328 просмотров ]
Accessories-Dictionary-32.png
Accessories-Dictionary-32.png [ 4.51 КБ | 4328 просмотров ]
Вернуться к началу
СообщениеДобавлено: Ср сен 15, 2010 10:11 am 
Спасибо для экспериментов как раз.


Вернуться к началу
   
СообщениеДобавлено: Ср сен 15, 2010 10:24 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Мне подумалось... Один поток - одно окно?
То есть запуск программы иконкой приведет к "всплыванию" всех иконок над окнами. Правильно понимаю?


Вернуться к началу
СообщениеДобавлено: Ср сен 15, 2010 10:47 am 
Если не исхитрятся и делать обычными методами, то да. Я пока не придумал как это можно сделать.


Вернуться к началу
   
СообщениеДобавлено: Ср сен 15, 2010 12:10 pm 
Не в сети

Зарегистрирован: Чт янв 26, 2006 8:47 pm
Сообщения: 284
На сколько знаю можно же рисовать на фоновом изображении через системный вызов? Тогда получится что иконки всегда будут находиться на самом нижнем слое. Конечно это вызывает немного другие проблемы - удаление иконки (придется перерисовать оригинальный фон и все иконки без нее), и вторая проблема - возможное всплывание прозрачных (невидимых) областей иконок.


Вернуться к началу
СообщениеДобавлено: Ср сен 15, 2010 12:24 pm 
Там есть определенные траблы - мы рисуем на фоновом изображении, а не на самом экране. Соответственно это возможно лишь в случае когда картинка один к одному с экраном и режим черепица. В остальных случаях иконки будут либо продублированы, либо растянуты.


Вернуться к началу
   
СообщениеДобавлено: Ср сен 15, 2010 1:13 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
Veliant писал(а):
На сколько знаю можно же рисовать на фоновом изображении через системный вызов?


В принципе можно рисовать поверх всего и без системного вызова, прямо во фреймбуфер, доступ к которому всегда открыт - через сегментный регистр GS.

Хотя лично мне идея отрисовки иконок из отдельного приложения не нравится.
Этим должно заниматься ядро, а "менеджер иконок" мог бы лишь менять дефолтные настройки посредством редактирования системной базы данных
Код:
application_name | application_path | icon_bmp | icon_coords

_________________
Узкий специалист подобен флюсу: полнота его - односторонняя.
Козьма Прутков


Последний раз редактировалось art_zh Ср сен 15, 2010 1:17 pm, всего редактировалось 1 раз.

Вернуться к началу
СообщениеДобавлено: Ср сен 15, 2010 1:17 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3928
Mario

Надо добавить два новых вызова. Первый для отрисовки в пределах рабочего стола с двумя опциями - перед всеми окнами и за всеми окнами.

Это позволит сделать отрисовку всех иконок в один поток и перетаскивание иконок c отрисовкой.

Второй вызов - тест на принадлежность точки на экране, чтобы при клике мышкой проверить что под курсором - фоновый рисунок/иконка или окно программы.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 443 сообщения ]  На страницу 1 2 3 4 530 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB