1 static __inline__ int IS_INF_OR_NAN(float x)
11 static void simple_textured_triangle( float ** v1)
35 if (v1[0][1] <= v2[0][1]) {
43 ((vMid[4][0] * (float)2048) + 0.5F) :
44 ((vMid[4][0] * (float)2048) - 0.5F);
45 eMaj.dx = (vMax_fx - vMin_fx) * (1.0F / (float)2048);
46 eMaj.dy = (vMax_fy - vMin_fy) * (1.0F / (float)2048);
47 eTop.dx = (vMax_fx - vMid_fx) * (1.0F / (float)2048);
48 eBot.dy = (vMid_fy - vMin_fy) * (1.0F / (float)2048);
49 float area = eMaj.dx * eBot.dy - eBot.dx * eMaj.dy;
50 if (IS_INF_OR_NAN(area))
52 oneOverArea = 1.0F / area;
54 int scan_from_left_to_right;
56 float eMaj_ds = (vMax[4][0] - vMin[4][0]);
59 oneOverArea * (eMaj_ds * eBot.dy - eMaj.dy * eBot_ds);
60 int step = (stepx >= 0.0F) ? stepx : (stepx * (float)2048) - 0.5F;
63 for (subTriangle = 0; subTriangle <= 1; subTriangle++) {
66 if (subTriangle == 0) {
67 if (scan_from_left_to_right) {
69 lines = eRight->lines;
74 if (scan_from_left_to_right) {
77 fxRightEdge = eRight->fsx;
80 int end; int x; int y;
85 end = fxRightEdge - x;
86 if (end > 0 && y >= 0) {
89 for (i = 0; i < end; i++) {
103 return simple_textured_triangle;