青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評(píng)論-2670  文章-0  trackbacks-0

說(shuō)起GacUI(www.gaclib.netgac.codeplex.com,其實(shí)這個(gè)想法在我還在上大三的時(shí)候就已經(jīng)有了。但是由于經(jīng)驗(yàn)不足,在當(dāng)時(shí)并沒(méi)能夠把這個(gè)東西給做出來(lái),直到去年(2011)的國(guó)慶節(jié)為止。想想到現(xiàn)在也做了快一年了,GacUI也可以用來(lái)寫(xiě)一些不是特別殘暴的C++GUI程序了。前幾天有人問(wèn)道,為什么在PC都快完蛋了并且大部分GUI都已經(jīng)用C#來(lái)做的時(shí)候,我還要做這個(gè)東西呢?其實(shí),這有兩個(gè)原因:第一個(gè)我喜歡折騰C++;第二個(gè)C++好像也沒(méi)什么特別好的GUI,因此也想嘗試一下,如果做成了就維護(hù)下去,做不成了好歹還可以提高自己的水平,總之是不會(huì)浪費(fèi)時(shí)間的。所以我就在想,GacUI寫(xiě)到現(xiàn)在也快一年了,并且我最近也看到cppblog上面有幾個(gè)人也想搞搞GUI,因此我想把GacUI的一些設(shè)計(jì)思想,和我得到這些思想的過(guò)程寫(xiě)出來(lái),順便也介紹一下GacUI的架構(gòu),讓一些有興趣的人(特別是裝配腦袋)也可以來(lái)折騰折騰。

GacUI的架構(gòu)的最重要一點(diǎn)就是要跨平臺(tái)。當(dāng)然這不一定意味著我將來(lái)一定會(huì)把GacUI移植到別的什么操作系統(tǒng)去,但至少WindowsClassic DesktopMetro的兩套API就毫無(wú)相似之處,同時(shí)搞定他們,也算是跨平臺(tái)了。而且就算是基于同一種API,上面還有不同的渲染器的API,譬如說(shuō)GDI,譬如說(shuō)Direct2D,他們也是截然不同。GacUI的設(shè)計(jì)至少要可以屏蔽掉他們的區(qū)別。當(dāng)然,這在技術(shù)上有一個(gè)很好的方法來(lái)保證,就是GacUIIncludes.h里面不包含Windows.h的任何內(nèi)容——因此至少在頭文件里面,所有的東西都是跟Windows無(wú)關(guān)的。當(dāng)然在非GUI的部分,我們還是需要Windows.h的,并且有些人喜歡對(duì)GacUI做點(diǎn)hack的操作,因此我還是在GacUI.h里面提供了幾個(gè)額外的依賴于Windows.h的函數(shù)來(lái)暴露一些內(nèi)部細(xì)節(jié)。那這樣如何跨Classic DesktopMetro呢?有一個(gè)簡(jiǎn)單的方法,就是可以在編譯的時(shí)候給些宏開(kāi)關(guān),譬如說(shuō)GACUI_WINDOWS_CLASSIC_DESKTOP(缺省)或者GACUI_WINDOWS_METRO之類的東西,來(lái)屏蔽掉不需要的部分。當(dāng)然這部分在移植到Metro之前我不會(huì)加進(jìn)去。

基于這個(gè)想法,如果大家閱讀了GacUI的代碼的話,會(huì)發(fā)現(xiàn)在文件\Libraries\GacUI\Source\NativeWindow\GuiNativeWindow.h里面定義了一個(gè)INativeController接口,而且目前只有Windows Classic Desktop一個(gè)實(shí)現(xiàn)。INativeController的內(nèi)容很多,提供了跟具體的平臺(tái)有關(guān)的操作,譬如說(shuō)讀寫(xiě)圖片文件啦、創(chuàng)建消滅窗口啦、顯示器操作啦、還有各種其他的輸入輸出等等。實(shí)現(xiàn)一個(gè)從頭INativeController還是比較繁瑣的,因?yàn)?/span>GUI這種對(duì)操作系統(tǒng)重度依賴的東西,想剝離開(kāi)來(lái),就會(huì)發(fā)現(xiàn)他依賴了一大坨API。這也解釋了為什么INativeController的各個(gè)XXXService函數(shù)返回的對(duì)象的方法的總和有上百個(gè)。不過(guò)從Classic Desktop移植到Metro還是相對(duì)比較簡(jiǎn)單的,因?yàn)榇蟛糠謨?nèi)容還是可以共享的。

其次就是渲染器了。渲染器跟平臺(tái)是交叉依賴的。譬如說(shuō)OpenGLlinux上和Classic Desktop上都可以用,Direct2DClassic Desktop上和Metro上都可以用,GDI只能在Classic Desktop上面用。因此這就是為什么我最終沒(méi)有把渲染器也寫(xiě)在INativeController里面,而是把渲染器整個(gè)給屏蔽掉了,根本沒(méi)有在GacUIIncludes.h里面給出他的接口。但是考慮到GacUI是一個(gè)支持換膚的GUI庫(kù),因此肯定需要讓皮膚來(lái)自己決定如何繪圖。后來(lái)我就想了一個(gè)辦法,把渲染器的結(jié)構(gòu)整個(gè)拿掉,替換成各種各樣的圖元(IGuiGraphicsElement)。所謂的圖元就是類似于方形啊,圓形啊,填充啊,漸變啊,文字之類的東西。皮膚自己把圖元按照一定的排版關(guān)系(在下文中有描述)拼裝好,然后GacUI內(nèi)部的一個(gè)小系統(tǒng)會(huì)利用BridgeAbstract Factory兩個(gè)模式的結(jié)合體(參考\Libraries\GacUI\Source\GraphicsElement\GuiGraphicsElement.h)來(lái)為這些圖元分配好渲染器對(duì)象(IGuiGraphicsRenderer)。然后圖元和渲染器之間用了Listener模式在交換信息。這樣的好處是,當(dāng)圖元受到改動(dòng)的時(shí)候,這個(gè)圖元對(duì)象的專用渲染器對(duì)象可以選擇cache一些信息,然后在窗口渲染的時(shí)候,只需要訪問(wèn)所有的渲染器對(duì)象(在排版對(duì)象GuiGraphicsComposition的組合項(xiàng)形成了一棵樹(shù)),讓他們渲染自己就可以了。

圖元包含了所有需要渲染的數(shù)據(jù),但是唯獨(dú)沒(méi)有把尺寸寫(xiě)進(jìn)去,因?yàn)槌叽邕@種東西不應(yīng)該讓渲染器來(lái)負(fù)責(zé),而應(yīng)該讓排版對(duì)象來(lái)負(fù)責(zé)。排版對(duì)象自己是一棵樹(shù),然后節(jié)點(diǎn)根節(jié)點(diǎn)之間有一些關(guān)系,這樣就可以實(shí)現(xiàn)堆棧排版、表格排版、對(duì)齊(到某一些邊上的)排版等等具體的排版算法。一個(gè)排版對(duì)象可以放置一個(gè)圖元對(duì)象并讓這個(gè)圖元充滿他,所以顯而易見(jiàn),有一些排版對(duì)象僅僅是用來(lái)計(jì)算尺寸的中間結(jié)果,上面不一定有圖元對(duì)象的。當(dāng)渲染開(kāi)始的時(shí)候,排版對(duì)象首先跟圖元對(duì)象獲取數(shù)據(jù),然后遞歸計(jì)算好整棵排版樹(shù)的尺寸,最后把尺寸交給附著在上面的圖元對(duì)象的專用渲染器對(duì)象來(lái)渲染。

大家可能會(huì)想,如果渲染一次都需要調(diào)用成千上萬(wàn)個(gè)虛函數(shù)的話,會(huì)不會(huì)性能低下啊?當(dāng)然編譯成Release運(yùn)行會(huì)發(fā)現(xiàn)GacUI的性能還是相當(dāng)高的。原因有兩個(gè)。第一個(gè)是我對(duì)排版對(duì)象做了一些優(yōu)化。舉個(gè)例子,一個(gè)對(duì)象的尺寸至少要大于所有子對(duì)象的尺寸,這個(gè)事情計(jì)算起來(lái)是相當(dāng)快的,不需要做cache。但是一個(gè)表格排版里面的所有小格子會(huì)互相擠來(lái)擠去,這個(gè)東西計(jì)算起來(lái)相當(dāng)復(fù)雜(復(fù)雜度大越是平方,而且系數(shù)也不笑),所以結(jié)果要做cache。但是什么時(shí)候需要重新計(jì)算呢?度量方法很簡(jiǎn)單,就是每一個(gè)格子的最小尺寸發(fā)生了變化的時(shí)候。而且事實(shí)上大部分皮膚都是用表格來(lái)排版的,所以等于說(shuō)大部分結(jié)果都有cache。所以排版部分的尺寸在每一次渲染的時(shí)候只需要做一些小計(jì)算就可以了。復(fù)雜的排版每一個(gè)排版對(duì)象相互之間都是有關(guān)系的,一個(gè)排版對(duì)象發(fā)生了變化,有可能導(dǎo)致另一個(gè)排版對(duì)象的尺寸需要修改,所以最簡(jiǎn)單的方法就是,不保存尺寸,每一次都直接重新算一次就可以了。在這個(gè)基礎(chǔ)上,表格排版做一下cache,整個(gè)計(jì)算過(guò)程就會(huì)變得飛快。所以盡管每一次拖動(dòng)窗口,或者鼠標(biāo)滑過(guò)一次窗口,都要進(jìn)行相當(dāng)多的計(jì)算,但是因?yàn)橛幸粋€(gè)智能的cache,使得不僅運(yùn)算速度變快,而且在添加新的排版對(duì)象類型的時(shí)候也根本不需要考慮自己會(huì)不會(huì)被cache的問(wèn)題,開(kāi)發(fā)起來(lái)也相當(dāng)愉悅。

所以上面的三大模塊(操作系統(tǒng)API隔離、渲染器、排版對(duì)象)已經(jīng)足以讓我在系統(tǒng)里面開(kāi)一個(gè)窗口然后在上面放各種各樣的東西了,譬如說(shuō)組合成一個(gè)非常接近Windows7的按鈕外觀的一個(gè)矢量圖。那控件要怎么辦呢?其實(shí)一個(gè)控件,就是通過(guò)接收用戶的輸入,對(duì)一個(gè)排版對(duì)象上承載的一大堆圖元進(jìn)行更改。用戶的輸入和控件(GuiControl)本身的狀態(tài)進(jìn)行互動(dòng),然后控件把狀態(tài)的變更提交給控件的皮膚(GuiControl::IStyleController),最后皮膚通過(guò)修改圖元來(lái)把狀態(tài)變更最終展現(xiàn)給用戶。一個(gè)典型的例子就是,在使用Windows7皮膚的時(shí)候,鼠標(biāo)移動(dòng)到按鈕上面去,他會(huì)觸發(fā)一個(gè)動(dòng)畫(huà)慢慢變成藍(lán)色。

GacUI的大體架構(gòu)就是這個(gè)樣子了。在接下來(lái)的幾篇文章里面,我會(huì)詳細(xì)介紹每一個(gè)子系統(tǒng)的內(nèi)部結(jié)構(gòu),順帶做以下代碼導(dǎo)讀,大家敬請(qǐng)期待。

posted on 2012-09-17 22:31 陳梓瀚(vczh) 閱讀(4579) 評(píng)論(24)  編輯 收藏 引用 所屬分類: GacUI

評(píng)論:
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-17 22:41 | 畢達(dá)哥拉斯半圓
很期待,哈哈  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-18 00:17 | DiryBoy
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-18 01:31 | Jagd
(復(fù)雜度大越是平方,而且系數(shù)也不笑)

可以換個(gè)輸入法了,別再用拼音 :D  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言[未登錄](méi) 2012-09-18 03:19 | foxtail
用手寫(xiě)輸入法,呵呵@Jagd
  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言[未登錄](méi) 2012-09-18 03:21 | 禁區(qū)
期待,c++的皮膚庫(kù)自己也寫(xiě)了N個(gè)版本了,總是因?yàn)橐恍┰虬胪径鴱U,樓主的是基于hwnd還是windowless的?  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-18 04:56 | 萬(wàn)連文
GPU & 后面的圖像處理技術(shù),如果能借助OS源碼可以,否則看看 chromium未嘗不可  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言[未登錄](méi) 2012-09-18 08:12 | 禁區(qū)
好像GacUI不支持XP?遺憾啊.剛下來(lái)源碼用2010編譯后,找不到函數(shù)定位點(diǎn)和d2d1.dll.像我等這些老古董機(jī)豈非不能使用?  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言[未登錄](méi) 2012-09-18 17:03 | 陳梓瀚(vczh)
@禁區(qū)
GacUI在XP下要使用GDI(這個(gè)我的網(wǎng)站的getting start有說(shuō)要怎么用),將無(wú)限期失去顯卡加速效果,并且沒(méi)有抗鋸齒。  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言[未登錄](méi) 2012-09-18 17:04 | 陳梓瀚(vczh)
@萬(wàn)連文
GPU當(dāng)然是要看DirectX和Shader,看chromium有何用……  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-18 17:12 | M77
chromium 都跨平臺(tái)封裝好了 @陳梓瀚(vczh)
  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-18 17:52 | mars2026
建議看看Qt。  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-18 19:21 | 空明流轉(zhuǎn)
@mars2026

GacGUI走的是XAML山寨版的路子,和Qt不是一個(gè)路數(shù)。
  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-19 00:55 | clingingboy
很感興趣,代碼閱讀中  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-19 11:04 | fzy
ui做到最后,基本都是這樣

圖形圖像引擎
圖元
布局(排版)
事件和數(shù)據(jù)上下文

  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-09-20 01:13 | 紅色代碼
@陳梓瀚(vczh)
在XP上使用了GDI渲染也不行,提示RemoveClipboardFormatListener找不到入口點(diǎn)  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言[未登錄](méi) 2012-09-23 22:43 | 陳梓瀚(vczh)
@紅色代碼
哦,我查了一下,我在剪貼板里面用的RemoveClipboardFormatListener剛好是XP沒(méi)有的api,待我過(guò)些時(shí)日去掉。  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-10-07 07:08 | 糯大米
師兄啊,能做些別的東西嗎?用你如此強(qiáng)大的代碼能力!嘿嘿。  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-10-08 05:58 | 陳梓瀚(vczh)
@糯大米
你想要我做什么  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-10-20 19:56 | 糯大米
@陳梓瀚(vczh)
比如說(shuō)貢獻(xiàn)一下Qt啊,Chrome啊。。  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言[未登錄](méi) 2012-10-22 20:51 | 陳梓瀚(vczh)
@糯大米
那些多沒(méi)意思啊  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-12-31 08:22 | Willis
終于找到了一個(gè)類似WPF的C++UI庫(kù)了。剛剛看了一下demo和源碼,感覺(jué)很不錯(cuò),不過(guò)貌似在ScrollVIew中滾動(dòng)鼠標(biāo)滾輪沒(méi)有用,一定要拖動(dòng)scrollBar才行,不知道算不算bug,呵呵。很喜歡你的UI庫(kù),特別是山寨WPF的Grid排版的風(fēng)格,很激動(dòng)啊??  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2012-12-31 23:58 | 陳梓瀚(vczh)
@Willis
算bug吧,不過(guò)事實(shí)上是我還沒(méi)來(lái)得及支持滾輪,啊哈哈哈哈,開(kāi)發(fā)這個(gè)爛東西需要的時(shí)間太長(zhǎng)了。  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2013-01-06 07:31 | willis
在試用過(guò)程中發(fā)現(xiàn)“Controls.Toolstrip.TextEditor”例子工程一旦打開(kāi)菜單就很卡,我一開(kāi)始以為是圖元排版導(dǎo)致的,后來(lái)發(fā)現(xiàn)即使放著不動(dòng),CPU占有率也杠杠的:) 然后發(fā)現(xiàn) vl.presentation.windows.WindowsForm.RedrawContent 一直在發(fā)WM_PAINT消息。。。這個(gè)也太暴力了吧。。。需要優(yōu)化一下,不然顯卡加速也經(jīng)不起這么折騰啊  回復(fù)  更多評(píng)論
  
# re: GacUI與設(shè)計(jì)模式(一)——前言 2013-01-06 08:58 | 陳梓瀚(vczh)
@willis
用release就不會(huì)卡了  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产主播| 中文在线不卡| 国产日韩欧美不卡在线| 欧美精品一区三区| 久久久成人网| 欧美一区2区视频在线观看 | 亚洲另类自拍| 在线国产日韩| 国产一区二区精品久久| 欧美亚日韩国产aⅴ精品中极品| 久久久噜噜噜久噜久久| 欧美亚洲自偷自偷| 亚洲影院在线观看| 99精品国产在热久久下载| 亚洲国产精品久久久久婷婷老年| 久久久九九九九| 欧美综合二区| 欧美一区二区在线免费播放| 亚洲一区二区影院| 一区二区三欧美| 亚洲精品综合| 亚洲六月丁香色婷婷综合久久| 激情久久久久久久久久久久久久久久| 国产日韩欧美麻豆| 国产亚洲精品bt天堂精选| 国产精品一区一区| 国产精品乱码久久久久久| 国产精品成人在线| 欧美色123| 欧美亚男人的天堂| 国产精品大全| 国产精品―色哟哟| 国产伦理精品不卡| 国产一区二区三区四区五区美女| 国产乱子伦一区二区三区国色天香| 国产精品久久久久aaaa| 国产精品每日更新在线播放网址| 国产精品久久久一区二区| 国产精品视频久久一区| 国产精品私人影院| 国产亚洲综合性久久久影院| 好吊视频一区二区三区四区| 在线电影欧美日韩一区二区私密| 在线看日韩欧美| 亚洲欧洲在线看| a4yy欧美一区二区三区| 亚洲欧美日韩国产中文 | 欧美在线播放一区| 久久九九热re6这里有精品| 久久婷婷综合激情| 欧美精品在线观看一区二区| 欧美日韩一区二区在线播放| 国产精品扒开腿做爽爽爽软件| 国产精品视频网| 激情五月综合色婷婷一区二区| 亚洲电影免费观看高清完整版在线观看| 亚洲高清123| 亚洲网站在线| 久久午夜视频| 亚洲欧洲一区二区三区久久| 亚洲视频1区| 久久久一二三| 欧美日韩一区二区视频在线观看| 国产精品一区二区久久精品| 在线成人激情黄色| 在线一区日本视频| 久热re这里精品视频在线6| 91久久线看在观草草青青| 亚洲天堂男人| 六月婷婷久久| 国产精品久久二区| 亚洲第一黄网| 亚洲欧美日韩综合一区| 欧美h视频在线| 一区二区三区精密机械公司 | 亚洲一区二区精品视频| 久久久www成人免费精品| 欧美日韩国产小视频| 国产婷婷成人久久av免费高清| 亚洲精品1区2区| 翔田千里一区二区| 亚洲黄色视屏| 久久精品国产亚洲a| 欧美日韩午夜| 亚洲第一精品电影| 欧美一二三区精品| 亚洲二区在线视频| 久久riav二区三区| 国产精品国产| 亚洲精品国偷自产在线99热| 欧美中文字幕精品| 夜夜精品视频| 欧美国产激情| 在线观看日韩国产| 欧美一区二区三区日韩视频| 亚洲人成人一区二区在线观看| 午夜精品久久久久久久久久久久久| 欧美激情综合在线| 在线观看国产欧美| 欧美在线免费一级片| 99热在线精品观看| 欧美成人国产va精品日本一级| 国产视频欧美| 亚洲欧美日韩天堂一区二区| 亚洲欧洲美洲综合色网| 久久亚洲欧美| 国产一区美女| 久久成人精品| 这里只有精品电影| 欧美视频中文字幕在线| 日韩一级免费观看| 亚洲激情视频在线| 免费在线观看日韩欧美| 亚洲第一页自拍| 免费成人高清| 久久久五月婷婷| 影音先锋久久精品| 免播放器亚洲一区| 久久欧美中文字幕| 在线电影国产精品| 免费亚洲一区二区| 久久综合久久久久88| 亚洲电影视频在线| 美女脱光内衣内裤视频久久影院 | 亚洲黄色在线| 亚洲成在人线av| 美国三级日本三级久久99| 依依成人综合视频| 欧美xxx成人| 免费在线观看一区二区| 亚洲人体1000| 91久久在线视频| 欧美日韩亚洲在线| 亚洲一区二区三区色| 一区二区三区精品在线 | 亚洲精品视频免费观看| 亚洲国产你懂的| 欧美另类在线播放| 亚洲综合久久久久| 午夜激情久久久| 狠狠爱综合网| 欧美激情精品久久久久久大尺度| 免费不卡在线视频| 9l国产精品久久久久麻豆| 亚洲最新在线| 国产乱肥老妇国产一区二| 久久成人久久爱| 久久久久久网站| 亚洲人成免费| 一区二区三区国产在线| 国产伦精品一区二区三区| 久久久水蜜桃av免费网站| 久久在线免费观看| 妖精成人www高清在线观看| 亚洲亚洲精品在线观看| 国产在线不卡视频| 亚洲电影观看| 国产精品高潮呻吟久久av无限| 久久国产精品久久w女人spa| 久久久最新网址| 一级日韩一区在线观看| 亚洲伊人色欲综合网| 伊人久久大香线蕉av超碰演员| 亚洲国产成人一区| 国产精品劲爆视频| 久久一区二区视频| 欧美日本免费| 久久国产精品久久久久久电车| 久久综合九色| 亚洲先锋成人| 久久在线免费视频| 亚洲免费伊人电影在线观看av| 久久精品国产一区二区电影| 一区二区三区av| 久久精品视频导航| 亚洲一区二区在线| 榴莲视频成人在线观看| 亚洲欧美国产77777| 久久综合给合久久狠狠狠97色69| 亚洲亚洲精品在线观看| 欧美呦呦网站| 亚洲一级在线| 久热精品视频在线观看| 亚洲欧美视频在线观看视频| 蜜臀91精品一区二区三区| 亚洲综合色丁香婷婷六月图片| 久久尤物视频| 欧美中文日韩| 欧美日韩在线免费| 免费在线看成人av| 国产欧美精品xxxx另类| 91久久在线视频| 永久555www成人免费| 亚洲私人影院在线观看| 日韩特黄影片| 久久综合亚洲社区| 久久久久九九九| 国产精品久久| 99re6这里只有精品视频在线观看| 在线免费不卡视频|