diff --git a/prs/prs_display.cpp b/prs/prs_display.cpp index 29ed5961b..5ecb3ae7c 100644 --- a/prs/prs_display.cpp +++ b/prs/prs_display.cpp @@ -63,8 +63,8 @@ PRSDisplay::~PRSDisplay() { // Write data void PRSDisplay::WriteData(std::vector &vec) { // Set length - unsigned __int32 utemp = 4 + 4 + 4 + 2 + 2 + 2 + 1 + 1; - vec.resize(utemp+8); + unsigned __int32 size = 4 + 4 + 4 + 4 + 2 + 2 + 1 + 1; + vec.resize(size+8); size_t pos = 0; // Write block identifier @@ -73,47 +73,39 @@ void PRSDisplay::WriteData(std::vector &vec) { pos += 4; // Write block length - memcpy(&vec[pos],&utemp,4); + memcpy(&vec[pos],&size,4); pos += 4; // Write start time - utemp = start; - memcpy(&vec[pos],&utemp,4); + memcpy(&vec[pos],&start,4); pos += 4; // Write end time - utemp = end; - memcpy(&vec[pos],&utemp,4); + memcpy(&vec[pos],&end,4); pos += 4; // Write image identifier - utemp = id; - memcpy(&vec[pos],&utemp,4); + memcpy(&vec[pos],&id,4); pos += 4; // Write layer - __int16 shorttemp = layer; - memcpy(&vec[pos],&shorttemp,2); - pos += 2; + memcpy(&vec[pos],&layer,4); + pos += 4; // Write x - shorttemp = x; - memcpy(&vec[pos],&shorttemp,2); + memcpy(&vec[pos],&x,2); pos += 2; // Write y - shorttemp = y; - memcpy(&vec[pos],&shorttemp,2); + memcpy(&vec[pos],&y,2); pos += 2; // Write alpha multiplier - unsigned __int8 chartemp = alpha; - memcpy(&vec[pos],&chartemp,1); + memcpy(&vec[pos],&alpha,1); pos += 1; // Write blend mode - chartemp = blend; - memcpy(&vec[pos],&chartemp,1); + memcpy(&vec[pos],&blend,1); pos += 1; } @@ -121,4 +113,39 @@ void PRSDisplay::WriteData(std::vector &vec) { ///////////// // Read data void PRSDisplay::ReadData(std::vector &vec) { + // Set length + unsigned __int32 size = vec.size(); + size_t pos = 0; + + // Write start time + memcpy(&start,&vec[pos],4); + pos += 4; + + // Write end time + memcpy(&end,&vec[pos],4); + pos += 4; + + // Write image identifier + memcpy(&id,&vec[pos],4); + pos += 4; + + // Write layer + memcpy(&layer,&vec[pos],4); + pos += 4; + + // Write x + memcpy(&x,&vec[pos],2); + pos += 2; + + // Write y + memcpy(&y,&vec[pos],2); + pos += 2; + + // Write alpha multiplier + memcpy(&alpha,&vec[pos],1); + pos += 1; + + // Write blend mode + memcpy(&blend,&vec[pos],1); + pos += 1; } diff --git a/prs/prs_image.cpp b/prs/prs_image.cpp index 179b9e88f..07af2a160 100644 --- a/prs/prs_image.cpp +++ b/prs/prs_image.cpp @@ -64,8 +64,8 @@ PRSImage::~PRSImage() { // Write data void PRSImage::WriteData(std::vector &vec) { // Set length - unsigned __int32 utemp = 4 + 4 + 4 + dataLen; - vec.resize(utemp+8); + unsigned __int32 size = 4 + 4 + 4 + dataLen; + vec.resize(size+8); size_t pos = 0; // Write block identifier @@ -74,22 +74,19 @@ void PRSImage::WriteData(std::vector &vec) { pos += 4; // Write block length - memcpy(&vec[pos],&utemp,4); + memcpy(&vec[pos],&size,4); pos += 4; // Write image identifier - utemp = id; - memcpy(&vec[pos],&utemp,4); + memcpy(&vec[pos],&id,4); pos += 4; // Write image format - utemp = imageType; - memcpy(&vec[pos],&utemp,4); + memcpy(&vec[pos],&imageType,4); pos += 4; // Write data length - utemp = dataLen; - memcpy(&vec[pos],&utemp,4); + memcpy(&vec[pos],&dataLen,4); pos += 4; // Write data @@ -101,4 +98,23 @@ void PRSImage::WriteData(std::vector &vec) { ///////////// // Read data void PRSImage::ReadData(std::vector &vec) { + // Set length + unsigned __int32 size = vec.size(); + size_t pos = 0; + + // Read image identifier + memcpy(&id,&vec[pos],4); + pos += 4; + + // Write image format + memcpy(&imageType,&vec[pos],4); + pos += 4; + + // Write data length + memcpy(&dataLen,&vec[pos],4); + pos += 4; + + // Write data + memcpy(data,&vec[pos],dataLen); + pos += dataLen; }