Пример #1
0
void RS_ActionSelectWindow::mouseMoveEvent(QMouseEvent* e) {
    snapFree(e);
    drawSnapper();
    if (getStatus()==SetCorner2 && v1.valid) {
        v2 = snapFree(e);
        deletePreview();
                RS_Pen pen_f(RS_Color(50,50,255,40), RS2::Width00, RS2::SolidLine);
                RS_OverlayBox* ob=new RS_OverlayBox(preview, RS_OverlayBoxData(v1, v2));
                ob->setPen(pen_f);
                preview->addEntity(ob);

                //RLZ: not needed overlay have contour
/*                RS_Pen pen(RS_Color(218,105,24), RS2::Width00, RS2::SolidLine);

                // TODO change to a rs_box sort of entity
                RS_Line* e=new RS_Line(preview, RS_LineData(RS_Vector(v1.x, v1.y),  RS_Vector(v2.x, v1.y)));
                e->setPen(pen);
        preview->addEntity(e);

                e=new RS_Line(preview, RS_LineData(RS_Vector(v2.x, v1.y),  RS_Vector(v2.x, v2.y)));
                e->setPen(pen);
        preview->addEntity(e);

                e=new RS_Line(preview, RS_LineData(RS_Vector(v2.x, v2.y),  RS_Vector(v1.x, v2.y)));
                e->setPen(pen);
        preview->addEntity(e);

                e=new RS_Line(preview, RS_LineData(RS_Vector(v1.x, v2.y),  RS_Vector(v1.x, v1.y)));
                e->setPen(pen);
        preview->addEntity(e);*/

        drawPreview();
    }
}
Пример #2
0
void 
TaskProgressRenderer::Draw(const TaskSummary& summary, Canvas &canvas,
                           const PixelRect &rc, bool inverse)
{
  const int radius = std::min(rc.right - rc.left, rc.bottom - rc.top) / 2 - 
                     Layout::Scale(3);
  RasterPoint center;
  center.x = (rc.left + rc.right) / 2;
  center.y = (rc.bottom + rc.top) / 2;

  const fixed sweep = fixed_two_pi * fixed(0.9);
  Pen pen_f(1, inverse ? COLOR_WHITE : COLOR_BLACK);

  if (summary.p_remaining < fixed(0.99)) {
    canvas.Select(look.hbGray);
    canvas.SelectNullPen();
    canvas.DrawSegment(center.x, center.y, radius, Angle::Zero(),
                   Angle::Radians(sweep * (fixed(1) -  summary.p_remaining)));
  }

  canvas.Select(pen_f);
  canvas.SelectHollowBrush();
  canvas.DrawCircle(center.x, center.y, radius);

  unsigned i = 0;
  canvas.Select(pen_f);
  for (auto it = summary.pts.begin(); it != summary.pts.end(); ++it, ++i) {
    Angle a = Angle::Radians(it->p * sweep);
    int x = center.x + (int)(radius * a.fastsine());
    int y = center.y - (int)(radius * a.fastcosine());
    int w;
    if (i == summary.active) {
      if (it->achieved)
        canvas.Select(look.hbGreen);
      else
        canvas.Select(look.hbOrange);

      w = Layout::Scale(3);
    } else if (i < summary.active) {
      if (it->achieved)
        canvas.Select(look.hbGreen);
      else
        canvas.Select(look.hbNotReachableTerrain);

      w = Layout::Scale(2);
    } else {
      if (it->achieved)
        canvas.Select(look.hbGreen);
      else
        canvas.Select(look.hbLightGray);

      w = Layout::Scale(1);
    }
    
    canvas.Rectangle(x - w, y - w, x + w, y + w);
  }
}
Пример #3
0
void 
TaskProgressRenderer::DrawTaskProgress(const TaskSummary& summary,
                                       Canvas &canvas, 
                                       const PixelRect &rc)
{
  const int radius = std::min(rc.right-rc.left, rc.bottom-rc.top)/2-IBLSCALE(3);
  RasterPoint center;
  center.x = (rc.left+rc.right)/2;
  center.y = (rc.bottom+rc.top)/2;

  const fixed sweep = fixed_two_pi*fixed(0.9);
  Pen pen_f(1, Appearance.InverseInfoBox ? COLOR_WHITE : COLOR_BLACK);

  if (summary.p_remaining<fixed(0.99)) {
    canvas.select(Graphics::hbWind);
    canvas.null_pen();
    canvas.segment(center.x, center.y, radius, Angle::radians(fixed_zero),
                   Angle::radians(sweep*(fixed_one-summary.p_remaining)));
  }

  canvas.select(pen_f);
  canvas.hollow_brush();
  canvas.circle(center.x, center.y, radius);

  unsigned i=0;
  canvas.select(pen_f);
  for (TaskSummary::TaskSummaryPointVector::const_iterator it= summary.pts.begin();
       it != summary.pts.end(); ++it, ++i) {
    Angle a= Angle::radians(it->p*sweep);
    int x = center.x+(int)(radius*a.fastsine());
    int y = center.y-(int)(radius*a.fastcosine());
    int w;
    if (i== summary.active) {
      if (it->achieved) {
        canvas.select(Graphics::hbGreen);
      } else {
        canvas.select(Graphics::hbOrange);
      }
      w = IBLSCALE(3);
    } else if (i< summary.active) {
      if (it->achieved) {
        canvas.select(Graphics::hbGreen);
      } else {
        canvas.select(Graphics::hbNotReachableTerrain);
      }
      w = IBLSCALE(2);
    } else {
      if (it->achieved) {
        canvas.select(Graphics::hbGreen);
      } else {
        canvas.select(Graphics::hbLightGray);
      }
      w = IBLSCALE(1);
    }
    canvas.rectangle(x-w, y-w, x+w, y+w);
  }
}