void GCDCGraphs::DrawBackground(wxGraphicsContext &dc) { int w, h; GetClientSize(&w, &h); PeriodType pt = m_draws_wdg->GetSelectedDraw()->GetPeriod(); size_t pc = m_draws_wdg->GetSelectedDraw()->GetValuesTable().size(); dc.SetBrush(wxBrush(back2_col, wxSOLID)); dc.DrawRectangle(0, 0, w, h); size_t i = 0; int c = 1; double x = m_screen_margins.leftmargin + 1; while (i < pc) { double x1 = GetX(i); i += TimeIndex::PeriodMult[pt]; double x2 = GetX(i); if (c > 0) dc.SetBrush(wxBrush(back1_col, wxSOLID)); else dc.SetBrush(wxBrush(back2_col, wxSOLID)); c *= -1; dc.DrawRectangle(x, m_screen_margins.topmargin, x2 - x1, h - m_screen_margins.topmargin + 1); x = x + x2 - x1; } }
void GCDCGraphs::DrawParamName(wxGraphicsContext &dc) { DrawInfo *di = m_draws_wdg->GetCurrentDrawInfo(); if (di == NULL) return; dc.SetBrush(*wxBLACK_BRUSH); dc.SetPen(*wxWHITE_PEN); wxFont f = GetFont(); int ps = f.GetPointSize(); int fw = f.GetWeight(); f.SetWeight(wxFONTWEIGHT_BOLD); f.SetPointSize(ps * 1.25); dc.SetFont(f, di->GetDrawColor()); int w, h; GetSize(&w, &h); wxString text = m_cfg_mgr->GetConfigTitles()[di->GetBasePrefix()] + _T(":") + di->GetParamName(); double tw, th, _th, _ts; dc.GetTextExtent(text, &tw, &th, &_th, &_ts); dc.DrawRectangle(w / 2 - tw / 2 - 1, h / 2 - th / 2 - 1, tw + 2, th + 2); dc.DrawText(text, w / 2 - tw / 2, h / 2 - th / 2); f.SetPointSize(ps); f.SetWeight(fw); }
void wxChartArc::Draw(wxGraphicsContext &gc) { wxGraphicsPath path = gc.CreatePath(); if (m_innerRadius > 0) { path.AddArc(m_x, m_y, m_innerRadius, m_startAngle, m_endAngle, true); path.AddArc(m_x, m_y, m_outerRadius, m_endAngle, m_startAngle, false); } else { path.AddArc(m_x, m_y, m_outerRadius, m_endAngle, m_startAngle, false); path.AddLineToPoint(m_x, m_y); } path.CloseSubpath(); wxBrush brush(m_options.GetFillColor()); gc.SetBrush(brush); gc.FillPath(path); wxPen pen(*wxWHITE, m_options.GetOutlineWidth()); gc.SetPen(pen); gc.StrokePath(path); }
void wxChartBackground::Draw(wxDouble x, wxDouble y, wxDouble width, wxDouble height, wxGraphicsContext &gc) { wxGraphicsPath path = gc.CreatePath(); path.AddRoundedRectangle(x, y, width, height, m_options.GetCornerRadius()); wxBrush brush(m_options.GetColor()); gc.SetBrush(brush); gc.FillPath(path); }
void GCDCGraphs::DrawCursor(wxGraphicsContext &dc, Draw* d) { int i = d->GetCurrentIndex(); if (i < 0) return; if (d->GetValuesTable().at(i).IsData() == false) return; dc.SetBrush(wxBrush(wxColour(0,0,0), wxTRANSPARENT)); dc.SetPen(wxPen(*wxWHITE, 1, wxSOLID)); double x = GetX(i); double y = GetY(d->GetValuesTable().at(i).val, d->GetDrawInfo()); dc.DrawRectangle(x - 4, y - 4, 9, 9); }
void wxPDFViewPage::Draw(wxPDFViewPagesClient* client, wxDC& dc, wxGraphicsContext& gc, const wxRect& rect) { // Calculate the required bitmap size wxSize bmpSize = rect.GetSize(); double scaleX, scaleY; dc.GetUserScale(&scaleX, &scaleY); bmpSize.x *= scaleX; bmpSize.y *= scaleY; double screenScale = dc.GetContentScaleFactor(); bmpSize.x *= screenScale; bmpSize.y *= screenScale; wxBitmap bmp = client->GetCachedBitmap(m_index, bmpSize); if (bmp.IsOk()) { gc.DrawBitmap(bmp, rect.x, rect.y, rect.width, rect.height); } else { // Draw empty page gc.SetBrush(*wxWHITE_BRUSH); gc.SetPen(wxNullPen); gc.DrawRectangle(rect.x, rect.y, rect.width, rect.height); } }
void GCDCGraphs::DrawSeasonLimitInfo(wxGraphicsContext &dc, int i, int month, int day, bool summer) { const double stripe_width = 2; double x1 = GetX(i); double x2 = GetX(i + 1); double x = (x1 + x2) / 2; int w, h; GetClientSize(&w, &h); wxColour color = summer ? *wxBLUE : *wxRED; dc.SetFont(GetFont(), color); dc.SetPen(wxPen(color, 1, wxSOLID)); wxBrush brush(color); dc.SetBrush(brush); dc.DrawRectangle(x + 1, m_screen_margins.topmargin, stripe_width, w - m_screen_margins.topmargin - m_screen_margins.bottommargin); wxString str; if (summer) str = wxString(_("summer season")); else str = wxString(_("winter season")); str += wxString::Format(_T(" %d "), day); switch (month) { case 1: str += _("january"); break; case 2: str += _("february"); break; case 3: str += _("march"); break; case 4: str += _("april"); break; case 5: str += _("may"); break; case 6: str += _("june"); break; case 7: str += _("july"); break; case 8: str += _("august"); break; case 9: str += _("septermber"); break; case 10: str += _("october"); break; case 11: str += _("november"); break; case 12: str += _("december"); break; default: assert(false); } double tw, th, td, tsel; dc.GetTextExtent(_T("W"), &tw, &th, &td, &tsel); int ty = m_screen_margins.topmargin + 1; for (size_t i = 0; i < str.Len(); ++i) { double lw, lh, ld, lsel; wxString letter = str.Mid(i, 1); dc.GetTextExtent(letter, &lw, &lh, &ld, &lsel); dc.DrawText(letter, x + stripe_width + 2 + (tw - lw) / 2, ty); ty += th + 2; } }