gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/generic_character.h serv...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/generic_character.h serv...
Date: Mon, 26 Feb 2007 22:08:06 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/02/26 22:08:06

Modified files:
        .              : ChangeLog 
        server         : generic_character.h sprite_instance.cpp 
                         sprite_instance.h 
        server/parser  : sprite_definition.cpp 

Log message:
                * server/parser/sprite_definition.cpp (ctor) *require*
                  a movie_definition as we'll need it for a few things,
                  including getVersion..
                * server/generic_character.h: store character_def
                  by intrusive_ptr !
                * server/sprite_instance.{cpp,h}: new add_textfield method;
                  fix add_empty_movieclip to provide a movie_definition to
                  sprite-definition constructor; handle dynamic sprites
                  when calling getBytestLoaded/getBytesTotal.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2476&r2=1.2477
http://cvs.savannah.gnu.org/viewcvs/gnash/server/generic_character.h?cvsroot=gnash&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.179&r2=1.180
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.71&r2=1.72
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/sprite_definition.cpp?cvsroot=gnash&r1=1.9&r2=1.10

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2476
retrieving revision 1.2477
diff -u -b -r1.2476 -r1.2477
--- ChangeLog   26 Feb 2007 20:11:22 -0000      1.2476
+++ ChangeLog   26 Feb 2007 22:08:05 -0000      1.2477
@@ -1,5 +1,17 @@
 2007-02-26 Sandro Santilli <address@hidden>
 
+       * server/parser/sprite_definition.cpp (ctor) *require*
+         a movie_definition as we'll need it for a few things,
+         including getVersion..
+       * server/generic_character.h: store character_def
+         by intrusive_ptr !
+       * server/sprite_instance.{cpp,h}: new add_textfield method;
+         fix add_empty_movieclip to provide a movie_definition to
+         sprite-definition constructor; handle dynamic sprites
+         when calling getBytestLoaded/getBytesTotal.
+
+2007-02-26 Sandro Santilli <address@hidden>
+
        * testsuite/actionscript.all/Inheritance.as:
          a couple of additional tests for accessing
          a function's prototype after a call to

Index: server/generic_character.h
===================================================================
RCS file: /sources/gnash/gnash/server/generic_character.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- server/generic_character.h  12 Dec 2006 19:48:04 -0000      1.17
+++ server/generic_character.h  26 Feb 2007 22:08:06 -0000      1.18
@@ -45,7 +45,7 @@
 
 protected:
 
-       character_def*  m_def;
+       boost::intrusive_ptr<character_def> m_def;
 
 public:
 
@@ -91,7 +91,7 @@
        /// \brief
        /// Return the character definition from which this
        /// instance derive. 
-       character_def* get_character_def() { return m_def; }
+       character_def* get_character_def() { return m_def.get(); }
   
        void enclose_own_bounds(rect *) const;
 

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.179
retrieving revision 1.180
diff -u -b -r1.179 -r1.180
--- server/sprite_instance.cpp  22 Feb 2007 17:20:49 -0000      1.179
+++ server/sprite_instance.cpp  26 Feb 2007 22:08:06 -0000      1.180
@@ -659,7 +659,7 @@
                );
                return;
        }
-       //std::string txt_name = fn.arg(0).to_string();
+       std::string txt_name = fn.arg(0).to_string();
 
        if ( ! fn.arg(1).is_number() )
        {
@@ -669,8 +669,7 @@
                );
                return;
        }
-
-       //double txt_depth = fn.arg(1).to_number();
+       int txt_depth = int(fn.arg(1).to_number());
 
        if ( ! fn.arg(2).is_number() ) 
        {
@@ -680,8 +679,7 @@
                );
                return;
        }
-
-       //double txt_x = fn.arg(2).to_number();
+       float txt_x = fn.arg(2).to_number();
 
        if ( ! fn.arg(3).is_number() )
        {
@@ -691,8 +689,7 @@
                );
                return;
        }
-
-       //double txt_y = fn.arg(3).to_number();
+       float txt_y = fn.arg(3).to_number();
 
        if ( ! fn.arg(4).is_number() )
        {
@@ -702,7 +699,7 @@
                );
                return;
        }
-       //double txt_width = fn.arg(4).to_number();
+       float txt_width = fn.arg(4).to_number();
 
        if ( ! fn.arg(5).is_number() ) 
        {
@@ -712,68 +709,14 @@
                );
                return;
        }
-       //double txt_height = fn.arg(5).to_number();
-
-
-       // sprite is ourself, we should add a new
-       // member, named txt_name and being a
-       // TextField (text_character_def?)
-       //
-
-       // Get target's movie definition
-       movie_definition *mds = sprite->get_movie_definition();
-
-       //log_msg("Target's movie definition at %p\n", (void*)mds);
-
-       // Do I need the smart_ptr.here ?
-       boost::intrusive_ptr<text_character_def> txt = new 
text_character_def(mds);
-
-       // Now add a the new TextField to the display list.
-
-       // display_list::add wants a character, so we
-       // must construct one.
-       //
-       // Unfortunately our text_character_def does
-       // not inherit from character, but from character_def
-       // which seems to be in another inheritance branch...
-       //
-       // Should we make text_character_def inherit from
-       // character or define a new structure for TextField ?
-       //
-#if 0
-       movie *m = sprite->get_root_movie();
-       assert(m);
-
-       character *txt_char = new character(m);
-       assert(txt_char);
-#endif
-
-
-       log_error("FIXME: %s unfinished\n", __PRETTY_FUNCTION__);
-
-#if 0
-       // Here we add the character to the displayList.
-
-       cxform txt_cxform;
-       matrix txt_matrix;
-       bool replace_if_depth_occupied = true;
-       sprite->m_display_list->add_display_object(
-               txt_char, txt_depth, replace_if_depth_occupied,
-               txt_cxform, txt_matrix, txt_ratio, clip_depth
-               );
-#endif
-
-       
+       float txt_height = fn.arg(5).to_number();
 
+       boost::intrusive_ptr<character> txt = sprite->add_textfield(txt_name,
+                       txt_depth, txt_x, txt_y, txt_width, txt_height);
 
        // We should return a ref to the newly created
        // TextField here
-       
-       //fn.result->set_as_object(txt.get());
-
-
-
-       //assert(0); 
+       fn.result->set_as_object(txt.get());
 }
 
 //getNextHighestDepth() : Number
@@ -2115,7 +2058,7 @@
        matrix matrix;
 
        // empty_sprite_def will be deleted during deliting sprite
-       sprite_definition* empty_sprite_def = new sprite_definition(NULL, NULL);
+       sprite_definition* empty_sprite_def = new 
sprite_definition(get_movie_definition(), NULL);
 
        sprite_instance* sprite = new sprite_instance(empty_sprite_def, m_root, 
this, 0);
        sprite->set_name(name);
@@ -2132,6 +2075,49 @@
        return sprite;
 }
 
+boost::intrusive_ptr<character>
+sprite_instance::add_textfield(const std::string& name, int depth, float x, 
float y, float width, float height)
+{
+       matrix txt_matrix;
+
+       // Do I need the smart_ptr.here ?
+       boost::intrusive_ptr<text_character_def> txt = new 
text_character_def(get_movie_definition());
+       boost::intrusive_ptr<character> txt_char = 
txt->create_character_instance(this, 0);
+
+       txt_char->set_name(name.c_str());
+       txt_char->setDynamic();
+
+       // Here we should set the proper matrix using x,y width and height
+
+       // set _x
+       txt_matrix.m_[0][2] = infinite_to_fzero(PIXELS_TO_TWIPS(x));
+       // set _y
+       txt_matrix.m_[1][2] = infinite_to_fzero(PIXELS_TO_TWIPS(y));
+       // set _width
+       txt_matrix.m_[0][0] = infinite_to_fzero(PIXELS_TO_TWIPS(width));
+       // set _height
+       txt_matrix.m_[1][1] = infinite_to_fzero(PIXELS_TO_TWIPS(height));
+
+       // Here we add the character to the displayList.
+
+       m_display_list.place_character(
+               txt_char.get(),
+               depth,
+               cxform(),
+               txt_matrix,
+               0.0f,
+               0);
+
+       static bool warned = false;
+       if ( ! warned )
+       {
+               log_error("FIXME: %s unfinished", __PRETTY_FUNCTION__);
+               warned = true;
+       }
+
+       return txt_char;
+}
+
 void sprite_instance::clone_display_object(const std::string& name,
        const std::string& newname, uint16_t depth)
 {

Index: server/sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -b -r1.71 -r1.72
--- server/sprite_instance.h    20 Feb 2007 10:00:48 -0000      1.71
+++ server/sprite_instance.h    26 Feb 2007 22:08:06 -0000      1.72
@@ -17,7 +17,7 @@
 // 
 //
 
-/* $Id: sprite_instance.h,v 1.71 2007/02/20 10:00:48 strk Exp $ */
+/* $Id: sprite_instance.h,v 1.72 2007/02/26 22:08:06 strk Exp $ */
 
 // Stateful live Sprite instance
 
@@ -160,14 +160,14 @@
        /// (not sprite!)
        size_t get_bytes_total() const
        {
-               return m_def->get_bytes_total();
+               return isDynamic() ? 0 : m_def->get_bytes_total();
        }
 
        /// Return number of loaded bytes in the movie
        /// (not sprite!)
        size_t get_bytes_loaded() const
        {
-               return m_def->get_bytes_loaded();
+               return isDynamic() ? 0 : m_def->get_bytes_loaded();
        }
 
        const rect& get_frame_size() const
@@ -282,6 +282,9 @@
        character* get_character_at_depth(int depth);
        character* add_empty_movieclip(const char* name, int depth);
 
+       boost::intrusive_ptr<character> add_textfield(const std::string& name,
+                       int depth, float x, float y, float width, float height);
+
        /// Add an object to the DisplayList. 
        //
        /// @param character_id

Index: server/parser/sprite_definition.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/sprite_definition.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- server/parser/sprite_definition.cpp 13 Feb 2007 16:10:48 -0000      1.9
+++ server/parser/sprite_definition.cpp 26 Feb 2007 22:08:06 -0000      1.10
@@ -185,8 +185,10 @@
        m_loading_frame(0),
        registeredClass(0)
 {
+       assert(m_movie_def);
+
        // create empty sprite_definition (it is used for 
createEmptyMovieClip() method)
-       if (m_movie_def == NULL && in == NULL)
+       if (in == NULL)
        {
                m_frame_count = 1;
                m_loading_frame = 1;
@@ -196,7 +198,6 @@
        }
        else
        {
-               assert(m_movie_def);
                read(in);
        }
 }




reply via email to

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