[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