33 #include <FXPNGImage.h>
34 #include <FXJPGImage.h>
35 #include <FXTIFImage.h>
41 #ifdef CHECK_MEMORY_LEAKS
43 #endif // CHECK_MEMORY_LEAKS
47 if (comparecase(ext,
"png") == 0) {
48 if (!FXPNGImage::supported) {
51 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
52 if (!FXJPGImage::supported) {
55 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
56 if (!FXTIFImage::supported) {
65 FXString ext = FXPath::extension(file.c_str());
68 if (comparecase(ext,
"gif") == 0) {
69 img =
new FXGIFImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
70 }
else if (comparecase(ext,
"bmp") == 0) {
71 img =
new FXBMPImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
72 }
else if (comparecase(ext,
"xpm") == 0) {
73 img =
new FXXPMImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
74 }
else if (comparecase(ext,
"pcx") == 0) {
75 img =
new FXPCXImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
76 }
else if (comparecase(ext,
"ico") == 0 || comparecase(ext,
"cur") == 0) {
77 img =
new FXICOImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
78 }
else if (comparecase(ext,
"tga") == 0) {
79 img =
new FXTGAImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
80 }
else if (comparecase(ext,
"rgb") == 0) {
81 img =
new FXRGBImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
82 }
else if (comparecase(ext,
"xbm") == 0) {
83 img =
new FXXBMImage(a, NULL, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
84 }
else if (comparecase(ext,
"png") == 0) {
85 img =
new FXPNGImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
86 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
87 img =
new FXJPGImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
88 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
89 img =
new FXTIFImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
95 if (img != NULL && stream.open(file.c_str(), FXStreamLoad)) {
97 img->loadPixels(stream);
113 for (FXint exp = 30; exp >= 0; exp--) {
114 newHeight = 2 << exp;
115 if (newHeight <= maxSize && (image->getHeight() & newHeight)) {
119 if (2 * newHeight <= maxSize && (2 * newHeight - image->getHeight() < image->getHeight() - newHeight)) {
123 for (FXint exp = 30; exp >= 0; exp--) {
125 if (newWidth <= maxSize && (image->getWidth() & newWidth)) {
129 if (2 * newWidth <= maxSize && (2 * newWidth - image->getWidth() < image->getWidth() - newWidth)) {
132 if (newHeight == image->getHeight() && newWidth == image->getWidth()) {
135 image->scale(newWidth, newHeight);
144 int width,
int height, FXColor* data) {
145 FXString ext = FXPath::extension(file.c_str());
148 if (!stream.open(file.c_str(), FXStreamSave)) {
151 if (comparecase(ext,
"gif") == 0) {
152 return fxsaveGIF(stream, data, width, height,
false );
153 }
else if (comparecase(ext,
"bmp") == 0) {
154 return fxsaveBMP(stream, data, width, height);
155 }
else if (comparecase(ext,
"xpm") == 0) {
156 return fxsaveXPM(stream, data, width, height);
157 }
else if (comparecase(ext,
"pcx") == 0) {
158 return fxsavePCX(stream, data, width, height);
159 }
else if (comparecase(ext,
"ico") == 0 || comparecase(ext,
"cur") == 0) {
160 return fxsaveICO(stream, data, width, height);
161 }
else if (comparecase(ext,
"tga") == 0) {
162 return fxsaveTGA(stream, data, width, height);
163 }
else if (comparecase(ext,
"rgb") == 0) {
164 return fxsaveRGB(stream, data, width, height);
165 }
else if (comparecase(ext,
"xbm") == 0) {
166 return fxsaveXBM(stream, data, width, height);
167 }
else if (comparecase(ext,
"png") == 0) {
168 return fxsavePNG(stream, data, width, height);
169 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
170 return fxsaveJPG(stream, data, width, height, 75);
171 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
172 return fxsaveTIF(stream, data, width, height, 0);
static FXbool scalePower2(FXImage *image, int maxSize=(2<< 29))
static FXbool saveImage(const std::string &file, int width, int height, FXColor *data)
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
static FXImage * loadImage(FXApp *a, const std::string &file)
static void checkSupported(FXString ext)