Skip to content

Commit f787dda

Browse files
authored
Remove blend from draw.aaline (#2550)
1 parent c1618b3 commit f787dda

File tree

1 file changed

+32
-43
lines changed

1 file changed

+32
-43
lines changed

src_c/draw.c

Lines changed: 32 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -973,36 +973,26 @@ compare_int(const void *a, const void *b)
973973

974974
static Uint32
975975
get_antialiased_color(SDL_Surface *surf, int x, int y, Uint32 original_color,
976-
float brightness, int blend)
976+
float brightness)
977977
{
978978
Uint8 color_part[4], background_color[4];
979979
Uint32 *pixels = (Uint32 *)surf->pixels;
980980
SDL_GetRGBA(original_color, surf->format, &color_part[0], &color_part[1],
981981
&color_part[2], &color_part[3]);
982-
if (blend) {
983-
if (x < surf->clip_rect.x ||
984-
x >= surf->clip_rect.x + surf->clip_rect.w ||
985-
y < surf->clip_rect.y ||
986-
y >= surf->clip_rect.y + surf->clip_rect.h)
987-
return original_color;
988-
SDL_GetRGBA(pixels[(y * surf->w) + x], surf->format,
989-
&background_color[0], &background_color[1],
990-
&background_color[2], &background_color[3]);
991-
color_part[0] = (Uint8)(brightness * color_part[0] +
992-
(1 - brightness) * background_color[0]);
993-
color_part[1] = (Uint8)(brightness * color_part[1] +
994-
(1 - brightness) * background_color[1]);
995-
color_part[2] = (Uint8)(brightness * color_part[2] +
996-
(1 - brightness) * background_color[2]);
997-
color_part[3] = (Uint8)(brightness * color_part[3] +
998-
(1 - brightness) * background_color[3]);
999-
}
1000-
else {
1001-
color_part[0] = (Uint8)(brightness * color_part[0]);
1002-
color_part[1] = (Uint8)(brightness * color_part[1]);
1003-
color_part[2] = (Uint8)(brightness * color_part[2]);
1004-
color_part[3] = (Uint8)(brightness * color_part[3]);
1005-
}
982+
if (x < surf->clip_rect.x || x >= surf->clip_rect.x + surf->clip_rect.w ||
983+
y < surf->clip_rect.y || y >= surf->clip_rect.y + surf->clip_rect.h)
984+
return original_color;
985+
SDL_GetRGBA(pixels[(y * surf->w) + x], surf->format, &background_color[0],
986+
&background_color[1], &background_color[2],
987+
&background_color[3]);
988+
color_part[0] = (Uint8)(brightness * color_part[0] +
989+
(1 - brightness) * background_color[0]);
990+
color_part[1] = (Uint8)(brightness * color_part[1] +
991+
(1 - brightness) * background_color[1]);
992+
color_part[2] = (Uint8)(brightness * color_part[2] +
993+
(1 - brightness) * background_color[2]);
994+
color_part[3] = (Uint8)(brightness * color_part[3] +
995+
(1 - brightness) * background_color[3]);
1006996
original_color = SDL_MapRGBA(surf->format, color_part[0], color_part[1],
1007997
color_part[2], color_part[3]);
1008998
return original_color;
@@ -1123,7 +1113,6 @@ draw_aaline(SDL_Surface *surf, Uint32 color, float from_x, float from_y,
11231113
Uint32 pixel_color;
11241114
float x_gap, y_endpoint, clip_left, clip_right, clip_top, clip_bottom;
11251115
int steep, y;
1126-
int blend = 1;
11271116

11281117
dx = to_x - from_x;
11291118
dy = to_y - from_y;
@@ -1133,7 +1122,7 @@ draw_aaline(SDL_Surface *surf, Uint32 color, float from_x, float from_y,
11331122
if (fabs(dx) < 0.0001 && fabs(dy) < 0.0001) {
11341123
pixel_color =
11351124
get_antialiased_color(surf, (int)floor(from_x + 0.5),
1136-
(int)floor(from_y + 0.5), color, 1, blend);
1125+
(int)floor(from_y + 0.5), color, 1);
11371126
set_and_check_rect(surf, (int)floor(from_x + 0.5),
11381127
(int)floor(from_y + 0.5), pixel_color, drawn_area);
11391128
return;
@@ -1236,8 +1225,8 @@ draw_aaline(SDL_Surface *surf, Uint32 color, float from_x, float from_y,
12361225
y = (int)y_endpoint;
12371226
}
12381227
if ((int)y_endpoint < y_endpoint) {
1239-
pixel_color = get_antialiased_color(surf, x, y, color,
1240-
brightness * x_gap, blend);
1228+
pixel_color =
1229+
get_antialiased_color(surf, x, y, color, brightness * x_gap);
12411230
set_and_check_rect(surf, x, y, pixel_color, drawn_area);
12421231
}
12431232
if (steep) {
@@ -1247,8 +1236,8 @@ draw_aaline(SDL_Surface *surf, Uint32 color, float from_x, float from_y,
12471236
y--;
12481237
}
12491238
brightness = 1 - brightness;
1250-
pixel_color = get_antialiased_color(surf, x, y, color,
1251-
brightness * x_gap, blend);
1239+
pixel_color =
1240+
get_antialiased_color(surf, x, y, color, brightness * x_gap);
12521241
set_and_check_rect(surf, x, y, pixel_color, drawn_area);
12531242
intersect_y += gradient;
12541243
x_pixel_start++;
@@ -1268,8 +1257,8 @@ draw_aaline(SDL_Surface *surf, Uint32 color, float from_x, float from_y,
12681257
y = (int)y_endpoint;
12691258
}
12701259
if ((int)y_endpoint < y_endpoint) {
1271-
pixel_color = get_antialiased_color(surf, x, y, color,
1272-
brightness * x_gap, blend);
1260+
pixel_color =
1261+
get_antialiased_color(surf, x, y, color, brightness * x_gap);
12731262
set_and_check_rect(surf, x, y, pixel_color, drawn_area);
12741263
}
12751264
if (steep) {
@@ -1279,8 +1268,8 @@ draw_aaline(SDL_Surface *surf, Uint32 color, float from_x, float from_y,
12791268
y--;
12801269
}
12811270
brightness = 1 - brightness;
1282-
pixel_color = get_antialiased_color(surf, x, y, color,
1283-
brightness * x_gap, blend);
1271+
pixel_color =
1272+
get_antialiased_color(surf, x, y, color, brightness * x_gap);
12841273
set_and_check_rect(surf, x, y, pixel_color, drawn_area);
12851274
}
12861275

@@ -1289,25 +1278,25 @@ draw_aaline(SDL_Surface *surf, Uint32 color, float from_x, float from_y,
12891278
y = (int)intersect_y;
12901279
if (steep) {
12911280
brightness = 1 - intersect_y + y;
1292-
pixel_color = get_antialiased_color(surf, y - 1, x, color,
1293-
brightness, blend);
1281+
pixel_color =
1282+
get_antialiased_color(surf, y - 1, x, color, brightness);
12941283
set_and_check_rect(surf, y - 1, x, pixel_color, drawn_area);
12951284
if (y < intersect_y) {
12961285
brightness = 1 - brightness;
1297-
pixel_color = get_antialiased_color(surf, y, x, color,
1298-
brightness, blend);
1286+
pixel_color =
1287+
get_antialiased_color(surf, y, x, color, brightness);
12991288
set_and_check_rect(surf, y, x, pixel_color, drawn_area);
13001289
}
13011290
}
13021291
else {
13031292
brightness = 1 - intersect_y + y;
1304-
pixel_color = get_antialiased_color(surf, x, y - 1, color,
1305-
brightness, blend);
1293+
pixel_color =
1294+
get_antialiased_color(surf, x, y - 1, color, brightness);
13061295
set_and_check_rect(surf, x, y - 1, pixel_color, drawn_area);
13071296
if (y < intersect_y) {
13081297
brightness = 1 - brightness;
1309-
pixel_color = get_antialiased_color(surf, x, y, color,
1310-
brightness, blend);
1298+
pixel_color =
1299+
get_antialiased_color(surf, x, y, color, brightness);
13111300
set_and_check_rect(surf, x, y, pixel_color, drawn_area);
13121301
}
13131302
}

0 commit comments

Comments
 (0)