gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash server/impl.cpp ChangeLog


From: Sandro Santilli
Subject: [Gnash-commit] gnash server/impl.cpp ChangeLog
Date: Wed, 28 Nov 2007 15:38:53 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/11/28 15:38:53

Modified files:
        server         : impl.cpp 
        .              : ChangeLog 

Log message:
        stub support for png loading.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/impl.cpp?cvsroot=gnash&r1=1.126&r2=1.127
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4994&r2=1.4995

Patches:
Index: server/impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/impl.cpp,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -b -r1.126 -r1.127
--- server/impl.cpp     24 Nov 2007 17:21:44 -0000      1.126
+++ server/impl.cpp     28 Nov 2007 15:38:52 -0000      1.127
@@ -17,7 +17,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-/* $Id: impl.cpp,v 1.126 2007/11/24 17:21:44 strk Exp $ */
+/* $Id: impl.cpp,v 1.127 2007/11/28 15:38:52 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -392,7 +392,7 @@
 
        if ( ! im.get() )
        {
-               log_error(_("Can't read jpeg"));
+               log_error(_("Can't read jpeg from %u"), url.c_str());
                return NULL;
        } 
 
@@ -400,13 +400,34 @@
        //log_msg(_("BitmapMovieDefinition %p created"), mdef);
        return mdef;
 
+}
+
+// Create a movie_definition from a png stream
+// NOTE: this method assumes this *is* a png stream
+static movie_definition*
+create_png_movie(std::auto_ptr<tu_file> in, const std::string& url)
+{
+       log_unimpl(_("Loading of png"));
+       return NULL;
+
+#if 0
+       std::auto_ptr<image::rgb> im ( image::read_png(in.get()) );
+
+       if ( ! im.get() )
+       {
+               log_error(_("Can't read png from %s"), url.c_str());
+               return NULL;
+       } 
+
+       BitmapMovieDefinition* mdef = new BitmapMovieDefinition(im, url);
+       //log_msg(_("BitmapMovieDefinition %p created"), mdef);
+       return mdef;
+#endif
 
-       // FIXME: create a movie_definition from a jpeg
-       //bitmap_character*      ch = new bitmap_character(bi);
 }
 
 // Get type of file looking at first bytes
-// return "jpeg", "swf" or "unknown"
+// return "jpeg", "png", "swf" or "unknown"
 //
 static std::string
 get_file_type(tu_file* in)
@@ -418,6 +439,7 @@
        if ( 3 < in->read_bytes(buf, 3) )
        {
                log_error(_("Can't read file header"));
+               in->set_position(0);
                return "unknown";
        }
        
@@ -428,6 +450,13 @@
                return "jpeg";
        }
 
+       // This is the magic number for any JPEG format file
+       if ((buf[0] == 137) && (buf[1] == 'P') && (buf[2] == 'N')) // buf[3] == 
'G' (we didn't read so far)
+       {
+               in->set_position(0);
+               return "png";
+       }
+
        // This is for SWF (FWS or CWS)
        if (    (buf[0] == 'F' || buf[0] == 'C') &&
                (buf[1] == 'W') &&
@@ -440,15 +469,24 @@
        // Check if it is an swf embedded in a player (.exe-file)
        if ((buf[0] == 'M') && (buf[1] == 'Z')) {
 
-               if ( 3 < in->read_bytes(buf, 3) ) return "unknown";
+               if ( 3 < in->read_bytes(buf, 3) )
+               {
+                       in->set_position(0);
+                       return "unknown";
+               }
 
-               while (buf[0]!='F' && buf[0]!='C' || buf[1]!='W' || 
buf[2]!='S') {
+               while (buf[0]!='F' && buf[0]!='C' || buf[1]!='W' || buf[2]!='S')
+               {
                        buf[0] = buf[1];
                        buf[1] = buf[2];
                        buf[2] = in->read_byte();
-                       if (in->get_eof()) return "unknown";
+                       if (in->get_eof())
+                       {
+                               in->set_position(0);
+                               return "unknown";
                }
-               in->set_position(in->get_position()-3);
+               }
+               in->set_position(in->get_position()-3); // position to start of 
the swf itself
                return "swf";
        }
        return "unknown";
@@ -498,6 +536,14 @@
                }
                return create_jpeg_movie(in, url);
        }
+       else if ( type == "png" )
+       {
+               if ( startLoaderThread == false )
+               {
+                       log_unimpl(_("Requested to keep from completely loading 
a movie, but the movie in question is a png, for which we don't yet have the 
concept of a 'loading thread'"));
+               }
+               return create_png_movie(in, url);
+       }
        else if ( type == "swf" )
        {
                return create_swf_movie(in, url, startLoaderThread);

Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4994
retrieving revision 1.4995
diff -u -b -r1.4994 -r1.4995
--- ChangeLog   28 Nov 2007 12:47:03 -0000      1.4994
+++ ChangeLog   28 Nov 2007 15:38:53 -0000      1.4995
@@ -1,5 +1,9 @@
 2007-11-28 Sandro Santilli <address@hidden>
 
+       * server/impl.cpp: stub support for png loading.
+
+2007-11-28 Sandro Santilli <address@hidden>
+
        * server/asobj/Stage.{cpp,h}: make Stage an AsBroadcaster and
          register its native methods; stage align and showMenu members.
        * server/movie_root.cpp: update use of Stage to its AsBroadcaster




reply via email to

[Prev in Thread] Current Thread [Next in Thread]