Beispiel #1
0
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;
}
Beispiel #2
0
/*
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));
}
Beispiel #3
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;
}
Beispiel #4
0
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;
}
Beispiel #5
0
// 
// 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)
}
Beispiel #6
0
// 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 );
}