本文整理汇总了C++中DrawInfo::IsValid方法的典型用法代码示例。如果您正苦于以下问题:C++ DrawInfo::IsValid方法的具体用法?C++ DrawInfo::IsValid怎么用?C++ DrawInfo::IsValid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DrawInfo
的用法示例。
在下文中一共展示了DrawInfo::IsValid方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: wxMenu
void
SelectDrawValidator::OnMouseRightDown(wxMouseEvent &event) {
DrawInfo* di = m_draws_wdg->GetDrawInfo(m_index);
if (di == NULL)
return;
wxMenu menu;
DrawParam* dp = di->GetParam();
if (di->IsValid() && dp->GetIPKParam()->GetPSC())
menu.Append(seldrawID_PSC,_("Set parameter"));
menu.SetClientData(m_cb);
if (m_draws_wdg->GetDrawBlocked(m_index)) {
wxMenuItem* item = menu.AppendCheckItem(seldrawID_CTX_BLOCK_MENU, _("Draw blocked\tCtrl-B"));
item->Check();
} else {
int non_blocked_count = 0;
for (unsigned int i = 0; i < m_draws_wdg->GetDrawsCount(); ++i)
if (!m_draws_wdg->GetDrawBlocked(i))
non_blocked_count++;
//one draw shall be non-blocked
if (non_blocked_count > 1)
menu.AppendCheckItem(seldrawID_CTX_BLOCK_MENU, _("Draw blocked\tCtrl-B"));
}
menu.Append(seldrawID_CTX_DOC_MENU, _("Parameter documentation\tCtrl-H"));
menu.Append(seldrawID_CTX_COPY_PARAM_NAME_MENU, _("Copy parameter name\tCtrl+Shift+C"));
wxMenu* submenu = new wxMenu();
submenu->SetClientData(m_cb);
wxMenuItem* averageItem = submenu->AppendRadioItem(seldrawID_CTX_AVERAGE_VALUE, _("Average value for selected period"));
wxMenuItem* lastItem = submenu->AppendRadioItem(seldrawID_CTX_LAST_VALUE, _("Last value"));
wxMenuItem* diffItem = submenu->AppendRadioItem(seldrawID_CTX_DIFFERENCE_VALUE, _("Difference between last and first value"));
menu.AppendSubMenu(submenu, _("Type of average values shown"));
switch (di->GetAverageValueCalculationMethod()) {
case AVERAGE_VALUE_CALCULATION_AVERAGE:
averageItem->Check(true);
break;
case AVERAGE_VALUE_CALCULATION_LAST:
lastItem->Check(true);
break;
case AVERAGE_VALUE_CALCULATION_LAST_FIRST:
diffItem->Check(true);
break;
}
if (dynamic_cast<DefinedParam*>(dp) != NULL)
menu.Append(seldrawID_CTX_EDIT_PARAM, _("Edit parameter associated with graph\tCtrl-E"));
m_cb->PopupMenu(&menu);
}
示例2: DrawYAxisVals
void GCDCGraphs::DrawYAxisVals(wxGraphicsContext& dc) {
Draw* draw = m_draws_wdg->GetSelectedDraw();
if (draw == NULL)
return;
DrawInfo *di = draw->GetDrawInfo();
if (!di->IsValid())
return;
double min = di->GetMin();
double max = di->GetMax();
if( max <= min ) {
// FIXME: Draw3 should atomaticly detect axes in that case, but
// it currently doesnt :(
wxLogWarning(_T("Parameter %s has invalid min/max values: min %f, max %f. Min is set to 0, and max to 100."), di->GetName().c_str(), min, max);
min = 0;
max = 100;
}
//procedure for calculating distance between marks stolen from SzarpDraw2
double x = max - min;
double step;
int i = 0;
if (x < 1)
for (;x < 1; x *=10, --i);
else
for (;(int)x / 10; x /=10, ++i);
if (x <= 1.5)
step = .1;
else if (x <= 3.)
step = .2;
else if (x <= 7.5)
step = .5;
else
step = 1.;
double acc = 1;
int prec = di->GetPrec();
for (int p = prec; p > 0; --p)
acc /= 10;
double factor = (i > 0) ? 10 : .1;
for (;i; i -= i / abs(i))
step *= factor;
if (step < acc)
step = acc;
dc.SetPen(wxPen(*wxWHITE, 1, wxSOLID));
int w, h;
GetClientSize(&w, &h);
h -= m_screen_margins.bottommargin + m_screen_margins.topmargin;
for (double val = max; (min - val) < acc; val -= step) {
int y = GetY(val, di);
dc.StrokeLine(m_screen_margins.leftmargin - 8, y, m_screen_margins.leftmargin, y);
wxString sval = di->GetValueStr(val, _T("- -"));
double textw, texth, textd, textel;
dc.GetTextExtent(sval, &textw, &texth, &textd, &textel);
dc.DrawText(sval, m_screen_margins.leftmargin - textw - 1, y + 2);
}
}