#include #include #include "IxPtyPano.h" #include "ZxBaseUtil.h" #include "ZxSubAxisX.h" #include "ZxSubAxisY.h" #include "nmObjLineMeasuringScaleTool.h" #include "ZxPlot.h" #include "ZxObjText.h" #include "nmObjLineMeasuringScale.h" #include "nmSingalCenter.h" ZX_DEFINE_DYNAMIC(nObjLineMeasuringScale, nmObjLineMeasuringScale) nmObjLineMeasuringScale::nmObjLineMeasuringScale() : nmObjLine("", NULL, NULL) { m_dLength = 0.0; m_sObjTag = "nObjLineMeasuringScale"; nmObjPoint::initFlags(); m_oDot = ZxDot(DTS_Circle, QColor(255, 165, 0), 0.5f, true); m_oPen = QPen(QBrush(QColor(0, 255, 164)), \ 0.5f, Qt::SolidLine); m_vecPoints.clear(); m_vecPoints << QPointF(0.f, 0.f) << QPointF(0.f, 0.f); loadTempl(); } nmObjLineMeasuringScale::nmObjLineMeasuringScale(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY) : nmObjLine(sName, pAxisX, pAxisY) { // 长度 m_dLength = 0.0; m_sObjTag = "nObjLineMeasuringScale"; nmObjPoint::initFlags(); m_oDot = ZxDot(DTS_Circle, QColor(255, 165, 0), 0.5f, true); m_oPen = QPen(QBrush(QColor(0, 255, 164)), \ 0.5f, Qt::SolidLine); m_vecPoints.clear(); m_vecPoints << QPointF(0.f, 0.f) << QPointF(0.f, 0.f); loadTempl(); } nmObjLineMeasuringScale::~nmObjLineMeasuringScale() { } void nmObjLineMeasuringScale::initTools() { m_pTool = new nmObjLineMeasuringScaleTool(); ZxObjBase::initTools(); } void nmObjLineMeasuringScale::initSubObjs() { nmObjPoint::initSubObjs(); setPointTag(tr("LineMeasuringScale")); } void nmObjLineMeasuringScale::paintBack(QPainter* painter, const ZxPaintParam& param) { Q_ASSERT(m_vecPoints.count() >= 2); QPointF pt1 = getPosOf(m_vecPoints[0]); QPointF pt2 = getPosOf(m_vecPoints[1]); QLineF oLine = QLineF(pt1, pt2); if(!this->drawLine(painter, oLine)) { return; } drawSelStates(painter, oLine); QPointF pt = oLine.pointAt(0.5f); drawWellPos(painter, pt); } bool nmObjLineMeasuringScale::drawSelStates(QPainter* painter, QLineF& oLine) { if(!isSelected()) { return true; } Q_ASSERT(NULL != m_pAxisX); Q_ASSERT(NULL != m_pAxisY); if(m_pAxisX->getRangeMin() == m_pAxisX->getRangeMax() || \ m_pAxisY->getRangeMin() == m_pAxisY->getRangeMax()) { return false; } painter->save(); QRectF rt = getOuterRect(); painter->setClipRect(rt); QPointF pt1 = oLine.p1(); QPointF pt2 = oLine.p2(); QVector pts; pts << pt1 << pt2; for(int i = 0; i < pts.count(); i++) { float w = 1.2f; QPointF pt = pts[i]; QRectF rect(pt.x() - w * 0.5f, pt.y() - w * 0.5f, w, w); if(m_nHitIndex == i && m_oHitOption == OHO_Point) { QBrush br(Qt::red); painter->fillRect(rect, br); } else { painter->setPen(QColor(0, 0, 128)); painter->drawRect(rect); } } painter->restore(); return true; } void nmObjLineMeasuringScale::afterCreated() { qDebug() << "after scale created"; // 计算长度 QPointF pt1 = m_vecPoints[0]; QPointF pt2 = m_vecPoints[1]; nmSingalCenter::getInstance()->emitSigMeasuringScale(pt1, pt2, (void*) this); } void nmObjLineMeasuringScale::onSerialize(ZxSerializer* ser) { nmObjLine::onSerialize(ser); ser->write("Length", m_dLength); } void nmObjLineMeasuringScale::onDeserialize(ZxSerializer* ser) { nmObjLine::onDeserialize(ser); ser->read("Length", m_dLength); } void nmObjLineMeasuringScale::onSaveTempl(ZxSerializer* ser) { nmObjLine::onSaveTempl(ser); ser->write("Length", m_dLength); } void nmObjLineMeasuringScale::onLoadTempl(ZxSerializer* ser) { nmObjLine::onLoadTempl(ser); ser->read("Length", m_dLength); } void nmObjLineMeasuringScale::fillPtyPano(IxPtyPano* sheet) { nmObjLine::fillPtyPano(sheet); //ZX_PROP("ObjLineFault.Name", getFaultName, setFaultName); //IxPtyItem* pProp = ZX_PROP("ObjLineFault.FlowModel", getFaultFlowModel, setFaultFlowModel); //if (NULL != pProp) { // QStringList listTags; // listTags << tr("Leaky") << tr("Composite Limit") << tr("Unknow"); // QList listIndexes; // listIndexes << 0 << 1 << 2; // pProp->getPtyPano(); // pProp->setOptions(listTags, listIndexes); //} //ZX_PROP("ObjLineFault.Leakage", getFaultLeakage, setFaultLeakage); }