Categories: Uncategorized

Работаем с Cairo в wxWidgets – Часть I – Компиляция CAIRO 1.8.6 на Visual C++ 8

Первая статья из цикла, повествующего о том, ка киспользовать библиотеку cairo (и обертку wxCairo) с wxWidgets.

В этот раз речь пойдет о том, как собрать библиотеку cairo с помощью Visual C++ в Windows.

Для начала определимся, что нам нужно:

  • Mozilla Build 1.3
  • cairo 1.8.6
  • libpng 1.2.35
  • zlib 1.2.3
  • pixman 0.14.0


Устанавливаем 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.

  • zlib.h
  • zconf.in.h
  • zconf.h
  • pngconf.h
  • png.h
  • pixman.h
  • pixman-version.h
  • libpng.lib
  • zdll.lib

В папке 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 нам будут необходимы следующие файлы:

В результате нам для работы понадобятся только файлы:

  • cairo-deprecated.h
  • cairo-features.h
  • cairo-pdf.h
  • cairo-ps.h
  • cairo-static.lib
  • cairo-svg.h
  • cairo-version.h
  • cairo-win32.h
  • cairo.dll
  • cairo.h
  • cairo.lib
  • zlib1.dll
T-Rex

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 вещь хорошая, но сверхсложная...

Share
Published by
T-Rex

Recent Posts

Разработка кроссплатформенных модульных приложений на C++ с библиотекой wxWidgets

Введение Уже долгое время не пишу статьи о разработке, хотя сам процесс написания мне очень…

11 years ago

wxWidgets App With Plugins (Windows/Linux/Mac) – Sample Source Code

I can see that there is still a lot of topics at wxWidgets forums related…

11 years ago

wxToolBox is Now Open-Source!

I've just published the source code of wxToolBox component and a couple of sample apps at…

11 years ago

Microsoft Kinect Helper Library and Sample for wxWidgets

Microsoft released their Kinect SDK several days ago. So, for those wxWidgets developers who are…

13 years ago

wxJSON 1.1.0 Released

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to…

15 years ago

wxRuby. Оно даже работает!

Вдохновленнный читаемой нынче книгой My Job Went to India: 52 Ways to Save Your Job…

15 years ago