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

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

Оффлайн 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

                                          Оффлайн Dimon_II

                                          Обновление: поддержка JPEG:
                                          - степень сжатия настраивается;
                                          - пакетный рендеринг в JPG ;
                                          - опционально PDF с JPEG-компрессией для уменьшения размера.
                                             
                                            Поблагодарившие: pAnAp

                                            Оффлайн pAnAp

                                            в папке "генератор" пример проектов декарда, для раскладки на листы (на примере карт осквернённого грааля)
                                            https://drive.google.com/drive/folders/1Y0XvtVe7XHgBJ93FlmbMgmgvtQumaxaD

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

                                              Оффлайн Dimon_II

                                              Доработка: (продолжаю отступать от стандарта HTML)
                                              В обработчике foreignObject для тэгов <p> и <br> сделал обработку атрибутов dx и dy.

                                              Их назначением при переходе на новую строку можно подправить межстрочное расстояние и отступ.
                                              <p dy="10"/> на 10 пикселей увеличит для этой строки межстрочный интервал
                                                 

                                                Оффлайн Dimon_II

                                                Major BUGFIX: Иногда удаляется файл шаблона.
                                                Если имя сохраняемого файла совпадает с именем проекта, при пакетном рендеринге автоматическая очистка временных файлов могла удалить шаблон.

                                                Доработка: При создании крестики метки реза уменьшены в размерах и сделаны толще.

                                                « Последнее редактирование: 06 Декабрь 2020, 18:16:41 »
                                                   

                                                  Оффлайн Dimon_II

                                                  Новая «тестовая» сборка:
                                                  Особенности:
                                                  - возможность масштабировать карты в пакетном рендеринге;
                                                  - предварительный просмотр размещения карт на листе;
                                                  - использовать растровое изображение (не только SVG) как рубашку карты.


                                                  DeCardBuild.zip
                                                     

                                                    Оффлайн Dimon_II

                                                    Новая форма для поиска нужных глифов шрифта

                                                       

                                                      Оффлайн Dimon_II

                                                      Minor bugfix:
                                                      - единицы, кроме пикселей, вызывают ошибку PDF-рендеринга.

                                                      New features:
                                                      - опции JPEG отключаются в зависимости от формата файла;
                                                      - обводка (outline) делается и для размера <default> ;
                                                      - улучшено копирование глифов шрифтов.
                                                         

                                                        Оффлайн Dimon_II

                                                        Сборка с новой версией библиотеки рендеринга с какими-то багфиксами...

                                                        (иногда переставала рендерить и требовался перезапуск, м-б оно?)
                                                           

                                                          Оффлайн Dimon_II

                                                          Обновление:
                                                           - функциональность тестовой версии добавлена в основной проект;
                                                           - на первой закладке справа внизу добавлен выбор rendering Engine - Skia/Cairo. (запоминается в свойствах проекта)

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

                                                            Оффлайн Dimon_II

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

                                                              Оффлайн Dimon_II

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

                                                              И очень-очень полезная фича - поиск по SVG стал умнее: "слово целиком" теперь означает "искать в имени", а вот без этой опции текст ищется во всех свойствах, т-е  можно искать "[55]" (в каких объектах используется 55-ячейка таблицы) или по названию шрифта.
                                                              Сделана относительно нормальная сортировка в таблице. Если не хотите менять порядок карточек - перед сохранением или пакетным рендерингом пересортируйте по столбцу №.

                                                              DeCardSRC.zip - не полностью рабочие исходники, сорри
                                                                 

                                                                Оффлайн Dimon_II

                                                                Исправление настройки Z-order.
                                                                   

                                                                  Оффлайн Dimon_II

                                                                  Проект полностью переписан на Delphi 10.3 Community Edition с использованием только стандартных и бесплатных компонентов. Исходники выложены на github.

                                                                  github releases
                                                                  « Последнее редактирование: 04 Декабрь 2021, 13:15:01 »
                                                                     
                                                                    Поблагодарившие: tikitavy, zloib, pAnAp, elricbk, capsmolet, ChupVulf

                                                                    Оффлайн Dimon_II

                                                                    github: Decard-2022.zip
                                                                    Доработки программы по результатам "отпуска в феврале" :
                                                                    Множество улучшений и исправлений:
                                                                    - полноэкранная пипетка цвета
                                                                    - переворачивание обратной стороны дуплекса
                                                                    - в редакторе ячеек быстрая вставка Common по Ctrl+1-9
                                                                    - блочное выделение (copy-paste) в таблице
                                                                    - поиск и выделение объектов по правой кнопке в превью (Ctrl - реверс)
                                                                    - новая версия библиотеки рендеринга со своими улучшениями
                                                                    - поддержка пользовательских шрифтов win10 (dll)
                                                                    - поддержка фильтров-функций (dll)
                                                                       
                                                                      Поблагодарившие: Sergius, pAnAp, capsmolet, suurtoll

                                                                      Оффлайн Dimon_II

                                                                      Ообновление 14.05.2022
                                                                      Github: последняя сборка
                                                                      В программу добавлен редактор кривых (path.d  атрибут) и готовый фильтр Эмбоссинг.
                                                                         
                                                                        Поблагодарившие: tikitavy, pAnAp, koros, postpersonality

                                                                        Оффлайн Dimon_II

                                                                        Новый релиз 07.06.22


                                                                        В foreignObject сделана поддержка нестандартного тега html - прямоугольного объекта, содержащего html с возможностью вертикального выравнивания и автоматического масштабирования.
                                                                        <html width=... height=...>
                                                                        Редактор ячеек:
                                                                        По Ctrl-Space предлагается автодополнеие из списка макросов.
                                                                        Улучшен заголовок - показан заголовок выбранного столбца и элементы SVG, из которых взяты макросы
                                                                           
                                                                          Поблагодарившие: tikitavy, eeeio, pAnAp