亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? listbox.c

?? arm的幾個小實驗
?? C
字號:
/***********************************************************************************************************                                                uC/GUI*                        Universal graphic software for embedded applications**                       (c) Copyright 2002, Micrium Inc., Weston, FL*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH**              礐/GUI is protected by international copyright laws. Knowledge of the*              source code may not be used to write a similar product. This file may*              only be used in accordance with a license and should not be redistributed*              in any way. We appreciate your understanding and fairness.*----------------------------------------------------------------------
File        : LISTBOX.c
Purpose     : Multiple choice for emWin GSC
---------------------------END-OF-HEADER------------------------------
*/

#include <stdlib.h>
#include <string.h>
#include "LISTBOX.h"
#include "SCROLLBAR.h"
#include "WIDGET.h"
#include "GUIDebug.h"
#include "GUI_Protected.h"
#include "WM_Intern.h"

#if GUI_WINSUPPORT

/*********************************************************************
*
*       Private config defaults
*
**********************************************************************
*/

/* Support for 3D effects */
#ifndef LISTBOX_USE_3D
  #define LISTBOX_USE_3D 1
#endif

/* Define default fonts */
#ifndef LISTBOX_FONT_DEFAULT
  #define LISTBOX_FONT_DEFAULT &GUI_Font13_1
#endif

/* Define colors */
#ifndef LISTBOX_BKCOLOR0_DEFAULT
  #define LISTBOX_BKCOLOR0_DEFAULT GUI_WHITE
#endif

#ifndef LISTBOX_BKCOLOR1_DEFAULT
  #define LISTBOX_BKCOLOR1_DEFAULT GUI_GRAY
#endif

#ifndef LISTBOX_BKCOLOR2_DEFAULT
  #define LISTBOX_BKCOLOR2_DEFAULT GUI_WHITE
#endif

#ifndef LISTBOX_TEXTCOLOR0_DEFAULT
  #define LISTBOX_TEXTCOLOR0_DEFAULT GUI_BLACK
#endif

#ifndef LISTBOX_TEXTCOLOR1_DEFAULT
  #define LISTBOX_TEXTCOLOR1_DEFAULT GUI_BLACK
#endif

#ifndef LISTBOX_TEXTCOLOR2_DEFAULT
  #define LISTBOX_TEXTCOLOR2_DEFAULT GUI_BLACK
#endif


/*********************************************************************
*
*       Object definition
*
**********************************************************************
*/

typedef struct {
  WIDGET Widget;
  I16 Sel;                   /* current selection */
  WM_SCROLL_STATE ScrollState;
  const GUI_ConstString* ppText;
  const GUI_FONT* pFont;
  GUI_COLOR aBackColor[3];
  GUI_COLOR aTextColor[3];
  #if GUI_DEBUG_LEVEL >1
    int DebugId;
  #endif  
} LISTBOX_Obj;


/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

static const GUI_FONT* _pDefaultFont = LISTBOX_FONT_DEFAULT;

/*********************************************************************
*
*       Macros for internal use
*
**********************************************************************
*/

#define LISTBOX_H2P(h) (LISTBOX_Obj*) WM_HMEM2Ptr(h)

#if GUI_DEBUG_LEVEL >1
  #define OBJECT_ID 0x4C69   /* Magic numer, should be unique if possible */
  #define ASSERT_IS_VALID_PTR(p) GUI_DEBUG_ERROROUT_IF(p->DebugId != OBJECT_ID, "EDIT.C: Wrong handle type or Object not init'ed")
  #define INIT_ID(p)   p->DebugId = OBJECT_ID
  #define DEINIT_ID(p) p->DebugId = 0
#else
  #define ASSERT_IS_VALID_PTR(p)
  #define INIT_ID(p)
  #define DEINIT_ID(p)
#endif

/*********************************************************************
*
*       Static routines
*
**********************************************************************
*/


/*********************************************************************
*
*       _GetNumVisItems

  Returns:
    Number of fully or partially visible items
*/
static int _GetNumVisItems(LISTBOX_Obj* pObj) {
  int FontDist = GUI_GetYDistOfFont(pObj->pFont);
  int ysize = WM__GetWindowSizeY(&pObj->Widget.Win);
  ysize -= 2*  pObj->Widget.pEffect->EffectSize;
  if (FontDist)
    return ysize  / FontDist;
  return 1;
}

/*********************************************************************
*
*       _GetNumItems

  Returns:
    Number of fully or partially visible items
*/
static int _GetNumItems(LISTBOX_Obj* pObj) {
  int i;
  const GUI_ConstString* ppText = pObj->ppText;
  if (ppText) {
    for (i=0; *(ppText+i); i++);
	  return i;
  }
  return 0;
}

static void _SetScrollState(WM_HWIN hWin) {
  LISTBOX_Obj* pObj    = LISTBOX_H2P(hWin);
  WIDGET__SetScrollState(hWin, &pObj->ScrollState, NULL);
}

static void _CalcScrollParas(WM_HWIN hWin) {
  LISTBOX_Obj* pObj    = LISTBOX_H2P(hWin);
  pObj->ScrollState.NumItems = _GetNumItems(pObj);
  pObj->ScrollState.PageSize = _GetNumVisItems(pObj);
}


static void _SetScroll(LISTBOX_Handle hObj, LISTBOX_Obj* pObj, int iScroll) {
  pObj->ScrollState.v = iScroll;
  _SetScrollState(hObj);
}

static void _CheckSel(LISTBOX_Handle hObj) {
  int Sel;
  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);
  Sel = pObj->Sel;
  /* Check if we have to scroll up */
  if (Sel < pObj->ScrollState.v) {
    _SetScroll(hObj, pObj, Sel);
  } else {
  /* Check if we have to scroll down */
    if (Sel > pObj->ScrollState.v + pObj->ScrollState.PageSize -1) {
      _SetScroll(hObj, pObj, Sel - (pObj->ScrollState.PageSize -1));
    }
  }   
}

static int _Tolower(int Key) {
  if ((Key >= 0x41) && (Key <= 0x5a)) {
    Key += 0x20;
  }
  return Key;
}

static void _SelectByKey(LISTBOX_Handle hObj, int Key) {
  int i;
  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);
  Key = _Tolower(Key);
  for (i = 0; i < _GetNumItems(pObj); i++) {
    char c = _Tolower(*(*(pObj->ppText + i)));
    if (c == Key) {
      LISTBOX_SetSel(hObj, i);
      break;
    }
  }
}

/*********************************************************************
*
*       _Paint
*/
static void _Paint(LISTBOX_Handle hObj) {
  int i;
  int Border;
  GUI_RECT r;
  int FontDistY;
  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);
  int NumItems = _GetNumItems(pObj);
  const GUI_ConstString* ppText = pObj->ppText;
  Border = pObj->Widget.pEffect->EffectSize;
  GUI_SetFont(pObj->pFont);
  FontDistY = GUI_GetFontDistY();
  if (Border) {
    GUI_SetBkColor(pObj->aBackColor[0]);
    GUI_Clear();
  }
  /* Calculate rect used for painting (subtract border) */
  WM_GetClientRect(&r);
  r.x1 -= Border;
  r.y1 -= Border;
  r.y0 -= Border;
  WM_SetUserClipArea(&r);
  for (i = pObj->ScrollState.v; i < NumItems; i++) {
    int y, ColorIndex;
    y = Border + (i - pObj->ScrollState.v) * FontDistY;
    if (i == pObj->Sel) {
      ColorIndex = (pObj->Widget.State & WIDGET_STATE_FOCUS) ? 2 : 1;
    } else {
      ColorIndex = 0;
    }
    GUI_SetBkColor(pObj->aBackColor[ColorIndex]);
    GUI_SetColor  (pObj->aTextColor[ColorIndex]);
    GUI_ClearRect(Border, y, Border, y + FontDistY -1);
    GUI_DispStringAt(*(ppText+i), Border+1, y);
    GUI_DispCEOL();
  }
  WM_SetUserClipArea(NULL);
  /* Draw the 3D effect (if configured) */
  WIDGET__EFFECT_DrawDown(&pObj->Widget);
}

/*********************************************************************
*
*       _OnTouch
*/
static int _OnTouch(LISTBOX_Handle hObj, LISTBOX_Obj* pObj, WM_MESSAGE*pMsg) {
  int Notification;
  int Sel;
  GUI_TOUCH_tState* pState = (GUI_TOUCH_tState*)pMsg->Data.p;
  int FontDistY = GUI_GetYDistOfFont(pObj->pFont);
  if (pMsg->Data.p) {  /* Something happened in our area (pressed or released) */
    if (pState->Pressed) {
      Sel = pState->y / FontDistY + pObj->ScrollState.v; 
      WM_SetFocus(hObj);
      Notification = WM_NOTIFICATION_CLICKED;
      LISTBOX_SetSel(hObj, Sel);
    } else {
      Notification = WM_NOTIFICATION_RELEASED;
    }
  } else {     /* Mouse moved out */
    Notification = WM_NOTIFICATION_MOVED_OUT;
  }
  WM_NotifyParent(hObj, Notification);
  return 0;                        /* Message handled */
}

/*********************************************************************
*
*       Callback
*/
static void _LISTBOX_Callback (WM_MESSAGE*pMsg) {
  LISTBOX_Handle hObj = pMsg->hWin;
  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);
  WM_SCROLL_STATE ScrollState;
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_NOTIFY_PARENT:
    if (pMsg->Data.v == WM_NOTIFICATION_VALUE_CHANGED) {
      WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
    }
    pObj->ScrollState.v = ScrollState.v;
    WM_InvalidateWindow(hObj);
    break;
  case WM_ADD_SCROLLBAR:
    _SetScrollState(hObj);
    break;
  case WM_PAINT:
    _Paint(hObj);
    break;
  case WM_TOUCH:
    if (_OnTouch(hObj, pObj, pMsg) == 0)
      return;
    break;
  case WM_KEY:
    if ( ((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) {
      int Key = ((WM_KEY_INFO*)(pMsg->Data.p))->Key;
      switch (Key) {
        case GUI_KEY_TAB:
          break;                    /* Send to parent by not doing anything */
        default:
          LISTBOX_AddKey(hObj, Key);
          return;
      }
    }
    break;
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Exported routines:  Create
*
**********************************************************************
*/

LISTBOX_Handle LISTBOX_CreateAsChild(
  const GUI_ConstString* ppText,
  WM_HWIN hWinParent,
  int x0, int y0, int xsize, int ysize, int Flags)
{
  LISTBOX_Handle hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, 
                                               hWinParent, Flags, _LISTBOX_Callback,
                                               sizeof(LISTBOX_Obj)-sizeof(WM_Obj));
  if (hObj) {
    LISTBOX_Obj* pObj   = LISTBOX_H2P(hObj);
    /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, WIDGET_STATE_FOCUSSABLE | WIDGET_STATE_ENABLED);
    /* pObj->ppText = 0; */   /* Zero init not required */
    pObj->pFont  = _pDefaultFont;
    pObj->aBackColor[0] = 0xffffff;            /* Non selected state */
    pObj->aBackColor[1] = LISTBOX_BKCOLOR1_DEFAULT;    /* selected state */
    pObj->aBackColor[2] = GUI_BLUE;            /* selected state with focus */
    pObj->aTextColor[0] = 0x000000;            /* Non selected state */
    pObj->aTextColor[1] = 0xffffff;            /* selected state */
    pObj->aTextColor[2] = 0xffffff;            /* selected state with focus */
    if (hObj && ppText) {
      LISTBOX_Obj* pObj   = LISTBOX_H2P(hObj);
      INIT_ID(pObj);
      /* init member variables */
      /* Check size */
      if (!xsize) {
        const GUI_FONT* pFontOld = GUI_SetFont(pObj->pFont);
        int i;
		    for (i=0; *(ppText+i); i++) {
          int Size = GUI_GetStringDistX(*(ppText+i));
          if (Size>xsize)
			      xsize = Size;
		    }
        GUI_SetFont(pFontOld);
	    }
      /* Set non-zero attributes */
      pObj->ppText = ppText;
    }
    _CalcScrollParas(hObj);
  }
  return hObj;
}

LISTBOX_Handle LISTBOX_Create(
                    const GUI_ConstString* ppText,
                    int x0, int y0, int xsize, int ysize, int Flags)
{
   return LISTBOX_CreateAsChild(ppText, WM_HWIN_NULL /*hWin*/, x0, y0, xsize, ysize, Flags);
}

LISTBOX_Handle LISTBOX_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb) {
  LISTBOX_Handle  hThis;
  GUI_USE_PARA(cb);
  hThis = LISTBOX_CreateAsChild(0,
                                hWinParent,
                                pCreateInfo->x0 + x0, 
                                pCreateInfo->y0 + y0, 
                                pCreateInfo->xSize, 
                                pCreateInfo->ySize, 
                                pCreateInfo->Flags);
  if (hThis) {
    LISTBOX_Obj* pObj = LISTBOX_H2P(hThis);
    INIT_ID(pObj);
    pObj->Widget.Id     = pCreateInfo->Id;
    pObj->Widget.State  = LISTBOX_STATE_INACTIVE;
  }
  return hThis;
}

/*********************************************************************
*
*       Exported routines:  Various methods
*
**********************************************************************
*/

void LISTBOX_AddKey(LISTBOX_Handle hObj, int Key) {
  if (hObj) {
    WM_LOCK();
    switch (Key) {
      case GUI_KEY_DOWN:
        LISTBOX_IncSel(hObj);
        break;
      case GUI_KEY_UP:
        LISTBOX_DecSel(hObj);
        break;
      default:
        _SelectByKey(hObj, Key);
        break;
    }
    WM_UNLOCK();
  }
}
void LISTBOX_SetText(LISTBOX_Handle hObj, const GUI_ConstString* ppText) {
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    pObj->ppText = ppText;
    _CalcScrollParas(hObj);
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_SetFont(LISTBOX_Handle hObj, const GUI_FONT* pfont) {
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    pObj->pFont = pfont;
    _CalcScrollParas(hObj);
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_SetBackColor(LISTBOX_Handle hObj, int index, GUI_COLOR color) {
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    pObj->aBackColor[index] = color;
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_SetTextColor(LISTBOX_Handle hObj, int index, GUI_COLOR color) {
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    pObj->aTextColor[index] = color;
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_SetSel (LISTBOX_Handle hObj, int Sel) {
  int NumItems, MaxSel;
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    NumItems = _GetNumItems(pObj);
    MaxSel = NumItems ? NumItems-1 : 0;
    if (Sel>MaxSel) {
      Sel = MaxSel;
    }
    if (Sel != pObj->Sel) {
      pObj->Sel = Sel;
      LISTBOX_Invalidate(hObj);
      WM_NotifyParent(hObj, WM_NOTIFICATION_SEL_CHANGED);
    }
    _CheckSel(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_IncSel      (LISTBOX_Handle hObj) {
  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);
  int Sel = LISTBOX_GetSel(hObj);
  ASSERT_IS_VALID_PTR(pObj);
  LISTBOX_SetSel(hObj, Sel+1);
}

void LISTBOX_DecSel      (LISTBOX_Handle hObj) {
  int Sel = LISTBOX_GetSel(hObj);
  if (Sel)
	  Sel--;
  LISTBOX_SetSel(hObj, Sel);
}

int  LISTBOX_GetSel (LISTBOX_Handle hObj) {
  int r = 0;
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    r = pObj->Sel;
    WM_UNLOCK();
  }
  return r;
}

void LISTBOX_SetDefaultFont(const GUI_FONT* pFont) {
  _pDefaultFont = pFont;
}

const GUI_FONT* LISTBOX_GetDefaultFont(void) {
  return _pDefaultFont;
}

#else                            /* Avoid problems with empty object modules */
  void LISTBOX_C(void) {}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人在线电影| 久久精品一区二区三区不卡| 欧美哺乳videos| 亚洲丝袜另类动漫二区| 精品无人区卡一卡二卡三乱码免费卡| 91污片在线观看| 久久精品这里都是精品| 日本午夜精品一区二区三区电影| 97精品国产露脸对白| 久久精品人人做人人综合| 免费在线视频一区| 欧美男女性生活在线直播观看| 国产精品的网站| 国产精品亚洲一区二区三区在线| 欧美日韩国产一区| 亚洲成人在线观看视频| 92国产精品观看| 国产精品国产三级国产三级人妇 | 777久久久精品| 亚洲精品久久久久久国产精华液| 国产99精品在线观看| 久久久久久久久久看片| 国内成人免费视频| 久久人人97超碰com| 久久av中文字幕片| 精品91自产拍在线观看一区| 免费看欧美美女黄的网站| 欧美日韩国产在线观看| 天涯成人国产亚洲精品一区av| 欧洲激情一区二区| 欧美精选在线播放| 精品久久人人做人人爽| 美女www一区二区| 日韩天堂在线观看| 久久99精品久久久| 久久婷婷综合激情| 国产91富婆露脸刺激对白| 精品国产乱码久久久久久久久 | 亚洲婷婷综合久久一本伊一区| 国产91精品在线观看| 国产精品麻豆一区二区 | 风间由美中文字幕在线看视频国产欧美| 精品嫩草影院久久| 国产高清久久久久| 亚洲视频一区二区在线观看| 日本精品裸体写真集在线观看| 一区二区三区欧美久久| 精品视频色一区| 久久国产三级精品| 国产精品亲子伦对白| 日本电影亚洲天堂一区| 婷婷综合五月天| 久久久亚洲精品石原莉奈| 成人综合在线网站| 一区二区三区欧美| 日韩精品一区二区三区在线观看| 国产精品99久久久久久似苏梦涵 | 欧美精品一区二区三区一线天视频| 激情文学综合插| 亚洲欧美在线视频观看| 欧美日韩国产在线观看| 国产一区二区电影| 亚洲午夜免费视频| xf在线a精品一区二区视频网站| caoporn国产一区二区| 香港成人在线视频| 亚洲国产高清aⅴ视频| 欧美无人高清视频在线观看| 久久av资源网| 亚洲激情在线播放| 久久亚洲一级片| 欧美日韩一区二区不卡| 国产精品亚洲第一区在线暖暖韩国 | 亚洲精品自拍动漫在线| 精品剧情v国产在线观看在线| 91在线小视频| 精品综合免费视频观看| 亚洲综合自拍偷拍| 国产亚洲欧美色| 欧美一区二区三区免费观看视频| 97超碰欧美中文字幕| 久久精品国产一区二区三 | 人禽交欧美网站| 亚洲欧美一区二区视频| 精品国产凹凸成av人网站| 欧美视频完全免费看| 风间由美性色一区二区三区| 石原莉奈在线亚洲三区| 亚洲蜜臀av乱码久久精品| 久久精品欧美日韩精品| 欧美成人官网二区| 91精品国产色综合久久| 色妞www精品视频| 成人午夜激情视频| 国产精品资源在线| 麻豆久久久久久| 日韩高清国产一区在线| 一区二区三区四区激情| 国产精品久久看| 国产欧美一区二区精品秋霞影院 | 欧美日韩综合不卡| 一本高清dvd不卡在线观看| 国产在线播精品第三| 蜜臀久久99精品久久久画质超高清 | 色哟哟在线观看一区二区三区| 国产激情视频一区二区三区欧美| 麻豆91在线看| 精品无码三级在线观看视频| 久久99精品久久久久久国产越南 | 99精品视频在线观看| 国产成人小视频| 国产激情91久久精品导航| 国产在线精品国自产拍免费| 精品午夜久久福利影院| 国产一区欧美二区| 国产成人a级片| 成人h动漫精品| 色综合久久精品| 精品视频一区二区三区免费| 欧美午夜不卡在线观看免费| 精品污污网站免费看| 欧美一区二区免费| 26uuu国产电影一区二区| 久久久高清一区二区三区| 国产婷婷一区二区| 亚洲欧洲av在线| 亚洲一区二区三区三| 天天综合色天天综合色h| 欧美96一区二区免费视频| 老司机一区二区| 成人午夜视频福利| 在线观看视频一区二区欧美日韩| 欧美性xxxxx极品少妇| 7777精品久久久大香线蕉| 精品国产三级电影在线观看| 国产亚洲欧美色| 亚洲最新视频在线观看| 日韩激情一区二区| 国产精品主播直播| 一本色道综合亚洲| 欧美日韩免费高清一区色橹橹| 日韩精品中午字幕| 久久九九国产精品| 一区二区三区在线观看视频 | 亚洲精品欧美综合四区| 天天综合色天天| 国产99精品国产| 欧美性色综合网| 欧美精品一区二区三区蜜桃视频 | 91美女蜜桃在线| 欧美另类一区二区三区| 久久精品一区二区三区不卡| 一区二区三区四区在线免费观看| 美女高潮久久久| 日本二三区不卡| 久久久久久亚洲综合| 一区二区久久久久久| 国产综合色视频| 欧美视频精品在线观看| 国产精品色婷婷久久58| 日本成人中文字幕| 99久久精品免费| 精品免费视频一区二区| 樱花影视一区二区| 成人美女在线视频| 日韩欧美亚洲另类制服综合在线 | 视频一区中文字幕| 96av麻豆蜜桃一区二区| 久久精品无码一区二区三区| 亚洲图片欧美综合| 91蜜桃免费观看视频| 久久亚洲私人国产精品va媚药| 亚洲丶国产丶欧美一区二区三区| 福利一区二区在线| 精品国产成人在线影院 | 亚洲精品国产一区二区精华液 | 国产日韩一级二级三级| 日韩专区一卡二卡| 色婷婷综合久色| 国产精品国产三级国产普通话蜜臀| 日本成人在线网站| 欧美影视一区在线| 国产精品电影一区二区| 国产成人综合在线观看| 精品国产精品一区二区夜夜嗨| 日本在线播放一区二区三区| 色婷婷综合久久久久中文一区二区 | 99久久精品国产麻豆演员表| 久久久久久久久久久黄色| 久久av资源网| 欧美精品一级二级| 五月天丁香久久| 欧美日韩不卡视频| 性做久久久久久免费观看欧美| 色综合久久中文字幕综合网| 中文字幕在线一区二区三区| 国产ts人妖一区二区| 国产女同互慰高潮91漫画| 国产精品资源网站| 国产精品蜜臀av|