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

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

?? gpsdata.cpp

?? 給予QT的qps開源最新源碼
?? CPP
字號:
/*
   qpegps is a program for displaying a map centered at the current longitude/
   latitude as read from a gps receiver.

   Copyright (C) 2002 Ralf Haselmeier <Ralf.Haselmeier@gmx.de>

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

 */

#include "gpsdata.h"

#include "convert.h"
// initialization of static elements:
Altitude::Unit Altitude::unit = Altitude::Feet;
Speed::Unit Speed::unit = Speed::Knots;
Distance::Unit Distance::unit = Distance::Naut;
Position::Unit Position::unit = Position::DegMin;

QString Altitude::toString(bool bUnit)
{
   switch ( Altitude::unit ) {
      case None:
         return QObject::tr("");
         break;
      case Meter:
         if (bUnit)
            QObject::tr("%1 m").arg(val, 0, 'f', 0);
         else
            QObject::tr("%1").arg(val, 0, 'f', 0);
         break;
      case Feet:
         if (bUnit)
            return QObject::tr("%1 ft").arg(val * 3.2808399, 0, 'f', 0);
         else
            return QObject::tr("%1").arg(val * 3.2808399, 0, 'f', 0);
         break;
      case FL:
         if (bUnit)
            return QObject::tr("%1 FL").arg(val * 0.032808399,0, 'f', 1);
         else
            return QObject::tr("%1").arg(val * 0.032808399,0, 'f', 1);
         break;
   }
   return 0;
}

QString Speed::toString()
{
   switch ( Speed::unit ) {
      case None:
         return QObject::tr("");
         break;
      case Kmh:
         return QObject::tr("%1 kmh").arg(val * MPS_TO_KPH, 0, 'f', 1);
         break;
      case Knots:
         return QObject::tr("%1 kn").arg(val * MPS_TO_KNOTS, 0, 'f', 1);
         break;
      case Mph:
         return QObject::tr("%1 mph").arg(val * MPS_TO_MPH, 0, 'f', 1);
         break;
   }
   return 0;
}

QString Distance::toString()
{
   switch ( Distance::unit ) {
      case None:
         return QObject::tr("");
         break;
      case Km:
         return QObject::tr("%1 km").arg(val * 1.852, 0, 'f', 3);
         break;
      case Naut:
         return QObject::tr("%1 nmi").arg(val, 0, 'f', 3);
         break;
      case Statute:
         return QObject::tr("%1 mi").arg(val * 1.1507794, 0, 'f', 3);
         break;
   }
   return 0;
}

QString Position::string(double l, Axis a)
{
   QString sign;
   if ( a == Lat ) {
      sign = ( l > 0 ) ? QObject::tr("N") : QObject::tr("S");
   } else {
      sign = ( l > 0 ) ? QObject::tr("E") : QObject::tr("W");
   }
   double dec = fabs(l);
   switch ( Position::unit ) {
      case Degree:
         return QObject::tr("%1\260%2").arg(dec, 0, 'f', 5).arg(sign);
         break;
      case DegMin:
         {
         double deg = floor(dec);
         double min = (dec - deg) * 60.0;
         return QObject::tr("%1\260%2'%3").arg(deg, 0, 'f', 0)
            .arg(min, 0, 'f', 3).arg(sign);
         }
         break;
      case DegMinSec:
         {
         double deg = floor(dec);
         double min = floor((dec - deg) * 60.0);
         double sec = (dec - (deg + min / 60.0)) * 3600.0;
         return QObject::tr("%1\260%2'%3\"%4").arg(deg, 0, 'f', 0)
            .arg(min, 0, 'f', 0)
            .arg(sec, 0, 'f', 2).arg(sign);
         }
         break;
   }
   return 0;
}

double Position::number(const QString & l, Axis a)
{
   double sign = +1.0;
   QRegExp re("[\\s'\"]");

   QString str = l.simplifyWhiteSpace();

   int p;
   if ( a == Lat ) {
      p = str.find(QObject::tr("s"), 0, false);
   } else {
      p = str.find(QObject::tr("w"), 0, false);
   }
   if ( p >= 0 ) {
      sign = -1.0;
      str.remove(p, 1);
      str = str.simplifyWhiteSpace();
   }
   if ( a == Lat ) {
      p = str.find(QObject::tr("n"), 0, false);
   } else {
      p = str.find(QObject::tr("e"), 0, false);
   }
   if ( p >= 0 ) {
      str.remove(p, 1);
      str = str.simplifyWhiteSpace();
   }

   float deg = str.toFloat();
   float min = 0.0, sec = 0.0;
   p = str.find(re);
   if ( p > 0 ) {
      str = str.mid(p + 1);
      min = str.toFloat();
      p = str.find(re);
      if ( p > 0 ) {
         str = str.mid(p + 1);
         sec = str.toFloat();
      }
   }
   return sign * dms2deg(deg, min, sec);
}

QString Angle::toString()
{
   return QObject::tr("%1").arg(val, 0, 'f', 0);
}

QString TimeStamp::toString()
{
   if ( date.isEmpty() || time.isEmpty() ) {
      return QObject::tr("* No GMT Signal rcvd *");
   }
   return date + " " + time;
}

GeoDatum::GeoDatum(QObject * parent, const char * name)
   : QObject(parent,name)
{
   errorCode = Initialize_Ellipsoids();
   if ( errorCode ) {
      qWarning(tr("Ellipsoid table couldn't be initialized (check existance and path of ellipse.dat)"));
   }
   errorCode = Initialize_Datums();
   if ( errorCode ) {
      qWarning(tr("Datum table couldn't be initialized (check existance and path of 3_param.dat and 7_param.dat"));
      datumCount = 0;
      datumList = 0;
   } else {
      char datumName[64];
      QString datName;
      Datum_Count(&datumCount);
      for ( long i = 1; i < datumCount; ++i ) {
         Datum_Name(i, datumName);
         datName = datumName;
         datName = datName.simplifyWhiteSpace();
         //datName = datName.lower();
         //datName.truncate(26);
         datumList.append(datName);
      }
   }
}

void GeoDatum::convertDatum(long fromIdx, long toIdx,
      double * lat, double * lon, double * altitude)
{
   long error;
   error = Geodetic_Datum_Shift(
         fromIdx, *lat, *lon, *altitude,
         toIdx, lat, lon, altitude);

   if ( error ) {
      QString msg = "Error in datum conversion of the current position:\n ";
      if ( error & DATUM_NOT_INITIALIZED_ERROR ) {
         msg.append("Datum module has not been initialized\n ");
      }
      if ( error & DATUM_7PARAM_FILE_OPEN_ERROR ) {
         msg.append("7 parameter file opening error\n ");
      }
      if ( error & DATUM_7PARAM_FILE_PARSING_ERROR ) {
         msg.append("7 parameter file structure error\n ");
      }
      if ( error & DATUM_7PARAM_OVERFLOW_ERROR ) {
         msg.append("7 parameter table overflow\n ");
      }
      if ( error & DATUM_3PARAM_FILE_OPEN_ERROR ) {
         msg.append("3 parameter file opening error\n ");
      }
      if ( error & DATUM_3PARAM_FILE_PARSING_ERROR ) {
         msg.append("3 parameter file structure error\n ");
      }
      if ( error & DATUM_3PARAM_OVERFLOW_ERROR ) {
         msg.append("3 parameter table overflow\n ");
      }
      if ( error & DATUM_INVALID_INDEX_ERROR ) {
         msg.append("Index out of valid range (less than one or more than Datum_Count)\n ");
      }
      if ( error & DATUM_INVALID_SRC_INDEX_ERROR ) {
         msg.append("Source datum index invalid\n ");
      }
      if ( error & DATUM_INVALID_DEST_INDEX_ERROR ) {
         msg.append("Destination datum index invalid\n ");
      }
      if ( error & DATUM_INVALID_CODE_ERROR ) {
         msg.append("Datum code not found in table\n ");
      }
      if ( error & DATUM_LAT_ERROR ) {
         msg.append("Latitude out of valid range (-90 to 90 in rad)\n ");
      }
      if ( error & DATUM_LON_ERROR ) {
         msg.append("Longitude out of valid range (-180 to 360 in rad)\n ");
      }
      if ( error & DATUM_SIGMA_ERROR ) {
         msg.append("Standard error values must be positive (or -1 if unknown)\n ");
      }
      if ( error & DATUM_DOMAIN_ERROR ) {
         msg.append("Domain of validity not well defined\n ");
      }
      if ( error & DATUM_ELLIPSE_ERROR ) {
         msg.append("Error in ellipsoid module (check existance and path of ellipse.dat)\n ");
      }
      if ( error & DATUM_NOT_USERDEF_ERROR ) {
         msg.append("Datum code is not user defined - cannot be deleted\n ");
      }
      qDebug(msg);
   }
}

bool Satellite::operator==(const Satellite & other) const
{
   return ((name == other.name)
         && (elevation == other.elevation)
         && (azimut == other.azimut)
         && (snr == other.snr) 
         && (used == other.used))
         ;
}

bool Satellite::operator!=(const Satellite & other) const
{
   return ((name != other.name)
         || (elevation != other.elevation)
         || (azimut != other.azimut)
         || (snr != other.snr)
         || (used != other.used));
}

Satellite & Satellite::operator=(const class Satellite & other)
{
   // memberwise copy (needed here because QObject operator = is private)
   name = other.name;
   elevation = other.elevation;
   azimut = other.azimut;
   snr = other.snr;
   used = other.used;
   updated = other.updated;

   return *this;
}

// end of file

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区不卡| 欧美电影免费观看高清完整版在线观看 | 婷婷国产v国产偷v亚洲高清| 日韩电影在线观看电影| 91麻豆国产香蕉久久精品| 亚洲图片你懂的| 欧美mv日韩mv亚洲| 一本久久综合亚洲鲁鲁五月天| 亚洲理论在线观看| 国产三级一区二区| 欧美四级电影在线观看| 成人av网站在线观看免费| 免费高清不卡av| 日本一区二区三区视频视频| 日韩亚洲欧美在线| 久久综合九色综合97_久久久| 精品国精品自拍自在线| 久久精品综合网| 亚洲欧洲一区二区在线播放| 亚洲欧美日韩电影| 亚洲成人综合网站| 蜜桃视频一区二区三区在线观看| 美女视频网站黄色亚洲| 国产精品一线二线三线精华| 国产99久久久国产精品免费看 | 国产一区二区三区免费观看| 国产精品一二三四| av成人免费在线| 欧美专区在线观看一区| 欧美高清视频在线高清观看mv色露露十八 | 91成人在线免费观看| 欧美日韩不卡视频| 欧美精品一区男女天堂| 国产欧美日韩久久| 亚洲视频综合在线| 日韩在线一区二区三区| 蜜臀av一区二区在线免费观看| 国产一区二区成人久久免费影院| 成人av在线观| 欧美日韩精品综合在线| 久久婷婷久久一区二区三区| 亚洲色图另类专区| 青青草伊人久久| 国产sm精品调教视频网站| 色综合久久88色综合天天| 欧美日韩成人在线一区| 国产欧美日韩另类一区| 亚洲 欧美综合在线网络| 欧美日韩国产免费| 久久亚洲欧美国产精品乐播| 亚洲免费观看高清完整版在线观看熊 | 亚洲人成影院在线观看| 久久精品国产**网站演员| 99久免费精品视频在线观看| 欧美美女视频在线观看| 欧美国产激情一区二区三区蜜月| 夜夜夜精品看看| 国产资源在线一区| 欧美视频自拍偷拍| 国产欧美日韩三级| 日本不卡一区二区三区高清视频| 不卡的av中国片| 日韩一级高清毛片| 洋洋成人永久网站入口| 国产盗摄视频一区二区三区| 欧美日韩成人在线| 综合久久给合久久狠狠狠97色 | 555www色欧美视频| 中文字幕欧美日本乱码一线二线| 午夜精品久久久久久不卡8050| 国产成人av电影| 精品伦理精品一区| 亚洲一区二区在线免费观看视频| 粉嫩av一区二区三区粉嫩| 8x福利精品第一导航| 日韩毛片精品高清免费| 国产电影一区在线| 日韩一区二区三区观看| 亚洲精品免费在线观看| 国产一二精品视频| 4438成人网| 亚洲影院理伦片| av亚洲精华国产精华| 国产日韩高清在线| 国产一区二区三区综合| 日韩欧美成人激情| 图片区小说区区亚洲影院| 色婷婷久久一区二区三区麻豆| 国产嫩草影院久久久久| 国产一区高清在线| 日韩精品一区二区在线观看| 成人av在线一区二区| 欧美精品一区二区三区在线播放| 日本91福利区| 欧美乱妇20p| 亚洲成人免费观看| 欧美色中文字幕| 一区二区三区视频在线看| 99久久99久久综合| 亚洲三级电影全部在线观看高清| 国产成人av一区二区三区在线| 精品999久久久| 精品无人区卡一卡二卡三乱码免费卡 | 成人高清视频在线观看| 中文文精品字幕一区二区| 久久99国产精品麻豆| 亚洲精品一区在线观看| 久久91精品国产91久久小草 | 日本v片在线高清不卡在线观看| 欧美亚洲国产一区二区三区va| 亚洲精品乱码久久久久久久久 | 91久久精品一区二区二区| 亚洲柠檬福利资源导航| 一本久道中文字幕精品亚洲嫩| 亚洲欧美另类小说| 91在线码无精品| 亚洲欧美日韩在线| 欧美在线你懂的| 日韩福利电影在线| 日韩色在线观看| 国产尤物一区二区在线| 久久久久久久一区| 粉嫩av一区二区三区| 成人欧美一区二区三区1314| 91精彩视频在线| 五月天丁香久久| 777亚洲妇女| 久久99国产精品麻豆| 国产日产欧美一区| 99re免费视频精品全部| 亚洲一二三区在线观看| 欧美一三区三区四区免费在线看 | 亚洲精品成人精品456| 欧美三级一区二区| 免费成人在线观看视频| 久久这里只有精品首页| 成人激情免费网站| 亚洲在线观看免费| 精品欧美久久久| 成人av网址在线观看| 亚洲国产另类精品专区| 日韩欧美在线观看一区二区三区| 国产综合色精品一区二区三区| 中文字幕一区av| 欧美肥妇毛茸茸| 国产伦精品一区二区三区免费迷| 椎名由奈av一区二区三区| 欧美精品v日韩精品v韩国精品v| 国产一区二区三区免费| 亚洲色图视频网站| 欧美刺激午夜性久久久久久久| 国产v日产∨综合v精品视频| 亚洲国产日韩综合久久精品| 精品国免费一区二区三区| 色香蕉久久蜜桃| 久久成人久久爱| 一区二区三区在线观看欧美| 欧美大片顶级少妇| 91麻豆免费观看| 国产在线国偷精品免费看| 国产精品久久久久久户外露出| 91精品在线免费观看| 不卡大黄网站免费看| 日本欧美一区二区三区| 自拍偷在线精品自拍偷无码专区 | 亚洲国产精品综合小说图片区| 精品国产百合女同互慰| 日本精品裸体写真集在线观看 | 91精品国产综合久久精品性色| 99久久免费精品高清特色大片| 日本亚洲最大的色成网站www| 中文字幕一区二| 久久综合成人精品亚洲另类欧美 | 欧美日韩一本到| 成人永久免费视频| 免费欧美高清视频| 一区二区欧美精品| 国产精品对白交换视频| 久久婷婷一区二区三区| 91精品国产综合久久久久| 在线视频欧美区| 99综合影院在线| 国产精品69久久久久水密桃| 青青草视频一区| 亚洲bdsm女犯bdsm网站| 亚洲激情在线播放| 国产精品久久夜| 国产亚洲一区二区三区四区| 日韩女优av电影| 在线电影一区二区三区| 色婷婷久久一区二区三区麻豆| 成人午夜私人影院| 国产盗摄精品一区二区三区在线 | 欧美成人一级视频| 91精品国产aⅴ一区二区| 欧美区在线观看| 欧美日韩一卡二卡| 欧美三级三级三级爽爽爽| 日本精品一区二区三区高清 | 欧美aaaaaa午夜精品|