gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog backend/render_handler_agg.cpp ...


From: Bastiaan Jacques
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler_agg.cpp ...
Date: Sat, 01 Dec 2007 22:49:19 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Bastiaan Jacques <bjacques>     07/12/01 22:49:19

Modified files:
        .              : ChangeLog 
        backend        : render_handler_agg.cpp 
Removed files:
        backend        : render_handler_tri.cpp render_handler_tri.h 

Log message:
                * backend/render_handler_tri.{cpp,h}: Remove these unused
                files.
                * backend/render_handler_agg.cpp: Minor cleanups: Avoid calling
                default constructors (they are called anyway). Switch m_pixf to
                std::auto_ptr. Remove the unused stubs apply_color and 
apply_matrix.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5047&r2=1.5048
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg.cpp?cvsroot=gnash&r1=1.118&r2=1.119
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_tri.cpp?cvsroot=gnash&r1=1.23&r2=0
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_tri.h?cvsroot=gnash&r1=1.16&r2=0

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5047
retrieving revision 1.5048
diff -u -b -r1.5047 -r1.5048
--- ChangeLog   1 Dec 2007 22:11:23 -0000       1.5047
+++ ChangeLog   1 Dec 2007 22:49:17 -0000       1.5048
@@ -1,3 +1,11 @@
+2007-12-01 Bastiaan Jacques <address@hidden>
+
+       * backend/render_handler_tri.{cpp,h}: Remove these unused
+       files.
+       * backend/render_handler_agg.cpp: Minor cleanups: Avoid calling
+       default constructors (they are called anyway). Switch m_pixf to
+       std::auto_ptr. Remove the unused stubs apply_color and apply_matrix.
+
 2007-12-01 Sandro Santilli <address@hidden>
 
        * testsuite/swfdec/PASSING: sync to master.

Index: backend/render_handler_agg.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_agg.cpp,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -b -r1.118 -r1.119
--- backend/render_handler_agg.cpp      30 Nov 2007 23:11:10 -0000      1.118
+++ backend/render_handler_agg.cpp      1 Dec 2007 22:49:18 -0000       1.119
@@ -17,7 +17,7 @@
 
  
 
-/* $Id: render_handler_agg.cpp,v 1.118 2007/11/30 23:11:10 bjacques Exp $ */
+/* $Id: render_handler_agg.cpp,v 1.119 2007/12/01 22:49:18 bjacques Exp $ */
 
 // Original version by Udo Giacomozzi and Hannes Mayr, 
 // INDUNET GmbH (www.indunet.it)
@@ -590,17 +590,11 @@
       bpp(bits_per_pixel),
       /*xscale(1.0/20.0),
       yscale(1.0/20.0),*/
-      stage_matrix(),
       scale_set(false),
       m_enable_antialias(true),
       m_display_width(0.0),
       m_display_height(0.0),
-      m_rbuf(),
-      m_pixf(NULL), // TODO: use an auto_ptr
-      _clipbounds(),
-      _clipbounds_selected(),
-      m_drawing_mask(false),
-      m_alpha_mask()
+      m_drawing_mask(false)
   {
     // TODO: we really don't want to set the scale here as the core should
     // tell us the right values before rendering anything. However this is
@@ -613,7 +607,6 @@
   // Destructor
   ~render_handler_agg()
   {
-      delete m_pixf;   
   }
 
   /// Initializes the rendering buffer. The memory pointed by "mem" is not
@@ -632,12 +625,10 @@
     xres    = x;
     yres    = y;
     
-    delete m_pixf;   
-    
     m_rbuf.attach(memaddr, xres, yres, rowstride);
 
     // allocate pixel format accessor   
-    m_pixf = new PixelFormat(m_rbuf);
+    m_pixf.reset(new PixelFormat(m_rbuf));
     //m_rbase = new renderer_base(*m_pixf);  --> does not work!!??
     
     // by default allow drawing everywhere
@@ -666,7 +657,7 @@
   // coordinates of the movie that correspond to the viewport
   // bounds.
   {
-    assert(m_pixf != NULL);
+    assert(m_pixf.get());
     
     assert(scale_set);
     // clear the stage using the background color
@@ -728,21 +719,6 @@
     // nothing to do
   }
 
-  static void apply_matrix(const gnash::matrix& /*m*/)
-  // add user space transformation
-  {
-    // TODO: what's the use for this, anyway?? 
-    log_msg("apply_matrix(); called - NOT IMPLEMENTED");
-  }
-
-  static void apply_color(const gnash::rgba& /*c*/)
-  // Set the given color.
-  {
-    // TODO: what's the use for this, anyway?? 
-    log_msg("apply_color(); called - NOT IMPLEMENTED");
-  }
-
-
   template <class ras_type>
   void apply_clip_box(ras_type& ras, 
     const geometry::Range2d<int>& bounds)
@@ -762,7 +738,7 @@
   // Draw the line strip formed by the sequence of points.
   {
   
-    assert(m_pixf != NULL);
+    assert(m_pixf.get());
 
     matrix mat = stage_matrix;
     mat.concatenate(line_mat);    
@@ -1544,7 +1520,7 @@
     Thank to Maxim Shemanarev for providing us such a great tool with AGG...
     */
     
-    assert(m_pixf != NULL);
+    assert(m_pixf.get());
     
     assert(!m_drawing_mask);
     
@@ -1771,7 +1747,7 @@
     const std::vector<line_style> &line_styles, const cxform& cx, 
     const matrix& linestyle_matrix, scanline_type& sl) {
     
-    assert(m_pixf != NULL);
+    assert(m_pixf.get());
     
     if (m_drawing_mask)    // Flash ignores lines in mask /definitions/
       return;    
@@ -1862,7 +1838,7 @@
   void draw_poly_impl(const point* corners, size_t corner_count, const rgba& 
fill, 
     const rgba& outline, scanline_type& sl, const matrix& poly_mat) {
     
-    assert(m_pixf != NULL);
+    assert(m_pixf.get());
 
     if (corner_count<1) return;
     
@@ -2129,8 +2105,7 @@
 
   agg::rendering_buffer m_rbuf;  
 
-  // TODO: use an auto_ptr, since we're deleting in the destructor...
-  PixelFormat *m_pixf;
+  std::auto_ptr<PixelFormat> m_pixf;
   
   /// clipping rectangle
   std::vector< geometry::Range2d<int> > _clipbounds;

Index: backend/render_handler_tri.cpp
===================================================================
RCS file: backend/render_handler_tri.cpp
diff -N backend/render_handler_tri.cpp
--- backend/render_handler_tri.cpp      10 Nov 2007 11:51:42 -0000      1.23
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,381 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// 
-//
-
-/* $Id: render_handler_tri.cpp,v 1.23 2007/11/10 11:51:42 strk Exp $ */
-
-#include "render_handler_tri.h"
-
-#ifndef RENDER_HANDLER_H
-#error missing includes!
-#endif
-
-#ifndef GNASH_RENDER_HANDLER_TRI_H
-#error missing includes!
-#endif
-
-#include "log.h"
-
-#include <boost/scoped_array.hpp>
-
-namespace gnash {
-
-bool SortByDecreasingError(const mesh_set& lhs, const mesh_set& rhs)
-{
-  float ltol = lhs.get_error_tolerance(); 
-  float rtol = rhs.get_error_tolerance(); 
-  
-  return ltol < rtol;
-}
-
-/// Takes a vector and copies all the values into an array. The array's memory
-/// is guaranteed to be contiguous, unlike the vector's.
-template <typename T>
-void vector_to_array(const std::vector<T>& vec, boost::scoped_array<T>& array)
-{
-  using namespace boost;
-  size_t vec_size = vec.size();
-  
-  array.reset(new T[vec_size]);
-  
-  for (size_t i = 0; i < vec_size; i++) {
-    array[i] = vec[i];
-  }  
-}
-
-
-//------------------------------------------------------------------------------
-
-mesh_set* tri_cache_manager::search_candidate(float max_error)  {
-
-  for (unsigned int i=0,n=m_cached_meshes.size(); i<n; i++) {
-  
-    mesh_set& candidate = m_cached_meshes[i];
-    float candidate_etol = candidate.get_error_tolerance();
-  
-    if (max_error > candidate_etol * 3.0f) {
-      // Mesh is too high-res; the remaining meshes are higher res,
-      // so stop searching and build an appropriately scaled mesg.
-      break;
-    }
-    
-    if (max_error > candidate_etol) {
-      // found it!
-      return &candidate;
-    }
-  
-  } // for
-  
-  // when we come here it means that no candidate could be found... :-(
-  return NULL;
-  
-} // search_candidate
-  
-  
-/// Adds a mesh set to the cache. 
-void tri_cache_manager::add(mesh_set* m) {
-  m_cached_meshes.push_back(*m);
-  sort_and_clean_meshes();
-} // add
-
-
-/// Maintain cached meshes. Clean out mesh_sets that haven't been used 
-/// recently, and make sure they're sorted from high error to low error.
-void tri_cache_manager::sort_and_clean_meshes() {
-
-  // Re-sort.
-  if (!m_cached_meshes.size()) {
-    return;
-  }
-  
-  std::sort(m_cached_meshes.begin(), m_cached_meshes.end(),
-            SortByDecreasingError);
-
-  // TODO: The cache will grow forever, without any limit. Add code that
-  // limits the vector to a certain size. The older Gnash implementation
-  // appears to never have removed unused cache objects!
-  
-  // Sort check omitted!
-
-} // sort_and_clean_meshes
-  
-
-
-//------------------------------------------------------------------------------
-
-// Can't initialize this in header, for ISO C++ conformance:
-// error: ISO C++ forbids initialization of member constant 
`s_curve_max_pixel_error'
-// of non-integral type `const float'
-const float triangulating_render_handler::s_curve_max_pixel_error = 1.0f;
-
-
-void triangulating_render_handler::draw_glyph(shape_character_def *def,
-    const matrix& mat, const rgba& color, float pixel_scale) {
-    
-  // Make sure m_single_fill_styles contains the desired color
-  need_single_fill_style(color);
-    
-  // A glyph is a notmal character, so draw it normally
-  draw_shape_character(def, mat, m_neutral_cxform, pixel_scale, 
-    m_single_fill_styles, m_dummy_line_styles);
-}
-
-
-  
-  
-void triangulating_render_handler::draw_shape_character(shape_character_def 
*def, 
-  const matrix& mat,
-  const cxform& cx,
-  float pixel_scale,
-  const std::vector<fill_style>& fill_styles,
-  const std::vector<line_style>& line_styles) {    
-  tri_cache_manager* cman = get_cache_of(def);
-  
-  // Compute the error tolerance in object-space.
-  float        max_scale = mat.get_max_scale();
-  
-  if (fabsf(max_scale) < 1e-6f) {
-    // Scale is essentially zero.
-    return;
-  }    
-  
-  float        object_space_max_error = 
-    20.0f / max_scale / pixel_scale * s_curve_max_pixel_error;
-    
-    
-  // NOTE: gnash_debug_show_paths ommitted
-  
-  // Try to find a usable mesh set in the cache
-  mesh_set *m = cman->search_candidate(object_space_max_error);
-  int from_cache = m != NULL;
-   
-  if (!from_cache) {
-    // no cache hit, construct a new mesh to handle this error tolerance.
-    m = new mesh_set(def, object_space_max_error * 0.75f);
-  };
-
-  // draw the mesh set    
-  draw_mesh_set(*m, mat, cx, fill_styles, line_styles, 1.0);
-    
-  
-  if (!from_cache) {
-    // add to cache (do this after drawing the mesh!)
-    cman->add(m);    
-  }
-  
-} // draw_shape_character
-
-
-
-void triangulating_render_handler::draw_mesh_set(const mesh_set& m, 
-  const matrix& mat, const cxform& cx,
-  const std::vector<fill_style> &fill_styles,
-  const std::vector<line_style> &line_styles, float ratio) {
-  
-  set_matrix(mat);
-  set_cxform(cx);
-  
-  // draw fills
-  for (unsigned int i = 0; i < m.m_meshes.size(); i++) {
-    const mesh& the_mesh = m.m_meshes[i];
-    const fill_style& the_style = fill_styles[i];    
-    
-    if (!the_mesh.m_triangle_strip.size()) continue; // nothing to draw
-    
-    apply_fill_style(the_style, 0, ratio);
-    
-    boost::scoped_array<int16_t> coords;
-    vector_to_array(the_mesh.m_triangle_strip, coords);
-    
-    draw_mesh_strip(coords.get(), the_mesh.m_triangle_strip.size() / 2);
-  }
-  
-  // draw outlines
-  for (unsigned int i = 0; i < m.m_line_strips.size(); i++)
-  {
-    int        style = m.m_line_strips[i].get_style();
-    const line_strip& strip = m.m_line_strips[i];
-    
-    assert(strip.m_coords.size() > 1);
-    assert((strip.m_coords.size() & 1) == 0);
-    apply_line_style(line_styles[style], ratio);
-    
-    boost::scoped_array<int16_t> coords;
-    vector_to_array(strip.m_coords, coords);
-    
-    draw_line_strip(coords.get(), strip.m_coords.size() / 2);
-  }
-    
-  
-} // draw_mesh_set
-
-
-void triangulating_render_handler::apply_fill_style(const fill_style& style, 
-  int fill_side, float ratio) {
-
-  UNUSED(ratio);
-  
-  if (style.m_type == SWF::FILL_SOLID)
-  {
-    // 0x00: solid fill
-    fill_style_color(fill_side, style.m_color); 
-  }
-  else if (style.m_type == SWF::FILL_LINEAR_GRADIENT
-    || style.m_type == SWF::FILL_RADIAL_GRADIENT
-       || style.m_type == SWF::FILL_FOCAL_GRADIENT)
-  {
-    // 0x10: linear gradient fill
-    // 0x12: radial gradient fill
-    
-    style.need_gradient_bitmap();
-    
-    if (style.m_gradient_bitmap_info != NULL) {
-      fill_style_bitmap(
-        fill_side,
-        style.m_gradient_bitmap_info.get(),
-        style.m_gradient_matrix,
-        gnash::render_handler::WRAP_CLAMP);
-    }
-  }
-  else if (style.m_type == SWF::FILL_TILED_BITMAP
-    || style.m_type == SWF::FILL_CLIPPED_BITMAP
-    || style.m_type == SWF::FILL_TILED_BITMAP_HARD
-    || style.m_type == SWF::FILL_CLIPPED_BITMAP_HARD)
-  {
-    
-    // bitmap fill (either tiled or clipped)
-    
-    gnash::bitmap_info*        bi = NULL;
-    
-    if (style.m_bitmap_character != NULL)      {
-    
-      bi = style.m_bitmap_character->get_bitmap_info();
-      
-      if (bi != NULL)  {
-      
-        gnash::render_handler::bitmap_wrap_mode        
-          wmode = gnash::render_handler::WRAP_REPEAT;
-          
-        if (style.m_type == SWF::FILL_CLIPPED_BITMAP
-          || style.m_type == SWF::FILL_CLIPPED_BITMAP_HARD)
-        {
-          wmode = gnash::render_handler::WRAP_CLAMP;
-        }
-        fill_style_bitmap(
-          fill_side,
-          bi,
-          style.m_bitmap_matrix,
-          wmode);
-      }
-    }
-  }  
-
-} // apply_fill_stype
-
-
-void triangulating_render_handler::apply_line_style(const line_style& style, 
-  float ratio) {
-  
-  UNUSED(ratio);
-  line_style_color(style.m_color);
-  line_style_width(style.m_width);  
-} // apply_line_style
-
-
-
-void   triangulating_render_handler::draw_line_strip(const void* coords, 
-  int vertex_count, const rgba& color) {
-  
-  line_style_color(color);
-  line_style_width(1);
-  draw_line_strip(coords, vertex_count);
-  
-}
-
-void  triangulating_render_handler::draw_poly(const point* corners, 
-  size_t corner_count, const rgba& fill, const rgba& outline, bool /*masked*/) 
{
-  
-  // TODO: The current implementation is only correct when masked==true,
-  // ie. it will always be masked.
-  
-  unsigned int vno=0;
-  // Create points array to vertex array 
-  int16_t *vertex = new int16_t[(corner_count+1)*2];
-  for (unsigned int cno=0; cno<corner_count; cno++) {
-    vertex[vno  ] = static_cast<int16_t>(corners[cno].x);
-    vertex[vno+1] = static_cast<int16_t>(corners[cno].y);
-    vno+=2;
-  }
-  // add one more point to close the polygon
-  vertex[vno  ] = vertex[0];
-  vertex[vno+1] = vertex[1];
-  
-  // fill the polygon
-  if (fill.m_a>0) {
-    fill_style_color(0, fill);
-    draw_mesh_strip(vertex, corner_count+1);
-  }
-  
-  // draw the polygon outline
-  if (outline.m_a>0) {
-    line_style_color(outline);
-    line_style_width(1.0f);
-    draw_line_strip(vertex, corner_count+1);
-  } 
-  
-  delete[] vertex;
-  
-} // draw_poly
-
-
-
-
-tri_cache_manager* triangulating_render_handler::get_cache_of(character_def* 
def) {
-
-  if (def->m_render_cache == NULL) {
-    def->m_render_cache = new tri_cache_manager;
-  }
-  
-  return static_cast<tri_cache_manager*> (def->m_render_cache);
-
-} // get_cache_of
- 
-
-geometry::Range2d<int>
-triangulating_render_handler::world_to_pixel(const rect& worldbounds)
-{
-  // TODO: verify this is correct
-  geometry::Range2d<int> ret(worldbounds.getRange());
-  ret.scale(1.0/20.0); // twips to pixels
-  return ret;
-}
-
-point 
-triangulating_render_handler::pixel_to_world(int x, int y)
-{
-  // TODO: verify this is correct
-  return point(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
-}
-
-tri_cache_manager::~tri_cache_manager()
-{
-}
-
-
-} // namespace gnash

Index: backend/render_handler_tri.h
===================================================================
RCS file: backend/render_handler_tri.h
diff -N backend/render_handler_tri.h
--- backend/render_handler_tri.h        21 Sep 2007 20:18:41 -0000      1.16
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,211 +0,0 @@
-// 
-//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
-// 
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-// 
-//
-
-/* $Id: render_handler_tri.h,v 1.16 2007/09/21 20:18:41 bjacques Exp $ */
-
-#ifndef GNASH_RENDER_HANDLER_TRI_H
-#define GNASH_RENDER_HANDLER_TRI_H
-
-
-// Original version by Udo Giacomozzi, Indunet GmbH (www.indunet.it)
-
-
-#include "gnash.h"
-#include "types.h"
-#include "image.h"
-#include "utility.h"
-#include "log.h"
-
-#include "render_handler.h"
-
-#ifndef RENDER_HANDLER_H
-#error missing includes!
-#endif
-
-namespace gnash
-{
-
-class DSOEXPORT tri_cache_manager : public render_cache_manager
-{
-private:
-  /// A list of pre-computed meshes. Each mesh set was computed with a certain
-  /// error tolerance. The error tolerance defines the number of straight 
lines 
-  /// that are used to reconstruct a curve. As this approximation becomes
-  /// visible when magnifing a character, different mesh sets are cached.  
-  /// Of course, more edge lines produce more triangles which slows down 
-  /// rendering. So we try to use a mesh set with the minimal triangle amount
-  /// that's still acceptable when viewed.
-  /// To draw these meshes they still have to be transformed using the desired
-  /// matrix!
-  ///
-  /// This instance owns the mesh_sets
-  ///
-  typedef std::vector <mesh_set> MeshSetList;
-  MeshSetList m_cached_meshes;
-  
-public:  
-
-  /// Searches a mesh set with a error tolerance below max_error.
-  /// Returns NULL when no candidate could be found.
-  /// Ownership is NOT transferred
-  mesh_set* search_candidate(float max_error);
-    
-  /// Adds a mesh set to the cache. 
-  //
-  /// Transfer ownerhips of the mesh_set.
-  /// TODO: take an auto_ptr
-  ///
-  void add(mesh_set* m);
-    
-  /// Maintain cached meshes. Clean out mesh_sets that haven't been used 
-  /// recently, and make sure they're sorted from high error to low error.
-  void sort_and_clean_meshes();  
-
-  /// Drop all cached meshes
-  virtual ~tri_cache_manager();
-  
-}; // class tri_cache_manager
-
-
-
-
-/// \brief
-/// This is the base class for all triangle-based renderers (hardware 
-/// accelerated ones, for example).
-//
-/// It shields the renderer from the special
-/// Flash edges that have two fill styles - one for each side. Also, Flash 
-/// shapes do not contain single, closed polygons. 
-/// The triangulating_render_handler contains algorithms that transform the
-/// shapes to simplified triangle sets ("mesh sets") that are relatively easy
-/// to render.
-///
-class triangulating_render_handler : public render_handler 
-{
-public:
-  
-  // --- reimplemented methods 
-------------------------------------------------  
-  // The implementation of this virtual method takes care that the shape is
-  // translated to a mesh set. Triangulating backends do not need to declare
-  // their own draw_shape_character. 
-  
-  /// This method is required by all render handlers. The triangulating render
-  /// handler has already a common implementation that uses a tesselator and
-  /// generates mesh sets that can be used by simpler handlers.  
-  /*void draw_shape_character(shape_character_def *def, 
-    character *inst);*/
-    
-  /// Alterante version of draw_shape_character() which does not depend on any
-  /// character instance and accepts arbitrary line and fill styles. 
-       void draw_shape_character(shape_character_def *def, 
-    const matrix& mat,
-    const cxform& cx,
-    float pixel_scale,
-    const std::vector<fill_style>& fill_styles,
-    const std::vector<line_style>& line_styles);    
-
-  /// 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);
-  
-  /// 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, bool masked);
-    
-  /// The glyph is drawn just like a normal shape character.
-  virtual void draw_glyph(shape_character_def *def,
-    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.
-  bool allow_glyph_textures() { return true; }
-
-  /// Translates world coordinates to pixel coordinates
-  geometry::Range2d<int> world_to_pixel(const rect& worldbounds);
-  
-  point pixel_to_world(int x, int y);
-    
-  // --- helper methods 
--------------------------------------------------------
-  // These methods are called by draw_shape_character() and normally don't need
-  // to be accessed by other classes. They are here to make the class more
-  // readable and flexible.
-  // Note: The old methods mesh_set::display(), fill_style::apply() etc. have 
-  // been removed to disallow them completely since these methods rely on 
-  // triangular renderers which may not be available. This is the reason why
-  // the methods have been re-implemented inside triangulating_render_handler. 
-  
-  void draw_mesh_set(const mesh_set& m, const matrix& mat, const cxform& cx,
-    const std::vector<fill_style> &fill_styles,
-    const std::vector<line_style> &line_styles, float ratio);
-    
-  void apply_fill_style(const fill_style& style, int fill_side, float ratio);
-  void apply_line_style(const line_style& style, float ratio);
-  
-  
-  
-  // --- low level graphic methods 
---------------------------------------------
-  // These methods were defined in the older render_handler design. They must 
be
-  // implemented by the real handlers as they are defined abstract.   
-  
-  /// Disables the current fill style (so that it is transparent) for the 
-  /// given fill side (which is always zero?).
-       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, 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. 
-       virtual void    fill_style_bitmap(int fill_side, const bitmap_info* bi, 
-    const matrix& m, bitmap_wrap_mode wm) = 0;
-  
-  /// Disables the current line style
-       virtual void    line_style_disable() = 0;
-       
-       /// Sets the stroke color for subsequent draw_line_strip() calls 
-       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. 
-       virtual void    line_style_width(float width) = 0;
-       
-       /// Draws the given line strip using the current transformation matrix.
-  virtual void draw_line_strip(const void* coords, int vertex_count) = 0;
-       
-       /// Draws the given mesh strip (trianges) using the current 
transformation 
-  /// matrix.
-  virtual void draw_mesh_strip(const void* coords, int vertex_count) = 0; 
-
-    
-
-protected:
-  static const float   s_curve_max_pixel_error; //  = 1.0f;
-    
-  
-  /// Returns the cache manager instance of the given character definition.
-  /// Allocates a new manager if necessary.
-  tri_cache_manager* get_cache_of(character_def* def);
-  
-
-}; // class render_handler_impl
-
-} // namespace gnash
-
-#endif // GNASH_RENDER_HANDLER_IMPL_H




reply via email to

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