unbuntuでskiaをコンパイルする
8920 ワード
一、紹介
skiaはグーグルのオープンソースベクトルグラフィックエンジンです.Skia社が開発し、グーグルに買収された後、skiaはchrome、chromiumオペレーティングシステム、chromeブラウザ、Androidオペレーティングシステムに応用された.コンパイルするか、テストコードを実行するかを検討します.skiaをできるだけ早くコンパイルできるように、vmwareのubuntu 10.4仮想マシンでコンパイルすることを選びました.
二、コンパイルプロセス及びテストコード
1.まずskiaソース依存ライブラリ、libfreetype、libpngをインストールします.次のコマンドを使用してインストールできます.
2.~/でskiaディレクトリを作成し、~/skiaディレクトリに入り、次のコマンドを使用してskiaソースコードをダウンロードします(もちろん、svnツールをインストールしておきます)、checkoutのバージョン番号は624です.
3.~/skia/skia-read-onlyディレクトリに入り、skiaソースコードを次のコマンドでコンパイルします.コンパイルが完了すると、~/skia/skia-read-only/outディレクトリの下でファイルlibskia.soが生成されます.
4.~/skia/skia-read-onlyでフォルダmytestを作成し、ファイルtest-skia.cを追加します.内容は以下の通りです.具体的に使用する関数は、その注釈およびskiaドキュメントを参照してください.
~/skia/skia-read-only/mytestディレクトリの下で、test-skia.cファイルをコンパイルするには、次のコマンドを使用します.
test-skiaを実行するとmytestディレクトリの下でファイルsnapshot.pngが生成されます.
三、まとめ
Cairoライブラリをコンパイルするときは、Windowsプラットフォームの下で実行したいと思っていました.しかし、実際には、そのプラットフォームのコンパイルが便利なのはそのプラットフォームです.私たちの目的はコンパイルのためにコンパイルするのではなく、コンパイルするライブラリ自体を理解することです.skia機能の簡単な紹介については、ここを参照してください.
四、参考資料
1.linuxでskiaをコンパイルする
skiaはグーグルのオープンソースベクトルグラフィックエンジンです.Skia社が開発し、グーグルに買収された後、skiaはchrome、chromiumオペレーティングシステム、chromeブラウザ、Androidオペレーティングシステムに応用された.コンパイルするか、テストコードを実行するかを検討します.skiaをできるだけ早くコンパイルできるように、vmwareのubuntu 10.4仮想マシンでコンパイルすることを選びました.
二、コンパイルプロセス及びテストコード
1.まずskiaソース依存ライブラリ、libfreetype、libpngをインストールします.次のコマンドを使用してインストールできます.
sudo apt-get install libfreetype6-dev
sudo apt-get -f install libpng12-dev
2.~/でskiaディレクトリを作成し、~/skiaディレクトリに入り、次のコマンドを使用してskiaソースコードをダウンロードします(もちろん、svnツールをインストールしておきます)、checkoutのバージョン番号は624です.
svn checkout http://skia.googlecode.com/svn/trunk/ skia-read-only/
3.~/skia/skia-read-onlyディレクトリに入り、skiaソースコードを次のコマンドでコンパイルします.コンパイルが完了すると、~/skia/skia-read-only/outディレクトリの下でファイルlibskia.soが生成されます.
make SKIA_BUILD_FOR=linux
4.~/skia/skia-read-onlyでフォルダmytestを作成し、ファイルtest-skia.cを追加します.内容は以下の通りです.具体的に使用する関数は、その注釈およびskiaドキュメントを参照してください.
1: /* Simple vector graphics demo utilizing Skia toolkit.
2: * Authored by Jim Huang
3: */
4:
5: #include "SkBitmap.h"
6: #include "SkDevice.h"
7: #include "SkPaint.h"
8: #include "SkRect.h"
9: #include "SkImageEncoder.h"
10:
11: int main()
12: {
13: // Declare a raster bitmap, which has an integer width and height,
14: // and a format (config), and a pointer to the actual pixels.
15: // Bitmaps can be drawn into a SkCanvas, but they are also used to
16: // specify the target of a SkCanvas' drawing operations.
17: SkBitmap bitmap;
18: bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
19: bitmap.allocPixels();
20:
21: // A Canvas encapsulates all of the state about drawing into a
22: // device (bitmap). This includes a reference to the device itself,
23: // and a stack of matrix/clip values. For any given draw call (e.g.
24: // drawRect), the geometry of the object being drawn is transformed
25: // by the concatenation of all the matrices in the stack. The
26: // transformed geometry is clipped by the intersection of all of the
27: // clips in the stack.
28: SkCanvas canvas(new SkDevice(bitmap));
29:
30: // SkPaint class holds the style and color information about how to
31: // draw geometries, text and bitmaps.
32: SkPaint paint;
33:
34: // SkIRect holds four 32 bit integer coordinates for a rectangle.
35: SkRect r;
36:
37: paint.setARGB(255, 255, 0, 0);
38: r.set(25, 25, 145, 145);
39: canvas.drawRect(r, paint); /** Draw the specified rectangle using
40: the specified paint. The rectangle
41: will be filled or stroked based on
42: the Style in the paint. */
43:
44: paint.setARGB(255, 0, 255, 0);
45: r.offset(20, 20);
46: canvas.drawRect(r, paint);
47:
48: paint.setARGB(255, 0, 0, 255);
49: r.offset(20, 20);
50: canvas.drawRect(r, paint);
51:
52: // SkImageEncoder is the base class for encoding compressed images
53: // from a specific SkBitmap.
54: SkImageEncoder::EncodeFile("snapshot.png", bitmap,
55: SkImageEncoder::kPNG_Type,
56: /* Quality ranges from 0..100 */ 100);
57: return 0;
58: }
~/skia/skia-read-only/mytestディレクトリの下で、test-skia.cファイルをコンパイルするには、次のコマンドを使用します.
g++ -I../include -I../include/core -I../include/images -I../include/config
-Wall -o test-skia test-skia.c ../out/src/images/SkImageDecoder_libpng.o
../out/libskia.a -lpng -lfreetype -lpthread -g
test-skiaを実行するとmytestディレクトリの下でファイルsnapshot.pngが生成されます.
三、まとめ
Cairoライブラリをコンパイルするときは、Windowsプラットフォームの下で実行したいと思っていました.しかし、実際には、そのプラットフォームのコンパイルが便利なのはそのプラットフォームです.私たちの目的はコンパイルのためにコンパイルするのではなく、コンパイルするライブラリ自体を理解することです.skia機能の簡単な紹介については、ここを参照してください.
四、参考資料
1.linuxでskiaをコンパイルする