Blame src/gd_transform.c

Packit ed3af9
/**
Packit ed3af9
 * File: Transformations
Packit ed3af9
 */
Packit ed3af9
Packit ed3af9
Packit ed3af9
#ifdef HAVE_CONFIG_H
Packit ed3af9
#include "config.h"
Packit ed3af9
#endif /* HAVE_CONFIG_H */
Packit ed3af9
Packit ed3af9
#include "gd.h"
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Function: gdImageFlipVertical
Packit ed3af9
 *
Packit ed3af9
 * Flip an image vertically
Packit ed3af9
 *
Packit ed3af9
 * The image is mirrored upside-down.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageFlipHorizontal>
Packit ed3af9
 *   - <gdImageFlipBoth>
Packit ed3af9
 */
Packit ed3af9
BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im)
Packit ed3af9
{
Packit ed3af9
	register int x, y;
Packit ed3af9
Packit ed3af9
	if (im->trueColor) {
Packit ed3af9
		for (y = 0; y < im->sy / 2; y++) {
Packit ed3af9
			int *row_dst = im->tpixels[y];
Packit ed3af9
			int *row_src = im->tpixels[im->sy - 1 - y];
Packit ed3af9
			for (x = 0; x < im->sx; x++) {
Packit ed3af9
				register int p;
Packit ed3af9
				p = row_dst[x];
Packit ed3af9
				row_dst[x] = im->tpixels[im->sy - 1 - y][x];
Packit ed3af9
				row_src[x] = p;
Packit ed3af9
			}
Packit ed3af9
		}
Packit ed3af9
	} else {
Packit ed3af9
		unsigned char p;
Packit ed3af9
		for (y = 0; y < im->sy / 2; y++) {
Packit ed3af9
			for (x = 0; x < im->sx; x++) {
Packit ed3af9
				p = im->pixels[y][x];
Packit ed3af9
				im->pixels[y][x] =	im->pixels[im->sy - 1 - y][x];
Packit ed3af9
				im->pixels[im->sy - 1 - y][x] = p;
Packit ed3af9
			}
Packit ed3af9
		}
Packit ed3af9
	}
Packit ed3af9
	return;
Packit ed3af9
}
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Function: gdImageFlipHorizontal
Packit ed3af9
 *
Packit ed3af9
 * Flip an image horizontally
Packit ed3af9
 *
Packit ed3af9
 * The image is mirrored left-right.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageFlipVertical>
Packit ed3af9
 *   - <gdImageFlipBoth>
Packit ed3af9
 */
Packit ed3af9
BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im)
Packit ed3af9
{
Packit ed3af9
Packit ed3af9
	int x, y;
Packit ed3af9
Packit ed3af9
	if (im->trueColor) {
Packit ed3af9
		int *px1, *px2, tmp;
Packit ed3af9
Packit ed3af9
		for (y = 0; y < im->sy; y++) {
Packit ed3af9
			px1 = im->tpixels[y];
Packit ed3af9
			px2 = im->tpixels[y] + im->sx - 1;
Packit ed3af9
			for (x = 0; x < (im->sx >> 1); x++) {
Packit ed3af9
				tmp = *px1;
Packit ed3af9
				*px1 = *px2;
Packit ed3af9
				*px2 = tmp;
Packit ed3af9
				px1++;
Packit ed3af9
				px2--;
Packit ed3af9
			}
Packit ed3af9
		}
Packit ed3af9
	} else {
Packit ed3af9
		unsigned char *px1, *px2, tmp;
Packit ed3af9
Packit ed3af9
		for (y = 0; y < im->sy; y++) {
Packit ed3af9
			px1 = im->pixels[y];
Packit ed3af9
			px2 = im->pixels[y] + im->sx - 1;
Packit ed3af9
			for (x = 0; x < (im->sx >> 1); x++) {
Packit ed3af9
				tmp = *px1;
Packit ed3af9
				*px1 = *px2;
Packit ed3af9
				*px2 = tmp;
Packit ed3af9
				px1++;
Packit ed3af9
				px2--;
Packit ed3af9
			}
Packit ed3af9
		}
Packit ed3af9
	}
Packit ed3af9
}
Packit ed3af9
Packit ed3af9
/**
Packit ed3af9
 * Function: gdImageFlipBoth
Packit ed3af9
 *
Packit ed3af9
 * Flip an image vertically and horizontally
Packit ed3af9
 *
Packit ed3af9
 * The image is mirrored upside-down and left-right.
Packit ed3af9
 *
Packit ed3af9
 * Parameters:
Packit ed3af9
 *   im - The image.
Packit ed3af9
 *
Packit ed3af9
 * See also:
Packit ed3af9
 *   - <gdImageFlipVertical>
Packit ed3af9
 *   - <gdImageFlipHorizontal>
Packit ed3af9
 */
Packit ed3af9
BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im)
Packit ed3af9
{
Packit ed3af9
	gdImageFlipVertical(im);
Packit ed3af9
	gdImageFlipHorizontal(im);
Packit ed3af9
}
Packit ed3af9
Packit ed3af9