示例#1
0
文件: rset.hpp 项目: ilelann/legacy
bool operator== (const rset<Type1, Type2, Type1Equality, Type2Equality>& x,
                 const rset<Type1, Type2, Type1Equality, Type2Equality>& y)
{
    typedef rset<Type1, Type2, Type1Equality, Type2Equality> set_type;
    typedef typename set_type::const_iterator                iterator;
    typedef typename set_type::first_compare_type            first_compare_type;
    typedef typename set_type::second_compare_type           second_compare_type;

    if (x.size() != y.size())
        return false;

    iterator            x_iter(x.begin());
    iterator            x_last(x.end());
    iterator            y_iter(y.begin());
    first_compare_type  pred1(x.first_compare());
    second_compare_type pred2(x.second_compare());

    for (; x_iter != x_last; ++x_iter, ++y_iter)
        if (!pred1(x_iter->first, y_iter->first) ||
            !pred2(x_iter->second, y_iter->second))
            return false;

    return true;
}
void 
TraceHistoryRenderer::render_filled_posneg(ChartRenderer &chart,
                                           const TraceVariableHistory& var) const
{
  fixed x_last(fixed(0)), y_last(fixed(0));
  unsigned i=0;
  for (auto it = var.begin(); it != var.end(); ++it, ++i) {
    fixed x= fixed(i);
    fixed y= *it;
    if (i) {
      if (sgn(y)*sgn(y_last)<0) {
        if (positive(y_last))
          chart.DrawFilledLine(x_last, y_last, x_last+fixed(0.5), fixed(0),
                               vario_look.lift_brush);
        else if (negative(y_last))
          chart.DrawFilledLine(x_last, y_last, x_last+fixed(0.5), fixed(0),
                               vario_look.sink_brush);

        x_last = x-fixed(0.5);
        y_last = fixed(0);

      }
      if (positive(y) || positive(y_last))
        chart.DrawFilledLine(x_last, y_last, x, y, vario_look.lift_brush);
      else if (negative(y) || negative(y_last))
        chart.DrawFilledLine(x_last, y_last, x, y, vario_look.sink_brush);
    }
    x_last = x;
    y_last = y;
  }
  if (look.inverse)
    chart.GetCanvas().SelectWhiteBrush();
  else
    chart.GetCanvas().SelectBlackBrush();
  chart.DrawDot(x_last, y_last, Layout::Scale(2));
}