123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #include "ROI.h"
- #include "ROICircle.h"
- #include "ROICircularArc.h"
- #include "ROILine.h"
- #include "ROIRect1.h"
- #include"ROIRect2.h"
- #include "MyStream.h"
- using namespace HalconCpp;
- ROI::ROI()
- {
- numHandles = 0;
- activeHandleIdx = 0;
- roiType = ROIType::Point;
- operatorFlag = ROIOperation::None;
- }
- void ROI::setOperatorFlag(ROIOperation flag)
- {
- operatorFlag = flag;
- switch (operatorFlag)
- {
- case ROIOperation::Positive:
- flagLineStyle = HTuple();
- break;
- case ROIOperation::Negative:
- flagLineStyle = HTuple(8, 8);
- break;
- default:
- flagLineStyle = HTuple(1,1);
- break;
- }
- }
- void ROI::setTitle(QString title)
- {
- m_strTitle = title;
- }
- void ROI::setHandleWidth(int width)
- {
- handleWidth=width;
- }
- void ROI::save(QDataStream &dataStream)
- {
- int x = (int)operatorFlag;
- dataStream << x;
- dataStream << flagLineStyle;
- }
- void ROI::load(QDataStream &dataStream)
- {
- int x;
- dataStream >> x;
- dataStream >> flagLineStyle;
- operatorFlag = ROIOperation(x);
- }
- //#ifndef QT_NO_DATASTREAM
- QDataStream & operator<<(QDataStream &dataStream, ROI &roi)
- {
- dataStream << QString(roi.metaObject()->className());//将对象的类名写入流中
- roi.save(dataStream);
- return dataStream;
- }
- QDataStream & operator>>(QDataStream &dataStream, ROI **roi)
- {
- QString str;
- dataStream >> str;
- *roi = NULL;
- if (str ==QString("ROILine")) //根据类名字符串生成相应类的对象
- {
- *roi = new ROILine;
- (*roi)->load(dataStream);
- return dataStream;
- }
- if (str == QString("ROICircle"))
- {
- *roi = new ROICircle;
- (*roi)->load(dataStream);
- return dataStream;
- }
- if (str == QString("ROICircularArc"))
- {
- *roi = new ROICircularArc;
- (*roi)->load(dataStream);
- return dataStream;
- }
- if (str == QString("ROIRect1"))
- {
- *roi = new ROIRect1;
- (*roi)->load(dataStream);
- return dataStream;
- }
- if (str == QString("ROIRect2"))
- {
- *roi = new ROIRect2;
- (*roi)->load(dataStream);
- return dataStream;
- }
- if (str == QString("ROIPoint"))
- {
- *roi = new ROIPoint;
- (*roi)->load(dataStream);
- return dataStream;
- }
- return dataStream;
- }
- //#endif
|