[Wine-devel] [Wine-patches] Add DIB test Polyline patch

Vitaly Lipatov =?iso-8859-1?q?lav_=CE=C1_etersoft=2Eru?=
Вт Ноя 18 21:19:22 MSK 2008


В сообщении от 18 ноября 2008 Sergey Novosyolov написал(a):
> +/*
> +       function defines pixels count between sample and memdc
> +       -1 - massives have different size
> +       0 - no differences
> +       >0 - count of different elements
> +*/
> +static int get_difference(DWORD *sample, HDC memDC, int width, int height)
> +{
> +       int diff;
> +       int i, j;
> +
> +       if (sizeof(sample)!=width*height) return -1;
sample - это указатель.
sizeof(sample) будет равно 4-м
проверить выход за границы в этой функции невозможно.
рекомендую сделать #define MAXMAS 500 и использовать его здесь и при 
определении массивов.

> +
> +       diff = 0;
> +       for (i=0; i<width; i++)
> +               for (j=0; j<height; j++)
> +                       if (GetPixel(memDC,i,j)!=sample[i*height+j])
> diff++; +       return diff;
> +}
> +
> +/*
> +clears image
> +*/


> +
> +
> +static void test_Polyline_SolidPen()
> +{
> +       int width, height; //width and heght of image
> +       float accuracy; //maximum required per cent of difference
Все комментарии должны быть в стиле C ( /* */ ) и выровнены в столбик

> +       BYTE *bits; //bits of image
> +       HDC hdc; //handle device content
> +       HDC memDC; //device content of image memory
> +       HBITMAP bitmap; //bitmapo handle
> +       HPEN pen0, pen1, pen2, pen3; //different pens
> +       POINT points[6]; //point of polyline
> +       char bmibuf[sizeof(BITMAPINFO) + 256 * sizeof(RGBQUAD)];
256 - количество точек, надо вынести в отдельную константу.
моё замечание по HeapAlloc проигнорировал.

> +       BITMAPINFO *bmi;
> +
> +       width = 20;
> +       height = 25;
Не понимаю, почему размер 20x25 (500 точек), а сверху - 256.

> +       accuracy = 0.03;
> +
> +       bmi = (BITMAPINFO* ) bmibuf;
> +       memset(bmi, 0, sizeof(bmibuf));
> +
> +       bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
> +       bmi->bmiHeader.biHeight =  height;
> +       bmi->bmiHeader.biWidth =  width;
> +       bmi->bmiHeader.biPlanes = 1;
> +       bmi->bmiHeader.biBitCount = 24;
> +       bmi->bmiHeader.biCompression = BI_RGB;
> +       bmi->bmiHeader.biSizeImage = bmi->bmiHeader.biHeight *
> bmi->bmiHeader.biWidth * 4; +
нельзя умножать на 4 (это sizeof (RGBQUAD)? так и пиши)

> +       pen0 = CreatePen(PS_SOLID,0,RGB(0xaa,0xcc,0xff));
надо просмотреть весь код, после запятой должнен следовать пробел

> +       points[0].x = 0;
> +       points[0].y = 0;
если массив не требует изменений, его нужно было задать статически.

> +       Polyline(memDC,points,6);
sizeof(points)/sizeof(points[0]) вместо 6




-- 
С уважением,
Виталий Липатов
Россия, Санкт-Петербург. www.etersoft.ru
GNU! ALT Linux Team! WINE! WIKI! LaTeX! LyX!


Подробная информация о списке рассылки Wine-devel