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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dgnopen.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/****************************************************************************** * $Id: dgnopen.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  Microstation DGN Access Library * Purpose:  DGN Access Library file open code. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2000, Avenza Systems Inc, http://www.avenza.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 "dgnlibp.h"CPL_CVSID("$Id: dgnopen.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                            DGNTestOpen()                             *//************************************************************************//**  * Test if header is DGN. * * @param pabyHeader block of header data from beginning of file. * @param nByteCount number of bytes in pabyHeader.  * * @return TRUE if the header appears to be from a DGN file, otherwise FALSE. */int DGNTestOpen( GByte *pabyHeader, int nByteCount ){    if( nByteCount < 4 )        return TRUE;    // Is it a cell library?    if( pabyHeader[0] == 0x08        && pabyHeader[1] == 0x05        && pabyHeader[2] == 0x17        && pabyHeader[3] == 0x00 )        return TRUE;    // Is it not a regular 2D or 3D file?    if( (pabyHeader[0] != 0x08 && pabyHeader[0] != 0xC8)         || pabyHeader[1] != 0x09        || pabyHeader[2] != 0xFE || pabyHeader[3] != 0x02 )        return FALSE;    return TRUE;}/************************************************************************//*                              DGNOpen()                               *//************************************************************************//** * Open a DGN file.  * * The file is opened, and minimally verified to ensure it is a DGN (ISFF) * file.  If the file cannot be opened for read access an error with code * CPLE_OpenFailed with be reported via CPLError() and NULL returned.   * If the file header does * not appear to be a DGN file, an error with code CPLE_AppDefined will be * reported via CPLError(), and NULL returned. * * If successful a handle for further access is returned.  This should be * closed with DGNClose() when no longer needed.   * * DGNOpen() does not scan the file on open, and should be very fast even for * large files.   * * @param pszFilename name of file to try opening. * @param bUpdate should the file be opened with read+update (r+) mode? * * @return handle to use for further access to file using DGN API, or NULL * if open fails. */DGNHandle DGNOpen( const char * pszFilename, int bUpdate ){    DGNInfo     *psDGN;    FILE        *fp;/* -------------------------------------------------------------------- *//*      Open the file.                                                  *//* -------------------------------------------------------------------- */    if( bUpdate )        fp = VSIFOpen( pszFilename, "rb+" );    else        fp = VSIFOpen( pszFilename, "rb" );    if( fp == NULL )    {        CPLError( CE_Failure, CPLE_OpenFailed,                   "Unable to open `%s' for read access.\n",                   pszFilename );        return NULL;    }/* -------------------------------------------------------------------- *//*      Verify the format ... add later.                                *//* -------------------------------------------------------------------- */    GByte       abyHeader[512];    VSIFRead( abyHeader, 1, sizeof(abyHeader), fp );    if( !DGNTestOpen( abyHeader, sizeof(abyHeader) ) )    {        CPLError( CE_Failure, CPLE_AppDefined,                  "File `%s' does not have expected DGN header.\n",                   pszFilename );        VSIFClose( fp );        return NULL;    }    VSIRewind( fp );/* -------------------------------------------------------------------- *//*      Create the info structure.                                      *//* -------------------------------------------------------------------- */    psDGN = (DGNInfo *) CPLCalloc(sizeof(DGNInfo),1);    psDGN->fp = fp;    psDGN->next_element_id = 0;    psDGN->got_tcb = FALSE;    psDGN->scale = 1.0;    psDGN->origin_x = 0.0;    psDGN->origin_y = 0.0;    psDGN->origin_z = 0.0;                                                 psDGN->index_built = FALSE;    psDGN->element_count = 0;    psDGN->element_index = NULL;    psDGN->got_bounds = FALSE;    if( abyHeader[0] == 0xC8 )        psDGN->dimension = 3;    else        psDGN->dimension = 2;    psDGN->has_spatial_filter = FALSE;    psDGN->sf_converted_to_uor = FALSE;    psDGN->select_complex_group = FALSE;    psDGN->in_complex_group = FALSE;    return (DGNHandle) psDGN;}/************************************************************************//*                           DGNSetOptions()                            *//************************************************************************//** * Set file access options. * * Sets a flag affecting how the file is accessed.  Currently * there is only one support flag: * * DGNO_CAPTURE_RAW_DATA: If this is enabled (it is off by default), * then the raw binary data associated with elements will be kept in * the raw_data field within the DGNElemCore when they are read.  This * is required if the application needs to interprete the raw data itself. * It is also necessary if the element is to be written back to this file, * or another file using DGNWriteElement().  Off by default (to conserve * memory).  * * @param hDGN handle to file returned by DGNOpen().  * @param nOptions ORed option flags. */void DGNSetOptions( DGNHandle hDGN, int nOptions ){    DGNInfo     *psDGN = (DGNInfo *) hDGN;    psDGN->options = nOptions;}/************************************************************************//*                        DGNSetSpatialFilter()                         *//************************************************************************//** * Set rectangle for which features are desired. * * If a spatial filter is set with this function, DGNReadElement() will * only return spatial elements (elements with a known bounding box) and * only those elements for which this bounding box overlaps the requested * region.  * * If all four values (dfXMin, dfXMax, dfYMin and dfYMax) are zero, the * spatial filter is disabled.   Note that installing a spatial filter * won't reduce the amount of data read from disk.  All elements are still * scanned, but the amount of processing work for elements outside the  * spatial filter is minimized.   * * @param hDGN Handle from DGNOpen() for file to update. * @param dfXMin minimum x coordinate for extents (georeferenced coordinates). * @param dfYMin minimum y coordinate for extents (georeferenced coordinates). * @param dfXMax maximum x coordinate for extents (georeferenced coordinates). * @param dfYMax maximum y coordinate for extents (georeferenced coordinates). */ void DGNSetSpatialFilter( DGNHandle hDGN,                           double dfXMin, double dfYMin,                           double dfXMax, double dfYMax ){    DGNInfo     *psDGN = (DGNInfo *) hDGN;    if( dfXMin == 0.0 && dfXMax == 0.0        && dfYMin == 0.0 && dfYMax == 0.0 )    {        psDGN->has_spatial_filter = FALSE;        return;    }    psDGN->has_spatial_filter = TRUE;    psDGN->sf_converted_to_uor = FALSE;    psDGN->sf_min_x_geo = dfXMin;    psDGN->sf_min_y_geo = dfYMin;    psDGN->sf_max_x_geo = dfXMax;    psDGN->sf_max_y_geo = dfYMax;    DGNSpatialFilterToUOR( psDGN );}/************************************************************************//*                       DGNSpatialFilterToUOR()                        *//************************************************************************/void DGNSpatialFilterToUOR( DGNInfo *psDGN ){    DGNPoint    sMin, sMax;    if( psDGN->sf_converted_to_uor         || !psDGN->has_spatial_filter         || !psDGN->got_tcb )        return;    sMin.x = psDGN->sf_min_x_geo;    sMin.y = psDGN->sf_min_y_geo;    sMin.z = 0;        sMax.x = psDGN->sf_max_x_geo;    sMax.y = psDGN->sf_max_y_geo;    sMax.z = 0;    DGNInverseTransformPoint( psDGN, &sMin );    DGNInverseTransformPoint( psDGN, &sMax );    psDGN->sf_min_x = (GUInt32) (sMin.x + 2147483648.0);    psDGN->sf_min_y = (GUInt32) (sMin.y + 2147483648.0);    psDGN->sf_max_x = (GUInt32) (sMax.x + 2147483648.0);    psDGN->sf_max_y = (GUInt32) (sMax.y + 2147483648.0);    psDGN->sf_converted_to_uor = TRUE;}/************************************************************************//*                              DGNClose()                              *//************************************************************************//** * Close DGN file.  * * @param hDGN Handle from DGNOpen() for file to close. */void DGNClose( DGNHandle hDGN ){    DGNInfo     *psDGN = (DGNInfo *) hDGN;    VSIFClose( psDGN->fp );    CPLFree( psDGN->element_index );    CPLFree( psDGN );}/************************************************************************//*                          DGNGetDimension()                           *//************************************************************************//** * Return 2D/3D dimension of file. * * Return 2 or 3 depending on the dimension value of the provided file. */int DGNGetDimension( DGNHandle hDGN ){    DGNInfo     *psDGN = (DGNInfo *) hDGN;    return psDGN->dimension;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91猫先生在线| 亚洲3atv精品一区二区三区| 在线视频一区二区三| 国产一区二区伦理| 性做久久久久久免费观看欧美| 国产精品丝袜黑色高跟| 欧美一级二级三级乱码| 91亚洲永久精品| 国内精品久久久久影院色 | 久久嫩草精品久久久精品| 色呦呦网站一区| 成熟亚洲日本毛茸茸凸凹| 美腿丝袜亚洲三区| 午夜欧美在线一二页| 成人免费在线视频| 国产欧美日韩精品在线| 欧美videos中文字幕| 欧美日韩国产a| 91精品1区2区| 一本久道中文字幕精品亚洲嫩| 5858s免费视频成人| 国产自产v一区二区三区c| 日韩精品一级中文字幕精品视频免费观看 | 日本一区二区免费在线观看视频| 欧美一激情一区二区三区| 欧美婷婷六月丁香综合色| 91一区在线观看| av一区二区三区在线| 东方欧美亚洲色图在线| 国产成人精品亚洲午夜麻豆| 国内外成人在线视频| 美女一区二区三区| 日韩综合在线视频| 日日欢夜夜爽一区| 免费看欧美女人艹b| 久热成人在线视频| 国产真实乱对白精彩久久| 国产精品综合网| 国产成人8x视频一区二区| 国产成人精品亚洲777人妖| 成人午夜电影网站| av一区二区三区在线| 91在线你懂得| 欧美探花视频资源| 91精品国产综合久久精品麻豆| 欧美日韩的一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 青青草国产成人av片免费| 免费观看一级特黄欧美大片| 蜜桃视频第一区免费观看| 久久aⅴ国产欧美74aaa| 国产盗摄女厕一区二区三区| 国产不卡在线一区| 色综合色狠狠综合色| 色琪琪一区二区三区亚洲区| 欧美午夜精品理论片a级按摩| 欧美狂野另类xxxxoooo| 欧美一区二区视频在线观看2022 | 一区二区三区在线视频免费观看| 亚洲综合激情另类小说区| 蜜臀va亚洲va欧美va天堂 | 欧美夫妻性生活| 日韩三级电影网址| 国产欧美日韩激情| 亚洲精品中文在线影院| 日本视频在线一区| 国产精品99久久久久久似苏梦涵 | 欧美一区二区三区四区在线观看| 日韩欧美在线影院| 国产精品情趣视频| 天天综合日日夜夜精品| 国产在线看一区| 一本一道久久a久久精品综合蜜臀| 欧美理论在线播放| 中文成人av在线| 日本在线观看不卡视频| 国产成人在线视频免费播放| 欧美午夜精品一区二区蜜桃| 久久久久国产精品麻豆| 一区二区高清视频在线观看| 美女www一区二区| 一本一本大道香蕉久在线精品 | 精品一区二区国语对白| 91在线精品秘密一区二区| 91麻豆精品国产91久久久更新时间 | 日本一不卡视频| 成人午夜电影网站| 日韩欧美电影在线| 亚洲精品国产品国语在线app| 麻豆国产欧美一区二区三区| 色综合视频一区二区三区高清| 欧美xfplay| 亚洲国产精品久久久久秋霞影院 | 欧美色涩在线第一页| 国产亚洲欧美在线| 日本在线观看不卡视频| 色婷婷亚洲精品| 久久精品亚洲国产奇米99| 午夜精品久久久久| 色网站国产精品| 国产精品美女久久久久aⅴ| 日本伊人色综合网| 欧美亚洲国产一卡| 国产精品剧情在线亚洲| 精久久久久久久久久久| 欧美日韩精品欧美日韩精品 | 麻豆视频观看网址久久| 91国偷自产一区二区开放时间 | 亚洲成人1区2区| eeuss鲁一区二区三区| 久久综合资源网| 免费精品99久久国产综合精品| 在线一区二区视频| 亚洲麻豆国产自偷在线| 处破女av一区二区| 久久久另类综合| 精品一区二区三区在线播放视频| 欧美体内she精高潮| 亚洲综合网站在线观看| 色综合婷婷久久| 亚洲日本一区二区| eeuss鲁片一区二区三区在线看| 国产欧美一区二区精品久导航| 狠狠色狠狠色综合系列| 日韩美一区二区三区| 日本aⅴ免费视频一区二区三区 | 91蜜桃在线观看| 中文字幕一区三区| 99re这里只有精品6| 国产精品无码永久免费888| 国产凹凸在线观看一区二区| 久久久噜噜噜久久中文字幕色伊伊 | 免费成人性网站| 欧美大尺度电影在线| 日本成人在线视频网站| 欧美成人精精品一区二区频| 久久99精品国产.久久久久| 欧美一级日韩一级| 久久er99热精品一区二区| www国产成人| 国产精品一区二区黑丝| 国产午夜精品久久久久久免费视 | 欧美日韩一卡二卡| 日韩精品电影一区亚洲| 欧美成人bangbros| 国产麻豆9l精品三级站| 欧美国产日产图区| 99精品一区二区| 亚洲一区二区三区三| 欧美电影一区二区三区| 免费欧美日韩国产三级电影| 久久久午夜电影| 99精品欧美一区二区三区小说 | 亚洲久草在线视频| 欧美日韩不卡在线| 久草这里只有精品视频| 欧美国产欧美综合| 久久久99精品免费观看不卡| 亚洲福利一二三区| 678五月天丁香亚洲综合网| 日本va欧美va精品| 国产亚洲一区二区三区在线观看| 成人黄色在线网站| 亚洲图片一区二区| 欧美一级二级在线观看| 成人h动漫精品一区二| 一区二区高清免费观看影视大全 | 婷婷成人综合网| 久久午夜电影网| 色婷婷综合激情| 精品一区二区在线免费观看| 自拍偷拍亚洲激情| 日韩欧美高清一区| 97超碰欧美中文字幕| 美国十次综合导航| 中文字幕中文在线不卡住| 欧美少妇一区二区| 国产一区二区三区电影在线观看 | 91麻豆精品91久久久久同性| 国产精品一品二品| 亚洲高清免费视频| 中文字幕第一区综合| 欧美日韩高清一区二区三区| 国产激情偷乱视频一区二区三区| 一区二区三区**美女毛片| 精品粉嫩aⅴ一区二区三区四区| jvid福利写真一区二区三区| 久久精品国产秦先生| 玉米视频成人免费看| 久久人人爽人人爽| 91麻豆精品国产91久久久使用方法| 成人免费福利片| 久久99国产精品麻豆| 亚洲午夜一区二区| 国产精品日韩成人| 久久综合五月天婷婷伊人| 欧美日韩成人在线| 色嗨嗨av一区二区三区| 国产成人精品免费在线| 裸体在线国模精品偷拍|