#include "MyStream.h" void readHObject(QDataStream& readStream, HalconCpp::HObject& hObj) { using namespace HalconCpp; QByteArray data; readStream >> data; if (data.size() == 0) return; try { HSerializedItem item; item.CreateSerializedItemPtr(data.data(), data.size(), "true"); hObj.DeserializeObject(item); } catch (...) { } } void readHTuple(QDataStream& readStream, HalconCpp::HTuple& hDat) { using namespace HalconCpp; QByteArray data; readStream >> data; try { //int s = data.size(); //HSerializedItem item; //item.CreateSerializedItemPtr((void*)data.data(), (Hlong)data.size(), "true"); //DeserializeTuple(HTuple(item.GetHandle()), &hDat); HTuple hv_SerializedItemHandle1; CreateSerializedItemPtr((Hlong)data.data(), (Hlong)data.size(), "true", &hv_SerializedItemHandle1); DeserializeTuple(hv_SerializedItemHandle1, &hDat); } catch (...) { } } void readShapeModel(QDataStream& readStream, HalconCpp::HShapeModel& hModel) { using namespace HalconCpp; QByteArray data; readStream >> data; if (data.size() == 0) return; try { //int s = data.size(); HSerializedItem item; item.CreateSerializedItemPtr(data.data(), data.size(), "true"); hModel.DeserializeShapeModel(item); } catch (...) { } } void saveHObject(QDataStream& writeStream, const HalconCpp::HObject& hObj) { using namespace HalconCpp; QByteArray byteArray; if (hObj.IsInitialized()) { HSerializedItem item = hObj.SerializeObject(); Hlong size; char* data = (char*)item.GetSerializedItemPtr(&size); byteArray.resize(size); memcpy(byteArray.data(), data, size); } writeStream << byteArray; } void saveHTuple(QDataStream& writeStream, const HalconCpp::HTuple& hDat) { using namespace HalconCpp; QByteArray byteArray; HSerializedItem item = hDat.SerializeTuple(); Hlong size; char* data = (char*)item.GetSerializedItemPtr(&size); byteArray.resize(size); memcpy(byteArray.data(), data, size); writeStream << byteArray; } void saveShapeModel(QDataStream& writeStream, const HalconCpp::HShapeModel& hModel) { using namespace HalconCpp; QByteArray byteArray; if (hModel.IsInitialized()) { HSerializedItem item = hModel.SerializeShapeModel(); Hlong size; char* data = (char*)item.GetSerializedItemPtr(&size); byteArray.resize(size); memcpy(byteArray.data(), data, size); } writeStream << byteArray; } QDataStream& operator << (QDataStream& ar, HObject& hDat) { saveHObject(ar, hDat); return ar; } QDataStream& operator >> (QDataStream& ar, HObject& hDat) { readHObject(ar, hDat); return ar; } QDataStream& operator << (QDataStream& ar, HTuple& hDat) { saveHTuple(ar, hDat); return ar; } QDataStream& operator >> (QDataStream& ar, HTuple& hDat) { readHTuple(ar, hDat); return ar; } QDataStream& operator<<(QDataStream& dataStream, ROIController& roi) { roi.save(dataStream); return dataStream; } QDataStream& operator>>(QDataStream& dataStream, ROIController& roi) { roi.load(dataStream); return dataStream; }