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

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

?? lcdl0delta.c

?? UC_GUI開發源代碼,里面含有范例,源文件
?? C
字號:
/*
*********************************************************************************************************
*                                             uC/GUI V3.98
*                        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        : LCDL0Delta.c
Purpose     : Link between GUI and LCD_L0... if delta display needs to
              be supported
---------------------------END-OF-HEADER------------------------------
*/

#include <stddef.h>             /* needed for definition of NULL */
#include "GUI_Private.h"
#include "GUIDebug.h"
#include "LCD_Private.h"        /* private modul definitions & config */

#if LCD_DELTA_MODE

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/
static       U8             _aPixelData_0[LCD_XSIZE];
static       U8             _aPixelData_1[LCD_XSIZE];
static const GUI_LOGPALETTE _Pal;
static       GUI_BITMAP     _Bm;
static       int            _y;
static       U8             _aRGB[3];

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/
/*********************************************************************
*
*       _SetRGB
*/
static void _SetRGB(LCD_PIXELINDEX ColorIndex) {
  _aRGB[0] = ColorIndex & 0x00f;
  _aRGB[1] = (ColorIndex & 0x0f0) >> 4;
  _aRGB[2] = (ColorIndex & 0xf00) >> 8;
}

/*********************************************************************
*
*       _SetPixel
*/
static void _SetPixelIndex(int x, LCD_PIXELINDEX ColorIndex) {
  _SetRGB(ColorIndex);
  _aPixelData_0[x] = _aRGB[(x + (_y & 1)) % 3];
}

/*********************************************************************
*
*       _InitBM
*/
static void _InitBM(int xsize, int x0) {
  _Bm.XSize        = xsize;
  _Bm.YSize        = 1;
  _Bm.BytesPerLine = xsize;
  _Bm.BitsPerPixel = 8;
  _Bm.pMethods     = 0;
  _Bm.pData        = &_aPixelData_0[x0];
  _Bm.pPal         = &_Pal;
}

/*********************************************************************
*
*       _DrawBitLine1BPP
*/
static void _DrawBitLine1BPP(int x, U8 const GUI_UNI_PTR * p, int Diff, int xsize, const LCD_PIXELINDEX * pTrans) {
  int xx;
  LCD_PIXELINDEX Index0 = *(pTrans+0);
  LCD_PIXELINDEX Index1 = *(pTrans+1);
  x += Diff;
  xx = x;
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
  case 0:
    do {
      _SetPixelIndex(xx++, (*p & (0x80 >> Diff)) ? Index1 : Index0);
			if (++Diff == 8) {
        Diff = 0;
				p++;
			}
		} while (--xsize);
    break;
  case LCD_DRAWMODE_TRANS:
    do {
  		if (*p & (0x80 >> Diff)) {
        _SetPixelIndex(xx, Index1);
      } else {
        _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
      }
      xx++;
			if (++Diff == 8) {
        Diff = 0;
				p++;
			}
		} while (--xsize);
    break;
  case LCD_DRAWMODE_XOR:;
    do {
  		if (*p & (0x80 >> Diff)) {
        int Pixel = LCD_L0_GetPixelIndex(xx, _y);
        _SetPixelIndex(xx, LCD_NUM_COLORS - 1 - Pixel);
      }
      xx++;
			if (++Diff == 8) {
        Diff = 0;
				p++;
			}
		} while (--xsize);
    break;
	}
  LCD_L0_DrawBitmap(x, _y, _Bm.XSize, 1, _Bm.BitsPerPixel, _Bm.BytesPerLine, _Bm.pData, 0, 0);
}

/*********************************************************************
*
*       _DrawBitLine2BPP
*/
static void _DrawBitLine2BPP(int x, U8 const GUI_UNI_PTR * p, int Diff, int xsize, const LCD_PIXELINDEX * pTrans) {
  int xx;
  LCD_PIXELINDEX Pixels = *p;
  int CurrentPixel = Diff;
  x += Diff;
  xx = x;
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
  case 0:
    if (pTrans) {
      do {
        int Shift = (3 - CurrentPixel) << 1;
        int Index = (Pixels & (0xC0 >> (6 - Shift))) >> Shift;
        LCD_PIXELINDEX PixelIndex = *(pTrans + Index);
        _SetPixelIndex(xx++, PixelIndex);
        if (++CurrentPixel == 4) {
          CurrentPixel = 0;
          Pixels = *(++p);
        }
		  } while (--xsize);
    } else {
      do {
        int Shift = (3 - CurrentPixel) << 1;
        int Index = (Pixels & (0xC0 >> (6 - Shift))) >> Shift;
        _SetPixelIndex(xx++, Index);
        if (++CurrentPixel == 4) {
          CurrentPixel = 0;
          Pixels = *(++p);
        }
		  } while (--xsize);
    }
    break;
  case LCD_DRAWMODE_TRANS:
    if (pTrans) {
      do {
        int Shift = (3 - CurrentPixel) << 1;
        int Index = (Pixels & (0xC0 >> (6 - Shift))) >> Shift;
        if (Index) {
          LCD_PIXELINDEX PixelIndex = *(pTrans + Index);
          _SetPixelIndex(xx, PixelIndex);
        } else {
          _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
        }
        xx++;
        if (++CurrentPixel == 4) {
          CurrentPixel = 0;
          Pixels = *(++p);
        }
		  } while (--xsize);
    } else {
      do {
        int Shift = (3 - CurrentPixel) << 1;
        int Index = (Pixels & (0xC0 >> (6 - Shift))) >> Shift;
        if (Index) {
          _SetPixelIndex(xx, Index);
        } else {
          _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
        }
        xx++;
        if (++CurrentPixel == 4) {
          CurrentPixel = 0;
          Pixels = *(++p);
        }
		  } while (--xsize);
    }
    break;
  }
  LCD_L0_DrawBitmap(x, _y, _Bm.XSize, 1, _Bm.BitsPerPixel, _Bm.BytesPerLine, _Bm.pData, 0, 0);
}

/*********************************************************************
*
*       _DrawBitLine4BPP
*/
static void _DrawBitLine4BPP(int x, U8 const GUI_UNI_PTR * p, int Diff, int xsize, const LCD_PIXELINDEX * pTrans) {
  int xx;
  U8 Pixels = *p;
  int CurrentPixel = Diff;
  x += Diff;
  xx = x;
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
  case 0:
    if (pTrans) {
      do {
        int Shift = (1 - CurrentPixel) << 2;
        int Index = (Pixels & (0xF0 >> (4 - Shift))) >> Shift;
        LCD_PIXELINDEX PixelIndex = *(pTrans + Index);
        _SetPixelIndex(xx++, PixelIndex);
        if (++CurrentPixel == 2) {
          CurrentPixel = 0;
          Pixels = *(++p);
        }
		  } while (--xsize);
    } else {
      do {
        int Shift = (1 - CurrentPixel) << 2;
        int Index = (Pixels & (0xF0 >> (4 - Shift))) >> Shift;
        _SetPixelIndex(xx++, Index);
        if (++CurrentPixel == 2) {
          CurrentPixel = 0;
          Pixels = *(++p);
        }
		  } while (--xsize);
    }
    break;
  case LCD_DRAWMODE_TRANS:
    if (pTrans) {
      do {
        int Shift = (1 - CurrentPixel) << 2;
        int Index = (Pixels & (0xF0 >> (4 - Shift))) >> Shift;
        if (Index) {
          U8 PixelIndex = *(pTrans + Index);
          _SetPixelIndex(xx, PixelIndex);
        } else {
          _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
        }
        xx++;
        if (++CurrentPixel == 2) {
          CurrentPixel = 0;
          Pixels = *(++p);
        }
		  } while (--xsize);
    } else {
      do {
        int Shift = (1 - CurrentPixel) << 2;
        int Index = (Pixels & (0xF0 >> (4 - Shift))) >> Shift;
        if (Index) {
          _SetPixelIndex(xx, Index);
        } else {
          _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
        }
        xx++;
        if (++CurrentPixel == 2) {
          CurrentPixel = 0;
          Pixels = *(++p);
        }
		  } while (--xsize);
    }
    break;
  }
  LCD_L0_DrawBitmap(x, _y, _Bm.XSize, 1, _Bm.BitsPerPixel, _Bm.BytesPerLine, _Bm.pData, 0, 0);
}

/*********************************************************************
*
*       _DrawBitLine8BPP
*/
static void _DrawBitLine8BPP(int x, U8 const GUI_UNI_PTR * p, int xsize, const LCD_PIXELINDEX * pTrans) {
  int xx = x;
  LCD_PIXELINDEX Pixel;
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
  case 0:
    if (pTrans) {
      for (; xsize > 0; xsize--, xx++, p++) {
        Pixel = *p;
        _SetPixelIndex(xx, *(pTrans + Pixel));
      }
    } else {
      for (; xsize > 0; xsize--, xx++, p++) {
        _SetPixelIndex(xx, *p);
      }
    }
    break;
  case LCD_DRAWMODE_TRANS:
    if (pTrans) {
      for (; xsize > 0; xsize--, xx++, p++) {
        Pixel = *p;
        if (Pixel) {
          _SetPixelIndex(xx, *(pTrans + Pixel));
        } else {
          _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
        }
      }
    } else {
      for (; xsize > 0; xsize--, xx++, p++) {
        Pixel = *p;
        if (Pixel) {
          _SetPixelIndex(xx, Pixel);
        } else {
          _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
        }
      }
    }
    break;
  }
  LCD_L0_DrawBitmap(x, _y, _Bm.XSize, 1, _Bm.BitsPerPixel, _Bm.BytesPerLine, _Bm.pData, 0, 0);
}

/*********************************************************************
*
*       _DrawBitLine16BPP
*/
static void _DrawBitLine16BPP(int x, U16 const GUI_UNI_PTR * p, int xsize, const LCD_PIXELINDEX * pTrans) {
  int xx = x;
  LCD_PIXELINDEX pixel;
  if ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) == 0) {
    if (pTrans) {
      for (; xsize > 0; xsize--, xx++, p++) {
        pixel = *p;
        _SetPixelIndex(xx, *(pTrans + pixel));
      }
    } else {
      for (;xsize > 0; xsize--, xx++, p++) {
        _SetPixelIndex(xx, *p);
      }
    }
  } else {
    if (pTrans) {
      for (; xsize > 0; xsize--, xx++, p++) {
        pixel = *p;
        if (pixel) {
          _SetPixelIndex(xx, *(pTrans + pixel));
        } else {
          _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
        }
      }
    } else {
      for (; xsize > 0; xsize--, xx++, p++) {
        pixel = *p;
        if (pixel) {
          _SetPixelIndex(xx, pixel);
        } else {
          _SetPixelIndex(xx, LCD_L0_GetPixelIndex(xx, _y));
        }
      }
    }
  }
  LCD_L0_DrawBitmap(x, _y, _Bm.XSize, 1, _Bm.BitsPerPixel, _Bm.BytesPerLine, _Bm.pData, 0, 0);
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       LCD_L0_DELTA_DrawBitmap
*/
void LCD_L0_DELTA_DrawBitmap(int x0, int y0,
                             int xsize, int ysize,
                             int BitsPerPixel, 
                             int BytesPerLine,
                             const U8 GUI_UNI_PTR * pData, int Diff,
                             const LCD_PIXELINDEX* pTrans)
{
  int i;
  _InitBM(xsize, x0 + Diff);
  for (i = 0; i < ysize; i++) {
    _y = i + y0;
    switch (BitsPerPixel) {
    case 1:
      _DrawBitLine1BPP(x0, pData, Diff, xsize, pTrans);
      break;
    #if (LCD_MAX_LOG_COLORS > 2)
      case 2:
        _DrawBitLine2BPP(x0, pData, Diff, xsize, pTrans);
        break;
    #endif
    #if (LCD_MAX_LOG_COLORS > 4)
      case 4:
        _DrawBitLine4BPP(x0, pData, Diff, xsize, pTrans);
        break;
    #endif
    #if (LCD_MAX_LOG_COLORS > 16)
      case 8:
        _DrawBitLine8BPP(x0, pData, xsize, pTrans);
        break;
    #endif
    #if (LCD_BITSPERPIXEL > 8)
      case 16:
        _DrawBitLine16BPP(x0, (const U16 *)pData, xsize, pTrans);
        break;
    #endif
    }
    pData += BytesPerLine;
  }
}

/*********************************************************************
*
*       LCD_L0_DELTA_DrawHLine
*/
void LCD_L0_DELTA_DrawHLine(int x0, int y,  int x1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    for (; x0 <= x1; x0++) {
      LCD_L0_XorPixel(x0, y);
    }
  } else {
    LCD_L0_DELTA_FillRect(x0, y, x1, y);
  }
}

/*********************************************************************
*
*       LCD_L0_DELTA_DrawVLine
*/
void LCD_L0_DELTA_DrawVLine(int x , int y0,  int y1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    for (; y0 <= y1; y0++) {
      LCD_L0_XorPixel(x, y0);
    }
  } else {
    int aIndex[2];
    _SetRGB(LCD_COLORINDEX);
    aIndex[0] = x % 3;
    aIndex[1] = (x + 1) % 3;
    for (; y0 <= y1; y0++) {
      LCD_L0_SetPixelIndex(x, y0, _aRGB[aIndex[y0 & 1]]);
    }
  }
}

/*********************************************************************
*
*       LCD_L0_DELTA_FillRect
*/
void LCD_L0_DELTA_FillRect(int x0, int y0, int x1, int y1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    for (; y0 <= y1; y0++) {
      LCD_L0_DELTA_DrawHLine(x0, y0, x1);
    }
  } else {
    int x, y, aInit_0 = 0, aInit_1 = 0;
    _InitBM(x1 - x0 + 1, x0);/**/
    _SetRGB(LCD_COLORINDEX);
    for (y = y0; y <= y1; y++) {
      int Index = y & 1;
      if (Index) {
        if (!aInit_1) {
          for (x = x0; x <= x1; x++) {
            _aPixelData_1[x] = _aRGB[(x + 1) % 3];
          }
          aInit_1 = 1;
        }
        LCD_L0_DrawBitmap(x0, y, _Bm.XSize, 1, _Bm.BitsPerPixel, _Bm.BytesPerLine, &_aPixelData_1[x0], 0, 0);
      } else {
        if (!aInit_0) {
          for (x = x0; x <= x1; x++) {
            _aPixelData_0[x] = _aRGB[x % 3];
          }
          aInit_0 = 1;
        }
        LCD_L0_DrawBitmap(x0, y, _Bm.XSize, 1, _Bm.BitsPerPixel, _Bm.BytesPerLine, _Bm.pData, 0, 0);
     }
    }
  }
}

/*********************************************************************
*
*       LCD_L0_DELTA_GetPixelIndex
*/
unsigned int LCD_L0_DELTA_GetPixelIndex(int x, int y) {
  return LCD_L0_GetPixelIndex(x, y);
}

/*********************************************************************
*
*       LCD_L0_DELTA_SetPixelIndex
*/
void LCD_L0_DELTA_SetPixelIndex(int x, int y, int ColorIndex) {
  LCD_L0_SetPixelIndex(x, y, ColorIndex);
}

/*********************************************************************
*
*       LCD_L0_DELTA_XorPixel
*/
void LCD_L0_DELTA_XorPixel(int x, int y) {
  LCD_L0_XorPixel(x, y);
}

#else

void LCDL0Delta_c(void);
void LCDL0Delta_c(void) { } /* avoid empty object files */

#endif

/*************************** End of file ****************************/
	 	 			 		    	 				 	  			   	 	 	 	 	 	  	  	      	   		 	 	 		  		  	 		 	  	  			     			       	   	 			  		    	 	     	 				  	 					 	 			   	  	  			 				 		 	 	 			     			 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香天五香天堂综合| 色婷婷综合视频在线观看| 五月激情综合网| 一区二区三区电影在线播| 国产精品久久久久久久久免费相片| 成人性生交大片免费看在线播放| 免费欧美在线视频| 亚洲成av人片在线| 亚洲高清免费观看| 三级亚洲高清视频| 蜜臀va亚洲va欧美va天堂| 免费日韩伦理电影| 黄色日韩网站视频| 国产一区二区三区观看| 国产成人鲁色资源国产91色综 | 国内久久婷婷综合| 精品一区精品二区高清| 九色综合狠狠综合久久| 国产揄拍国内精品对白| 国产盗摄女厕一区二区三区| 成人性视频网站| av不卡免费电影| 欧美影院午夜播放| 欧美精品一卡两卡| 日韩欧美国产三级电影视频| 欧美成人精品高清在线播放| 久久久国产综合精品女国产盗摄| 国产欧美一区二区在线| 国产精品福利av| 亚洲影院免费观看| 青青草精品视频| 国产精品一区二区三区四区| 日韩欧美一区二区久久婷婷| 91年精品国产| 欧美日韩精品免费观看视频| 91麻豆精品国产91久久久资源速度 | 国产高清在线观看免费不卡| 成人性生交大片免费看视频在线| 日本道精品一区二区三区| 91精品国产综合久久久久久| 精品国产免费视频| 中文字幕视频一区二区三区久| 亚洲午夜av在线| 久久丁香综合五月国产三级网站| 国产福利91精品| 精品视频全国免费看| 26uuu亚洲婷婷狠狠天堂| 亚洲欧洲色图综合| 奇米四色…亚洲| 91丨porny丨蝌蚪视频| 91超碰这里只有精品国产| 国产日韩欧美在线一区| 亚洲永久精品大片| 成人夜色视频网站在线观看| 777xxx欧美| 中文字幕一区二区三区在线播放| 午夜av区久久| 成人av在线网| 日韩一级免费一区| 亚洲精品日产精品乱码不卡| 久久国产乱子精品免费女| 色诱视频网站一区| 久久亚洲影视婷婷| 午夜精品久久久久久久久久久| 高清成人免费视频| 日韩视频一区二区三区在线播放| 1024成人网| 国产麻豆成人传媒免费观看| 欧美丝袜丝交足nylons| 国产精品免费视频一区| 肉色丝袜一区二区| 成人h动漫精品| 337p日本欧洲亚洲大胆精品 | 成人av电影在线| 日韩写真欧美这视频| 亚洲欧美国产77777| 国产在线视频一区二区三区| 欧美日韩国产一级| 亚洲三级小视频| 风流少妇一区二区| 欧美mv日韩mv亚洲| 午夜视频在线观看一区二区三区| 91在线视频在线| 国产日产精品一区| 国产麻豆精品一区二区| 日韩亚洲欧美在线| 午夜精品久久久久久久久| 欧美色精品天天在线观看视频| 国产精品夫妻自拍| 成人免费av资源| 国产亚洲一区二区三区四区| 另类小说色综合网站| 欧美一区二区三区啪啪| 亚洲成av人片一区二区三区| 色综合久久久久久久久| 国产精品国产自产拍在线| 国产91丝袜在线播放0| 久久亚洲综合色一区二区三区| 久久精品国产一区二区| 欧美一区二区美女| 日本欧美在线看| 日韩欧美国产三级| 免费看欧美美女黄的网站| 91.com在线观看| 日av在线不卡| 日韩视频一区二区三区在线播放| 免费人成在线不卡| 日韩欧美一级二级| 狠狠色综合日日| 久久综合中文字幕| 国产精品影视在线| 国产精品久久久久天堂| eeuss鲁片一区二区三区在线看| 国产精品欧美综合在线| 波多野结衣亚洲| 一区二区三区在线观看欧美| 日本二三区不卡| 性久久久久久久久| 日韩欧美一二三四区| 国产一区二区三区在线观看免费| 国产欧美日韩在线| av在线播放不卡| 亚洲一区二区影院| 欧美高清精品3d| 蜜乳av一区二区三区| 日韩欧美一级片| 丁香婷婷深情五月亚洲| 亚洲精品久久7777| 欧美日韩精品欧美日韩精品| 免费av成人在线| 国产视频一区二区三区在线观看| 成人av电影免费在线播放| 亚洲高清视频的网址| 日韩欧美一级二级三级| 国产成人亚洲综合a∨猫咪| 中文字幕在线观看不卡视频| 欧美性受xxxx黑人xyx| 麻豆精品在线播放| 中文字幕乱码久久午夜不卡| 97久久久精品综合88久久| 亚洲二区视频在线| 久久久一区二区三区| 97精品久久久午夜一区二区三区| 亚洲大片精品永久免费| 久久影视一区二区| 欧美做爰猛烈大尺度电影无法无天| 五月天一区二区三区| 久久久久国产精品麻豆ai换脸| 99国产精品国产精品久久| 丝袜美腿成人在线| 国产精品天美传媒| 欧美日韩午夜在线| 国产高清无密码一区二区三区| 亚洲精品国产第一综合99久久 | 欧美精品日日鲁夜夜添| 国产精品综合在线视频| 伊人色综合久久天天人手人婷| 欧美一区二区久久| 一本色道久久综合亚洲91| 久久综合综合久久综合| 国产精品毛片无遮挡高清| 在线电影欧美成精品| 成人av网站大全| 另类小说一区二区三区| 一区二区三区四区激情| 久久久激情视频| 欧美一级二级在线观看| 99在线精品免费| 久久99久久99小草精品免视看| 中文字幕佐山爱一区二区免费| 亚洲精品一区二区三区影院| 色婷婷亚洲精品| 国产成人免费视频精品含羞草妖精| 午夜精品久久久久久久99水蜜桃| 中文字幕亚洲综合久久菠萝蜜| 91精品国产麻豆国产自产在线| 99精品1区2区| 国产福利一区二区| 蜜臀av性久久久久av蜜臀妖精 | 波多野结衣中文字幕一区| 奇米888四色在线精品| 亚洲美女一区二区三区| 欧美激情在线一区二区| 日韩欧美激情一区| 91精品国产综合久久久久久 | 精品国产电影一区二区| 欧美精品xxxxbbbb| 色乱码一区二区三区88| proumb性欧美在线观看| 国产高清无密码一区二区三区| 另类调教123区| 日本午夜精品一区二区三区电影| 亚洲人成网站在线| 中文字幕制服丝袜一区二区三区| 26uuu欧美| 日韩一区二区免费在线电影| 欧美精品一卡二卡| 欧美肥妇free| 欧美放荡的少妇| 7777精品久久久大香线蕉 |