第十五課 嵌入式GUI課件_第1頁
第十五課 嵌入式GUI課件_第2頁
第十五課 嵌入式GUI課件_第3頁
第十五課 嵌入式GUI課件_第4頁
第十五課 嵌入式GUI課件_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1嵌入式系統(tǒng)AnIntroductiontoEmbeddedSystem第十五課嵌入式GUI浙江大學計算機學院陳天洲2011.4.272011夏學期,周三下午1-3節(jié),周四晚上1-3節(jié)玉泉曹光彪西501第十五課嵌入式GUI2

2課程大綱

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI簡介

XWindows

Tiny-X體系結構

QT

MiniGUI

第十五課嵌入式GUI嵌入式芯片中的GPU重郵信科采用VivanteGPU開發(fā)TD-SCDMA芯片目的高帶寬3G基帶處理富媒體應用第十五課嵌入式GUI手機上的GPU微軟WM系統(tǒng)GDI,通常由CPU運算iPhone、Android等手機,有專用GPU均支持OpenGLES2.0iPhone的桌面動畫效果是基于CoreAnimation技術,屬于ESAndroid利用OpenGLES來處理器桌面卷動與動畫切換特效OpenGLES在手機上的工作,主要是用來處理圖形相關數(shù)據(jù)第十五課嵌入式GUIAppleTVAppleTV第一版本IntelPentiumM1.0GHz2MBofL2高速緩存nVidiaG72M顯示卡

64MBDDR2內存內置的40GB硬盤播放iTunes第十五課嵌入式GUIAppleA4處理器A4處理器應用于新一代AppleTV尺寸僅有上代產(chǎn)品的四分之一98x98x23mm重270gIPhoneIPADAppleA4處理器組成A4封裝有三層兩層RAM(三星K4X1G323PE,256M)一層含有微處理器ARMCPU+GPUARM架構,1GHz主頻,Cortex-A8單核心微架構顯示芯片(PowerVRSGXGPU)2024/11/6第十五課嵌入式GUI6Nvidia的TegraARM架構CPU+整合HDvideo處理單元+圖像處理單元+音頻處理單元+低電壓版本GeForceGPU2008年6月Tegra600/650800MHzARM11CPU支持1080pH.264解碼的視頻處理器圖片處理器音頻處理器超低功耗的GeForceGPU運行功耗卻僅為1W左右便攜式移動計算設備的應用解決方案其極低的系統(tǒng)功耗和強勁的媒體處理能力第十五課嵌入式GUI嵌入式GPU(EmbeddedGPU)類似于顯示卡對嵌入式處理器提供輔助圖形計算能力產(chǎn)品高畫質手持裝置、銷售點終端機、醫(yī)療裝置、多功能打印機、賭場游戲機、工業(yè)用計算機、服務器等嵌入式及消費性應用裝置編程以OpenGL2.0為主流面向圖形編程第十五課嵌入式GUI多屏幕嵌入式GPUAMD基于OpenCL和Eyefinity技術桌面級嵌入式GPU最多支持6屏輸出,嵌入式GPUE6760VIA基于S3Chrome5400E的雙屏版eH1基于S3Chrome5400EW核心的四屏版uH8采用兩顆S3Chrome5400EW核心的八屏版uH89第十五課嵌入式GUIARM平臺上的GPUPowerVR最主流除了在ARM中應用,也用于intel的凌動處理器最好性能,僅僅接近AMD與NVIDIQA能整合進SOC成為單芯片系統(tǒng)的一部分,而不是獨立顯卡其次是ATI后被Qualcomm所購買的Adreno接著是NVIDIA使用在Tegra之中的GeForce核心ARM自己也開始出GPU,稱為Mali第十五課嵌入式GUIPowerVR英國Imagination公司目前PowerVRSGX5452到16個核心數(shù)量蘋果A5采用的是PowerVRSGX543MP2性能支持DX10.1/OpenGLES2.X/OpenGL3.X/OpenVG1.X/OpenCL1.X技術,核心頻率200MHz每秒能生成4000萬個多邊形,像素處理能力則達1Gpixels/s11第十五課嵌入式GUIAdreno第三代產(chǎn)品配備1.5GHz增強內核的QSD8672配備1.2GHz增強內核的MSM8260與MSM8660三款產(chǎn)品均為雙CPU架構。2011代號Krait(環(huán)蛇)的Snapdragon移動處理器微架構單核MSM8930:全球首款集成LTEModem的單芯片解決方案,面向主流智能手機,將集成Adreno305GPU,性能是第一代Adreno的6倍雙核MSM8960:全球首款集成多模式3G/LTE基帶的雙核方案,面向多任務智能手機和平板機。雙核心可實現(xiàn)異步頻率,支持雙通道LPDDR內存,集成Adreno225GPU,圖形性能是第一代Adreno8倍四核版APQ8064:面向下一代計算和娛樂設備,內置四個異步CPU核心,核心最高頻率2.5GHz,集成Adreno320四核GPU,圖形性能將是第一代Adreno的15倍以上。整體性能方面,APQ8064是第一代Snapdragon處理器的12倍,同時功耗下降了75%12第十五課嵌入式GUIGeForce超低功耗(ULP)架構設計Tegra213第十五課嵌入式GUIMali目前是第四代,Mali-T604硬件“tri-pipe”三管線架構,可配置為1到4個Shader核心,廠商可自行配置二級緩存(推薦每核心32KB),內建MMU顯存管理單元可支持虛擬顯存。支持4x/16x全屏抗鋸齒,支持AMBAAXI、AMBA4總線接口。軟件在OpenGLES1.1/2.0、OpenVG1.1的基礎上,加入了對OpenCL1.1/1.2和DirectX{Windows8}的支持。ARMv7CPU核心和GPU都以支持OpenCL1.114第十五課嵌入式GUI嵌入式GPU性能比較15第十五課嵌入式GUI16

16課程大綱

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI簡介

XWindows

Tiny-X體系結構

QT

MiniGUI

第十五課嵌入式GUIOpenGLES2.0OpenGL(全寫OpenGraphicsLibrary)是個定義了一個跨編程語言、跨平臺的編程接口的規(guī)格,它用于三維圖象(二維的亦可)OpenGLES(OpenGLforEmbeddedSystems)是OpenGL三維圖形API的子集,針對手機、PDA和游戲主機等嵌入式設備而設計從OpenGL裁剪定制而來的,去除了glBegin/glEnd,四邊形(GL_QUADS)、多邊形(GL_POLYGONS)等復雜圖元等許多非絕對必要的特性免授權費的,跨平臺的,功能完善的2D和3D圖形應用程序接口API17第十五課嵌入式GUIOpenGLES2.0

兩個版本OpenGLES1.x針對固定管線硬件的OpenGLES2.x針對可編程管線硬件。KhronosGroup在2005-8發(fā)布commonprofileKhronos是一個圖形軟硬件行業(yè)協(xié)會,該協(xié)會主要關注圖形和多媒體方面的開放標準。業(yè)界標準應用程序編程接口(API)可以大大提高不同消費電子設備的3D圖形渲染速度,在嵌入式系統(tǒng)上實現(xiàn)了全面可編程的3D圖形18第十五課嵌入式GUI具體使用,參考浙江大學《智能終端軟件開發(fā)》中openGLes課件19第十五課嵌入式GUI20

20課程大綱

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI簡介

XWindows

Tiny-X體系結構

QT

MiniGUI

第十五課嵌入式GUI21嵌入式GUI簡介嵌入式設備對GUI的限制

CPU速度相對來說較慢,一般不具備浮點運算功能或浮點運算功能較弱內存、外存容量小電量有限嵌入式GUI設計包括以下3個方面:硬件設計,通過LCD控制器把LCD顯示器和開發(fā)系統(tǒng)連接起來。驅動程序設計,為輸出輸入設備如LCD設計驅動程序,使硬件能驅動起來用戶界面程序設計,使用嵌入式系統(tǒng)提供的函數(shù)庫進行圖形化程序設計21第十五課嵌入式GUI嵌入式GUI的模塊GUI用戶接口模塊為上層應用軟件開發(fā)人員提供方便、易用的API接口函數(shù)屏蔽了GUI的設備實現(xiàn)細節(jié)GUI對象模塊對窗口環(huán)境中的邏輯對象進行組織管理包括對象的添加、刪除引發(fā)的對象鏈表的更新,以及GUI窗口顯示的維護,如窗口切換、焦點切換、對象的隱藏和恢復等操作引發(fā)的對象屬性的更新,還有對不同控件的各種事件的響應GUI基本圖形模塊實現(xiàn)對顯示輸出設備的操作,如畫點、畫線、畫矩形等基本功能對于字符的解析輸出,以及對圖形的解析輸出獨立于具體的設備驅動程序,與物理設備之間形成“設備抽象層”GUI消息驅動模塊負責GUI的消息接收和與其它任務的通訊以及消息隊列的維護22第十五課嵌入式GUI嵌入式GUI的特點可移植性較高的穩(wěn)定性和可靠性系統(tǒng)開銷少占用的存儲空間以及運行時占用資源少運行速度以及響應速度快較高可配置性可裁減性、界面特性配置、皮膚和主題配置23第十五課嵌入式GUI嵌入式GUI系統(tǒng)結構一個能夠移植到多種硬件平臺上的嵌入式GUI系統(tǒng),應用至少抽象出兩類設備基于圖形顯示設備(如VGA卡)的圖形抽象層GAL(GraphicAbstractLayer)基于輸入設備(如鍵盤,觸摸層等)的輸入抽象層IAL(InputAbstractLayer)[2]24第十五課嵌入式GUI目前在嵌入式系統(tǒng)比較流行的GUI國外Qt/Embedded是一個C++函數(shù)庫,支持真正的組件編程MicroWindows開放源碼,C/S結構,三層,LGPLOpenGUI適合于x86,可移植性比較差Tiny-X是標準X-windows系統(tǒng)的簡化版國內MiniGUI基于Linux,輕量級自由軟件,LGPL清華大學教師魏永明先生Kingmos-GWME消息事件驅動,豐富的基本控件和高級控件2525第十五課嵌入式GUI26對比MiniGUIMicroWindowsQT/EmbeddedAPIWin32風格X,Win32的子集QT(C++)API是否完備是Win32支持賞不完備是函數(shù)庫的典型大小500K600K1.5M可移植性很好很好較好(但函數(shù)庫本身的跨平臺交叉編譯很困難)授權條款GPL/商業(yè)許可證MPL/LGPLQPL/GPL/商業(yè)許可證多進程支持好X接口的多進程支持好,Win32的接口尚不支持好健壯性/穩(wěn)定性好一般一般多語種支持獨特的多字符集支持功能,更加適合嵌入式系統(tǒng)一般采用UNICODE,但效率低可配置和可定制性好(提供了大量編譯配置選項,可配置能力很強)一般差系統(tǒng)資源耗費?。ǘ嗑€程和MiniGUI-Lite均是針對最小系統(tǒng)資源消耗設計)較大(基于UNIX套接字的傳統(tǒng)客戶/服務器體系,進程間的通訊頻繁,系統(tǒng)資源消耗較大)最大(用C++實現(xiàn),系統(tǒng)資源消耗最大)效率好一般一般操作系統(tǒng)支持Linux/uClinux,eCos,uC/OS-II,VxWorks等LinuxLinux已知能運行的的平臺x86、ARM、MIPS、PowerPC、StrongARM主頻最低需30MHz。x86、ARM、MIPS、StrongARM主頻最低需70MHz。x86、ARM、StrongARM主頻最低需100MHz。使用是否廣泛在中國大陸、臺灣地區(qū)等使用廣泛。產(chǎn)品涉及普通PC上的Linux發(fā)行版、PDA等手持設備、彩票機/POS機、機頂盒等等。主要針對手持設備。用戶主要限于美國,國內有少數(shù)用戶。主要針對高端手持設備。在歐美、韓國等地區(qū)使用較為廣泛。第十五課嵌入式GUI27

27課程大綱

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI簡介

XWindows

Tiny-X體系結構

QT第十五課嵌入式GUI28XWindows架構采用客戶端/服務器的設計概念XWindows由3部分組成客戶端服務器X協(xié)議XWindows是事件驅動大部分時間處于一種等待事件發(fā)生的狀態(tài)28第十五課嵌入式GUI29XWindows的基本的API函數(shù)庫29第十五課嵌入式GUI30

30課程大綱

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI簡介

XWindows

Tiny-X體系結構

QT

MiniGUI

第十五課嵌入式GUI31Tiny-X系統(tǒng)框架標準X-windows系統(tǒng)的簡化版設計目標在小容量內存的環(huán)境下運行適合用作嵌入式linux的GUI系統(tǒng)采用標準的Client/Server體系結構在嵌入式系統(tǒng)中使用Tiny-X圖形用戶界面開發(fā)產(chǎn)品,上層的應用程序的編寫很方便31第十五課嵌入式GUI32Tiny-X系統(tǒng)架構32第十五課嵌入式GUI33FrameBuffer――幀緩沖器TinyX(Xfbdev)――TinyX為Xwindows的微縮版,有經(jīng)過精簡的Xlib類庫Glib――包括一些基礎數(shù)據(jù)類型和典型的C程序需要的功能GDK――是建立在Xlib上的針對圖形圖像類封裝的底層圖形庫

Tiny-X結構說明(1)33第十五課嵌入式GUI34Tiny-X結構說明(2)GTK建立在Xlib和GDK上的高級面向對象的類庫窗口管理器(QVWM)一種類似于window95風格的窗口管理器GladeGTK的集成開發(fā)環(huán)境34第十五課嵌入式GUI35Tiny-X庫的調用關系

35第十五課嵌入式GUI36

36課程大綱

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI簡介

XWindows

Tiny-X體系結構

QT

MiniGUI

第十五課嵌入式GUIQt基礎Qt是跨平臺的C++圖形用戶界面(GUI)工具包,它是TrollTech公司的標志產(chǎn)品。Qt工具包有兩種不同的版本一種是用于商業(yè)性質的專業(yè)版另一種是用于開發(fā)X平臺自由軟件的自由版用自由版開發(fā)軟件都必須作為自由軟件公開如果要用Qt編寫非自由軟件,則需要購買專業(yè)版。Qt是一種跨平臺的GUI工具包,軟件能非常方便地應用于絕大多數(shù)操作系統(tǒng)MicrosoftWindows,Linux,Solaris,SunOS,HP_UX,DigitalUnix,Irix,FreeBSD,BSD/OS,SCO,AIX37第十五課嵌入式GUIQt特征面向對象:模塊設計,注重軟件構件和元素的可重用性。構件支持:提供signal和slot,對象之間可在不知道對方信息的情況下進行合作。方便性:跨平臺GUI工具包,對編程人員隱藏了處理不同窗口系統(tǒng)時潛在的問題。國際化:Qt用戶界面文本,可以通過消息翻譯表被譯成各國語言。豐富的API完整的組件:按鈕、滾動條、自動布局組件等優(yōu)越的繪圖功能2D/3D圖形潤色功能38第十五課嵌入式GUIQt與X11的關系X11是XWindow系統(tǒng)第11版基于X的應用是通過調用Xlib的庫函數(shù)來實現(xiàn)其各種功能的。Xlib是底層庫在其上又發(fā)展出比Xlib更高層次的庫函數(shù),稱為工具包將一些常用界面圖形或組件按面向對象編程的方式組織到一起,供應用軟件使用。不同公司或組織開發(fā)出不同的工具包,如Xt工具包,Motif工具包,Qt工具包等Qt工具包是優(yōu)秀強大的GUI工具包

linux上流行的桌面環(huán)境KDE是基于Qt開發(fā)出的39第十五課嵌入式GUIQt與X11的關系40第十五課嵌入式GUIQt應用程序的執(zhí)行過程41第十五課嵌入式GUIQt基礎Qt的三個主要基類:1.QObject QObject是所有能夠處理signal,slot和事件的Qt對象的基類。Qt為對象的通信以及signal/slot連接提供了強大的機制,signal/slot機制比傳統(tǒng)的回調規(guī)則更先進。 所有Qt組件都繼承QObject和使用signal/slot機制2.QApplication QApplication類負責GUI應用程序的控制流程和主要的設置,它包含主事件循環(huán)體,負責處理和調度所有來自窗口系統(tǒng)和其他資源的事件,并且處理應用程序的開始、結束以及會話管理,還包括應用程序方面的設置。

QApplication實現(xiàn)的主要功能有:

1)初始化應用程序、并設置用戶桌面的一些特性。如字體設置等。

2)執(zhí)行事件處理,從當前的窗口系統(tǒng)接收事件并將其送給目標組件。

3)解析命令行的變元和設置相應的內部狀態(tài)

4)定義應用程序的外觀和感受

5)指明應用程序如何分配顏色

6)指明默認的文本編碼

7)管理應用程序的鼠標、光標

8)提供完善的會話管理,使用戶注銷時終止應用程序42第十五課嵌入式GUIQt基礎3.QWidgetQWidget類是所有用戶接口對象的基類,它繼承QObject類的屬性。組件是用戶界面的單元組成部分,它接收鼠標、鍵盤和其他從窗口系統(tǒng)來的事件,并把它自己畫在屏幕上。一個不能移植到其父組件的組件成為頂層組件QWidget類有很多成員函數(shù),但是一般不直接使用,而是由其子類繼承,使用函數(shù)功能。所有的組件都繼承QWidget類,因此它的屬性其他組件都可以用。組件通常以QWidget類的抽象子類作為基類,利用基類的屬性并加上自己的特性作為它自己特有的屬性。如QPushButton以QButton為基類,而QButton是QWidget的抽象子類,它的屬性可以被子類所繼承,而它卻不能自己使用,即一般構建的是QButton的子類。43第十五課嵌入式GUIQt與MotifQt是基于Xlib的工具包,Motif是基于Xt的工具包,而Xt是基于Xlib的工具包,因此二者建立的底層基礎是相同的。兩者的關系如圖44第十五課嵌入式GUIQt與Motif的區(qū)別編程語言和結構:Qt使用C++語言,具有面向對象的特點,而Motif使用的是C語言,因此Qt編寫的程序易懂、易維護內涵:Qt僅是一種圖形用戶界面的工具包和開發(fā)工具;而Motif除了高級工具包外,還代表窗口管理器MotifWindowManager,還代表一種圖形用戶界面的風格,即Motif風格應用范圍:Qt具有跨平臺的特性,可以在UNIX和Windows等操作系統(tǒng)上使用;而Motif則只能在UNIX上使用,不具有適應多種平臺的特性,適應范圍小圖形:Qt圖形功能更強大,Motif實現(xiàn)圖形功能方面有時還需要利用Xlib的函數(shù)來實現(xiàn)速度:Qt的速度比Motif快45第十五課嵌入式GUIKDE簡介KDE是一種圖形桌面集成環(huán)境,是一套使Unix系統(tǒng)擁有圖形操作集成環(huán)境的軟件。KDE起源于1996年10月,由德國人MattiasEttrich發(fā)起的KDE組織(KDesktopEnvironment)計劃的內容標準的拖放機制;統(tǒng)一的應用程序框架;類似ActivX的機制;大量軟件,如KFM(K),KPresnenter(類似PowerPoint),KIllustration、KOrganizer等;KDE的底層是XServer,然后是KWM(KWindowManager),KFM(K)和許多不同種類的客戶/服務器等。KDE為用戶提供了方便且全面的服務,并有專門的KDE小組維護這套軟件KDE支持的操作系統(tǒng)有:Linux,FreeBSD,Solaris,HP_UX和MKLinux等。46第十五課嵌入式GUIKDE3.2桌面47第十五課嵌入式GUIQt的結構48第十五課嵌入式GUIQtEmbedded結構49第十五課嵌入式GUIQtopia結構50第十五課嵌入式GUI51

51課程大綱

嵌入式GPU

嵌入式OpenGLES2.0

嵌入式GUI簡介

XWindows

Tiny-X體系結構

QT

MiniGUI第十五課嵌入式GUIMINIGUI面向嵌入式系統(tǒng)的高級窗口系統(tǒng)(WindowingSystem)和圖形用戶界面(GraphicalUserInterface,GUI)支持系統(tǒng)魏永明先生于1998年底開始開發(fā)2002年創(chuàng)建北京飛漫軟件技術有限公司提供商業(yè)技術支持,同時也繼續(xù)提供開源版本飛漫軟件是中國地區(qū)為開源社區(qū)貢獻代碼最多的軟件企業(yè)最后一個采用GPL授權的MiniGUI版本是1.6.10,從MiniGUI2.0.4開始MiniGUI被重寫并使用商業(yè)授權支持Linux/uClinux、eCos、uC/OS-II、VxWorks、ThreadX、Nucleus、pSOS、OSE等操作系統(tǒng)和數(shù)十種SoC芯片,已驗證的硬件平臺包括ARM-basedSoCs、MIPSbasedSoCs、IA-basedSoCs、PowerPC、M68K(DragonBall/ColdFire)、Intelx86等等,廣泛應用于通訊、醫(yī)療、工控、電力、機頂盒、多媒體終端等領域52第十五課嵌入式GUIMINIGUI3.0/4.0圖形抽象層(GraphicsAbstractionLayer,GAL)。輸入抽象層(InputAbstractionLayer,IAL)。圖形設備接口(GraphicsDeviceInterfaces,GDI)。消息處理模塊(MessagingModule)。多窗口處理模塊(WindowingModule)和控件(Control或Widget)。外觀支持(LookandFeel)。53第十五課嵌入式GUIMiniGUIhelloworld#include<stdio.h>#include<minigui/common.h>#include<minigui/minigui.h>#include<minigui/gdi.h>#include<minigui/window.h>

intMiniGUIMain(intargc,constchar*argv[]){MSGMsg;HWNDhMainWnd;MAINWINCREATECreateInfo;

#ifdef_MGRM_PROCESSESJoinLayer(NAME_DEF_LAYER,"helloworld",0,0);#endifCreateInfo.dwStyle=WS_VISIBLE|WS_BORDER|WS_CAPTION;CreateInfo.dwExStyle=WS_EX_AUTOSECONDARYDC;CreateInfo.spCaption="Hello,World";CreateInfo.hMenu=0;CreateInfo.hCursor=GetSystemCursor(0);CreateInfo.hIcon=0;CreateInfo.MainWindowProc=DefaultMainWinProc;CreateInfo.lx=0;CreateInfo.ty=0;CreateInfo.rx=g_rcScr.right;CreateInfo.by=g_rcScr.bottom;CreateInfo.iBkColor=COLOR_lightwhite;CreateInfo.dwAddData=0;CreateInfo.hHosting=HWND_DESKTOP;

hMainWnd=CreateMainWindow(&CreateInfo);

if(hMainWnd==HWND_INVALID)return-1;

while(GetMessage(&Msg,hMainWnd)){TranslateMessage(&Msg);DispatchMessage(&Msg);}

MainWindowThreadCleanup(hMainWnd);return0;}54第十五課嵌入式GUIMiniGUIV3.0主窗口雙緩沖區(qū)(DoubleBufferingMainWindow)當MiniGUI3.0的主窗口具有雙緩沖區(qū)時,可以在自定義緩沖區(qū)中獲得整個主窗口的渲染結果。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論