1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-01-01 19:42:32 +01:00

wrlib: merged both R*FlipImage function into one for the public API

It is generally not a good idea to have an API with a high number of
functions because it adds complexity for user and for maintainability,
so both function have been "merged" into a single RFlipImage with
a parameter to specify what flip is expected.

As a bonus, the function can perform both flips at once if wanted.

Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
This commit is contained in:
Christophe CURIS
2014-07-04 23:28:37 +02:00
committed by Carlos R. Mafra
parent cd29983e03
commit 654dcfeb28
3 changed files with 39 additions and 7 deletions

View File

@@ -29,8 +29,35 @@
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include "wraster.h" #include "wraster.h"
#include "rotate.h"
RImage *RVerticalFlipImage(RImage *source)
static RImage *r_flip_vertically(RImage *source);
static RImage *r_flip_horizontally(RImage *source);
/* Flip an image in the direction(s) specified */
RImage *RFlipImage(RImage *source, int mode)
{
/* Security */
if (source == NULL)
return NULL;
switch (mode & (RVerticalFlip | RHorizontalFlip)) {
case RHorizontalFlip:
return r_flip_horizontally(source);
case RVerticalFlip:
return r_flip_vertically(source);
case RHorizontalFlip | RVerticalFlip:
return wraster_rotate_image_180(source);
default:
return RRetainImage(source);
}
}
RImage *r_flip_vertically(RImage *source)
{ {
RImage *target; RImage *target;
int nwidth, nheight; int nwidth, nheight;
@@ -82,7 +109,7 @@ RImage *RVerticalFlipImage(RImage *source)
return target; return target;
} }
RImage *RHorizontalFlipImage(RImage *source) RImage *r_flip_horizontally(RImage *source)
{ {
RImage *target; RImage *target;
int nwidth, nheight; int nwidth, nheight;

View File

@@ -72,8 +72,7 @@ LIBWRASTER3
RRetainImage; RRetainImage;
RRGBtoHSV; RRGBtoHSV;
RRotateImage; RRotateImage;
RVerticalFlipImage; RFlipImage;
RHorizontalFlipImage;
RSaveImage; RSaveImage;
RScaleImage; RScaleImage;
RShutdown; RShutdown;

View File

@@ -265,6 +265,14 @@ typedef enum {
#define RGRD_DIAGONAL RDiagonalGradient #define RGRD_DIAGONAL RDiagonalGradient
/*
* How an image can be flipped, for RFlipImage
*
* Values are actually bit-mask which can be OR'd
*/
#define RHorizontalFlip 0x0001
#define RVerticalFlip 0x0002
/* error codes */ /* error codes */
#define RERR_NONE 0 #define RERR_NONE 0
@@ -366,9 +374,7 @@ RImage *RSmoothScaleImage(RImage *src, unsigned new_width,
RImage *RRotateImage(RImage *image, float angle); RImage *RRotateImage(RImage *image, float angle);
RImage *RVerticalFlipImage(RImage *image); RImage *RFlipImage(RImage *image, int mode);
RImage *RHorizontalFlipImage(RImage *image);
RImage *RMakeTiledImage(RImage *tile, unsigned width, unsigned height); RImage *RMakeTiledImage(RImage *tile, unsigned width, unsigned height);