annotate src/modules/image/devil/ImageData.cpp @ 1086:73f4863ee5b7

Applied the new style guidelines. Well, sort of. Lot's more to be done, but this is a start.
author rude
date Thu, 28 Jun 2012 23:52:33 +0200
parents cfb46ab478a0
children 86a44f2bc38f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1086
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
1 /**
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
2 * Copyright (c) 2006-2012 LOVE Development Team
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
3 *
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
4 * This software is provided 'as-is', without any express or implied
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
5 * warranty. In no event will the authors be held liable for any damages
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
6 * arising from the use of this software.
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
7 *
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
8 * Permission is granted to anyone to use this software for any purpose,
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
9 * including commercial applications, and to alter it and redistribute it
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
10 * freely, subject to the following restrictions:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
11 *
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
12 * 1. The origin of this software must not be misrepresented; you must not
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
13 * claim that you wrote the original software. If you use this software
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
14 * in a product, an acknowledgment in the product documentation would be
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
15 * appreciated but is not required.
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
16 * 2. Altered source versions must be plainly marked as such, and must not be
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
17 * misrepresented as being the original software.
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
18 * 3. This notice may not be removed or altered from any source distribution.
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
19 **/
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
20
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
21 #include "ImageData.h"
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
22
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
23 // STD
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
24 #include <cstring>
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
25 #include <iostream>
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
26
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
27 // LOVE
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
28 #include "common/Exception.h"
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
29 #include "common/math.h"
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
30 #include "filesystem/File.h"
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
31
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
32 using love::thread::Lock;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
33
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
34 static Mutex devilMutex;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
35
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
36 namespace love
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
37 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
38 namespace image
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
39 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
40 namespace devil
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
41 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
42
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
43 static inline void ilxClearErrors()
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
44 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
45 while (ilGetError() != IL_NO_ERROR);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
46 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
47
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
48 ImageData::ImageData(Data *data)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
49 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
50 load(data);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
51 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
52
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
53 ImageData::ImageData(filesystem::File *file)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
54 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
55 Data *data = file->read();
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
56 load(data);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
57 data->release();
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
58 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
59
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
60 ImageData::ImageData(int width, int height)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
61 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
62 this->width = width;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
63 this->height = height;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
64 create(width, height);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
65
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
66 // Set to black.
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
67 memset(data, 0, width*height*4);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
68 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
69
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
70 ImageData::ImageData(int width, int height, void *data)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
71 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
72 this->width = width;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
73 this->height = height;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
74 create(width, height, data);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
75 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
76
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
77 ImageData::~ImageData()
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
78 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
79 delete[] data;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
80 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
81
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
82 void ImageData::create(int width, int height, void *data)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
83 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
84 try
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
85 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
86 this->data = new unsigned char[width*height*sizeof(pixel)];
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
87 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
88 catch(std::bad_alloc &)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
89 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
90 throw love::Exception("Out of memory");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
91 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
92
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
93 if (data)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
94 memcpy(this->data, data, width*height*sizeof(pixel));
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
95 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
96
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
97 void ImageData::load(Data *data)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
98 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
99 Lock lock(devilMutex);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
100 ILuint image;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
101 ilGenImages(1, &image);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
102 ilBindImage(image);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
103
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
104 try
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
105 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
106 bool success = IL_TRUE == ilLoadL(IL_TYPE_UNKNOWN, (void *)data->getData(), data->getSize());
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
107
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
108 if (!success)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
109 throw love::Exception("Could not decode image!");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
110
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
111 width = ilGetInteger(IL_IMAGE_WIDTH);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
112 height = ilGetInteger(IL_IMAGE_HEIGHT);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
113
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
114 // Make sure the image is in RGBA format.
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
115 ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
116
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
117 // This should always be four.
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
118 int bpp = ilGetInteger(IL_IMAGE_BPP);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
119 if (bpp != sizeof(pixel))
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
120 throw love::Exception("Could not convert image!");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
121
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
122 create(width, height, ilGetData());
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
123 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
124 catch(std::exception &)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
125 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
126 ilDeleteImages(1, &image);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
127 throw;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
128 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
129
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
130 ilDeleteImages(1, &image);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
131 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
132
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
133 void ImageData::encode(love::filesystem::File *f, ImageData::Format format)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
134 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
135 Lock lock1(devilMutex);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
136 Lock lock2(mutex);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
137
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
138 ILuint tempimage;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
139 ilGenImages(1, &tempimage);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
140 ilBindImage(tempimage);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
141 ilxClearErrors();
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
142
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
143 ILubyte *encoded_data = NULL;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
144
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
145 try
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
146 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
147 bool success = IL_TRUE == ilTexImage(width, height, 1, sizeof(pixel), IL_RGBA, IL_UNSIGNED_BYTE, this->data);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
148
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
149 ILenum err = ilGetError();
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
150 ilxClearErrors();
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
151
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
152 if (!success)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
153 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
154 if (err != IL_NO_ERROR)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
155 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
156 switch (err)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
157 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
158 case IL_ILLEGAL_OPERATION:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
159 throw love::Exception("Illegal operation");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
160 case IL_INVALID_PARAM:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
161 throw love::Exception("Invalid parameters");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
162 case IL_OUT_OF_MEMORY:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
163 throw love::Exception("Out of memory");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
164 default:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
165 throw love::Exception("Unknown error (%d)", (int) err);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
166 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
167 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
168
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
169 throw love::Exception("Could not create image for the encoding!");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
170 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
171
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
172 ilRegisterOrigin(IL_ORIGIN_UPPER_LEFT);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
173
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
174 ILuint ilFormat;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
175 switch (format)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
176 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
177 case ImageData::FORMAT_BMP:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
178 ilFormat = IL_BMP;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
179 break;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
180 case ImageData::FORMAT_TGA:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
181 ilFormat = IL_TGA;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
182 break;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
183 case ImageData::FORMAT_GIF:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
184 ilFormat = IL_GIF;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
185 break;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
186 case ImageData::FORMAT_JPG:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
187 ilFormat = IL_JPG;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
188 break;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
189 case ImageData::FORMAT_PNG:
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
190 default: // PNG is the default format
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
191 ilFormat = IL_PNG;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
192 break;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
193 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
194
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
195 ILuint size = ilSaveL(ilFormat, NULL, 0);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
196 if (!size)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
197 throw love::Exception("Could not encode image!");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
198
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
199 try
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
200 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
201 encoded_data = new ILubyte[size];
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
202 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
203 catch(std::bad_alloc &)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
204 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
205 throw love::Exception("Out of memory");
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
206 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
207
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
208 ilSaveL(ilFormat, encoded_data, size);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
209
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
210 f->open(love::filesystem::File::WRITE);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
211 f->write(encoded_data, size);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
212 f->close();
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
213 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
214 catch(std::exception &)
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
215 {
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
216 ilDeleteImages(1, &tempimage);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
217 delete[] encoded_data;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
218 throw;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
219 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
220
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
221 ilDeleteImages(1, &tempimage);
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
222 delete[] encoded_data;
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
223 }
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
224
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
225 } // devil
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
226 } // image
73f4863ee5b7 Applied the new style guidelines.
rude
parents: 1067
diff changeset
227 } // love