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

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

?? ogrfeaturestyle.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    return -1;
}    

/************************************************************************/
/*                               Clone()                                */
/************************************************************************/

/**
 * Duplicate style table.
 *
 * The newly created style table is owned by the caller, and will have it's
 * own reference to the OGRStyleTable.
 *
 * This method is the same as the C function OGR_F_Clone().
 *
 * @return new feature, exactly matching this feature.
 */

OGRStyleTable *OGRStyleTable::Clone()

{
    OGRStyleTable *poNew = new OGRStyleTable();

    poNew->m_papszStyleTable = CSLDuplicate( m_papszStyleTable );

    return poNew;
}

/****************************************************************************/
/*                          OGRStyleTool::OGRStyleTool()                    */
/*                                                                          */
/****************************************************************************/
OGRStyleTool::OGRStyleTool(OGRSTClassId eClassId)
{
    m_eClassId = eClassId; 
    m_dfScale = 1.0; 
    m_eUnit = OGRSTUMM;
    m_pszStyleString = NULL;
    m_bModified = FALSE;
    m_bParsed = FALSE;
}

/****************************************************************************/
/*                       OGRStyleTool::~OGRStyleTool()                      */
/*                                                                          */
/****************************************************************************/
OGRStyleTool::~OGRStyleTool()
{
    CPLFree(m_pszStyleString);
}
 
/****************************************************************************/
/*      void OGRStyleTool::SetStyleString(const char *pszStyleString)       */
/*                                                                          */
/****************************************************************************/
void OGRStyleTool::SetStyleString(const char *pszStyleString)
{
    m_pszStyleString = CPLStrdup(pszStyleString);
}

/****************************************************************************/
/*const char *OGRStyleTool::GetStyleString( OGRStyleParamId *pasStyleParam ,*/
/*                          OGRStyleValue *pasStyleValue, int nSize)        */
/*                                                                          */
/****************************************************************************/
const char *OGRStyleTool::GetStyleString( OGRStyleParamId *pasStyleParam ,
                            OGRStyleValue *pasStyleValue, int nSize)
{
    if (IsStyleModified())
    {
        int i;
        GBool bFound;
        const char *pszClass;
        // FIXME: we should use CPLString instead of static buffer:
        char szCurrent[8192];
        szCurrent[0] = '\0';
    
        CPLFree(m_pszStyleString);
        
        switch (GetType())
        {
          case OGRSTCPen:
            pszClass = "PEN(";
            break;
          case OGRSTCBrush:
            pszClass = "BRUSH(";
            break;
          case OGRSTCSymbol:
            pszClass = "SYMBOL(";
            break;
          case OGRSTCLabel:
            pszClass = "LABEL(";
            break;
          case OGRSTCVector:
            pszClass = "VECTOR(";
            break;
          default:
            pszClass = "UNKNOWN(";
        }

        strcat(szCurrent,pszClass);

        bFound = FALSE;
        for (i=0;i< nSize;i++)
        {
            if (pasStyleValue[i].bValid == FALSE)
              continue;

            if (bFound)
              strcat(szCurrent,",");
            bFound = TRUE;
            
            strcat(szCurrent,pasStyleParam[i].pszToken);
            switch (pasStyleParam[i].eType)
            {
              case OGRSTypeString:
                strcat(szCurrent,":");
                strcat(szCurrent,pasStyleValue[i].pszValue);
                break;
              case OGRSTypeDouble:
                strcat(szCurrent,CPLSPrintf(":%f",pasStyleValue[i].dfValue));
                break;
              case OGRSTypeInteger:
                strcat(szCurrent,CPLSPrintf(":%d",pasStyleValue[i].nValue));
                break;
              default:
                break;
            }       
            if (pasStyleParam[i].bGeoref)
              switch (pasStyleValue[i].eUnit)
              {
                case OGRSTUGround:
                  strcat(szCurrent,"g");
                  break;
                case OGRSTUPixel:
                  strcat(szCurrent,"px");
                  break;
                case OGRSTUPoints:
                  strcat(szCurrent,"pt");
                  break;
                case OGRSTUCM:
                  strcat(szCurrent,"cm");
                  break;
                case OGRSTUInches:
                  strcat(szCurrent,"in");
                  break;
                case OGRSTUMM:
                  //strcat(szCurrent,"mm");
                default:
                  break;    //imp
              }
        }
        strcat(szCurrent,")");

        m_pszStyleString = CPLStrdup(szCurrent);

        m_bModified = FALSE;
    }
    
    return m_pszStyleString;
}   

/************************************************************************/
/*                          GetRGBFromString()                          */
/************************************************************************/

GBool OGRStyleTool::GetRGBFromString(const char *pszColor, int &nRed, 
                                     int &nGreen ,int & nBlue, 
                                     int &nTransparance)
{
   int nCount = 0;
   
   nTransparance = 255;

   // FIXME: should we really use sscanf here?
   if( pszColor )
       nCount  = sscanf(pszColor,"#%2x%2x%2x%2x",&nRed,&nGreen,&nBlue, 
                        &nTransparance);
   
   if (nCount >=3)
     return TRUE;
   else
     return FALSE;
}

/************************************************************************/
/*                           GetSpecificId()                            */
/*                                                                      */
/*      return -1, if the wanted type is not found, ex:                 */
/*      if you want ogr-pen value, pszWanted should be ogr-pen(case     */
/*      sensitive)                                                      */
/************************************************************************/

int OGRStyleTool::GetSpecificId(const char *pszId, const char *pszWanted)
{
    const char *pszRealWanted = pszWanted;
    const char *pszFound;
    int nValue  = -1;

    if (pszWanted == NULL || strlen(pszWanted) == 0)
      pszRealWanted = "ogr-pen";

    if (pszId == NULL)
      return -1;
    
    if ((pszFound = strstr(pszId, pszRealWanted)) != NULL)
    {
        // We found the string, it could be no value after it, use default one
        nValue = 0;
        
        if (pszFound[strlen(pszRealWanted)] == '-' )
          nValue =atoi(&pszFound[strlen(pszRealWanted)+1]);
    }
    
    return nValue;

}

/************************************************************************/
/*                              GetType()                               */
/************************************************************************/
OGRSTClassId OGRStyleTool::GetType()
{
    return m_eClassId;
}
    
/************************************************************************/
/*                              SetUnit()                               */
/************************************************************************/
void OGRStyleTool::SetUnit(OGRSTUnitId eUnit,double dfScale)
{
    m_dfScale = dfScale;
    m_eUnit = eUnit;
}

/************************************************************************/
/*                               Parse()                                */
/************************************************************************/
GBool OGRStyleTool::Parse(OGRStyleParamId *pasStyle,
                          OGRStyleValue *pasValue,
                          int nCount)
{
    char **papszToken; // Token to contains StyleString Type and content
    char **papszToken2; // Token that will contains StyleString elements


    OGRSTUnitId  eLastUnit;
    
    if (IsStyleParsed() == TRUE)
      return TRUE;

    StyleParsed();

    if (m_pszStyleString == NULL)
      return FALSE;
    
    // Tokenize the String to get the Type and the content
    // Example: Type(elem1:val2,elem2:val2)
    papszToken  = CSLTokenizeString2(m_pszStyleString,"()",
                                     CSLT_HONOURSTRINGS
                                     | CSLT_PRESERVEQUOTES
                                     | CSLT_PRESERVEESCAPES );

    if (CSLCount(papszToken) > 2 || CSLCount(papszToken) == 0)
    {
        CSLDestroy( papszToken );
        CPLError(CE_Failure, CPLE_AppDefined, 
                 "Error in the format of the StyleTool %s\n",m_pszStyleString);
        return FALSE;
    }
    
    // Tokenize the content of the StyleString to get paired components in it.
    papszToken2 = CSLTokenizeString2( papszToken[1], ",",
                                      CSLT_HONOURSTRINGS
                                      | CSLT_PRESERVEQUOTES
                                      | CSLT_PRESERVEESCAPES );
    
    // Valid that we have the right StyleString for this feature type.
    switch (GetType())
    {
      case OGRSTCPen:
        if (!EQUAL(papszToken[0],"PEN"))
        {
            CPLError(CE_Failure, CPLE_AppDefined, 
                     "Error in the Type of StyleTool %s should be a PEN Type\n",
                     papszToken[0]);
            CSLDestroy( papszToken );
            CSLDestroy( papszToken2 );
            return FALSE;
        }
        break;
      case OGRSTCBrush:
        if (!EQUAL(papszToken[0],"BRUSH"))
        {
            CPLError(CE_Failure, CPLE_AppDefined, 
                     "Error in the Type of StyleTool %s should be a BRUSH Type\n",
                     papszToken[0]);
            CSLDestroy( papszToken );
            CSLDestroy( papszToken2 );
            return FALSE;
        }
        break;
      case OGRSTCSymbol:
        if (!EQUAL(papszToken[0],"SYMBOL"))
        {
            CPLError(CE_Failure, CPLE_AppDefined, 
                     "Error in the Type of StyleTool %s should be a SYMBOL Type\n",
                     papszToken[0]);
            CSLDestroy( papszToken );
            CSLDestroy( papszToken2 );
            return FALSE;
        }
        break;
      case OGRSTCLabel:
        if (!EQUAL(papszToken[0],"LABEL"))
        {
            CPLError(CE_Failure, CPLE_AppDefined, 
                     "Error in the Type of StyleTool %s should be a LABEL Type\n",
                     papszToken[0]);
            CSLDestroy( papszToken );
            CSLDestroy( papszToken2 );
            return FALSE;
        }
        break;
      case OGRSTCVector:
        if (!EQUAL(papszToken[0],"VECTOR"))
        {
            CPLError(CE_Failure, CPLE_AppDefined, 
                     "Error in the Type of StyleTool %s should be a VECTOR Type\n",
                     papszToken[0]);
            CSLDestroy( papszToken );
            CSLDestroy( papszToken2 );
            return FALSE;
        }
        break;
      default:
        CPLError(CE_Failure, CPLE_AppDefined, 
                 "Error in the Type of StyleTool, Type undetermined\n");
        CSLDestroy( papszToken );
        CSLDestroy( papszToken2 );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a人v欧美综合天堂下载 | 国产suv精品一区二区883| 中文字幕在线播放不卡一区| 欧美日韩视频专区在线播放| av一区二区三区四区| 久久国产精品99久久久久久老狼| 一区二区三区成人在线视频| 最新久久zyz资源站| 中文字幕欧美激情一区| 久久久激情视频| 久久久久久久久99精品| 亚洲成年人网站在线观看| 成人免费观看视频| 一本大道久久a久久综合婷婷| 99久久精品国产观看| 99re热视频这里只精品| 久久久综合激的五月天| 麻豆成人av在线| 久久国产精品免费| 777a∨成人精品桃花网| 精品久久人人做人人爰| 久久久久久夜精品精品免费| 日产国产高清一区二区三区| 精品一区二区三区免费毛片爱| 捆绑变态av一区二区三区| 欧美日韩一区二区不卡| 一区二区三区精品久久久| 一本久久a久久精品亚洲| 亚洲欧洲日产国产综合网| 国产+成+人+亚洲欧洲自线| 久久精品夜夜夜夜久久| 一区二区三区中文字幕| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲女同ⅹxx女同tv| 日韩欧美一级片| 国产亚洲精品资源在线26u| 美女国产一区二区三区| 日韩欧美一二三区| 久草在线在线精品观看| 久久久久久久免费视频了| 狠狠色丁香九九婷婷综合五月| 春色校园综合激情亚洲| 国产亚洲欧美一区在线观看| 国产成人亚洲综合a∨婷婷 | 午夜久久电影网| 国产成a人亚洲精品| 国产欧美日韩在线视频| 婷婷丁香激情综合| 91精品欧美福利在线观看| 蜜桃免费网站一区二区三区| xnxx国产精品| 日本不卡1234视频| 91精品福利视频| 久久免费视频一区| 不卡的电影网站| 久久综合色综合88| 成人高清伦理免费影院在线观看| 亚洲欧美日韩国产中文在线| 3atv在线一区二区三区| 国产精品1024| 亚洲午夜免费福利视频| www.66久久| 天天综合天天综合色| 久久综合久久综合亚洲| 99视频一区二区| 免费观看久久久4p| 亚洲色欲色欲www| 欧美一级艳片视频免费观看| 一区二区三区影院| 日韩精品最新网址| 91精品福利在线| 国产精品一级黄| 久久久久久久久久久久久夜| 色婷婷久久久综合中文字幕 | 亚洲国产一区二区在线播放| 久久亚洲二区三区| 欧美揉bbbbb揉bbbbb| 国产成人免费av在线| 丝袜国产日韩另类美女| 日本韩国一区二区| 国模无码大尺度一区二区三区| 亚洲欧美色综合| 亚洲国产精品久久久久婷婷884 | 欧美伦理影视网| 亚洲成人av在线电影| 26uuu欧美| 欧美日韩精品免费| 免费在线看一区| 亚洲欧美另类久久久精品| 欧美xxxx老人做受| 欧美剧情片在线观看| 色综合久久九月婷婷色综合| 国产不卡免费视频| 另类专区欧美蜜桃臀第一页| 亚洲欧洲中文日韩久久av乱码| 国产午夜精品在线观看| 日韩视频免费直播| 国产中文字幕一区| 日韩va亚洲va欧美va久久| 一区二区三区加勒比av| 最新久久zyz资源站| 中文字幕欧美日本乱码一线二线| 精品久久久久一区| 日韩精品一区二区三区在线播放| 欧美人牲a欧美精品| 欧美另类z0zxhd电影| 色综合久久中文综合久久牛| 不卡一区二区中文字幕| 成人精品视频一区| 成人av在线资源| av电影天堂一区二区在线观看| 国产麻豆成人传媒免费观看| 久久久亚洲精华液精华液精华液 | 国产一区二区三区不卡在线观看| 日韩国产精品久久| 午夜在线电影亚洲一区| 亚洲成人精品一区二区| 亚洲一级二级在线| 欧美久久久久久蜜桃| 538在线一区二区精品国产| 911国产精品| 日韩一区二区在线观看| 欧美一卡在线观看| 欧美大片拔萝卜| 久久久久国产精品麻豆ai换脸 | 午夜不卡av在线| 日精品一区二区三区| 蜜桃av一区二区三区| 精品亚洲国产成人av制服丝袜 | 欧美日韩亚洲综合在线| 欧美猛男gaygay网站| 日韩一二三四区| 亚洲精品在线观看视频| 欧美色视频在线观看| 欧美日韩一本到| 日韩午夜三级在线| 国产亚洲婷婷免费| 亚洲自拍另类综合| 狠狠色狠狠色综合| 91在线免费视频观看| 欧美精品久久久久久久多人混战 | 精品国产亚洲一区二区三区在线观看| 日韩免费高清电影| 国产人久久人人人人爽| 亚洲欧洲日韩av| 天天操天天色综合| 国产高清视频一区| 在线观看欧美日本| 97久久超碰国产精品| 欧美另类高清zo欧美| 久久免费美女视频| 亚洲国产sm捆绑调教视频 | 免费在线看成人av| av动漫一区二区| 在线电影国产精品| 中文字幕av资源一区| 天天av天天翘天天综合网| 国产毛片精品国产一区二区三区| 91免费国产在线| eeuss鲁片一区二区三区在线观看| 欧美体内she精视频| 欧美色图12p| 中文字幕欧美区| 蜜桃精品在线观看| 色狠狠一区二区| 国产亚洲美州欧州综合国| 婷婷中文字幕综合| 91蜜桃婷婷狠狠久久综合9色| 日韩一区二区精品葵司在线 | 蜜桃av一区二区| 欧洲生活片亚洲生活在线观看| 久久这里只有精品视频网| 日韩精品免费视频人成| 99r国产精品| 中文文精品字幕一区二区| 久久青草国产手机看片福利盒子 | 国产一区日韩二区欧美三区| 欧美三级电影在线观看| 国产精品国产a级| 一区二区三区中文在线| 成人美女在线视频| 精品国产亚洲一区二区三区在线观看 | 国产精品自拍一区| 色呦呦日韩精品| 中文字幕亚洲精品在线观看 | 亚洲老妇xxxxxx| 亚洲一区二三区| a美女胸又www黄视频久久| 精品国产免费久久| 久久精品国产久精国产| 欧美日韩国产中文| 亚洲综合男人的天堂| 91亚洲精华国产精华精华液| 国产精品区一区二区三| 国产91高潮流白浆在线麻豆| 久久久久久久久久久电影| 国产精品伊人色| 国产日韩欧美麻豆| 成人理论电影网| 亚洲人成小说网站色在线|