釋出大幅重構優化的 TouchVG 1.0.2

張雲貴發表於2013-10-18

釋出大幅重構優化的 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.aios/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 pythonmake perl:分別為Python、Perl等生成類檔案和動態庫。

make clean java.clean python.clean:刪除上述編譯出的臨時檔案。

如果是在Windows上編譯,推薦使用 MSYS(Unix模擬環境工具)、TDM-GCC(一種MinGW發行版)。

 

相關文章