LINUX.ORG.RU

История изменений

Исправление vova7890, (текущая версия) :

В общем, собрал чуток, вроде даже рисует http://ompldr.org/vZ2tidQ... Токо чот она мне не нравится, беглым взглядом говнокод попадается часто %) Например:

for (i = 0; (i < sy); i++)
    {
      im->tpixels[i] = (int *) gdCalloc (sx, sizeof (int));
      if (!im->tpixels[i]) {
...
Ну что за фуйня... Забил, сделал по своему:
pixel_data = gdMalloc (sizeof (int *) * sy * sx);
for (i = 0; (i < sy); i++)
    {
      im->tpixels[i] = (int *)(pixel_data + ( sizeof (int *) * sx * i ));
теперь то можно рисовать tpixels[0] буффер полностью. Потом, смотрю там часто юзается не инлайновый сет пиксель... Если они юзают только 32бита, нафига отдельная функция? Это сильно замедляет её работу, сетпикселя вообще не должно быть, или быть тока для «чтобы было». Короче хз, нету нормальных либ... (

Исходная версия vova7890, :

В общем, собрал чуток, вроде даже рисует http://ompldr.org/vZ2tidQ... Токо чот она мне не нравится, беглым взглядом говнокод попадается часто %) Например:

for (i = 0; (i < sy); i++)
    {
      /* Row-major ever since gd 1.3 */
      im->pixels[i] = (unsigned char *) gdCalloc (sx, sizeof (unsigned char));
			if (!im->pixels[i])
			{
				for (--i ; i >= 0; i--)
				{
					gdFree(im->pixels[i]);
				}
...
Ну что за фуйня... Забил, сделал по своему:
pixel_data = gdMalloc (sizeof (int *) * sy * sx);
for (i = 0; (i < sy); i++)
    {
      im->tpixels[i] = (int *)(pixel_data + ( sizeof (int *) * sx * i ));
теперь то можно рисовать tpixels[0] буффер полностью. Потом, смотрю там часто юзается не инлайновый сет пиксель... Если они юзают только 32бита, нафига отдельная функция? Это сильно замедляет её работу, сетпикселя вообще не должно быть, или быть тока для «чтобы было». Короче хз, нету нормальных либ... (