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 GCDCGraphs::DrawNoData(wxGraphicsContext &dc) { wxFont font = GetFont(); font.SetPointSize(font.GetPointSize() + 8); dc.SetFont(font, *wxWHITE); int w, h; GetClientSize(&w, &h); w -= m_screen_margins.leftmargin - m_screen_margins.rightmargin; h -= m_screen_margins.topmargin - m_screen_margins.bottommargin; wxString sval = _("No data"); double textw, texth, textd, textel; dc.GetTextExtent(sval, &textw, &texth, &textd, &textel); dc.DrawText(sval, m_screen_margins.leftmargin + w / 2 - textw / 2 - 1, m_screen_margins.topmargin + h / 2 - texth / 2); }
void GCDCGraphs::DrawWindowInfo(wxGraphicsContext &dc) { double info_left_marg = m_screen_margins.leftmargin + 8; double param_name_shift = 5; if (m_draws.size() < 1) return; int w, h; GetClientSize(&w, &h); DrawInfo *info = m_draws[0]->GetDrawInfo(); wxString name = info->GetSetName().c_str(); double namew, nameh, th, tsel; dc.GetTextExtent(name, &namew, &nameh, &th, &tsel); dc.DrawText(name, info_left_marg, m_screen_margins.infotopmargin); int xpos = info_left_marg + namew + param_name_shift; for (int i = 0; i < (int)m_draws.size(); ++i) { if (!m_draws[i]->GetEnable()) continue; DrawInfo *info = m_draws[i]->GetDrawInfo(); dc.SetFont(GetFont(), info->GetDrawColor()); name = info->GetShortName().c_str(); if (!name.IsEmpty()) { dc.GetTextExtent(name, &namew, &nameh, &th, &tsel); dc.DrawText(name, xpos, m_screen_margins.infotopmargin); xpos += namew + param_name_shift; } else { xpos += param_name_shift; } } }
void wxChartTooltip::Draw(wxGraphicsContext &gc) { wxString text = m_provider->GetTooltipText(); wxFont font(wxSize(0, m_options.GetFontSize()), m_options.GetFontFamily(), m_options.GetFontStyle(), wxFONTWEIGHT_NORMAL); wxDouble tooltipWidth; wxDouble tooltipHeight; wxChartUtilities::GetTextSize(gc, font, text, tooltipWidth, tooltipHeight); tooltipWidth += 2 * m_options.GetHorizontalPadding(); tooltipHeight += 2 * m_options.GetVerticalPadding(); wxDouble tooltipX = m_position.m_x - (tooltipWidth / 2); wxDouble tooltipY = m_position.m_y - tooltipHeight; wxChartBackground background(m_options.GetBackgroundOptions()); background.Draw(tooltipX, tooltipY, tooltipWidth, tooltipHeight, gc); gc.SetFont(font, m_options.GetFontColor()); gc.DrawText(text, tooltipX + m_options.GetHorizontalPadding(), tooltipY + m_options.GetVerticalPadding()); }
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; } }