25 #include <FXPNGImage.h>
26 #include <FXJPGImage.h>
29 #pragma warning(disable: 4244) // do not warn about integer conversions
31 #include <FXTIFImage.h>
42 if (comparecase(ext,
"png") == 0) {
43 if (!FXPNGImage::supported) {
46 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
47 if (!FXJPGImage::supported) {
50 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
51 if (!FXTIFImage::supported) {
60 FXString ext = FXPath::extension(file.c_str());
62 FXImage* img =
nullptr;
63 if (comparecase(ext,
"gif") == 0) {
64 img =
new FXGIFImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
65 }
else if (comparecase(ext,
"bmp") == 0) {
66 img =
new FXBMPImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
67 }
else if (comparecase(ext,
"xpm") == 0) {
68 img =
new FXXPMImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
69 }
else if (comparecase(ext,
"pcx") == 0) {
70 img =
new FXPCXImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
71 }
else if (comparecase(ext,
"ico") == 0 || comparecase(ext,
"cur") == 0) {
72 img =
new FXICOImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
73 }
else if (comparecase(ext,
"tga") == 0) {
74 img =
new FXTGAImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
75 }
else if (comparecase(ext,
"rgb") == 0) {
76 img =
new FXRGBImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
77 }
else if (comparecase(ext,
"xbm") == 0) {
78 img =
new FXXBMImage(a,
nullptr,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
79 }
else if (comparecase(ext,
"png") == 0) {
80 img =
new FXPNGImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
81 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
82 img =
new FXJPGImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
83 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
84 img =
new FXTIFImage(a,
nullptr, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
90 if (img !=
nullptr && stream.open(file.c_str(), FXStreamLoad)) {
92 img->loadPixels(stream);
108 for (FXint exp = 30; exp >= 0; exp--) {
109 newHeight = 2 << exp;
110 if (newHeight <= maxSize && (image->getHeight() & newHeight)) {
114 if (2 * newHeight <= maxSize && (2 * newHeight - image->getHeight() < image->getHeight() - newHeight)) {
118 for (FXint exp = 30; exp >= 0; exp--) {
120 if (newWidth <= maxSize && (image->getWidth() & newWidth)) {
124 if (2 * newWidth <= maxSize && (2 * newWidth - image->getWidth() < image->getWidth() - newWidth)) {
127 if (newHeight == image->getHeight() && newWidth == image->getWidth()) {
130 image->scale(newWidth, newHeight);
139 int width,
int height, FXColor* data) {
140 FXString ext = FXPath::extension(file.c_str());
143 if (!stream.open(file.c_str(), FXStreamSave)) {
146 if (comparecase(ext,
"gif") == 0) {
147 return fxsaveGIF(stream, data, width, height,
false );
148 }
else if (comparecase(ext,
"bmp") == 0) {
149 return fxsaveBMP(stream, data, width, height);
150 }
else if (comparecase(ext,
"xpm") == 0) {
151 return fxsaveXPM(stream, data, width, height);
152 }
else if (comparecase(ext,
"pcx") == 0) {
153 return fxsavePCX(stream, data, width, height);
154 }
else if (comparecase(ext,
"ico") == 0 || comparecase(ext,
"cur") == 0) {
155 return fxsaveICO(stream, data, width, height);
156 }
else if (comparecase(ext,
"tga") == 0) {
157 return fxsaveTGA(stream, data, width, height);
158 }
else if (comparecase(ext,
"rgb") == 0) {
159 return fxsaveRGB(stream, data, width, height);
160 }
else if (comparecase(ext,
"xbm") == 0) {
161 return fxsaveXBM(stream, data, width, height);
162 }
else if (comparecase(ext,
"png") == 0) {
163 return fxsavePNG(stream, data, width, height);
164 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
165 return fxsaveJPG(stream, data, width, height, 75);
166 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
167 return fxsaveTIF(stream, data, width, height, 0);