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

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

?? ogrfeaturestyle.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
        return FALSE;
        break;
    }
    
    ////////////////////////////////////////////////////////////////////////
    // Here we will loop on each element in the StyleString. If it's 
    // a valid element, we will add it in the StyleTool with 
    // SetParamStr().
    //
    // It's important to note that the SetInternalUnit...() is use to update 
    // the unit of the StyleTool param (m_eUnit). 
    // See OGRStyleTool::SetParamStr().
    // There's a StyleTool unit (m_eUnit), which is the output unit, and each 
    // parameter of the style have its own unit value (the input unit). Here we
    // set m_eUnit to the input unit and in SetParamStr(), we will use this
    // value to set the input unit. Then after the loop we will reset m_eUnit 
    // to it's original value. (Yes it's a side effect / black magic)
    //
    // The pasStyle variable is a global variable passed in argument to the
    // function. See at the top of this file the four OGRStyleParamId 
    // variable. They are used to register the valid parameter of each 
    // StyleTool.
    ////////////////////////////////////////////////////////////////////////

    // Save Scale and output Units because the parsing code will alter 
    // the values
    eLastUnit = m_eUnit;
    double  dSavedScale = m_dfScale;
    int     i, nElements = CSLCount(papszToken2);

    for ( i = 0; i < nElements; i++ )
    {
        char    **papszStylePair =
            CSLTokenizeString2( papszToken2[i], ":", CSLT_HONOURSTRINGS );
        int     j, nTokens = CSLCount(papszStylePair);

        if ( nTokens < 1 || nTokens > 2 )
        {
            CPLError( CE_Warning, CPLE_AppDefined,
                      "Error in the StyleTool String %s", m_pszStyleString );
            CPLError( CE_Warning, CPLE_AppDefined,
                      "Malformed element #%d (\"%s\") skipped",
                      i, papszToken2[i] );
            CSLDestroy(papszStylePair);
            continue;
        }
        
        for ( j = 0; j < nCount; j++ )
        {
            if ( EQUAL(pasStyle[j].pszToken, papszStylePair[0]) )
            {
                if (nTokens == 2 && pasStyle[j].bGeoref == TRUE)
                    SetInternalInputUnitFromParam(papszStylePair[1]);

                // Set either the actual value of style parameter or "1"
                // for boolean parameters which do not have values.
                // "1" means that boolean parameter is present in the style
                // string.
                OGRStyleTool::SetParamStr( pasStyle[j], pasValue[j],
                                    (nTokens == 2) ? papszStylePair[1] : "1" );

                break;
            }
        }

        CSLDestroy( papszStylePair );
    }

    m_eUnit = eLastUnit;
    m_dfScale = dSavedScale;

    CSLDestroy(papszToken2);
    CSLDestroy(papszToken);

    return TRUE;
}

/************************************************************************/
/*                   SetInternalInputUnitFromParam()                    */
/************************************************************************/

void OGRStyleTool::SetInternalInputUnitFromParam(char *pszString)
{

    char *pszUnit;

    if (pszString == NULL)
      return;
    pszUnit = strstr(pszString,"g");
    if (pszUnit)
    {
        SetUnit(OGRSTUGround);
        pszUnit[0]= '\0';
        return;
    }
    pszUnit = strstr(pszString,"px");
    if (pszUnit)
    {
        SetUnit(OGRSTUPixel);
        pszUnit[0]= '\0';
        return;
    }
    pszUnit = strstr(pszString,"pt");
    if (pszUnit)
    {
        SetUnit(OGRSTUPoints);
        pszUnit[0]= '\0';
        return;
    }
    pszUnit = strstr(pszString,"mm");
    if (pszUnit)
    {
        SetUnit(OGRSTUMM);
        pszUnit[0]= '\0';
        return;
    }
    pszUnit = strstr(pszString,"cm");
    if (pszUnit)
    {
        SetUnit(OGRSTUCM);
        pszUnit[0]= '\0';
        return;
    }
    pszUnit = strstr(pszString,"in");
    if (pszUnit)
    {
        SetUnit(OGRSTUInches);
        pszUnit[0]= '\0';
        return;
    }
    
    SetUnit(OGRSTUMM);
}

/************************************************************************/
/*                          ComputeWithUnit()                           */
/************************************************************************/
double OGRStyleTool::ComputeWithUnit(double dfValue, OGRSTUnitId eInputUnit)
{
    OGRSTUnitId eOutputUnit = GetUnit();

    double dfNewValue = dfValue;        // dfValue in  Meter;


    if (eOutputUnit == eInputUnit)
      return dfValue;

    switch (eInputUnit)
    {
      case OGRSTUGround:
        dfNewValue = dfValue / m_dfScale;
        break;
      case OGRSTUPixel:
        dfNewValue = dfValue / (72.0 * 39.37);
        break;
      case OGRSTUPoints:
        dfNewValue =dfValue / (72.0 * 39.37);
        break;
      case OGRSTUMM:
        dfNewValue = 0.001 * dfValue;
        break;
      case OGRSTUCM:
        dfNewValue = 0.01 * dfValue;
        break;
      case OGRSTUInches:
        dfNewValue = dfValue / 39.37;
        break;
      default:
        break;    //imp
    }

    switch (eOutputUnit)
    {
      case OGRSTUGround:
        dfNewValue *= m_dfScale;
        break;
      case OGRSTUPixel:
        dfNewValue *= (72.0 * 39.37);
        break;
      case OGRSTUPoints:
        dfNewValue *= (72.0 * 39.37);
        break;
      case OGRSTUMM:
        dfNewValue *= 1000.0;
        break;
      case OGRSTUCM:
        dfNewValue *= 100.0;
        break;
      case OGRSTUInches:
        dfNewValue *= 39.37;
        break;
      default:
        break;  // imp
    }
    return dfNewValue;
}

/************************************************************************/
/*                          ComputeWithUnit()                           */
/************************************************************************/
int   OGRStyleTool::ComputeWithUnit(int nValue, OGRSTUnitId eUnit)
{
    return (int) ComputeWithUnit((double )nValue, eUnit);
}

/************************************************************************/
/*                            GetParamStr()                             */
/************************************************************************/
const char *OGRStyleTool::GetParamStr(OGRStyleParamId &sStyleParam ,
                                      OGRStyleValue &sStyleValue,
                                      GBool &bValueIsNull)
{

    if (!Parse())
    {
        bValueIsNull = TRUE;
        return NULL;
    }

    bValueIsNull = !sStyleValue.bValid;
    
    if (bValueIsNull == TRUE)
      return NULL;

    switch (sStyleParam.eType)
    {
      
        // if sStyleParam.bGeoref == TRUE , need to convert to output value;
      case OGRSTypeString:
        return sStyleValue.pszValue;
      case OGRSTypeDouble:
        if (sStyleParam.bGeoref)
          return CPLSPrintf("%f",ComputeWithUnit(sStyleValue.dfValue,
                                                 sStyleValue.eUnit));
        else
          return CPLSPrintf("%f",sStyleValue.dfValue);
                            
      case OGRSTypeInteger:
        if (sStyleParam.bGeoref)
          return CPLSPrintf("%d",ComputeWithUnit(sStyleValue.nValue,
                                                 sStyleValue.eUnit));
        else
          return CPLSPrintf("%d",sStyleValue.nValue);
      case OGRSTypeBoolean:
        return CPLSPrintf("%d",sStyleValue.nValue);
      default:
        bValueIsNull = TRUE;
        return NULL;
    }
}

/****************************************************************************/
/*    int OGRStyleTool::GetParamNum(OGRStyleParamId sStyleParam ,           */
/*                               OGRStyleValue sStyleValue,                 */
/*                               GBool &bValueIsNull)                       */
/*                                                                          */
/****************************************************************************/
int OGRStyleTool::GetParamNum(OGRStyleParamId &sStyleParam ,
                                 OGRStyleValue &sStyleValue,
                                 GBool &bValueIsNull)
{
    return (int)GetParamDbl(sStyleParam,sStyleValue,bValueIsNull);
}

/****************************************************************************/
/*       double OGRStyleTool::GetParamDbl(OGRStyleParamId sStyleParam ,     */
/*                               OGRStyleValue sStyleValue,                 */
/*                               GBool &bValueIsNull)                       */
/*                                                                          */
/****************************************************************************/
double OGRStyleTool::GetParamDbl(OGRStyleParamId &sStyleParam ,
                                 OGRStyleValue &sStyleValue,
                                 GBool &bValueIsNull)
{
    if (!Parse())
    {
        bValueIsNull = TRUE;
        return 0;
    }

    bValueIsNull = !sStyleValue.bValid;
    
    if (bValueIsNull == TRUE)
      return 0;

    switch (sStyleParam.eType)
    {
      
        // if sStyleParam.bGeoref == TRUE , need to convert to output value;
      case OGRSTypeString:
        if (sStyleParam.bGeoref)
          return ComputeWithUnit(atof(sStyleValue.pszValue),
                                 sStyleValue.eUnit);
        else
          return atof(sStyleValue.pszValue);
      case OGRSTypeDouble:
        if (sStyleParam.bGeoref)
          return ComputeWithUnit(sStyleValue.dfValue,
                                      sStyleValue.eUnit);
        else
          return sStyleValue.dfValue;
      case OGRSTypeInteger:
        if (sStyleParam.bGeoref)
          return (double)ComputeWithUnit(sStyleValue.nValue,
                                         sStyleValue.eUnit);
        else    
          return (double)sStyleValue.nValue;
      case OGRSTypeBoolean:
        return (double)sStyleValue.nValue;
      default:
        bValueIsNull = TRUE;
        return 0;
    }
}

/****************************************************************************/
/*      void OGRStyleTool::SetParamStr(OGRStyleParamId &sStyleParam ,       */
/*                             OGRStyleValue &sStyleValue,                  */
/*                             const char *pszParamString)                  */
/*                                                                          */
/****************************************************************************/
void OGRStyleTool::SetParamStr(OGRStyleParamId &sStyleParam ,
                               OGRStyleValue &sStyleValue,
                               const char *pszParamString)
{
    Parse();
    StyleModified();
    sStyleValue.bValid = TRUE;
    sStyleValue.eUnit = GetUnit();
    switch (sStyleParam.eType)
    {
      
        // if sStyleParam.bGeoref == TRUE , need to convert to output value;
      case OGRSTypeString:
        sStyleValue.pszValue = CPLStrdup(pszParamString);
        break;
      case OGRSTypeDouble:
        sStyleValue.dfValue = atof(pszParamString);
        break;
      case OGRSTypeInteger:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久不卡网国产精品二区| 色94色欧美sute亚洲线路一久| 91精品国产一区二区三区蜜臀 | 久久精品国产久精国产| 欧美日韩大陆在线| 精品综合免费视频观看| 国产精品区一区二区三| 欧美日韩三级视频| 国产·精品毛片| 免费在线观看一区| 亚洲精品高清视频在线观看| 欧美精品一区二区久久婷婷| 在线一区二区观看| 国产一区高清在线| 久久电影网电视剧免费观看| 日本中文字幕一区| 一区二区三区不卡在线观看| 欧美精品一区二区三区在线播放 | 欧美一区二区国产| 色婷婷久久99综合精品jk白丝| 麻豆精品视频在线观看视频| 午夜成人免费视频| 丝瓜av网站精品一区二区| 亚洲国产精品高清| 欧美经典一区二区| 欧美国产一区视频在线观看| 久久精品一区二区三区不卡牛牛| 欧美变态tickling挠脚心| 欧美日韩精品高清| 欧美精品自拍偷拍| www一区二区| 国产色91在线| 最新日韩av在线| 亚洲精品免费在线观看| 日韩一区中文字幕| 亚洲午夜精品一区二区三区他趣| 一区二区免费看| 久久精品国产亚洲高清剧情介绍| 免费成人在线视频观看| 国产成人一区二区精品非洲| 成人免费精品视频| 欧美日韩一区二区三区在线| 欧美日韩视频不卡| 国产亚洲美州欧州综合国| 亚洲猫色日本管| 精品一区二区影视| 成人app网站| 在线综合亚洲欧美在线视频| 欧美韩国一区二区| www.成人网.com| 91精品国产乱| 亚洲女同女同女同女同女同69| 日本中文在线一区| 91福利视频在线| 久久久久国产精品麻豆ai换脸| 国产精品欧美久久久久无广告 | 欧美三级日韩在线| 亚洲欧洲国产日韩| 国产69精品久久777的优势| 91麻豆精品国产91久久久更新时间| 日韩午夜小视频| 亚洲成人精品一区| 在线亚洲免费视频| 亚洲色图清纯唯美| 成人综合在线观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲黄网站在线观看| 成人免费高清在线| 欧美tickling挠脚心丨vk| 图片区日韩欧美亚洲| 欧美亚一区二区| 亚洲在线免费播放| 欧美三区在线观看| 日韩精品高清不卡| 欧美va亚洲va香蕉在线| 免费在线看一区| 国产欧美日韩另类一区| 国产白丝精品91爽爽久久| 国产日本亚洲高清| 色国产精品一区在线观看| 一色屋精品亚洲香蕉网站| 色欧美乱欧美15图片| 亚洲第一二三四区| 国产欧美日韩另类视频免费观看| 色婷婷激情久久| 午夜精品视频一区| 国产亚洲一区二区三区| 在线观看日韩av先锋影音电影院| 三级成人在线视频| 国产精品人妖ts系列视频| 9191成人精品久久| 成人国产精品免费观看| 亚洲一区在线视频| 久久久久久麻豆| 91麻豆国产精品久久| 国产精品一卡二| 免费高清在线一区| 婷婷亚洲久悠悠色悠在线播放 | 久久久国产精品午夜一区ai换脸| 欧美色电影在线| 色偷偷一区二区三区| 国产福利不卡视频| 国产真实精品久久二三区| 午夜视频在线观看一区| 久久精品亚洲一区二区三区浴池 | 亚洲欧美日韩一区| 国产精品丝袜在线| 久久综合精品国产一区二区三区| 欧美日韩亚洲国产综合| 国产精品资源网站| 国产一区二区三区香蕉| 国产一区999| 激情综合色播激情啊| 久久成人免费电影| 国产·精品毛片| 色综合久久中文字幕| 日本久久精品电影| 精品久久久久av影院 | 欧美一区二区三区免费观看视频| 欧美久久久久久久久久| 亚洲视频图片小说| 亚洲一二三四区不卡| 日韩黄色片在线观看| 国产福利一区二区三区在线视频| 国产成人免费xxxxxxxx| 欧美午夜片在线观看| 国产午夜三级一区二区三| 亚洲国产高清aⅴ视频| 一区二区三区四区在线免费观看 | 琪琪一区二区三区| 成人av免费在线| 欧美一级xxx| 一区二区三区.www| 成人黄色片在线观看| 日韩视频在线你懂得| 国产欧美视频一区二区| 天堂av在线一区| 91视视频在线直接观看在线看网页在线看| 91亚洲永久精品| 日韩天堂在线观看| 亚洲妇女屁股眼交7| 国产黑丝在线一区二区三区| 欧美日产在线观看| 亚洲成在线观看| 欧美熟乱第一页| 亚洲一区二区三区美女| 91丨porny丨户外露出| 国产精品久久久久影院老司| 国产在线乱码一区二区三区| 欧美成人女星排行榜| 日本成人在线不卡视频| 91精品国产色综合久久ai换脸| 国产精品久久毛片| 91丨porny丨最新| 中文字幕一区二区三区四区| 高清在线不卡av| 亚洲精品免费电影| 欧美视频一区在线观看| 免费看日韩a级影片| 日韩欧美黄色影院| 激情五月婷婷综合网| 久久久精品免费免费| 国产精品99久久久久久有的能看| 久久精品人人做人人爽人人| 99精品黄色片免费大全| 国产乱码字幕精品高清av| 26uuu久久天堂性欧美| 粉嫩13p一区二区三区| 亚洲综合另类小说| 欧美tickling挠脚心丨vk| 成人黄色综合网站| 日本免费新一区视频| 久久精品欧美日韩精品| 欧美老人xxxx18| 99久久777色| 国产美女视频91| 日韩极品在线观看| 亚洲免费电影在线| 久久麻豆一区二区| 91精品麻豆日日躁夜夜躁| 成人免费电影视频| 蜜臀av一区二区三区| 亚洲你懂的在线视频| 欧美一卡2卡3卡4卡| 一本一道久久a久久精品| 国产乱码精品一区二区三区av| 成人免费视频在线观看| 国产日韩欧美在线一区| 日韩免费性生活视频播放| 色综合久久久久| 欧美日韩日本视频| 欧美日韩国产一区| 欧美日高清视频| 欧美成人精精品一区二区频| 91精品欧美一区二区三区综合在 | 色天天综合色天天久久| 豆国产96在线|亚洲| 成人少妇影院yyyy| 97国产一区二区| 色哟哟在线观看一区二区三区|