Cairoで遊ぶ(1)

Cairoで遊ぶメモ、SVGファイル表示動きました.

SVGライブラリインストール

UbuntuでSynapticパッケージマネージャはlibsvg,libsvg-cairoに対応していないようなので、

cvs -d :pserver:anoncvs@cvs.cairographics.org:/cvs/cairo co libsvg
cd libsvg
./autogen.sh
make
sudo make install
cd ..

cvs -d :pserver:anoncvs@cvs.cairographics.org:/cvs/cairo co libsvg-cairo
cd libsvg-cairo
./autogen.sh
make
sudo make install

サンプルを参考にSVGを表示する

サンプルをダウンロードする
cvs -d :pserver:anoncvs@cvs.cairographics.org:/cvs/cairo co cairo-demo

このデモのgtkディレクトリのプログラムを次のようにしてSVGファイルを読み込んでレンダリング

static void
paint (GtkWidget      *widget,
       GdkEventExpose *eev,
       gpointer        data)
{
  gint width, height;
  gint i;
  cairo_t *cr;
  svg_cairo_t  *svgc;
  unsigned int  w, h;

  width  = widget->allocation.width;
  height = widget->allocation.height;
  
  cr = gdk_cairo_create (widget->window);
  
  svg_cairo_create (&svgc);

  svg_cairo_parse (svgc, "icon001.svg");
  svg_cairo_get_size (svgc, &w, &h);
  //  cairo_scale (cr, 1.0/w, 1.0/h);
  svg_cairo_render (svgc, cr);

  svg_cairo_destroy (svgc);


  cairo_destroy (cr);
}

ついでにMakefileも書き換える

APPS =				\
	svg

CFLAGS  = -g -Wall -I/usr/local/include
LDFLAGS =  -L/usr/local/lib -lsvg -lsvg-cairo
CFLAGS  += `pkg-config gtk+-2.0 --cflags`
LDFLAGS += `pkg-config gtk+-2.0 --libs`

all: $(APPS)

clean:
	$(RM): $(APPS)