首页
登录 | 注册

SKIA结构目录

skia的源文件及部分头文件都在skia/src目录下,导出的头文件在skia/include 目录下。打开Skia源文件夹,主要有以下部分:
animator 目录
顾名思意,这部分是用来实现Skia的动画效果。主要包含79个CPP文件。从文件名来看,主要分为以下几类:
以SkAnimator开头的一些文件,SkAnimatorActive,SkAnimatorBase,SkAnimatorField,SkAnimatorSet,SkAnimatorScript等。
以SkDisplay开头的一些文件,SkDisplayAdle, SkDisplayAdd, SkDisplayEvents, SkDisplayList, SkDisplayInput, SkDisplayMovie等等。
以SkDraw开头的一些文件,SkDraw3D, SkDrawBitmap, SkDrawClip, SkDrawColor, SkDrawBlur, SkDrawLine, SkDrawPaint, SkDrawPath, SkDrawPoint等。
以SkScript开头的一些文件,包括SkScript, SkScriptRuntime, SkScriptDecompile等。
这里,skia实现了一个脚本语言,可能是用于控制动画。
skia的这个脚本语言包括基本的数学运算:加(ADD)、减(SUB)、乘(MUL)、除(DIV)、模(MOD);基本逻辑及判断:大于(GT)、小于(LT)、等于(EQ)、与(AND)、或(OR)、非(NOT)等;还包括基本的位运算(bit operation)。
在这个脚本中,主要有以下几个数据 类型:NoType, Int, Scalar(等同于Float), String, Array, Object。
这个目录下还包含一些辅助性的文件,如SkBase64, SkTime等。
core 目录
这就是skia的核心了,主要包含89个CPP文件。
基本都是一些图形绘制函数。
主要包括SkColor, SkCanvas,SkBitmap,SkPicture,SkBlitter,SkCordic,SkPath,SkPoint,SkRect,SkRegion,SkMask 等等图形绘制类,还包括一些辅助性的类文件,sk64, skbuffer, skutils等。
skia是分层次绘制的,当需要绘制时,通知每个layer上对象的canvas来绘制。
effects 目录
这是skia实现一些图形图像效果的部分
主要包括20个CPP文件。
主要实现了以下特效:遮罩、浮雕、模糊、滤镜、渐变色、离散、透明等。
并且实现了PATH的各种特效。
gl 目录
从名字看,并不知道这是做什么用的,gl=graphics library,图形库。
主要包括7个CPP文件。
开打SkGL.h,可以发现
#ifdef SK_BUILD_FOR_MAC
    #include
    #include
    #include
    // use FBOs for devices
    #define SK_GL_DEVICE_FBO
#elif defined(ANDROID)
    #include
    #include
#endif
所以,这部分是skia调用OpenGL或OpenGL ES来实现3D效果。
如果定义了MAC,则使用OpenGL,如果定义了Android,则使用嵌入式系统 上的esgl三维图形库。porting的时候要加上#elif defined(SYMBIAN)之类的,防止别的地方也有android宏定义。
打开SkGL,发现是几个基本的材质贴图函数。
images目录
这部分是用来处理images的,共23个CPP文件和一些头文件。
主要是SkImageDecoder和SkImageEncoder以及SkMovie。
Skia能处理的图像类型包括以下
BMP
JPEG/PVJPEG
PNG
ICO
另外,skia还能处理PDF文档。
使用了一个fpdfemb库。
而SkMovie就是处理gif动画。
ports目录
这部分是skia的一些接口在不同系统上的实现,共24个CPP文件。
主要包括几个部分:Font,Event,File,Thread,Time,XMLParser
这些与Skia的接口,需要针对不同的操作系统 实现。
svg 目录
这个目录包含28个CPP文件,从文件名看,都是一些画图文件。
SkSVGPath, SkSVGPolyline, SkSVGRect, SkSVGText, SkSVGLine, SkSVGImage, SkSVGEllipse等等。
utils 目录
包含9个CPP文件,是一些辅助工具类。
SkCamera, SkColorMatrix,SkOSFile,SkProxyCanvas,SkInterpolator等文件
views目录
这个目录包含24个CPP文件。
skia构建了一套界面UI库。
组件包括Window,Menu, TextBox, ListView, ProgressBar, Widget, ScrollBar,TagList,Image等。
还有组件的事件类。
window对象负责接收事件,并传递给当前focus对象,若无focus对象,则focus自身。focus对象处理相应的key events和mouse events。
在SkiView基类类中定义并实现了draw, acceptFocus,moveFocus,click等方法。
xml 目录
当然,这是处理xml数据的部分了。
skia在这里只是对xml解析器做了一层包装,具体的xml解析器的实现需要根据不同的操作系统及宿主程序来实现。

third-party library
以上就是所有的skia source code了,当然,仅仅依靠这些是不可能编译通过了,skia还使用了一些third-party library以及包含了不少linux 上的头文件。
通过分析skia源程序,发现skia主要使用以下几个第三方库:
Zlib,处理数据的压缩和解压缩
Jpeglib,处理jpeg图像的编码解码
Pnglib,处理png图像的编码解码
giflib,处理gif图像
fpdfemb,处理pdf文档
skia还需要一些linux/unix下的头文件(可能还需要更多):
stdint.h
unistd.h
features.h
cdefs.h
stubs.h
posix_opt.h
types.h
wordsize.h
typesizes.h
confname.h
getopt.h
mman.h
OS
1. Android & Linux
天然的支持Skia
2. Symbian
Symbian 3rd开始支持部分POSIX标准,所以以上的头文件函数实现,可能有部分不为Symbian所支持,不支持的必须自行实现。
参见:http://innovator.samsungmobile.com/cn/cms/cnts/category.main.list.do?platformId=1&cateId=159
►C标准库和POSIX转义符(equivalents)
Symbian OS包括ANSI C / POSIX标准库应用 ,提供了stdlib子集以支持将C和混合C / C++代码移植到Symbian OS。
它还包括P.I.P.S. POSIX库。如果您有一个现成应用, P.I.P.S.尤其可以使核心应用逻辑的移植容易得多。 P.I.P.S. 被专门的Wiki全面涵盖。
3. Windows Mobile & Windows CE
支持POSIX,所以应该也可以支持SKIA

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yili_xie/archive/2009/11/12/4803563.aspx

相关文章

  • 基于vmware workstation的 pxe + kickstart批量安装linux
    [一]环境配置 vmware workstation 14.1.2 用于创建虚拟机 linux镜像 CentOS-7-x86_64-DVD-1804(7.5版) 虚拟机使用的操作系统 FTP服务   用来存放系统安装文件 TFTP服务   ...
  • 写了一个小程序分析<Python科学计算>第二版目前的状态.在下面的目录中,[ ]中的两个数字分别表示章节的文字数和示例代码行数.上级目录的的数字和下级目录中的合计.目前全书有32万字,9100行示例代码. import os ...
  • 1. sudo pacman -Sy samba 2  vi /etc/samba/smb.conf [global] workgroup = WORKGROUP security = user # Work 为共享时的名字, path为共 ...
  • 启用shopt 选项实现不使用 CD 命令进入目录/文件夹
    shopt 是一个 shell 内置命令,用于设置和取消设置各种 bash shell 选项,由于它已安装,因此我们不需要再次安装它. 我们将在本文中向你展示如何操作.这是一个小的调整,但对于那些从 Windows 迁移到 Linux 的新 ...
  • C# 生成、删除Word目录
    目录,是指书籍.文档正文前所载的目次,将主要内容以一定次第顺序编排,起指导阅读.检索内容的作用.在Word中创建目录前,需要设置文档相应文字或者段落的大纲级别,根据设定的大纲级别可创建文档的交互式大纲,即在Word文档左侧导航窗口中可显示为 ...
  • 创建一个测试文件夹 您的计算机 C 驱动器上创建一个新的文件夹.命名文件夹 myCatalogFolder. 启动文本编辑器 (如记事本),然后在一个空白文档中粘贴以下文本: 这是测试索引服务器查询测试文档,此文件的名称是 IndexTex ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号