android的skia
来源:互联网 发布:python格式化输出 编辑:程序博客网 时间:2024/05/16 18:34
1 Skia 概述
Skia 是 Google 一个底层的图形、图像、动画、 SVG 、文本等多方面的图形库,是 Android 中图形系统的引擎。
Skia 作为第三方软件放在 external 目录下: external/skia/ 。
Skia 的结构如下图所示:
主要包含三个库:
libcorecg.so: 包含 /skia/src/core 的部分内容,比如其中的 Region , Rect 是在 SurfaceFlinger 里面用来计算可视区域的;
libsgl.so: 包含 /skia/src/core|effects|images|ports|utils 的部分和全部内容,这个实现了 skia 大部分的图形效果,以及图形格式的编解码;
libskiagl.so: 包含 /skia/src/gl 里面的内容,主要用来调用 opengl 实现部分效果。
2 Skia 对上层的接口( API )
skia 的源文件及部分头文件都在 external/skia/src 目录下,导出的头文件在 external/skia/include 目录下。最主要的是 SKCanvas 类,几乎整个 Android GUI 系统的底层绘制都是由这个类来完成的。其头文件和源代码文件的路径分别为:
external/skia/include/core/SKCanvas.h
external/skia/include/core/SKCanvas.cpp
SKCanvas 类主要有三种绘制功能:
a 基本图形绘制 ( 如 drawARGB,drawLine 函数 )
b 图像文件绘制( drawBitmap 函数)
c 文本绘制( drawText 函数)
3 Skia 的图像编解码部分
这部分的接口主要是:
external/include/image/SKImageDecoder.h // 把图像文件或者流解码到 skia 的内部内存 SKBitmap 中 ;
external/include/image/SKImageEncoder.h // 把 skia 内部内存 SKBitmap 编码成文件或流的形式;
这些接口需要具体的类实现,主要代码在 src/image 文件中。
4 Android 图形系统的 JNI 接口
主要提供了从 Skia 底层库到 Java 上层的支持,代码路径为:
frameworks/base/core/jni/android/graphic/
主要为 Canvas.cpp 文件。
5 Android 的图形包( graphics )
Android 图形类的包是 android.graphics, 它通过调用图形系统的 JNI 提供了对 Java 框架中图形系统的支持,在 Android 的 Java 框架中和 Java 应用程序中, 2D 绘制的功能(基本图形、图片文件,文字)也是通过调用它来实现的。代码路径为:
frameworks/base/graphics/java/android/graphics/
其中 Canvas.cpp 文件实现了 Android 图形系统中最重要的一个类 android.graphic.canvas 。
6 Android 2D 图形硬件加速
目前 Android 2D 图形硬件加速主要是通过 copybit 模块来实现, Copybit 是封装在 Android 系统 opengl 软件实现库( libagl )的一部分,仅对 openGL ES 2D API 进行封装,实现 openGL ES 2D API 到硬件的加速功能。
copybit 模块以 HAL 的形式实现,代码 hardware/msm7k/libcopybit/copybit.c
- Android skia 和open skia的比较
- android的skia
- android 的图形引擎 skia
- android 的图形引擎 skia
- android 的图形引擎 skia
- android 的skia 图形引擎库
- Android 的Skia 图形引擎库
- android skia 中skpaint 的setXfermode属性
- android skia 使用实例
- android skia 使用实例
- Android skia简单应用
- Android NDK 使用skia
- Android skia简单应用
- Android skia浅析
- Android库so文件及skia函数的调用
- Android下Skia遮罩特效的实现
- Android库so文件及skia函数的调用
- Android NDK 使用skia 画图及显示图片的例子
- VC7/VC8开发的库在VC6中的使用问题
- 10分钟尝试10种编程语言
- android app widget的使用
- oracle cascade delete
- table td 文本自动截断 text-overflow:ellipsis
- android的skia
- 排名怎么可以在千里之外
- Android SDK无法更新,hosts完美解决
- C语言的那些小秘密之动态数组 .
- X Window 程式设计入门--第四章 Event
- 从编译到运行,理解流程、内部结构、调用机制
- $HADOOP_HOME is deprecated.
- 软件度量都该度个啥?(1)——度量陷阱及什么是度量?
- ibatis的$与#的区别