Icon - менеджер иконок рабочего стола

...
  • И ещё. Как уже писал при перетаскивании видна только мышь, без иконки под ней. А хотелось бы. Пробовал сразу рисовать её на фоне, но получалось жуткое мельтешение. Делал по алгоритму восстановил фон под прошлой позицией иконки, нарисовал все иконки кроме перетаскиваемой, нарисовал перетаскиваемую в позиции мыши. Но это очень медленно. Пробовал при начале перетаскивания создавать окно под мышью заменяющую иконку, но то ли сам напортачил, то ли ещё что-то, но окно появлялось только после отпускания кнопки мыши. Нужны идеи.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Распаковал архив, закинул программу, иконки и dat-файл в образ 3627. При запуске в Qemu 0.12.2 получаю:
    Spoiler:
    icon_pf.png
    icon_pf.png (22.84 KiB)
    Viewed 3410 times
    Запуск из RUN - то же самое.

    З.Ы. Соглашаюсь с автором:
    Spoiler:
    GerdtR wrote:Глюков много, правда, и ещё не всё реализовано.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Ясно, поправлю.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • А почему бы не рисовать рамку при перетаскивании? Как реализовано перетаскивание при развернутых окнах? Ну и т.д.
    Очень много вопросов - не к реализации, а к концепту drag&drop.
  • Mario_r4, у Вас прога не нашла icons.dat . Поправил, теперь если не нашла, то на доску отладки сообщает и выходит. Ничего не делал на случай, если ещё иконок нет.
    Attachments
    ICON (2.99 KiB)
    Downloaded 172 times
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • GerdtR wrote:Mario_r4, у Вас прога не нашла icons.dat .
    Собственно почему не нашла? Я все три файла в корень рамдиска закинул.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Не знаю. Вот поправил. Если не нашла, то создаёт. Теперь нормально работает, если файла нет вообще или нет созданных иконок. Можно удалять все иконки до конца(раньше все, кроме последней (случайность из-за которой не увидел ещё кучу багов :? )).
    SoUrcerer, наверное так и сделаю. Остаётся понять, что делать, если иконку перетащить на окно. Рамка-то рисоваться будет. Сворачивать все окна что ли :lol: .
    Attachments
    icon.zip (39.94 KiB)
    Downloaded 177 times
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • GerdtR wrote:Пробовал сразу рисовать её на фоне, но получалось жуткое мельтешение. Делал по алгоритму восстановил фон под прошлой позицией иконки, нарисовал все иконки кроме перетаскиваемой, нарисовал перетаскиваемую в позиции мыши. Но это очень медленно. Пробовал при начале перетаскивания создавать окно под мышью заменяющую иконку, но то ли сам напортачил, то ли ещё что-то, но окно появлялось только после отпускания кнопки мыши. Нужны идеи.
    1. Даю подсказку - сядь на досуге и подумай, почему в текущем ICON два потока.
    2. Окно естественно не будет рисоваться до отпуская клавиши - так работает код в ядре и это правильно, во время перетаскивания должна рисоваться рамка.
    3. При пересечении новых и старых координат иконки (а это вероятно будет в 99% случаев), можно вычислять 2 прямоугольника, которые требуется восстановить и это будет быстрее, чем восстанавливать всю область. Проблемы начнутся когда по тем же координатам попадется другая иконка.
    Last edited by Mario_r4 on Mon Jun 10, 2013 1:15 am, edited 1 time in total.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Что бы перерисовка не зависела от действий мыши?
    В этой версии можно при создании и изменении иконки кликать по картинкам. Поле автоматически заполнится.
    Attachments
    icon.zip (40.33 KiB)
    Downloaded 184 times
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Я там в пост дописал кое-чего.
    З.Ы. Кстати, раз уж отказался от старого icon.dat, то зачем изобретать собственный формат, если есть LibINI.obj
    З.З.Ы. Сравнил тут размер потребляемой памяти - текущий Icon потребляет в запущенном виде - 184 Кб, а новый - 276 Кб. Даже с учетом замены @RB, который в ассемблерном варианте помещается в 4 Кб (тот который в ночной сборке написан на C--), получается немалый прирост. На фоне ЯВУ программ разумеется не смертельно, но мне почему-то думается, что если посмотреть код, то можно оптимизировать.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • А я сразу написал, что не оптимизирован :roll: А по поводу формата, то мой меньше места занимает :P Вот. А если серьёзно, то уже лень переделывать, а потери в размере кода не большие.
    А окно хотел передвигать с помощью сисфункции вслед за мышью, но что-то не нравится мне это :? Рамка выглядит проще. Осталось понять, как её рисовать. Типа так: прочитать цвет точки фона, инвертировать, нарисовать, и так для всего квадрата? Ну и затереть предыдущий квадрат таким же кодом. Что-то медленно, кажется. Хотя это побыстрее, чем стирать/рисовать иконку.
    PS: Забыл упомянуть. В последней версии поправил баг при неправильной иконке. Если её не существует, то берётся самая первая.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Так и не понял чего так моя прога много памяти ест. Поптимизировал... теперь съедает 270336 байт :lol: Не ахти. Ну ещё надо учитывать мой увеличенный iconstrp.png. Там иконок побольше, 37(итого 32*32*4*37=151552). Хотя всё равно не вижу, что так кушает.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Мда, рамка не очень проще. Для того, что бы нарисовать рамку надо после изменения фона его перерисовать(я так понимаю достаточно перерисовать только фон под рамкой). А это вновь поднимает вопрос о пересечении с другими иконками. Слишком медленный код получается. Очень много рисования. Хорошо, что я сохранил пробную версию с созданием окна... Попробую создавать окно в другом потоке и перемещать его за мышью. В худшем случае будет отставание окна от мыши. Вроде не страшно...
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Всё-таки окно запустил. В результате жуткое мигание окон, если мышь над ним и если иконка с прозрачностью, то видны артефакты. Плюс ещё надо добавит перерисовку иконок, если окно их задело. Тоже не вариант. Всё ещё нужны идеи. Хм, вроде же как-то можно рисовать прямо на экране? Сразу в видеопамять. Или нельзя? Читать же можно через [gs: (y*xsize+x)*4] ?
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Who is online

    Users browsing this forum: No registered users and 5 guests