釋出大幅重構優化的 TouchVG 1.0.2,支援SVG、多模組擴充套件結構,歡迎評閱改進、提交pull request。
https://github.com/rhcad/touchvg
關於 TouchVG
TouchVG 是一個主要由C++開發的輕量級2D向量繪圖框架,可在 iOS、Android、Windows 等多個平臺構建向量繪圖應用。
作者:張雲貴 rhcad@hotmail.com 開源協議:LGPL 2.1,見 LICENSE 檔案描述。
TouchVG 的功能
支援多點觸控或滑鼠的互動繪圖方式,可以無級放縮或平移顯示向量圖形、影象、SVG。
除了基本的15餘種向量圖形型別外,可使用C++或Java等來擴充更多的圖形型別。
除了基本的20餘種選擇和繪圖命令外,還可使用C++、Java等擴充更多的互動命令。
可以互動式修改圖形的線寬、顏色等屬性,可以進行放縮變形、克隆等圖形操作。
支援JSON等格式的圖形序列化操作,允許擴充XML、資料庫等其他序列化介面卡。
支援多模組的擴充套件機制,可構建數字教育、動態幾何、圖文筆記等多種行業繪圖模組。
更多說明將在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。
Android編譯說明
在 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 環境變數)。
iOS編譯說明
在 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 核心了。
WPF編譯說明
在 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發行版)。