when the rotation angle value passed to RRotateImage is a modulo of 90,
the function is working well but in other cases the rotateImage()
function is called. That last function is half implemented but
the half already implemented part is also segfaulting (use the testrot.c
to replay the crash).
So the patch is moving the 'not implemented' msg to disable the whole
rotateImage() function and comment it out.


@@ -212,7 +212,7 @@ RImage *RRotateImage(RImage * image, float angle)
  * increment pixel location from source
  *
  */
-
+/*
 static void
 copyLine(int x1, int y1, int x2, int y2, int nwidth, int format,
unsigned char *dst, unsigned char **src)
 {
@@ -241,7 +241,7 @@ copyLine(int x1, int y1, int x2, int y2, int
nwidth, int format, unsigned char *
  p = dpr - dx;

  while (dx-- >= 0) {
- /* fetch and draw the pixel */
+ // fetch and draw the pixel
  offset = (x1 + y1 * nwidth) << 2;
  dst[offset++] = *s++;
  dst[offset++] = *s++;
@@ -251,7 +251,7 @@ copyLine(int x1, int y1, int x2, int y2, int
nwidth, int format, unsigned char *
  else
  dst[offset++] = 255;

- /* calc next step */
+ // calc next step
  if (p > 0) {
  x1 += xi;
  y1 += yi;
@@ -268,7 +268,7 @@ copyLine(int x1, int y1, int x2, int y2, int
nwidth, int format, unsigned char *
  p = dpr - dy;

  while (dy-- >= 0) {
- /* fetch and draw the pixel */
+ // fetch and draw the pixel
  offset = (x1 + y1 * nwidth) << 2;
  dst[offset++] = *s++;
  dst[offset++] = *s++;
@@ -278,7 +278,7 @@ copyLine(int x1, int y1, int x2, int y2, int
nwidth, int format, unsigned char *
  else
  dst[offset++] = 255;

- /* calc next step */
+ // calc next step
  if (p > 0) {
  x1 += xi;
  y1 += yi;
@@ -292,9 +292,14 @@ copyLine(int x1, int y1, int x2, int y2, int
nwidth, int format, unsigned char *

  *src = s;
 }
+*/

 static RImage *rotateImage(RImage * image, float angle)
 {
+ (void) angle;
+ puts("NOT FULLY IMPLEMENTED");
+ return RCloneImage(image);
+/*
  RImage *img;
  int nwidth, nheight;
  int x1, y1;
@@ -305,7 +310,7 @@ static RImage *rotateImage(RImage * image, float angle)
  unsigned char *src, *dst;
  int dpr, dpru, p;

- /* only 180o for now */
+ // only 180o for now
  if (angle > 180.0)
  angle -= 180.0;

@@ -356,7 +361,7 @@ static RImage *rotateImage(RImage * image, float angle)

  copyLine(x1, y1, xx, yy, nwidth, image->format, dst, &src);

- /* calc next step */
+ // calc next step

  if (p > 0) {
  x1 += xi;
@@ -371,8 +376,6 @@ static RImage *rotateImage(RImage * image, float angle)
  }
  }
  } else {
- puts("NOT IMPLEMTENED");
- return img;
  dpr = dx << 1;
  dpru = dpr - (dy << 1);
  p = dpr - dy;
@@ -383,7 +386,7 @@ static RImage *rotateImage(RImage * image, float angle)

  copyLine(x1, y1, xx, yy, nwidth, image->format, dst, &src);

- /* calc next step */
+ // calc next step
  if (p > 0) {
  x1 += xi;
  y1 += yi;
@@ -396,4 +399,5 @@ static RImage *rotateImage(RImage * image, float angle)
  }

  return img;
+*/
 }
-- 
1.8.3.2

Attachment: 0001-wrlib-RRotateImage-function-not-fully-implemented.patch
Description: Binary data

Reply via email to