BOOL TImageWin::EvMouseMove(UINT fwKeys, POINTS pts) { if (status == START) { DrawLines(&pts); } else if (status == DRAW_START) { if (!IS_SAME_PTS(drawPts.back().pts.back(), pts)) { drawPts.back().pts.push_back(pts); } DrawMarker(); } return TRUE; }
/* Renders all players positions every frame */ void clash::Render() { sf::RectangleShape temp; sf::Text _number; _number.setFont(_font); _number.setCharacterSize(20); _number.setColor(sf::Color::Black); for (int i = 0; i < CHECKBOARD; i++) { for (int j = 0; j < CHECKBOARD; j++) { DrawUnit(_checkBoard[i][j], sf::Vector2i(i, j)); if (_checkBoard[i][j]._field == FACTORY) DrawMarker(sf::Vector2i(i, j), sf::Color::Black); if (_checkBoard[i][j]._entity != NONE) { if (_checkBoard[i][j]._field == FACTORY) _number.setString("F: " + toString(_checkBoard[i][j].CountUnits())); else if (_checkBoard[i][j]._field == CORE) _number.setString("CORE: " + toString(_checkBoard[i][j].CountUnits())); else _number.setString(toString(_checkBoard[i][j].CountUnits())); _number.setPosition(sf::Vector2f(_checkBoard[i][j]._pos.x + 5, _checkBoard[i][j]._pos.y + 5)); Window.draw(_number); } } } DrawMarker(_currentMouseOver, sf::Color(49, 49, 76)); if (_currentChoosen.x >= 0) DrawMarker(_currentChoosen, sf::Color(0xb3, 0x68, 0xb3)); if (sf::Mouse::isButtonPressed(sf::Mouse::Right) && _currentChoosen != _currentMouseOver) DrawMarker(_currentMouseOver, sf::Color(120, 0, 0)); }
BOOL TImageWin::EvPaint() { PAINTSTRUCT ps; HDC hDc = ::BeginPaint(hWnd, &ps); HBITMAP hOldBmp = (HBITMAP)::SelectObject(hSelfDc, hSelfBmp); ::BitBlt(hDc, 0, 0, rect.right - rect.left, rect.bottom - rect.top, hSelfDc, 0, 0, SRCCOPY); ::SelectObject(hSelfDc, hOldBmp); ::EndPaint(hWnd, &ps); if (status >= START && status <= DRAW_END) { DrawLines(); DrawMarker(); } return TRUE; }
void SCH_MARKER::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset, GR_DRAWMODE aDrawMode, COLOR4D aColor ) { COLOR4D color = m_Color; COLOR4D tmp = color; if( GetMarkerType() == MARKER_BASE::MARKER_ERC ) { color = ( GetErrorLevel() == MARKER_BASE::MARKER_SEVERITY_ERROR ) ? GetLayerColor( LAYER_ERC_ERR ) : GetLayerColor( LAYER_ERC_WARN ); } if( aColor == COLOR4D::UNSPECIFIED ) m_Color = color; else m_Color = aColor; DrawMarker( aPanel, aDC, aDrawMode, aOffset ); m_Color = tmp; }
// // lpRect This is the owner window client area // xShift shift on X axis from the client area rectangle // yShift shift on Y axis from the client area rectangle // // // Call by OnPaint as DrawChart(hMemDC, &rcClient, dx, dy); // void GDisplay::DrawChart( HDC hDC, LPRECT lpRect, INT xShift, INT yShift) { // At this point lpRect is owner window client rectangle MyFillRect(hDC, lpRect, m_clrBackDark); InflateRect(lpRect, -xShift, -yShift); // Uncomment the next line to see proper chart rectangle //BorderRect(hDC, lpRect, RGB(255,255,255)); DrawGrid(hDC, lpRect); // Form rectangle for painting SetRect(&m_rcChart, xShift + m_dxText, lpRect->top, m_nMarginRight, // These margings came from DrawGrid() m_nMarginBottom); // where they are calculated // How many items the current screen can show ? // Note: m_xMinStep forced to be set to DEFAULT_XSTEP ('4' pixels) m_nScreenBufferSize = (m_rcChart.right - m_rcChart.left)/m_xMinStep; if (m_nScreenBufferSize < MIN_SCREEN_BUFFER_SIZE) m_nScreenBufferSize = MIN_SCREEN_BUFFER_SIZE; if (m_nScreenBufferSize > MAX_SCREEN_BUFFER_SIZE) m_nScreenBufferSize = MAX_SCREEN_BUFFER_SIZE; POINT ptOld[MAX_CHART_COUNT]; // Start point POINT ptNew[MAX_CHART_COUNT]; // End point double new_value[MAX_CHART_COUNT]; double old_value[MAX_CHART_COUNT]; for (int i = 0; i < m_nScreenBufferSize; i++) { for (int k = 0; k < m_nChartCount; k++) { new_value[k] = m_dScreenBuffer[k][i+1]; old_value[k] = m_dScreenBuffer[k][i]; ptOld[k].x = m_xMinStep*i + m_rcChart.left; ptNew[k].x = m_xMinStep*(i+1)+ m_rcChart.left; // Convert actual value to screen units if (!dtoi(m_rcChart.bottom, m_rcChart.top, m_dblMin[k], m_dblMax[k], old_value[k], &(ptOld[k].y))) { ptOld[k].y = m_rcChart.bottom; } if (!dtoi(m_rcChart.bottom, m_rcChart.top, m_dblMin[k], m_dblMax[k], new_value[k], &(ptNew[k].y))) { ptNew[k].y = m_rcChart.bottom; } if (ptOld[k].y <= m_rcChart.top) ptOld[k].y = m_rcChart.top; if (ptOld[k].y >= m_rcChart.bottom) ptOld[k].y = m_rcChart.bottom; if (ptNew[k].y <= m_rcChart.top) ptNew[k].y = m_rcChart.top; if (ptNew[k].y >= m_rcChart.bottom) ptNew[k].y = m_rcChart.bottom; // we out of the right border if (ptNew[k].x >= m_rcChart.right) { ResetBuffer(INIT_BUFFER_VALUE); } DrawMarker(hDC, &ptOld[k], &ptNew[k], m_rcChart.right, m_clrMarker[k]); DrawUpdateLine(hDC, m_xUpdatePosition, &m_rcChart); DrawDescription(hDC, &m_rcChart); } // for (k < m_nChartCount) } // for (i < m_nScreenBufferSize) }
// Draws the actual data set, including markers void CXYChart::DrawDataSet( CDC *pDC, CRect plotRect, double *xRange, double *yRange ) { double *data; int *dims; int dimCount; int i, j; CPoint point, lastPoint; double xScale, yScale; CRgn rgn; int saveDC; CChartData *dataSet; CRect dPlotRect = plotRect; // Create a region for clipping saveDC = pDC->SaveDC(); if( pDC->IsPrinting() == FALSE ) { dPlotRect.InflateRect( 1, -1, -1, 1 ); pDC->LPtoDP( (LPPOINT) &dPlotRect, 2); rgn.CreateRectRgn( dPlotRect.left, dPlotRect.top, dPlotRect.right, dPlotRect.bottom ); pDC->SelectClipRgn( &rgn ); } for( i = 0; i < m_DataSetCount; i++ ) { CPen pen, *pOldPen; CBrush brush; dataSet = GetAbsoluteDataSet( i ); data = dataSet->GetData(); dims = dataSet->GetDimensions(); dimCount = dataSet->GetNDimensions(); if( data == NULL || dimCount != 2 || dims[0] != 2 ) continue; pen.CreatePen( m_DataLineStyle[i], m_DataLineSize[i], m_PlotColor[i] ); pOldPen = pDC->SelectObject( &pen ); // We now have a rect and an xRange and a yRange, just some // simple transformations should get us our plot xScale = ((double)plotRect.Width())/(xRange[1] - xRange[0]); yScale = ((double)plotRect.Height())/(yRange[1] - yRange[0]); // Get our first point point.x = (long)(xScale * (data[0]-xRange[0]) + plotRect.left); point.y = (long)(plotRect.bottom - yScale * (data[dims[1]]-yRange[0])); // Make sure we are in the bounds of our chart if( point.x > plotRect.right ) point.x = plotRect.right; if( point.x < plotRect.left ) point.x = plotRect.left; if( point.y > plotRect.top ) point.y = plotRect.top; if( point.y < plotRect.bottom ) point.y = plotRect.bottom; switch( m_ChartType[i] ) { case kXYChartPlain: pDC->MoveTo( point ); DrawMarker( pDC, point, i, 0 ); for( j = 1; j < dims[1]; j++ ) { point.x = (long)(xScale * (data[j]-xRange[0]) + plotRect.left); point.y = (long)(plotRect.bottom - yScale * (data[dims[1]+j]-yRange[0])); DrawMarker( pDC, point, i, j ); } break; case kXYChartConnect: pDC->MoveTo( point ); DrawMarker( pDC, point, i, 0 ); lastPoint = point; for( j = 1; j < dims[1]; j++ ) { point.x = (long)(xScale * (data[j]-xRange[0]) + plotRect.left); point.y = (long)(plotRect.bottom - yScale * (data[dims[1]+j]-yRange[0])); if( lastPoint != point ) pDC->LineTo( point ); DrawMarker( pDC, point, i, j ); lastPoint = point; } break; case kXYChartHistogram: { CPoint nextPoint; lastPoint = point; lastPoint.x = plotRect.left; pDC->MoveTo( lastPoint ); for( j = 0; j < dims[1]; j++ ) { point.x = (long)(xScale * (data[j]-xRange[0]) + plotRect.left); point.y = (long)(plotRect.bottom - yScale * (data[dims[1]+j]-yRange[0])); if( j < dims[1] - 1 ) { nextPoint = lastPoint = point; nextPoint.x = (long)(xScale * (data[j+1]-xRange[0]) + plotRect.left); nextPoint.y = (long)(plotRect.bottom - yScale * (data[dims[1]+j+1]-yRange[0])); lastPoint.x = point.x + (nextPoint.x - point.x) / 2; pDC->LineTo( lastPoint ); lastPoint.y = nextPoint.y; pDC->LineTo( lastPoint ); } else { lastPoint = point; lastPoint.x = plotRect.right; pDC->LineTo( lastPoint ); } DrawMarker( pDC, point, i, j ); } } break; } pDC->SelectObject( pOldPen ); } pDC->RestoreDC( saveDC ); }