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

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

?? mitab_tooldef.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/********************************************************************** * $Id: mitab_tooldef.cpp,v 1.6 2004/06/30 20:29:04 dmorissette Exp $ * * Name:     mitab_tooldef.cpp * Project:  MapInfo TAB Read/Write library * Language: C++ * Purpose:  Implementation of the TABToolDefTable class used to handle *           a dataset's table of 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_tooldef.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:06:54  daniel * Support pen width in points and V450 check * * Revision 1.3  2000/01/15 22:30:45  daniel * Switch to MIT/X-Consortium OpenSource license * * Revision 1.2  1999/10/18 15:39:21  daniel * Handle case of "no pen" or "no brush" in AddPen/BrushRef() * * Revision 1.1  1999/09/26 14:59:37  daniel * Implemented write support * **********************************************************************/#include "mitab.h"#include "mitab_utils.h"/*===================================================================== *                      class TABToolDefTable *====================================================================*//********************************************************************** *                   TABToolDefTable::TABToolDefTable() * * Constructor. **********************************************************************/TABToolDefTable::TABToolDefTable(){    m_papsPen = NULL;    m_papsBrush = NULL;    m_papsFont = NULL;    m_papsSymbol = NULL;    m_numPen = 0;    m_numBrushes = 0;    m_numFonts = 0;    m_numSymbols = 0;    m_numAllocatedPen = 0;    m_numAllocatedBrushes = 0;    m_numAllocatedFonts = 0;    m_numAllocatedSymbols = 0;}/********************************************************************** *                   TABToolDefTable::~TABToolDefTable() * * Destructor. **********************************************************************/TABToolDefTable::~TABToolDefTable(){    int i;    for(i=0; m_papsPen && i < m_numPen; i++)        CPLFree(m_papsPen[i]);    CPLFree(m_papsPen);    for(i=0; m_papsBrush && i < m_numBrushes; i++)        CPLFree(m_papsBrush[i]);    CPLFree(m_papsBrush);    for(i=0; m_papsFont && i < m_numFonts; i++)        CPLFree(m_papsFont[i]);    CPLFree(m_papsFont);    for(i=0; m_papsSymbol && i < m_numSymbols; i++)        CPLFree(m_papsSymbol[i]);    CPLFree(m_papsSymbol);}/********************************************************************** *                   TABToolDefTable::ReadAllToolDefs() * * Read all tool definition blocks until we reach the end of the chain. * This function will be called only once per dataset, after that * we keep all the tool definitions in memory. * * Returns 0 on success, -1 on error. **********************************************************************/int     TABToolDefTable::ReadAllToolDefs(TABMAPToolBlock *poBlock){    int nStatus = 0;    int nDefType;    /*-----------------------------------------------------------------     * Loop until we reach the end of the chain of blocks... we assume     * that the first block of data is already pre-loaded.      *----------------------------------------------------------------*/    while( ! poBlock->EndOfChain() )    {        nDefType = poBlock->ReadByte();        switch(nDefType)        {          case TABMAP_TOOL_PEN:       // PEN            if (m_numPen >= m_numAllocatedPen)            {                // Realloc array by blocks of 20 items                m_numAllocatedPen += 20;                m_papsPen = (TABPenDef**)CPLRealloc(m_papsPen,                                         m_numAllocatedPen*sizeof(TABPenDef*));            }            m_papsPen[m_numPen] = (TABPenDef*)CPLCalloc(1, sizeof(TABPenDef));            m_papsPen[m_numPen]->nRefCount  = poBlock->ReadInt32();            m_papsPen[m_numPen]->nPixelWidth = poBlock->ReadByte();            m_papsPen[m_numPen]->nLinePattern = poBlock->ReadByte();            m_papsPen[m_numPen]->nPointWidth = poBlock->ReadByte();            m_papsPen[m_numPen]->rgbColor   = poBlock->ReadByte()*256*256+                                              poBlock->ReadByte()*256 +                                               poBlock->ReadByte();            // Adjust width value...             // High bits for point width values > 255 are stored in the            // pixel width byte            if (m_papsPen[m_numPen]->nPixelWidth > 7)            {                m_papsPen[m_numPen]->nPointWidth +=                          (m_papsPen[m_numPen]->nPixelWidth-8)*0x100;                m_papsPen[m_numPen]->nPixelWidth = 1;            }            m_numPen++;            break;          case TABMAP_TOOL_BRUSH:       // BRUSH            if (m_numBrushes >= m_numAllocatedBrushes)            {                // Realloc array by blocks of 20 items                m_numAllocatedBrushes += 20;                m_papsBrush = (TABBrushDef**)CPLRealloc(m_papsBrush,                                  m_numAllocatedBrushes*sizeof(TABBrushDef*));            }            m_papsBrush[m_numBrushes] =                                (TABBrushDef*)CPLCalloc(1,sizeof(TABBrushDef));            m_papsBrush[m_numBrushes]->nRefCount    = poBlock->ReadInt32();            m_papsBrush[m_numBrushes]->nFillPattern = poBlock->ReadByte();            m_papsBrush[m_numBrushes]->bTransparentFill = poBlock->ReadByte();            m_papsBrush[m_numBrushes]->rgbFGColor =poBlock->ReadByte()*256*256+                                                   poBlock->ReadByte()*256 +                                                    poBlock->ReadByte();            m_papsBrush[m_numBrushes]->rgbBGColor =poBlock->ReadByte()*256*256+                                                   poBlock->ReadByte()*256 +                                                    poBlock->ReadByte();            m_numBrushes++;            break;          case TABMAP_TOOL_FONT:       // FONT NAME            if (m_numFonts >= m_numAllocatedFonts)            {                // Realloc array by blocks of 20 items                m_numAllocatedFonts += 20;                m_papsFont = (TABFontDef**)CPLRealloc(m_papsFont,                                  m_numAllocatedFonts*sizeof(TABFontDef*));            }            m_papsFont[m_numFonts] =                                (TABFontDef*)CPLCalloc(1,sizeof(TABFontDef));            m_papsFont[m_numFonts]->nRefCount    = poBlock->ReadInt32();            poBlock->ReadBytes(32, (GByte*)m_papsFont[m_numFonts]->szFontName);            m_papsFont[m_numFonts]->szFontName[32] = '\0';            m_numFonts++;            break;          case TABMAP_TOOL_SYMBOL:       // SYMBOL            if (m_numSymbols >= m_numAllocatedSymbols)            {                // Realloc array by blocks of 20 items                m_numAllocatedSymbols += 20;                m_papsSymbol = (TABSymbolDef**)CPLRealloc(m_papsSymbol,                                  m_numAllocatedSymbols*sizeof(TABSymbolDef*));            }            m_papsSymbol[m_numSymbols] =                                (TABSymbolDef*)CPLCalloc(1,sizeof(TABSymbolDef));            m_papsSymbol[m_numSymbols]->nRefCount    = poBlock->ReadInt32();            m_papsSymbol[m_numSymbols]->nSymbolNo    = poBlock->ReadInt16();            m_papsSymbol[m_numSymbols]->nPointSize   = poBlock->ReadInt16();            m_papsSymbol[m_numSymbols]->_nUnknownValue_ = poBlock->ReadByte();            m_papsSymbol[m_numSymbols]->rgbColor = poBlock->ReadByte()*256*256+                                                   poBlock->ReadByte()*256 +                                                    poBlock->ReadByte();            m_numSymbols++;            break;          default:            /* Unsupported Tool type!!! */            CPLError(CE_Failure, CPLE_NotSupported,                     "Unsupported drawing tool type: `%d'", nDefType);            nStatus = -1;        }        if (CPLGetLastErrorNo() != 0)        {            // An error happened reading this tool definition... stop now.            nStatus = -1;        }    }    return nStatus;}/********************************************************************** *                   TABToolDefTable::WriteAllToolDefs() * * Write all tool definition structures to the TABMAPToolBlock. * * Note that at the end of this call, poBlock->CommitToFile() will have * been called. * * Returns 0 on success, -1 on error. **********************************************************************/int     TABToolDefTable::WriteAllToolDefs(TABMAPToolBlock *poBlock){    int i, nStatus = 0;    /*-----------------------------------------------------------------     * Write Pen Defs     *----------------------------------------------------------------*/    for(i=0; nStatus == 0 && i< m_numPen; i++)    {        // The pen width is encoded over 2 bytes        GByte byPixelWidth=1, byPointWidth=0;        if (m_papsPen[i]->nPointWidth > 0)        {            byPointWidth = (GByte)(m_papsPen[i]->nPointWidth & 0xff);            if (m_papsPen[i]->nPointWidth > 255)                byPixelWidth = 8 + (GByte)(m_papsPen[i]->nPointWidth/0x100);        }        else            byPixelWidth = MIN(MAX(m_papsPen[i]->nPixelWidth, 1), 7);        poBlock->CheckAvailableSpace(TABMAP_TOOL_PEN);        poBlock->WriteByte(TABMAP_TOOL_PEN);  // Def Type = Pen        poBlock->WriteInt32(m_papsPen[i]->nRefCount);        poBlock->WriteByte(byPixelWidth);        poBlock->WriteByte(m_papsPen[i]->nLinePattern);        poBlock->WriteByte(byPointWidth);        poBlock->WriteByte(COLOR_R(m_papsPen[i]->rgbColor));        poBlock->WriteByte(COLOR_G(m_papsPen[i]->rgbColor));        poBlock->WriteByte(COLOR_B(m_papsPen[i]->rgbColor));        if (CPLGetLastErrorNo() != 0)        {            // An error happened reading this tool definition... stop now.            nStatus = -1;        }    }    /*-----------------------------------------------------------------     * Write Brush Defs     *----------------------------------------------------------------*/    for(i=0; nStatus == 0 && i< m_numBrushes; i++)    {        poBlock->CheckAvailableSpace(TABMAP_TOOL_BRUSH);        poBlock->WriteByte(TABMAP_TOOL_BRUSH);  // Def Type = Brush        poBlock->WriteInt32(m_papsBrush[i]->nRefCount);        poBlock->WriteByte(m_papsBrush[i]->nFillPattern);        poBlock->WriteByte(m_papsBrush[i]->bTransparentFill);        poBlock->WriteByte(COLOR_R(m_papsBrush[i]->rgbFGColor));        poBlock->WriteByte(COLOR_G(m_papsBrush[i]->rgbFGColor));        poBlock->WriteByte(COLOR_B(m_papsBrush[i]->rgbFGColor));        poBlock->WriteByte(COLOR_R(m_papsBrush[i]->rgbBGColor));        poBlock->WriteByte(COLOR_G(m_papsBrush[i]->rgbBGColor));        poBlock->WriteByte(COLOR_B(m_papsBrush[i]->rgbBGColor));        if (CPLGetLastErrorNo() != 0)        {            // An error happened reading this tool definition... stop now.            nStatus = -1;        }    }    /*-----------------------------------------------------------------     * Write Font Defs     *----------------------------------------------------------------*/    for(i=0; nStatus == 0 && i< m_numFonts; i++)    {        poBlock->CheckAvailableSpace(TABMAP_TOOL_FONT);        poBlock->WriteByte(TABMAP_TOOL_FONT);  // Def Type = Font name        poBlock->WriteInt32(m_papsFont[i]->nRefCount);        poBlock->WriteBytes(32, (GByte*)m_papsFont[i]->szFontName);        if (CPLGetLastErrorNo() != 0)        {            // An error happened reading this tool definition... stop now.            nStatus = -1;        }    }    /*-----------------------------------------------------------------     * Write Symbol Defs     *----------------------------------------------------------------*/    for(i=0; nStatus == 0 && i< m_numSymbols; i++)    {        poBlock->CheckAvailableSpace(TABMAP_TOOL_SYMBOL);        poBlock->WriteByte(TABMAP_TOOL_SYMBOL);  // Def Type = Symbol        poBlock->WriteInt32(m_papsSymbol[i]->nRefCount);        poBlock->WriteInt16(m_papsSymbol[i]->nSymbolNo);        poBlock->WriteInt16(m_papsSymbol[i]->nPointSize);        poBlock->WriteByte(m_papsSymbol[i]->_nUnknownValue_);        poBlock->WriteByte(COLOR_R(m_papsSymbol[i]->rgbColor));        poBlock->WriteByte(COLOR_G(m_papsSymbol[i]->rgbColor));        poBlock->WriteByte(COLOR_B(m_papsSymbol[i]->rgbColor));        if (CPLGetLastErrorNo() != 0)        {            // An error happened reading this tool definition... stop now.            nStatus = -1;        }    }    if (nStatus == 0)        nStatus = poBlock->CommitToFile();    return nStatus;}/********************************************************************** *                   TABToolDefTable::GetNumPen() * * Return the number of valid pen indexes for this .MAP file

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷国产精品久久包臀| 久久99精品久久久| 国产精品二区一区二区aⅴ污介绍| 8x8x8国产精品| 91精品国产免费久久综合| 日韩欧美高清一区| 国产午夜亚洲精品午夜鲁丝片| 国产亚洲一区字幕| 亚洲丝袜自拍清纯另类| 亚洲女与黑人做爰| 人人精品人人爱| 国产成人av资源| 欧美在线观看一二区| 91精品中文字幕一区二区三区 | 91久久精品午夜一区二区| 丰满白嫩尤物一区二区| 91久久精品国产91性色tv| 在线不卡欧美精品一区二区三区| 69久久夜色精品国产69蝌蚪网| 久久久久久**毛片大全| 一区2区3区在线看| 国产精品一区二区三区四区| 91蜜桃在线观看| 亚洲男人天堂一区| 日本一区二区高清| 色哟哟一区二区三区| 日韩视频中午一区| 丝袜美腿亚洲综合| 4438亚洲最大| 天涯成人国产亚洲精品一区av| 不卡视频一二三四| 国产网站一区二区| 国产精品自拍一区| 精品国产欧美一区二区| 国产精品日产欧美久久久久| 五月天久久比比资源色| 欧美三级中文字幕在线观看| 亚洲码国产岛国毛片在线| 色综合天天视频在线观看| 国产精品国产馆在线真实露脸| 国产v综合v亚洲欧| 中文字幕巨乱亚洲| 95精品视频在线| 日韩毛片高清在线播放| 色综合一个色综合亚洲| 国产精品成人在线观看| 91亚洲精品久久久蜜桃| 亚洲网友自拍偷拍| 精品国产一区二区三区久久影院| 久久99精品一区二区三区| 精品欧美一区二区久久| 成人在线视频首页| 婷婷成人激情在线网| 精品国产91洋老外米糕| 99久久免费视频.com| 日本欧美一区二区| 欧美激情一区二区在线| 99久久精品99国产精品| 日韩精品视频网站| 欧美激情在线观看视频免费| 在线观看av一区二区| 韩国女主播一区二区三区| 亚洲精品成人天堂一二三| 日韩一区二区精品在线观看| 97久久超碰国产精品电影| 日韩国产欧美三级| 亚洲精品国产a久久久久久| 日韩视频免费观看高清完整版 | 在线一区二区三区四区五区| 日本午夜一本久久久综合| 国产精品久久久久一区| 欧美国产精品v| 精品视频一区三区九区| 97se亚洲国产综合自在线观| 国产一区二区三区久久久 | 日韩天堂在线观看| 欧美日韩亚洲国产综合| 色综合久久久久综合体桃花网| 国产成人午夜精品5599| 国产一区二区三区四区五区入口 | 精品国产免费久久| 日韩一区二区电影在线| 3d成人动漫网站| 3d动漫精品啪啪一区二区竹菊| 欧美区视频在线观看| 4hu四虎永久在线影院成人| 欧美日韩dvd在线观看| 在线不卡的av| 精品国产1区2区3区| 国产日韩欧美精品电影三级在线| 久久精品视频一区二区三区| 久久无码av三级| 亚洲视频一二三| 日韩成人精品视频| 国产精品一区二区在线播放| 成人天堂资源www在线| 99久久精品免费精品国产| 91久久精品网| 精品久久国产老人久久综合| 久久久www成人免费无遮挡大片 | 99久久er热在这里只有精品15 | 日韩成人dvd| 成人av集中营| 日韩欧美中文字幕精品| 国产精品三级电影| 日韩电影免费在线| 91色视频在线| 日韩精品专区在线影院重磅| 国产精品国产三级国产普通话99| 亚洲国产视频直播| 国产精品99久久久久| 欧美日韩国产在线观看| 国产欧美日韩在线看| 欧美aaaaaa午夜精品| 色吊一区二区三区| 亚洲欧美国产毛片在线| 韩国三级电影一区二区| 欧美一区二区福利在线| 夜夜精品视频一区二区| 成人免费视频一区二区| 久久综合给合久久狠狠狠97色69| 亚洲第一福利视频在线| 在线观看日产精品| 亚洲二区在线视频| 欧美三级视频在线| 亚洲综合精品自拍| 色94色欧美sute亚洲线路一久| 国产色产综合色产在线视频 | 欧美成人bangbros| 久久国产精品72免费观看| 欧美亚一区二区| 91在线精品一区二区三区| 国产日韩亚洲欧美综合| 国产精品自产自拍| 国产精品成人免费精品自在线观看| 热久久一区二区| 精品sm捆绑视频| 成人app网站| 一区二区三区在线视频播放 | 国产欧美精品一区二区三区四区| 国产一区三区三区| 最新不卡av在线| 欧美三区在线观看| 国产精品一区不卡| 成人欧美一区二区三区1314| 欧美亚洲综合网| 韩国成人精品a∨在线观看| 亚洲精品视频在线观看网站| 欧美视频在线一区二区三区| 看国产成人h片视频| 国产精品高潮呻吟久久| 欧美色中文字幕| 成人涩涩免费视频| 麻豆成人久久精品二区三区红| 久久精品一二三| 在线播放日韩导航| 国产精品99久| 蜜臀久久久99精品久久久久久| 国产精品三级电影| 久久综合五月天婷婷伊人| 欧美三级蜜桃2在线观看| 97精品久久久午夜一区二区三区 | 日韩午夜激情av| 欧美日韩精品一区二区天天拍小说| 国产精品综合av一区二区国产馆| 亚洲一区二区影院| 亚洲精品成人少妇| 亚洲综合色网站| 一区二区三区精密机械公司| 国产精品久久三| 国产精品第一页第二页第三页| 7777精品伊人久久久大香线蕉的 | 久久精品人人做人人爽人人| 日韩精品专区在线影院重磅| 91精品视频网| 欧美美女网站色| 欧美一区二区福利在线| 欧美一区二区精品| 久久网站最新地址| 久久精品一区四区| 国产精品久久毛片av大全日韩| 中文字幕欧美日本乱码一线二线| 久久精品一区二区三区四区| 中文字幕一区不卡| 一卡二卡三卡日韩欧美| 欧美96一区二区免费视频| 激情综合亚洲精品| 91免费国产在线观看| 欧美网站一区二区| 久久婷婷色综合| 亚洲男人电影天堂| 韩日精品视频一区| 色就色 综合激情| 久久久激情视频| 日韩avvvv在线播放| 懂色一区二区三区免费观看| 色天天综合久久久久综合片| 欧美人狂配大交3d怪物一区| 久久久久国产一区二区三区四区 | 麻豆久久一区二区|