diff options
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp | 16 | ||||
-rw-r--r-- | core/src/fxge/ge/fx_ge_path.cpp | 7 |
2 files changed, 9 insertions, 14 deletions
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp index 43ce995f05..4ad6f81d5e 100644 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp +++ b/core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp @@ -319,7 +319,7 @@ FX_BOOL _GetScanlineIntersect(int y, return FALSE; } } - x = x1 + FXSYS_MulDiv(x2 - x1, y - y1, y2 - y1); + x = x1 + ((x2 - x1) * (y - y1) / (y2 - y1)); return TRUE; } static void DrawGouraud(CFX_DIBitmap* pBitmap, @@ -355,15 +355,11 @@ static void DrawGouraud(CFX_DIBitmap* pBitmap, if (!bIntersect) { continue; } - r[nIntersects] = - vertex1.r + FXSYS_MulDiv(vertex2.r - vertex1.r, y - vertex1.y, - vertex2.y - vertex1.y); - g[nIntersects] = - vertex1.g + FXSYS_MulDiv(vertex2.g - vertex1.g, y - vertex1.y, - vertex2.y - vertex1.y); - b[nIntersects] = - vertex1.b + FXSYS_MulDiv(vertex2.b - vertex1.b, y - vertex1.y, - vertex2.y - vertex1.y); + + FX_FLOAT y_dist = (y - vertex1.y) / (vertex2.y - vertex1.y); + r[nIntersects] = vertex1.r + ((vertex2.r - vertex1.r) * y_dist); + g[nIntersects] = vertex1.g + ((vertex2.g - vertex1.g) * y_dist); + b[nIntersects] = vertex1.b + ((vertex2.b - vertex1.b) * y_dist); nIntersects++; } if (nIntersects != 2) { diff --git a/core/src/fxge/ge/fx_ge_path.cpp b/core/src/fxge/ge/fx_ge_path.cpp index 0c24c0ff64..0b52cdf9e4 100644 --- a/core/src/fxge/ge/fx_ge_path.cpp +++ b/core/src/fxge/ge/fx_ge_path.cpp @@ -266,15 +266,14 @@ static void _UpdateLineJoinPoints(CFX_FloatRect& rect, start_k = (middle_y - start_y) / (middle_x - start_x); start_c = middle_y - (start_k * middle_x); start_len = FXSYS_sqrt2(start_x - middle_x, start_y - middle_y); - start_dc = (FX_FLOAT)FXSYS_fabs( - FXSYS_MulDiv(half_width, start_len, start_x - middle_x)); + start_dc = + (FX_FLOAT)FXSYS_fabs(half_width * start_len / (start_x - middle_x)); } if (!bEndVert) { end_k = (end_y - middle_y) / (end_x - middle_x); end_c = middle_y - (end_k * middle_x); end_len = FXSYS_sqrt2(end_x - middle_x, end_y - middle_y); - end_dc = (FX_FLOAT)FXSYS_fabs( - FXSYS_MulDiv(half_width, end_len, end_x - middle_x)); + end_dc = (FX_FLOAT)FXSYS_fabs(half_width * end_len / (end_x - middle_x)); } if (bStartVert) { FX_FLOAT outside_x = start_x; |