Commit 4f84ec9b authored by Sam Lantinga's avatar Sam Lantinga

Make it possible to switch algorithms in the future

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403362
parent c37ad66b
...@@ -31,16 +31,16 @@ SDL_BlendLine_RGB555(SDL_Surface * dst, int x1, int y1, int x2, int y2, ...@@ -31,16 +31,16 @@ SDL_BlendLine_RGB555(SDL_Surface * dst, int x1, int y1, int x2, int y2,
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB555); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB555);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB555); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB555);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB555); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB555);
break; break;
default: default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB555); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB555);
break; break;
} }
return 0; return 0;
...@@ -54,16 +54,16 @@ SDL_BlendLine_RGB565(SDL_Surface * dst, int x1, int y1, int x2, int y2, ...@@ -54,16 +54,16 @@ SDL_BlendLine_RGB565(SDL_Surface * dst, int x1, int y1, int x2, int y2,
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB565); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB565);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB565); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB565);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB565); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB565);
break; break;
default: default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB565); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB565);
break; break;
} }
return 0; return 0;
...@@ -77,16 +77,16 @@ SDL_BlendLine_RGB888(SDL_Surface * dst, int x1, int y1, int x2, int y2, ...@@ -77,16 +77,16 @@ SDL_BlendLine_RGB888(SDL_Surface * dst, int x1, int y1, int x2, int y2,
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB888); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_RGB888);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB888); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_RGB888);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB888); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_RGB888);
break; break;
default: default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB888); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_RGB888);
break; break;
} }
return 0; return 0;
...@@ -100,16 +100,16 @@ SDL_BlendLine_ARGB8888(SDL_Surface * dst, int x1, int y1, int x2, int y2, ...@@ -100,16 +100,16 @@ SDL_BlendLine_ARGB8888(SDL_Surface * dst, int x1, int y1, int x2, int y2,
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_ARGB8888); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_BLEND_ARGB8888);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_ARGB8888); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ADD_ARGB8888);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_ARGB8888); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_MOD_ARGB8888);
break; break;
default: default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY_ARGB8888); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY_ARGB8888);
break; break;
} }
return 0; return 0;
...@@ -126,32 +126,32 @@ SDL_BlendLine_RGB(SDL_Surface * dst, int x1, int y1, int x2, int y2, ...@@ -126,32 +126,32 @@ SDL_BlendLine_RGB(SDL_Surface * dst, int x1, int y1, int x2, int y2,
case 2: case 2:
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY2_BLEND_RGB); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY2_BLEND_RGB);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY2_ADD_RGB); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY2_ADD_RGB);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY2_MOD_RGB); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY2_MOD_RGB);
break; break;
default: default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY2_RGB); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY2_RGB);
break; break;
} }
return 0; return 0;
case 4: case 4:
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_BLEND_RGB); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_BLEND_RGB);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_ADD_RGB); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_ADD_RGB);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_MOD_RGB); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_MOD_RGB);
break; break;
default: default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_RGB); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_RGB);
break; break;
} }
return 0; return 0;
...@@ -172,16 +172,16 @@ SDL_BlendLine_RGBA(SDL_Surface * dst, int x1, int y1, int x2, int y2, ...@@ -172,16 +172,16 @@ SDL_BlendLine_RGBA(SDL_Surface * dst, int x1, int y1, int x2, int y2,
case 4: case 4:
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_BLEND_RGBA); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_BLEND_RGBA);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_ADD_RGBA); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_ADD_RGBA);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_MOD_RGBA); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_MOD_RGBA);
break; break;
default: default:
BRESENHAM(x1, y1, x2, y2, DRAW_SETPIXELXY4_RGBA); DRAWLINE(x1, y1, x2, y2, DRAW_SETPIXELXY4_RGBA);
break; break;
} }
return 0; return 0;
......
...@@ -32,16 +32,16 @@ SDL_BlendRect_RGB555(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode, ...@@ -32,16 +32,16 @@ SDL_BlendRect_RGB555(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB555); FILLRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB555);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BLENDRECT(Uint16, DRAW_SETPIXEL_ADD_RGB555); FILLRECT(Uint16, DRAW_SETPIXEL_ADD_RGB555);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BLENDRECT(Uint16, DRAW_SETPIXEL_MOD_RGB555); FILLRECT(Uint16, DRAW_SETPIXEL_MOD_RGB555);
break; break;
default: default:
BLENDRECT(Uint16, DRAW_SETPIXEL_RGB555); FILLRECT(Uint16, DRAW_SETPIXEL_RGB555);
break; break;
} }
return 0; return 0;
...@@ -55,16 +55,16 @@ SDL_BlendRect_RGB565(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode, ...@@ -55,16 +55,16 @@ SDL_BlendRect_RGB565(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB565); FILLRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB565);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BLENDRECT(Uint16, DRAW_SETPIXEL_ADD_RGB565); FILLRECT(Uint16, DRAW_SETPIXEL_ADD_RGB565);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BLENDRECT(Uint16, DRAW_SETPIXEL_MOD_RGB565); FILLRECT(Uint16, DRAW_SETPIXEL_MOD_RGB565);
break; break;
default: default:
BLENDRECT(Uint16, DRAW_SETPIXEL_RGB565); FILLRECT(Uint16, DRAW_SETPIXEL_RGB565);
break; break;
} }
return 0; return 0;
...@@ -78,16 +78,16 @@ SDL_BlendRect_RGB888(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode, ...@@ -78,16 +78,16 @@ SDL_BlendRect_RGB888(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint32, DRAW_SETPIXEL_BLEND_RGB888); FILLRECT(Uint32, DRAW_SETPIXEL_BLEND_RGB888);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BLENDRECT(Uint32, DRAW_SETPIXEL_ADD_RGB888); FILLRECT(Uint32, DRAW_SETPIXEL_ADD_RGB888);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BLENDRECT(Uint32, DRAW_SETPIXEL_MOD_RGB888); FILLRECT(Uint32, DRAW_SETPIXEL_MOD_RGB888);
break; break;
default: default:
BLENDRECT(Uint32, DRAW_SETPIXEL_RGB888); FILLRECT(Uint32, DRAW_SETPIXEL_RGB888);
break; break;
} }
return 0; return 0;
...@@ -101,16 +101,16 @@ SDL_BlendRect_ARGB8888(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode, ...@@ -101,16 +101,16 @@ SDL_BlendRect_ARGB8888(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint32, DRAW_SETPIXEL_BLEND_ARGB8888); FILLRECT(Uint32, DRAW_SETPIXEL_BLEND_ARGB8888);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BLENDRECT(Uint32, DRAW_SETPIXEL_ADD_ARGB8888); FILLRECT(Uint32, DRAW_SETPIXEL_ADD_ARGB8888);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BLENDRECT(Uint32, DRAW_SETPIXEL_MOD_ARGB8888); FILLRECT(Uint32, DRAW_SETPIXEL_MOD_ARGB8888);
break; break;
default: default:
BLENDRECT(Uint32, DRAW_SETPIXEL_ARGB8888); FILLRECT(Uint32, DRAW_SETPIXEL_ARGB8888);
break; break;
} }
return 0; return 0;
...@@ -127,32 +127,32 @@ SDL_BlendRect_RGB(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode, ...@@ -127,32 +127,32 @@ SDL_BlendRect_RGB(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,
case 2: case 2:
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB); FILLRECT(Uint16, DRAW_SETPIXEL_BLEND_RGB);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BLENDRECT(Uint16, DRAW_SETPIXEL_ADD_RGB); FILLRECT(Uint16, DRAW_SETPIXEL_ADD_RGB);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BLENDRECT(Uint16, DRAW_SETPIXEL_MOD_RGB); FILLRECT(Uint16, DRAW_SETPIXEL_MOD_RGB);
break; break;
default: default:
BLENDRECT(Uint16, DRAW_SETPIXEL_RGB); FILLRECT(Uint16, DRAW_SETPIXEL_RGB);
break; break;
} }
return 0; return 0;
case 4: case 4:
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint32, DRAW_SETPIXEL_BLEND_RGB); FILLRECT(Uint32, DRAW_SETPIXEL_BLEND_RGB);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BLENDRECT(Uint32, DRAW_SETPIXEL_ADD_RGB); FILLRECT(Uint32, DRAW_SETPIXEL_ADD_RGB);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BLENDRECT(Uint32, DRAW_SETPIXEL_MOD_RGB); FILLRECT(Uint32, DRAW_SETPIXEL_MOD_RGB);
break; break;
default: default:
BLENDRECT(Uint32, DRAW_SETPIXEL_RGB); FILLRECT(Uint32, DRAW_SETPIXEL_RGB);
break; break;
} }
return 0; return 0;
...@@ -173,16 +173,16 @@ SDL_BlendRect_RGBA(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode, ...@@ -173,16 +173,16 @@ SDL_BlendRect_RGBA(SDL_Surface * dst, SDL_Rect * dstrect, int blendMode,
case 4: case 4:
switch (blendMode) { switch (blendMode) {
case SDL_BLENDMODE_BLEND: case SDL_BLENDMODE_BLEND:
BLENDRECT(Uint32, DRAW_SETPIXEL_BLEND_RGBA); FILLRECT(Uint32, DRAW_SETPIXEL_BLEND_RGBA);
break; break;
case SDL_BLENDMODE_ADD: case SDL_BLENDMODE_ADD:
BLENDRECT(Uint32, DRAW_SETPIXEL_ADD_RGBA); FILLRECT(Uint32, DRAW_SETPIXEL_ADD_RGBA);
break; break;
case SDL_BLENDMODE_MOD: case SDL_BLENDMODE_MOD:
BLENDRECT(Uint32, DRAW_SETPIXEL_MOD_RGBA); FILLRECT(Uint32, DRAW_SETPIXEL_MOD_RGBA);
break; break;
default: default:
BLENDRECT(Uint32, DRAW_SETPIXEL_RGBA); FILLRECT(Uint32, DRAW_SETPIXEL_RGBA);
break; break;
} }
return 0; return 0;
......
...@@ -322,12 +322,13 @@ do { \ ...@@ -322,12 +322,13 @@ do { \
} \ } \
} \ } \
} }
#define DRAWLINE(x0, y0, x1, y1, op) BRESENHAM(x0, y0, x1, y1, op)
/* /*
* Define blend fill macro * Define blend fill macro
*/ */
#define BLENDRECT(type, op) \ #define FILLRECT(type, op) \
do { \ do { \
int w; \ int w; \
int width = dstrect->w; \ int width = dstrect->w; \
......
...@@ -47,16 +47,16 @@ SDL_DrawLine(SDL_Surface * dst, int x1, int y1, int x2, int y2, Uint32 color) ...@@ -47,16 +47,16 @@ SDL_DrawLine(SDL_Surface * dst, int x1, int y1, int x2, int y2, Uint32 color)
switch (dst->format->BytesPerPixel) { switch (dst->format->BytesPerPixel) {
case 1: case 1:
BRESENHAM(x1, y1, x2, y2, SETPIXEL1); DRAWLINE(x1, y1, x2, y2, SETPIXEL1);
break; break;
case 2: case 2:
BRESENHAM(x1, y1, x2, y2, SETPIXEL2); DRAWLINE(x1, y1, x2, y2, SETPIXEL2);
break; break;
case 3: case 3:
SDL_Unsupported(); SDL_Unsupported();
return -1; return -1;
case 4: case 4:
BRESENHAM(x1, y1, x2, y2, SETPIXEL4); DRAWLINE(x1, y1, x2, y2, SETPIXEL4);
break; break;
} }
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment