]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/image.cpp
More contrib compilation fixes & makefiles
[wxWidgets.git] / src / common / image.cpp
index fbf84266bb9c9bc933d5fce9653a99cf5420e6e5..5045805f8bf2ef8c8a9ad48876fed7a85238d142 100644 (file)
@@ -28,6 +28,7 @@
 #include "wx/log.h"
 #include "wx/app.h"
 #include "wx/filefn.h"
+#include "wx/filesys.h"
 #include "wx/wfstream.h"
 #include "wx/intl.h"
 #include "wx/module.h"
@@ -229,12 +230,12 @@ wxImage wxImage::Scale( int width, int height ) const
 
     for (long j = 0; j < height; j++)
     {
-        long y_offset = (j * old_height / height) * old_width;
+        long y_offset = (j * (old_height-1) / (height-1)) * old_width;
 
         for (long i = 0; i < width; i++)
         {
             memcpy( target_data,
-                source_data + 3*(y_offset + ((i * old_width )/ width)),
+                source_data + 3*(y_offset + ((i * (old_width-1) )/ (width-1))),
                 3 );
             target_data += 3;
         }
@@ -762,18 +763,19 @@ bool wxImage::HasOption(const wxString& name) const
 bool wxImage::LoadFile( const wxString& filename, long type )
 {
 #if wxUSE_STREAMS
-    if (wxFileExists(filename))
-    {
-        wxFileInputStream stream(filename);
-        wxBufferedInputStream bstream( stream );
-        return LoadFile(bstream, type);
-    }
-    else
-    {
-        wxLogError( _("Can't load image from file '%s': file does not exist."), filename.c_str() );
-
+    // We want to use wxFileSystem for virtual FS compatibility
+    wxFileSystem fsys;
+    wxFSFile *file = fsys.OpenFile(filename);
+    if (!file) {
+        wxLogError(_("Can't open file '%s'"), filename);
         return FALSE;
-    }
+        }
+    wxInputStream *stream = file->GetStream();
+    if (!stream) {
+        wxLogError(_("Can't open stream for file '%s'"), filename);
+        return FALSE;
+        }
+    return LoadFile(*stream, type);
 #else // !wxUSE_STREAMS
     return FALSE;
 #endif // wxUSE_STREAMS
@@ -782,18 +784,19 @@ bool wxImage::LoadFile( const wxString& filename, long type )
 bool wxImage::LoadFile( const wxString& filename, const wxString& mimetype )
 {
 #if wxUSE_STREAMS
-    if (wxFileExists(filename))
-    {
-        wxFileInputStream stream(filename);
-        wxBufferedInputStream bstream( stream );
-        return LoadFile(bstream, mimetype);
-    }
-    else
-    {
-        wxLogError( _("Can't load image from file '%s': file does not exist."), filename.c_str() );
-
+    // We want to use wxFileSystem for virtual FS compatibility
+    wxFileSystem fsys;
+    wxFSFile *file = fsys.OpenFile(filename);
+    if (!file) {
+        wxLogError(_("Can't open file '%s'"), filename);
         return FALSE;
-    }
+        }
+    wxInputStream *stream = file->GetStream();
+    if (!stream) {
+        wxLogError(_("Can't open stream for file '%s'"), filename);
+        return FALSE;
+        }
+    return LoadFile(*stream, mimetype);
 #else // !wxUSE_STREAMS
     return FALSE;
 #endif // wxUSE_STREAMS
@@ -1144,7 +1147,7 @@ unsigned long wxImage::CountColours( unsigned long stopafter )
     wxHashTable h;
     wxObject dummy;
     unsigned char r, g, b;
-       unsigned char *p;
+    unsigned char *p;
     unsigned long size, nentries, key;
 
     p = GetData();
@@ -1179,7 +1182,7 @@ unsigned long wxImage::CountColours( unsigned long stopafter )
 unsigned long wxImage::ComputeHistogram( wxHashTable &h )
 {
     unsigned char r, g, b;
-       unsigned char *p;
+    unsigned char *p;
     unsigned long size, nentries, key;
     wxHNode *hnode;