Orphus system

Cheb's Home Page

Главная
Cheb's Game Engine Косметическая подтяжка Quake II
Штошник на ушах
 

 

"Automaton"

Приложения и утилиты моей выделки

Инструкция

Сведена здесь вся в одну страницу - просто дождитесь, пока она закачается до конца, сохраните на диск - и готово.

Объясняю для тех, кто в танке: одной инструкции мало, чтобы понять как это всё работает - обязательно скачайте примеры (включая цветной, четырёхмегабайтный) - там внутри не манга, там исходники, скрипты и разметка, просмотрев которые (только просмотрев которые) вы быстро и просто поймёте основные принципы - которые здесь не объясняются.

Повторяю - инструкция - только приложение к примерам (хотя без её знания наизусть у вас всё равно ничего не получится)

Оглавление:

Установка программы
Разметка сканов
Размещение текста
Формат *.manga файла
Описания команд
Ограничения
Баги ( 1 шт. в v0.97 )
Пример

Установка программы:

Пока плохо проработана. Просто скопируйте содержимое *.zip файла в папку "C:\Program files\automaton\" (создайте при необходимости), и кликните на прилагающийся automaton.reg - это, теоретически, должно зарегистрировать файлы типа *.manga в системе, и задать Автоматон как дефолтное приложение для их открытия. Если выберете другую папку - подправьте automaton.reg в текстовом редакторе, чтобы задать правильные пути.
В Линуксе - скопируйте в какую-нибудь папку, для которой у вас есть права на выполнение, и там разбирайтесь (с неродного для Пингвина /mnt/windows/... оно точно не запускается). Если матёрые линуксоиды знают, как всё организовать по человечески - пусть поделятся.

Разметка сканов:

Звуки размечаются зелёным цветом, в порядке убывания яркости. Балоны размечаются красным цветом, в порядке убывания яркости. Звуки и балоны разной яркости не должны соприкасаться между собой, иначе программа примет их за один, а потом заорёт, что, мол, не хватает. И желательно сохранять дистанцию не менее трёх пикселей, иначе балоны/звуки могут, например, слипнуться при масштабировании. Звуки и балоны должны иметь боле-менее чёткие края. Минимальная яркость балона/звука - 30. Границы определяются методом заливки, при снижении яркости от исходной до 5 (эта яркость для звуков, например, определяется как <зелёный> = max(<синий>, <красный>). ) Минимальная площадь балона/звука - 30 пикселей одного цвета. Минимальная разница в яркости между разными звуками - 30 единиц.
Старайтесь не делать очень тонких звуков (2 пикселя и тоньше) - программа может на таких споткнуться из-за размытости краёв. Лучше сделать потолще, и задать потом отрицательный радиус плюс каёмочку (ибо суммарная толщина всех каёмочек и радиуса не может быть отрицательной!)

Балоны можно просто обводить по контуру (желательно, линией не меньше четырёх пикселей толщиной). Форма балонов ограничена: из заданного контура программа выделяет только левую и правую кромки (или верхнюю и нижнюю, если расположение текста верикальное), и считает балоном всё, что между. То есть, например, "выемка" в U - образном балоне окажется заполненной.

Разметка для автозамазки добавляется альфой (добавьте в Фотошопе к изображению альфа-канал, и протрите в картинке дырку инструментом "ластик" - эта дырка и будет замазана. Не используйте полупрозрачный ластик - программа затирает только очень прозрачные участки. Очень тщательно затирайте края замазываемого звука - если останется хоть ма-аахонький пиксель, программа сочтёт его "границей прозрачной зоны", примет во внимание, и на замазанном поле у вас окаже тся больша-ая клякса.) Не ждите от автозамазки чудес - мозгов у компьютера нету, он не понимает, что там нарисовано. Используйте автозамазку если а) у вас совсем плохо со временем, б). звук располагается на очень сложном фоне, и легче удавиться, чем его вручную затереть, и в). звук располагается на размытом фоне (листва, облака), а картинка - полутоновая. Автозамазка вообще разрабатывалась для цветной манги, и для обычной чёрно-белой с контурными рисунками мало пригодна. (хотя я и веду активные разработки в этом направлении).

Разметка для выравнивания делается ярко-синими пикселями. Для обозначения угла достаточно одного пикселя, но я рекомендую рисовать прямоугольнички - иначе задолбаетесь потом этот пиксель на скане искать, если что. Программа всегда берёт самый внутренний пиксель из группы (например, самый правый нижний для левого верхнего угла, или самый нижне-ближний к центру для верхнего среднего угла). Всего углов шесть (из расчёта, что страницы разворота немного повёрнуты к друг другу, и это надо корректировать), но программе достаточно трёх - недостающие будут вычислены методом экстраполяции.
Пиксель, отмечающий угол, останется за краем выровненной картинки. Разметка углов распознаётся в "уголках" (см. схему) размером в 20% от самой короткой стороны картинки. (отсюда, необязательно стараться, подбирая границы при сканировании - можно взять с запасом, а обрезать уже в процессе обработки - см. приложенный образец цветной манги).

Если в разметке будут ошибки (случается и такое, заете ли - незамеченное вами красное пятно программа может принять за балон, или принять следующий по номеру звук за часть предыдущего, если они очень тонкие и размытые - бывало у меня и такое, или балоны слипнутся при масштабировании..) - то программа сохранит недоделаный скан как _error.bmp, причём текущую разметку (если таковая есть) закрасит текстурой со словом error (чёрные буквы на белом фоне для ч/б манги, и синие на красном для цветной) - это чтоб вы не гадали, что там за клякса, если зона окажется слишком маленькой, чтобы разобрать слово error. Контрасность же самого скана будет понижена вдвое, чтобы эти пометки были лучше видны.

 

Размещение текста:

При выравнивание по вертикали (или по горизонтали, для балонов с ветрикальным расположением текста) программа стремиться выровнять текст по центру, балона, но если он сложной формы, а в тексте есть длинные слова, то может немного сдвинуть от центра, чтобы было меньше переносов/сжатия слов. Более подробно см. в описании команд тонкой настройки подгонки.

Если приходится уменьшать высоту букв для того, чтобы текст влез в балон - это уже нештатный режим, когда эстетичность результатов не гарантируется (яркий пример - в таких условиях часты сильные отклонения текста от центра балона). Хороший тон - всегда аккуратно подбирать оптимальные размер текста и объёмы фраз.)

Расстояние от слова до края балона вычисляется на основе ограничивающего слово прямоугольника (то есть, без учёта формы крайних букв). Расстояние между словами, а внутри одного слова - между буквами, имеющими разный шрифт или размер, также определяются на основе ограничивающего букву прямоугольника.
Расстояния же между буквами одинакового шрифта и размера подгоняются, исходя из формы букв, как и во всяком приличном обществе (например, "/А" займёт меньше места, чем "\А"). К знакам препинания это не относится.

Шрифты: хотя истинная высота букв и подгоняется тщательно, на основе анализа матрицы буквы "Ю", но к положению букв по высоте внутри матрицы это не относится. Поэтому старайтесь подбирать в качестве жирного и курсива шрифты, у которых позиция по вертикали и высота букв в матрице идентичны с таковыми у основного - иначе они у вас будут "плясать". По этой же причине не стоит злоупотреблять смешением разных шрифтов и размером в одном абзаце - настройка выравнивания слов по вертикали планировалась, но так и не была доведена до ума.

Авторасстановка переносов: в первую очередь учитывайте, что программа никогда не переносит по тем тире, что уже есть в слове, или близко к ним. Вы всегда можете вставить необязательный перенос вручную, воспользоваавшись тегом "%-", или вообще запретить автоматические переносы (см. соотв. команду)

Формат *.manga файла:

..оный состоит из последовательно, друг за другом расположенных записей. Каждая запись может быть либо командой (формат: Команда(параметры) ), либо описанием страницы (формат: %Имя_страницы(команды и балоны) ).

Наличие скобок после каждой команды или описания страницы обязательно, поэтому там, где у команды нет параметров (или для страниц, в которых нет ни звуков, ни балонов) ставятся пустые скобки.

Комментарии: это строки, начинающиеся с точки с запятой (пробелы не в счёт). В конце строки комментарий добавить нельзя! (это издержки упрощённого синтаксиса).

Разбиение на строки: в основном пофиг, парсер всё равно склеивает строки при чтении, но с одним исключением: внутри балона перенос строки трактуется, как тег %А (и, соответственно, начинает новый абзац).
Ещё надо сказать, локализация ошибок производится с точностью до блока параметров, так что, если параметры команды "размазать" на несколько строк, то при указании ошибки парсер скажет "Ошибка где-то в строках от А до Б, точнее сами смотрите."

Пробелы в командах и между ними, параметрами, в именах команд и параметров: пофиг. Только внутрь имён файлов не пихайте - и всё будет в ажуре. В имени команды или ьекстуры любое количество подряд идущих пробелов, и переносов строки и знаков подчёркивания ("_") считается за один пробел.

Буква "ё" в именах команд и текстур: программа различает её с буквой "е" - будьте внимательны!

Балоны: внутри описания страницы, просто текст в скобках. Пробелы трактуются примерно так же, как и в HTML коде - в начале и конце абзаца игнорируются, между словами более одного пробела трактуется, как один пробел, неразрывные пробелы считаются обычными. Чтобы вставить неразрывный пробел, используйте тег %Е. Перенос строки трактуется, как конец абзаца.

Команды до и между описаниями страниц действуют по принципу "отсюда и до конца файла, если не будет ниже отменено/изменено другой командой".

Команды внутри описаний страниц делятся на те, которые действуют для всей данной страницы (применяются один раз, до начала звуков и балонов), и те, немногие, что действуют по принципу "отсюда и до конца страницы". Подробнее - см. описания самих команд.

Парамаетры, задающие имена файлов: указывать расширение не имеет смысла - оно всё равно принудительно подменяется на то, которое программа сочтёт нужным ( .manga для командного файла, .png для сканов и шрифтов). Путь если и указывать, то относительный той директории, где лежит главный *.manga файл.
Да, и все пробелы в начале/конце имени файла, естественно, игнорируются.

Параметры, задающие цвет: либо "%<яркость>", где <яркость> - целое число от 0 до 255, либо "%<красный>%<зелёный>%<синий>", где все - целые от 0 до 255. (в чёрно-белом режиме трактуется как яркость=0.5*зелёный + 0.3*красный + 0.2*синий).
Пример: текстура(розовый, %255%120%190)

 

 

Описания команд:

Манга()
Должна стоять первой.
Параметр - имя папки, куда будет складывать готовые сканы (не может совпадать с папкой, где лежат *.manga файл и исходники!). Папка должна уже существовать, или воплей не оберётесь. Если имя папки не содержит имени диска (в Виндовсе) или не начинается с "/" (в Линуксе), то оно считается относительным той папки, где лежит *.manga файл.

Конец()
Должна стоять последней.

%<имя страницы>()
Описывает одну страницу манги. Имя картинки со сканом получается добавлением <имени страницы> к текущему префиксу имени файла.
Параметры: последовательность допустимых в странице команд
Применяется: последовательно с другими страницами и командами.
Пример: %019(мощность_очистки(0)звук((чёрный)(белый, 2)))

Префикс имени файла()
Задаёт префикс (т.е. начальную часть) имени файла, к которой будут добавляться имена страниц для получения полных имён файлов.
По умолчанию - пустая строка.
Применяется: в любом месте между страницами.

Шрифт()
Параметры - имена от 3 до 10 файлов через запятую. Первые три обязательны, используются как Нормальный, Жирный и Курсив. Формат шрифта: картинка 2048х2048, буквы чёрные на белом, располагаются построчно в ячейках 128х128, кодовая страница Windows-1251, яркость фона не менее 250. Разрешение картинки может быть и меньше, но тогда она будет отмасштабирована до 2048х2048, а контраст увеличен, чтобы сохранить резкость контуров.
Применяется: один раз, до начала описания страниц.

Чёрно-белые сканы()
Задаёт работу с чёрно-белой мангой (подразумевается по умолчанию). Разметка балонов и звуков может храниться в самом скане, но если найдёт файл с разметкой, то возьмёт её оттуда.
Параметры: нет.
Применяется: в любом месте между страницами, или один раз в странице.

Цветные сканы()
Задаёт работу с цветной мангой. Разметка балонов и звуков для оной обязана храниться в отдельном файле, имя которого получается добавлением к имени скана справа символа подчёркивания "_" (до расширения). Если такой файл есть, то из самого скана берётся только альфа. Если не найдёт файл с разметкой, то заорёт, и остановится (А вы как думаете, как оно должно в цветном скане вычленять разметку цветом?..)
Параметры: нет.
Применяется: в любом месте между страницами, или один раз в странице.

Размер шрифта()
Задаёт размер (высоту) текста в пикселях. Фактическую высоту букв шрифта в матрице программа определяет на основе анализа заглавной буквы "Ю". При масштабировании картинки заданное значение изменится пропорционально её размеру.
Параметр - целое число от 5 до 100. (по умолчанию 17)
Применяется: где угодно.

Минимальный размер шрифта()
Задаёт минимальный размер (высоту) шрифта в пикселях, ниже которой программа пытаться уменьшать не станет, а заорёт, что не лезет, мол. При масштабировании картинки заданное значение изменится пропорционально её размеру.
Параметр - целое число от 5 до 100. (по умолчанию 8)
Применяется: до описания балонов.

Допустимое сжатие текста()
Задаёт максимально разрешённое сжатие по горизонтали (в процентах) для подгонки текста в балоне. Но масштаб по горизонтали никогда не будет меньше вертикального масштаба при минимально допустимом размере букв.
Параметр - целое число от 0 до 70 (по умолчанию 33)
Применяется: до описания балонов.

Свойства текста()
По синтаксису абсолютно идентична команде Звук() (см. ниже). Задаёт параметры заливки и обводки для текста во всех балонах, следующих за этой командой.
Применяется: где угодно.

Межстрочный интервал()
Задаёт межстрочный интервал, в долях высоты самой высокой буквы в строке. Не рекомендуется ставить значения ниже заданного по умолчанию - возможно обрезание букв и знаков препинания краями балона (это не считая слипания строк).
Параметр: число от 0.5 до 5.0, по умолчанию 1.33.
Применяется: в любом месте между страницами, или один раз в странице.

Запретить автопереносы()
Запрещает автоматический перенос слов (не влияет на необязательные переносы, заданные тегом "%-").
Параметры: нет.
Применяется: в любом месте между страницами, или один раз в странице.

Минимальная длина слова для автопереноса()
Задаёт минимальную длину слова для автоматической расстановки необязательных переносов.
Параметр: целое число от 3 до 100. По умолчанию 7.
Применяется: в любом месте между страницами, или один раз в странице.

Отвращение к переносам(), Отвращение к сжатию(),
Отвращение к нецентровке(), Отвращение к коротким строкам()

Управляют поведением программы при подгонке текста в балонах (довольно мощный инструмент). Чем больше отвращение к конкретному виду искажений, тем больше программа старается их избегать. Под сжатием здесь имеется в виду сжатие текста (см. команду "Допустимое_сжатие_текста()"), а под нецентровкой - отклонение средней точки текста от средней точки балона. На переносы и сжатие более радикальное влияние оказывают команды "Допустимое_сжатие_текста() и Минимальная_длина_слова_для_автопереноса()", вводящие прямые ограничения.
С оговорками: 1). Все сравнения производятся всегда при одном и том же масштабе, 2). избегая одного (например, переносов), увеличиваешь другое (сжатие, например), и 3). Как бы ни было велико отвращение, всегда будет выбран вариант, который лезет в балон без уменьшения высоты букв.
Параметр: число от 0 до 10.0, по умолчанию 1.0
Применяются: в любом месте между страницами, или один раз в странице.

Прозрачные балоны()
Балоны не будут заполняться фоновым цветом, позволяя накладывать текст прямо на картинку. Надеюсь, не надо объяснять, что разметка в таком случае должна лежать в отдельной картинке даже для чёрно-белой манги, или получится полная какашка?.. Впрочем, никаких проверок сама программа не производит.
Параметры: нет.
Применяется: где угодно.

Типовые балоны()
Задаёт для балонов белый цвет фона и чёрный текст без обводки.
Параметры: нет.
Применяется: где угодно.

Типовые негативные балоны()
Задаёт для балонов чёрный цвет фона, и белый текст без обводки.
Параметры: нет.
Применяется: где угодно.

Фон балонов()
Задаёт цвет фона, которым будут закрашиваться балоны.
Параметр: цвет (см. об описании цвета)
Применяется: где угодно.

() или Балон()
Сами балоны размечаются красным, в порядке убывания яркости (но не ниже 30). Внутри текст балона управляется следующими тегами (обязательно заглавными буквами):
 - это вертикальный балон, текст идёт слева направо и сверху вниз, всё выровнено по центру
 - это хардкорный балон, текст идёт сверху вниз, справа налево, выровнен по верхнему краю
или просто перевод строки - конец абзаца
 - увеличить размер букв до конца абзаца
 - уменьшить размер букв до конца абзаца
 - вернуть текст в норму и выбрать 0-й шрифт
и %1 - выбрать жирный (1-й) шрифт
и %2 - выбрать курсив (2-й) шрифт
%0 .. %9 выбрать соотв. шрифт.
%- - необязательный перенос. Т.е. слово может быть перенесено по этому месту на следующую строку, со вставлением тире... Учитывайте только, что из-за несовершенства алгоритма, при отсутствии переноса растояние между буквами в этом месте может оказаться несколько больше, так как определяется не по форме букв, а по ограничивающим прямоугольникам. С обычным шрифтом незаметно, а вот с курсивом...Постараюсь исправить в будущих версиях.
 - вставить картинку. Должен сопровождаться именем файла в скобках (или именем текстуры, ассоциированной с именем файла). Картинка далее трактуется по тем же правилам, что и буква шрифта, отсюда она должна должна состоять из чёрных линий на белом фоне. Изначально вставляется в том же масштабе, что имеет скан (1:1, если его размер не изменялся), но поскольку трактуется как буква, на неё действуют теги и и масштабирование текста при подгонке. И не забудьте, что на картинки действует ограничение на минимальный размер букв, так что если вставите какую-нибудь малю-усенькую закавывчку, то получите перманентную ошибку "текст не лезет в балон".
 - выравнивать текущий абзац по левому краю (по верхнему д/вертикальных балонов). Эта группа тегов действует для всего абзаца, но применён будет последний из встреченных в абзаце.
 - .. по правому краю
 - .. по центру
 - неразрывный пробел
%[ - открывающая круглая скобка
%] - закрывающая круглая скобка
%/ - символ процента("%")
О разметке балонов в скане см. соотв. раздел.
Применяется: только внутри страниц.

Для конченых отаку()
Все балоны обрабатываются как если бы в них стоял тег %Х (текст идёт сверху вниз справа налево)
Параметры: нет.
Применяется: до начала описания страниц.

Давить зерно()
Служит для давли зернистости (имеющейся в цветных картинках из-за особенностей типографской печати) в сканах высокого разрешения, полученных прямо со сканера. Фильтр работает, но результаты даёт не очень хорошие - если вы не планируете уменьшать картинку раза минимум в два, лучше почистите сами в Фотошопе, или найдите сканер получше (а не как мой антиквариат, к которому весь софт прилагался под Windows 3.11).
Фильтр немного похож на "Selective blur" в Фотошопе, но действует несколько по другому. Сначала выделяет в картинке контуры, игнорируя линии тоньше заданного параметра (то есть, при параметре 3, все линии толщиной 1 и 2 пикселя отправятся лесом), затем размывает всё, с чем они не пересекаются. Отсюда, параметр надо подбирать не больше толщины самых тонких линий в скане. Например, для "Шуны" (прибл. 2500х1800 на 300dpi ) пределом оказалось 3.
Параметр - целое число от 2 до 5
Применяется: в любом месте между страницами, или один раз в странице.

Не давить зерно()
Выключает фильтр давли зернистости.
Параметры - нет
Применяется: в любом месте между страницами, или один раз в странице.

Мощность очистки()
Задаёт мощность фильтра против грязи и JPEG артефактов в контурных рисунках (0 - выключен). Подбирайте так: измерьте яркость наиболее "ядрёного" артефакта, вычтите из 255, и берите в качестве значения мощности очистки. Когда включён, проводит сначала операцию, аналогичную "Auto levels" из Фотошопа. На цветных сканах и сканах с плавными переходами тонов неэффективен - я создал его, в основном, для "борьбы" со сканами к 24 тому "Ранмы", которые какой-то извращенец сначала сжал в JPEG, а потом перегнал в 16-цветный GIF... Представьте себе, что получилось в результате...
Алгоритм: "если яркость пикселя отличается от белого(чёрного) меньше, чем на заданную величину, и все его соседи такие же, то установить этот пиксель в белый(чёрный), иначе не трогать"... Таким образом, те пиксели. что составляют часть более тёмной линии, всегда сохраняются (какими бы блёклыми ни были), а одиночные, или скучкованные с подобным же "мусором" затираются.
Параметр - целое число от 0 до 100 (по умолчанию 0)
Применяется: в любом месте между страницами, или один раз в странице.

Текстура()
Служит чисто для удобства - задаёт имя текстуры, и сопоставляет ему имя файла либо значение цвета, для последующего применения в командах Звук(), Свойства_текста(), и т.д. Можно описать ту же текстуру ещё раз, предыдущее определение будет забыто.
Параметры: через запятую имя текстуры и имя файла либо значение цвета (см. об обозначени цвета).
Пример1: текстура(белый, %255)
Пример2: текстура(сеточка, _screentone-halftone)
Применяется: в любом месте между страницами.
Замечание: программа трактует параметры таким образом, что если заданная строка не совпадает с именем ни одной текстуры, то она считается напрямую введённым именем файла - если вы, например, определите текстуру "зелёный", а потом в описании звука напишете "зеленый", то програма будет ругаться не на неизвестное имя текстуры, а на ошибку чтения из файла "зеленый.png". А если такой файл и вовсе есть - всё, абзац, сушите вёсла

Звук()
Производит заливку и обводку контурами одного звука, размеченного зелёным (оный может состоять из неограниченного числа букв, и фактически включать все одинаковые по стилю звуки на этой странице - лишь бы они были одинаково зелёными). Звуки обрабатываются в порядке убывания зелёности
Параметры: от одного до неограниченного количества описаний контуров (по три параметра в скобках, через запятую).
Описание контура: (текстура, радиус, размытость). Параметры радиуса и размытости можно опустить - тогда будут использованы значения по умолчанию.
Текстура: либо имя файла с текстурой, либо имя ранее описанной текстуры, либо цвет (см. об обозначени цвета). Текстура по масштабу привязана к размеру исходника (без учёта обрезания по углам!), и при его масштабировании изменится в соответствующее число раз.
Радиус: для первого контура (описывающего сам звук) от -10 до 30 (отрицательные значения откладываются вглубь звука от его границы, позволяя в разумных пределах утончать слишком жирные звуки или добавлять внутренние "рюшечки", но эта фича замедляет обработку и чуть-чуть искажает контуры, так что для мелких звуков непригодна), для остальных - от 0.01 до 30. По умолчанию 0 для первого и 1 для остальных.
Размытость: в пикселях, от 0 до 20. По умолчанию 0.7. (внимание! каждая целая единица автоматически увеличивает радиус на единицу!) Замечание: размытость границы самого звука и первого слоя обводки очень сильно зависит от того, насколько чёткие границы у звука в скане - ибо значения для радиуса от 0 до 1 не вычисляются на основе расстояний, а берутся напрямую из степени зелёности разметки.
Пример: звук((песок,,.3)(чёрный, 1, .3)(белый, 1, .3)(чёрный,1, .3))
О разметке звуков в скане см. соотв. раздел.
Применяется: только внутри описаний страниц, до балонов.

Глубина цвета()
Задаёт разрядность выходного PNG файла в битах. Соответственно, 2 бита - 4 градации яркости, 4 бита - 16 градаций, и 8 бит - 256 градаций. Для цветных сканов молча игнорируется (глубина цвета всегда 24).
Параметр - целое число 2, 4 или 8 (по умолчанию 4)
Применяется: в любом месте между страницами, или один раз в странице.

Минимальная ширина(), Максимальная ширина(),
Минимальная высота(), Максимальная высота()

Задают ограничения по размеру картинки. Если не вписывается в заданные пределы, то будет отмасштабирована.
Если минимальные и максимальные границы задают несовместимые размеры - программа заорёт, и остановится.
Параметр: целое число от 200 до 4100
Применяется: в любом месте между страницами, или один раз в странице.

Снять ограничения по размеру()
Снимает все установленные вышеперечисленными командами ограничения по размеру. (фактически, минимальные ширина и высота устанавливаются в 200)
Параметры: нет.
Применяется: в любом месте между страницами, или один раз в странице.

Метод замазки()
Параметр: название метода. По умолчанию "Хитрая".
Применяется: в любом месте между страницами, или один раз в странице.
"Простая" - трасировкой лучей до краёв прозрачной области, без учёта контуров.
"Жёсткая" - то же, но даёт менее размытый результат - хорошо по краям замазываемой области, но плохо в центре, куда размазываемые цвета сходятся, как в точку.
"Кружавчиками" - даёт весьма размытый и невнятный результат (что во многих случаях и надо), вокруг краёв замазываемой области как бы расходится рябь.
"Улучшенная" - та же трассировка лучей, но с учётом контуров и их пересечений с границами замазываемой зоны. Даёт довольно размытые результаты.
"Хитрая", "" и "" - пытаются проанализировать направление штрихов, пересекающих границу замазываемой зоны, и продолжить их. В текущей версии (0.96, бета) находятся ещё в ранних стадиях разработки, и дают весьма посредственные результаты, хотя времени затрачивают крайне много (порядка полутора часов на скан). Пока что не рекомендуются к применению - часто глючат...

Качество замазки()
Параметр: целое число от 1 до 100, по умолчанию 25.
Время замазки практически точно пропорционально качеству, так что, если зададите 100 - можете смело идти обедать... Или гулять... Пешком до Пекина... Короче, вы меня поняли...

Замазывать в балонах()
Применяется в цветной манге, когда надо замазать старый текст в прозрачном балоне, а вручную его ластиком размечать лень. Заданные цвета будут замазаны только в пределах прозрачных балонов, следующих за командой. Следите, чтобы внутри балона не было элементов картинки, сходных поо цвету с текстом, или замажет и их тоже!
При обработке чёрно-белой манги молча игнорируется.
Параметры: неограниченное число описаний из трёх параметров в скобках: (цвет, погрешность, радиус)
Цвет: (см. об обозначении цвета). Цвет старого текста, который нужно замазать
Погрешность: целое число от 0 до 255, по умолчанию 40. Определяет границы отклонения от заданного цвета.
Радиус: целое число от 0 до 10, по умолчанию 2. Снаружи к выделенной зоне будет добавлен запас из стольких пикселей. (Никто ведь ещё не видел текста с идеально чёткими краями, нэ?)
Применяется: где угодно.
Пример: замазывать в балонах ((%0%255%255,,2)(ядовито розовый, 30, 5))

Не замазывать в балонах()
Отменяет предыдущую команду.
Параметры: нет.
Применяется: где угодно.

Черновик()
Служит для отладки, когда вам надо по-быстрому подобрать параметры звуков и текста балонов. Все команды относящиеся к замазке и давле зерна будут проигнорированы, и будет применена сверхбыстрая черновая замазка (тупым размазыванием по горизонтали). Причём, переделаны будут только те страницы, у которых измелилось что-нибудь в звуках или балонах, или датах файлов, уже готовые страницы затронуты не будут!
Параметры: нет.
Применяется: до начала описания страниц.
Аналог ключа командной строки -d

Чистовик()
Практически, командует включить суперсэмплинг х2. Улучшает качество оформления звуков и текста, но учетверяет необходимый объём памяти и время обработки. Имеет смысл применять, если сканы у вас не очень велики (порядка 1000...1500 пикселей). Если размер исходного скана по горизонтали или вертикали больше 2049 пикселей, а вы не планируете его потом уменьшать, то может произойти лёгкое замыливание (так как размеры ограничены 4100 пикселями). Увеличивает вдвое относительно размера выходной картинки, так что если у вас исходник и так вдвое (или более) больше результата, то эффекта от этой команды не будет.
Параметры: нет.
Применяется: до начала описания страниц.
Аналог ключа командной строки -r

Запретить пнг()
Отладочная. Запрещает использование PngLib. Записывать результаты программа будет в BMP файлы с нулевой компрессией (8 или 24 бит), а читать - только из TGA. Если TGA файла нет - пожалуется, что не найден, и остановится, даже если там есть PNG.
Параметры: нет.
Применяется: до начала описания страниц.
Аналог ключа командной строки -x

 

Ограничения:

Память программа использует крайне неэкономно (больше 20 байт на пиксель), и для обработки типичного скана 800х1200 требует около 30 мегабайт (и около 50 для разворота 1600х1200). Соответственно, считайте: для комфортной работы с мангой разумных размеров нужно минимум 128 мегабайт памяти. Для чистового режима и 256 может оказаться мало.

Размеры картинки: зашитый в программу предел - 4100х4100 (бррр!...) но для работы с такими монстрозностями желательно иметь минимум 512 мегабайт памяти, и вагон терпения (или очень быстрый процессор).

Размеры звуков и балонов: теоретически неограничены, но если они очень большие, и с сильно размытыми краями, это может вызвать переполнение в рекурсивном алгоритме, и программа с воплем остановится. (пришлось ввести искуственное ограничение: оно так и так падало с "Unknown run-time error 202" - видать, чересчур интенсивное использование рекурсивного алгоритма вызывает несварение у той части RTL, которая отвечает за стек, и вместо его расширения она просто дохнет... Да, я не говорил ещё, что вся эта радость сделана при помощи бета-версии компилятора FreePascal с соответственно бета-версией RTL?..)

Гигагерцы: чем больше, тем лучше. В основу всех алгоритмов положены удобство и скорость разработки, быстрота при этом отправилась куда-то густым лесом. Например, обращение к каждому пикселю идёт через вызов виртуального метода... (что, страшно?.. это я так двумерные динамические масивы через классы реализовал). Ну хоть парсинг почти мгновенный, и перестройка только действительно изменившихся страниц оччень хорошо помогает забыть об этих проблемах (ну, по крайней мере, со второго запуска..)

(Для сравнения: на моей машине (Duron-800, 256 RAM) обработка одной страницы 800х1200 без использования автозамазки азанимает около 10 секунд (и от пары минут до полутора часов с автозамазкой, в зависимости от метода и мощности). Однако, это всё очень сильно зависит от толщины обводки и размеров звука. Например, обработка тестово-грузящей картинки (4000х4000, с разлапистым звуком во всю ширь, с предельной толщиной обводки 30 и отрицательным начальным радиусом) заняла около 10 часов.)

Баги:

1. Сохранение цветных сканов в *.BMP при нечётной ширине даёт на выходе полную какашку... Неприятно, но не смертельно - исправлю к версии 0.99.

2. Старые версии IrfanView "не дружат" с 2-х и 4-х битными PNG файлами, созданными Автоматоном, показывают белый в них как светло-серый. Это баг самого Ирфана - все браузеры и графические редакторы видят эти файлы нормально. Обновите свой Ирфан.

3. Автозамазка "хитрая" иногда глючит... Но она, с другой стороны, недоделанная...

А вот, пожалуй, и всё. Больше известных мне багов в программе нет - удавил всех насмерть...

Пример:

(обратите внимание на использование тега "%Ф" на 12 странице: так можно вставлять нестандартные элементы оформления, например "". И имейте в виду: хоть исходно эта картинка и чёрная на белом, но программа, используя её, вычленяет чёрный контур из белого фона, и далее цвет рисунка будет такой же, как и у остального текста. (и все изменения толщины, и обводка тоже!)

манга(output)
префикс имени файла(herb-saga-)
шрифт(manga, manga-bold, manga-italic)
мощность очистки(50)
текстура(чёрный, %0)
текстура(белый, %255)
текстура(песок, _screentone-sand)
текстура(сеточка, _screentone-halftone)
текстура(рашпиль, _screentone-halftone-dark)
текстура(аканэ, _text_akane)
глубина цвета(4)
;чистовик()
допустимое сжатие текста(25)
;отвращение к переносам(2)
;для конченых отаку()
размер шрифта(15)
%012(
  звук((рашпиль,-1,.99)(песок,1)(белый, 2))
  (Эй, Рёга!)
  (Ни фига себе!)
  (Да он в полной отключке!)
  (Эй! Что тут случилось?)
  (%Б%ЖРЁГА!)
  (%Ф(_text_test))
  (Эй, свинтус!)
  (Чем тебя так приложило?)
  (Фанат%-ским перево%-дом, что-ли?)
  (Да уж,)
  (хорошо, что нас лицензировали!)
)
конец()