亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發(fā)設計 > 正文

SVG與UML圖詳解

2019-11-17 04:44:10
字體:
來源:轉載
供稿:網友
一、SVG可縮放矢量圖形(SVG)是W3C的推薦標準,它使用xml描述兩維圖形結構和圖形應用,可以在Web瀏覽器、手持設備或移動電話等多種上顯示。目前穩(wěn)定版本為1.1版,最新的版本是以草案形式存在的1.2版,并未最終定稿。 在SVG中,答應三種圖像對象存在,分別是矢量圖像、點陣圖像和文本。SVG定義了六種常用的基本矢量外形,包括直線、圓形、橢圓形、矩形、多邊形和折線,在此基礎上,利用坐標變換、路徑、動畫、濾鏡圖案等功能擴展,通過多層次組合矢量、點陣以及文本圖,并配以各種屬性,進行矢量繪圖。 經過一段時期的發(fā)展,SVG的業(yè)務領域慢慢也已拓展開來,涵蓋Web圖表、地圖、框圖、流程圖、項目計劃圖等多種類別。構建各個領域中的基本元件庫也成為迫切需求,一些開源項目正以此為目標,提供可重用、基于SVG的元件庫。UML圖可以明確地按照種類劃分,針對不同的種類,提出基本組件,再結合SVG固有的功能,就可以很輕易地使用SVG創(chuàng)建出多種UML應用。 SVG的語法非常簡單,設計人員一般在一天之內就會熟悉,IBM Developerworks中也有SVG的專題討論,這里也就不再贅述了。 二、UML圖UML是目前最常用的一種面向對象建模語言,主要包括七種常見的類型,即用例圖、類圖、序列圖、狀態(tài)圖、活動圖、組件圖和部署圖,分別用以不同的建模用途。
  • 類圖,類圖可以將一組類、界面、合作以及上述元素之間的關系顯示出來,通常分為邏輯類和實現類。
  • 組件圖,以可視化方式提供系統的物理視圖,顯示系統中組件的依靠關系。
  • 部署圖,顯示系統如何物理部署到硬件環(huán)境之中,是節(jié)點和連線的集合。上面三種UML圖都是對系統靜態(tài)特征進行建模,下面的四種描述系統動態(tài)特征。
  • 用例圖,描述系統的功能單元,它以圖形化的方式表示系統內部的用例,系統外部的參考者,以及它們之間的交互。
  • 序列圖,強調時間順序,顯示特定用例的具體流程。順序圖有兩維:垂直方向是以時間順序顯示消息/調用序列,水平方向顯示消息發(fā)送到的對象實例。
  • 狀態(tài)圖,描述系統動態(tài)特征,包括狀態(tài)、轉換、事件以及活動等。
  • 活動圖,描述系統在處理某項活動時,兩個或多個對象之間的過活動流程。
UML中還包含其它一些圖,例如對象圖、包圖、組合圖等,以及演化出的一些新的概念,如模板(Stereotypes)、職責 (Responsibilities)、擴展機制(Extensibility mechanisms)、線程(Threads)、過程(PRocesses)、分布 式(Distribution)、并發(fā)(Concurrency)、模式(Patterns)等,是否使用要依據建模過程中系統的層次、分類和大小等具體情況而定。誠然,對于個體來說,我們并不會用到所有的符號,但一個完整的UML建模工具卻是要盡可能詳盡地考慮到UML中豐富的符號語法和語義信息。在這里,我們無法描述清楚使用SVG繪制每種UML符號的方法,我們要關注的是UML基本符號元件的劃分以及使用SVG繪制UML圖的一些常用方法和便利之處。 三、UML基本元件上面是按照功能對UML圖形進行的分類,繪制UML圖形時,我們的視圖并不是功能視圖,而是功能視圖之上的元件視圖。類圖和用例圖在功能上是不同的,但從SVG的角度看,它們都由方框、線條以及文字組成。不同類型的UML圖都會有專屬的繪圖元件。在抽象級別較高的情況下(方框、線條、文字的抽象級別最高),同屬一類UML圖形的元件集合就會非常小;抽象級別越低,集合就會越大。但是太低層次的抽象卻是無意義的(最低的情況是每個UML圖都可看成一個元件,這是最具體的),要害是如何找到一個折衷點,既能保證有著元件集較小,又能方便繪圖。SVG提供的基本繪圖功能本來也是可以進行UML繪圖的,但是這樣做效率會比較低。建立起基本的UML圖形元件庫,會大大提高繪圖質量和速度?,F有的UML建模工具中,都有比較清楚的UML建模元件分類。我們這里以Visio Professional 2002為例,看一下UML模型圖的元件分類情況。 在Visio的軟件模具里,包括數據流模型圖、程序結構圖、ROOM、Jackson圖和UML模型圖等。Visio中UML圖的功能分類比上述常用分類要多出兩項,包圖和靜態(tài)結構圖。包圖是表達系統架構的有效機制,它可以用來將系統劃分為較小的、易于治理的子集,它可以由任何一種UML圖組成。靜態(tài)結構圖包括概念圖和類圖,概念圖代表現實世界中的概念以及概念之間的關系,它側重于關系和屬性,而不是方法。 圖一是Visio按照功能分類方法劃分的UML圖的基本元件。可以看出,這種分類方法是有很多重疊的,例如,包在用例圖等四種UML圖中都被看成基本元件。但這樣做,在分類清楚的基礎上,可以提高用戶訪問模板元件的速度;忽視UML功能分類,完全訪問集合要包含一百個左右的成員,訪問元件的效率可能會較低。 或者,我們也可以結合這種按照功能進行分類的方法,根據視覺特征將UML基本元件分組,然后在每種視覺特征分組下,再按照功能進行分組。使用SVG繪制UML圖形,這有可能會是一種較好的分類復用的方法。這樣我們不僅可以保證用戶快速地訪問到UML元件,而且在基于SVG的建模工具內部也易于治理。例如,我們可以進行這樣的分類:
  • 人形元件,表示用例圖中的主角;
  • 橢圓形元件,也即用例圖中的用例;
  • 折角元件,包括注釋和約束;
  • 包元件(包括包和子系統)、節(jié)點元件(立方體外形)和組件元件;
  • 抽屜類矩形元件,這一組元件有許多變體,不同之處在于頂端標注缺省文字間以及格層數會有差異,包含長式和短式兩種格式;
  • 圓形元件,包括"初始狀態(tài)"、"最終狀態(tài)"、"具體歷史"及"簡略歷史";
  • 圓角矩形類元件和菱形元件;
  • 帶有各類箭頭的直線類,包括實線、虛線;
  • 帶有各類箭頭的曲線類,包括實曲線和虛曲線;
  • 其它一些少數非凡外形元件;
SVG與UML圖詳解(圖一)
(點擊查看原圖)

圖一 Visio中的UML圖形元件
初看起來,可能會覺得這種分類有些雜亂,但這樣的分類卻是從SVG角度出發(fā)對UML圖元做出的分類,適合SVG建模軟件底層存儲。例如,包元件的SVG模板代碼如下: <line x1="15" y1="114" x2="154" y2="114" style="fill:#1a1a1a; stroke:#1a1a1a; stroke-width:1"/><line x1="154" y1="35" x2="154" y2="113" style="fill:#1a1a1a; stroke:#1a1a1a; stroke-width:1"/><line x1="104" y1="15" x2="104" y2="53" style="fill:#1a1a1a; stroke:#1a1a1a; stroke-width:1"/><rect x="14" y="14" width="90" height="21" style="fill:#ffffff; stroke:#ffffff; stroke-width:1"/><rect x="14" y="14" width="89" height="20" style="fill:#ffffff; stroke:#000000; stroke-width:1"/><rect x="14" y="34" width="140" height="80" style="fill:#ffffff; stroke:#ffffff; stroke-width:1"/><rect x="14" y="34" width="139" height="79" style="fill:#ffffff; stroke:#000000; stroke-width:1"/></svg>SVG與UML圖詳解(圖二)

圖二 SVG繪制的包模板元件上面這些語句,可以作為包模板元件的SVG源碼進行存儲,這時尺寸相關的屬性值設置僅表示比例關系。使用模板元件時,各部分尺寸依據存儲時的缺省值按照比例進行放大或縮小,其余屬性值則不涉及運算,直接把新值替代缺省值即可。未出現的模板中的屬性在使用過程中可以自行加入。 四、使用SVG繪制UML圖的一些技術SVG是一種基于XML、數據驅動的網絡繪圖標準。可以結合XHtml作為一個文件單獨使用,例如: <?xml version="1.0" encoding="iso-8859-1"?> ... <svg width="800" height="600"> <circle cx="200" cy="200" r="100"/> </svg> 也可以嵌套在網頁中使用,如下:<embed width="320" height="240" type="image/svg-xml" id="svg" pluginspage="http://www.adobe.com/svg/viewer/install/" src="default.svg" > </embed>一般說來,在繪制UML圖的時候,主體很少會用中文進行描述,但在注釋中就難免需要使用中文。SVG目前還不支持中文編碼,在碰到中文字符的時候,需要使用UTF-8編碼,這樣就可以有效避免不同的語言環(huán)境下的字符編碼問題。下面就繪制UML圖的過程中,SVG技術帶來的一些好處進行探討。 * 動態(tài)顯示注解信息對UML圖進行注解是有必要的。我們可以在UML圖下面寫上整段整段的注解,但這樣做似乎針對性不強,不輕易把事物講清楚?,F在好的方法是把事物按照組成部分細分,并針對性地進行說明。就如通用軟件的工具提示一樣,我們也可以利用SVG在UML圖上實現近似功能。 SVG把圖元看作一個個對象,并且提供DOM接口可直接訪問對象及其屬性,SVG亦提供了事件響應函數可獲取界面、鼠標以及一些自定義的事件消息。有了這些支持,再加上SVG的對象分組功能(<g>分組標簽)以及javaScipt或Java綁定,就可以順利地完成動態(tài)顯示注解信息的功能。 以前面的包代碼為例,來看一下如何利用JavaScipt動態(tài)顯示注解信息。 <script><![CDATA[function show_note(evt) {var SVGDoc = evt.getTarget().getOwnerDocument();var note = SVGDoc.getElementById("note");var style = note.getStyle();style.setProperty("visibility", "visible");}]]></script><g id="package" onclick="show_note(evt)">包模板代碼,此處省略</g><g id="note" x="100" y="100" style="visibility:hidden" desc="note info">注解代碼,此處省略</g>
在上面這段代碼中,包含兩個分組對象,一個是待注解的對象,另外一個是注解本身。前面的一段Javascript代碼的功能是處理待注解對象的點擊事件,顯示注解對象。注解對象可以選擇點擊注解對象本身或再次點擊待注解對象進行關閉,代碼與此段JavaScript代碼相似。 另外,還可以在待注解對象與注解對象之間建立一條虛線,表示兩者之間有關系。 <path d="M5,5 C5,45 45,45 45,5" style="stroke:red; fill:none; stroke-linecap:but; stroke-dasharray:5,3,2"/>其中路徑中的M表示Moveto(移動到),C表示Curve(貝賽爾曲線控制)。虛線也可跟隨注解對象同時顯示或消隱。 * 以Highlight + Slide方式講解UML圖

有時我們需要給別人講解UML圖,那么除了具備上面的注解功能之外,還需擁有高亮以及幻燈顯示等功能,SVG可以輕松地做到這一點。 <script><![CDATA[function highlight(evt) {var object = evt.getTarget();var style = object.getStyle();style.setProperty("fill", "red");}function restore(evt) {var object = evt.getTarget();var style = object.getStyle();style.setProperty("fill", "#ffffff");}]]></script><rect x="14" y="14" width="90" height="21" style="fill:#ffffff;stroke:#ffffff;stroke-width:1"onmouSEOver=" highlight(evt) " onmouseout="restore(evt)"/></rect>也可以這樣: <rect x="14" y="14" width="90" height="21" style="fill:#ffffff;stroke:#ffffff;stroke-wid th:1" /> <set attributeName="fill" from="#ffffff " to="red" begin=" mouseover" end=" mouseout"/> </rect>幻燈片都是以Slide方式一頁一頁進行演示的,我們假如要講解一個軟件系統,或者說交付系統設計方案,也可以直接使用SVG來完成。在SVG中,結合<a>標簽或<set>標簽,和xlink:href 屬性一起可以建立一個鏈接,這個功能使得Slide方式得以實施。結合JavaScript函數setTimeout可實現自動Slide Show。 <svg><a xlink:href="http://…/slide_1.svg"/>…</a> </svg><g id="object"> …</g><set id="object" xlink:href="http://…/slide_1.svg"/>* 分層與圖分解

現在的系統越來越復雜,直接導致UML圖也變得越來越復雜,在一張紙上繪制整個圖已經是無能為力了。UML中提供了包的概念來解決這個問題,在SVG中則可以使用分層以及圖分解來顯示我們感愛好的部分。屬性childNodes、firstChild等可以訪問分組節(jié)點的子節(jié)點,借助于它們可以完成圖層治理功能。 我們可以在XHTML頁面中加入一些Checkbox,用于顯示/隱藏非愛好區(qū)域,也可實現SVG自己的Checkbox來完成這項工作,下面就是相關代碼: <script><![CDATA[var kclick = false;function check(evt) {var SVGDoc = evt.getTarget().getOwnerDocument();var check_off = SVGDoc.getElementById("check_off");var check_on = SVGDoc.getElementById("check_on");var off_style = check_off.getStyle();var on_style = check_on.getStyle();if (kclick){off_style.setProperty("visibility", "visible");on_style.setProperty("visibility", "hidden");}else{off_style.setProperty("visibility", "hidden");on_style.setProperty("visibility", "visible");}kclick = !kclick;}]]></script><g id="check_off" onclick="check(evt)"><rect width="10" height="10" stroke-width="1" stroke="rgb(100,100,100)" fill="white"/></g><g id="check_on" visibility="hidden" onclick="check(evt)"><rect width="10" height="10" stroke-width="1" stroke="rgb(100,100,100)" fill="white"/><line x1="1" y1="1" x2="9" y2="9" stroke="black"/><line x1="1" y1="9" x2="9" y2="1" stroke="black"/></g><text x="20" y="10">Check Box 1</text>
要顯示/消隱其它的組也可以直接放在check函數中if語句范圍內來實現。 點擊UML中的包或其它需要具體描述的單元,顯示其中的內容,就能實現將大圖分解為小圖的功能。這部分代碼與上面Slide Show的代碼如出一轍,改動很少,在這里就不再贅述了。 * 后臺實時更新

元數據在UML圖中扮演著重要的角色,元數據經常會發(fā)生變動。實時地將更新的元數據信息發(fā)布在網上,是必要的活動。在C/S體系結構下,裝有SVG Viewer的客戶端要完成SVG文件實時更新,需要得到后端服務器中存儲的數據。假如使用Adobe SVG Viewer和Batik的話,就能借助SVG標準之外的擴展函數getURL得到服務器中的數據。 function go() {getURL('/2004/2/data.1',fn);}function fn(obj) {alert(obj.content);setTimeout('go()',5000);} 當然了,后端服務器中數據源也可以是數據庫。SVG API提供了克隆或生成新元素插入現有DOM的方法,我們可以編寫Java程序訪問服務器中的數據庫,將元信息取出,生成新的SVG文件,或在現有SVG DOM中進行修改,反映出元信息的變化。下面的代碼是生成SVG文件的一個框架。 import org.apache.batik.dom.svg.SVGDOMImplementation;import org.w3c.dom.Document;import org.w3c.dom.Element;DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;Document doc = impl.createDocument(svgNS, "svg", null);// 得到SVG根元素Element svgRoot = doc.getDocumentElement();// 設置根元素的width和height屬性值svgRoot.setAttributeNS(null, "width", "400");svgRoot.setAttributeNS(null, "height", "450");// 訪問數據庫中的元信息,結合底層UML模板元件,生成新的SVG元素……// 把新元素連接在SVG根元素上svgRoot.appendChild(…);其中,訪問數據庫部分內容被省略掉,在這里,要害是要結合UML模板元件,這樣就可快速準確地生成新的SVG組元素。 SVG還支持一些其它的功能,例如濾鏡、聲音等,也可以用來描述UML圖,在這里就不再多說了,有愛好的讀者可以翻閱相關書籍,這里僅僅是提出一些想法,實現時還需要不厭其煩地關注一些細節(jié)信息。 五、相關工具

現有的UML建模工具中,已有許多可以直接輸出SVG格式,如Visio 2003就可以輸出SVG文件。另外,Adobe的Illustrator9中也內嵌了SVG輸出功能,Corel Draw9提供輸出SVG文件的插件,這些工具本身并不是UML建模工具,只是通用矢量繪圖工具,使用它們進行UML建模,會比較吃力一些。而且,這些工具不能對復雜的交互功能建模,因此可作為基本繪制工具來使用。 常見的SVG瀏覽工具有Adobe、CSIRO和Corel的SVG Viewer,Bitstream Viewer,它們都是瀏覽器的插件。IBM也用Java語言制作了一個瀏覽SVG文件的工具SVG View。除了IE以后,AMaya和Mozilla瀏覽器都內嵌支持SVG。 下表是常見的可以導出SVG格式的UML建模工具以及可用于UML建模的SVG編輯工具。 軟件名稱功能ArgoUML一種基于Java的開源UML OO建模工具,Argo是古希臘英雄Jason的戰(zhàn)船。ArgoUML支持軟件設計者的認知需求,廣泛地支持開放標準,如UML、XMI、SVG、OCL等。Batik 1.1 SVG ToolkitApache Batik工具包提供JAVA組件創(chuàng)建(SVGGraphics2D)、瀏覽(JSVGCanvas)和轉換(Transcoder)SVG。CatWalkSchemaSoft的軟件工具,用于快速實時創(chuàng)建SVG Web應用。在向網站請求數據時,每次都會重新發(fā)布數據變化。可以用來實時更新UML圖。Dia一種基于GTK+的制圖工具,很像Visio。有一些非凡對象可以幫助繪制實體關系圖、UML圖、流程圖、網絡圖,等等,可以將圖以EPS和SVG格式輸出。DoME(Domain Modelling Environment)一種元case系統,用于構建面向對象軟件模型(CY OOA和UML),有自已的后端圖形語言。Gill即Gnome Illustration app,是基于Gnome的一種通用矢量繪圖工具,本身并沒有對UML提供過多的支持,最終會支持所有的SVG特性。Gmodeler一個免費在線UML繪圖和文檔工具,使用FlashMX開發(fā),并不支持輸出SVG格式,但可作為SVG UML建模軟件的原型參考。GraphvizATT出版的開源繪圖軟件,有linux和Windows版本,包括一個名為Webdot的web服務接口。JSeq可以自動創(chuàng)建UML序列圖的工具,可輸出格式Zargo和SVG??瑟毩⑹褂没蚺cJUnit一起使用。MagicDraw UML非常強大的建模工具,基于JAVA開發(fā),可以輸出SVG格式文件。OptimalJ用于NetBeans的一種UML類圖編輯器,使用Batik輸出SVG。Poseidon for UML基于ArgoUML,與其界面基本相同,完全由Java實現,非開源的UML建模工具。與ArgoUML相比,功能要更豐富,更穩(wěn)定。SVG Maker一個獨立的軟件組件,可以作為系統的一部分進行布署。SVG Slide Toolkit它可以把XML文件轉化為SVG幻燈格式,不過用起來似乎有些慢。Together Control Center 5.5經常使用的一種集成化開發(fā)平臺,使用Batik輸出SVG格式的UML圖。Visual Paradigm for UML Community Edition支持所有UML圖,可作為圖形輸出SVG、JPG和PNG等格式,執(zhí)行復雜圖的打印。支持從事件流生成序列圖,從序列圖生成組合圖的功能。asp?">WebDrawJASC,也就是開發(fā)Paint Shop Pro的那家公司,提供的一個商業(yè)SVG可視編輯器。表一 支持SVG格式的UML建模工具及可制作UML的SVG編輯工具
六、結論今天,絕大多數Web圖像仍然采用JPG、GIF或PNG等位圖文件格式,盡管應用了各種壓縮算法,文件尺寸還是不能大大降低。加之缺乏足夠的多媒體信息和交互手段,為進一步應用造成了障礙。基于矢量的圖形,如SVG、Flash、VML等可以很好的解決Web圖形文件尺寸較大的問題。在這個領域中Flash文件已經得到了較好的應用,VML逐漸被SVG和Flash所淘汰,競爭的焦點集中在SVG和Flash上。未經壓縮的SVG文件尺寸較大,同樣的圖形使用SWF格式存儲要小很多。經過節(jié)壓縮的SVGZ格式與SWF格式尺寸相近,大小僅相差5%-10%左右。SVGZ可以直接由瀏覽器來瀏覽。因為W3C的大力推廣,SVG/SVGZ還是具有相當競爭力的。 利用SVG在線發(fā)布UML圖,并不是一項全新的應用,現有的一些大型建模軟件都提供了輸出SVG文件的功能,但是這些系統卻過于龐大,不利于快速靈敏地進行建模。因此,現有的靈敏建模方法甚至推薦僅使用紙筆來繪制一些不太正式的UML圖,事實上,這種方法在實際使用過程中經常也會獲得一定程度地成功。但這種方法繪制出的UML圖并不總是能夠正確地捕捉,而且代碼更新所帶來的變化也不能持續(xù)地反映出來。由此可以看出,這些方法都有不足之處,最好是利用輕量級UML建模工具靈敏快速地建模,然后存儲為SVG格式,直接將其在網絡上發(fā)布。當然了,基于SVG的建模工具是應當能夠比較充分地支持SVG標準,除了支持基本的繪圖功能之外,還要支持SVG圖形的交互功能和動畫特性,這一點很多通用建模工具是不可能完成的。另外,一些開源項目也在研究基于SVG的組件庫。整體上來說,SVG的功能絕不僅僅限于繪制各種各樣的UML圖,但是,SVG的流行肯定與UML圖形是分不開的,假如可以更好地對UML圖進行支持,例如開發(fā)基于SVG格式的UML組件庫,構建基于SVG格式的UML建模工具,那么SVG格式或許也能因此而更加流行。在這一領域,還有許多工作需要完成。 參考資料
  • ArgoUML,一個可視化的開源建模工具。
  • Christian Nentwich et al. BOX: Browsing objects in XML, Softw. Pract. EXPer. 2000; 30:1661-1676.
  • Ferraiolo J et al. Scalable vector graphics. Working Draft, http://www.w3.org/TR/1999/ - WD-SVG-1999 1203, World Wide Web Consortium, December 1999.
  • Keith Bugg, SVG & Smart Maps, Dr. Dobb's Journal, March 2003.
  • Object by Design的一篇介紹用SVG創(chuàng)建模型圖的文章,Graphics Model Rendered in SVG。
  • Svg.org,OpenWiki中的 asp?SvgArticles">Svg Articles。
  • W3C Working Draft,Scalable Vector Graphics(SVG) 1.2。
  • 請閱讀 Dave Carlson 的書籍 Modeling XML applications with UML: Practical e-Business Applications。
  • 閱讀往期關于SVG的文章:

    • developerWorks中的 SVG專題,里面有教程和文章,可以幫助快速入門。
    • Benoit Marchal撰寫的 developerworks "技巧:用SVG自動創(chuàng)建JPEG" (2003年11月),從中可以了解到使用SVG批量創(chuàng)建JPEG圖形的方法。
    • Nicholas Chase 撰寫的 developerWorks 教程 "伸縮向量圖形介紹"(2002 年 2 月),從中可以了解到SVG技術的優(yōu)點和缺點。
  • 在 developerWorks XML 專區(qū)中尋找更多用于XML 開發(fā)人員的參考資料。
關于作者

車皓陽,中科院軟件所博士研究生。關注于電信網治理、信任治理等領域,對Linux以及開源系統很感愛好。您可以通過grandiose11@MSN.com 與其聯系,歡迎討論相關問題。

張治,上海交通大學圖像處理與模式識別研究所博士研究生。關注于數據集成、模式匹配、復雜性理論等領域。您可以通過 uphenix@hotmail.com 與其聯系,歡迎討論相關問題。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
99精品视频在线免费观看| 国产在线乱码一区二区三区| 国产一区玩具在线观看| 亚洲精品午夜av福利久久蜜桃| 日本在线一二三区| 国产精品一区二区羞羞答答| 在线观看成人小视频| 欧美成人aaa片一区国产精品| 牛牛精品视频在线| 国产99久久久久久免费看农村| 91污色多多| 国产69精品久久久久777| 亚洲欧美自偷自拍另类| 六月丁香婷婷在线| 国产超碰人人爽人人做人人爱| 黄色av片三级三级三级免费看| 欧亚洲嫩模精品一区三区| 91久久一区二区| 日本成人在线免费观看| 中文字幕免费播放| 久久丝袜视频| 99久免费精品视频在线观看| 婷婷久久伊人| 色诱女教师一区二区三区| 97在线免费观看视频| 韩国自拍一区| 婷婷激情一区| 日本动漫理论片在线观看网站| 亚洲黄色在线看| 快播av资源| 国产麻豆精品入口在线观看| 欧美色视频在线观看| 国产精品免费视频一区二区| 欧美高清xxxx性| 伊人久久综合| 男人插女人欧美| 波多野结衣的一区二区三区| 欧美极品xxx| 男女激情免费视频| 天堂av电影在线观看| 免费亚洲视频| 亚洲国产欧美一区| 天堂一区二区三区| 麻豆传媒在线播放| 日韩成人午夜影院| 日韩av超清在线观看| 天堂久久久久久| 麻豆av福利av久久av| 一级黄色在线视频| 欧美猛交xxxxx| 在线日韩一区二区| 123区在线| 国产人妻精品一区二区三区不卡| 99re6在线| 久久av红桃一区二区小说| sese在线视频| 国产夫妻视频| jizz欧美性11| 91国内精品在线视频| free性亚洲| 国产精品亚洲一区二区在线观看| 日韩激情在线| 香蕉成人在线视频| 一个人免费播放在线视频看片| 国产黄色在线播放| 亚洲美女15p| 国产一区二区日韩| 欧美久色视频| 青青在线精品| 久久在精品线影院精品国产| 黄色av电影网站| 久草免费福利在线| 精品国产麻豆免费人成网站| 婷婷丁香综合网| 成人污污视频在线观看| 99久久久无码国产精品性波多| 99亚洲伊人久久精品影院| www.99视频| 亚洲精品乱码久久久久久金桔影视| 欧美性猛交xxx| 国产97免费视| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲加勒比久久88色综合| 精品国模一区二区三区欧美| 国产日韩精品一区二区| www.91在线观看| 免费在线观看h| 欧美日韩精品不卡| 国产成人自拍偷拍| 91国内精品白嫩初高生| 国产精品777777| yellow中文字幕久久| 亚洲第一福利专区| 午夜精品久久久久久久无码| 久久精品国产99国产精品| 国产精品露脸视频| 中文字幕日韩一级| 国产乱子伦精品无码专区| 福利所第一导航| 久久人人妻人人人人妻性色av| 免费国产a级片| 国产av国片精品| 天天躁夜夜躁狠狠是什么心态| 中文字幕电影在线| 亚洲AV无码精品自拍| 国产综合婷婷| 最全影音av资源中文字幕在线| 欧美性猛交xxxxx免费看| 国产精品扒开腿做爽爽爽软件| 男人的天堂成人在线| 中文字幕一区二区三区欧美日韩| 一区二区三区四区高清精品免费观看| 久久成人精品电影| 国产一区国产二区国产三区| 国产精品美女久久久久久久| 一区二区三区精品国产| 国产91精品一区二区麻豆亚洲| 日韩精品亚洲专区| 亚洲理论电影在线观看| 亚洲一级二级| 亚洲色偷偷色噜噜狠狠99网| 日韩精品一线二线三线| 日韩第一区第二区| 国产伦精品一区二区三区精品视频| 成人做爰66片免费看网站| 国产精品视频大全| 99re免费99re在线视频手机版| 成人福利视频在线| 国产精品久久久久一区二区三区厕所| a级黄色片网站| 希岛爱理av免费一区二区| eeuss影院www在线观看手机| 国产精品嫩草在线观看| 久久国产日韩欧美精品| 国产中文字幕在线观看| 日韩最新中文字幕| 一区二区三区国产好的精华液| 成人精品国产免费网站| 四虎影视最新网站入口在线观看| 刘玥91精选国产在线观看| 久久久久久久久久久久久女国产乱| 国产不卡在线播放| 久热中文字幕在线| 亚洲欧美怡红院| 午夜影视一区二区三区| 一本色道久久88亚洲精品综合| 精品人妻互换一区二区三区| 91精品人妻一区二区三区果冻| 美国一区二区三区在线播放| 亚洲午夜精品久久久中文影院av| www.色婷婷.com| 第一站视频久草网| 国产欧美一区二区精品久久久| 一区视频免费观看| 理论片一区二区在线| 日韩xxxx视频| 狠狠色狠狠色综合| 一区二区三区中文字幕| 9久久婷婷国产综合精品性色| 国产精品丝袜久久久久久不卡| 免费毛片aaaaaa| 国产视频在线观看网站| 真实的国产乱xxxx在线91| 欧美a级成人淫片免费看| 免费高清在线视频一区·| 天堂资源最新版在线视频观看免费网| 日韩精品成人一区二区三区| 在线免费亚洲电影| 日产精品一区| free性欧美hd另类精品| 黄色资源网久久资源365| 97久久天天综合色天天综合色hd| 99国产精品国产精品久久| 男女黄床上色视频| 国精产品一区一区三区四川| 中文字幕av一区二区三区谷原希美| 日韩在线一区二区三区免费视频| 一区二区免费视频| 久久久国产精彩视频美女艺术照福利| 久久99精品久久久久久久久久| 欧美久久久久久久久中文字幕| 91国产精品一区| 精品国产av无码| 男女高潮又爽又黄又无遮挡| 亚洲国产精品无码久久| 伊人影院中文字幕| 超碰在线免费看| www.eeuss影院| 久久av在线播放| 亚洲国产日产av| 天天摸天天碰天天爽天天弄| 884aa四虎影成人精品一区| 亚洲精品自在久久| 伊人久久大香伊蕉在人线观看热v| 日韩精品aaa| 成人h视频在线| 日韩小视频在线| 黄网站免费入口| jvid一区二区三区| 久久久久久97三级| www.国产精| 91福利在线播放| 日韩欧美亚洲v片| 奇米综合一区二区三区精品视频| 不卡精品视频| 国产日韩欧美一区在线| 99re6这里只有精品| 杨钰莹一级淫片aaaaaa播放| 亚洲欧美另类自拍| 成人爽a毛片一区二区免费| 国产成人综合在线播放| 韩日成人影院| 国产在线观看91精品一区| 人妻中文字幕一区| 先锋影音资源999| 欧美大片免费播放| 日韩不卡在线视频| 精品一区二区三区免费观看| 情趣网站在线观看| 91av在线免费播放| 日本精品性网站在线观看| 亚洲精品蜜桃乱晃| 国产91丝袜在线播放九色| 成年人视频免费在线观看| 无码内射中文字幕岛国片| 日韩一区中文| 一本到av在线| 亚洲精品va在线观看| 国产日韩欧美自拍| 丰满岳乱妇一区二区三区| 国产精品国三级国产av| 久久香蕉国产| 国产一区二区在线播放视频| 性欧美videosex高清少妇| 国产情人综合久久777777| 国产免费人做人爱午夜视频| 日韩欧美高清dvd碟片| 国产精品免费一区二区三区都可以| 国产精品com| 色综合天天狠狠| 国产91av在线播放| 国内精品伊人久久久久av一坑| 麻豆传媒在线观看| 9.1国产丝袜在线观看| 国产精品2018| 精品av导航| 性网站在线看| 粉嫩tv在线播放| 91视频 - 88av| 亚洲视频一二区| 欧美777四色影视在线| 亚洲国产高清在线观看视频| 美女又黄又免费的视频| 日韩欧美一区二区三区四区五区| 99re在线视频观看| 偷拍精品一区二区三区| 娇妻高潮浓精白浆xxⅹ| 日韩欧美在线视频免费观看| 亚洲欧美日韩一区二区三区在线观看| 国产色在线视频| 国内av一区二区| 天天射天天干天天| 中文字幕视频三区| 一区中文字幕在线观看| 国产成人一区二区三区小说| 国产又粗又长又大的视频| 国产精品视频观看| 性少妇videosexfreexxx片| 精品久久久久久久久久久久| 久久一区二区视频| caoporn国产精品免费视频| 亚洲欧美日韩一区二区三区在线| 日韩电影大全网站| 97超碰人人干| 日韩久久免费av| 国产精品一区二区三区乱码| 国产成人精品一区二区三区福利| 亚洲18私人小影院| 99精品国产高清在线观看| 中文字幕福利视频| 日本高清免费在线视频| 国产极品999| 久久中文字幕视频| 在线日韩中文| 丰满人妻一区二区三区大胸| 中文字幕国语官网在线视频| 国产麻豆永久视频| 免费观影入口看日本视频| 在线观看17c| 精品xxxxxbbbb欧美中文| 羞羞的视频在线观看| 日韩国产精品毛片| 日韩在线观看www| 亚洲最新中文字幕| av在线一区二区三区| 欧美性极品xxxx娇小| 九九视频这里只有精品| 日本成人在线免费视频| 国产理论在线播放| 特级西西444www大精品视频免费看| 欧美一卡2卡三卡4卡5免费| 国产91在线播放九色快色| 欧美日韩国产探花| 国产精品一级伦理| 一本色道久久综合亚洲精品婷婷| 久久精品国产一区二区电影| 中文精品视频一区二区在线观看| 日韩欧美中文| 久久久久久久久久一区二区| 美女污污网站| 精品一区久久| 欧美动漫一区二区| 五月天开心婷婷| 亚洲久久中文字幕| 男女视频免费网站| 青青青爽久久午夜综合久久午夜| 免费观看羞羞视频网站| 99热这里只有精品5| 国产欧美日韩第一页| 欧美成人乱码一区二区三区| av网站免费观看| 欧美国产欧美综合| 日韩欧美一区二区三区在线视频| 国产一区二区三区四区尤物| 日韩一区二区中文| 欧美色图另类图片| 国产99视频精品免费视频36| 成人影院网站ww555久久精品|