33 #include <FXPNGImage.h> 34 #include <FXJPGImage.h> 37 #pragma warning(disable: 4244) // do not warn about integer conversions 39 #include <FXTIFImage.h> 50 if (comparecase(ext,
"png") == 0) {
51 if (!FXPNGImage::supported) {
54 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
55 if (!FXJPGImage::supported) {
58 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
59 if (!FXTIFImage::supported) {
68 FXString ext = FXPath::extension(file.c_str());
71 if (comparecase(ext,
"gif") == 0) {
72 img =
new FXGIFImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
73 }
else if (comparecase(ext,
"bmp") == 0) {
74 img =
new FXBMPImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
75 }
else if (comparecase(ext,
"xpm") == 0) {
76 img =
new FXXPMImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
77 }
else if (comparecase(ext,
"pcx") == 0) {
78 img =
new FXPCXImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
79 }
else if (comparecase(ext,
"ico") == 0 || comparecase(ext,
"cur") == 0) {
80 img =
new FXICOImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
81 }
else if (comparecase(ext,
"tga") == 0) {
82 img =
new FXTGAImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
83 }
else if (comparecase(ext,
"rgb") == 0) {
84 img =
new FXRGBImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
85 }
else if (comparecase(ext,
"xbm") == 0) {
86 img =
new FXXBMImage(a, NULL, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
87 }
else if (comparecase(ext,
"png") == 0) {
88 img =
new FXPNGImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
89 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
90 img =
new FXJPGImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
91 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
92 img =
new FXTIFImage(a, NULL, IMAGE_KEEP | IMAGE_SHMI | IMAGE_SHMP);
98 if (img != NULL && stream.open(file.c_str(), FXStreamLoad)) {
100 img->loadPixels(stream);
116 for (FXint exp = 30; exp >= 0; exp--) {
117 newHeight = 2 << exp;
118 if (newHeight <= maxSize && (image->getHeight() & newHeight)) {
122 if (2 * newHeight <= maxSize && (2 * newHeight - image->getHeight() < image->getHeight() - newHeight)) {
126 for (FXint exp = 30; exp >= 0; exp--) {
128 if (newWidth <= maxSize && (image->getWidth() & newWidth)) {
132 if (2 * newWidth <= maxSize && (2 * newWidth - image->getWidth() < image->getWidth() - newWidth)) {
135 if (newHeight == image->getHeight() && newWidth == image->getWidth()) {
138 image->scale(newWidth, newHeight);
147 int width,
int height, FXColor* data) {
148 FXString ext = FXPath::extension(file.c_str());
151 if (!stream.open(file.c_str(), FXStreamSave)) {
154 if (comparecase(ext,
"gif") == 0) {
155 return fxsaveGIF(stream, data, width, height,
false );
156 }
else if (comparecase(ext,
"bmp") == 0) {
157 return fxsaveBMP(stream, data, width, height);
158 }
else if (comparecase(ext,
"xpm") == 0) {
159 return fxsaveXPM(stream, data, width, height);
160 }
else if (comparecase(ext,
"pcx") == 0) {
161 return fxsavePCX(stream, data, width, height);
162 }
else if (comparecase(ext,
"ico") == 0 || comparecase(ext,
"cur") == 0) {
163 return fxsaveICO(stream, data, width, height);
164 }
else if (comparecase(ext,
"tga") == 0) {
165 return fxsaveTGA(stream, data, width, height);
166 }
else if (comparecase(ext,
"rgb") == 0) {
167 return fxsaveRGB(stream, data, width, height);
168 }
else if (comparecase(ext,
"xbm") == 0) {
169 return fxsaveXBM(stream, data, width, height);
170 }
else if (comparecase(ext,
"png") == 0) {
171 return fxsavePNG(stream, data, width, height);
172 }
else if (comparecase(ext,
"jpg") == 0 || comparecase(ext,
"jpeg") == 0) {
173 return fxsaveJPG(stream, data, width, height, 75);
174 }
else if (comparecase(ext,
"tif") == 0 || comparecase(ext,
"tiff") == 0) {
175 return fxsaveTIF(stream, data, width, height, 0);
static FXbool scalePower2(FXImage *image, int maxSize=(2<< 29))
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
static FXbool saveImage(const std::string &file, int width, int height, FXColor *data)
static FXImage * loadImage(FXApp *a, const std::string &file)
static void checkSupported(FXString ext)