CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/07/13 16:05:09
Modified files: . : ChangeLog backend : render_handler.h render_handler_agg.cpp render_handler_cairo.cpp render_handler_ogl.cpp render_handler_tri.cpp render_handler_tri.h server : fontlib.cpp fontlib.h render.cpp render.h Log message: * backend/render_handler.h, backend/render_handler_agg.cpp, backend/render_handler_cairo.cpp, backend/render_handler_ogl.cpp, backend/render_handler_tri.cpp, backend/render_handler_tri.h, server/fontlib.cpp, server/fontlib.h, server/render.cpp, server/render.h: Updated renderer interface to always take gnash::rgba by const ref rather then by value. Should improve performance (removes double copy of 4 float values for each glyph, bitmap, line strip!). CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3733&r2=1.3734 http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler.h?cvsroot=gnash&r1=1.42&r2=1.43 http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg.cpp?cvsroot=gnash&r1=1.90&r2=1.91 http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_cairo.cpp?cvsroot=gnash&r1=1.22&r2=1.23 http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_ogl.cpp?cvsroot=gnash&r1=1.74&r2=1.75 http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_tri.cpp?cvsroot=gnash&r1=1.15&r2=1.16 http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_tri.h?cvsroot=gnash&r1=1.12&r2=1.13 http://cvs.savannah.gnu.org/viewcvs/gnash/server/fontlib.cpp?cvsroot=gnash&r1=1.31&r2=1.32 http://cvs.savannah.gnu.org/viewcvs/gnash/server/fontlib.h?cvsroot=gnash&r1=1.7&r2=1.8 http://cvs.savannah.gnu.org/viewcvs/gnash/server/render.cpp?cvsroot=gnash&r1=1.15&r2=1.16 http://cvs.savannah.gnu.org/viewcvs/gnash/server/render.h?cvsroot=gnash&r1=1.15&r2=1.16 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.3733 retrieving revision 1.3734 diff -u -b -r1.3733 -r1.3734 --- ChangeLog 13 Jul 2007 14:50:07 -0000 1.3733 +++ ChangeLog 13 Jul 2007 16:05:07 -0000 1.3734 @@ -1,5 +1,16 @@ 2007-07-13 Sandro Santilli <[EMAIL PROTECTED]> + * backend/render_handler.h, backend/render_handler_agg.cpp, + backend/render_handler_cairo.cpp, + backend/render_handler_ogl.cpp, backend/render_handler_tri.cpp, + backend/render_handler_tri.h, server/fontlib.cpp, + server/fontlib.h, server/render.cpp, server/render.h: + Updated renderer interface to always take gnash::rgba by const ref + rather then by value. Should improve performance (removes double + copy of 4 float values for each glyph, bitmap, line strip!). + +2007-07-13 Sandro Santilli <[EMAIL PROTECTED]> + * testsuite/actionscript.all/TextField.as: Add test for TextField.prototype.hasOwnProperty('background') returning false (weird, returns true in Index: backend/render_handler.h =================================================================== RCS file: /sources/gnash/gnash/backend/render_handler.h,v retrieving revision 1.42 retrieving revision 1.43 diff -u -b -r1.42 -r1.43 --- backend/render_handler.h 1 Jul 2007 10:53:47 -0000 1.42 +++ backend/render_handler.h 13 Jul 2007 16:05:08 -0000 1.43 @@ -18,7 +18,7 @@ // // -/* $Id: render_handler.h,v 1.42 2007/07/01 10:53:47 bjacques Exp $ */ +/* $Id: render_handler.h,v 1.43 2007/07/13 16:05:08 strk Exp $ */ #ifndef RENDER_HANDLER_H #define RENDER_HANDLER_H @@ -319,11 +319,21 @@ /// Bracket the displaying of a frame from a movie. // - /// Fill the background color, and set up default - /// transforms, etc. + /// Set up to render a full frame from a movie and fills the + /// background. Sets up necessary transforms, to scale the + /// movie to fit within the given dimensions. Call + /// end_display() when you're done. + /// + /// The rectangle (viewport_x0, viewport_y0, viewport_x0 + + /// viewport_width, viewport_y0 + viewport_height) defines the + /// window coordinates taken up by the movie. + /// + /// The rectangle (x0, y0, x1, y1) defines the pixel + /// coordinates of the movie that correspond to the viewport + /// bounds. /// virtual void begin_display( - rgba background_color, + const rgba& background_color, int viewport_x0, int viewport_y0, int viewport_width, int viewport_height, float x0, float x1, float y0, float y1) = 0; @@ -340,7 +350,7 @@ // /// Can be used to draw empty boxes and cursors. virtual void draw_line_strip(const void* coords, int vertex_count, - const rgba color) = 0; + const rgba& color) = 0; /// Draw a simple, solid filled polygon (no outline). // @@ -354,7 +364,7 @@ /// add an additional vertex to close it. /// virtual void draw_poly(const point* corners, size_t corner_count, - const rgba fill, const rgba outline) = 0; + const rgba& fill, const rgba& outline) = 0; /// Set line and fill styles for mesh & line_strip rendering. @@ -375,7 +385,7 @@ const bitmap_info* bi, const rect& coords, const rect& uv_coords, - rgba color) = 0; + const rgba& color) = 0; virtual void set_antialiased(bool enable) = 0; @@ -481,7 +491,7 @@ /// @param pixel_scale /// virtual void draw_glyph(shape_character_def *def, const matrix& mat, - rgba color, float pixel_scale) = 0; + const rgba& color, float pixel_scale) = 0; /// The render handler can choose if it wishes to use textured glyphs /// (pre-computed bitmaps which are used for small text sizes) or if Index: backend/render_handler_agg.cpp =================================================================== RCS file: /sources/gnash/gnash/backend/render_handler_agg.cpp,v retrieving revision 1.90 retrieving revision 1.91 diff -u -b -r1.90 -r1.91 --- backend/render_handler_agg.cpp 1 Jul 2007 10:53:47 -0000 1.90 +++ backend/render_handler_agg.cpp 13 Jul 2007 16:05:08 -0000 1.91 @@ -17,7 +17,7 @@ -/* $Id: render_handler_agg.cpp,v 1.90 2007/07/01 10:53:47 bjacques Exp $ */ +/* $Id: render_handler_agg.cpp,v 1.91 2007/07/13 16:05:08 strk Exp $ */ // Original version by Udo Giacomozzi and Hannes Mayr, // INDUNET GmbH (www.indunet.it) @@ -630,7 +630,7 @@ void begin_display( - gnash::rgba background_color, + const gnash::rgba& background_color, int /*viewport_x0*/, int /*viewport_y0*/, int /*viewport_width*/, int /*viewport_height*/, float /*x0*/, float /*x1*/, float /*y0*/, float /*y1*/) @@ -758,7 +758,7 @@ } - void draw_line_strip(const void* coords, int vertex_count, const rgba color) + void draw_line_strip(const void* coords, int vertex_count, const rgba& color) // Draw the line strip formed by the sequence of points. { @@ -820,7 +820,7 @@ const gnash::bitmap_info* /*bi*/, const gnash::rect& /*coords*/, const gnash::rect& /*uv_coords*/, - gnash::rgba /*color*/) + const gnash::rgba& /*color*/) // Draw a rectangle textured with the given bitmap, with the // given color. Apply given transform; ignore any currently // set transforms. @@ -863,7 +863,7 @@ void draw_glyph(shape_character_def *def, - const matrix& mat, rgba color, float /*pixel_scale*/) { + const matrix& mat, const rgba& color, float /*pixel_scale*/) { // NOTE: def->get_bound() is NULL for glyphs so we can't check the // clipping area (bounds_in_clipping_area): @@ -1825,8 +1825,8 @@ /// Draws the given polygon. - void draw_poly(const point* corners, size_t corner_count, const rgba fill, - const rgba outline) { + void draw_poly(const point* corners, size_t corner_count, const rgba& fill, + const rgba& outline) { assert(m_pixf != NULL); Index: backend/render_handler_cairo.cpp =================================================================== RCS file: /sources/gnash/gnash/backend/render_handler_cairo.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -b -r1.22 -r1.23 --- backend/render_handler_cairo.cpp 11 Jul 2007 16:01:51 -0000 1.22 +++ backend/render_handler_cairo.cpp 13 Jul 2007 16:05:08 -0000 1.23 @@ -236,7 +236,7 @@ void disable() { m_mode = INVALID; } - void set_color(gnash::rgba color) { m_mode = COLOR; m_color = color; } + void set_color(const gnash::rgba& color) { m_mode = COLOR; m_color = color; } void set_bitmap(const gnash::bitmap_info* bi, const gnash::matrix& m, bitmap_wrap_mode wm, const gnash::cxform& color_transform) { m_mode = (wm == WRAP_REPEAT) ? BITMAP_WRAP : BITMAP_CLAMP; @@ -333,7 +333,7 @@ } void begin_display( - gnash::rgba background_color, + const gnash::rgba& background_color, int /*viewport_x0*/, int /*viewport_y0*/, int viewport_width, int viewport_height, float x0, float x1, float y0, float y1) @@ -426,7 +426,7 @@ } - void fill_style_color(int fill_side, gnash::rgba color) + void fill_style_color(int fill_side, const gnash::rgba& color) // Set fill style for the left interior of the shape. If // enable is false, turn off fill for the left interior. { @@ -436,7 +436,7 @@ } - void line_style_color(gnash::rgba color) + void line_style_color(const gnash::rgba& color) // Set the line style of the shape. If enable is false, turn // off lines for following curve segments. { @@ -526,7 +526,7 @@ const gnash::bitmap_info* binfo, const gnash::rect& coords, const gnash::rect& /*uv_coords*/, - gnash::rgba color) + const gnash::rgba& color) // Draw a rectangle textured with the given bitmap, with the // given color. Apply given transform; ignore any currently // set transforms. Index: backend/render_handler_ogl.cpp =================================================================== RCS file: /sources/gnash/gnash/backend/render_handler_ogl.cpp,v retrieving revision 1.74 retrieving revision 1.75 diff -u -b -r1.74 -r1.75 --- backend/render_handler_ogl.cpp 2 Jun 2007 09:54:20 -0000 1.74 +++ backend/render_handler_ogl.cpp 13 Jul 2007 16:05:08 -0000 1.75 @@ -5,7 +5,7 @@ // A render_handler that uses SDL & OpenGL -/* $Id: render_handler_ogl.cpp,v 1.74 2007/06/02 09:54:20 tgc Exp $ */ +/* $Id: render_handler_ogl.cpp,v 1.75 2007/07/13 16:05:08 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -288,7 +288,7 @@ void disable() { m_mode = INVALID; } - void set_color(gnash::rgba color) { m_mode = COLOR; m_color = color; } + void set_color(const gnash::rgba& color) { m_mode = COLOR; m_color = color; } void set_bitmap(const gnash::bitmap_info* bi, const gnash::matrix& m, bitmap_wrap_mode wm, const gnash::cxform& color_transform) { m_mode = (wm == WRAP_REPEAT) ? BITMAP_WRAP : BITMAP_CLAMP; @@ -466,22 +466,10 @@ } void begin_display( - gnash::rgba background_color, + const gnash::rgba& background_color, int viewport_x0, int viewport_y0, int viewport_width, int viewport_height, float x0, float x1, float y0, float y1) - // Set up to render a full frame from a movie and fills the - // background. Sets up necessary transforms, to scale the - // movie to fit within the given dimensions. Call - // end_display() when you're done. - // - // The rectangle (viewport_x0, viewport_y0, viewport_x0 + - // viewport_width, viewport_y0 + viewport_height) defines the - // window coordinates taken up by the movie. - // - // The rectangle (x0, y0, x1, y1) defines the pixel - // coordinates of the movie that correspond to the viewport - // bounds. { // GNASH_REPORT_FUNCTION; @@ -638,7 +626,7 @@ } - void fill_style_color(int fill_side, gnash::rgba color) + void fill_style_color(int fill_side, const gnash::rgba& color) // Set fill style for the left interior of the shape. If // enable is false, turn off fill for the left interior. { @@ -648,7 +636,7 @@ } - void line_style_color(gnash::rgba color) + void line_style_color(const gnash::rgba& color) // Set the line style of the shape. If enable is false, turn // off lines for following curve segments. { @@ -823,7 +811,7 @@ const gnash::bitmap_info* bi, const gnash::rect& coords, const gnash::rect& uv_coords, - gnash::rgba color) + const gnash::rgba& color) // Draw a rectangle textured with the given bitmap, with the // given color. Apply given transform; ignore any currently // set transforms. Index: backend/render_handler_tri.cpp =================================================================== RCS file: /sources/gnash/gnash/backend/render_handler_tri.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -b -r1.15 -r1.16 --- backend/render_handler_tri.cpp 3 Jul 2007 05:46:02 -0000 1.15 +++ backend/render_handler_tri.cpp 13 Jul 2007 16:05:08 -0000 1.16 @@ -18,7 +18,7 @@ // // -/* $Id: render_handler_tri.cpp,v 1.15 2007/07/03 05:46:02 strk Exp $ */ +/* $Id: render_handler_tri.cpp,v 1.16 2007/07/13 16:05:08 strk Exp $ */ #include "render_handler_tri.h" @@ -119,7 +119,7 @@ void triangulating_render_handler::draw_glyph(shape_character_def *def, - const matrix& mat, rgba color, float pixel_scale) { + const matrix& mat, const rgba& color, float pixel_scale) { // Make sure m_single_fill_styles contains the desired color need_single_fill_style(color); @@ -286,7 +286,7 @@ void triangulating_render_handler::draw_line_strip(const void* coords, - int vertex_count, const rgba color) { + int vertex_count, const rgba& color) { line_style_color(color); line_style_width(1); @@ -295,7 +295,7 @@ } void triangulating_render_handler::draw_poly(const point* corners, - size_t corner_count, const rgba fill, const rgba outline) { + size_t corner_count, const rgba& fill, const rgba& outline) { unsigned int vno=0; // Create points array to vertex array Index: backend/render_handler_tri.h =================================================================== RCS file: /sources/gnash/gnash/backend/render_handler_tri.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -b -r1.12 -r1.13 --- backend/render_handler_tri.h 3 Jul 2007 05:46:02 -0000 1.12 +++ backend/render_handler_tri.h 13 Jul 2007 16:05:08 -0000 1.13 @@ -18,7 +18,7 @@ // // -/* $Id: render_handler_tri.h,v 1.12 2007/07/03 05:46:02 strk Exp $ */ +/* $Id: render_handler_tri.h,v 1.13 2007/07/13 16:05:08 strk Exp $ */ #ifndef GNASH_RENDER_HANDLER_TRI_H #define GNASH_RENDER_HANDLER_TRI_H @@ -123,15 +123,15 @@ /// Triangulating render handlers do not need to support this special version /// of draw_line_strip(). - void draw_line_strip(const void* coords, int vertex_count, const rgba color); + void draw_line_strip(const void* coords, int vertex_count, const rgba& color); /// The given polygon is translated to a mesh strip by this class. - void draw_poly(const point* corners, size_t corner_count, const rgba fill, - const rgba outline); + void draw_poly(const point* corners, size_t corner_count, const rgba& fill, + const rgba& outline); /// The glyph is drawn just like a normal shape character. virtual void draw_glyph(shape_character_def *def, - const matrix& mat, rgba color, float pixel_scale); + const matrix& mat, const rgba& color, float pixel_scale); /// Older backends always used glyph textures, so any triangulating render /// handler activates glyph textures by default. @@ -167,7 +167,7 @@ virtual void fill_style_disable(int fill_side) = 0; /// Sets the fill style to the given solid color. - virtual void fill_style_color(int fill_side, rgba color) = 0; + virtual void fill_style_color(int fill_side, const rgba& color) = 0; /// Sets the fill style to the given bitmap. This is also used for gradients /// which are transformed to a bitmap prior to this call. @@ -178,7 +178,7 @@ virtual void line_style_disable() = 0; /// Sets the stroke color for subsequent draw_line_strip() calls - virtual void line_style_color(rgba color) = 0; + virtual void line_style_color(const rgba& color) = 0; /// Sets the stroke width for subsequent draw_line_strip() calls. When /// width==1.0 a "hairline" should be drawn. Index: server/fontlib.cpp =================================================================== RCS file: /sources/gnash/gnash/server/fontlib.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -u -b -r1.31 -r1.32 --- server/fontlib.cpp 11 Jul 2007 16:16:51 -0000 1.31 +++ server/fontlib.cpp 13 Jul 2007 16:05:08 -0000 1.32 @@ -5,7 +5,7 @@ // A module to take care of all of gnash's loaded fonts. -/* $Id: fontlib.cpp,v 1.31 2007/07/11 16:16:51 strk Exp $ */ +/* $Id: fontlib.cpp,v 1.32 2007/07/13 16:05:08 strk Exp $ */ #include "container.h" #include "tu_file.h" @@ -1312,7 +1312,7 @@ } - void draw_glyph(const matrix& mat, const texture_glyph& tg, rgba color, int nominal_glyph_height) + void draw_glyph(const matrix& mat, const texture_glyph& tg, const rgba& color, int nominal_glyph_height) // Draw the given texture glyph using the given transform, in // the given color. { Index: server/fontlib.h =================================================================== RCS file: /sources/gnash/gnash/server/fontlib.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -b -r1.7 -r1.8 --- server/fontlib.h 11 Jul 2007 16:16:51 -0000 1.7 +++ server/fontlib.h 13 Jul 2007 16:05:09 -0000 1.8 @@ -62,7 +62,7 @@ void add_font(font* f); // For drawing a textured glyph w/ current render transforms. - void draw_glyph(const matrix& m, const texture_glyph& g, rgba color, int nominal_glyph_height); + void draw_glyph(const matrix& m, const texture_glyph& g, const rgba& color, int nominal_glyph_height); // Return the pixel height of text, such that the // texture glyphs are sampled 1-to-1 texels-to-pixels. Index: server/render.cpp =================================================================== RCS file: /sources/gnash/gnash/server/render.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -b -r1.15 -r1.16 --- server/render.cpp 28 Feb 2007 17:25:26 -0000 1.15 +++ server/render.cpp 13 Jul 2007 16:05:09 -0000 1.16 @@ -111,7 +111,7 @@ // Fill the background color, and set up default // transforms, etc. void begin_display( - rgba background_color, + const rgba& background_color, int viewport_x0, int viewport_y0, int viewport_width, int viewport_height, float x0, float x1, float y0, float y1) @@ -159,7 +159,7 @@ } - void draw_line_strip(const int16_t coords[], int vertex_count, const rgba color) + void draw_line_strip(const int16_t coords[], int vertex_count, const rgba& color) { #ifdef DEBUG_RENDER_CALLS GNASH_REPORT_FUNCTION; @@ -168,8 +168,8 @@ } - void draw_poly(const point* corners, int corner_count, const rgba fill, - const rgba outline) + void draw_poly(const point* corners, int corner_count, const rgba& fill, + const rgba& outline) { #ifdef DEBUG_RENDER_CALLS GNASH_REPORT_FUNCTION; @@ -190,7 +190,7 @@ void draw_glyph(shape_character_def *def, const matrix& mat, - rgba color, + const rgba& color, float pixel_scale) { #ifdef DEBUG_RENDER_CALLS @@ -259,7 +259,7 @@ // Special function to draw a rectangular bitmap; // intended for textured glyph rendering. Ignores // current transforms. - void draw_bitmap(const matrix& m, const bitmap_info* bi, const rect& coords, const rect& uv_coords, rgba color) + void draw_bitmap(const matrix& m, const bitmap_info* bi, const rect& coords, const rect& uv_coords, const rgba& color) { #ifdef DEBUG_RENDER_CALLS GNASH_REPORT_FUNCTION; Index: server/render.h =================================================================== RCS file: /sources/gnash/gnash/server/render.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -b -r1.15 -r1.16 --- server/render.h 28 Feb 2007 17:25:26 -0000 1.15 +++ server/render.h 13 Jul 2007 16:05:09 -0000 1.16 @@ -73,7 +73,7 @@ /// See render_handler::begin_display (in backend/render_handler.h) void begin_display( - rgba background_color, + const rgba& background_color, int viewport_x0, int viewport_y0, int viewport_width, int viewport_height, float x0, float x1, float y0, float y1); @@ -100,11 +100,11 @@ /// See render_handler::draw_line_strip (in backend/render_handler.h) void draw_line_strip(const int16_t coords[], - int vertex_count, const rgba color); + int vertex_count, const rgba& color); /// See render_handler::draw_poly (in backend/render_handler.h) void draw_poly(const point* corners, int corner_count, - const rgba fill, const rgba outline); + const rgba& fill, const rgba& outline); /// See render_handler::draw_shape_character (in backend/render_handler.h) void draw_shape_character(shape_character_def *def, @@ -112,7 +112,7 @@ /// See render_handler::draw_glyph (in backend/render_handler.h) void draw_glyph(shape_character_def *def, const matrix& mat, - rgba color, float pixel_scale); + const rgba& color, float pixel_scale); /// See render_handler::allow_glyph_textures (in backend/render_handler.h) bool allow_glyph_textures(); @@ -134,7 +134,7 @@ /// See render_handler::draw_bitmap (in backend/render_handler.h) void draw_bitmap(const matrix& m, const bitmap_info* bi, const rect& coords, - const rect& uv_coords, rgba color); + const rect& uv_coords, const rgba& color); } // end namespace render _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit