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

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

?? ogrwritabledwglayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/****************************************************************************** * $Id: ogrwritabledwglayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Implements OGRWritableDWGLayer class. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2005, Frank Warmerdam <warmerdam@pobox.com> * * 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_dwg.h"#include "cpl_conv.h"#include "cpl_string.h"#include "OdaCommon.h"#include "DbDatabase.h"#include "DbLayerTable.h"#include "DbTextStyleTable.h"#include "DbLinetypeTable.h"#include "DbBlockTable.h"#include "DbViewportTable.h"#include "DbViewportTableRecord.h"#include "DbXrecord.h"#include "DbGroup.h"#include "DbMlineStyle.h"#include "DbRasterImageDef.h"#include "DbRasterVariables.h"#include "DbSortentsTable.h"#include "DbLayout.h"#include "DbLine.h"#include "DbBlockReference.h"#include "DbAttribute.h"#include "DbAttributeDefinition.h"#include "DbPoint.h"#include "Db2dPolyline.h"#include "Db2dVertex.h"#include "Db3dPolyline.h"#include "Db3dPolylineVertex.h"#include "DbText.h"#include "DbMText.h"#include "DbPolygonMesh.h"#include "DbPolygonMeshVertex.h"#include "DbPolyFaceMesh.h"#include "DbPolyFaceMeshVertex.h"#include "DbFaceRecord.h"#include "DbMline.h"#include "DbFcf.h"#include "DbLeader.h"#include "Db3dSolid.h"#include "DbRasterImage.h"#include "DbFace.h"#include "DbPoint.h"#include "DbRay.h"#include "DbXline.h"#include "DbSolid.h"#include "DbSpline.h"#include "DbTrace.h"#include "DbPolyline.h"#include "DbArc.h"#include "DbCircle.h"#include "DbArcAlignedText.h"#include "DbEllipse.h"#include "RText.h"#include "DbViewport.h"#include "DbAlignedDimension.h"#include "DbRadialDimension.h"#include "Db3PointAngularDimension.h"#include "DbOrdinateDimension.h"#include "DbRotatedDimension.h"#include "DbDimAssoc.h"#include "DbTable.h"#include "Ge/GeCircArc2d.h"#include "Ge/GeScale3d.h"#include "Ge/GeExtents3d.h"#include "XRefMan.h"#include <math.h>#include "DbSymUtl.h"#include "DbHostAppServices.h"#include "HatchPatternManager.h"#include "DbHyperlink.h"#include "DbBody.h"#include "DbWipeout.h"CPL_CVSID("$Id: ogrwritabledwglayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                        OGRWritableDWGLayer()                         *//************************************************************************/OGRWritableDWGLayer::OGRWritableDWGLayer( const char *pszLayerName,                                          char **papszOptionsIn,                                           OGRWritableDWGDataSource *poDSIn ){    poDS = poDSIn;    papszOptions = CSLDuplicate( papszOptionsIn );    pDb = poDS->pDb;/* -------------------------------------------------------------------- *//*      Create the DWGdirect layer object.                              *//* -------------------------------------------------------------------- */    // Add a new layer to the drawing    OdDbLayerTablePtr pLayers;    OdDbLayerTableRecordPtr pLayer;    pLayers = pDb->getLayerTableId().safeOpenObject(OdDb::kForWrite);    pLayer = OdDbLayerTableRecord::createObject();        // Name must be set before a table object is added to a table.    pLayer->setName( pszLayerName );        // Add the object to the table.    hLayerId = pLayers->add(pLayer);/* -------------------------------------------------------------------- *//*      Check for a layer color.                                        *//* -------------------------------------------------------------------- */    const char *pszColor = CSLFetchNameValue(papszOptionsIn,"COLOR");    if( pszColor != NULL )    {        char **papszTokens =             CSLTokenizeStringComplex( pszColor, ",", FALSE, FALSE );                if( CSLCount( papszTokens ) != 3 )        {            CPLError( CE_Warning, CPLE_AppDefined,                       "COLOR=%s setting not parsable.  Should be 'red,green,blue'.",                       pszColor );        }        else        {            OdCmColor oColor;            oColor.setRGB( atoi(papszTokens[0]),                            atoi(papszTokens[1]),                            atoi(papszTokens[2]) );            pLayer->setColor( oColor );        }    }/* -------------------------------------------------------------------- *//*      Create the starting OGRFeatureDefn.                             *//* -------------------------------------------------------------------- */    poFeatureDefn = new OGRFeatureDefn( pszLayerName );    poFeatureDefn->Reference();}/************************************************************************//*                     ~OGRWritableDWGDataSource()                      *//************************************************************************/OGRWritableDWGLayer::~OGRWritableDWGLayer(){    poFeatureDefn->Release();}/************************************************************************//*                            ResetReading()                            *//************************************************************************/void OGRWritableDWGLayer::ResetReading(){}/************************************************************************//*                           GetNextFeature()                           *//************************************************************************/OGRFeature *OGRWritableDWGLayer::GetNextFeature(){    return NULL;}/************************************************************************//*                           TestCapablity()                            *//************************************************************************/int OGRWritableDWGLayer::TestCapability( const char *pszCap ){    if( EQUAL(pszCap,OLCSequentialWrite) )        return TRUE;    else if( EQUAL(pszCap,OLCCreateField) )        return TRUE;    else        return FALSE;}/************************************************************************//*                            CreateField()                             *//************************************************************************/OGRErr OGRWritableDWGLayer::CreateField( OGRFieldDefn *poField,                                         int bApproxOK ){    poFeatureDefn->AddFieldDefn( poField );    return OGRERR_NONE;}/************************************************************************//*                            WriteEntity()                             *//************************************************************************/OGRErr OGRWritableDWGLayer::WriteEntity( OGRGeometry *poGeom,                                         OdDbObjectPtr *ppObjectRet ){    switch( wkbFlatten(poGeom->getGeometryType()) )    {      case wkbPoint:      {          OGRPoint *poOGRPoint = (OGRPoint *) poGeom;          OdDbPointPtr pPoint = OdDbPoint::createObject();                    pPoint->setPosition(               OdGePoint3d(poOGRPoint->getX(), poOGRPoint->getY(),                           poOGRPoint->getZ() ) );          pPoint->setLayer( hLayerId, false );          poDS->pMs->appendOdDbEntity( pPoint );                    if( ppObjectRet != NULL )              *ppObjectRet = pPoint;          return OGRERR_NONE;      }      case wkbLineString:      {          OGRLineString *poLine = (OGRLineString *) poGeom;          // Add a 2d polyline with vertices.          OdDb2dPolylinePtr p2dPl = OdDb2dPolyline::createObject();           int i;          for (i = 0; i < poLine->getNumPoints(); i++)          {              OdDb2dVertexPtr pV;              OdGePoint3d pos;              pos.x = poLine->getX(i);              pos.y = poLine->getY(i);              pos.z = poLine->getZ(i);              pV = OdDb2dVertex::createObject();              p2dPl->appendVertex(pV);              pV->setPosition(pos);          }            p2dPl->setLayer( hLayerId, false );          poDS->pMs->appendOdDbEntity( p2dPl );          if( ppObjectRet != NULL )              *ppObjectRet = p2dPl;          return OGRERR_NONE;      }      case wkbPolygon:      {          OGRPolygon *poPoly = (OGRPolygon *) poGeom;          int iRing;          OGRErr eErr;          for( iRing = -1; iRing < poPoly->getNumInteriorRings(); iRing++ )          {              OGRLinearRing *poRing;              if( iRing == -1 )                  poRing = poPoly->getExteriorRing();              else                  poRing = poPoly->getInteriorRing( iRing );              if( iRing == -1 )                  eErr = WriteEntity( poRing, ppObjectRet );              else                  eErr = WriteEntity( poRing, NULL );              if( eErr != OGRERR_NONE )                  return eErr;          }          return OGRERR_NONE;      }      case wkbGeometryCollection:      case wkbMultiPolygon:      case wkbMultiPoint:      case wkbMultiLineString:      {          OGRGeometryCollection *poColl = (OGRGeometryCollection *) poGeom;          int iSubGeom;          OGRErr eErr;          for( iSubGeom=0; iSubGeom < poColl->getNumGeometries(); iSubGeom++ )          {              OGRGeometry *poGeom = poColl->getGeometryRef( iSubGeom );                            if( iSubGeom == 0 )                  eErr = WriteEntity( poGeom, ppObjectRet );              else                  eErr = WriteEntity( poGeom, NULL );                                if( eErr != OGRERR_NONE )                  return eErr;          }          return OGRERR_NONE;      }      default:        return OGRERR_FAILURE;    }}/************************************************************************//*                           CreateFeature()                            *//************************************************************************/OGRErr OGRWritableDWGLayer::CreateFeature( OGRFeature *poFeature ){    OGRGeometry *poGeom = poFeature->GetGeometryRef();    OGRErr eErr;    if( poGeom == NULL )        return OGRERR_FAILURE;/* -------------------------------------------------------------------- *//*      Keep track of file extents.                                     *//* -------------------------------------------------------------------- */    poDS->ExtendExtent( poGeom );/* -------------------------------------------------------------------- *//*      Translate geometry.                                             *//* -------------------------------------------------------------------- */    OdDbObjectPtr pObject;    eErr = WriteEntity( poGeom, &pObject );    if( eErr != OGRERR_NONE )        return eErr;/* -------------------------------------------------------------------- *//*      Append attributes.                                              *//* -------------------------------------------------------------------- */    OdResBufPtr xIter = OdResBuf::newRb( 1001 );     xIter->setString( "ACAD" );    OdResBufPtr temp = xIter;            for( int iField = 0; iField < poFeature->GetFieldCount(); iField++ )    {        if( !poFeature->IsFieldSet( iField ) )            continue;        CPLString sNameValue;        const char *pszValue = poFeature->GetFieldAsString( iField );                while( *pszValue == ' ' )            pszValue++;        sNameValue.Printf( "%s=%s",                            poFeature->GetFieldDefnRef( iField )->GetNameRef(),                           pszValue );        OdResBufPtr newRB = OdResBuf::newRb( 1000 );        newRB->setString( sNameValue.c_str() );        temp->setNext( newRB );        temp = temp->next();    }        if( pObject != (const void *) NULL )        pObject->setXData( xIter );    return OGRERR_NONE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清视频在线观看| 欧美精品乱码久久久久久按摩 | 亚洲色图欧美激情| 国产免费久久精品| 中文字幕免费一区| 国产精品乱子久久久久| 国产精品网曝门| 欧美国产日韩亚洲一区| 久久久久久久电影| 国产亚洲精品超碰| 国产欧美视频一区二区| 国产精品无码永久免费888| 国产欧美日韩亚州综合| 中文幕一区二区三区久久蜜桃| 国产精品丝袜黑色高跟| 中文字幕欧美激情一区| 一区二区三区在线播放| 丝袜亚洲精品中文字幕一区| 日本不卡高清视频| 国产一区啦啦啦在线观看| 国产福利一区二区三区在线视频| 国产91清纯白嫩初高中在线观看| av在线综合网| 欧美精品九九99久久| 日韩欧美国产一二三区| 国产精品视频免费看| 亚洲一区在线看| 狠狠v欧美v日韩v亚洲ⅴ| 国产成人欧美日韩在线电影| 色综合久久久久久久| 欧美精品一二三| 久久精品欧美日韩| 亚洲综合视频网| 蜜臀av性久久久久蜜臀aⅴ| 福利91精品一区二区三区| 91麻豆产精品久久久久久| 欧美一级在线免费| 最新欧美精品一区二区三区| 亚洲成a人片在线不卡一二三区| 久久99蜜桃精品| 99国产麻豆精品| 精品毛片乱码1区2区3区| 久久网这里都是精品| 一区二区三区不卡视频| 欧美精品在线观看播放| 日韩欧美中文字幕一区| 亚洲国产色一区| 国产伦精品一区二区三区视频青涩| 成人黄色777网| 欧美猛男男办公室激情| 亚洲男人天堂一区| 不卡一区二区在线| 亚洲一区二区精品视频| 欧美日韩国产另类一区| 欧美精品免费视频| 国产精品女同互慰在线看| 亚洲综合自拍偷拍| 久久99精品久久久久久国产越南| 国产成人免费av在线| 欧美精品第一页| 国产精品不卡在线| 日韩国产一二三区| 97久久人人超碰| 久久青草国产手机看片福利盒子| 亚洲欧美一区二区久久 | 欧美视频一区二区三区四区| 91精品婷婷国产综合久久竹菊| 国产欧美精品在线观看| 日本不卡一区二区三区| aaa欧美色吧激情视频| 日韩精品一区二| 亚洲国产综合在线| 97精品久久久午夜一区二区三区| 91精品国产入口| 亚洲在线一区二区三区| 成人av手机在线观看| 久久久久久久久免费| 麻豆精品视频在线观看免费| 日本乱人伦aⅴ精品| 国产精品久久久久aaaa樱花| 日韩电影免费在线看| 91麻豆国产精品久久| 国产精品久久久久7777按摩| 国精品**一区二区三区在线蜜桃| 欧美日韩三级在线| 一区二区三区视频在线观看| 成人爱爱电影网址| 69av一区二区三区| 日韩福利视频导航| 一区二区三区在线视频免费观看| 亚洲综合丁香婷婷六月香| 国产精品久久久久影院色老大| 九九精品一区二区| 日韩欧美视频一区| 久久精品国产一区二区三区免费看| 欧美日韩亚洲综合一区二区三区| 亚洲一区欧美一区| 欧美日韩一区二区欧美激情| 久久日韩精品一区二区五区| 久久精品国产99国产精品| 欧美二区乱c少妇| 制服丝袜中文字幕一区| 日韩一区二区免费高清| 国产精品久久久久7777按摩| 国产综合色视频| 粉嫩久久99精品久久久久久夜| 国产精品亚洲一区二区三区在线| 国产福利电影一区二区三区| 久久国产乱子精品免费女| 亚洲成人你懂的| 国内精品国产成人国产三级粉色 | 欧美精品自拍偷拍| 国产三级精品三级在线专区| 国产一区二区三区电影在线观看 | 亚洲线精品一区二区三区 | 人妖欧美一区二区| bt欧美亚洲午夜电影天堂| 夜夜揉揉日日人人青青一国产精品| 成人av网站免费观看| 欧美一区二区久久久| 久久精品视频免费观看| 日韩精品一区第一页| 国产一区二区三区免费播放| 欧美一级二级三级蜜桃| 亚洲欧洲av色图| 亚洲色欲色欲www| 五月天网站亚洲| 在线观看免费视频综合| 一区二区三区免费| 日韩一本二本av| 国产成人啪免费观看软件| 亚洲精品视频一区| 精品少妇一区二区三区视频免付费 | 一区二区三区四区视频精品免费 | 成人性生交大片免费看视频在线| 亚洲一区在线观看免费观看电影高清| 精品乱人伦一区二区三区| 99re热这里只有精品免费视频| 丝袜亚洲另类欧美| 精品免费国产二区三区 | 首页综合国产亚洲丝袜| 国产精品久久久久久久久免费丝袜| 色88888久久久久久影院野外| 亚洲国产综合色| 国产精品嫩草影院av蜜臀| 9191国产精品| 91国产免费看| a亚洲天堂av| 国产乱国产乱300精品| 亚洲国产wwwccc36天堂| 国产精品国产成人国产三级 | 国产欧美日韩激情| 国产精品嫩草久久久久| 久久成人羞羞网站| 亚洲免费在线观看视频| 色婷婷精品大在线视频| 秋霞电影网一区二区| 欧美精品一级二级三级| 日本中文在线一区| 久久综合九色综合97婷婷| av成人老司机| 国产专区综合网| 91浏览器在线视频| 国产精品三级av| 久久精品夜色噜噜亚洲a∨| 色8久久精品久久久久久蜜| 国产美女一区二区| 久久精品国产久精国产| 欧美aaaaa成人免费观看视频| 亚洲在线视频一区| 国产精品对白交换视频 | 日韩成人一级片| 免费观看日韩电影| 精品一区二区免费| 激情图片小说一区| 国产麻豆精品在线| 国产成人丝袜美腿| av成人动漫在线观看| aaa亚洲精品| 欧美四级电影在线观看| 精品视频在线视频| 91精品在线观看入口| 精品99久久久久久| 久久精品一区蜜桃臀影院| 国产精品久久久久久久久动漫 | 国产精品入口麻豆原神| 久久久精品综合| 国产午夜精品久久久久久免费视| 欧美大片在线观看一区二区| 欧美色图一区二区三区| 欧美一级久久久| 日韩欧美一区二区在线视频| 欧美r级电影在线观看| 精品久久一区二区| 国产精品欧美一区喷水| 亚洲v精品v日韩v欧美v专区| 免费看欧美美女黄的网站| a4yy欧美一区二区三区| 欧美福利视频一区| 国产精品不卡在线观看|