#ifndef CCSREPORT_H #define CCSREPORT_H #include #include "ccsbanddetail.h" #include "common_types.h" #include "ccsreport_global.h" namespace CCS_Report { //class CCSTable; //class CCS_COMPASSREPORT_EXPORT CCSReport:public QObject class CCS_COMPASSREPORT_EXPORT CCSReport:public QObject { Q_OBJECT Q_PROPERTY(QString version READ version WRITE setVersion ) Q_PROPERTY(QString description READ description WRITE setDescription) Q_PROPERTY(QString papersize READ papersize WRITE setPaperSize) // Q_PROPERTY(QMargins reportmargin READ reportmargin WRITE SetReportMargin) Q_PROPERTY(int marginleft READ marginleft WRITE setMarginLeft) Q_PROPERTY(int margintop READ margintop WRITE setMarginTop) Q_PROPERTY(int marginright READ marginright WRITE setMarginRight) Q_PROPERTY(int marginbottom READ marginbottom WRITE setMarginBottom) Q_PROPERTY(int borderleft READ borderleft WRITE setBorderLeft) Q_PROPERTY(int bordertop READ bordertop WRITE setBorderTop) Q_PROPERTY(int borderright READ borderright WRITE setBorderRight) Q_PROPERTY(int borderbottom READ borderbottom WRITE setBorderBottom) Q_PROPERTY(bool showborder READ showborder WRITE setShowBorder) //边框是否显示 Q_PROPERTY(QPen borderpen READ borderpen WRITE setBorderPen) Q_PROPERTY(QString waterpath READ waterpath WRITE SetWaterPath) Q_PROPERTY(QSize watersize READ watersize WRITE SetWaterSize) Q_PROPERTY(int wateropacity READ wateropacity WRITE SetWaterOpacity) Q_PROPERTY(int waterangle READ waterangle WRITE SetWaterAngle) Q_PROPERTY(int watershowtype READ watershowtype WRITE SetWaterShowType) Q_PROPERTY(QString waterinfo READ waterinfo WRITE SetWaterInfo) Q_PROPERTY(QFont defaultfont READ defaultfont WRITE SetDefaultFont) Q_PROPERTY(int waterposition READ waterposition WRITE SetWaterPosition) Q_PROPERTY(QString dirname READ dirname WRITE setDirName) Q_PROPERTY(bool hasdirectory READ hasdirectory WRITE setHasDirectory) //是否有目录 Q_PROPERTY(int numberstyle READ numberstyle WRITE setNumberStyle) Q_PROPERTY(int dirmaxgrade READ dirmaxgrade WRITE setDirMaxGrade) Q_PROPERTY(int dirorient READ dirorient WRITE setDirOrient) //目录页方向 private: QString m_strVersion; //报告模板版本 QString m_strDescription; //报告描述 // QMargins m_Border; //页边框 显示用 QMarginsF m_marginHeader; //页眉的边距 QMarginsF m_marginFooter; //页脚边距 QMarginsF m_marginContent; //页边距 //像素计算后的 int m_iBorderLeft = 5; int m_iBorderTop = 5; int m_iBorderBottom = 5; int m_iBorderRight = 5; bool m_bShowBorder = false; //边框是否显示 QPen m_penBorder = QPen(); int m_iMarginLeft = 5; int m_iMarginTop = 5; int m_iMarginBottom = 5; int m_iMarginRight = 5; int m_currentorietation; int m_numberstyle; //页码类型 int m_iDirOrientation = 0; //目录页的方向 bool m_bHasDirectory = false; //是否有目录 =true 有 = false 无 int m_iDirMaxGrade = 5; //在目录中显示的最大级别 QString m_strDirName; //目录名称 QFont m_font; QSize m_sizePage; //页的正常宽度、高度 ,当遇到页的方向变化时,宽、高互换进行计算 QString m_strPaperSize = "A4"; //水印 QString m_strWaterPath; QSize m_sizeWater; int m_iWaterOpacity; int m_iWaterAngle; //逆时针角度 int m_iWaterShowType; //居中、平铺 QString m_strWaterInfo; QFont m_defaultfont; int m_iPosition; //水印叠加位置 =0 图层之下 =1 图层之上 假设只有2层 public: CCSReport(); ~ CCSReport(); void CCSReport::itemClone(CCSReport* report); int marginleft() const { return m_iMarginLeft; } int margintop() const { return m_iMarginTop; } int marginright() const { return m_iMarginRight; } int marginbottom() const { return m_iMarginBottom; } void setMarginLeft(int margin) { m_iMarginLeft = margin; } void setMarginTop(int margin) { m_iMarginTop= margin; } void setMarginRight(int margin) { m_iMarginRight = margin; } void setMarginBottom(int margin) { m_iMarginBottom = margin; } void setMargin(const int &left,const int &top,const int &right,const int &bottom) { m_iMarginLeft = left; m_iMarginRight = right; m_iMarginBottom = bottom; m_iMarginTop = top; } void setMargin(const QMargins& margin) { m_iMarginLeft = margin.left(); m_iMarginRight = margin.right(); m_iMarginBottom = margin.bottom(); m_iMarginTop = margin.top(); } QMargins margins() const { return QMargins(m_iMarginLeft,m_iMarginTop,m_iMarginRight,m_iMarginBottom); } QString papersize() const { return m_strPaperSize; } void setPaperSize(const QString& size) { m_strPaperSize = size; } QSize pagesize() const { return m_sizePage; } void SetPageSize(const QSize& size) { m_sizePage = size; #ifdef Report_LOG QLOG_INFO() < T* band() { return findChild(QString(), Qt::FindDirectChildrenOnly); } CCS_Report::CCSBandHeader* header() { return findChild(QString(),Qt::FindDirectChildrenOnly); } CCS_Report::CCSBandFooter* footer() { return findChild(QString(),Qt::FindDirectChildrenOnly); } CCS_Report::CCSBandAppendix* appendix() { return findChild(QString(),Qt::FindDirectChildrenOnly); } CCS_Report::CCSBandDirectory* directory() { return findChild(QString(),Qt::FindDirectChildrenOnly); } CCS_Report::CCSBandCover* cover() { return findChild(QString(),Qt::FindDirectChildrenOnly); } CCS_Report::CCSBandWater* water() { return findChild(QString(), Qt::FindDirectChildrenOnly); } CCS_Report::CCSBandContent* content() { return findChild(QString(),Qt::FindDirectChildrenOnly); } public: void BindData(); void PreHandleMargin(int width,int height); QSize GetPageSize(CCSReportType::OrientationFlag orient); qreal GetItemWidth(CCSReportType::OrientationFlag orient,qreal& itemleft,qreal itemright); //根据百分比,得出在页中的实际宽度 // void SetTableMargin(CCSTable* table,CCSReportType::OrientationFlag orient); QMarginsF GetPixelMargin(const QMargins& margin,QSize sizePixel); QImage CreateWaterMask(); ReportSelectedTree* getReportTree(); void getReportSubTree(CCSTableInterface* pTable,ReportSelectedTree*& tree, int& currentGrade); void setReportTree(ReportSelectedTree* tree); void upgradeTemplate(QString strVer = QString()); void upgradeTemplate(QObject* object,QString strVer = QString()); }; } #endif // CCSREPORT_H