day & night

 
Четыре тысячи слов о состоянии проекта Krita, Статьи
Дата публикации:
#1
~karlson~



*nix`оид
[SoftoRooMTeaM] Group Icon

Группа: Модераторы
Сообщений: 1.878
Регистрация: 6.06.2006
Из: Чернигов
Пользователь №: 555


Респектов: 726
-----XXXX-




Четыре тысячи слов о состоянии проекта Krita


Мы работали над Krita 2.0 с 2006 года и похоже, что мы выпустим новую стабильную версию в начале 2009 года. Это, в свою очередь, означает целых три года работы над проектом. Примерно столько же, если начать отсчёт с версии 1.4 (когда я присоединился к команде) потребовалось на разработку версий 1.4, 1.5 и 1.6 вместе взятых!

Конечно, делать подобные сравнения не совсем правильно, так самой трудоёмкой частью было портирование кода Qt4 и KDE4. Если оглянуться немного назад, я думаю, что мы должны были подождать с портированием до середины 2007 года и вместо этого разрабатывать версию 1.7: либо добавить новые функции и возможности, либо переделать стек слоёв, либо мозаичную систему. Но нам, разработчикам, нестерпимо хотелось попробовать новшества Qt4.0 — знали бы мы, чем это кончится!

Ещё одна причина, по которой разработка ветки 2.х длилась так долго, заключается в том, что некоторое количество ключевых для Krita 1.x технологий, например, система инструментов, были перенесены в библиотеки KOffice, чтобы все приложения проекта могли использовать их. В процессе портирования инструменты изменилась до неузнаваемости, и большая часть 2006 года ушла на поддержание Krita на плаву и работу над общими для KOffice инструментами и холстом, причем эта работа все еще не завершена. Думаю, что потратил порядка девяти месяцев только на инструменты при том, что эта подсистема уже прекрасно функционировала в ветке 1.x.

Третья причина, или, возможно, следствие — сокращение команды разработчиков. Нам не хватало Адриана, Барта, Каспера и Михаэля. Хотя Адриан сделал почти все первоначальное портирование, а Каспер работал над библиотеками KOffice, сейчас реально активны только Сирил, Свен и я: Эмануэле сделал много великолепных вещей, но в обозримом будущем он слишком занят на работе. Лука, наш студент Google Summer of Code 2008, тоже сделал много чего интересного, но он работает над расширениями, а не над ядром Krita.

Есть признаки того, что эта неблагоприятная тенденция может быть переломлена: Барт Коппенс недавно начал снова писать код, и успело отразиться на состоянии последней бета-версии.

Четвёртая причина — проблемы в реальной жизни: я перегорел в 2006 году — трения в общем проекте KOffice, переезд, смена работы в 2007 и снова в 2008... Всё это имело свою цену. Другие разработчики тоже не были исключением, и это, в принципе, нормально для большого проекта, работа над которым ведётся в течении нескольких лет. Как говорит Аарон [Сейго], встряска — это нормально, но потери должны восполняться новоприбывшими. А в проекте не будет новых участников, если не будут выходить новые версии.

Но самая важная причина идёт под номером пять — Krita разрабатывалась так долго потому, что мы проделали поистине огромную работу. Уже Krita ветки 1.x была уникальным свободным редактором изображений с такими функциями как:

* коррекционные слои;
* группы слоёв;
* модули цветовых пространств;
* сменные движки кистей.

В Krita ветки 2.х мы реализовали массу новых функций, часть из которых уникальна для мира свободного ПО, а часть вообще нигде больше не встречается. И хотя мы могли бы выпустить версию с частью уже работающего функционала, эта версия все же должна быть выпущена синхронно с библиотеками KOffice, которые на тот момент ещё не были готовы.

Итак, давайте проведем «инвентаризацию» и определим актуальное состояние всех этих новшеств: какие из них готовы ко включению в состав версии 2.0, а какие будут доделаны в течение цикла разработки ветки 2.х. Также отметим, какие регрессии произошли, с какими функциями придётся расстаться или временно исключить, чтобы продолжить разработку, и что пока еще не было воссоздано.

Замечу, что я добавил имена основных разработчиков, дабы отдать дань славы тем, кто этого заслуживает. Но нужно заметить, что ребята успели отметиться в коде практически везде, так что весь редактор действительно является коллективной работой. Мы, да будет мне позволено так сказать, реально круты!
Новый функционал
Библиотека PigmentCMS

* Авторы: Сирил Бергер, Баудевейн Ремпт
* Суть: библиотека PigmentCMS — это старый механизм манипуляций с цветом, переехавший из самой Krita в общие с KOffice програмные библиотеки. В ходе переноса он был усовершенстован не только для работы с основанными на LittleCMS модулями цветовых пространств, но и с OpenCTL и расширениями «изобразительных» пространств. Код был переделан для еще более простого добавления новых цветовых пространств. Плюс еще несколько новых интересных возможностей. В качестве эксперимента я переписал PigmentCMS с использованием только библиотеки Qt и необязательной зависимостью от LittleCMS — эта работа заняла всего несколько часов. Получившаяся библиотека — действительно подарок богов для тех, кто хочет написать независимый от используемого цветового пространства код для уродования пикселов: pigmentcms не только просто обеспечивает преобразование цветовых пространств, но и выполняет другие операции, от композитинга до конволюции. Фактически, всё что работает с цветами.
* Статус: сейчас работает очень хорошо, добавить новое цветовое пространство или операцию удивительно просто.

Цветовые пространства с использованием OpenGTL

* Авторы: Сирил Бергер
* Суть: как было замечено выше, PigmentCMS теперь может иметь дело с цветовыми пространствами, которые не используют LittleCMS. OpenCTL — это свободная замена неудачно лицензированной AmpasCTL. Она предоставляет примитивы программам, модифицирующим изображение на уровне отдельных пикселов; эти программы затем компилируются при помощи llvm в «родной» код, который и исполняется. Интерпретатор Krita использует OpenCTL для поддержки цветовых пространств, требующих вычислений с плавающей точкой, что необходимо для изображений HDR. OpenCTL — часть OpenGTL (Graphics Transformation Languages), которые также содержат OpenShiva — интерпретатор языка программирования, созданный под впечатлением от PixelBlender компании Adobe, который выполняет ядерные преобразования, т.е. использует множество пикселов на входе.
* Статус: отлично работает. OpenCTL пока недоступен во всех дистрибутивах в виду сравнительной молодости, но мы считаем, что скоро это изменится.

Фильтры, основанные на шейдерах

* Авторы: Баудевейн Ремпт, Том Бёрдик
* Суть: теперь можно писать фильтры, используя язык шейдеров GLSL из состава библиотеки OpenGL. Это, возможно, обеспечит неплохой прирост скорости для некоторых фильтров и цветовых пространств — весьма занимательная штука. Спроектированный API напоминает инструментарий Cg от Nvidia для программы Photoshop.
* Статус: отложено до 2.1: у Тома реально не было достаточно времени, чтобы закончить этот модуль, а у меня нет ноутбука с поддержкой GLSL ноутбука. Сказать по правде, мой Thinkpad на основе Intel даже с простым OpenGL не в ладах.

Маски эффектов

* Авторы: Баудевейн Ремпт
* Суть: маски эффектов — это комбинация выделения и фильтра или преобразования или прозрачности — в-общем, что-нибудь маскирующее. Маски — ключ к неразрушающему редактированию в Krita. Для этого пришлось перепроектировать внутреннюю структуру представления данных — дерево узлов, и я на всякий пожарный случай сделал это дважды.
* Статус: почти готово. У нас определенно будут маски фильтров, маски полупрозрачности и маски локального выделения. Маски преобразования будут готовы к версии 2.1 —- и даже тогда они, возможно, будут создаваться с помощью инструмента преобразования, а не через диалога как сейчас.

Векторные слои

* Авторы: Байдевейн Ремпт, Эмануэле Тампони
* Суть: в Krita 1.x можно было встроить один KPart пакета KOffice в качестве объектного слоя — например, векторный рисунок Karbon или текстовый документ KWord. Это способ был не очень гибким, и одной из причин создания библиотеки Flake была потребность в разделении хорошо структурированных объектов между приложениями. Так что в Крита теперь есть тип слоя, который может содержать любое количество векторных объектов, отрисовывающихся с разрешением документа (а не устройства вывода), а затем смешивающихся с документом.
* Статус: есть что улучшить в части взаимодействия с пользователем, но векторные слои войдут в составав релиза 2.0.

Редактируемый сложноформатированный текст

* Авторы: Томас Зандер, Ян Хамбрехт
* Суть: не совсем заслуга именно Krita, но благодаря новому векторному слою вы сможете использовать внутри документа Krita текстовые формы Flake, а следовательно и редактировать текст со сложным форматированием. Параллельно доступен написанный Яном простой текстовый объект, размещаемый по контуру.
* Статус: определенно войдёт в 2.0.

Редактирование метаданных в слоях

* Авторы: Сирил Бергер
* Суть: с момента выхода версии 1.6 в обиход вошли новые схемы аннотирования изображений, такие как XMP и Dublin Core. В Krita метаданные редактируются на уровне слоя, а не всего изображения.
* Статус: редактор работает и поддерживает Dublin Core и Exif; метаданные могут импортироваться из нескольких файловых форматов, но импорт и сохранение в родном для Krita формате пока не готовы.

Движки кистей

* Авторы: Баудевейн Ремпт, Эмануэле Тампони, Лука Тврдый
* Суть: Krita — единственное приложение для рисования, имеющее встроенный механизм сменных движков кистей. Архитектура расширений для движков кистей улучшена: движки получают больше информации для работы и могут использоваться для рисования как простых линий, так и кривых Безье, а не только для обычного рисования. Есть удобная библиотека, содержащая код простых операций, например, кривые отклика на силу нажатия пером планшета. Благодаря Луке Тврдому добавлены несколько новых движков.
* Статус: работает, плюс-минус пара ошибок. Лука также добавил следующие кисти:
o Кисть Sumi-e: её создание началось как эмуляция техники китайской каллиграфии, но сейчас ближе к более общей симуляции волосяных кистей. Будет в 2.0.
o Деформация: не будет включена в релиз 2.0, но её код дописан и стабилен. Можно рисовать искажений поверх пикселов. Клёво.
o Мелок: на самом деле, это ранняя версия Sumi-e, вполне приемлемая симуляция сухих материалов.
o Кривая: создаёт случайные или фрактальные кривые вдоль нарисованной вами линии. Идеальна для рисования береговых линий smile.gif В общем-то готово, но в 2.0 не войдёт.
o Брызги: старомодная симуляция брызг от пульверизатора. Вместе со сглаживанием и дрожанием/вибрацией смотрится очень красиво. В 2.0 не войдёт, но работает достаточно стабильно.
o Dynadraw: вдохновлено программой Dynadraw Пола Хаберли.
* Лука будет писать диссертацию на материале кистей в Krita, так что мы ожидаем появления множества новых и интересных кистей в течение нескольких следующих лет.
Сирил Бергер создал движок программируемой кисти, но он, к сожалению, находится сейчас в экспериментальной стадии.

OpenRaster

* Авторы: Сирил Бергер
* Суть: OpenRaster — файловый формат растровых изображений для обмена проектными данными. Прокт был начат мной, Баудевейном Ремптом, с целью создать общепринятый формат файлов для хранения и передачи проектных данных, поскольку формат Adobe Photoshop никогда не был ни открытым, ни стандартным, ни доступным без подписывания соглашения о неразглашении полученных сведений (NDA).
* Статус: дела не так уж плохи. MyPaint стал первым приложением, которое может загружать и сохранять OpenRaster, и Krita теперь тоже может загружать многослойные изображения, созданные в MyPaint. Отличная новость!

Направляемое рисование

* Авторы: Сирил Бергер
* Суть: это новый тип расширений Krita: расширения, которые более или менее точно направляют движения вашей руки.
* Статус: работает, также есть вспомогательная линейка для тестирования этой функциональности.

Золотое сечение

* Авторы: Томас Зандер
* Суть: это расширение реализовано как объект Flake (и потому может быть использовано повсеместно в KOffice), основная задача которого показывать сетку золотого сечения поверх документа. В будущих версиях мы можем переделать эту сетку в обычную — в Krita уже реализовано несколько типов сеток.
* Статус: работает, хотя всё еще недостаёт некоторых значков.

Разрешение изображения

* Авторы: Каспер Бёман, Баудевейн Ремпт
* Суть: Krita версий 1.x не принимал во внимание ни разрешение вашего принтера, ни вашего экрана, ни самого импортированного в программу изображения. Пиксел был просто пикселом. В версии 2.0 программа учитывает разрешение и может корректно отображать изображение на экране. Это значит, что если вы сканируете изображение в разрешении 300dpi и имеете монитор с разрешением 96dpi, изображение при 100% увеличении будет таким же большим, как оригинал его физического носителя. Достаньте линейку и проверьте!
* Статус: я не уверен, что печать вообще работает — это нужно проверить кому-нибудь, у кого есть принтер! Остальное сделано и войдет в состав версии 2.0.

Реалистичное смешение цветов

* Авторы: Эмануэле Тампони
* Суть: начало было положено проектом Эмануэле в рамках Google Summer of Code 2007 года: нам нужен был холст для смешивания красок наподобие палитры в Corel Painter, но только чтобы смешение цветов было таким же, как в жизни. Эмануэле много раз переделывал свой код и в итоге получил действительно хорошее приближение к действительности.
* Статус: смешение работает, у нас есть палитра для смешивания красок и оператор рисования, но они пока не доделаны: есть несколько регрессий по сравнению с последней версией работающего кода, и все же нам очень хочется, чтобы в версии 2.0 эта функциональность была. Основная проблема состоит в том, что Эмануэле сейчас слишком занят на работе, чтобы продолжать работать над своим кодом.

Динамические генераторы

* Авторы: Баудевейн Ремпт
* Суть: генератор, как основа генератора слоёв — это по существу фильтр, работающий без пикселов на входе, но производящий пикселы на выходе. Его можно использовать для получения фракталов, шума, пламени. В репозитории расширений Krita2 есть экспериментальный генератор, основанный на Shiva.
* Статус: работает, есть тип слоя использующий результат работы генератора. Пока еще не воплощено, но в планах на версию 2.1 есть следующее применение генератора: использовать его в качестве опции заливки в инструменте заливки или геометрических инструментах рисования, либо вместо однородной цветовой заливки фона при рисовании или как фоновое изображение для слоя — получить эффект старой бумаги, например.

Клонирование слоёв

* Авторы: Баудевейн Ремпт
* Суть: инструмент копирует часть другого слоя (или даже целиком) и переносит его куда угодно в стопке слоёв. Вы можете наложить новую маску эффектов на копию, например для создания эффекта размытости. Клонирование слоёв также важно для формата OpenRaster.
* Статус: похоже, что работает. Но нужно тестирование со стороны пользователей

Инструмент измерения

* Авторы: Свен Лангкамп
* Суть: этот инструмент (не путать с вспомогательной линейкой при рисовании) позволяет вам измерять расстояние вдоль прямой линии между двумя точками.
* Статус: отлично работает, будет в версии 2.0.

Векторное/пиксельное выделение

* Авторы: Свен Лангкамп, Баудевейн Ремпт
* Суть: в ходе GSoC 2007Свен Лангкамп искал возможность улучшения механизма выделения в Krita. Его исследования воплотились в новом методе выделения, обьединяющем в себе векторное и растровое отображение. Граница области выделения отображается теперь с эффектом «марширующих муравьёв». Векторные части механизма выделения интергированы в систему Flake из KOffice, правда пока не полностью — невозможно использовать произвольные формы, только контуры.
* Статус: работает, но загрузка и сохранение векторных частей выделения, связанного с маской и корректирующим слоем, пока не готовы.

Выбор цвета

* Авторы: Каспер Бёман, Сирил Бергер
* Суть: сначала Каспер создал диалог выбора цвета, который исправлял выявленные недостатки ветки 1.x, например, невозможность ввода цвета в цветовых пространствах L*a*b* и CMYK. Затем Сирил добавил массу других выборщиков цвета, в том числе компактный выборщик, используемый теперь по умолчанию.
* Статус: теперь есть из чего выбрать, но я не думаю, что мы разработали совершенный выборщик цвета. Ни один из наших новых выборщиков не помечает цвета, выходящие за рамки цветового охвата, а в крупном выборщике есть несколько ошибок.

Выбор активного канала

* Авторы: Баудевейн Ремпт
* Суть: выполнение операции только в одном канале слоя или ограниченном подмножестве — очень полезная функция. В Krita 2.x мы сделали эту фунцию общедоступной. Вы можете указать, какие каналы слоя являются активными, и только эти каналы будут сводиться в изображении, обрабатываться фильтрами и быть разрисовываемыми.
* Статус: кое-как работает, но слишком много критических ошибок, поэтому мы наверное не включим эту функцию в состав версии 2.0.

Предустановки движка кисти

* Авторы: Баудевейн Ремпт
* Суть: в качестве активного ресурса простая кисть с картофельным штампом или кисть вроде ABR больше не используется. Вместо них — индивидуальный набор параметров кистевого движка. Эффект этих параметров показан при предпросмотре в виде росчерка кисти. В набор параметров могут входить градиенты, текстуры или наборы фильтров. Такие предустановки могут свободно модифицироваться и распространяться через сервис Get Hot New Stuff.
* Статус: работает, плюс-минус пару ошибок. Сохранение измененных предустановок пока не реализовано, но есть в планах на версию 2.1.

Аппаратно ускоренная отрисовка холста через OpenGL с предспросмотром градиентов на холсте

* Авторы: Адриан Пейдж
* Суть: если ваш видеоадаптер поддерживает OpenGL, вы можете использовать аппаратно ускоренную отрисовку холста. Этот способ более быстр и использует меньше ресурсов в сравнении с обычным холстом. Если доступен GLSL — OpenGL Shading Language, видеокарта будет задействана для предпросмотра градиентов и экспозиции HDR.
* Статус: пока не использует выделение для ограничения градиента.

Улучшенное экранное масштабирование

* Авторы: Баудевейн Ремпт, Каспер Бёман, Сирил Бергер
* Суть: для уменьшения масштаба отображаемого изображения Krita 1.6 использует очень простой и быстрый алгоритм. В случае с детализированными изображениями при масштабировании сильно деградирует конечное качество картинки. Теперь Krita использует (когда не работает в режиме OpenGL) куда как более продвинутый алгоритм, основанный на разработках Дэвижа Дулейни, автора темы Mosfet Liquid.
* Статус: работает хорошо, результаты отличные. Иногда всплывают малозаметные артефакты, но причастность нового алгоритма к ним пока что не доказана, да и производительность пострадала не слишком ощутимо. Следующим шагом будет использование пирамидального метода, чем планирует заняться Барт Коппенс .

Запись макросов

* Авторы: Сирил Бергер
* Суть: при включении системы Большого Брата — магнитофона действий — вы получаете сценарий, содержащий запись всех выполненных вами действий. Вы можете воспроизвести этот сценарий просто как повтор последовательности действий или как демонстрацию некоторой техники. Сценарий записывается в формате файлов на основе XML и может быть легко передан кому-нибудь.
* Статус: работает хорошо, хотя редактирование записанных действий пока не реализовано и не всё еще интегрировано с магнитофоном. Кроме того, я сломал выделение активной кисти, хотя это будет исправлено к выходу версии 2.0.

Предпросмотр фильтров на холсте

* Авторы: Баудевейн Ремпт
* Суть: поскольку у нас теперь есть маски фильтров, само собой напрашивалось использование временной маски для предпросмотра применяемых фильтров прямо на холсте вместо привычной миниатюры всего изображения.
* Статус: работает, но есть некоторые проблемы с производительностью.

Новый мозаичный механизм

* Авторы: Барт Коппенс
* Суть: мозаичный механизм для Krita был создан еще Патриком Джулиеном. Каспер Бёман сделал возможным автоматически продляемый холст (как в Photoshop, но в противоположность реализации Gimp). Однако в эпоху многоядерных процессоров текущий мозаичный механизм тормозится так называемым Великим и Ужасным Блокиратором Krita. В нагрузку идет еще пара несчастий. Но Барт Коппенс изготовил противоядие в виде нового мозаичного механизма.
* Статус: пока не закончено, и производительность еще только предстоит оптимизировать. К тому же, некоторые части кода Krita, в основном фильтры, делают неверные предположения, что новый механизм уже используется. К несчастью, это выливается в падение программы. Так что новый мозаичный механизм в состав версии 2.0 включён не будет.

Сжатая мозаика

* Авторы: Баудевейн Ремпт
* Суть: если сжимать старые мозаичные данные (например, информацию для отката изменений) в памяти и записывать такой архив в файл подкачки, это даст экономию при расходе памяти и в количестве обращений к кэшу, а следовательность поднимет производительность при использовании области подкачки.
* Статус: как бы работает, но нестабильно, чтобы быть включенной по умолчанию — пришлось временно выкинуть эту функцию за борт. Впрочем, для версии 2.1 она еще не потеряна, поскольку поможет существенно сократить размер потребляемой памяти.

Многопоточное выполнение многих операций

* Авторы: Баудевейн Ремпт, Сирил Бергер
* Суть: фильтры, обрабатывающие большие участки слоя или сразу несколько слоёв — первые кандидаты на переделку под многопоточность, чтобы задействовать всю мощь современных многоядерных процессоров. Мы реализовываем многопоточность разными способами, в основном посредством Threadweaver — это класс KisThreadedApplicator, который берет слой, задание и участок, автоматически разбивает участок на куски и ставит их обработку в очередь. При рисование используются «нити» — мы заносим в очередь ваши движения кистью и обрабатываем их в фоновой «нити». Рисование тоже поставлено на поток: мы заносим в очередь ваши движения кистью и обрабатываем их в фоновом потоке. Многие операции, затрагивающие сразу несколько слоёв, распараллелены: например, масштабирование или трансформация цвета. Благодаря всему этому Krita теперь имеет индикаторы прогресса для каждого обрабатываемого слоя и маски в диалоге слоёв.
* Статус: и хорошо, и плохо. С одной стороны, рекомпозиция выполняется в фоновых потоках, но из-за некоторых алгоритмических недочетов пришлось от этого отказаться, и я работаю над новым подходом. Кстати говоря, я ещё должен проверить, используется ли многопоточность при масштабировании изображений.

Также есть несколько других новых расширений, например, отображение тонов, сборка экспозиций в HDR и отображение тонов, сборка панорам, compose (the converse of separate channels) и ещё больше в репозитории расширений Krita2.

Наконец, Krita теперь запускается на OSX и Windows — установить программу достаточно сложно, но это вполне выполнимая задача.
Регрессии

Панель навигации по изображению. Благодаря тому, что теперь есть общий холст и архитектура документа, эту панель можно реализовать для всего KOffce сразу. Мартин Пфайфер, победитель конкурса на лучший дизайн интерфейса KOffice2, взялся за реализацию этой функции, но без вести пропал.

Фильтр CImg: Я сделал этот фильтр для Krita 1.х в порядке эксперимента и на самом деле никогда не занимался поддержкой его в рабочем состоянии. Он зависит от цветового пространства, очень медленно работает, и компилятор выдаёт на нём множество страшных предупреждений. Недавно мы перенесли его в пакет krita-plugins. Некоторые другие фильтры тоже не были портированы: например, colorify и halftone.

Векторные инструменты. Работая над Krita во время Summer of Code 2006, Эмануэле Тампони написал для нас инструмент рисования кривых Безье, выделение кривыми Безье и просто безумный инструмент магнитного выделения. Так как мы теперь делим векторные инструменты с остальными приложениями пакета KOffice, эти векторные инструменты никогда не были портированы. Сейчас в Krita есть векторное выделение и векторное рисование с использованием кисти, но инструмента магнитного выделения до сих пор нет.

Маски выделения. Свен Лангкамп создал для Krita выделение «марширующими муравьями» и функцию смешанного векторного-пиксельного выделения в рамках своего проекта Google Summer of Code 2007. Однако его работа застопорилась на процессе отображения выделения или маски как маски. С этим тоже нужно что-то делать, когда мы приступим к переделки механизма перерисовки.

Распаралелленная рекомпозия. Вообще-то, эта функциональность никогда и не входила в Krita 1.x, но в процессе разаработки ветки 2.0 некоторое время работала. Мне пришлось выкинуть ее, когда я заново создавал стратегию рекомпозиции. Тем не менее я добавил этот пункт в свой TODO для ветки 2.1.

Контуры курсора кисти. С новым механизмом отрисовки вQt оператор XOR больше не поддерживается, что сильно затрудняет реализацию этой функции. Пока в списке планов на будущее.

Акварели, наша гордость и краса. Мы убрали это цветовое пространство из-за возникших проблем с механизмом отката изменений и спроектировали новою архитектуру как часть проекта Эмануэле в рамках GSoC, чтобы использовать это пространство более широко. «Влажность» никогда не была достаточно готова для 2.0, хотя цветовое смешение теперь значительно лучше, чем в старой версии. Плюс со времён 1.х в TODO осталось несколько пунктов, например панель истории действий.
Окончательно отвергнутые планы

Вращение и расширение холста: Мы действительно хотели, чтобы можно было вращать холст в соответствии с вращением вашего графического планшета, и отображать содержание слоёв, которые были перемещены за пределы изображения. Первое слишком сложно реализовать с использованием общего для KOffice объекта-холста (а это необходимо для нормальной работы инструментов). Второе я частично реализовал, но Томас Зандер удалил мой код, так как он не вписывался в его концепцию работы холста.
Итоги

За вычетом пигментов и других разделяемых с KOffice библиотек Krita сейчас содержит 120 000 строк кода. Половина из них приходится на расширения, а другая половина разбивается на 30 000 строк кода ядра и 20 000 строк кода пользовательского интерфейса. Что, собственно, не намного больше чем для Krita 1.6!

Наш код теперь в значительно лучшей форме: мы создали обширный набор числовых тестов, обеспечили лучшее разделение отношений, лучшую архитектуру многих структур данных. Мы сократили количество ошибок, зарегистрированных в системе Krazy, до всего лишь нескольких сотен. Впрочем, есть много ошибок, которые еще предстоит отловить. И нужно работать над пользовательским интерфейсом: если сравнить Krita 2.0 и 1.6, старая версия выглядит куда приятней для глаза и кажется менее загроможденной. Есть еще над чем работать, но это, в конце концов, и есть основная идея свободного ПО: всегда есть над чем поработать!

Автор: Баудевейн Ремпт
Оригинал: Four thousand words on the state of Krita
Перевод: Сергей 'seajay' Андреев, Алексей 'LXj' Алексеев
Лицензия: Creative Commons BY-NC-ND 3.0
User is online!
Go topGo end

Topic Options
Сейчас: 25.04.2024 - 12:55
Мобильная версия | Lite версия