33 #include <FXPNGImage.h>
34 #include <FXJPGImage.h>
35 #include <FXTIFImage.h>
40 #ifdef CHECK_MEMORY_LEAKS
42 #endif // CHECK_MEMORY_LEAKS
46 if (comparecase(ext,
"png") == 0) {
47 if (!FXPNGImage::supported) {
50 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
51 if (!FXJPGImage::supported) {
54 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
55 if (!FXTIFImage::supported) {
64 FXString ext = FXPath::extension(file.c_str());
67 if (comparecase(ext,
"gif") == 0) {
68 img =
new FXGIFImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
69 }
else if (comparecase(ext,
"bmp") == 0) {
70 img =
new FXBMPImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
71 }
else if (comparecase(ext,
"xpm") == 0) {
72 img =
new FXXPMImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
73 }
else if (comparecase(ext,
"pcx") == 0) {
74 img =
new FXPCXImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
75 }
else if (comparecase(ext,
"ico") == 0 || comparecase(ext,
"cur") == 0) {
76 img =
new FXICOImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
77 }
else if (comparecase(ext,
"tga") == 0) {
78 img =
new FXTGAImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
79 }
else if (comparecase(ext,
"rgb") == 0) {
80 img =
new FXRGBImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
81 }
else if (comparecase(ext,
"xbm") == 0) {
82 img =
new FXXBMImage(a, NULL, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
83 }
else if (comparecase(ext,
"png") == 0) {
84 img =
new FXPNGImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
85 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
86 img =
new FXJPGImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
87 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
88 img =
new FXTIFImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
90 throw InvalidArgument(
"Unknown file extension for image '" + file +
"'!");
94 if (img != NULL && stream.open(file.c_str(), FXStreamLoad)) {
96 img->loadPixels(stream);
111 for (FXint exp = 30; exp >= 0; exp--) {
112 newHeight = 2 << exp;
113 if (image->getHeight() & newHeight) {
117 if (2 * newHeight - image->getHeight() < image->getHeight() - newHeight) {
121 for (FXint exp = 30; exp >= 0; exp--) {
123 if (image->getWidth() & newWidth) {
127 if (2 * newWidth - image->getWidth() < image->getWidth() - newWidth) {
130 if (newHeight == image->getHeight() && newWidth == image->getWidth()) {
133 image->scale(newWidth, newHeight);
142 int width,
int height, FXColor* data) {
143 FXString ext = FXPath::extension(file.c_str());
146 if (!stream.open(file.c_str(), FXStreamSave)) {
149 if (comparecase(ext,
"gif") == 0) {
150 return fxsaveGIF(stream, data, width, height,
false );
151 }
else if (comparecase(ext,
"bmp") == 0) {
152 return fxsaveBMP(stream, data, width, height);
153 }
else if (comparecase(ext,
"xpm") == 0) {
154 return fxsaveXPM(stream, data, width, height);
155 }
else if (comparecase(ext,
"pcx") == 0) {
156 return fxsavePCX(stream, data, width, height);
157 }
else if (comparecase(ext,
"ico") == 0 || comparecase(ext,
"cur") == 0) {
158 return fxsaveICO(stream, data, width, height);
159 }
else if (comparecase(ext,
"tga") == 0) {
160 return fxsaveTGA(stream, data, width, height);
161 }
else if (comparecase(ext,
"rgb") == 0) {
162 return fxsaveRGB(stream, data, width, height);
163 }
else if (comparecase(ext,
"xbm") == 0) {
164 return fxsaveXBM(stream, data, width, height);
165 }
else if (comparecase(ext,
"png") == 0) {
166 return fxsavePNG(stream, data, width, height);
167 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
168 return fxsaveJPG(stream, data, width, height, 75);
169 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
170 return fxsaveTIF(stream, data, width, height, 0);