logplus/logPlus/GeoIndicatorGenerator.h

62 lines
2.0 KiB
C++

#ifndef GEOINDICATORGENERATOR_H
#define GEOINDICATORGENERATOR_H
#include <qgraphicsscene.h>
#include <QXmlStreamReader>
#include <QPainter>
class GeoIndicatorGenerator
{
public:
explicit GeoIndicatorGenerator();
~GeoIndicatorGenerator();
/*Give scene items
attr:
Geo name
scene
*/
/*
符号库名称
符号名称
*QPainter
绘制区域qrectf
是否绘制单行
是否横向拉伸
是否平躺
一厘米对应的像素个数
背景色
*/
float seleGeo(QString, QString, QPainter*, QRectF rect, bool, bool, bool, float, QColor);
private:
bool initGeoInf(QString, int);
float * getWH(QXmlStreamReader*);
void calcLNum(float*, QRectF, int* p, bool);
bool FindGeoName(QString, QXmlStreamReader*);
std::map<QString, int> libMap; //符号库映射
std::map<QString, int> nameMap; //符号名称映射
std::map<QString, int> lineType; //分隔线映射
std::map<QString, int> SymbolType; //纵向拉伸映射
std::map<QString, int> reverseType; //反向绘制映射
std::map<QString, int> fillType; //填充绘制映射
std::map<QString, int> ifGeoHeight; //是否使用标准符号高度
void PolylinePainter( QXmlStreamReader*, QPainter*, int*, float*, bool, bool, bool);
void LinePainter( QXmlStreamReader*, QPainter*, int*, float*, bool, bool, bool);
void CirclePainter( QXmlStreamReader*, QPainter*, int*, float*, bool, bool, bool);
void TextPainter( QXmlStreamReader*, QPainter*, int*, float*, bool, bool, bool);
void ArcPainter( QXmlStreamReader*, QPainter*, int*, float*, bool, bool, bool);
void PolygonPainter( QXmlStreamReader*, QPainter*, int*, float*, bool, bool, bool);
private:
QString lines[3]; //xml文本信息
QString tempLine; //缓存近期xml信息
QRectF m_Rect;
float mm; //毫米对应像素量
QStringList libStr;
float h_strechRate; //纵向拉伸比例
//QXmlStreamReader *reader;
};
#endif