void CTimeBarScale::DrawScale() { int iCount = m_pTimeBarFrame->GetFrameCountForDraw(); SetBackgroundStyle(wxBG_STYLE_PAINT); wxAutoBufferedPaintDC ScaleDC(this); static const uint32_t ScaleTextOffset = 5; wxPoint ViewStart = m_pTimeBarFrame->GetItemContainer()->GetViewStart(); wxRect ScaleRect = GetRect(); int iCellWidth = m_pTimeBarFrame->GetCellWidth(); int iTextPositionX = 0; int iTextPositionY = ScaleRect.height + SCALETEXTOFFSETY; int iScaleLineLength = ScaleRect.height - SCALELINELENGTHOFFSET; int nOffset = iCellWidth * 0.5f; ScaleDC.SetPen(*wxWHITE_PEN); ScaleDC.DrawRectangle(ScaleRect); ScaleDC.SetPen(*wxBLACK_PEN); ScaleDC.SetFont(*wxSMALL_FONT); for (int i = 0; i < iCount; ++i) { iTextPositionX = i*iCellWidth + nOffset; int iLineHeight = iScaleLineLength; if ((ViewStart.x + i) % ScaleTextOffset == 0) { wxString strText = wxString::Format(_T("%d"), i + ViewStart.x); ScaleDC.DrawText(strText, iTextPositionX - ScaleDC.GetTextExtent(strText).x * 0.5f, iTextPositionY); iLineHeight -= 4; } ScaleDC.DrawLine(iTextPositionX, ScaleRect.height, iTextPositionX, iLineHeight); } int iPositionX = m_pTimeBarFrame->GetCursorPos() * iCellWidth - ViewStart.x * iCellWidth + nOffset; if (iPositionX >= 0) { wxPen pen = m_pTimeBarFrame->IsEnableFramePanel() ? *wxRED_PEN : *wxGREY_PEN; pen.SetWidth(CURSORWIDTH); ScaleDC.SetPen(pen); ScaleDC.DrawLine(iPositionX, ScaleRect.height, iPositionX, iScaleLineLength - 4); } }
void CTimeBarItem::DrawItem() { static const size_t GrayCellOffset = 5; SetBackgroundStyle(wxBG_STYLE_PAINT); wxAutoBufferedPaintDC ScaleDC(this); wxRect ItemRect = GetRect(); CTimeBarItemContainer* pContainer = (CTimeBarItemContainer*)GetParent(); wxPoint ViewStart = pContainer->GetViewStart(); wxSize size = pContainer->GetSize(); int cursorpositionx = pContainer->GetTimeBarFrameWindow()->GetCursorPositionX(); int iWidith = pContainer->GetCellWidth(); int iCount = size.x / iWidith; iCount += ViewStart.x - 1; int iDrawRectWdith = iWidith +1; int iPositionX = -1; int iDefaultCellHeight = ItemRect.height + 1; int iCellDataHeight = ItemRect.height - 2 * DATACELLOFFSET; ScaleDC.SetPen(*wxLIGHT_GREY); ScaleDC.DrawRectangle(ItemRect); for(int i = ViewStart.x; i < iCount; i++) { iPositionX = i * iWidith; bool bHasData = HasData(i); bool bHasSelected = HasSelected(i); if (!bHasData) { if (bHasSelected) { ScaleDC.SetBrush(*wxBLUE); ScaleDC.DrawRectangle(iPositionX, 0, iDrawRectWdith, iDefaultCellHeight); ScaleDC.SetBrush(*wxWHITE); } else { if (i % GrayCellOffset == 0) { ScaleDC.SetBrush(*wxLIGHT_GREY); ScaleDC.DrawRectangle(iPositionX, 0, iDrawRectWdith, iDefaultCellHeight); ScaleDC.SetBrush(*wxWHITE); } else { ScaleDC.DrawRectangle(iPositionX, 0, iDrawRectWdith, iDefaultCellHeight); } } } else//if(bHasData) { if (bHasSelected) { DrawDefaultItem(&ScaleDC, i, iPositionX, iDrawRectWdith, iDefaultCellHeight); ScaleDC.SetBrush(*wxBLUE); ScaleDC.DrawRectangle(iPositionX, DATACELLOFFSET, iDrawRectWdith, iCellDataHeight); ScaleDC.SetBrush(*wxWHITE); } else { DrawDefaultItem(&ScaleDC, i, iPositionX, iDrawRectWdith, iDefaultCellHeight); ScaleDC.SetBrush(*wxGREEN); ScaleDC.DrawRectangle(iPositionX, DATACELLOFFSET, iDrawRectWdith, iCellDataHeight); ScaleDC.SetBrush(*wxWHITE); } } } wxPen pen = *wxRED_PEN; pen.SetWidth(CURSORWIDTH); ScaleDC.SetPen(pen); ScaleDC.DrawLine(cursorpositionx, 0, cursorpositionx, ItemRect.height); }