OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "xfa/src/fxgraphics/src/fx_path_generator.h" | 9 #include "xfa/src/fxgraphics/src/fx_path_generator.h" |
10 #include "xfa/src/fxgraphics/src/pre.h" | 10 #include "xfa/src/fxgraphics/src/pre.h" |
(...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
971 case FX_SHADING_Axial: { | 971 case FX_SHADING_Axial: { |
972 FX_FLOAT x_span = end_x - start_x; | 972 FX_FLOAT x_span = end_x - start_x; |
973 FX_FLOAT y_span = end_y - start_y; | 973 FX_FLOAT y_span = end_y - start_y; |
974 FX_FLOAT axis_len_square = (x_span * x_span) + (y_span * y_span); | 974 FX_FLOAT axis_len_square = (x_span * x_span) + (y_span * y_span); |
975 for (int32_t row = 0; row < height; row++) { | 975 for (int32_t row = 0; row < height; row++) { |
976 FX_DWORD* dib_buf = (FX_DWORD*)(bmp.GetBuffer() + row * pitch); | 976 FX_DWORD* dib_buf = (FX_DWORD*)(bmp.GetBuffer() + row * pitch); |
977 for (int32_t column = 0; column < width; column++) { | 977 for (int32_t column = 0; column < width; column++) { |
978 FX_FLOAT x = (FX_FLOAT)(column); | 978 FX_FLOAT x = (FX_FLOAT)(column); |
979 FX_FLOAT y = (FX_FLOAT)(row); | 979 FX_FLOAT y = (FX_FLOAT)(row); |
980 FX_FLOAT scale = | 980 FX_FLOAT scale = |
981 FXSYS_Div(((x - start_x) * x_span) + ((y - start_y) * y_span), | 981 (((x - start_x) * x_span) + ((y - start_y) * y_span)) / |
982 axis_len_square); | 982 axis_len_square; |
983 if (scale < 0) { | 983 if (scale < 0) { |
984 if (!_info._fillColor->_shading->_isExtendedBegin) { | 984 if (!_info._fillColor->_shading->_isExtendedBegin) { |
985 continue; | 985 continue; |
986 } | 986 } |
987 scale = 0; | 987 scale = 0; |
988 } else if (scale > 1.0f) { | 988 } else if (scale > 1.0f) { |
989 if (!_info._fillColor->_shading->_isExtendedEnd) { | 989 if (!_info._fillColor->_shading->_isExtendedEnd) { |
990 continue; | 990 continue; |
991 } | 991 } |
992 scale = 1.0f; | 992 scale = 1.0f; |
(...skipping 16 matching lines...) Expand all Loading... |
1009 for (int32_t column = 0; column < width; column++) { | 1009 for (int32_t column = 0; column < width; column++) { |
1010 FX_FLOAT x = (FX_FLOAT)(column); | 1010 FX_FLOAT x = (FX_FLOAT)(column); |
1011 FX_FLOAT y = (FX_FLOAT)(row); | 1011 FX_FLOAT y = (FX_FLOAT)(row); |
1012 FX_FLOAT b = -2 * (((x - start_x) * (end_x - start_x)) + | 1012 FX_FLOAT b = -2 * (((x - start_x) * (end_x - start_x)) + |
1013 ((y - start_y) * (end_y - start_y)) + | 1013 ((y - start_y) * (end_y - start_y)) + |
1014 (start_r * (end_r - start_r))); | 1014 (start_r * (end_r - start_r))); |
1015 FX_FLOAT c = ((x - start_x) * (x - start_x)) + | 1015 FX_FLOAT c = ((x - start_x) * (x - start_x)) + |
1016 ((y - start_y) * (y - start_y)) - (start_r * start_r); | 1016 ((y - start_y) * (y - start_y)) - (start_r * start_r); |
1017 FX_FLOAT s; | 1017 FX_FLOAT s; |
1018 if (a == 0) { | 1018 if (a == 0) { |
1019 s = (FXSYS_Div(-c, b)); | 1019 s = -c / b; |
1020 } else { | 1020 } else { |
1021 FX_FLOAT b2_4ac = (b * b) - 4 * (a * c); | 1021 FX_FLOAT b2_4ac = (b * b) - 4 * (a * c); |
1022 if (b2_4ac < 0) { | 1022 if (b2_4ac < 0) { |
1023 continue; | 1023 continue; |
1024 } | 1024 } |
1025 FX_FLOAT root = (FXSYS_sqrt(b2_4ac)); | 1025 FX_FLOAT root = (FXSYS_sqrt(b2_4ac)); |
1026 FX_FLOAT s1, s2; | 1026 FX_FLOAT s1, s2; |
1027 if (a > 0) { | 1027 if (a > 0) { |
1028 s1 = FXSYS_Div(-b - root, 2 * a); | 1028 s1 = (-b - root) / (2 * a); |
1029 s2 = FXSYS_Div(-b + root, 2 * a); | 1029 s2 = (-b + root) / (2 * a); |
1030 } else { | 1030 } else { |
1031 s2 = FXSYS_Div(-b - root, 2 * a); | 1031 s2 = (-b - root) / (2 * a); |
1032 s1 = FXSYS_Div(-b + root, 2 * a); | 1032 s1 = (-b + root) / (2 * a); |
1033 } | 1033 } |
1034 if (s2 <= 1.0f || _info._fillColor->_shading->_isExtendedEnd) { | 1034 if (s2 <= 1.0f || _info._fillColor->_shading->_isExtendedEnd) { |
1035 s = (s2); | 1035 s = (s2); |
1036 } else { | 1036 } else { |
1037 s = (s1); | 1037 s = (s1); |
1038 } | 1038 } |
1039 if ((start_r) + s * (end_r - start_r) < 0) { | 1039 if ((start_r) + s * (end_r - start_r) < 0) { |
1040 continue; | 1040 continue; |
1041 } | 1041 } |
1042 } | 1042 } |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1449 b3 = (int32_t)(i * bScale); | 1449 b3 = (int32_t)(i * bScale); |
1450 _argbArray[i] = | 1450 _argbArray[i] = |
1451 FXARGB_TODIB(FXARGB_MAKE((a1 + a3), (r1 + r3), (g1 + g3), (b1 + b3))); | 1451 FXARGB_TODIB(FXARGB_MAKE((a1 + a3), (r1 + r3), (g1 + g3), (b1 + b3))); |
1452 } | 1452 } |
1453 return FX_ERR_Succeeded; | 1453 return FX_ERR_Succeeded; |
1454 } | 1454 } |
1455 class CFX_Pause : public IFX_Pause { | 1455 class CFX_Pause : public IFX_Pause { |
1456 public: | 1456 public: |
1457 virtual FX_BOOL NeedToPauseNow() { return TRUE; } | 1457 virtual FX_BOOL NeedToPauseNow() { return TRUE; } |
1458 }; | 1458 }; |
OLD | NEW |