亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
一本大道久久a久久综合婷婷| 亚洲欧美精品午睡沙发| av中文字幕不卡| 亚洲午夜在线电影| 亚洲国产高清aⅴ视频| 制服丝袜中文字幕一区| 成人性生交大片免费看中文 | 人禽交欧美网站| 综合婷婷亚洲小说| 精品久久久网站| 欧美日韩在线精品一区二区三区激情| 色婷婷精品久久二区二区蜜臂av| 亚洲.国产.中文慕字在线| 亚洲欧洲成人av每日更新| 久久嫩草精品久久久精品| 欧美日韩一区二区三区在线看| 97超碰欧美中文字幕| 成人福利电影精品一区二区在线观看| 日韩电影在线免费看| 日日夜夜免费精品视频| 日韩高清在线不卡| 午夜激情一区二区三区| 五月天婷婷综合| 日韩av中文字幕一区二区三区| 亚洲五码中文字幕| 婷婷成人激情在线网| 日本欧美一区二区| 六月婷婷色综合| 国产寡妇亲子伦一区二区| 粉嫩av一区二区三区在线播放| 国产成人无遮挡在线视频| 成人激情免费电影网址| 在线精品视频免费观看| 欧美人与性动xxxx| 日韩久久免费av| 国产三区在线成人av| 亚洲三级在线观看| 蜜桃av噜噜一区| 波多野结衣在线一区| 欧美日韩激情在线| 日韩精品中文字幕一区二区三区| 国产午夜精品一区二区三区嫩草 | 成人欧美一区二区三区1314| 亚洲一区二区三区国产| 激情都市一区二区| 色综合激情五月| 亚洲国产精品二十页| 日韩精品亚洲一区| 日本高清成人免费播放| 2021国产精品久久精品| 亚洲综合视频网| 成人午夜激情在线| 精品久久久久久久久久久久久久久 | 国产精品国产三级国产aⅴ中文| 日本欧美韩国一区三区| 在线免费不卡视频| 中文字幕一区二区在线播放| 激情偷乱视频一区二区三区| 欧美日韩国产欧美日美国产精品| 国产精品久久久久aaaa樱花| 国产在线日韩欧美| 日韩三级精品电影久久久| 亚洲一区二区av电影| 99精品欧美一区二区蜜桃免费| 久久久久88色偷偷免费 | 日韩中文字幕区一区有砖一区 | 久久久亚洲国产美女国产盗摄| 日韩综合在线视频| 这里只有精品视频在线观看| 国产999精品久久| 国产精品色一区二区三区| 国产东北露脸精品视频| 日本一区二区三区在线不卡 | 制服丝袜亚洲色图| 麻豆免费精品视频| 日韩欧美一级在线播放| 蜜桃视频在线一区| 精品久久久久久久人人人人传媒| 六月丁香婷婷色狠狠久久| 国产亚洲一二三区| 91偷拍与自偷拍精品| 亚洲一区影音先锋| 日韩欧美资源站| 风间由美中文字幕在线看视频国产欧美| 精品国精品自拍自在线| 成人丝袜18视频在线观看| 亚洲精品视频在线观看免费| 制服丝袜av成人在线看| 国产成人亚洲精品青草天美| 一区二区在线免费观看| 久久综合久久综合九色| 26uuu亚洲| 欧美网站大全在线观看| 精品综合久久久久久8888| 亚洲国产成人在线| 欧美午夜精品一区| 国产精品资源在线看| 亚洲欧美乱综合| 2019国产精品| 欧美亚洲综合久久| 国产精品一级二级三级| 亚洲无人区一区| 综合中文字幕亚洲| 欧美mv和日韩mv的网站| 欧美老肥妇做.爰bbww视频| av一二三不卡影片| 国产传媒一区在线| 久久电影网站中文字幕| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲一区二区三区影院| 国产精品不卡视频| 日韩精品中午字幕| 日韩视频在线观看一区二区| 欧美三级视频在线| 91免费视频网| 99国产精品一区| 91免费小视频| 一本色道亚洲精品aⅴ| 成人一区二区视频| 国产激情一区二区三区| 国产一区二区免费在线| 国产精品一区专区| 国产不卡免费视频| 成人激情av网| 色狠狠综合天天综合综合| jvid福利写真一区二区三区| 成人国产精品免费观看动漫| 成人性生交大合| 99综合影院在线| 欧美日韩国产一级| 日韩一区二区三区精品视频| 日韩欧美黄色影院| 国产视频一区二区在线观看| 一区在线观看免费| 亚洲成人综合视频| 国产一区二区三区在线观看免费 | 9色porny自拍视频一区二区| 色国产综合视频| 日韩一区二区中文字幕| 日本一区二区三级电影在线观看| 中文字幕欧美一| 奇米精品一区二区三区在线观看一| 天天影视色香欲综合网老头| 国产乱妇无码大片在线观看| 欧美夫妻性生活| 色哟哟在线观看一区二区三区| 日韩免费高清视频| 久久er精品视频| 欧美性videosxxxxx| 国产欧美日韩三级| 免费成人在线视频观看| 91视频精品在这里| 久久久精品黄色| 肉肉av福利一精品导航| 不卡电影一区二区三区| 欧美一区二区精品| 天堂av在线一区| 91精品综合久久久久久| 亚洲gay无套男同| 欧美日本免费一区二区三区| 一区二区在线看| 欧美日韩一区不卡| 亚洲一区二区三区在线看| 日本道色综合久久| 亚洲影视在线观看| 欧美日韩国产另类不卡| 一区二区日韩电影| 欧美日韩国产免费一区二区| 国产喷白浆一区二区三区| 成人精品在线视频观看| 亚洲欧美日韩系列| 欧美精品丝袜中出| 久久se这里有精品| 国产视频一区二区在线观看| 国产乱人伦偷精品视频不卡 | 欧美另类z0zxhd电影| 日本不卡一区二区三区高清视频| 欧美色爱综合网| 日日欢夜夜爽一区| 精品国产一区二区三区不卡| 国产精品资源在线看| 久久精品视频免费| 日本丰满少妇一区二区三区| 男女性色大片免费观看一区二区 | 欧美成人一区二区三区片免费| 国产麻豆午夜三级精品| 亚洲精品视频一区| 日韩午夜在线影院| 懂色av一区二区在线播放| 亚洲日本在线天堂| 欧美一级二级三级蜜桃| 不卡一区二区在线| 亚洲观看高清完整版在线观看| 日韩欧美国产综合| 99国产精品国产精品毛片| 免费欧美日韩国产三级电影| 成人欧美一区二区三区视频网页 | 亚洲高清不卡在线观看| 久久精品一二三| 欧美一区二区在线视频|