1
2//----------------------------------------------------------------------------
3// Anti-Grain Geometry - Version 2.3
4// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
5//
6// Permission to copy, use, modify, sell and distribute this software
7// is granted provided this copyright notice appears in all copies.
8// This software is provided "as is" without express or implied
9// warranty, and with no claim as to its suitability for any purpose.
10//
11//----------------------------------------------------------------------------
12// Contact: mcseem@antigrain.com
13//          mcseemagg@yahoo.com
14//          http://www.antigrain.com
15//----------------------------------------------------------------------------
16#ifndef AGG_RENDER_SCANLINES_INCLUDED
17#define AGG_RENDER_SCANLINES_INCLUDED
18#include "agg_basics.h"
19namespace agg
20{
21template<class Rasterizer, class Scanline, class Renderer>
22void render_scanlines(Rasterizer& ras, Scanline& sl, Renderer& ren, bool no_smooth)
23{
24    if(ras.rewind_scanlines()) {
25        sl.reset(ras.min_x(), ras.max_x());
26        ren.prepare(unsigned(ras.max_x() - ras.min_x() + 2));
27        while(ras.sweep_scanline(sl, no_smooth)) {
28            ren.render(sl);
29        }
30    }
31}
32template<class Rasterizer, class Scanline, class Renderer,
33         class VertexSource, class ColorStorage, class PathId>
34void render_all_paths(Rasterizer& ras,
35                      Scanline& sl,
36                      Renderer& r,
37                      VertexSource& vs,
38                      const ColorStorage& as,
39                      const PathId& path_id,
40                      unsigned num_paths)
41{
42    for(unsigned i = 0; i < num_paths; i++) {
43        ras.reset();
44        ras.add_path(vs, path_id[i]);
45        r.color(as[i]);
46        render_scanlines(ras, sl, r);
47    }
48}
49}
50#endif
51