8f8d58d193
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE occurrences to use the wx-prefixed version of the macros.
186 lines
5.7 KiB
C++
186 lines
5.7 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: tests/drawing/drawing.h
|
|
// Purpose: Drawing test case header
|
|
// Author: Armel Asselin
|
|
// Created: 2014-02-26
|
|
// Copyright: (c) 2014 Ellié Computing <opensource@elliecomputing.com>
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_TESTS_DRAWING_H_
|
|
#define _WX_TESTS_DRAWING_H_
|
|
|
|
#include "gcfactory.h"
|
|
|
|
#if wxUSE_TEST_GC_DRAWING
|
|
|
|
#include "wx/math.h"
|
|
|
|
#if wxUSE_SVG
|
|
#include "wx/dcsvg.h"
|
|
#endif
|
|
|
|
class WXDLLIMPEXP_FWD_BASE wxDynamicLibrary;
|
|
|
|
class GraphicsContextDrawingTestCase : public CppUnit::TestCase
|
|
{
|
|
public:
|
|
GraphicsContextDrawingTestCase()
|
|
: m_drawingPluginsLoaded(false)
|
|
{
|
|
wxImage::AddHandler (new wxPNGHandler());
|
|
wxImage::AddHandler (new wxBMPHandler());
|
|
}
|
|
~GraphicsContextDrawingTestCase() {
|
|
ms_referenceDirectory.clear();
|
|
}
|
|
|
|
private:
|
|
|
|
// NB: individual test cases launchers are copied/pasted so that the CppUnit
|
|
// test case selection can be used
|
|
|
|
CPPUNIT_TEST_SUITE( GraphicsContextDrawingTestCase );
|
|
CPPUNIT_TEST( DrawToImage_Basics );
|
|
#if wxUSE_SVG
|
|
// CPPUNIT_TEST( DrawToSVG_Basics );
|
|
#endif
|
|
CPPUNIT_TEST( DrawToPlugins_Basics );
|
|
|
|
// FIXME: Reference data files are currently not found when using Unix
|
|
// build system, so these tests are failing there, fix this and remove
|
|
// this ifdef.
|
|
#ifdef __WINDOWS__
|
|
CPPUNIT_TEST( DrawToImage_Fonts );
|
|
#if wxUSE_SVG
|
|
// CPPUNIT_TEST( DrawToSVG_Fonts );
|
|
#endif
|
|
CPPUNIT_TEST( DrawToPlugins_Fonts );
|
|
#endif // __WINDOWS__
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
class ImageGraphicsContextLifeCycle: public DrawingTestGCFactory
|
|
{
|
|
public:
|
|
virtual ~ImageGraphicsContextLifeCycle() {}
|
|
virtual wxString GetIdForFileName () const { return "image"; }
|
|
virtual wxString GetExtensionForFileName () const { return "png"; }
|
|
virtual bool UseImageComparison() const { return true; }
|
|
virtual bool PlatformIndependent() const { return false; }
|
|
virtual wxGraphicsContext *BuildNewContext (wxSize expectedSize,
|
|
double pointsPerInch, const wxFileName &targetFileName);
|
|
virtual void SaveBuiltContext (wxGraphicsContext *&gc);
|
|
virtual void CleanUp (wxGraphicsContext *gc);
|
|
private:
|
|
wxImage *m_image;
|
|
wxString m_targetFileName;
|
|
};
|
|
|
|
static ImageGraphicsContextLifeCycle ms_imageLifeCycle;
|
|
|
|
#if wxUSE_SVG
|
|
class SvgGraphicsContextLifeCycle: public DrawingTestGCFactory
|
|
{
|
|
public:
|
|
virtual wxString GetIdForFileName () const { return "svg"; }
|
|
virtual wxString GetExtensionForFileName () const { return "svg"; }
|
|
virtual bool UseImageComparison() const { return false; }
|
|
virtual bool PlatformIndependent() const { return true; }
|
|
virtual wxGraphicsContext *BuildNewContext (wxSize expectedSize,
|
|
double pointsPerInch, const wxFileName &targetFileName);
|
|
virtual void SaveBuiltContext (wxGraphicsContext *&gc);
|
|
virtual void CleanUp (wxGraphicsContext *gc);
|
|
|
|
private:
|
|
wxSVGFileDC *m_svgFileDc;
|
|
};
|
|
|
|
static SvgGraphicsContextLifeCycle ms_svgLifeCycle;
|
|
#endif // wxUSE_SVG
|
|
|
|
struct DrawingTestCase {
|
|
unsigned caseNumber;
|
|
void (GraphicsContextDrawingTestCase::*m_drawingF) (
|
|
wxGraphicsContext *gc);
|
|
unsigned width, height;
|
|
double pointsPerInch;
|
|
|
|
// if true, it means that this test case is "simple" enough to be
|
|
// platform independent even for targets that normally are dependent
|
|
// on the platform
|
|
bool platformIndependent;
|
|
};
|
|
|
|
// test cases
|
|
static const DrawingTestCase ms_drawingBasicTc;
|
|
static const DrawingTestCase ms_drawingFontTc;
|
|
|
|
// cases functions
|
|
void DoBasicDrawings (wxGraphicsContext *gc);
|
|
void DoFontDrawings (wxGraphicsContext *gc);
|
|
|
|
void RunIndividualDrawingCase (
|
|
DrawingTestGCFactory& gcFactory,
|
|
const DrawingTestCase & testCase);
|
|
|
|
// enumerates the dll names as specified in WX_TEST_SUITE_GC_DRAWING_PLUGINS
|
|
// (coma separated list of DLL to load and test)
|
|
// each DLL should have these procedures:
|
|
// - DrawingTestGCFactory* CreateDrawingTestLifeCycle(),
|
|
// to create the life cycle object
|
|
// - DestroyDrawingTestLifeCycle(DrawingTestGCFactory *),
|
|
// to destroy the life cycle object
|
|
void RunPluginsDrawingCase (const DrawingTestCase & testCase);
|
|
|
|
void DrawToImage_Basics() {
|
|
RunIndividualDrawingCase (ms_imageLifeCycle, ms_drawingBasicTc);
|
|
}
|
|
#if wxUSE_SVG
|
|
void DrawToSVG_Basics() {
|
|
RunIndividualDrawingCase (ms_svgLifeCycle, ms_drawingBasicTc);
|
|
}
|
|
#endif
|
|
void DrawToPlugins_Basics() {
|
|
RunPluginsDrawingCase (ms_drawingBasicTc);
|
|
}
|
|
void DrawToImage_Fonts() {
|
|
RunIndividualDrawingCase (ms_imageLifeCycle, ms_drawingFontTc);
|
|
}
|
|
#if wxUSE_SVG
|
|
void DrawToSVG_Fonts() {
|
|
RunIndividualDrawingCase (ms_svgLifeCycle, ms_drawingFontTc);
|
|
}
|
|
#endif
|
|
void DrawToPlugins_Fonts() {
|
|
RunPluginsDrawingCase (ms_drawingFontTc);
|
|
}
|
|
|
|
bool GetBuildReference() const;
|
|
|
|
wxString GetTestsReferenceDirectory() const;
|
|
|
|
wxString GetPlatformTag() const;
|
|
|
|
static wxString ms_referenceDirectory;
|
|
static bool ms_buildReference, ms_buildReferenceDetermined;
|
|
bool m_drawingPluginsLoaded;
|
|
|
|
struct PluginInfo {
|
|
PluginInfo();
|
|
~PluginInfo();
|
|
|
|
wxDynamicLibrary* library;
|
|
|
|
DrawingTestGCFactory *gcFactory;
|
|
DestroyDrawingTestLifeCycleFunction destroy;
|
|
};
|
|
|
|
wxVector<PluginInfo> m_drawingPlugins;
|
|
|
|
wxDECLARE_NO_COPY_CLASS(GraphicsContextDrawingTestCase);
|
|
};
|
|
|
|
|
|
#endif // wxUSE_TEST_GC_DRAWING
|
|
|
|
#endif // _WX_TESTS_DRAWING_H_
|