1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-18 20:10:29 +01:00

wrlib: add explicit type definition in API to allow compiler Type Checks (2/3)

When defining enums as types instead of simple enums allows to use these
types at the places where the corresponding enum values are expected, then
allowing the compiler to check that, potentially reporting incorrect use
of values to the user.

This patch adds the types for the drawing operations used by the functions
who drawing shapes into an RImage.

Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
This commit is contained in:
Christophe CURIS
2014-06-14 19:34:08 +02:00
committed by Carlos R. Mafra
parent eb3f0b12f8
commit bc4084e679
2 changed files with 30 additions and 25 deletions

View File

@@ -104,7 +104,7 @@ void RPutPixel(RImage *image, int x, int y, const RColor *color)
}
}
static void operatePixel(RImage * image, int ofs, int operation, const RColor * color)
static void operatePixel(RImage *image, int ofs, RPixelOperation operation, const RColor *color)
{
unsigned char *sr, *sg, *sb, *sa;
register int alpha, nalpha, tmp;
@@ -170,7 +170,7 @@ static void operatePixel(RImage * image, int ofs, int operation, const RColor *
}
}
void ROperatePixel(RImage * image, int operation, int x, int y, const RColor * color)
void ROperatePixel(RImage *image, RPixelOperation operation, int x, int y, const RColor *color)
{
int ofs;
@@ -184,7 +184,7 @@ void ROperatePixel(RImage * image, int operation, int x, int y, const RColor * c
operatePixel(image, ofs, operation, color);
}
void RPutPixels(RImage * image, const RPoint * points, int npoints, int mode, const RColor * color)
void RPutPixels(RImage *image, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color)
{
register int x, y, i;
@@ -205,7 +205,9 @@ void RPutPixels(RImage * image, const RPoint * points, int npoints, int mode, co
}
}
void ROperatePixels(RImage * image, int operation, const RPoint * points, int npoints, int mode, const RColor * color)
void ROperatePixels(RImage *image, RPixelOperation operation,
const RPoint *points, int npoints, RCoordinatesMode mode,
const RColor *color)
{
register int x, y, i;
@@ -287,7 +289,8 @@ static Bool clipLineInRectangle(int xmin, int ymin, int xmax, int ymax, int *x1,
* This routine is a generic drawing routine, based on Bresenham's line
* drawing algorithm.
*/
static int genericLine(RImage * image, int x0, int y0, int x1, int y1, const RColor * color, int operation, int polyline)
static int genericLine(RImage *image, int x0, int y0, int x1, int y1, const RColor *color,
RPixelOperation operation, int polyline)
{
int i, err, du, dv, du2, dv2, uofs, vofs, last;
@@ -382,12 +385,12 @@ int RDrawLine(RImage * image, int x0, int y0, int x1, int y1, const RColor * col
return genericLine(image, x0, y0, x1, y1, color, RNormalOperation, False);
}
int ROperateLine(RImage * image, int operation, int x0, int y0, int x1, int y1, const RColor * color)
int ROperateLine(RImage *image, RPixelOperation operation, int x0, int y0, int x1, int y1, const RColor *color)
{
return genericLine(image, x0, y0, x1, y1, color, operation, False);
}
void RDrawLines(RImage * image, const RPoint * points, int npoints, int mode, const RColor * color)
void RDrawLines(RImage *image, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color)
{
register int x1, y1, x2, y2, i;
@@ -425,7 +428,9 @@ void RDrawLines(RImage * image, const RPoint * points, int npoints, int mode, co
genericLine(image, x1, y1, x2, y2, color, RNormalOperation, i);
}
void ROperateLines(RImage * image, int operation, const RPoint * points, int npoints, int mode, const RColor * color)
void ROperateLines(RImage *image, RPixelOperation operation,
const RPoint *points, int npoints, RCoordinatesMode mode,
const RColor *color)
{
register int x1, y1, x2, y2, i;
@@ -463,7 +468,7 @@ void ROperateLines(RImage * image, int operation, const RPoint * points, int npo
genericLine(image, x1, y1, x2, y2, color, operation, i);
}
void ROperateRectangle(RImage *image, int operation, int x0, int y0, int x1, int y1, const RColor *color)
void ROperateRectangle(RImage *image, RPixelOperation operation, int x0, int y0, int x1, int y1, const RColor *color)
{
int y;
@@ -472,7 +477,7 @@ void ROperateRectangle(RImage *image, int operation, int x0, int y0, int x1, int
}
}
void RDrawSegments(RImage * image, const RSegment * segs, int nsegs, const RColor * color)
void RDrawSegments(RImage *image, const RSegment *segs, int nsegs, const RColor *color)
{
register int i;
@@ -484,7 +489,7 @@ void RDrawSegments(RImage * image, const RSegment * segs, int nsegs, const RColo
}
}
void ROperateSegments(RImage * image, int operation, const RSegment * segs, int nsegs, const RColor * color)
void ROperateSegments(RImage *image, RPixelOperation operation, const RSegment *segs, int nsegs, const RColor *color)
{
register int i;

View File

@@ -225,19 +225,19 @@ typedef struct RXImage {
/* note that not all operations are supported in all functions */
enum {
typedef enum {
RClearOperation, /* clear with 0 */
RCopyOperation,
RNormalOperation, /* same as combine */
RAddOperation,
RSubtractOperation
};
} RPixelOperation;
enum {
typedef enum {
RAbsoluteCoordinates = 0,
RRelativeCoordinates = 1
};
} RCoordinatesMode;
enum {
@@ -382,30 +382,30 @@ Bool RGetPixel(RImage *image, int x, int y, RColor *color);
void RPutPixel(RImage *image, int x, int y, const RColor *color);
void ROperatePixel(RImage *image, int operation, int x, int y, const RColor *color);
void ROperatePixel(RImage *image, RPixelOperation operation, int x, int y, const RColor *color);
void RPutPixels(RImage *image, const RPoint *points, int npoints, int mode,
void RPutPixels(RImage *image, const RPoint *points, int npoints, RCoordinatesMode mode,
const RColor *color);
void ROperatePixels(RImage *image, int operation, const RPoint *points,
int npoints, int mode, const RColor *color);
void ROperatePixels(RImage *image, RPixelOperation operation, const RPoint *points,
int npoints, RCoordinatesMode mode, const RColor *color);
int RDrawLine(RImage *image, int x0, int y0, int x1, int y1, const RColor *color);
int ROperateLine(RImage *image, int operation, int x0, int y0, int x1, int y1,
int ROperateLine(RImage *image, RPixelOperation operation, int x0, int y0, int x1, int y1,
const RColor *color);
void RDrawLines(RImage *image, const RPoint *points, int npoints, int mode,
void RDrawLines(RImage *image, const RPoint *points, int npoints, RCoordinatesMode mode,
const RColor *color);
void ROperateLines(RImage *image, int operation, const RPoint *points, int npoints,
int mode, const RColor *color);
void ROperateLines(RImage *image, RPixelOperation operation, const RPoint *points, int npoints,
RCoordinatesMode mode, const RColor *color);
void ROperateRectangle(RImage *image, int operation, int x0, int y0, int x1, int y1, const RColor *color);
void ROperateRectangle(RImage *image, RPixelOperation operation, int x0, int y0, int x1, int y1, const RColor *color);
void RDrawSegments(RImage *image, const RSegment *segs, int nsegs, const RColor *color);
void ROperateSegments(RImage *image, int operation, const RSegment *segs, int nsegs,
void ROperateSegments(RImage *image, RPixelOperation operation, const RSegment *segs, int nsegs,
const RColor *color);
/*