27 #include "../../../dataaccess/dataset/DataSet.h" 
   28 #include "../../../maptools/Chart.h" 
   33 #include <boost/lexical_cast.hpp> 
   39   : te::map::AbstractChartRenderer()
 
   42   m_brush.setStyle(Qt::SolidPattern);
 
   59       result = drawPies(chart, dataset, width);
 
   63       result = drawBars(chart, dataset, width);
 
   78   m_painter.setRenderHints(QPainter::Antialiasing);
 
   89   QImage* img = 
new QImage(chart->
getWidth(), chart->
getHeight(), QImage::Format_ARGB32_Premultiplied);
 
   90   img->fill(Qt::transparent);
 
   97   std::vector<double> values;
 
   98   getValues(chart, dataset, values);
 
  100   double sum = computeSum(values);
 
  105   for(std::size_t i = 0; i < values.size(); ++i)
 
  107     int currentAngle = 
static_cast<int>((values[i] * 5760) / sum);
 
  111     shadowColor.setAlpha(128);
 
  113     QPen shadowPen(shadowColor);
 
  114     shadowPen.setWidth(2);
 
  115     m_painter.setPen(shadowPen);
 
  116     m_painter.drawPie(img->rect(), lastAngle, currentAngle);
 
  119     m_painter.setPen(m_pen);
 
  122     m_painter.drawPie(img->rect(), lastAngle, currentAngle);
 
  124     lastAngle += currentAngle;
 
  135   QImage* img = 
new QImage(chart->
getWidth(), chart->
getHeight(), QImage::Format_ARGB32_Premultiplied);
 
  136   img->fill(Qt::transparent);
 
  142   m_painter.setPen(m_pen);
 
  144   std::vector<double> values;
 
  145   getValues(chart, dataset, values);
 
  149   assert(maxValue > 0.0);
 
  153   int shadowOffset = 2;
 
  156   for(std::size_t i = 0; i < values.size(); ++i)
 
  158     int barHeight = 
static_cast<int>((values[i] * chart->
getHeight()) / maxValue);
 
  161     QRect shadowBar(lastx - shadowOffset, -shadowOffset, chart->
getBarWidth() + shadowOffset, barHeight + shadowOffset);
 
  163     shadowColor.setAlpha(128);
 
  164     m_painter.setBrush(shadowColor);
 
  166     m_painter.setPen(Qt::NoPen);
 
  167     m_painter.drawRect(shadowBar);
 
  170     QRect bar(lastx, 0, chart->
getBarWidth(), barHeight);
 
  173     m_painter.setPen(m_pen);
 
  176     m_painter.drawRect(bar);
 
  184   QImage* mirroed = 
new QImage(img->mirrored());
 
  193   std::size_t precision = 5;
 
  195   const std::vector<std::string>& properties = chart->
getProperties();
 
  197   for(std::size_t i = 0; i < properties.size(); ++i)
 
  199     std::string value = dataset->
getAsString(properties[i], precision);
 
  200     values.push_back(boost::lexical_cast<double>(value));
 
  208   for(std::size_t i = 0; i < values.size(); ++i)
 
  218   for(std::size_t i = 0; i < values.size(); ++i)
 
  219     if(std::abs(values[i]) > max)
 
ChartType getType() const 
 
const std::vector< std::string > & getProperties() const 
 
std::size_t getBarWidth() const 
 
double getMaxValue() const 
 
A concrete chart renderer based on Qt4. 
 
const te::color::RGBAColor & getColor(std::size_t i) const 
 
This class represents the informations needed to build map charts. 
 
std::size_t getHeight() const 
 
virtual std::string getAsString(std::size_t i, int precision=0) const 
Method for retrieving a data value as a string plain representation. 
 
A dataset is the unit of information manipulated by the data access module of TerraLib. 
 
std::size_t getContourWidth() const 
 
const te::color::RGBAColor & getContourColor() const 
 
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color. 
 
std::size_t getWidth() const