Автор Тема: DeCard.exe: программа для дизайна/перевода/редизайна карточных игр.  (Прочитано 17938 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Dimon_II

Ообновление 07.06.2022
Github: Decard64
В программу добавлен редактор кривых (path.d  атрибут) и готовый фильтр Эмбоссинг.
Проект полностью написан на Delphi 10.4 Community Edition с использованием только стандартных и бесплатных компонентов.
Сборка win64.
Исходники выложены на github.

DeCardUTF.zip - проверочная сборка, с полной поддержкой юникода, доработана для совместимости с WINE. Особенность - в качестве rendering engine может выбираться Skia / EXE, сделано для совместимости - во втором случае рендеринг выполняется запуском отдельной программы с сохранением во временном каталоге. Не удалось на всех компьютерах добиться рендеринга вызовом DLL. Просьба пользователям - проверить оба режима.

DeCardLib.zip -  "Стабильная версия", с примером создания колоды обычных игральных карт.

На первой закладке справа внизу добавлен выбор rendering Engine - Skia/Cairo.
Рендеринг Skia не работает на некоторых компьютерах! Закономерность не выявлена... Просто ошибка внутри dll.
Skia (в отличие от Cairo) умеет использовать локальные шрифты и позволяет объектам image ссылаться на другие SVG-файлы.

Описание с пошаговым примером (видео ниже)
Видео создания колоды карт, заранее найдены картинки и готов файл со списком карт (clubs<tab>2, clubs<tab>3...hearts<tab>10...spades<tab>K).

DeCardLib.exe: программа для дизайна/перевода/редизайна карточных игр.
Позволяет создавать множество однотипных карт по шаблону, подменяя текст и картинки.

Интерфейс разделен на 4 закладки:
[Project]: выбор файлов, каталогов, настройка размера шаблона и пакетный рендеринг. Для готового проекта все операции - создание отдельных карт или компоновка их на лист выполняются на этой закладке.

[Card deck]: дизайн SVG-шаблона: добавление, копирование и удаление отдельных элементов SVG (текст, картинка, геометрический объект), изменение их свойств (цвет, шрифт, видимость,  ссылка на изображение).
Главная особенность этой программы - любые свойства объекта могут назначаться из текстовой таблицы, с помощью макроса [<номер столбца>]: [1], [2]...[21].
Для всех объектов (включая вложенные) доступен список замен: например,  в ячейке текстовой таблицы напишем текст "Получите [berries].", а в программе настраиваем замену: [berries]=<use src="#berry" width="60" height="50"/> Oтдельные картинки использовать просто, но для картинок в тексте и его форматирование требуется некоторые знания  HTML.
Для точного размещения элементов область карты может быть поделена на заданное число строк и столбцов с рамкой. Выделение прямоугольного блока в области просмотра используется только для первоначального размера новых объектов или назначается выбранному объекту кнопкой Size. Опытные пользователи могут вносить исправления в редакторе XML.
Оригинальный SVG не поддерживает автоперенос многострочного текста и картинки в тексте, для этого в программе сделана обработка внешнего объекта foreignObject, отображающего упрощенный HTML.
Доступно редактирование ячеек текстовой таблицы.
 
[Clipart]: из дополнительного SVG-файла отображается список элементов с возможностью их просмотра, незначительного исправления (масштаб) и объединение нескольких SVG файлов. Предназначен для хранения векторных элементов, используемых  многократно и в разных шаблонах.

[Preview]: рендеринг отдельных карт и элементов клипарта для просмотра, видимое изображение можно сохранить в файл. Есть редактирование ячеек текстовой таблицы.


SVG (от англ. Scalable Vector Graphics — масштабируемая векторная графика) — язык разметки
масштабируемой векторной графики, созданный Консорциумом Всемирной паутины (W3C) и входящий
в подмножество расширяемого языка разметки XML, предназначен для описания двумерной векторной
и смешанной векторно/растровой графики в формате XML.


Программа работает с изображениями в формате SVG и текстовой таблицей с разделителем <Tab> (поддерживается GoogleTable):
используя макросы [<№ столбца>] - [1],[2]...[xxx] подставляет значения ячеек текстовой
таблицы в отображаемый текст или SVG-атрибуты (цвет, видимость, размер шрифта, ссылка на изображение... любые SVG-атрибуты!).

Оригинальный SVG 1.1 не поддерживает автоперенос текста и картинки в тексте
(более поздние версии пока на уровне черновиков и для них нет движка рендеринга),
но DeCard обрабатывает это самостоятельно:

Для текста <text> с (нестандартным) встроенным тэгом <rect width="ширина" height="высота"/> выполняется атоперенос,
макрос [P] начинает новую строку, а если тексту добавить префикс [Z] - то делается его масштабирование (уменьшением шрифта).

Для HTML-объектов типа <foreignObject> выполняется преобразование в нативный SVG.
Если заданной высоты не хватает - выполняется вертикальное центрирование.
Обрабатываются следующие HTML-тэги:
<b>...</b> <i>...</i> <u>...</u>
<p>...</p> <br/> <hr/>
<div align="left / center/ right">...</div>
<font size="1..7" face="Arial / Comic Sans MS / ..." color="" text-indent="">...</font>
<img src="bitmap file" width="xxx" height="yyy"/>
<use src="#defs ref" width="xxx" height="yyy"/>
<use src="clipart.svg#ref" width="xxx" height="yyy"/>


SVG-шаблон может быть разработан в стороннем SVG(или текстовом)-редакторе, в самой программе для этого минимальные возможности.
Так же для любого тэга (со всеми его вложенностями) в программе работает блок замены текста:
Например - в текстовой таблице в ячейке для HTML-блока пишем макрос "Получите [berries].", а в программе настраиваем замену:
[berries]=<use src="#berry" width="60" height="50"/>
[resin]=<use src="#resin" width="60" height="50"/>
...


Программа написана на Delphi7, исходники прилагаются.
Автор: Дмитрий Яценко
yatcenko@gmail.com
(готов безвозмездно помочь с шаблонами)

Программа не требует инсталяции, достаточно распаковать архив.

Библиотека рендеринга
https://github.com/RazrFalcon/resvg
В каталоге с программой 32-битная версия библиотек.

Библиотека работы с цветовыми профилями
LittleCMS color engine


Описание формата SVG
https://www.w3.org/Graphics/SVG/



Post Merge: 23 Январь 2020, 12:13:52
Реализованные в Decard проекты этого форума:

Wingspan перевод-редизайн

Любительский перевод дополнений Инновации в стиле IELLO

Everdell

7 Чудес - редизайн карт в стиле 7WDuel

Gloomhaven

Редизайн Терраформинга
« Последнее редактирование: 07 Июнь 2022, 13:30:14 »
     

    Оффлайн Dimon_II

    Обновление программы (основной архив обновлён)
    Можно скачать только новый EXE-файл DeCard-EXE.zip

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


    Автосоздание: как слепить из отдельных карт PDF или текстуру для Tabletop Simulator.
    (альтернатива  скриптов к индизайну или испанскому pdfcartas)
     

    0 ) Подготовить папку с картами PNG/JPG/JPEG (подкаталог в каталоге с будущим проектом)
    1 ) Запустить программу
    2 ) Указать на закладке [Project] каталог с проектом (Project root)
    3 ) Указать каталог с картинками (Images)
    4 ) Нажмите кнопку Cards - будут созданы простой шаблон и список карт, размер от последней найденной картинки.
    5 ) Шаблон и контент можно сохранить, или придется создавать заново при перезапуске программы.
    6 ) Вернитесь на первую закладку
    7 ) Настройте формат файла, размер бумаги, DPIи расположение карт на листе (3х3,5х2, 4х4) в зависимости от размера карт и бумаги. Блок с картами будет в центре листа.
    8 ) Проект можно сохранить, или придется создавать заново при перезапуске программы.
    9 ) При нажатии на кнопку Process карты (все или заданный диапазон) будут обработаны
    10 ) Результат в папке Result - один PDF или набор файлов PNG/SVG

    ...не совсем интуитивно для новичка, но в целом очень просто
    « Последнее редактирование: 15 Июнь 2020, 09:18:03 »
       
      Поблагодарившие: Roompel, capsmolet, Alexlander

      Оффлайн wil_low

      жаль, что не на Qt...
         

        Оффлайн Dimon_II

        Программа(увы, что знаю - на том пишу) или рендеринг? 
        Движок (rendersvg.exe) можно и с использованием qt собрать
        https://github.com/RazrFalcon/resvg/releases
           

          Оффлайн Dimon_II

          Доработки интерфейса - упрощены иконки и переставлены некоторые тулбары.
             
            Поблагодарившие: weballin, grishkatz

            Оффлайн Dimon_II

            Последовательность действий для объединения  карт из отдельных файлов в PDF или листы PNG.
            « Последнее редактирование: 03 Март 2020, 13:25:47 »
               

              Оффлайн Dimon_II

              Кроме простого переноса-по-словам сущесвенно ускорена обработка больших текстов и добавлена возможность растягивать весь текст или только пробелы.
              lengthAdjust="spacing / spacingAndGlyphs"

              <div align="width" text-indent="30">...
                 

                Оффлайн Dimon_II

                обновление
                - minor bugfix: иногда был лишний перенос иконок в HTML-блоке
                - по двойному клику на полях ввода каталогов они открываются в explorer
                - для контроля правильности макроподстановок (в некоторых проектах сотни сокращений и замен) в редакторе ячейки можно сделать ReplaceAll - применив все замены выбранного объекта
                « Последнее редактирование: 27 Март 2020, 11:12:27 »
                   

                  Оффлайн Roompel

                  Сделайте хоть какой-то мало-мальский гайд, как собрать с помощью программы карты. Есть отдельные картинки карт, взятые из TTS, как программой их собрать по 9 на лист А4?
                     

                    Оффлайн Dimon_II

                    Сделайте хоть какой-то мало-мальский гайд, как собрать с помощью программы карты. Есть отдельные картинки карт, взятые из TTS, как программой их собрать по 9 на лист А4?
                    Несколько сообщений выше - картинка, где есть вся последовательность именно этого:
                    настроить пару каталогов, перейти на вторую закладку, сгенерить контент, вернуться назад и задать формат для сборки

                    или все сделать вручную - сделать текстовый файл со списком картинок, указать размены, создать новый шаблон и вставить в него один объект-картинку
                       

                      Оффлайн Dimon_II

                      Обновление программы:
                      - Добавление <mask/> и <clipPath/>  из главного меню
                      - Расширенный выбор меток обреза: рамка или кресты, по краю карты или по текущей рамке
                      - Выпадающий список значений для выравнивания картинки
                      - Мелкие исправления по размеру пробелов и масштабированию текста, если 1-е слово не помещается в строку
                      (все ссылки в первом сообщении)
                         

                        Оффлайн Dimon_II

                        Сделана не стандартная, но более удобная обработка свойства visibility вложенных объектов:
                        По стандарту, если группа невидимая, а ее элемент сделать "видимый" - то он должен отображаеться.
                        Исправлено - при назначении visibility=<не пустое> проверяеется видимость группы, и если группа невидимая, то элемент тоже будет невидимый.

                           

                          Оффлайн Dimon_II

                          Очередные доработки:

                          1. Заливка фона foreignObject:
                          свой тэг <bkg src="bitmap file" or any rect attributes />
                          Высота фона автоматически растягивается, если высота текста больше, чем высота фонового объекта.
                          Для фона-картинки рекомендуется правильно настроить масштабирование preserveAspectRatio.

                          Пример: добавить красный прямоугольник, на 10 пикселей выступающий вокруг текста(ширина текста 160):
                          <bkg fill="red" height="20" x="-10" width="180" y="-10"/>

                          2. Дополнительная обработка межстрочного расстояния для строк с картинками:
                          если встроенная в текст картинка выступает вниз от текста (смещена вниз при помощи dy и ее высота height+dy больше высоты текста), то автоматически увеличивается межстрочный интервал со следующей строкой.

                          3. Добавлена возможность сделать фиксированный межстрочный интервал, игорируя размер шрифта и картинок:
                          <div  line-height="normal / yyy">...</div>


                          Мелкие багфиксы, связанные с редактированием XML клипарта.
                             
                            Поблагодарившие: pAnAp, lost

                            Оффлайн Dimon_II

                            В меню создания объектов добавлены Preset filers - 4 готовых фильтра:
                            Shadow - тень
                            Glowing - размытый контур цветом объекта
                            Glow color - размытый контур выбранным цветом
                            Turbulence - сильное искажение

                               

                              Оффлайн Dimon_II

                              DeCardLib.zip
                              Выложена сильно переделанная версия с другим механизмом рендеринга и множеством улучшений:
                              - для рендеринга вместо отдельного приложения используется библиотека resvg.dll, что должно уменьшить подозрительность антивирусов;
                              - [Project] отказ от использования временных файлов, для поиска ошибок можно включить отдельной опцией их создание (но не использование) ;
                              - [Project] возможность назначить имена файлов для готовых карт и сборок;
                              - [Preview] отображается таблица с выбором карты для рендеринга;
                              - [Preview] добавлено сохранения видимой картинки;
                              - [Card deck] добавлено копирование (запоминание) объектов, в выпадающем меню Add предлагается запомненный объект;
                              - [Card deck] объектам text и foreignObject добавлен нестандартный атрибут decard-format для вертикального выравнивания (valign:top, valign:middle, valign:bottom);
                              - [Card deck] ниже редактра атрибутов выводится подсказка о выбранном обекте и свойстве.

                              Программа переименована DeCardLib.exe и требует новый набор библиотек.

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

                              (ссылки продублированы в первом сообщении)
                              DeCardLib.zip - новая серьёзно переделанная версия, с примером обычных игральных карт
                              Описание с пошаговым примером (видео ниже)
                              Видео создания колоды карт, заранее найдены картинки и готов файл со списком карт (clubs<tab>2, clubs<tab>3...hearts<tab>10...spades<tab>K).
                              « Последнее редактирование: 16 Июнь 2020, 15:24:29 »
                                 
                                Поблагодарившие: pAnAp

                                Оффлайн Dimon_II

                                Предупреждение пользователям Windows 10:

                                (Сторонняя) библиотека рендеринга загружает шрифты из:
                                C:\Windows\Fonts\

                                По умолчанию десятка устанавливает шрифты в пользовательскую папку:
                                C:\Users\<user>\AppData\Local\Microsoft\Windows\Fonts

                                Так что новые шрифты могут быть недоступны, и проблема с системой, установленной по другому пути.

                                https://stackoverflow.com/questions/55264642/how-to-force-win10-to-install-fonts-in-c-windows-fonts

                                Простите за неудобства...
                                   

                                  Оффлайн Dimon_II

                                  Minor bugfix:
                                   - не работало масштабирование foreignObject, если размер одного слова превышал ширину объекта;
                                   - исправлены глюки сохранения превью с выбором типа файла, иногда выбранное расширение игнорировалось;
                                   - убрано автоматическое изменение размера и координат копируемого объекта. Если это понадобится - оно делается кликом на кнопку Size.

                                  Обновлены файлы по ссылкам в первом сообщении.
                                     
                                    Поблагодарившие: xonix

                                    Оффлайн Dimon_II

                                    Изменения:

                                    1. Упрощен экспорт в PDF - файл формируется из готовых изображений размером в страницу.

                                    2. На закладке [Preview] добавлена возможность преобразовать изображение в цветовое пространство CMYK.
                                    Используется библиотека Little CMS color engine (lcms2.dll) и профили AdobeRGB1998.icc и CoatedFOGRA27.icc.
                                     
                                    « Последнее редактирование: 10 Ноябрь 2020, 16:48:25 »
                                       
                                      Поблагодарившие: tikitavy, pAnAp, xonix

                                      Оффлайн Dimon_II

                                      Обновлено:

                                      1. Для файлов PDF можно установить ограничение на количество страниц в файле, если оно превышено, создается новый файл.

                                      2. Добавлена обводка (outline) блока карт (цвет из svg.fill) и интервалы (Bleed) между картами для двойной резки.

                                      3. Добавлен второй шаблон для массового рендеринга - для рубашек карт, который должен использовать ту же таблицу. Шаблон рубашки может быть больше, чем лицевая сторона карты (до величины интервала).
                                         
                                        Поблагодарившие: pAnAp, capsmolet

                                        Оффлайн pAnAp

                                        3. Добавлен второй шаблон для массового рендеринга - для рубашек карт, который должен использовать ту же таблицу. Шаблон рубашки может быть больше, чем лицевая сторона карты (до величины интервала).

                                        спасибо за нововведения!

                                        пример получаемого pdf файла при раскладке карт новым функционалом декарда:
                                        одинарный рез
                                        двойной рез
                                           
                                          Поблагодарившие: ChupVulf