Page 1 of 1

Стандартный набор иконок

Posted: Tue Oct 23, 2018 6:06 pm
by 0CodErr
Предлагаю обсудить необходимость сабжа и способ его хранения.
Только не путать с иконками для приложений, возможно, они будут встроены в приложения в качестве ресурсов(но ответ так и не был получен http://board.kolibrios.org/viewtopic.ph ... 626#p71332).

От себя могу предложить такой вариант:
  • Иконки хранятся в са́мой обыкновенной динамической библиотеке
    Файлы иконок включаются туда при компиляции ассемблерной директивой file.
    Как и в обычной библиотеке будет храниться массив структур по 2 dword-а, только вместо "имя процедуры, адрес процедуры" будет так "имя иконки, адрес иконки".
Загрузить можно как обычно с помощью LoadLibrary.
Получить адрес с помощью GetIconAddress(по сути то же, что и GetProcAddress).
Например:

Code: Select all

  hIconLib = LoadLibrary('icons.obj')
  pdf16_icon = GetIconAddress(hIconLib, 'pdf16')
  pdf32_icon = GetIconAddress(hIconLib, 'pdf32')
Необязательно включать файлы в виде png, можно и просто несжатый BMP32(но, конечно, это ещё надо обсудить), всё равно файл библиотеки сожмётся, и так даже будет удобнее с ним работать.

Из очевидных плюсов:
  • Если библиотека уже загружена, то грузить её не надо, просто вернётся указатель.
    Удобно добавлять файлы в библиотеку.
    Доступ по конкретному имени, а не по номеру.

Re: Стандартный набор иконок

Posted: Tue Oct 23, 2018 6:32 pm
by Leency
Чем icons16.png, icons32.png не угодили?
Дело в неудобности использования номера?
Его можно получить тут в один клик

Re: Стандартный набор иконок

Posted: Tue Oct 23, 2018 6:35 pm
by Leency
Я за то, чтобы оставить icon32.png и icon16.png в текущем виде.
Библиотеку можно создать просто для удобного добавления иконок, чтобы не морочится с загрузкой изображений, заливкой их фона и прочим.

Или ты про какой набор иконок?

Re: Стандартный набор иконок

Posted: Tue Oct 23, 2018 6:35 pm
by Siemargl
неплохая идея.

для всех ресурсов, не только для иконок

общесистемные файлы не резиновые - хотя как там реализовано все?