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

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

?? mitab_maptoolblock.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/********************************************************************** * $Id: mitab_maptoolblock.cpp,v 1.6 2004/06/30 20:29:04 dmorissette Exp $ * * Name:     mitab_maptoollock.cpp * Project:  MapInfo TAB Read/Write library * Language: C++ * Purpose:  Implementation of the TABMAPToolBlock class used to handle *           reading/writing of the .MAP files' drawing tool blocks * Author:   Daniel Morissette, dmorissette@dmsolutions.ca * ********************************************************************** * Copyright (c) 1999, 2000, 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: mitab_maptoolblock.cpp,v $ * Revision 1.6  2004/06/30 20:29:04  dmorissette * Fixed refs to old address danmo@videotron.ca * * Revision 1.5  2000/11/15 04:13:50  daniel * Fixed writing of TABMAPToolBlock to allocate a new block when full * * Revision 1.4  2000/02/28 17:03:30  daniel * Changed TABMAPBlockManager to TABBinBlockManager * * Revision 1.3  2000/01/15 22:30:44  daniel * Switch to MIT/X-Consortium OpenSource license * * Revision 1.2  1999/09/26 14:59:37  daniel * Implemented write support * * Revision 1.1  1999/09/16 02:39:17  daniel * Completed read support for most feature types * **********************************************************************/#include "mitab.h"/*===================================================================== *                      class TABMAPToolBlock *====================================================================*/#define MAP_TOOL_HEADER_SIZE   8/********************************************************************** *                   TABMAPToolBlock::TABMAPToolBlock() * * Constructor. **********************************************************************/TABMAPToolBlock::TABMAPToolBlock(TABAccess eAccessMode /*= TABRead*/):    TABRawBinBlock(eAccessMode, TRUE){    m_nNextToolBlock = m_numDataBytes = 0;    m_numBlocksInChain = 1;  // Current block counts as 1     m_poBlockManagerRef = NULL;}/********************************************************************** *                   TABMAPToolBlock::~TABMAPToolBlock() * * Destructor. **********************************************************************/TABMAPToolBlock::~TABMAPToolBlock(){   }/********************************************************************** *                   TABMAPToolBlock::EndOfChain() * * Return TRUE if we reached the end of the last block in the chain * TABMAPToolBlocks, or FALSE if there is still data to be read from  * this chain. **********************************************************************/GBool TABMAPToolBlock::EndOfChain(){   if (m_pabyBuf &&        (m_nCurPos < (m_numDataBytes+MAP_TOOL_HEADER_SIZE) ||         m_nNextToolBlock > 0 ) )   {       return FALSE;  // There is still data to be read.   }   return TRUE;}/********************************************************************** *                   TABMAPToolBlock::InitBlockFromData() * * Perform some initialization on the block after its binary data has * been set or changed (or loaded from a file). * * Returns 0 if succesful or -1 if an error happened, in which case  * CPLError() will have been called. **********************************************************************/int     TABMAPToolBlock::InitBlockFromData(GByte *pabyBuf, int nSize,                                          GBool bMakeCopy /* = TRUE */,                                         FILE *fpSrc /* = NULL */,                                          int nOffset /* = 0 */){    int nStatus;    /*-----------------------------------------------------------------     * First of all, we must call the base class' InitBlockFromData()     *----------------------------------------------------------------*/    nStatus = TABRawBinBlock::InitBlockFromData(pabyBuf, nSize, bMakeCopy,                                            fpSrc, nOffset);    if (nStatus != 0)           return nStatus;    /*-----------------------------------------------------------------     * Validate block type     *----------------------------------------------------------------*/    if (m_nBlockType != TABMAP_TOOL_BLOCK)    {        CPLError(CE_Failure, CPLE_FileIO,                 "InitBlockFromData(): Invalid Block Type: got %d expected %d",                 m_nBlockType, TABMAP_TOOL_BLOCK);        CPLFree(m_pabyBuf);        m_pabyBuf = NULL;        return -1;    }    /*-----------------------------------------------------------------     * Init member variables     *----------------------------------------------------------------*/    GotoByteInBlock(0x002);    m_numDataBytes = ReadInt16();       /* Excluding 8 bytes header */    m_nNextToolBlock = ReadInt32();    /*-----------------------------------------------------------------     * The read ptr is now located at the beginning of the data part.     *----------------------------------------------------------------*/    GotoByteInBlock(MAP_TOOL_HEADER_SIZE);    return 0;}/********************************************************************** *                   TABMAPToolBlock::CommitToFile() * * Commit the current state of the binary block to the file to which  * it has been previously attached. * * This method makes sure all values are properly set in the map object * block header and then calls TABRawBinBlock::CommitToFile() to do * the actual writing to disk. * * Returns 0 if succesful or -1 if an error happened, in which case  * CPLError() will have been called. **********************************************************************/int     TABMAPToolBlock::CommitToFile(){    int nStatus = 0;    if ( m_pabyBuf == NULL )    {        CPLError(CE_Failure, CPLE_AssertionFailed,                  "CommitToFile(): Block has not been initialized yet!");        return -1;    }    /*-----------------------------------------------------------------     * Make sure 8 bytes block header is up to date.     *----------------------------------------------------------------*/    GotoByteInBlock(0x000);    WriteInt16(TABMAP_TOOL_BLOCK);    // Block type code    WriteInt16(m_nSizeUsed - MAP_TOOL_HEADER_SIZE); // num. bytes used    WriteInt32(m_nNextToolBlock);    nStatus = CPLGetLastErrorNo();    /*-----------------------------------------------------------------     * OK, call the base class to write the block to disk.     *----------------------------------------------------------------*/    if (nStatus == 0)        nStatus = TABRawBinBlock::CommitToFile();    return nStatus;}/********************************************************************** *                   TABMAPToolBlock::InitNewBlock() * * Initialize a newly created block so that it knows to which file it * is attached, its block size, etc . and then perform any specific  * initialization for this block type, including writing a default  * block header, etc. and leave the block ready to receive data. * * This is an alternative to calling ReadFromFile() or InitBlockFromData() * that puts the block in a stable state without loading any initial * data in it. * * Returns 0 if succesful or -1 if an error happened, in which case  * CPLError() will have been called. **********************************************************************/int     TABMAPToolBlock::InitNewBlock(FILE *fpSrc, int nBlockSize, 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区在线观看视频 | 久久亚洲综合av| 99久久精品国产麻豆演员表| 丝袜国产日韩另类美女| 欧美国产精品v| 欧美电影免费观看高清完整版在线观看| zzijzzij亚洲日本少妇熟睡| 另类小说综合欧美亚洲| 一区二区三区欧美亚洲| 国产亚洲女人久久久久毛片| 91精品在线免费| 日本精品一级二级| 国产99久久久国产精品潘金网站| 日韩国产欧美视频| 亚洲综合av网| 亚洲图片你懂的| 国产欧美日韩综合| 精品成人免费观看| 日韩视频一区在线观看| 欧美精品aⅴ在线视频| 日本福利一区二区| 色综合天天综合狠狠| 国产精品一卡二卡| 国产一区二区影院| 精品一区二区三区欧美| 天堂影院一区二区| 亚洲国产精品影院| 亚洲综合丁香婷婷六月香| 最新不卡av在线| 国产精品美女一区二区| 久久久亚洲欧洲日产国码αv| 欧美一卡二卡在线观看| 欧美日韩三级视频| 欧美性大战久久久久久久蜜臀| 91亚洲精品久久久蜜桃| bt欧美亚洲午夜电影天堂| 成人综合日日夜夜| 成人精品小蝌蚪| 99精品国产热久久91蜜凸| 91精品国产日韩91久久久久久| 欧美日本免费一区二区三区| 欧美午夜影院一区| 欧美乱熟臀69xxxxxx| 欧美一区二区三区在线| 日韩美女一区二区三区| 精品国产区一区| 久久久精品天堂| 国产清纯白嫩初高生在线观看91 | 国产麻豆精品在线| 国产成人免费在线视频| 成人性生交大片| 99久久精品国产一区| 91视频你懂的| 欧美男生操女生| 欧美电视剧免费观看| 久久一区二区视频| 国产精品高潮呻吟久久| 亚洲美女免费在线| 日韩av二区在线播放| 另类小说图片综合网| 国产伦精品一区二区三区免费迷| 国产91精品精华液一区二区三区 | 国产欧美一区二区三区鸳鸯浴 | 日韩一级片在线播放| 精品99一区二区三区| 国产精品久久久久久久久快鸭| 亚洲精品美国一| 蜜臀国产一区二区三区在线播放| 国产精品77777| 色哟哟一区二区在线观看| 欧美一区二区免费| 国产精品情趣视频| 亚洲国产综合人成综合网站| 久久av老司机精品网站导航| 91麻豆精品国产自产在线观看一区| 91精品国产欧美一区二区18| 亚洲国产激情av| 亚洲午夜av在线| 国产大片一区二区| 欧美日韩夫妻久久| 国产欧美一区二区三区鸳鸯浴| 一区二区三区在线影院| 久草这里只有精品视频| 91无套直看片红桃| 欧美不卡视频一区| 亚洲激情网站免费观看| 国产一区二区三区日韩| 欧美无乱码久久久免费午夜一区| 亚洲精品在线一区二区| 一区二区三区在线高清| 国产精品 欧美精品| 欧美美女bb生活片| 中文字幕中文字幕一区二区| 奇米精品一区二区三区四区 | 精品剧情在线观看| 亚洲综合999| 成人丝袜高跟foot| 欧美一级高清大全免费观看| 亚洲三级电影网站| 国产福利视频一区二区三区| 777午夜精品视频在线播放| 亚洲丝袜自拍清纯另类| 国产精品12区| 欧美成人综合网站| 亚洲国产你懂的| 色综合中文综合网| 亚洲成av人片| 91免费版在线看| 国产精品欧美久久久久一区二区 | 国产成人精品1024| 欧美草草影院在线视频| 香蕉av福利精品导航| 99久久99久久综合| 久久久久久久久久看片| 麻豆精品视频在线观看| 欧美日韩精品专区| 一区二区三区中文字幕电影| av男人天堂一区| 国产人伦精品一区二区| 久久99精品久久久| 国产精品看片你懂得| 国产精品123| 久久久久久久久一| 国产自产高清不卡| 精品国产91亚洲一区二区三区婷婷| 五月天精品一区二区三区| 91成人在线观看喷潮| 亚洲精品视频在线| 91久久精品午夜一区二区| 亚洲精品久久久蜜桃| 色呦呦国产精品| 洋洋av久久久久久久一区| 在线看国产日韩| 亚洲精品日韩专区silk| 色噜噜狠狠成人网p站| 亚洲女人的天堂| 在线一区二区三区四区| 一区二区三区四区亚洲| 日本高清免费不卡视频| 亚洲一级不卡视频| 欧美久久久久久久久中文字幕| 午夜电影久久久| 91精品久久久久久久久99蜜臂 | 91蜜桃传媒精品久久久一区二区| 国产精品久久久久久久第一福利| 国产91富婆露脸刺激对白| 国产精品美日韩| 欧洲人成人精品| 日本不卡一区二区三区高清视频| 日韩免费福利电影在线观看| 国精产品一区一区三区mba桃花| 国产午夜精品久久久久久久 | 不卡一区在线观看| 亚洲欧美综合色| 欧美日韩在线一区二区| 青青国产91久久久久久| 久久综合色婷婷| 国产传媒一区在线| 99久久久精品| 性久久久久久久久| 日韩欧美色综合| www.成人网.com| 视频一区免费在线观看| 日韩精品一区二| 成人av午夜电影| 午夜精品国产更新| 久久久精品国产免大香伊| 97精品电影院| 六月丁香综合在线视频| 国产精品伦理一区二区| 欧美日韩一二三区| 国产精品一区二区黑丝| 亚洲一区二区三区国产| 欧美精品一区二区三区视频| www.日本不卡| 美女脱光内衣内裤视频久久网站 | 欧美videossexotv100| proumb性欧美在线观看| 亚洲成a人在线观看| 国产欧美精品区一区二区三区 | 免费成人在线影院| 国产欧美精品一区二区三区四区| 欧美日韩三级在线| 国产成人精品aa毛片| 日韩国产精品久久久久久亚洲| 欧美激情一二三区| 欧美一级精品在线| 一本到不卡精品视频在线观看 | 欧美日韩亚洲综合在线| 国产精品996| 日韩成人免费看| 亚洲欧美日韩一区二区三区在线观看 | 狠狠久久亚洲欧美| 一二三四社区欧美黄| 久久久www成人免费毛片麻豆| 一本色道综合亚洲| 国产精品1区2区| 日韩激情在线观看| 亚洲黄色av一区| 国产日韩av一区二区|