桌面环境:vmware虚拟机ubuntu10.10
root@ubuntu10:/work# uname -a
Linux ubuntu10 2.6.35-27-generic #48-Ubuntu SMP Tue Feb 22
20:25:29 UTC 2011 i686 GNU/Linux
root@ubuntu10:/work# date
2011年 04月 09日 星期六 20:36:32 CST
下载SKIA源码:
root@ubuntu10:/work/skia-read-only# svn
info
路径: .
URL:
版本库根:
版本库 UUID: 2bbb7eff-a529-9590-31e7-b0007b416f81
版本: 1083
节点种类: 目录
调度: 正常
最后修改的作者: mike@reedtribe.org
最后修改的版本: 1083
最后修改的时间: 2011-04-08 10:41:54 +0800 (五, 2011-04-08)
下载下来以后,编译不过,缺少头文件。依次安装jpeg,png,libz,freetype,gif库。安装时执行命令:.configure;make
;make install。
然后make.oK
写测试程序:
root@ubuntu10:/work/skia-read-only/wanghuan# cat main.cpp
-n
1
15
20
21
22 #include
"SkBitmap.h"
23 #include
"SkDevice.h"
24 #include
"SkPaint.h"
25 #include
"SkRect.h"
26 #include
"SkImageEncoder.h"
27 int main()
28 {
29
// Declare
a raster bitmap, which has an integer width and height,
30
// and a
format (config), and a pointer to the actual pixels.
31
// Bitmaps
can be drawn into a SkCanvas, but they are also used to
32
// specify
the target of a SkCanvas' drawing operations.
33
SkBitmap
bitmap;
34
bitmap.setConfig(SkBitmap::kARGB_8888_Config,
200, 200);
35
bitmap.allocPixels();
36
bitmap.eraseColor(0);
37
38
// A Canvas
encapsulates all of the state about drawing into a
39
// device
(bitmap). This includes a reference to the device
itself,
40
// and a
stack of matrix/clip values. For any given draw call (e.g.
41
//
drawRect), the geometry of the object being drawn is
transformed
42
// by the
concatenation of all the matrices in the stack. The
43
//
transformed geometry is clipped by the intersection of all of
the
44 // clips in the
stack.
45 SkCanvas
canvas(bitmap);
46
47
// SkPaint
class holds the style and color information about how to
48
// draw
geometries, text and bitmaps.
49
SkPaint
paint;
50
// SkIRect
holds four 32 bit integer coordinates for a rectangle.
51
SkRect
r;
52
paint.setARGB(255, 255, 0, 0);
53
r.set(25,
25, 145, 145);
54
canvas.drawRect(r, paint);
58
paint.setARGB(255, 0, 255, 0);
59
r.offset(20, 20);
60
canvas.drawRect(r, paint);
61
paint.setARGB(255, 0, 0, 255);
62
r.offset(20, 20);
63
canvas.drawRect(r, paint);
64
//
SkImageEncoder is the base class for encoding compressed
images
65
// from a
specific SkBitmap.
66
SkImageEncoder::EncodeFile("snapshot.png",
bitmap,
67
SkImageEncoder::kPNG_Type,
68
100);
69
return
0;
70 }
这里使用了unix-test-app目录的Makefile修改:
root@ubuntu10:/work/skia-read-only/wanghuan# cat Makefile
-n
1 #
Build the unix test app
2
C_INCLUDES := -I../include/core \
3
-I../include/config \
4
-I../include/effects \
5
-I../include/images \
6
-I../include/utils \
7
-I../include/views \
8
-I../include/xml \
9
-I../include/gpu \
10
-I../gpu/include \
11
-I../include/utils/unix \
12
-I../samplecode
13
14 VPATH =
libs:../src/ports:../samplecode:../src/core:../src/utils/unix
15
16 #generate debugging
info
17 CFLAGS = -g
18
19 SRC_LIST :=
main.cpp
20
21 test-skia:
$(SRC_LIST) ../out/libskia.a -lpthread -lz -lfreetype
-lpng
22 g++ $(C_INCLUDES)
$(CFLAGS) $^ -o $@
23
24 clean:
25 #rm -rf ../out #
Copied from ../Makefile
26 #rm -rf out