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

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

?? maps.cpp

?? 給予QT的qps開源最新源碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
      actMapList.remove(delmap);
   maps.remove(delmap);
}

MapImage::MapImage(QString & mapInfo, const QString &subdir) : MapBase(mapInfo, subdir)
{
	pixmap = NULL;
}

MapImage::MapImage():MapBase()
{
	pixmap = NULL;
}

MapImage::~MapImage()
{
	if(pixmap != NULL)
		unload();
}

void MapImage::setLimits()
{
	Position limit;
	calcPos(limit, 0, 0);
	limitNorthWest.lat = limit.lat;
	limitNorthWest.lon = limit.lon;
	calcPos(limit, mapSizeX, mapSizeY);
	limitSouthEast.lat = limit.lat;
	limitSouthEast.lon = limit.lon;
}

bool MapImage::load()
{
   if (pixmap != NULL && !pixmap->isNull())
      return true; // already loaded
   
   QString filename = mapSelector->mapPathStr();
	filename.append("/");
	filename.append(name());
	pixmap = new QPixmap(filename);
	if (pixmap->isNull())  // error reading map
	{
		unload();
		return false;
	}
	else
		return true;
}

void MapImage::unload()
{
	if (pixmap != NULL)
      delete pixmap;
	pixmap = NULL;
}

void MapImage::draw(QPixmap *viewer, const Position & pos)
{
	double xc, yc;
	
   // load the image
   if (!mapSelector->loadMapImage(this))
	   // load failed
	   return;

   calcxy(&xc, &yc, pos);

	int dx, dy, sx, sy, sw, sh;

   sw = viewer->width();
   if (sw/2 > (int) xc) {
      sx = 0;
      dx = sw/2 - (int)xc; 
      sw = sw - dx;
   }
   else {
      dx = 0;
      sx = (int)xc - sw/2;
   }
	if (sx+sw > pixmap->width())
		sw = pixmap->width() - sx;

   sh = viewer->height();
   if (sh/2 > (int) yc) {
      sy = 0;
      dy = sh/2 - (int)yc; 
      sh = sh - dy;
   }
   else {
      dy = 0;
      sy = (int)yc - sh/2;
   }
	if (sy+sh > pixmap->height())
		sh = pixmap->height() - sy;

   bitBlt(viewer, dx, dy, pixmap, sx, sy, sw, sh);
}

void MapImage::addTrack(Track *track, QColor &, int)
{
	// draw the track in the current map
	QPainter painter;

    if (pixmap && !pixmap->isNull())
	{
		painter.begin(pixmap);

		track->drawTrack(&painter,this,0,0,
			pixmap->width(), pixmap->height());

		painter.end();
	}

}

MapLin::MapLin(QString & mapInfo, const QString &subdir) : MapImage(mapInfo, subdir)
{
   // read additional map info
   QTextIStream mapIStream(&mapInfo);
   mapIStream >> mapName >> scale >> mapSizeX >> mapSizeY;
   mapIStream >> pos1.lon >> pos1.lat >> x1 >> y1
      >> pos2.lon >> pos2.lat >> x2 >> y2;
   projection = "LINEAR";
   // FIXME: why check only longitude?
   checkLg(deg2rad(pos1.lon));
   checkLg(deg2rad(pos2.lon));

   setLimits();
}

bool MapLin::calcxy(double * x, double * y, const Position & pos)
{
   *x =  x1 + (checkLg(deg2rad(pos.lon - pos1.lon)) * (x2 - x1)
         / checkLg(deg2rad(pos2.lon - pos1.lon)));
   *y = y1 + ((deg2rad(pos.lat - pos1.lat)) * (y2 - y1)
         / deg2rad(pos2.lat - pos1.lat));
   if ( (*x < 0) || (*x >= mapSizeX) || (*y < 0) || (*y >= mapSizeY) ) {
      return false;
   } else {
      return true;
   }
}

bool MapLin::calcPos(Position & pos, double x, double y)
{
   double latr = deg2rad(pos1.lat)
      + ((y - y1) * (deg2rad(pos2.lat - pos1.lat)) / (y2 - y1));
   double lonr =  checkLg(deg2rad(pos1.lon) + ((x - x1)
            * checkLg(deg2rad(pos2.lon - pos1.lon)) / (x2 - x1)));
   pos.lat = rad2deg(latr);
   pos.lon = rad2deg(lonr);
   // FIXME: all calcPos methods always return true?
   return true;
}

QString MapLin::getInfo()
{
   QString info;
   info = tr("Linear Projection, SCALE 1:%1,\nLat: %2 to %3, Lon: %4 to %5")
      .arg(scale)
      .arg(pos1.lat).arg(pos2.lat)
      .arg(pos1.lon).arg(pos2.lon);
   return info;
}

QString MapLin::getParameterStr()
{
   QString param;
   /*    param = tr("%1 %2 %3 %4 %5 %6 %7 %8 %9")
         .arg(projection).arg(name).arg(scale).arg(mapSizeX).arg(mapSizeY)
         .arg(longitude1*rad2deg).arg(latitude1*rad2deg).arg(x1).arg(y1);
         param.append(tr(" %1 %2 %3 %4")
         .arg(longitude2*rad2deg).arg(latitude2*rad2deg).arg(x2).arg(y2));
    */
   QTextOStream os(&param);
   os.precision(10);
   os << projection << " " << name() << " " << scale << " " << mapSizeX
      << " " << mapSizeY << " " << pos1.lon << " " << pos1.lat << " " << 
      x1 << " " << y1 << " " << pos2.lon << " " << pos2.lat << " " << 
      x2 << " " << y2;

   return param;
}

MapCEA::MapCEA(QString & mapInfo, const QString &subdir) : MapImage(mapInfo, subdir)
{
   // read additional map info
   QTextIStream mapIStream(&mapInfo);
   mapIStream >> mapName >> scale >> mapSizeX >> mapSizeY;
   Position pos1, pos2;
   mapIStream >> pos1.lon >> pos1.lat >> x1 >> y1
      >> pos2.lon >> pos2.lat >> x2 >> y2;

   projection = "CEA";

   // precalc
   xlon1 = checkLg(deg2rad(pos1.lon));
   ylat1 = sin(deg2rad(pos1.lat));
   xlon2 = checkLg(deg2rad(pos2.lon));
   ylat2 = sin(deg2rad(pos2.lat));

	setLimits();
}

bool MapCEA::calcxy(double * x, double * y, const Position & pos)
{
   double xt = deg2rad(pos.lon);
   double yt = sin(deg2rad(pos.lat));
   *x = x1 + (checkLg(xt - xlon1) * (x2 - x1) / checkLg(xlon2 - xlon1));
   *y = y1 + ((yt - ylat1) * (y2 - y1) / (ylat2 - ylat1));
   if ( (*x < 0) || (*x >= mapSizeX) || (*y < 0) || (*y >= mapSizeY) ) {
      return false;
   } else {
      return true;
   }
}

bool MapCEA::calcPos(Position & pos, double x, double y)
{
   double xt = xlon1 + ((x - x1) * checkLg(xlon2 - xlon1) / (x2 - x1));
   double yt = ylat1 + ((y - y1) * (ylat2 - ylat1) / (y2 - y1));
   pos.lat = rad2deg(asin(yt));
   pos.lon = rad2deg(checkLg(xt));
   return true;
}

QString MapCEA::getInfo()
{
   QString info;
   Position pos1, pos2;
   calcPos(pos1, x1, y1);
   calcPos(pos1, x1, y1);
   info = tr("Cylindrical Equal Area Projection, SCALE 1:%1,\n"
         "Lat: %2 to %3, Lon: %4 to %5")
      .arg(scale)
      .arg(pos1.lat).arg(pos2.lat)
      .arg(pos1.lon).arg(pos2.lon);
   return info;
}

QString MapCEA::getParameterStr()
{
   QString param;
   Position pos1, pos2;
   calcPos(pos1, x1, y1);
   calcPos(pos1, x1, y1);
   /*
      param = tr("%1 %2 %3 %4 %5 %6 %7 %8 %9")
      .arg(projection).arg(name).arg(scale).arg(mapSizeX).arg(mapSizeY)
      .arg(longitude1*rad2deg).arg(latitude1*rad2deg).arg(x1).arg(y1);
      param.append(tr(" %1 %2 %3 %4")
      .arg(longitude2*rad2deg).arg(latitude2*rad2deg).arg(x2).arg(y2));
    */
   QTextOStream os(&param);
   os.precision(10);
   os << projection << " " << name() << " " << scale << " " << mapSizeX
      << " " << mapSizeY << " " << pos1.lon << " " << pos1.lat << " " << 
      x1 << " " << y1 << " " << pos2.lon << " " << pos2.lat << " " << 
      x2 << " " << y2;

   return param;
}

MapUTM::MapUTM(QString & mapInfo, bool utmCoord, const QString &subdir) : MapImage(mapInfo, subdir)
{
   // read additional map info
   Position pos1, pos2;
   QTextIStream mapIStream(&mapInfo);
   mapIStream >> mapName >> scale >> mapSizeX >> mapSizeY;
   if ( utmCoord ) {
      universal = true;
      mapIStream >> utmZone >> utmNorthing1 >> utmEasting1 >> x1 >> y1
         >> utmNorthing2 >> utmEasting2 >> x2 >> y2;
      UTMtoLL(utmNorthing1, utmEasting1, utmZone, pos1, stdLon );
      UTMtoLL(utmNorthing2, utmEasting2, utmZone, pos2, stdLon );
      projection = "UTM";
   } else {
      universal = false;
      mapIStream >> pos1.lon >> pos1.lat >> x1 >> y1
         >> pos2.lon >> pos2.lat >> x2 >> y2 >> stdLon;
      projection = "TM";
   }

   stdLon = deg2rad(stdLon);

   // precalc
   xlon1 = 0.5 * atanh(cos(deg2rad(pos1.lat))
         * sin(checkLg(deg2rad(pos1.lon) - stdLon)));
   ylat1 = atan(tan(deg2rad(pos1.lat))
         / cos(checkLg(deg2rad(pos1.lon) - stdLon)));
   xlon2 = 0.5 * atanh(cos(deg2rad(pos2.lat))
         * sin(checkLg(deg2rad(pos2.lon) - stdLon)));
   ylat2 = atan(tan(deg2rad(pos2.lat))
         / cos(checkLg(deg2rad(pos2.lon) - stdLon)));

	setLimits();
}

MapUTM::MapUTM(bool utmCoord) : MapImage()
{
   if ( utmCoord ) {
      universal = true;
      projection = "UTM";
   } else {
      universal = false;
      projection = "TM";
   }

	setLimits();
}

bool MapUTM::calcxy(double * x, double * y, const Position & pos)
{
   double xt = 0.5 * atanh(cos(deg2rad(pos.lat))
         * sin(checkLg(deg2rad(pos.lon) - stdLon)));
   double yt = atan(tan(deg2rad(pos.lat))
         / cos(checkLg(deg2rad(pos.lon) - stdLon)));
   *x = x1 + (checkLg(xt - xlon1) * (x2 - x1) / checkLg(xlon2 - xlon1));
   *y = y1 + ((yt - ylat1) * (y2 - y1) / (ylat2 - ylat1));
   if ( (*x < 0) || (*x >= mapSizeX) || (*y < 0) || (*y >= mapSizeY) ) {
      return false;
   } else {
      return true;
   }
}

bool MapUTM::calcPos(Position & pos, double x, double y)
{
   double xt = xlon1 + ((x - x1) * checkLg(xlon2 - xlon1) / (x2 - x1));
   double yt = ylat1 + ((y - y1) * (ylat2 - ylat1) / (y2 - y1));
   pos.lat = rad2deg(asin(sin(yt) / cosh(xt)));
   pos.lon = rad2deg(checkLg(stdLon + atan(sinh(xt) / cos(yt))));
   return true;
}

void MapUTM::UTMtoLL(double UTMNorthing, double UTMEasting, QString UTMZone,
      Position & pos, double & stdLon )
{
   //converts UTM coords to lat/long.  Equations from USGS Bulletin 1532
   //East Longitudes are positive, West longitudes are negative.
   //North latitudes are positive, South latitudes are negative
   //pos is in decimal degrees.
   //Written by Chuck Gantz- chuck.gantz@globalstar.com

   static const double k0 = 0.9996;
   static const double a = 6378137;
   static const double eccSquared = 0.00669438;

   double e1 = (1 - sqrt(1 - eccSquared)) / (1 + sqrt(1 - eccSquared));
   int NorthernHemisphere; //1 for northern hemispher, 0 for southern

   double x = UTMEasting - 500000.0; //remove 500,000 meter offset for longitude
   double y = UTMNorthing;

   char * ZoneLetter;
   int ZoneNumber = strtoul(UTMZone.latin1(), &ZoneLetter, 10);
   if ( (*ZoneLetter - 'N') >= 0 ) {
      NorthernHemisphere = 1;//point is in northern hemisphere
   } else {
      NorthernHemisphere = 0;//point is in southern hemisphere
      y -= 10000000.0;//remove 10,000,000 meter offset used for southern hemisphere
   }

   double eccPrimeSquared = eccSquared / (1 - eccSquared);

   double M = y / k0;
   double mu = M / (a * (1 - eccSquared/4 - 3 * square(eccSquared) / 64
            - 5 * std::pow(eccSquared, 3) / 256));

   // FIXME: double check the following two lines
   double phi1Rad = mu + (3 * e1 / 2 - 27 * std::pow(e1, 3) / 32) * sin(2 * mu)
      + (21 * square(e1) / 16 - 55 * std::pow(e1, 4) / 32) * sin(4 * mu)
      + (151 * std::pow(e1, 3) / 96) * sin(6 * mu);
//   double phi1 = deg2rad(phi1Rad);

   double N1 = a / sqrt(1 - eccSquared * square(sin(phi1Rad)));
   double T1 = square(tan(phi1Rad));
   double C1 = eccPrimeSquared * square(cos(phi1Rad));
   double R1 = a * (1 - eccSquared)
      / std::pow(1 - eccSquared * square(sin(phi1Rad)), 1.5);
   double D = x / (N1 * k0);

   pos.lat = rad2deg(phi1Rad - (N1 * tan(phi1Rad) / R1) * (square(D) / 2
            - (5 + 3 * T1 + 10 * C1 - 4 * square(C1) - 9 * eccPrimeSquared)
            * std::pow(D, 4) / 24 + (61 + 90 * T1 + 298 * C1 + 45 * square(T1)
               - 252  * eccPrimeSquared - 3 * square(C1)) * std::pow(D, 6)
            / 720));

   // default value
   double LonOrigin = (ZoneNumber - 1) * 6 - 180 + 3;  //+3 puts origin in middle of zone
   // check for need of special value
   switch ( ZoneNumber ) {
      case 31:
         if ( pos.lat >= 72.0 && pos.lat < 84.0 ) {
            LonOrigin = 4.5; // special case Svalbard
         } else if ( pos.lat >= 56.0 && pos.lat < 64.0 ) {
            LonOrigin = 1.5; // special case southwest Norway
         }
         break;
      case 32:
         if ( pos.lat >= 56.0 && pos.lat < 64.0 ) {
            LonOrigin = 7.5; // special case southwest Norway
         }
         break;
      case 33:
         if ( pos.lat >= 72.0 && pos.lat < 84.0 ) {
            LonOrigin = 15; // special case Svalbard
         }
         break;
      case 35:
         if ( pos.lat >= 72.0 && pos.lat < 84.0 ) {
            LonOrigin = 27; // special case Svalbard
         }
         break;
      case 37:
         if ( pos.lat >= 72.0 && pos.lat < 84.0 ) {
            LonOrigin = 37.5; // special case Svalbard
         }
         break;
   }
   stdLon = LonOrigin;

   pos.lon = LonOrigin + rad2deg((D -(1 + 2 * T1 + C1) * std::pow(D, 3) / 6
            + (5 - 2 * C1 + 28 * T1 - 3 * square(C1) + 8 * eccPrimeSquared
               + 24 * square(T1)) * std::pow(D, 5) / 120) / cos(phi1Rad));
}

QString MapUTM::getInfo()
{
   QString info;
   Position pos1, pos2;
   calcPos(pos1, x1, y1);
   calcPos(pos1, x1, y1);
   if ( universal ) {
      info = tr("Universal Transverse Mercator Projection, "
            "SCALE 1:%1,\nLat: %2 to %3, Lon: %4 to %5\n"
            "std.Longitude: %6")
         .arg(scale)
         .arg(pos1.lat).arg(pos2.lat)
         .arg(pos1.lon).arg(pos2.lon)
         .arg(rad2deg(stdLon));
   } else {
      info = tr("Transverse Mercator Projection, "
            "SCALE 1:%1,\nLat: %2 to %3, Lon: %4 to %5\n"
            "std.Longitude: %6")
         .arg(scale)
         .arg(pos1.lat).arg(pos2.lat)
         .arg(pos1.lon).arg(pos2.lon)
         .arg(rad2deg(stdLon));
   }
   return info;
}

QString MapUTM::getParameterStr()
{
   QString param;
   if ( universal ) {
      /*        param = tr("%1 %2 %3 %4 %5 %6 %7 %8 %9")
                .arg(projection).arg(name).arg(scale).arg(mapSizeX).arg(mapSizeY)
                .arg(utmZone).arg(utmNorthing1).arg(utmEasting1).arg(x1);
                param.append(tr(" %1 %2 %3 %4 %5")
                .arg(y1).arg(utmNorthing2).arg(utmEasting2).arg(x2).arg(y2));
       */
      QTextOStream os(&param);
      os.precision(10);
      os << projection << " " << name() << " " << scale << " "
         <<  mapSizeX  << " " << mapSizeY << " " << utmZone << " "
         << utmNorthing1 << " " << utmEasting1 << " " << x1 << " " << y1 << " "
         << utmNorthing2 << " " << utmEasting2 << " " << x2 << " " << y2;
      return param;
   } else {
      /*        param = tr("%1 %2 %3 %4 %5 %6 %7 %8 %9")
                .arg(projection).arg(name).arg(scale).arg(mapSizeX).arg(mapSizeY)
                .arg(longitude1*rad2deg).arg(latitude1*rad2deg).arg(x1).arg(y1);
                param.append(tr(" %1 %2 %3 %4 %5")
                .arg(longitude2*rad2deg).arg(latitude2*rad2deg).arg(x2).arg(y2).arg(stdLon*rad2deg));
       */
      Position pos1, pos2;
      calcPos(pos1, x1, y1);
      calcPos(pos1, x1, y1);
      QTextOStream os(&param);
      os.precision(10);
      os << projection << " " << name() << " " << scale << " " << 
         mapSizeX << " " << mapSizeY << " " << pos1.lon << " " << pos1.lat
         << " " << x1 << " " << y1 << " " << pos2.lon << " " << pos2.lat 
         << " " << x2 << " " << y2 << " " << rad2deg(stdLon);
      return param;
   }
}

MapMercator::MapMercator(QString & mapInfo, const QString &subdir) : MapImage(mapInfo, subdir)
{
   // read additional map info
   QTextIStream mapIStream(&mapInfo);
   mapIStream >> mapName >> scale >> mapSizeX >> mapSizeY;
   Position pos1, pos2;
   mapIStream >> pos1.lon >> pos1.lat >> x1 >> y1
      >> pos2.lon >> pos2.lat >> x2 >> y2;

   projection = "MERCATOR";

   // precalc
   xlon1 = checkLg(deg2rad(pos1.lon));
   //ylat1 = log(tan(latitude1)+1.0/cos(latitude1));
   ylat1 = atanh(sin(deg2rad(pos1.lat)));
   xlon2 = checkLg(deg2rad(pos2.lon));
   //ylat2 = log(tan(latitude2)+1.0/cos(latitude2));
   ylat2 = atanh(sin(deg2rad(pos2.lat)));

	setLimits();
}

bool MapMercator::calcxy(double * x, double * y, const Position & pos)
{
   double xt = deg2rad(pos.lon);
   //yt = log(tan(lat)+1.0/cos(lat));
   double yt = atanh(sin(deg2rad(pos.lat)));
   *x = x1 + (checkLg(xt - xlon1) * (x2 - x1) / checkLg(xlon2 - xlon1));
   *y = y1 + ((yt - ylat1) * (y2 - y1) / (ylat2 - ylat1) );
   if ( (*x < 0) || (*x >= mapSizeX) || (*y < 0) || (*y >= mapSizeY) ) {
      return false;
   } else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区在线观看视频| 伊人一区二区三区| 91精品一区二区三区在线观看| 午夜精品久久久久久久久久久| 久久精品一区四区| 91啪亚洲精品| 久草中文综合在线| 亚洲国产视频一区二区| 久久毛片高清国产| 欧美日韩精品一区二区| 国产精品18久久久久久久久久久久 | 亚洲国产日韩在线一区模特| 精品剧情在线观看| 91亚洲精华国产精华精华液| av资源网一区| 另类人妖一区二区av| 亚洲欧美另类久久久精品| 4438x亚洲最大成人网| 成人99免费视频| 久久精品av麻豆的观看方式| 日韩精品一级二级| 亚洲一区二区3| 亚洲精品视频在线观看网站| 国产精品久久久久久久蜜臀| 精品嫩草影院久久| 国产性色一区二区| 欧美在线不卡一区| 欧美精品久久天天躁| 日韩高清不卡在线| 亚洲黄色免费电影| 国产精品91一区二区| 国产精品系列在线观看| 三级成人在线视频| 精品一区二区三区蜜桃| 国产成人在线视频免费播放| 成人av电影免费观看| 91久久精品一区二区三区| 91麻豆精品国产综合久久久久久| 日韩欧美一级在线播放| 久久精品亚洲一区二区三区浴池| 成人免费在线视频观看| 中文字幕综合网| 亚洲午夜在线视频| 亚洲成人激情综合网| 久久不见久久见中文字幕免费| 蜜臀久久99精品久久久久久9| 麻豆一区二区99久久久久| 日本在线不卡一区| 国产高清不卡一区| 在线日韩国产精品| 日韩免费视频线观看| 8x8x8国产精品| 欧美韩国一区二区| 亚洲三级免费观看| 精品一区二区影视| 成人做爰69片免费看网站| 99久久婷婷国产| 欧美一区二区播放| 国产精品成人免费精品自在线观看| 亚洲黄色免费电影| 国产一区二区三区蝌蚪| 欧美三级电影在线看| 久久久.com| 美女视频一区二区三区| 色网综合在线观看| 亚洲色图视频免费播放| 天天色天天爱天天射综合| 欧美视频日韩视频在线观看| 风间由美一区二区三区在线观看| 精品系列免费在线观看| 精品人在线二区三区| 成人黄色av电影| 国产成人精品免费| 欧美日韩精品一区二区三区蜜桃| 国产亚洲一区字幕| 全国精品久久少妇| 在线亚洲一区观看| 国产精品国产三级国产专播品爱网 | 精品久久国产老人久久综合| 一区二区三区国产精华| 懂色一区二区三区免费观看| 欧美一区二区三区在| 亚洲美女免费视频| 99久久国产综合精品麻豆| 精品三级在线观看| 免费高清不卡av| 欧美性感一区二区三区| 亚洲欧美在线视频| 国产a久久麻豆| 精品少妇一区二区三区免费观看 | 日韩在线卡一卡二| 色素色在线综合| 国产农村妇女毛片精品久久麻豆 | 欧美日韩国产一二三| 国产精品乱码人人做人人爱| 国产精品18久久久久久vr| 日韩欧美美女一区二区三区| 亚洲超碰精品一区二区| 在线精品视频免费观看| 亚洲免费在线播放| 成人一区二区三区视频在线观看 | 国产精品国产三级国产普通话蜜臀 | 亚洲小说欧美激情另类| 色先锋aa成人| 国产精品久久毛片| 国产成人三级在线观看| 精品久久国产字幕高潮| 丝袜脚交一区二区| 91.麻豆视频| 亚洲高清在线视频| av电影在线观看一区| 国产精品毛片久久久久久久| 成人精品在线视频观看| 亚洲国产日日夜夜| 欧美日本精品一区二区三区| 欧美激情资源网| 亚洲色图欧美激情| 成人性色生活片| 国产精品免费人成网站| 91热门视频在线观看| 亚洲精品一卡二卡| 欧美男人的天堂一二区| 亚洲线精品一区二区三区| 51午夜精品国产| 久久精品国产亚洲一区二区三区| 精品日韩一区二区| 天天av天天翘天天综合网| 色综合中文字幕国产| 国产亚洲欧美日韩俺去了| 国产原创一区二区| 国产精品久久久久桃色tv| 一本色道**综合亚洲精品蜜桃冫| 亚洲人成网站色在线观看| 欧美视频中文一区二区三区在线观看| 综合分类小说区另类春色亚洲小说欧美| 国产精品99久| 亚洲免费伊人电影| 6080日韩午夜伦伦午夜伦| 免费观看久久久4p| 精品国产乱码久久久久久老虎| 国产激情一区二区三区| 亚洲日本丝袜连裤袜办公室| 91首页免费视频| ...xxx性欧美| 在线亚洲人成电影网站色www| 久久久久久免费毛片精品| 久久丁香综合五月国产三级网站| 久久久久国色av免费看影院| 高清不卡在线观看| 欧美日韩亚洲另类| 日韩丝袜情趣美女图片| 亚洲一区在线视频观看| 国产成人无遮挡在线视频| 一二三四社区欧美黄| 91精品午夜视频| 成人午夜视频网站| 国产女主播一区| 国产不卡免费视频| 中文字幕在线不卡视频| 91蝌蚪porny| 国产精品你懂的| 欧美一区二区三区影视| 久久99精品久久久久久动态图 | 国产亚洲欧美中文| 成人性视频免费网站| 亚洲另类一区二区| 91小视频在线| 日韩激情一二三区| 中文字幕av不卡| 一本到一区二区三区| 国产尤物一区二区在线| 国产精品毛片大码女人| 日本久久一区二区三区| 国产成人精品亚洲午夜麻豆| 亚洲成人tv网| 欧美人与禽zozo性伦| 青青草伊人久久| 69精品人人人人| 暴力调教一区二区三区| 国产精品国模大尺度视频| av动漫一区二区| 视频一区二区国产| 国产夜色精品一区二区av| 色综合久久中文综合久久97| 偷窥国产亚洲免费视频| 精品国产网站在线观看| 国产精品99久久久久久久vr | 亚洲福利国产精品| 视频在线观看国产精品| 国产亚洲成年网址在线观看| 99视频精品全部免费在线| 亚洲蜜臀av乱码久久精品| 制服丝袜激情欧洲亚洲| 国产伦精品一区二区三区视频青涩| 国产欧美日韩精品a在线观看| 欧美精品一卡二卡| 91美女福利视频| 成人高清免费在线播放| 国产精品一区一区| 蜜臀av亚洲一区中文字幕|