发布大幅重构优化的 TouchVG 1.0.2,支持SVG、多模块扩展结构,欢迎评阅改进、提交pull request。html
https://github.com/rhcad/touchvgjava
TouchVG 是一个主要由C++开发的轻量级2D矢量绘图框架,可在 iOS、Android、Windows 等多个平台构建矢量绘图应用。python
做者:张云贵 rhcad@hotmail.com 开源协议:LGPL 2.1,见 LICENSE 文件描述。android
支持多点触摸或鼠标的交互绘图方式,能够无级放缩或平移显示矢量图形、图像、SVG。ios
除了基本的15余种矢量图形类型外,可以使用C++或Java等来扩充更多的图形类型。git
除了基本的20余种选择和绘图命令外,还可以使用C++、Java等扩充更多的交互命令。github
能够交互式修改图形的线宽、颜色等属性,能够进行放缩变形、克隆等图形操做。算法
支持JSON等格式的图形序列化操做,容许扩充XML、数据库等其余序列化适配器。数据库
支持多模块的扩展机制,可构建数字教育、动态几何、图文笔记等多种行业绘图模块。json
更多说明将在TouchVG的 在线文档 中补充。
Larva Labs 的 Android SVG 解析框架 svgandroid (Apache License 2.0)。
iOS SVG 解析框架 SVGKit (MIT)。
用于跨语言转换的 SWIG,用此工具生成粘合代码。
iOS静态库模板 iOS-Universal-Library-Template。
JSON 解析和输出框架 rapidjson (MIT)。
GCC编译脚本 x3py (Apache License 2.0)。
算法:圆弧和Bezier曲线最近点计算、 三次Bezier范围计算、 两圆求交点、 点线位置判断。
在您使用 TouchVG 的过程当中有任何意见和建议,请到此项目 提交Issue。
在 eclipse 中导入此项目下的全部工程,运行 VGTest 工程可看演示效果。
可能须要根据实际安装状况修改工程的SDK版本号。
建议使用较新的 ADT Bundle,省掉了eclipse和ADT的安装配置麻烦事。
能够将 democmds 改成你的应用库工程(例如使用UltraEdit保持大小写全文替换,并替换文件名), 该工程包含 democmds.jar 和 libdemocmds.so(本地库)。在此增长本身的图形类和命令类,这样就不须要改动 TouchVG 内核了。
不写C++代码、不要democmds也行,参考
android/test/src/vgtest/testview/shape
包写本身的图形和命令吧。如需从新生成 libtouchvg.so 和 libdemocmds.so,则进入此项目的 android 目录,运行
./build.sh
或./build.sh NDK_DEBUG=1
(须要将NDK安装位置加到PATH环境变量,以便使用 ndk-build)。使用NDK-r8c之后的版本若是出现
build/gmsl/__gmsl:512: *** non-numeric second argument to wordlist function
错误, 则打开 NDK 安装目录下的build/gmsl/__gmsl
文件,将512行改成:int_encode = $(__gmsl_tr1)$(wordlist 1,$(words $1),$(__gmsl_input_int))
若是是在Windows上编译,推荐使用 MSYS(Unix模拟环境工具)、TDM-GCC(一种MinGW发行版)。
如需从新生成内核JNI类(democmds.jar中的core包),则先删除
democmds_java_wrap.cpp
,再运行./build.sh
(须要安装SWIG,并将SWIG位置加到 PATH 环境变量)。
在 Xcode 中打开 ios/TestVG.xcworkspace 文件,运行 TestView 演示程序。
libTouchVG.a 和 libDemoCmds.a 太大,没上传到源码库,须要本身编译:
进入此项目的 ios 目录,运行
./build.sh
(须要配置Xcode命令行环境,以便使用 xcodebuild)。本项目对 SVGKit 作了少许修改,可下载预编译的 libSVGKit-iOS.a到
ios/output
目录下。在真机上调试时须要修改主程序的Bundle Identifier,例如“com.yourcompany.TestView”,并选择本身的开发证书(Code Signing)。
能够将 DemoCmds 改成你的应用库工程(例如使用UltraEdit保持大小写全文替换,并替换文件名), 增长本身的图形类和命令类,这样就不须要改动 TouchVG 内核了。
在 Visual Studio 2010 中打开
wpf/Test_cs10.sln
,运行 WpfDemo 工程。VS2008则打开wpf/Test_cs9.sln
。如需从新生成内核类(编译 Swig Files 下的 touchvg.i 或 democmds.i),须要安装 SwigWin,并将SWIG解压位置加到 PATH 环境变量。
还可在Linux、MinGW、Mac OS X下编译静态库,或为 Python、Perl、Java 等应用编译动态库。
进入
core
目录,该目录下有 Makefile 文件,运行下列 make 指令:
make all install
:编译C++静态库。
make java
:为Java程序生成Jar包和动态库。
make python
、make perl
:分别为Python、Perl等生成类文件和动态库。
make clean java.clean python.clean
:删除上述编译出的临时文件。若是是在Windows上编译,推荐使用 MSYS(Unix模拟环境工具)、TDM-GCC(一种MinGW发行版)。