aboutsummaryrefslogtreecommitdiff
path: root/tests/createImage.cpp
blob: 91a20e5633ab432cb450c6a8e3e1a838a6e68616 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "testUtils.h"

using namespace irr;

namespace
{
bool testImageCreation()
{
	// create device

	IrrlichtDevice *device = createDevice(video::EDT_SOFTWARE, core::dimension2d<u32>(160,120));

	if (device == 0)
		return true; // could not create selected driver.

	bool result = true;
	video::IVideoDriver* driver = device->getVideoDriver();
	video::ITexture* tex=driver->getTexture("../media/water.jpg");
	video::ITexture* tex1=0;
	video::ITexture* tex2=0;
	if (!tex)
		result=false;
	else
	{
		video::IImage* img1=driver->createImage(tex, core::vector2di(0,0), core::dimension2du(32,32));
		if (!img1)
			result=false;
		else
		{
			tex1=driver->addTexture("new1", img1);
			img1->drop();
			img1=0;
		}
		video::IImage* img2=driver->createImage(tex, core::vector2di(0,0), tex->getSize());
		if (!img2)
			result=false;
		else
		{
			tex2=driver->addTexture("new2", img2);
			img2->drop();
			img2 = 0;
		}
	}

	driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(255,255,0,255));//Backbuffer background is pink

	driver->draw2DImage(tex, core::position2d<s32>(0,0), core::recti(0,0,32,32));
	driver->draw2DImage(tex1, core::position2d<s32>(32,0));
	driver->draw2DImage(tex2, core::position2d<s32>(64,0), core::recti(0,0,32,32));

	driver->endScene();

	result = takeScreenshotAndCompareAgainstReference(driver, "-createImage.png");

	device->closeDevice();
	device->run();
	device->drop();

	return result;
}

bool testImageFormats()
{
	IrrlichtDevice *device = createDevice(video::EDT_BURNINGSVIDEO, core::dimension2d<u32>(256,128));

	if (device == 0)
		return true; // could not create selected driver.

	video::IVideoDriver* driver = device->getVideoDriver();
	video::ITexture* tex=driver->getTexture("../media/water.jpg");
	video::ITexture* tex1=driver->getTexture("media/grey.tga");
	driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(255,0,0,0));

	driver->draw2DImage(tex, core::position2d<s32>(0,0), core::recti(0,0,64,64));
	driver->draw2DImage(tex1, core::position2d<s32>(0,64), core::recti(0,0,64,64));
	driver->endScene();

	bool result = takeScreenshotAndCompareAgainstReference(driver, "-testImageFormats.png", 99.5f);

	device->closeDevice();
	device->run();
	device->drop();

	return result;
}
}

bool createImage()
{
	bool result = testImageCreation();
	result &= testImageFormats();
	return result;
}