/* Renderer.cpp * * Copyright (C) 2013 Jaye 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" 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 ( auto* line = dynamic_cast(*primitive) ) { drawLine( line->x(), line->y(), line->w(), line->h() ); } else if ( auto* box = dynamic_cast(*primitive) ) { drawBox( box->x(), box->y(), box->w(), box->h() ); } else if ( auto* text = dynamic_cast(*primitive) ) { drawText( text->x(), text->y(), text->size(), text->text(), text->halign() ); } else if ( auto* ring = dynamic_cast(*primitive) ) { drawRing( ring->x(), ring->y(), ring->r(), ring->w() ); } else if ( auto* hex = dynamic_cast(*primitive) ) { drawHexagon( hex->x(), hex->y(), hex->h() ); } else { // NOT REACHED } } drawEnd(); }