diff --git a/src/render.cpp b/src/render.cpp deleted file mode 100644 index 2af5f74d7..000000000 --- a/src/render.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/* This file is part of Mapnik (c++ mapping toolkit) - * Copyright (C) 2005 Artem Pavlenko - * - * Mapnik is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -//$Id: render.cpp 44 2005-04-22 18:53:54Z pavlenko $ - -#include "render.hpp" -#include "image_util.hpp" -#include "utils.hpp" -#include "symbolizer.hpp" -#include "query.hpp" -#include "feature_layer_desc.hpp" -#include "attribute_collector.hpp" -#include "property_index.hpp" - -#include -#include -#include - -namespace mapnik -{ - - template - void Renderer::render_vector_layer(datasource_p const& ds,Map const& map, - std::vector const& namedStyles, - unsigned width,unsigned height, - const Envelope& bbox,Image& image) - { - CoordTransform t(width,height,bbox); - std::vector::const_iterator stylesIter=namedStyles.begin(); - while (stylesIter!=namedStyles.end()) - { - std::set names; - attribute_collector collector(names); - property_index indexer(names); - query q(bbox,width,height); - double scale = 1.0/t.scale(); - std::vector if_rules; - std::vector else_rules; - - bool active_rules=false; - - feature_type_style const& style=map.find_style(*stylesIter++); - - const std::vector& rules=style.get_rules(); - std::vector::const_iterator ruleIter=rules.begin(); - - while (ruleIter!=rules.end()) - { - if (ruleIter->active(scale)) - { - active_rules=true; - filter_ptr& filter=const_cast(ruleIter->get_filter()); - filter->accept(collector); - filter->accept(indexer); - if (ruleIter->has_else_filter()) - { - else_rules.push_back(const_cast(&(*ruleIter))); - } - else - { - if_rules.push_back(const_cast(&(*ruleIter))); - } - } - ++ruleIter; - } - - std::set::const_iterator namesIter=names.begin(); - // push all property names - while (namesIter!=names.end()) - { - q.add_property_name(*namesIter); - ++namesIter; - } - //only query datasource if there are active rules - if (active_rules) - { - featureset_ptr fs=ds->features(q); - if (fs) - { - feature_ptr feature; - while ((feature = fs->next())) - { - bool do_else=true; - std::vector::const_iterator itr=if_rules.begin(); - while (itr!=if_rules.end()) - { - const filter_ptr& filter=(*itr)->get_filter(); - if (filter->pass(*feature)) - { - do_else=false; - const symbolizers& symbols = (*itr)->get_symbolizers(); - symbolizers::const_iterator symIter=symbols.begin(); - while (symIter!=symbols.end()) - { - (*symIter)->render(*feature,t,image); - ++symIter; - } - } - ++itr; - } - if (do_else) - { - //else filter - std::vector::const_iterator itr=else_rules.begin(); - while (itr != else_rules.end()) - { - const symbolizers& symbols = (*itr)->get_symbolizers(); - symbolizers::const_iterator symIter=symbols.begin(); - while (symIter!=symbols.end()) - { - (*symIter)->render(*feature,t,image); - ++symIter; - } - ++itr; - } - } - } - } - } - } - } - - template - void Renderer::render_raster_layer(datasource_p const& ds, - std::vector const& , - unsigned width,unsigned height, - const Envelope& bbox,Image& image) - { - query q(bbox,width,height); - featureset_ptr fs=ds->features(q); - if (fs) - { - feature_ptr feature; - while ((feature = fs->next())) - { - raster_ptr const& raster=feature->get_raster(); - if (raster) - { - image.set_rectangle(raster->x_,raster->y_,raster->data_); - } - } - } - } - - template - void Renderer::render(Map const& map,Image& image) - { - timer clock; - ////////////////////////////////////////////////////// - Envelope const& extent=map.getCurrentExtent(); - std::clog<<"BBOX:"<