00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 #include "jaus/extras/video/reportimage.h" 00041 00042 using namespace JAUS; 00043 00044 00053 ReportImage::ReportImage(const Address& dest, 00054 const Address& src) : Message(REPORT_IMAGE, dest, src) 00055 { 00056 mCameraID = 0; 00057 mFormat = Image::RAW; 00058 mFrameNumber = 0; 00059 } 00060 00061 00067 ReportImage::ReportImage(const ReportImage& message) : Message(REPORT_IMAGE) 00068 { 00069 mCameraID = 0; 00070 mFormat = Image::RAW; 00071 mFrameNumber = 0; 00072 *this = message; 00073 } 00074 00075 00081 ReportImage::~ReportImage() 00082 { 00083 00084 } 00085 00086 00098 int ReportImage::WriteMessageBody(Packet& packet) const 00099 { 00100 int total = 0; 00101 int expected = BYTE_SIZE*2 + UINT_SIZE*2 + mImage.Length(); 00102 00103 total += packet.WriteByte(mCameraID); 00104 total += packet.Write(mFrameNumber); 00105 total += packet.WriteByte((Byte)mFormat); 00106 total += packet.Write(mImage.Length()); 00107 total += packet.Write(mImage); 00108 00109 return total == expected ? total : -1; 00110 } 00111 00112 00124 int ReportImage::ReadMessageBody(const Packet& packet) 00125 { 00126 int total = 0; 00127 int expected = BYTE_SIZE*2 + UINT_SIZE*2; 00128 unsigned int length = 0; 00129 00130 total += packet.Read(mCameraID); 00131 total += packet.Read(mFrameNumber); 00132 total += packet.Read((Byte &)mFormat); 00133 total += packet.Read(length); 00134 00135 if(length > 0) 00136 { 00137 total += packet.Read(mImage, length); 00138 expected += length; 00139 } 00140 00141 return total == expected ? total : -1; 00142 } 00143 00144 00150 void ReportImage::ClearMessageBody() 00151 { 00152 mFormat = Image::RAW; 00153 mCameraID = 0; 00154 mFrameNumber = 0; 00155 mImage.Clear(); 00156 } 00157 00158 00165 bool ReportImage::IsLargeDataSet(const unsigned int maxPayloadSize) const 00166 { 00167 unsigned int size = BYTE_SIZE + UINT_SIZE + mImage.Length(); 00168 return size > maxPayloadSize; 00169 } 00170 00171 00177 ReportImage& ReportImage::operator =(const ReportImage& message) 00178 { 00179 if(this != &message) 00180 { 00181 CopyHeaderData(&message); 00182 mCameraID = message.mCameraID; 00183 mFrameNumber = message.mFrameNumber; 00184 mFormat = message.mFormat; 00185 mImage = message.mImage; 00186 } 00187 return *this; 00188 } 00189 00190 00191 /* End of File */