[Top][All Lists]
[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);
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/generic_character.h serv...,
Sandro Santilli <=