Mercurial > hg > orthanc
comparison UnitTests/Png.cpp @ 455:238a0c99ced2
PNG reader
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 04 Jul 2013 15:25:15 +0200 |
parents | 6f47a4262618 |
children |
comparison
equal
deleted
inserted
replaced
454:6f47a4262618 | 455:238a0c99ced2 |
---|---|
1 #include "gtest/gtest.h" | 1 #include "gtest/gtest.h" |
2 | 2 |
3 #include <stdint.h> | 3 #include <stdint.h> |
4 #include "../Core/FileFormats/PngReader.h" | |
4 #include "../Core/FileFormats/PngWriter.h" | 5 #include "../Core/FileFormats/PngWriter.h" |
5 | 6 |
6 TEST(PngWriter, ColorPattern) | 7 TEST(PngWriter, ColorPattern) |
7 { | 8 { |
8 Orthanc::PngWriter w; | 9 Orthanc::PngWriter w; |
64 } | 65 } |
65 } | 66 } |
66 | 67 |
67 w.WriteToFile("Gray16Pattern.png", width, height, pitch, Orthanc::PixelFormat_Grayscale16, &image[0]); | 68 w.WriteToFile("Gray16Pattern.png", width, height, pitch, Orthanc::PixelFormat_Grayscale16, &image[0]); |
68 } | 69 } |
70 | |
71 TEST(PngWriter, EndToEnd) | |
72 { | |
73 Orthanc::PngWriter w; | |
74 int width = 256; | |
75 int height = 256; | |
76 int pitch = width * 2 + 16; | |
77 | |
78 std::vector<uint8_t> image(height * pitch); | |
79 | |
80 int v = 0; | |
81 for (int y = 0; y < height; y++) | |
82 { | |
83 uint16_t *p = reinterpret_cast<uint16_t*>(&image[0] + y * pitch); | |
84 for (int x = 0; x < width; x++, p++, v++) | |
85 { | |
86 *p = v; | |
87 } | |
88 } | |
89 | |
90 std::string s; | |
91 w.WriteToMemory(s, width, height, pitch, Orthanc::PixelFormat_Grayscale16, &image[0]); | |
92 | |
93 Orthanc::PngReader r; | |
94 r.ReadFromMemory(s); | |
95 | |
96 ASSERT_EQ(r.GetWidth(), width); | |
97 ASSERT_EQ(r.GetHeight(), height); | |
98 | |
99 v = 0; | |
100 for (int y = 0; y < height; y++) | |
101 { | |
102 uint16_t *p = reinterpret_cast<uint16_t*>((uint8_t*) r.GetBuffer() + y * r.GetPitch()); | |
103 for (int x = 0; x < width; x++, p++, v++) | |
104 { | |
105 ASSERT_EQ(*p, v); | |
106 } | |
107 } | |
108 | |
109 } |