KiCad PCB EDA Suite
wximage_test_utils.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2019 KiCad Developers, see AUTHORS.TXT for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#include "wximage_test_utils.h"
25
26#include "color4d_test_utils.h"
27
28
29namespace KI_TEST
30{
40bool IsImagePixelOfColor( const wxImage& aImage, int aX, int aY, const KIGFX::COLOR4D& aColor )
41{
42 const wxSize imageSize = aImage.GetSize();
43
44 if( imageSize.x < aX || imageSize.y < aY )
45 {
46 BOOST_TEST_INFO( "Pixel (" << aX << ", " << aY << "is not in image of size (" << imageSize.x
47 << ", " << imageSize.y << ")" );
48 return false;
49 }
50
51 const int r = aImage.GetRed( aX, aY );
52 const int g = aImage.GetGreen( aX, aY );
53 const int b = aImage.GetBlue( aX, aY );
54
55 const int a = aImage.HasAlpha() ? aImage.GetAlpha( aX, aY ) : 255;
56
57 if( !KI_TEST::IsColorNearHex( aColor, r, g, b, a ) )
58 {
59 BOOST_TEST_INFO( "Colour doesn't match: got rgba(" << r << ", " << g << ", " << b << ", "
60 << a << "), expected " << aColor );
61 return false;
62 }
63
64 return true;
65}
66
67} // namespace KI_TEST
68
69
71{
72void print_log_value<wxImage>::operator()( std::ostream& os, wxImage const& aImage )
73{
74 const wxSize size = aImage.GetSize();
75 os << "wxImage[" << size.x << "x" << size.y << "]";
76}
77} // namespace BOOST_TEST_PRINT_NAMESPACE_OPEN
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:104
Test utilities for COLOUR4D objects.
Before Boost 1.64, nullptr_t wasn't handled.
bool IsColorNearHex(const KIGFX::COLOR4D &aCol, unsigned char r, unsigned char g, unsigned char b, unsigned char a)
Checks if a COLOR4D is close enough to a given RGB char value.
bool IsImagePixelOfColor(const wxImage &aImage, int aX, int aY, const KIGFX::COLOR4D &aColor)
Predicate to check an image pixel matches color and alpha.
void operator()(std::ostream &os, wxImage const &aImage)
#define BOOST_TEST_PRINT_NAMESPACE_CLOSE
#define BOOST_TEST_INFO(A)
If HAVE_EXPECTED_FAILURES is defined, this means that boost::unit_test::expected_failures is availabl...