Первая статья из цикла, повествующего о том, ка киспользовать библиотеку cairo (и обертку wxCairo) с wxWidgets.
В этот раз речь пойдет о том, как собрать библиотеку cairo с помощью Visual C++ в Windows.
Для начала определимся, что нам нужно:
Устанавливаем Mozilla Build, распаковываем все библиотеки.
В переменных окружения прописываем пути к Visual Studio. Для того, чтобы все собралось успешно, необходимо, помимо Visual Studio установить Platform SDK.
DevEnvDir = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE FrameworkDir = C:\WINDOWS\Microsoft.NET\Framework FrameworkSDKDir = C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0 FrameworkVersion = v2.0.50727 INCLUDE = C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include LIB = C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib LIBPATH = C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB PATH = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages SDKDIR = C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\ VCINSTALLDIR = C:\Program Files\Microsoft Visual Studio 8\VC VSINSTALLDIR = C:\Program Files\Microsoft Visual Studio 8 VS80COMNTOOLS = C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\
Компилируем libpng и zlib
В папке, в которую мы установили Mozilla Build, запускаем скрипт start-msvc8.bat. В появившемся окне консоли переходим в папку, куда мы распаковали библиотеку pixman, и собираем ее командой
make -f Makefile.win32 CFG=release
После сборки переносим файлы библиотек и заголовочные файлы для zlib и libpng в папку с cairo.
В папке Cairo правим файл cairo-features.h:
/* Generated by configure. Do not edit. */ #ifndef CAIRO_FEATURES_H #define CAIRO_FEATURES_H #define CAIRO_HAS_FT_FONT 0 #define CAIRO_HAS_IMAGE_SURFACE 1 #define CAIRO_HAS_PDF_SURFACE 1 #define CAIRO_HAS_PNG_FUNCTIONS 1 #define CAIRO_HAS_PS_SURFACE 1 #define CAIRO_HAS_SVG_SURFACE 1 #define CAIRO_HAS_USER_FONT 0 #define CAIRO_HAS_XLIB_SURFACE 0 #define CAIRO_HAS_XLIB_XRENDER_SURFACE 0 /*#undef CAIRO_HAS_QUARTZ_FONT */ /*#undef CAIRO_HAS_QUARTZ_SURFACE */ #define CAIRO_HAS_WIN32_FONT 1 #define CAIRO_HAS_WIN32_SURFACE 1 #endif
В консоли MozillaBuild переходим в подкаталог src в папке с Cairo.
Собираем cairo командой
make -f Makefile.win32 CFG=release
Если при сборке будет необходима библиотека pixman-1.lib, то копируем ее в эту же папку и повторно запускаем сборку.
После сборки cairo нам будут необходимы следующие файлы:
В результате нам для работы понадобятся только файлы:
Введение Уже долгое время не пишу статьи о разработке, хотя сам процесс написания мне очень…
I can see that there is still a lot of topics at wxWidgets forums related…
I've just published the source code of wxToolBox component and a couple of sample apps at…
Microsoft released their Kinect SDK several days ago. So, for those wxWidgets developers who are…
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to…
Вдохновленнный читаемой нынче книгой My Job Went to India: 52 Ways to Save Your Job…
View Comments
А где же самое главное - зачем оно надо?
http://cairographics.org/
Cairo — программная библиотека, предназначенная для рендеринга векторной графики с независимым от оборудования API. Содержит примитивы для рисования двумерных изображений на различных платформах с использованием функций аппаратного ускорения там, где это возможно. Поддерживается вывод через X Window System, GDI, Syllable API, BeOS API, Mac OS X Quartz, OS/2,OpenGL-контексты (при помощи glitz), в локальный буфер изображения, PNG, PDF, PostScript, DirectFB и SVG.
http://linfoline.homedns.org/tutorial_cairo/Cairo%20Tutorial.html
А почему не AGG?
Еще есть wxArt2D.
Сам с ними не работал, но функционал сравнивал между всеми тремя. Поэтому и возник вопрос предпочтения.
Я не очень уверен в том что AGG - хороший выбор. Там заявлена поддержка X11 и Win32, ни слова про Mac OS. Возможно конечно под Mac OS юзать X11 SDK но это ж надо потом X11 Runtime вроде у юзера ставить, это не есть гут. Хотя вобще думаю надо пробовать, я с AGG тоже не работал.
wxArt2D, ну, когда-то пытался ее собрать и вроде не все гладко было. Програмить с ней я тоже не пробовал и не помню, собралось оно у меня или нет, но люди вроде хвалят, значит наверное оно тоже ничего так.
А cairo, ну, на вкус и цвет фломастеры разные. Как "еще один" способ работать с вектором вроде тоже ничего так. хотя да, для создания контекста все равно приходится platform-specific код юзать, без этого никуда.
Я смотрел AGG вещь хорошая, но на сколько я понял она не развивается и сверхсложная (возможно для меня). wxArt2D не смотрел на днях гляну :)
Да ochelot, с тобой полностью согласен AGG вещь хорошая, но сверхсложная...