⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mitab_tooldef.cpp

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 **********************************************************************/int     TABToolDefTable::GetNumPen(){    return m_numPen;}/********************************************************************** *                   TABToolDefTable::GetPenDefRef() * * Return a reference to the specified Pen tool definition, or NULL if * specified index is invalid. * * Note that nIndex is a 1-based index.  A value of 0 indicates "none"  * in MapInfo. **********************************************************************/TABPenDef *TABToolDefTable::GetPenDefRef(int nIndex){    if (nIndex >0 && nIndex <= m_numPen)        return m_papsPen[nIndex-1];    return NULL;}/********************************************************************** *                   TABToolDefTable::AddPenDefRef() * * Either create a new PenDefRef or add a reference to an existing one. * * Return the pen index that has been attributed to this Pen tool  * definition, or -1 if something went wrong * * Note that nIndex is a 1-based index.  A value of 0 indicates "none"  * in MapInfo. **********************************************************************/int TABToolDefTable::AddPenDefRef(TABPenDef *poNewPenDef){    int i, nNewPenIndex = 0;    TABPenDef *poDef;    if (poNewPenDef == NULL)        return -1;    /*-----------------------------------------------------------------     * Check for "none" case: pattern = 0 (pattern 0 does not exist!)     *----------------------------------------------------------------*/    if (poNewPenDef->nLinePattern < 1)        return 0;    /*-----------------------------------------------------------------     * Start by searching the list of existing pens     *----------------------------------------------------------------*/    for (i=0; nNewPenIndex == 0 && i<m_numPen; i++)    {        poDef = m_papsPen[i];        if (poDef->nPixelWidth == poNewPenDef->nPixelWidth &&            poDef->nLinePattern == poNewPenDef->nLinePattern &&            poDef->nPointWidth == poNewPenDef->nPointWidth &&            poDef->rgbColor == poNewPenDef->rgbColor)        {            nNewPenIndex = i+1; // Fount it!            poDef->nRefCount++;        }                   }    /*-----------------------------------------------------------------     * OK, we did not find a match, then create a new entry     *----------------------------------------------------------------*/    if (nNewPenIndex == 0)    {        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] = *poNewPenDef;        m_papsPen[m_numPen]->nRefCount = 1;        nNewPenIndex = ++m_numPen;    }    return nNewPenIndex;}/********************************************************************** *                   TABToolDefTable::GetNumBrushes() * * Return the number of valid Brush indexes for this .MAP file **********************************************************************/int     TABToolDefTable::GetNumBrushes(){    return m_numBrushes;}/********************************************************************** *                   TABToolDefTable::GetBrushDefRef() * * Return a reference to the specified Brush tool definition, or NULL if * specified index is invalid. * * Note that nIndex is a 1-based index.  A value of 0 indicates "none"  * in MapInfo. **********************************************************************/TABBrushDef *TABToolDefTable::GetBrushDefRef(int nIndex){    if (nIndex >0 && nIndex <= m_numBrushes)        return m_papsBrush[nIndex-1];    return NULL;}/********************************************************************** *                   TABToolDefTable::AddBrushDefRef() * * Either create a new BrushDefRef or add a reference to an existing one. * * Return the Brush index that has been attributed to this Brush tool  * definition, or -1 if something went wrong * * Note that nIndex is a 1-based index.  A value of 0 indicates "none"  * in MapInfo. **********************************************************************/int TABToolDefTable::AddBrushDefRef(TABBrushDef *poNewBrushDef){    int i, nNewBrushIndex = 0;    TABBrushDef *poDef;    if (poNewBrushDef == NULL)        return -1;    /*-----------------------------------------------------------------     * Check for "none" case: pattern = 0 (pattern 0 does not exist!)     *----------------------------------------------------------------*/    if (poNewBrushDef->nFillPattern < 1)        return 0;    /*-----------------------------------------------------------------     * Start by searching the list of existing Brushs     *----------------------------------------------------------------*/    for (i=0; nNewBrushIndex == 0 && i<m_numBrushes; i++)    {        poDef = m_papsBrush[i];        if (poDef->nFillPattern == poNewBrushDef->nFillPattern &&            poDef->bTransparentFill == poNewBrushDef->bTransparentFill &&            poDef->rgbFGColor == poNewBrushDef->rgbFGColor &&            poDef->rgbBGColor == poNewBrushDef->rgbBGColor)        {            nNewBrushIndex = i+1; // Fount it!            poDef->nRefCount++;        }                   }    /*-----------------------------------------------------------------     * OK, we did not find a match, then create a new entry     *----------------------------------------------------------------*/    if (nNewBrushIndex == 0)    {        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] = *poNewBrushDef;        m_papsBrush[m_numBrushes]->nRefCount = 1;        nNewBrushIndex = ++m_numBrushes;    }    return nNewBrushIndex;}/********************************************************************** *                   TABToolDefTable::GetNumFonts() * * Return the number of valid Font indexes for this .MAP file **********************************************************************/int     TABToolDefTable::GetNumFonts(){    return m_numFonts;}/********************************************************************** *                   TABToolDefTable::GetFontDefRef() * * Return a reference to the specified Font tool definition, or NULL if * specified index is invalid. * * Note that nIndex is a 1-based index.  A value of 0 indicates "none"  * in MapInfo. **********************************************************************/TABFontDef *TABToolDefTable::GetFontDefRef(int nIndex){    if (nIndex >0 && nIndex <= m_numFonts)        return m_papsFont[nIndex-1];    return NULL;}/********************************************************************** *                   TABToolDefTable::AddFontDefRef() * * Either create a new FontDefRef or add a reference to an existing one. * * Return the Font index that has been attributed to this Font tool  * definition, or -1 if something went wrong * * Note that nIndex is a 1-based index.  A value of 0 indicates "none"  * in MapInfo. **********************************************************************/int TABToolDefTable::AddFontDefRef(TABFontDef *poNewFontDef){    int i, nNewFontIndex = 0;    TABFontDef *poDef;    if (poNewFontDef == NULL)        return -1;    /*-----------------------------------------------------------------     * Start by searching the list of existing Fonts     *----------------------------------------------------------------*/    for (i=0; nNewFontIndex == 0 && i<m_numFonts; i++)    {        poDef = m_papsFont[i];        if (EQUAL(poDef->szFontName, poNewFontDef->szFontName))        {            nNewFontIndex = i+1; // Fount it!            poDef->nRefCount++;        }                   }    /*-----------------------------------------------------------------     * OK, we did not find a match, then create a new entry     *----------------------------------------------------------------*/    if (nNewFontIndex == 0)    {        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] = *poNewFontDef;        m_papsFont[m_numFonts]->nRefCount = 1;        nNewFontIndex = ++m_numFonts;    }    return nNewFontIndex;}/********************************************************************** *                   TABToolDefTable::GetNumSymbols() * * Return the number of valid Symbol indexes for this .MAP file **********************************************************************/int     TABToolDefTable::GetNumSymbols(){    return m_numSymbols;}/********************************************************************** *                   TABToolDefTable::GetSymbolDefRef() * * Return a reference to the specified Symbol tool definition, or NULL if * specified index is invalid. * * Note that nIndex is a 1-based index.  A value of 0 indicates "none"  * in MapInfo. **********************************************************************/TABSymbolDef *TABToolDefTable::GetSymbolDefRef(int nIndex){    if (nIndex >0 && nIndex <= m_numSymbols)        return m_papsSymbol[nIndex-1];    return NULL;}/********************************************************************** *                   TABToolDefTable::AddSymbolDefRef() * * Either create a new SymbolDefRef or add a reference to an existing one. * * Return the Symbol index that has been attributed to this Symbol tool  * definition, or -1 if something went wrong * * Note that nIndex is a 1-based index.  A value of 0 indicates "none"  * in MapInfo. **********************************************************************/int TABToolDefTable::AddSymbolDefRef(TABSymbolDef *poNewSymbolDef){    int i, nNewSymbolIndex = 0;    TABSymbolDef *poDef;    if (poNewSymbolDef == NULL)        return -1;    /*-----------------------------------------------------------------     * Start by searching the list of existing Symbols     *----------------------------------------------------------------*/    for (i=0; nNewSymbolIndex == 0 && i<m_numSymbols; i++)    {        poDef = m_papsSymbol[i];        if (poDef->nSymbolNo == poNewSymbolDef->nSymbolNo &&            poDef->nPointSize == poNewSymbolDef->nPointSize &&            poDef->_nUnknownValue_ == poNewSymbolDef->_nUnknownValue_ &&            poDef->rgbColor == poNewSymbolDef->rgbColor )        {            nNewSymbolIndex = i+1; // Fount it!            poDef->nRefCount++;        }                   }    /*-----------------------------------------------------------------     * OK, we did not find a match, then create a new entry     *----------------------------------------------------------------*/    if (nNewSymbolIndex == 0)    {        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] = *poNewSymbolDef;        m_papsSymbol[m_numSymbols]->nRefCount = 1;        nNewSymbolIndex = ++m_numSymbols;    }    return nNewSymbolIndex;}/********************************************************************** *                   TABToolDefTable::GetMinVersionNumber() * * Returns the minimum file version number that can accept all the * tool objects currently defined. * * Default is 300, and currently 450 can be returned if file contains * pen widths defined in points. **********************************************************************/int     TABToolDefTable::GetMinVersionNumber(){    int i, nVersion = 300;    /*-----------------------------------------------------------------     * Scan Pen Defs     *----------------------------------------------------------------*/    for(i=0; i< m_numPen; i++)    {        if (m_papsPen[i]->nPointWidth > 0 )        {            nVersion = MAX(nVersion, 450);  // Raise version to 450        }    }    return nVersion;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -