LINUX.ORG.RU

Компактная библиотека для растровой графики для C++.

 , ,


1

6

Посоветуйте subj?
Надо что-то, что может работать со слоями и примитивами.
Т.е. наложить один битмап на другой с использованием маски/альфаканала/етц и нарисовать сверху примитивы и текст.
Желательно на C++ и с возможностью статической линковки.
Ну и сохранить это всё в один зи форматов по выбору, png/jpeg/tiff/etc. Всё это должно работать без каких либо гуёв и 3d ускорения.

GTK и Qt мне кажутся несколько оверкилл.
Да, ImageMagick сейчас используется, но без матов о некоторых его особенностях высказаться не могу.

★★★★★

Ответ на: комментарий от mos

Гольная сишечка?
Ну если ничего лучше не найду, то возможно и сойдёт.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от WatchCat

Типа йумор? А ещё я на Java пишу. И что?

А как же безопасность? Плюсишечка же устарела давно уже, а к тому же заставляет тебя добавлять в код баги и утечки памяти.

anonymous
()
Ответ на: комментарий от Serral

Она же векторная?
Да и тянет она много за собой - мезу, иксы, glib и пр.
Ладно там fontconfig и freetype, что естественно.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Включу-ка я опять фильтр на анонимов. Один хрен кроме шума ничего путного.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от mos

мнение людей - кто-то потерял машинку.

Видишь ли, проблема не в том чтобы что-то найти на гугле, а в том чтобы найти то что подходит под запросы.
Пока ни гугл, ни местные аналитики ничего не могли дать.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от WatchCat

умных онолитегов к умным отправеле
а меня к табе

mos ★★☆☆☆
()
Ответ на: комментарий от WatchCat

Она же векторная?

Растровая.

Да и тянет она много за собой - мезу, иксы, glib и пр.

Это настраивается при сборке - «–disable-xlib» и т.п. Я использую cairo на машинах без иксов, все работает.

Serral
()

нарисовать сверху примитивы и текст

текст

Вы же в курсе, что это самое сложное?

А так:

  • cairo+pango - собирать/использовать не на лине - дно.
  • Qt - самый удобный из всех, но жирный.
  • Skia - такая же жирная как и Qt, сборка похлеще любого кошмара, но самая быстрая и навороченная из всех.
  • Blend2D - самый простой/сырой/новый.
RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

собирать/использовать не на лине - дно.

Почему? На маке собирается ровно так же, как и на лине. На винде есть в репе:

https://www.nuget.org/packages/cairo_static/

Работает везде как надо.

П.С. Если текст простой, то pango необязателен.

Serral
()
Последнее исправление: Serral (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Там pango вшит? Ибо без него она бесполезна.

Вы сильно преувеличиваете. И для этого у меня есть основания в виде рабочего и давно продаваемого проекта

Serral
()
Ответ на: комментарий от RazrFalcon

А pango тащит пол линя.

$ .\vcpkg.exe depend-info pango
zlib:
bzip2:
libiconv:
libpng: zlib
dirent:
expat:
freetype: bzip2, libpng, zlib
gettext: libiconv
libffi:
pcre:
fontconfig: dirent, expat, freetype, libiconv
glib: gettext, libffi, libiconv, pcre, zlib
pixman:
ragel:
cairo: fontconfig, freetype, glib, libpng, pixman, zlib
harfbuzz[glib, ucdn]: freetype, glib, ragel
pango: cairo, fontconfig, freetype, gettext, glib, harfbuzz

18 пакетов…

fsb4000 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ох лол, ну я рад за вас. Если вам нужен только ASCII - то проблем конечно нет.

Этот юношеский максимализм… Не только ASCII.

Serral
()
Ответ на: комментарий от RazrFalcon

Не только ASCII.

Ну так попробуйте нарисовать الويب

Это вопрос не кодировки, а направления. Начертания слева-направо хватает для европейских языков и современного китайского с японским, других у нас пока не просили, а у нас нет амбиций внезапно ворваться на рынки ОАЭ или Израиля.

Serral
()
Ответ на: комментарий от RazrFalcon

Вы же в курсе, что это самое сложное?

Так для этого freetype есть, обычно все его и используют.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от Serral

Растровая.

А все говорят векторная. :/
Да и по апи там как-то всё странно.
Как-то с наскоку не вкурил.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от Serral

О какой кодировке идёт речь? Речь про text shaping, которого в cairo нет. А значит даже банальные умлауты работать не будут.

Я же говорю, если вам нужно выводить глифы друг за дружкой - cairo хватит. Если вам нужно рисовать текст - нужен pango, ну или как минимум harfbuzz.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Blend2D - самый простой/сырой/новый.

А вот за бленд2д спасибо,Гугль почему-то егр не выдал, но очень похоже на то что нужно. Завтра посмотрю.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Не знаю как Serral'у, а мне хватит простых однострочных надписей на русском/английском.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от WatchCat

А все говорят векторная. :/

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

Serral
()
Ответ на: комментарий от RazrFalcon

О какой кодировке идёт речь? Речь про text shaping, которого в cairo нет. А значит даже банальные умлауты работать не будут.

Ты или врешь или теоретизируешь, ибо умлауты и диакритики - это одно из первых, что я проверил.

Serral
()
Ответ на: комментарий от RazrFalcon

Ну в моём понимании растр/вектор отличается в том что первично и лежит в основе, так сказать. Но да, разница уж очень зыбкая.
И конечно правильней говорить о 2д, а не о растр/вектор.

WatchCat ★★★★★
() автор топика
Ответ на: комментарий от WatchCat

Ну из всех перечисленный я только его не использовал. Он вроде только год как зарелизился.

RazrFalcon ★★★★★
()
Ответ на: комментарий от Serral

Всё зависит от шрифта. Если шрифт содержит глифы уже с умлаутами - проблем не будет. Если нет - то привет ужас.

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

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Всё зависит от шрифта. Если шрифт содержит глифы уже с умлаутами - проблем не будет.

Если это про композицию - то в связке cairo/freetype это не делается автоматически. Не важно, есть такие глифы или нет, все зависит от входной строки и отрисовывается по разному. У меня она всегда нормализована через декомпозицию->композицию.

Если нет - то привет ужас.

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

Serral
()
Ответ на: комментарий от Serral

Буква с умлаутом может быть отдельным глифом, а может состоять из двух (не путать с композитными глифами). В первом случае может помочь банальный unicode normalization, во втором нужен шейпер, ака harfbuzz.

И я молчу про эмодзи и zwj/zwnj. harfbuzz почти 70 KLOC не просто так.

RazrFalcon ★★★★★
()

MGRX можешь посмотреть - http://www.fgrim.com/mgrx/#apps примеры приложений. Только это Си, не C++

The only MGRX dependencies are libjpeg (for reading and writing JPEG files) and libpng and zlib (for reading and writing PNG files)

SZT ★★★★★
()
Ответ на: комментарий от WatchCat

у меня там и sdl2 и sdl1.2 работает без проблем и без замены интерфейса, такчто мне пофиг))

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 1)
Ответ на: комментарий от anonymous2

у меня есть такое для lua самописное на гитхабе валяется

ну ссыль же

pihter ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.