воскресенье, 9 сентября 2012 г.

Гимп - композиции слоя, работа начата....

Всем привет!

Как известно из Roadmap добавление такого необходимого инструмента как стили (эффекты) слоев в Гимп запланировано в версии 3.0 или еще позже. Я не хочу так долго ждать и поэтому начал свою личную разработку.

Я уже  излагал свои мысли относительно того как я вижу "Стили слоев"  Гимпа в посте http://remyawm.blogspot.com/2012/05/gimp.html. Там я предлагаю несколько вариантов:
  • Фотошопо-подобный вариант - Концепция "Стилей"
  • И более прогрессивный, основанный на редактировании Gegl-графа - Концепция "Композиций"
После взвешивания всех за и против, я остановился на последней концепции "Композиций".

Суть композиций слоев проста -
Применение к изображению слоя эффектов путем добавление набора (композиции) Gegl-операций и настройки связей между ними.
Работа с композициями -
  • Редактирование композиций (добавленных к слою нодов gegl-операции) будет осуществляться в специальном редакторе, подобно редактуру нодов в Blender.
  • Расширение возможностей композиций будет осуществляться через написание дополнительных gegl-опрерации.
  • Применённые к изображению Гимпа композиции, будут сохраняться вместе с документом, так-что при открытии такого документа на другом компе, изображение будет загружено с входящими в него композициями и возможностью их редактировать.
  • Так-же будет реализован механизм импорта/экспорта композиции в специальный файл, например - "*.glc".
  • Хранящиеся в файлах композиции будут располагаться в специальной папке, в пользовательском каталоге Гимп, например - "~/.gimp-2.9/compositions/". 
  • Для быстрого доступа к существующим композициям к панели параметров инструментов будет добавлен диалог - "палитра композиций".

Разработку композиций я разбил на несколько этапов, которые мне (пока) представляются так:
  1. Разработка редактора нодов - гибкого, с возможностью работать не только с gegl-нодами напрямую, а при необходимости создавать представления нодов с дополнительными свойствами и из нескольких gegl-нодов, если это будет необходимо. Плюс, предусмотреть гибкую систему сигналов для контроля любых изменений в работе редактора. 
  2. Добавить редактор в Gimp-core - добавить в меню вызов редактора, иконку композиций в список слоев. 
  3. Добавить к классу слоя граф композиции. Подключить к редактору граф слоя и граф композиции. Обеспечить базовые функции работы со слоем через редактор - отобр./скрытие слоя при разрыве связей соответствующих нодов. Изменение прозрачности, режимов смешивания, трансформаций и позиционирования.
  4. Реализовать механизмы работы с графом композиций как редактора, так и самого гимпа. Реализовать сохранения композиции в файл изображения гимпа.
  5. Добавить функции импорта/экспорта композиций в файл.
  6. Добавить диалог палитры композиций. 
  7. Добавить новые операции для быстрого создание наиболее часто применяемых к изображ. слоя эффектов - обводка, тень, свечение, рельеф, заливка и т.д. ....

 Как видите задача сложная, но я уже за неё взялся!

Теперь о том, что уже сделано....

На момент написания этого поста я нахожусь на финальной стадии разработки редактора, который представлен следующими классами:


GimpNodeView - виджет вьюшки в которой будут отображаться ноды. Сама по себе абстрактна, от нее будет создана специфическая вьюха для работы с gimp-gegl нодами - GimpGeglNodeView.

GimpNodeItem - сам нод.  Тоже абстрактный класс, будут переопределен в GimpGeglNodeItem. Имеет функцию draw(t_cairo) для отрисовки элементов нода во вьюхе.

GimpNodePad - это входа/выхода нодов. Используется в GimpNodeItem. Не требует переопределения.

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

 -----------------------------------------

 Вот снимок редактора в тестовом приложении:

(слева просмотр изображения с эффектами, справа сам редактор)

 К слову. На данный момент в рамках проекта Gegl ведется разработка подобного редактора. Однако он строго адаптирован под работу с gegl-нодами только! К тому же он находится на начальной стадии разработки. По этой причине я написал свой более функциональный вариант.

p.p.s. - спасибо автору gegl-редактора за примеры работы с gegl api!







2 комментария:

  1. Здраствуйте!
    Из Винды можно будет потрогать вашу работу?

    ОтветитьУдалить
    Ответы
    1. Нет. Это лишь пример работы редактора нодов, который представляет собой не отдельное приложение а библиотеку, на основе которой будет написан редактор нодов (композитор) слоев Гимпа. Как только редактор будет дописан до конца и пройдет тестирования, я выложу исходники на гитхабе, о чем сообщу в этом блоге и на G+.

      Удалить