#include <Renderer_cairo.h>
Public Member Functions | |
Renderer_cairo () | |
Implementation of Renderer_cairo class. | |
~Renderer_cairo () | |
CachedBitmap * | createCachedBitmap (std::auto_ptr< GnashImage > im) |
Given an image, returns a pointer to a bitmap_info class that can later be passed to FillStyleX_bitmap(), to set a bitmap fill style. | |
void | drawVideoFrame (GnashImage *baseframe, const SWFMatrix *m, const SWFRect *bounds, bool smooth) |
Draws a video frame. | |
geometry::Range2d< int > | world_to_pixel (const SWFRect &worldbounds) |
Converts world coordinates to pixel coordinates. | |
point | pixel_to_world (int x, int y) |
Converts pixel coordinates to world coordinates (TWIPS). | |
void | set_color (const rgba &c) |
void | set_invalidated_regions (const InvalidatedRanges &ranges) |
void | begin_display (const rgba &bg_color, int viewport_width, int viewport_height, float x0, float x1, float y0, float y1) |
Bracket the displaying of a frame from a movie. | |
void | end_display () |
void | set_scale (float xscale, float yscale) |
Sets the x/y scale for the movie. | |
void | set_translation (float xoff, float yoff) |
void | drawLine (const std::vector< point > &coords, const rgba &color, const SWFMatrix &mat) |
Draw a line-strip directly, using a thin, solid line. | |
void | draw_poly (const point *corners, size_t corner_count, const rgba &fill, const rgba &outline, const SWFMatrix &mat, bool masked) |
Draw a simple, solid filled polygon with a thin (~1 pixel) outline. | |
void | set_antialiased (bool enable) |
void | begin_submit_mask () |
void | end_submit_mask () |
void | disable_mask () |
void | add_path (cairo_t *cr, const Path &cur_path) |
void | apply_line_style (const LineStyle &style, const cxform &cx, const SWFMatrix &mat) |
void | draw_outlines (const PathVec &path_vec, const std::vector< LineStyle > &line_styles, const cxform &cx, const SWFMatrix &mat) |
std::vector < PathVec::const_iterator > | find_subshapes (const PathVec &path_vec) |
void | draw_subshape (const PathVec &path_vec, const SWFMatrix &mat, const cxform &cx, const std::vector< FillStyle > &FillStyles, const std::vector< LineStyle > &line_styles) |
void | draw_mask (const PathVec &path_vec) |
void | add_paths (const PathVec &path_vec) |
void | apply_matrix_to_paths (std::vector< Path > &paths, const SWFMatrix &mat) |
Takes a path and translates it using the given SWFMatrix. | |
void | drawShape (const SWF::ShapeRecord &shape, const cxform &cx, const SWFMatrix &mat) |
void | drawGlyph (const SWF::ShapeRecord &rec, const rgba &color, const SWFMatrix &mat) |
Draws a glyph (font character). | |
void | set_context (cairo_t *context) |
unsigned int | getBitsPerPixel () const |
bool | getPixel (rgba &color_return, int x, int y) const |
bool | initTestBuffer (unsigned width, unsigned height) |
gnash::Renderer_cairo::Renderer_cairo | ( | ) |
Implementation of Renderer_cairo class.
gnash::Renderer_cairo::~Renderer_cairo | ( | ) |
void gnash::Renderer_cairo::add_path | ( | cairo_t * | cr, | |
const Path & | cur_path | |||
) |
Referenced by apply_matrix_to_paths().
void gnash::Renderer_cairo::add_paths | ( | const PathVec & | path_vec | ) |
void gnash::Renderer_cairo::apply_line_style | ( | const LineStyle & | style, | |
const cxform & | cx, | |||
const SWFMatrix & | mat | |||
) |
void gnash::Renderer_cairo::apply_matrix_to_paths | ( | std::vector< Path > & | paths, | |
const SWFMatrix & | mat | |||
) |
Takes a path and translates it using the given SWFMatrix.
References add_path().
void gnash::Renderer_cairo::begin_display | ( | const rgba & | background_color, | |
int | viewport_width, | |||
int | viewport_height, | |||
float | x0, | |||
float | x1, | |||
float | y0, | |||
float | y1 | |||
) | [virtual] |
Bracket the displaying of a frame from a movie.
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.
Implements gnash::Renderer.
void gnash::Renderer_cairo::begin_submit_mask | ( | ) | [virtual] |
Masks
Masks are defined by drawing calls enclosed by begin_submit_mask() and end_submit_mask(). Between these two calls, no drawing is to occur. The shapes rendered between the two calls define the visible region of the mask. Graphics that are irrelevant in the context of a mask (lines and fill styles, for example) should be ignored. After use, disable_mask() is called to remove the mask.
Masks may be nested. That is, end_submit_mask() may be followed by a call to begin_submit_mask(). The resulting mask shall be an intersection of the previously created mask. disable_mask() shall result in the disabling or destruction of the last created mask.
Implements gnash::Renderer.
CachedBitmap * gnash::Renderer_cairo::createCachedBitmap | ( | std::auto_ptr< GnashImage > | im | ) | [virtual] |
Given an image, returns a pointer to a bitmap_info class that can later be passed to FillStyleX_bitmap(), to set a bitmap fill style.
================================================================== Caching utitilies for core. ==================================================================
Implements gnash::Renderer.
void gnash::Renderer_cairo::disable_mask | ( | ) | [virtual] |
Implements gnash::Renderer.
void gnash::Renderer_cairo::draw_mask | ( | const PathVec & | path_vec | ) |
void gnash::Renderer_cairo::draw_outlines | ( | const PathVec & | path_vec, | |
const std::vector< LineStyle > & | line_styles, | |||
const cxform & | cx, | |||
const SWFMatrix & | mat | |||
) |
Referenced by find_subshapes().
void gnash::Renderer_cairo::draw_poly | ( | const point * | corners, | |
size_t | corner_count, | |||
const rgba & | fill, | |||
const rgba & | outline, | |||
const SWFMatrix & | mat, | |||
bool | masked | |||
) | [virtual] |
Draw a simple, solid filled polygon with a thin (~1 pixel) outline.
This can't be used for Flash shapes but is intended for internal drawings like bounding boxes (editable text fields) and similar. The polygon should not contain self-intersections. If you do not wish a outline or a fill, then simply set the alpha value to zero.
The polygon need NOT be closed (ie: this function will automatically add an additional vertex to close it.
When masked==false, then any potential mask currently active will be ignored, otherwise it is respected.
Implements gnash::Renderer.
void gnash::Renderer_cairo::draw_subshape | ( | const PathVec & | path_vec, | |
const SWFMatrix & | mat, | |||
const cxform & | cx, | |||
const std::vector< FillStyle > & | FillStyles, | |||
const std::vector< LineStyle > & | line_styles | |||
) |
void gnash::Renderer_cairo::drawGlyph | ( | const SWF::ShapeRecord & | rec, | |
const rgba & | color, | |||
const SWFMatrix & | mat | |||
) | [virtual] |
Draws a glyph (font character).
Glyphs are defined just like shape characters with the difference that they do not have any fill or line styles. Instead, the shape must be drawn using the given color (solid fill). Please note that although the glyph paths may indicate subshapes, the renderer is to ignore that information.
def | ||
mat | ||
color |
Implements gnash::Renderer.
void gnash::Renderer_cairo::drawLine | ( | const std::vector< point > & | coords, | |
const rgba & | color, | |||
const SWFMatrix & | mat | |||
) | [virtual] |
Draw a line-strip directly, using a thin, solid line.
Can be used to draw empty boxes and cursors.
an array of 16-bit signed integer coordinates. Even indices (and 0) are x coordinates, while uneven ones are y coordinates.
the number of x-y coordinates (vertices).
the color to be used to draw the line strip.
the SWFMatrix to be used to transform the vertices.
Implements gnash::Renderer.
void gnash::Renderer_cairo::drawShape | ( | const SWF::ShapeRecord & | shape, | |
const cxform & | cx, | |||
const SWFMatrix & | mat | |||
) | [virtual] |
Implements gnash::Renderer.
References gnash::key::_1, gnash::for_each(), and gnash::Path::transform().
void gnash::Renderer_cairo::drawVideoFrame | ( | GnashImage * | frame, | |
const SWFMatrix * | mat, | |||
const SWFRect * | bounds, | |||
bool | smooth | |||
) | [virtual] |
Draws a video frame.
================================================================== Rendering Interface. ================================================================== The frame has already been decoded and is available in RGB format only.
frame | The RGB video buffer frame. Ownership of the buffer is left to the caller. | |
mat | The SWFMatrix with world coordinates used to retrieve the x and y coordinate of the video object. The scaling of the SWFMatrix only refers to the Flash instance, *not* to the video inside that instance. When a video object is placed on the stage and the loaded video is smaller, then the SWFMatrix is still an "identity matrix". However, if the video object is scaled via ActionScript, for example, then the SWFMatrix will change. This means the renderer has to find the correct scaling for the video inside the bounds. | |
bounds | The minX/minY fields of this SWFRect are always zero. The width and height determine the size of the Flash video instance on the stage (in TWIPS) prior to SWFMatrix transformations. |
Implements gnash::Renderer.
void gnash::Renderer_cairo::end_display | ( | ) | [virtual] |
Implements gnash::Renderer.
void gnash::Renderer_cairo::end_submit_mask | ( | ) | [virtual] |
Implements gnash::Renderer.
std::vector< PathVec::const_iterator > gnash::Renderer_cairo::find_subshapes | ( | const PathVec & | path_vec | ) |
References draw_outlines().
unsigned int gnash::Renderer_cairo::getBitsPerPixel | ( | ) | const |
bool gnash::Renderer_cairo::getPixel | ( | rgba & | color_return, | |
int | x, | |||
int | y | |||
) | const |
bool gnash::Renderer_cairo::initTestBuffer | ( | unsigned | width, | |
unsigned | height | |||
) |
point gnash::Renderer_cairo::pixel_to_world | ( | int | x, | |
int | y | |||
) | [virtual] |
Converts pixel coordinates to world coordinates (TWIPS).
Implements gnash::Renderer.
void gnash::Renderer_cairo::set_antialiased | ( | bool | enable | ) |
void gnash::Renderer_cairo::set_color | ( | const rgba & | c | ) |
void gnash::Renderer_cairo::set_context | ( | cairo_t * | context | ) |
void gnash::Renderer_cairo::set_invalidated_regions | ( | const InvalidatedRanges & | ranges | ) | [virtual] |
Reimplemented from gnash::Renderer.
References gnash::rgba::m_a, gnash::rgba::m_b, gnash::rgba::m_g, and gnash::rgba::m_r.
void gnash::Renderer_cairo::set_scale | ( | float | , | |
float | ||||
) | [virtual] |
Sets the x/y scale for the movie.
================================================================== Interfaces for adjusting renderer output. ==================================================================
Reimplemented from gnash::Renderer.
void gnash::Renderer_cairo::set_translation | ( | float | , | |
float | ||||
) | [virtual] |
Sets the x/y offset for the movie in pixels. This applies to all graphics drawn except the background, which must be drawn for the entire canvas, regardless of the translation.
Reimplemented from gnash::Renderer.
geometry::Range2d< int > gnash::Renderer_cairo::world_to_pixel | ( | const SWFRect & | worldbounds | ) | [virtual] |
Converts world coordinates to pixel coordinates.
================================================================== Interface for querying the renderer. ==================================================================
Implements gnash::Renderer.