/* Renderer.cpp * * Copyright (C) 2013 Jim Evins * * This file is part of glbarcode++. * * glbarcode++ is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * glbarcode++ 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with glbarcode++. If not, see . */ #include "Renderer.h" #include "DrawingPrimitives.h" glbarcode::Renderer::~Renderer() { } void glbarcode::Renderer::render( double w, double h, const std::list& primitives ) { drawBegin( w, h ); std::list::const_iterator primitive; for ( primitive = primitives.begin(); primitive != primitives.end(); primitive++ ) { if ( DrawingPrimitiveLine* line = dynamic_cast(*primitive) ) { drawLine( line->x(), line->y(), line->w(), line->h() ); } else if ( DrawingPrimitiveBox* box = dynamic_cast(*primitive) ) { drawBox( box->x(), box->y(), box->w(), box->h() ); } else if ( DrawingPrimitiveText* text = dynamic_cast(*primitive) ) { drawText( text->x(), text->y(), text->size(), text->text() ); } else if ( DrawingPrimitiveRing* ring = dynamic_cast(*primitive) ) { drawRing( ring->x(), ring->y(), ring->r(), ring->w() ); } else if ( DrawingPrimitiveHexagon* hex = dynamic_cast(*primitive) ) { drawHexagon( hex->x(), hex->y(), hex->h() ); } else { // NOT REACHED } } drawEnd(); }