mirror of https://github.com/KLayout/klayout.git
WIP: More tests for lay::Image
This commit is contained in:
parent
373f307ae6
commit
3a2ae4ede1
|
|
@ -163,7 +163,8 @@ public:
|
||||||
*
|
*
|
||||||
* This feature produces a binary-alpha image of *this and other. The
|
* This feature produces a binary-alpha image of *this and other. The
|
||||||
* result can be patched into this image to render the same image than
|
* result can be patched into this image to render the same image than
|
||||||
* "other".
|
* "other". The difference image will contains the pixels from other which
|
||||||
|
* are different from *this.
|
||||||
*
|
*
|
||||||
* alpha values from this and other are ignored.
|
* alpha values from this and other are ignored.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,28 @@
|
||||||
#include "tlUnitTest.h"
|
#include "tlUnitTest.h"
|
||||||
|
|
||||||
#if defined(HAVE_QT)
|
#if defined(HAVE_QT)
|
||||||
#include <QImage>
|
|
||||||
|
# include <QImage>
|
||||||
|
|
||||||
|
static bool compare_images (const QImage &qimg, const std::string &au)
|
||||||
|
{
|
||||||
|
QImage qimg2;
|
||||||
|
qimg2.load (tl::to_qstring (au));
|
||||||
|
|
||||||
|
if (qimg2.width () == (int) qimg.width () && qimg2.height () == (int) qimg.height ()) {
|
||||||
|
for (int i = 0; i < qimg.width (); ++i) {
|
||||||
|
for (int j = 0; j < qimg.height (); ++j) {
|
||||||
|
if (((const lay::color_t *) qimg.scanLine (j))[i] != ((const lay::color_t *) qimg2.scanLine (j))[i]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TEST(1)
|
TEST(1)
|
||||||
|
|
@ -90,3 +111,51 @@ TEST(1)
|
||||||
EXPECT_EQ (img4.height (), 16);
|
EXPECT_EQ (img4.height (), 16);
|
||||||
EXPECT_EQ (img4.scan_line (5)[8], 0x102030);
|
EXPECT_EQ (img4.scan_line (5)[8], 0x102030);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(HAVE_QT)
|
||||||
|
|
||||||
|
TEST(2)
|
||||||
|
{
|
||||||
|
lay::Image img (227, 231);
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < img.width (); ++i) {
|
||||||
|
for (unsigned int j = 0; j < img.height (); ++j) {
|
||||||
|
img.scan_line (j) [i] = 0xff000000 | (i << 16) | j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string tmp = tmp_file ("test.png");
|
||||||
|
QImage qimg = img.to_image ();
|
||||||
|
qimg.save (tl::to_qstring (tmp));
|
||||||
|
tl::info << "PNG file written to " << tmp;
|
||||||
|
|
||||||
|
std::string au = tl::testsrc () + "/testdata/lay/au.png";
|
||||||
|
tl::info << "PNG file read from " << au;
|
||||||
|
|
||||||
|
EXPECT_EQ (compare_images (qimg, au), true);
|
||||||
|
|
||||||
|
lay::Image img_saved (img);
|
||||||
|
img.scan_line (52) [42] = 0xff000000;
|
||||||
|
|
||||||
|
lay::Image diff = img.diff (img_saved);
|
||||||
|
EXPECT_EQ (compare_images (img.to_image (), au), false);
|
||||||
|
EXPECT_EQ (compare_images (img_saved.to_image (), au), true);
|
||||||
|
|
||||||
|
img.patch (diff);
|
||||||
|
EXPECT_EQ (compare_images (img.to_image (), au), true);
|
||||||
|
|
||||||
|
img.fill (0xff000000);
|
||||||
|
img.patch (diff);
|
||||||
|
|
||||||
|
tmp = tmp_file ("diff.png");
|
||||||
|
qimg = img.to_image ();
|
||||||
|
qimg.save (tl::to_qstring (tmp));
|
||||||
|
tl::info << "PNG file written to " << tmp;
|
||||||
|
|
||||||
|
au = tl::testsrc () + "/testdata/lay/au_diff.png";
|
||||||
|
tl::info << "PNG file read from " << au;
|
||||||
|
|
||||||
|
EXPECT_EQ (compare_images (qimg, au), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 777 B |
Binary file not shown.
|
After Width: | Height: | Size: 789 B |
Loading…
Reference in New Issue