Exemplo n.º 1
0
void CCDInfo::DrawCD(HDC hdc, RECT rc)
{
	double  dblAngle = m_dblCurrentAngle;
	double  dblRadius = (rc.right - rc.left) / 2;
	short   nTracks, nTrack, nTotalLength;
	POINT   pt1, pt2, ptCenter, ptStart;
	HBRUSH      hBrush, hOldBrush;
	HPEN        hOldPen;
	LOGBRUSH    logbrush;
	COLORREF    col;

	ptCenter.x = (rc.right + rc.left) / 2;
	ptCenter.y = (rc.bottom + rc.top) / 2;

	nTracks = m_cd.GetNumberOfTracks();
	nTotalLength = m_cd.GetTotalLength();

	hOldPen = (HPEN)SelectObject(hdc, GetStockObject(BLACK_PEN));

	logbrush.lbStyle = BS_SOLID;
	ptStart = pt1 = CalcPoint(ptCenter, dblRadius, dblAngle);
	for (nTrack=1; nTrack<=nTracks; nTrack++)
	{
		col = m_colSegment[nTrack % (sizeof(m_colSegment)/sizeof(COLORREF))];
		logbrush.lbColor = col;
		hBrush = CreateBrushIndirect(&logbrush);
		hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);

		if (nTracks==1)
		{
			// As we only have 1 track ensure it is painted correctly
			Ellipse(hdc, rc.left, rc.top, rc.right, rc.bottom);
			MoveToEx(hdc, ptCenter.x, ptCenter.y, NULL);
			LineTo(hdc, pt1.x, pt1.y);
		}
		dblAngle += m_cd.GetTrackLength(nTrack) / (double)nTotalLength * 2 * PI;
		if (nTrack==nTracks)
			pt2 = ptStart; // Ensure we finish where we started
		else
			pt2 = CalcPoint(ptCenter, dblRadius, dblAngle);

		// Only draw the wedge if it is big enough to see
		if (pt1.x != pt2.x || pt1.y != pt2.y)
		{
			Pie(hdc, rc.left, rc.top, rc.right, rc.bottom, pt2.x, pt2.y, pt1.x, pt1.y);
			pt1 = pt2;
		}

		SelectObject(hdc, hOldBrush);
		DeleteObject(hBrush);
	}
	SelectObject(hdc, hOldPen);
}
  Array2DMedian < Value >::Array2DMedian(const Array2D < Value > &src,
                                         int fsizex, int fsizey, int pick)
  :
  Array2D <
Value > (src.xsize(), src.ysize())
{
  int x, y;
  for (y = 0; y < Array2D<Value>::ysize(); y++) {
#if 0
#ifdef DEBUG
    printf("(%d,%d) %f \n", 0, y, src.getPixel(0, y));
#endif
#endif
    for (x = 0; x < Array2D<Value>::xsize(); x++) {
      CalcPoint(x, y, src, fsizex, fsizey, pick);
    }
  }
}
Exemplo n.º 3
0
/*
  ==============================
  GenBaseTile

  ==============================
*/
u_list_t * GenBaseTile( u_list_t *raw_poly_list, fp_t rotate, vec2d_t scale, fp_t u_shift, fp_t v_shift, vec3d_t norm, fp_t dist )
{
	int		i;
	polygon_t	*p, *pnew;
	u_list_iter_t	iter;
	u_list_t		*list;

//	printf( "gen: shf: %f %f scl: %f %f\n", u_shift, v_shift, scale[0], scale[1] );

	list = NEWTYPE( u_list_t );
	U_InitList( list );

	U_ListIterInit( &iter, raw_poly_list );
	for( ; ( p = U_ListIterNext( &iter ) ) ; )
	{		
		pnew = CopyPolygon( p );
		U_ListInsertAtHead( list, pnew );
		for ( i = 0; i < p->pointnum; i++ )
		{
			CalcPoint( pnew->p[i], p->p[i], norm, dist, u_shift, v_shift, rotate, scale );
		}
	}	
	return list;
}