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

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

?? ogrlinearring.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
 * $Id: ogrlinearring.cpp 12517 2007-10-23 15:07:35Z mloskot $
 *
 * Project:  OpenGIS Simple Features Reference Implementation
 * Purpose:  The OGRLinearRing geometry class.
 * Author:   Frank Warmerdam, warmerdam@pobox.com
 *
 ******************************************************************************
 * Copyright (c) 1999, Frank Warmerdam
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 ****************************************************************************/

#include "ogr_geometry.h"
#include "ogr_p.h"

CPL_CVSID("$Id: ogrlinearring.cpp 12517 2007-10-23 15:07:35Z mloskot $");

/************************************************************************/
/*                           OGRLinearRing()                            */
/************************************************************************/

OGRLinearRing::OGRLinearRing()

{
}

/************************************************************************/
/*                          ~OGRLinearRing()                            */
/************************************************************************/
OGRLinearRing::~OGRLinearRing()

{
}

/************************************************************************/
/*                           OGRLinearRing()                            */
/************************************************************************/

OGRLinearRing::OGRLinearRing( OGRLinearRing * poSrcRing )

{
    if( poSrcRing == NULL )
    {
        CPLDebug( "OGR", "OGRLinearRing::OGRLinearRing(OGRLinearRing*poSrcRing) - passed in ring is NULL!" );
        return;
    }

    setNumPoints( poSrcRing->getNumPoints() );

    memcpy( paoPoints, poSrcRing->paoPoints,
            sizeof(OGRRawPoint) * getNumPoints() );

    if( poSrcRing->padfZ )
    {
        Make3D();
        memcpy( padfZ, poSrcRing->padfZ, sizeof(double) * getNumPoints() );
    }
}

/************************************************************************/
/*                          getGeometryName()                           */
/************************************************************************/

const char * OGRLinearRing::getGeometryName() const 

{
    return "LINEARRING";
}

/************************************************************************/
/*                              WkbSize()                               */
/*                                                                      */
/*      Disable this method.                                            */
/************************************************************************/

int OGRLinearRing::WkbSize() const

{
    return 0;
}

/************************************************************************/
/*                           importFromWkb()                            */
/*                                                                      */
/*      Disable method for this class.                                  */
/************************************************************************/

OGRErr OGRLinearRing::importFromWkb( unsigned char *pabyData, int nSize ) 

{
    (void) pabyData;
    (void) nSize;

    return OGRERR_UNSUPPORTED_OPERATION;
}

/************************************************************************/
/*                            exportToWkb()                             */
/*                                                                      */
/*      Disable method for this class.                                  */
/************************************************************************/

OGRErr OGRLinearRing::exportToWkb( OGRwkbByteOrder eByteOrder, 
                                   unsigned char * pabyData ) const

{
    (void) eByteOrder;
    (void) pabyData;

    return OGRERR_UNSUPPORTED_OPERATION;
}

/************************************************************************/
/*                           _importFromWkb()                           */
/*                                                                      */
/*      Helper method for OGRPolygon.  NOT A NORMAL importFromWkb()     */
/*      method!                                                         */
/************************************************************************/

OGRErr OGRLinearRing::_importFromWkb( OGRwkbByteOrder eByteOrder, int b3D, 
                                      unsigned char * pabyData,
                                      int nBytesAvailable ) 

{
    if( nBytesAvailable < 4 && nBytesAvailable != -1 )
        return OGRERR_NOT_ENOUGH_DATA;

/* -------------------------------------------------------------------- */
/*      Get the vertex count.                                           */
/* -------------------------------------------------------------------- */
    int         nNewNumPoints;
    
    memcpy( &nNewNumPoints, pabyData, 4 );
    
    if( OGR_SWAP( eByteOrder ) )
        nNewNumPoints = CPL_SWAP32(nNewNumPoints);

    /* Check if the wkb stream buffer is big enough to store
     * fetched number of points.
     * 16 or 24 - size of point structure
     */
    int nPointSize = (b3D ? 24 : 16);
    int nBufferMinSize = nPointSize * nNewNumPoints;
   
    if( nBufferMinSize > nBytesAvailable && nBytesAvailable > 0 )
    {
        CPLError( CE_Failure, CPLE_AppDefined,
                  "Length of input WKB is too small" );
        return OGRERR_NOT_ENOUGH_DATA;
    }

    /* (Re)Allocation of paoPoints buffer. */
    setNumPoints( nNewNumPoints );

    if( b3D )
        Make3D();
    else
        Make2D();
    
/* -------------------------------------------------------------------- */
/*      Get the vertices                                                */
/* -------------------------------------------------------------------- */
    int i = 0;
    int nBytesToCopy = 0;

    if( !b3D )
    {
        nBytesToCopy = 16 * nPointCount;
        
        if( nBytesToCopy > nBytesAvailable && nBytesAvailable > 0 )
        {
            CPLError( CE_Failure, CPLE_AppDefined,
                      "WKB buffer with OGRLinearRing points is too small! \
                      \n\tWKB stream may be corrupted or it is EWKB stream which is not supported");
            return OGRERR_NOT_ENOUGH_DATA;
        }

        memcpy( paoPoints, pabyData + 4, nBytesToCopy );
    }
    else
    {
        for( int i = 0; i < nPointCount; i++ )
        {
            nBytesToCopy = 24;

            if( nBytesToCopy > nBytesAvailable && nBytesAvailable > 0 )
            {
                CPLError( CE_Failure, CPLE_AppDefined,
                          "WKB buffer with OGRLinearRing points is too small! \
                          \n\tWKB stream may be corrupted or it is EWKB stream which is not supported");
                return OGRERR_NOT_ENOUGH_DATA;
            }
            if ( nBytesAvailable > 0 )
                nBytesAvailable -= nBytesToCopy;

            memcpy( &(paoPoints[i].x), pabyData + 4 + 24 * i, 8 );
            memcpy( &(paoPoints[i].y), pabyData + 4 + 24 * i + 8, 8 );
            memcpy( padfZ + i, pabyData + 4 + 24 * i + 16, 8 );
        }
    }
    
/* -------------------------------------------------------------------- */
/*      Byte swap if needed.                                            */
/* -------------------------------------------------------------------- */
    if( OGR_SWAP( eByteOrder ) )
    {
        for( i = 0; i < nPointCount; i++ )
        {
            CPL_SWAPDOUBLE( &(paoPoints[i].x) );
            CPL_SWAPDOUBLE( &(paoPoints[i].y) );

            if( b3D )
            {
                CPL_SWAPDOUBLE( padfZ + i );
            }
        }
    }

    return OGRERR_NONE;
}

/************************************************************************/
/*                            _exportToWkb()                            */
/*                                                                      */
/*      Helper method for OGRPolygon.  THIS IS NOT THE NORMAL           */
/*      exportToWkb() METHOD!                                           */
/************************************************************************/

OGRErr  OGRLinearRing::_exportToWkb( OGRwkbByteOrder eByteOrder, int b3D,
                                     unsigned char * pabyData ) const

{
    int   i, nWords;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区美女| 亚洲激情自拍偷拍| 日韩亚洲欧美在线| 欧美一区二区三区视频| 欧美日韩视频在线一区二区| 欧美羞羞免费网站| 91精品久久久久久久91蜜桃| 在线电影院国产精品| 欧美精品tushy高清| 日韩欧美亚洲一区二区| 精品对白一区国产伦| 精品对白一区国产伦| 欧美国产精品一区二区| 亚洲欧洲av在线| 亚洲综合免费观看高清在线观看| 亚洲成av人片www| 欧美aaaaa成人免费观看视频| 免费成人av在线| 国产在线国偷精品产拍免费yy| 粉嫩av亚洲一区二区图片| 色哟哟一区二区在线观看| 欧美伊人久久久久久久久影院| 欧美精品日韩一区| 国产人成一区二区三区影院| 专区另类欧美日韩| 男男gaygay亚洲| 丁香另类激情小说| 欧美美女黄视频| 久久久久亚洲综合| 一区二区三区四区蜜桃| 久久99精品网久久| 在线视频国内自拍亚洲视频| 欧美一区二区三区男人的天堂| 久久亚洲二区三区| 亚洲伊人色欲综合网| 国内精品国产三级国产a久久| 色综合天天做天天爱| 精品成人一区二区| 亚洲制服丝袜在线| 高清在线不卡av| 在线电影国产精品| 亚洲精品久久嫩草网站秘色| 激情国产一区二区| 欧美日韩综合不卡| 国产精品视频第一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 风间由美一区二区三区在线观看| 欧美一区二区三区在线观看 | 色激情天天射综合网| 精品成人一区二区三区四区| 亚洲午夜久久久| 成人激情开心网| 久久亚洲免费视频| 日韩精品欧美精品| 欧洲av在线精品| 日本一区二区三级电影在线观看| 日韩国产在线一| 欧美性淫爽ww久久久久无| 国产日韩欧美精品一区| 国产一区二区三区免费看| 欧美福利视频一区| 亚洲电影在线播放| 一本色道久久综合狠狠躁的推荐| 久久久久久久久99精品| 老司机午夜精品| 这里是久久伊人| 亚洲大型综合色站| 欧美日韩国产一区二区三区地区| 亚洲欧美一区二区三区久本道91| 国产精品18久久久久久久久| 精品99一区二区三区| 久久精品国产免费看久久精品| 欧美精品丝袜久久久中文字幕| 亚洲永久免费av| 欧美性色黄大片| 亚洲一区二区三区四区在线| 色菇凉天天综合网| 一区二区三区免费网站| 欧美优质美女网站| 午夜亚洲福利老司机| 欧美日韩国产大片| 欧美a级理论片| 国产亚洲欧美在线| 国产精品一区二区视频| 欧美激情一二三区| 成人不卡免费av| 亚洲激情图片小说视频| 欧美日韩国产一级片| 激情文学综合网| 日本一区二区三区久久久久久久久不 | 婷婷开心久久网| 91精品婷婷国产综合久久性色 | 亚洲天天做日日做天天谢日日欢 | 欧美人xxxx| 美女一区二区三区| 久久精品人人做人人爽97| 99久久综合精品| 日日摸夜夜添夜夜添亚洲女人| 欧美一级二级在线观看| 成人激情综合网站| 一片黄亚洲嫩模| 欧美成人性福生活免费看| 国产白丝精品91爽爽久久 | 欧美三区在线视频| 狠狠色丁香久久婷婷综合_中| 国产精品蜜臀av| 欧美日韩在线直播| 岛国一区二区在线观看| 天天综合天天做天天综合| 2020国产精品| 欧美三区在线视频| 国产黄色精品视频| 五月综合激情婷婷六月色窝| 国产网红主播福利一区二区| 色哟哟在线观看一区二区三区| 另类小说一区二区三区| 亚洲精品乱码久久久久久久久| 日韩欧美激情四射| 91在线视频18| 国产成人丝袜美腿| 日本最新不卡在线| 夜夜嗨av一区二区三区网页| 久久久久9999亚洲精品| 777xxx欧美| 欧美亚洲免费在线一区| 丁香网亚洲国际| 热久久一区二区| 亚洲动漫第一页| 亚洲视频一区二区免费在线观看| 日韩欧美一级二级三级久久久| 欧美影片第一页| 91在线观看一区二区| 国产成人午夜精品5599| 麻豆一区二区在线| 日韩成人一级大片| 亚洲电影一级片| 亚洲黄色片在线观看| 综合久久久久久久| 国产精品美女一区二区| 2024国产精品| 久久综合精品国产一区二区三区| 欧美精选一区二区| 在线观看91精品国产麻豆| 欧美揉bbbbb揉bbbbb| 欧美色成人综合| 色悠久久久久综合欧美99| 99国产欧美另类久久久精品| 成人开心网精品视频| 国产.精品.日韩.另类.中文.在线.播放| 欧美aaaaaa午夜精品| 另类欧美日韩国产在线| 免费视频一区二区| 老司机免费视频一区二区三区| 日韩国产欧美一区二区三区| 亚洲午夜激情网页| 日韩中文欧美在线| 久久精品国产一区二区三区免费看| 婷婷综合久久一区二区三区| 五月综合激情婷婷六月色窝| 免费成人你懂的| 国产一区二区三区免费播放| 国产综合色精品一区二区三区| 国产中文字幕一区| 福利一区福利二区| 91丝袜国产在线播放| 欧美在线观看你懂的| 91精品国产综合久久久久久| 精品黑人一区二区三区久久 | 色琪琪一区二区三区亚洲区| 91福利社在线观看| 欧美日韩国产大片| 日韩天堂在线观看| 国产欧美日本一区视频| 国产精品久久久久7777按摩| 亚洲视频一二三区| 蜜桃91丨九色丨蝌蚪91桃色| 韩国视频一区二区| 91视频免费看| 91精品国产综合久久久久久久久久 | 99国产精品一区| 欧美性受xxxx| 日韩午夜精品电影| 国产精品成人免费| 日韩在线观看一区二区| 国产成人精品免费在线| 欧美亚洲综合色| 久久综合九色欧美综合狠狠 | 日韩欧美国产综合| 国产精品九色蝌蚪自拍| 亚洲成a人片综合在线| 国产精品一区二区久久不卡| 一本大道av伊人久久综合| 日韩欧美国产精品一区| 亚洲桃色在线一区| 精品一区二区久久| 欧美日韩视频专区在线播放| 国产精品免费视频观看| 激情综合色播五月| 精品1区2区3区| 中文字幕综合网|