📄 ogr_featurestyle.h
字号:
/****************************************************************************** * $Id: ogr_featurestyle.h,v 1.14 2006/12/13 18:53:29 dron Exp $ * * Project: OpenGIS Simple Features Reference Implementation * Purpose: Define of Feature Representation * Author: Stephane Villeneuve, stephane.v@videtron.ca * ****************************************************************************** * Copyright (c) 1999, Frank Warmerdam * * 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: ogr_featurestyle.h,v $ * Revision 1.14 2006/12/13 18:53:29 dron * Added OGRStyleTable::Clone() method. * * Revision 1.13 2006/12/12 17:14:29 dron * Fixed method names in OGRStyleVector interface. * * Revision 1.12 2006/11/16 18:57:24 dron * Make Parse() method private. * * Revision 1.11 2006/11/16 11:58:40 dron * In all classes: move data properties in private section. * * Revision 1.10 2006/10/09 13:01:23 dron * Added OGRSTypeBoolean type to the list of OGRSType types. * * Revision 1.9 2006/09/23 15:27:52 dron * Added new label styles: 'w', 'st', 'h', 'm:h', 'm:a', 'p:{10,11,12}'. * * Revision 1.8 2004/12/02 18:24:12 fwarmerdam * added support for fontname on symbol, per bug 684 * * Revision 1.7 2004/05/11 00:39:43 warmerda * make asStyle*[] using methods non-inline * * Revision 1.6 2002/06/25 14:47:31 warmerda * CPL_DLL export style api * * Revision 1.5 2001/03/17 01:43:53 warmerda * Don't leave in trailing comma in enum (as submitted by Dale). * * Revision 1.4 2001/01/19 21:10:47 warmerda * replaced tabs * * Revision 1.3 2000/12/07 03:42:37 danmo * REmoved stray comma in OGRSType enum defn * * Revision 1.2 2000/08/28 20:26:18 svillene * Add missing virtual ~() * * Revision 1.1 2000/08/18 21:26:01 svillene * OGR Representation * * */#ifndef OGR_FEATURESTYLE_INCLUDE#define OGR_FEATURESTYLE_INCLUDE#include "cpl_conv.h"class OGRFeature;typedef enum ogr_style_tool_class_id{ OGRSTCNone, OGRSTCPen, OGRSTCBrush, OGRSTCSymbol, OGRSTCLabel, OGRSTCVector} OGRSTClassId;typedef enum ogr_style_tool_units_id{ OGRSTUGround, OGRSTUPixel, OGRSTUPoints, OGRSTUMM, OGRSTUCM, OGRSTUInches} OGRSTUnitId;typedef enum ogr_style_tool_param_pen_id{ OGRSTPenColor = 0, OGRSTPenWidth, OGRSTPenPattern, OGRSTPenId, OGRSTPenPerOffset, OGRSTPenCap, OGRSTPenJoin, OGRSTPenPriority, OGRSTPenLast } OGRSTPenParam;typedef enum ogr_style_tool_param_brush_id{ OGRSTBrushFColor = 0, OGRSTBrushBColor, OGRSTBrushId, OGRSTBrushAngle, OGRSTBrushSize, OGRSTBrushDx, OGRSTBrushDy, OGRSTBrushPriority, OGRSTBrushLast } OGRSTBrushParam;typedef enum ogr_style_tool_param_symbol_id{ OGRSTSymbolId = 0, OGRSTSymbolAngle, OGRSTSymbolColor, OGRSTSymbolSize, OGRSTSymbolDx, OGRSTSymbolDy, OGRSTSymbolStep, OGRSTSymbolPerp, OGRSTSymbolOffset, OGRSTSymbolPriority, OGRSTSymbolFontName, OGRSTSymbolLast } OGRSTSymbolParam;typedef enum ogr_style_tool_param_label_id{ OGRSTLabelFontName = 0, OGRSTLabelSize, OGRSTLabelTextString, OGRSTLabelAngle, OGRSTLabelFColor, OGRSTLabelBColor, OGRSTLabelPlacement, OGRSTLabelAnchor, OGRSTLabelDx, OGRSTLabelDy, OGRSTLabelPerp, OGRSTLabelBold, OGRSTLabelItalic, OGRSTLabelUnderline, OGRSTLabelPriority, OGRSTLabelStrikeout, OGRSTLabelStretch, OGRSTLabelAdjHor, OGRSTLabelAdjVert, OGRSTLabelHColor, OGRSTLabelLast } OGRSTLabelParam;typedef enum ogr_style_tool_param_vector_id{ OGRSTVectorId = 0, OGRSTVectorNoCompress, OGRSTVectorSprain, OGRSTVectorNoSlope, OGRSTVectorMirroring, OGRSTVectorCentering, OGRSTVectorPriority, OGRSTVectorLast } OGRSTVectorParam;typedef enum ogr_style_type{ OGRSTypeString, OGRSTypeDouble, OGRSTypeInteger, OGRSTypeBoolean} OGRSType;typedef struct ogr_style_param{ int eParam; char *pszToken; GBool bGeoref; OGRSType eType;}OGRStyleParamId;typedef struct ogr_style_value{ char *pszValue; double dfValue; int nValue; // Used for both integer and boolean types GBool bValid; OGRSTUnitId eUnit;}OGRStyleValue;//Everytime a pszStyleString gived in parameter is NULL, // the StyleString defined in the Mgr will be use.class CPL_DLL OGRStyleTable{ private: char **m_papszStyleTable; public: OGRStyleTable(); ~OGRStyleTable(); GBool AddStyle(const char *pszName,const char *pszStyleString); GBool RemoveStyle(const char *pszName); GBool ModifyStyle(const char *pszName, const char *pszStyleString); GBool SaveStyleTable(const char *pszFilename); GBool LoadStyleTable(const char *pszFilename); const char *Find(const char *pszStyleString); GBool IsExist(const char *pszName); const char *GetStyleName(const char *pszName); void Print(FILE *fpOut); void Clear(); OGRStyleTable *Clone();};class OGRStyleTool;class CPL_DLL OGRStyleMgr{ private: OGRStyleTable *m_poDataSetStyleTable; char *m_pszStyleString; public: OGRStyleMgr(OGRStyleTable *poDataSetStyleTable = NULL); ~OGRStyleMgr(); GBool SetFeatureStyleString(OGRFeature *,const char *pszStyleString=NULL, GBool bNoMatching = FALSE); /*it will set in the gived feature the pszStyleString with the style or will set the style name found in dataset StyleTable (if bNoMatching == FALSE)*/ const char *InitFromFeature(OGRFeature *); GBool InitStyleString(const char *pszStyleString = NULL); const char *GetStyleName(const char *pszStyleString= NULL); const char *GetStyleByName(const char *pszStyleName); GBool AddStyle(const char *pszStyleName, const char *pszStyleString=NULL); const char *GetStyleString(OGRFeature * = NULL); GBool AddPart(OGRStyleTool *); GBool AddPart(const char *); int GetPartCount(const char *pszStyleString = NULL); OGRStyleTool *GetPart(int hPartId, const char *pszStyleString = NULL); /*It could have a reference counting processus for the OGRStyleTable, if needed */ OGRStyleTable *GetDataSetStyleTable(){return m_poDataSetStyleTable;} OGRStyleTool *CreateStyleToolFromStyleString(const char *pszStyleString);};class CPL_DLL OGRStyleTool{ private: GBool m_bModified; GBool m_bParsed; double m_dfScale; OGRSTUnitId m_eUnit; OGRSTClassId m_eClassId; char *m_pszStyleString; virtual GBool Parse() = 0; protected: GBool Parse(OGRStyleParamId* pasStyle, OGRStyleValue* pasValue, int nCount); public: OGRStyleTool(){} OGRStyleTool(OGRSTClassId eClassId); virtual ~OGRStyleTool(); GBool GetRGBFromString(const char *pszColor, int &nRed, int &nGreen, int &nBlue, int &nTransparence); int GetSpecificId(const char *pszId, const char *pszWanted); GBool IsStyleModified() {return m_bModified;} void StyleModified() {m_bModified = TRUE;} GBool IsStyleParsed() {return m_bParsed;} void StyleParsed() {m_bParsed = TRUE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -