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(); } }
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); } }
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); } }