1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#include <stdio.h>
#include <math.h>
#include "gd.h"
#include "gdtest.h"
#ifdef _MSC_VER
# define snprintf _snprintf
#endif
int gen_image(const char* filename, int idx, int reverse_x, int width, int height, int bgd)
{
double gradient = height / (width*2.0);
int offset = idx*width;
int x1,y1,x2,y2, error = 0;
gdImagePtr im = gdImageCreateTrueColor(width,height);
if (bgd==1) {
gdImageFilledRectangle(im,0,0,width-1,height-1, gdTrueColorAlpha(255, 255, 255, 0));
} else {
gdImageFilledRectangle(im,0,0,width-1,height-1, gdTrueColorAlpha(255, 255, 0, 0));
}
gdImageSetAntiAliased(im, gdTrueColorAlpha(0,0,0,0));
/*
test for potential segfault (introduced with AA improvements, fixed
with the same patch - but I didn't notice it until later).*/
gdImageLine(im,-1,-1,-1,-1,gdAntiAliased);
x1 = floor(reverse_x * -width + 0.5);
y1 = (offset-width) * gradient + 0.5;
x2 = floor(reverse_x * width*2 + 0.5);
y2 = floor((offset+width*2) * gradient + 0.5);
/* draw an AA line */
gdImageLine(im, x1, y1, x2, y2, gdAntiAliased);
gdImageLine(im, 0, im->sy - 1, im->sx, im->sy - 1, 0x40FF0000);
if (!gdAssertImageEqualsToFile(filename, im)) {
gdTestErrorMsg("gdAssertImageEqualsToFile failed: <%s>\n", filename);
error = 1;
}
gdImageDestroy(im);
return error;
}
int main()
{
int error = 0;
char path[1024];
snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_a_0_exp.png", GDTEST_TOP_DIR);
error |= gen_image(path,0,1,10,100, 1);
snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_a_1_exp.png", GDTEST_TOP_DIR);
error |= gen_image(path,1,1,10,100, 2);
snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_b_0_exp.png", GDTEST_TOP_DIR);
error |= gen_image(path,2,-1,10,100, 1);
snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_b_1_exp.png", GDTEST_TOP_DIR);
error |= gen_image(path,1,-1,10,100, 2);
snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_c_0_exp.png", GDTEST_TOP_DIR);
error |= gen_image(path,0,1,100,10, 1);
snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_c_1_exp.png", GDTEST_TOP_DIR);
error |= gen_image(path,1,1,100,10, 2);
snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_d_0_exp.png", GDTEST_TOP_DIR);
error |= gen_image(path,2,-1,100,10, 1);
snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_d_1_exp.png", GDTEST_TOP_DIR);
error |= gen_image(path,1,-1,100,10, 2);
return error;
}
|