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

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

?? avc_bin.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
?? 第 1 頁 / 共 5 頁
字號:
/********************************************************************** * $Id: avc_bin.c,v 1.28 2006/06/14 16:31:28 daniel Exp $ * * Name:     avc_bin.c * Project:  Arc/Info vector coverage (AVC)  BIN->E00 conversion library * Language: ANSI C * Purpose:  Binary files access functions. * Author:   Daniel Morissette, dmorissette@dmsolutions.ca * ********************************************************************** * Copyright (c) 1999-2005, Daniel Morissette * * 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. ********************************************************************** * * $Log: avc_bin.c,v $ * Revision 1.28  2006/06/14 16:31:28  daniel * Added support for AVCCoverPC2 type (bug 1491) * * Revision 1.27  2005/06/03 03:49:58  daniel * Update email address, website url, and copyright dates * * Revision 1.26  2004/02/28 06:35:49  warmerda * Fixed AVCBinReadObject() index support to use 'x' or 'X' for index * depending on the case of the original name. * Fixed so that PC Arc/Info coverages with the extra 256 byte header work * properly when using indexes to read them. *   http://bugzilla.remotesensing.org/show_bug.cgi?id=493 * * Revision 1.25  2004/02/11 05:49:44  daniel * Added support for deleted flag in arc.dir (bug 2332) * * Revision 1.24  2002/08/27 15:26:06  daniel * Removed C++ style comments for IRIX compiler (GDAL bug 192) * * Revision 1.23  2002/04/16 20:04:24  daniel * Use record size while reading ARC, PAL, CNT to skip junk bytes. (bug940) * * Revision 1.22  2002/03/18 19:03:37  daniel * Fixed AVCBinReadObject() for PAL objects (bug 848) * * Revision 1.21  2002/02/14 22:54:13  warmerda * added polygon and table support for random reading * * Revision 1.20  2002/02/13 20:35:24  warmerda * added AVCBinReadObject * * Revision 1.19  2001/11/25 22:01:23  daniel * Fixed order of args to AVCRawBinFSeek() in _AVCBinReadNextTableRec() * * Revision 1.18  2000/10/16 16:16:20  daniel * Accept TXT files in AVCCoverWeird that use both PC or V7 TXT structure * * Revision 1.17  2000/09/26 20:21:04  daniel * Added AVCCoverPC write * * Revision 1.16  2000/09/22 19:45:20  daniel * Switch to MIT-style license * * Revision 1.15  2000/09/20 15:09:34  daniel * Check for DAT/NIT fnames sometimes truncated to 8 chars in weird coverages * * Revision 1.14  2000/06/05 21:38:53  daniel * Handle precision field > 1000 in cover file header as meaning double prec. * * Revision 1.13  2000/05/29 15:31:30  daniel * Added Japanese DBCS support * * Revision 1.12  2000/02/14 17:22:36  daniel * Check file signature (9993 or 9994) when reading header. * * Revision 1.11  2000/02/02 04:24:52  daniel * Support double precision "weird" coverages * * Revision 1.10  2000/01/10 02:54:10  daniel * Added read support for "weird" coverages * * Revision 1.9  2000/01/07 07:11:51  daniel * Added support for reading PC Coverage TXT files * * Revision 1.8  1999/12/24 07:38:10  daniel * Added missing DBFClose() * * Revision 1.7  1999/12/24 07:18:34  daniel * Added PC Arc/Info coverages support * * Revision 1.6  1999/08/23 18:17:16  daniel * Modified AVCBinReadListTables() to return INFO fnames for DeleteCoverage() * * Revision 1.5  1999/05/11 01:49:08  daniel * Simple changes required by addition of coverage write support * * Revision 1.4  1999/03/03 18:42:53  daniel * Fixed problem with INFO table headers (arc.dir) that sometimes contain an * invalid number of records. * * Revision 1.3  1999/02/25 17:01:53  daniel * Added support for 16 bit integers in INFO tables (type=50, size=2) * * Revision 1.2  1999/02/25 03:41:28  daniel * Added TXT, TX6/TX7, RXP and RPL support * * Revision 1.1  1999/01/29 16:28:52  daniel * Initial revision * **********************************************************************/#include "avc.h"#include <ctype.h>      /* for isspace() *//*===================================================================== * Prototypes for some static functions *====================================================================*/static AVCBinFile *_AVCBinReadOpenTable(const char *pszInfoPath,                                        const char *pszTableName,                                        AVCCoverType eCoverType,                                        AVCDBCSInfo *psDBCSInfo);static AVCBinFile *_AVCBinReadOpenDBFTable(const char *pszInfoPath,                                           const char *pszTableName);static AVCBinFile *_AVCBinReadOpenPrj(const char *pszPath,const char *pszName);static int _AVCBinReadNextTableRec(AVCRawBinFile *psFile, int nFields,                                   AVCFieldInfo *pasDef, AVCField *pasFields,                                   int nRecordSize);static int _AVCBinReadNextDBFTableRec(DBFHandle hDBFFile, int *piRecordIndex,                                       int nFields, AVCFieldInfo *pasDef,                                      AVCField *pasFields);/*===================================================================== * Stuff related to reading the binary coverage files *====================================================================*//********************************************************************** *                          AVCBinReadOpen() * * Open a coverage file for reading, read the file header if applicable, * and initialize a temp. storage structure to be ready to read objects * from the file. * * pszPath is the coverage (or info directory) path, terminated by *         a '/' or a '\\' * pszName is the name of the file to open relative to this directory. * * Note: For most file types except tables, passing pszPath="" and  * including the coverage path as part of pszName instead would work. * * Returns a valid AVCBinFile handle, or NULL if the file could * not be opened. * * AVCBinClose() will eventually have to be called to release the  * resources used by the AVCBinFile structure. **********************************************************************/AVCBinFile *AVCBinReadOpen(const char *pszPath, const char *pszName,                            AVCCoverType eCoverType, AVCFileType eFileType,                           AVCDBCSInfo *psDBCSInfo){    AVCBinFile   *psFile;    /*-----------------------------------------------------------------     * The case of INFO tables is a bit more complicated...     * pass the control to a separate function.     *----------------------------------------------------------------*/    if (eFileType == AVCFileTABLE)    {        if (eCoverType == AVCCoverPC || eCoverType == AVCCoverPC2)            return _AVCBinReadOpenDBFTable(pszPath, pszName);        else            return _AVCBinReadOpenTable(pszPath, pszName,                                         eCoverType, psDBCSInfo);    }    /*-----------------------------------------------------------------     * PRJ files are text files... we won't use the AVCRawBin*()     * functions for them...     *----------------------------------------------------------------*/    if (eFileType == AVCFilePRJ)    {        return _AVCBinReadOpenPrj(pszPath, pszName);    }    /*-----------------------------------------------------------------     * All other file types share a very similar opening method.     *----------------------------------------------------------------*/    psFile = (AVCBinFile*)CPLCalloc(1, sizeof(AVCBinFile));    psFile->eFileType = eFileType;    psFile->eCoverType = eCoverType;    psFile->pszFilename = (char*)CPLMalloc((strlen(pszPath)+strlen(pszName)+1)*                                           sizeof(char));    sprintf(psFile->pszFilename, "%s%s", pszPath, pszName);    AVCAdjustCaseSensitiveFilename(psFile->pszFilename);    psFile->psRawBinFile = AVCRawBinOpen(psFile->pszFilename, "r",                                         AVC_COVER_BYTE_ORDER(eCoverType),                                         psDBCSInfo);    if (psFile->psRawBinFile == NULL)    {        /* Failed to open file... just return NULL since an error message         * has already been issued by AVCRawBinOpen()         */        CPLFree(psFile->pszFilename);        CPLFree(psFile);        return NULL;    }    /*-----------------------------------------------------------------     * Read the header, and set the precision field if applicable     *----------------------------------------------------------------*/    if (AVCBinReadRewind(psFile) != 0)    {        CPLFree(psFile->pszFilename);        CPLFree(psFile);        return NULL;    }    /*-----------------------------------------------------------------     * Allocate a temp. structure to use to read objects from the file     * (Using Calloc() will automatically initialize the struct contents     *  to NULL... this is very important for ARCs and PALs)     *----------------------------------------------------------------*/    if (psFile->eFileType == AVCFileARC)    {        psFile->cur.psArc = (AVCArc*)CPLCalloc(1, sizeof(AVCArc));    }    else if (psFile->eFileType == AVCFilePAL ||             psFile->eFileType == AVCFileRPL )    {        psFile->cur.psPal = (AVCPal*)CPLCalloc(1, sizeof(AVCPal));    }    else if (psFile->eFileType == AVCFileCNT)    {        psFile->cur.psCnt = (AVCCnt*)CPLCalloc(1, sizeof(AVCCnt));    }    else if (psFile->eFileType == AVCFileLAB)    {        psFile->cur.psLab = (AVCLab*)CPLCalloc(1, sizeof(AVCLab));    }    else if (psFile->eFileType == AVCFileTOL)    {        psFile->cur.psTol = (AVCTol*)CPLCalloc(1, sizeof(AVCTol));    }    else if (psFile->eFileType == AVCFileTXT ||             psFile->eFileType == AVCFileTX6)    {        psFile->cur.psTxt = (AVCTxt*)CPLCalloc(1, sizeof(AVCTxt));    }    else if (psFile->eFileType == AVCFileRXP)    {        psFile->cur.psRxp = (AVCRxp*)CPLCalloc(1, sizeof(AVCRxp));    }    else    {        CPLError(CE_Failure, CPLE_IllegalArg,                 "%s: Unsupported file type or corrupted file.",                 psFile->pszFilename);        CPLFree(psFile->pszFilename);        CPLFree(psFile);        psFile = NULL;    }    return psFile;}/********************************************************************** *                          AVCBinReadClose() * * Close a coverage file, and release all memory (object strcut., buffers, * etc.) associated with this file. **********************************************************************/void    AVCBinReadClose(AVCBinFile *psFile){    AVCRawBinClose(psFile->psRawBinFile);    psFile->psRawBinFile = NULL;    CPLFree(psFile->pszFilename);    psFile->pszFilename = NULL;    if (psFile->hDBFFile)        DBFClose(psFile->hDBFFile);    if( psFile->psIndexFile != NULL )        AVCRawBinClose( psFile->psIndexFile );    if (psFile->eFileType == AVCFileARC)    {        if (psFile->cur.psArc)            CPLFree(psFile->cur.psArc->pasVertices);        CPLFree(psFile->cur.psArc);    }    else if (psFile->eFileType == AVCFilePAL ||             psFile->eFileType == AVCFileRPL )    {        if (psFile->cur.psPal)            CPLFree(psFile->cur.psPal->pasArcs);        CPLFree(psFile->cur.psPal);    }    else if (psFile->eFileType == AVCFileCNT)    {        if (psFile->cur.psCnt)            CPLFree(psFile->cur.psCnt->panLabelIds);        CPLFree(psFile->cur.psCnt);    }    else if (psFile->eFileType == AVCFileLAB)    {        CPLFree(psFile->cur.psLab);    }    else if (psFile->eFileType == AVCFileTOL)    {        CPLFree(psFile->cur.psTol);    }    else if (psFile->eFileType == AVCFilePRJ)    {        CSLDestroy(psFile->cur.papszPrj);    }    else if (psFile->eFileType == AVCFileTXT ||              psFile->eFileType == AVCFileTX6)    {        if (psFile->cur.psTxt)        {            CPLFree(psFile->cur.psTxt->pasVertices);            CPLFree(psFile->cur.psTxt->pszText);        }        CPLFree(psFile->cur.psTxt);    }    else if (psFile->eFileType == AVCFileRXP)    {        CPLFree(psFile->cur.psRxp);    }    else if (psFile->eFileType == AVCFileTABLE)    {        _AVCDestroyTableFields(psFile->hdr.psTableDef, psFile->cur.pasFields);        _AVCDestroyTableDef(psFile->hdr.psTableDef);    }    else    {        CPLError(CE_Failure, CPLE_IllegalArg,                 "Unsupported file type or invalid file handle!");    }    CPLFree(psFile);}/********************************************************************** *                          _AVCBinReadHeader() * * (This function is for internal library use... external calls should

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品专区在线| 国产一区二区不卡在线| 91搞黄在线观看| 有坂深雪av一区二区精品| 色中色一区二区| 亚洲国产一区视频| 欧美日韩一卡二卡三卡 | 国产色婷婷亚洲99精品小说| 国产一区二区免费看| 国产精品网曝门| 99久久99久久精品国产片果冻| 最新国产成人在线观看| 欧美亚洲一区二区在线观看| 蜜臀91精品一区二区三区| 国产亚洲一区字幕| 91美女片黄在线观看91美女| 性做久久久久久免费观看| 日韩免费观看高清完整版| 国产成人精品免费视频网站| 亚洲女女做受ⅹxx高潮| 欧美精品tushy高清| 粉嫩在线一区二区三区视频| 亚洲精品视频观看| 91精品麻豆日日躁夜夜躁| 国产激情视频一区二区三区欧美| 综合色天天鬼久久鬼色| 欧美一区二区三区成人| 国产成人在线视频免费播放| 一区二区三区四区精品在线视频| 制服.丝袜.亚洲.另类.中文| 成人理论电影网| 天天综合色天天综合色h| 久久综合99re88久久爱| 色哦色哦哦色天天综合| 日本人妖一区二区| 国产精品女人毛片| 91免费看视频| 国产酒店精品激情| 国产日韩欧美综合在线| 51久久夜色精品国产麻豆| 国产原创一区二区三区| 婷婷国产v国产偷v亚洲高清| 久久综合久久综合九色| 精品婷婷伊人一区三区三| 国产乱码字幕精品高清av| 亚洲午夜三级在线| 久久精品一二三| 日韩片之四级片| 成人黄色电影在线 | 日韩精品一区二区在线| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 亚洲天堂2014| 日韩精品一区二区三区视频播放| 欧美在线一区二区三区| 狠狠网亚洲精品| 日韩电影在线看| 亚洲乱码中文字幕综合| 国产欧美日产一区| 91精品国产综合久久精品性色 | 国模套图日韩精品一区二区| 国产精品无人区| 欧美v亚洲v综合ⅴ国产v| 色婷婷久久久综合中文字幕 | 欧美日本精品一区二区三区| 国产成人精品三级| 经典三级一区二区| 亚洲一区影音先锋| 一区二区在线免费| 国产欧美精品日韩区二区麻豆天美| 韩国毛片一区二区三区| 老司机精品视频在线| 一区二区日韩电影| 亚洲激情图片小说视频| 日本一区二区三区国色天香 | 欧美色图一区二区三区| 一本一道久久a久久精品| 国产高清精品在线| 成人美女在线观看| 国产成人综合自拍| 成人精品国产一区二区4080| 黄色日韩网站视频| 国产精品一区二区久激情瑜伽 | 国产精品私人自拍| 国产日韩视频一区二区三区| 欧美大胆人体bbbb| 精品剧情v国产在线观看在线| 91精品国产综合久久久蜜臀图片| 日韩欧美高清在线| 日韩欧美高清一区| 久久精品亚洲国产奇米99| 精品少妇一区二区| 日本一区二区三区久久久久久久久不 | 无码av免费一区二区三区试看| 亚洲人亚洲人成电影网站色| 亚洲免费观看高清完整版在线观看 | 在线观看欧美黄色| 欧美性猛交xxxxxxxx| 91精品国产综合久久久久久久| 7777精品伊人久久久大香线蕉 | 人人狠狠综合久久亚洲| 亚洲激情欧美激情| 亚洲黄网站在线观看| 亚洲h精品动漫在线观看| 亚洲国产综合在线| 激情偷乱视频一区二区三区| 国产一区二区三区免费看 | 蜜臀av性久久久久蜜臀aⅴ| 国产毛片精品视频| 成人中文字幕在线| 欧美在线不卡视频| 51精品久久久久久久蜜臀| 久久久亚洲欧洲日产国码αv| 国产欧美一区二区三区网站| 国产精品婷婷午夜在线观看| 一区二区三区精品在线| 国产精品系列在线| 丝袜美腿成人在线| 久久99精品久久久久久国产越南| 不卡在线观看av| 色婷婷激情综合| 久久久久9999亚洲精品| 亚洲男同1069视频| 韩国中文字幕2020精品| av电影在线不卡| 欧美一区二区三区白人| 精品国产人成亚洲区| 亚洲自拍欧美精品| 国产真实乱子伦精品视频| 欧洲精品在线观看| 精品国产a毛片| 日韩毛片在线免费观看| 婷婷久久综合九色综合绿巨人| 蜜桃视频一区二区三区在线观看| 日韩国产欧美视频| 成人黄色在线视频| 欧美一区二区黄色| 亚洲精品一区二区三区香蕉| 亚洲视频 欧洲视频| 久久福利视频一区二区| 91女神在线视频| 日韩精品一区在线| 日韩精品欧美成人高清一区二区| 国产成人精品一区二区三区四区| 欧美日韩一级片在线观看| 精品久久人人做人人爽| 亚洲一区二区三区在线| 成人高清视频在线观看| 日韩美女视频在线| 日韩不卡免费视频| 色94色欧美sute亚洲线路一久| 国产午夜精品一区二区三区嫩草| 日韩中文字幕不卡| 欧美在线999| 亚洲人精品午夜| av电影在线观看一区| 久久综合久久鬼色中文字| 青青草97国产精品免费观看| 在线欧美小视频| 亚洲精品国产a久久久久久| 国产传媒一区在线| 国产欧美日韩另类视频免费观看| 另类小说欧美激情| 日韩一区二区三| 午夜精品一区在线观看| 欧美日韩一区 二区 三区 久久精品 | 蜜臀av亚洲一区中文字幕| 欧美日韩一区国产| 一区二区三区四区精品在线视频| 色菇凉天天综合网| 国产精品美日韩| 91色九色蝌蚪| 欧美精品一区二区高清在线观看 | av在线这里只有精品| 久久一区二区视频| 国产精品综合视频| 精品少妇一区二区三区在线播放| 久久疯狂做爰流白浆xx| 欧美成人三级在线| 国产精品一区二区久久不卡 | 风间由美性色一区二区三区| 中文天堂在线一区| 99久久精品一区二区| 亚洲欧美另类久久久精品2019| 国产高清在线观看免费不卡| 国产精品美女久久久久久 | 欧美一区二区三区思思人| 蜜桃久久av一区| 欧美一区二区黄| 国产成人无遮挡在线视频| 久久蜜臀中文字幕| 91在线国内视频| 亚洲欧美激情小说另类| 欧美日本免费一区二区三区| 亚洲免费在线视频一区 二区| 91在线国产观看| 亚洲第一二三四区| 日韩午夜在线播放| 国产成人精品一区二区三区网站观看| 国产欧美一区二区在线观看| 一本大道久久a久久综合婷婷|