1//---------------------------------------------------------------------------- 2// Anti-Grain Geometry - Version 2.4 3// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com) 4// 5// Permission to copy, use, modify, sell and distribute this software 6// is granted provided this copyright notice appears in all copies. 7// This software is provided "as is" without express or implied 8// warranty, and with no claim as to its suitability for any purpose. 9// 10//---------------------------------------------------------------------------- 11// Contact: mcseem@antigrain.com 12// mcseemagg@yahoo.com 13// http://www.antigrain.com 14//---------------------------------------------------------------------------- 15 16#ifndef AGG_SPAN_CONVERTER_INCLUDED 17#define AGG_SPAN_CONVERTER_INCLUDED 18 19#include "agg_basics.h" 20 21namespace agg 22{ 23 //----------------------------------------------------------span_converter 24 template<class SpanGenerator, class SpanConverter> class span_converter 25 { 26 public: 27 typedef typename SpanGenerator::color_type color_type; 28 29 span_converter(SpanGenerator& span_gen, SpanConverter& span_cnv) : 30 m_span_gen(&span_gen), m_span_cnv(&span_cnv) {} 31 32 void attach_generator(SpanGenerator& span_gen) { m_span_gen = &span_gen; } 33 void attach_converter(SpanConverter& span_cnv) { m_span_cnv = &span_cnv; } 34 35 //-------------------------------------------------------------------- 36 void prepare() 37 { 38 m_span_gen->prepare(); 39 m_span_cnv->prepare(); 40 } 41 42 //-------------------------------------------------------------------- 43 void generate(color_type* span, int x, int y, unsigned len) 44 { 45 m_span_gen->generate(span, x, y, len); 46 m_span_cnv->generate(span, x, y, len); 47 } 48 49 private: 50 SpanGenerator* m_span_gen; 51 SpanConverter* m_span_cnv; 52 }; 53 54} 55 56#endif 57