發佈大幅重構優化的 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發行版)。