Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Make it possible to switch algorithms in the future
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Dec 21, 2008
1 parent 1ba19cd commit afe44a7
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 60 deletions.
56 changes: 28 additions & 28 deletions src/video/SDL_blendline.c
Expand Up @@ -31,16 +31,16 @@ SDL_BlendLine_RGB555(SDL_Surface * dst, int x1, int y1, int x2, int y2,

switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB555);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB555);
break;
case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB555);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB555);
break;
case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB555);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB555);
break;
default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB555);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB555);
break;
}
return 0;
Expand All @@ -54,16 +54,16 @@ SDL_BlendLine_RGB565(SDL_Surface * dst, int x1, int y1, int x2, int y2,

switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB565);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB565);
break;
case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB565);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB565);
break;
case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB565);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB565);
break;
default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB565);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB565);
break;
}
return 0;
Expand All @@ -77,16 +77,16 @@ SDL_BlendLine_RGB888(SDL_Surface * dst, int x1, int y1, int x2, int y2,

switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB888);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB888);
break;
case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB888);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB888);
break;
case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB888);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB888);
break;
default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB888);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB888);
break;
}
return 0;
Expand All @@ -100,16 +100,16 @@ SDL_BlendLine_ARGB8888(SDL_Surface * dst, int x1, int y1, int x2, int y2,

switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_ARGB8888);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_ARGB8888);
break;
case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_ARGB8888);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_ARGB8888);
break;
case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_ARGB8888);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_ARGB8888);
break;
default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ARGB8888);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ARGB8888);
break;
}
return 0;
Expand All @@ -126,32 +126,32 @@ SDL_BlendLine_RGB(SDL_Surface * dst, int x1, int y1, int x2, int y2,
case 2:
switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY2_BLEND_RGB);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY2_BLEND_RGB);
break;
case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY2_ADD_RGB);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY2_ADD_RGB);
break;
case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY2_MOD_RGB);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY2_MOD_RGB);
break;
default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY2_RGB);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY2_RGB);
break;
}
return 0;
case 4:
switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_BLEND_RGB);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_BLEND_RGB);
break;
case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_ADD_RGB);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_ADD_RGB);
break;
case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_MOD_RGB);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_MOD_RGB);
break;
default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_RGB);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_RGB);
break;
}
return 0;
Expand All @@ -172,16 +172,16 @@ SDL_BlendLine_RGBA(SDL_Surface * dst, int x1, int y1, int x2, int y2,
case 4:
switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_BLEND_RGBA);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_BLEND_RGBA);
break;
case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_ADD_RGBA);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_ADD_RGBA);
break;
case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_MOD_RGBA);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_MOD_RGBA);
break;
default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_RGBA);
DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_RGBA);
break;
}
return 0;
Expand Down
56 changes: 28 additions & 28 deletions src/video/SDL_blendrect.c
Expand Up @@ -32,16 +32,16 @@ SDL_BlendRect_RGB555(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,

switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB555);
FILLRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB555);
break;
case SDL_BLENDMODE_ADD:
BLENDRECT(Uint16, DRAW_SETPIXEL_ADD_RGB555);
FILLRECT(Uint16, DRAW_SETPIXEL_ADD_RGB555);
break;
case SDL_BLENDMODE_MOD:
BLENDRECT(Uint16, DRAW_SETPIXEL_MOD_RGB555);
FILLRECT(Uint16, DRAW_SETPIXEL_MOD_RGB555);
break;
default:
BLENDRECT(Uint16, DRAW_SETPIXEL_RGB555);
FILLRECT(Uint16, DRAW_SETPIXEL_RGB555);
break;
}
return 0;
Expand All @@ -55,16 +55,16 @@ SDL_BlendRect_RGB565(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,

switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB565);
FILLRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB565);
break;
case SDL_BLENDMODE_ADD:
BLENDRECT(Uint16, DRAW_SETPIXEL_ADD_RGB565);
FILLRECT(Uint16, DRAW_SETPIXEL_ADD_RGB565);
break;
case SDL_BLENDMODE_MOD:
BLENDRECT(Uint16, DRAW_SETPIXEL_MOD_RGB565);
FILLRECT(Uint16, DRAW_SETPIXEL_MOD_RGB565);
break;
default:
BLENDRECT(Uint16, DRAW_SETPIXEL_RGB565);
FILLRECT(Uint16, DRAW_SETPIXEL_RGB565);
break;
}
return 0;
Expand All @@ -78,16 +78,16 @@ SDL_BlendRect_RGB888(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,

switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint32, DRAW_SETPIXEL_BLEND_RGB888);
FILLRECT(Uint32, DRAW_SETPIXEL_BLEND_RGB888);
break;
case SDL_BLENDMODE_ADD:
BLENDRECT(Uint32, DRAW_SETPIXEL_ADD_RGB888);
FILLRECT(Uint32, DRAW_SETPIXEL_ADD_RGB888);
break;
case SDL_BLENDMODE_MOD:
BLENDRECT(Uint32, DRAW_SETPIXEL_MOD_RGB888);
FILLRECT(Uint32, DRAW_SETPIXEL_MOD_RGB888);
break;
default:
BLENDRECT(Uint32, DRAW_SETPIXEL_RGB888);
FILLRECT(Uint32, DRAW_SETPIXEL_RGB888);
break;
}
return 0;
Expand All @@ -101,16 +101,16 @@ SDL_BlendRect_ARGB8888(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,

switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint32, DRAW_SETPIXEL_BLEND_ARGB8888);
FILLRECT(Uint32, DRAW_SETPIXEL_BLEND_ARGB8888);
break;
case SDL_BLENDMODE_ADD:
BLENDRECT(Uint32, DRAW_SETPIXEL_ADD_ARGB8888);
FILLRECT(Uint32, DRAW_SETPIXEL_ADD_ARGB8888);
break;
case SDL_BLENDMODE_MOD:
BLENDRECT(Uint32, DRAW_SETPIXEL_MOD_ARGB8888);
FILLRECT(Uint32, DRAW_SETPIXEL_MOD_ARGB8888);
break;
default:
BLENDRECT(Uint32, DRAW_SETPIXEL_ARGB8888);
FILLRECT(Uint32, DRAW_SETPIXEL_ARGB8888);
break;
}
return 0;
Expand All @@ -127,32 +127,32 @@ SDL_BlendRect_RGB(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,
case 2:
switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB);
FILLRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB);
break;
case SDL_BLENDMODE_ADD:
BLENDRECT(Uint16, DRAW_SETPIXEL_ADD_RGB);
FILLRECT(Uint16, DRAW_SETPIXEL_ADD_RGB);
break;
case SDL_BLENDMODE_MOD:
BLENDRECT(Uint16, DRAW_SETPIXEL_MOD_RGB);
FILLRECT(Uint16, DRAW_SETPIXEL_MOD_RGB);
break;
default:
BLENDRECT(Uint16, DRAW_SETPIXEL_RGB);
FILLRECT(Uint16, DRAW_SETPIXEL_RGB);
break;
}
return 0;
case 4:
switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint32, DRAW_SETPIXEL_BLEND_RGB);
FILLRECT(Uint32, DRAW_SETPIXEL_BLEND_RGB);
break;
case SDL_BLENDMODE_ADD:
BLENDRECT(Uint32, DRAW_SETPIXEL_ADD_RGB);
FILLRECT(Uint32, DRAW_SETPIXEL_ADD_RGB);
break;
case SDL_BLENDMODE_MOD:
BLENDRECT(Uint32, DRAW_SETPIXEL_MOD_RGB);
FILLRECT(Uint32, DRAW_SETPIXEL_MOD_RGB);
break;
default:
BLENDRECT(Uint32, DRAW_SETPIXEL_RGB);
FILLRECT(Uint32, DRAW_SETPIXEL_RGB);
break;
}
return 0;
Expand All @@ -173,16 +173,16 @@ SDL_BlendRect_RGBA(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,
case 4:
switch (blendMode) {
case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint32, DRAW_SETPIXEL_BLEND_RGBA);
FILLRECT(Uint32, DRAW_SETPIXEL_BLEND_RGBA);
break;
case SDL_BLENDMODE_ADD:
BLENDRECT(Uint32, DRAW_SETPIXEL_ADD_RGBA);
FILLRECT(Uint32, DRAW_SETPIXEL_ADD_RGBA);
break;
case SDL_BLENDMODE_MOD:
BLENDRECT(Uint32, DRAW_SETPIXEL_MOD_RGBA);
FILLRECT(Uint32, DRAW_SETPIXEL_MOD_RGBA);
break;
default:
BLENDRECT(Uint32, DRAW_SETPIXEL_RGBA);
FILLRECT(Uint32, DRAW_SETPIXEL_RGBA);
break;
}
return 0;
Expand Down
3 changes: 2 additions & 1 deletion src/video/SDL_draw.h
Expand Up @@ -322,12 +322,13 @@ do { \
} \
} \
}
#define DRAWLINE(x0, y0, x1, y1, op) BRESENHAM(x0, y0, x1, y1, op)

/*
* Define blend fill macro
*/

#define BLENDRECT(type, op) \
#define FILLRECT(type, op) \
do { \
int w; \
int width = dstrect->w; \
Expand Down
6 changes: 3 additions & 3 deletions src/video/SDL_drawline.c
Expand Up @@ -47,16 +47,16 @@ SDL_DrawLine(SDL_Surface * dst, int x1, int y1, int x2, int y2, Uint32 color)

switch (dst->format->BytesPerPixel) {
case 1:
BRESENHAM(x1, y1, x2, y2, SETPIXEL1);
DRAWLINE(x1, y1, x2, y2, SETPIXEL1);
break;
case 2:
BRESENHAM(x1, y1, x2, y2, SETPIXEL2);
DRAWLINE(x1, y1, x2, y2, SETPIXEL2);
break;
case 3:
SDL_Unsupported();
return -1;
case 4:
BRESENHAM(x1, y1, x2, y2, SETPIXEL4);
DRAWLINE(x1, y1, x2, y2, SETPIXEL4);
break;
}
return 0;
Expand Down

0 comments on commit afe44a7

Please sign in to comment.