Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(723)

Side by Side Diff: core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp

Issue 1729613003: Remove FXSYS_Mul. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase to master Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp ('k') | core/src/fxge/dib/fx_dib_engine.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "core/src/fpdfapi/fpdf_render/render_int.h" 7 #include "core/src/fpdfapi/fpdf_render/render_int.h"
8 8
9 #include "core/include/fpdfapi/fpdf_pageobj.h" 9 #include "core/include/fpdfapi/fpdf_pageobj.h"
10 #include "core/include/fpdfapi/fpdf_render.h" 10 #include "core/include/fpdfapi/fpdf_render.h"
(...skipping 26 matching lines...) Expand all
37 FX_BOOL bStartExtend = FALSE, bEndExtend = FALSE; 37 FX_BOOL bStartExtend = FALSE, bEndExtend = FALSE;
38 pArray = pDict->GetArrayBy("Extend"); 38 pArray = pDict->GetArrayBy("Extend");
39 if (pArray) { 39 if (pArray) {
40 bStartExtend = pArray->GetIntegerAt(0); 40 bStartExtend = pArray->GetIntegerAt(0);
41 bEndExtend = pArray->GetIntegerAt(1); 41 bEndExtend = pArray->GetIntegerAt(1);
42 } 42 }
43 int width = pBitmap->GetWidth(); 43 int width = pBitmap->GetWidth();
44 int height = pBitmap->GetHeight(); 44 int height = pBitmap->GetHeight();
45 FX_FLOAT x_span = end_x - start_x; 45 FX_FLOAT x_span = end_x - start_x;
46 FX_FLOAT y_span = end_y - start_y; 46 FX_FLOAT y_span = end_y - start_y;
47 FX_FLOAT axis_len_square = 47 FX_FLOAT axis_len_square = (x_span * x_span) + (y_span * y_span);
48 FXSYS_Mul(x_span, x_span) + FXSYS_Mul(y_span, y_span);
49 CFX_Matrix matrix; 48 CFX_Matrix matrix;
50 matrix.SetReverse(*pObject2Bitmap); 49 matrix.SetReverse(*pObject2Bitmap);
51 int total_results = 0; 50 int total_results = 0;
52 for (int j = 0; j < nFuncs; j++) { 51 for (int j = 0; j < nFuncs; j++) {
53 if (pFuncs[j]) { 52 if (pFuncs[j]) {
54 total_results += pFuncs[j]->CountOutputs(); 53 total_results += pFuncs[j]->CountOutputs();
55 } 54 }
56 } 55 }
57 if (pCS->CountComponents() > total_results) { 56 if (pCS->CountComponents() > total_results) {
58 total_results = pCS->CountComponents(); 57 total_results = pCS->CountComponents();
(...skipping 19 matching lines...) Expand all
78 FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255), 77 FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255),
79 FXSYS_round(G * 255), FXSYS_round(B * 255))); 78 FXSYS_round(G * 255), FXSYS_round(B * 255)));
80 } 79 }
81 int pitch = pBitmap->GetPitch(); 80 int pitch = pBitmap->GetPitch();
82 for (int row = 0; row < height; row++) { 81 for (int row = 0; row < height; row++) {
83 FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch); 82 FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch);
84 for (int column = 0; column < width; column++) { 83 for (int column = 0; column < width; column++) {
85 FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row; 84 FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row;
86 matrix.Transform(x, y); 85 matrix.Transform(x, y);
87 FX_FLOAT scale = FXSYS_Div( 86 FX_FLOAT scale = FXSYS_Div(
88 FXSYS_Mul(x - start_x, x_span) + FXSYS_Mul(y - start_y, y_span), 87 ((x - start_x) * x_span) + ((y - start_y) * y_span), axis_len_square);
89 axis_len_square);
90 int index = (int32_t)(scale * (SHADING_STEPS - 1)); 88 int index = (int32_t)(scale * (SHADING_STEPS - 1));
91 if (index < 0) { 89 if (index < 0) {
92 if (!bStartExtend) { 90 if (!bStartExtend) {
93 continue; 91 continue;
94 } 92 }
95 index = 0; 93 index = 0;
96 } else if (index >= SHADING_STEPS) { 94 } else if (index >= SHADING_STEPS) {
97 if (!bEndExtend) { 95 if (!bEndExtend) {
98 continue; 96 continue;
99 } 97 }
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 offset += nresults; 156 offset += nresults;
159 } 157 }
160 } 158 }
161 } 159 }
162 FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; 160 FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f;
163 pCS->GetRGB(pResults, R, G, B); 161 pCS->GetRGB(pResults, R, G, B);
164 rgb_array[i] = 162 rgb_array[i] =
165 FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255), 163 FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255),
166 FXSYS_round(G * 255), FXSYS_round(B * 255))); 164 FXSYS_round(G * 255), FXSYS_round(B * 255)));
167 } 165 }
168 FX_FLOAT a = FXSYS_Mul(start_x - end_x, start_x - end_x) + 166 FX_FLOAT a = ((start_x - end_x) * (start_x - end_x)) +
169 FXSYS_Mul(start_y - end_y, start_y - end_y) - 167 ((start_y - end_y) * (start_y - end_y)) -
170 FXSYS_Mul(start_r - end_r, start_r - end_r); 168 ((start_r - end_r) * (start_r - end_r));
171 int width = pBitmap->GetWidth(); 169 int width = pBitmap->GetWidth();
172 int height = pBitmap->GetHeight(); 170 int height = pBitmap->GetHeight();
173 int pitch = pBitmap->GetPitch(); 171 int pitch = pBitmap->GetPitch();
174 FX_BOOL bDecreasing = FALSE; 172 FX_BOOL bDecreasing = FALSE;
175 if (start_r > end_r) { 173 if (start_r > end_r) {
176 int length = (int)FXSYS_sqrt((FXSYS_Mul(start_x - end_x, start_x - end_x) + 174 int length = (int)FXSYS_sqrt((((start_x - end_x) * (start_x - end_x)) +
177 FXSYS_Mul(start_y - end_y, start_y - end_y))); 175 ((start_y - end_y) * (start_y - end_y))));
178 if (length < start_r - end_r) { 176 if (length < start_r - end_r) {
179 bDecreasing = TRUE; 177 bDecreasing = TRUE;
180 } 178 }
181 } 179 }
182 for (int row = 0; row < height; row++) { 180 for (int row = 0; row < height; row++) {
183 FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch); 181 FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch);
184 for (int column = 0; column < width; column++) { 182 for (int column = 0; column < width; column++) {
185 FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row; 183 FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row;
186 matrix.Transform(x, y); 184 matrix.Transform(x, y);
187 FX_FLOAT b = -2 * (FXSYS_Mul(x - start_x, end_x - start_x) + 185 FX_FLOAT b = -2 * (((x - start_x) * (end_x - start_x)) +
188 FXSYS_Mul(y - start_y, end_y - start_y) + 186 ((y - start_y) * (end_y - start_y)) +
189 FXSYS_Mul(start_r, end_r - start_r)); 187 (start_r * (end_r - start_r)));
190 FX_FLOAT c = FXSYS_Mul(x - start_x, x - start_x) + 188 FX_FLOAT c = ((x - start_x) * (x - start_x)) +
191 FXSYS_Mul(y - start_y, y - start_y) - 189 ((y - start_y) * (y - start_y)) - (start_r * start_r);
192 FXSYS_Mul(start_r, start_r);
193 FX_FLOAT s; 190 FX_FLOAT s;
194 if (a == 0) { 191 if (a == 0) {
195 s = FXSYS_Div(-c, b); 192 s = FXSYS_Div(-c, b);
196 } else { 193 } else {
197 FX_FLOAT b2_4ac = FXSYS_Mul(b, b) - 4 * FXSYS_Mul(a, c); 194 FX_FLOAT b2_4ac = (b * b) - 4 * (a * c);
198 if (b2_4ac < 0) { 195 if (b2_4ac < 0) {
199 continue; 196 continue;
200 } 197 }
201 FX_FLOAT root = FXSYS_sqrt(b2_4ac); 198 FX_FLOAT root = FXSYS_sqrt(b2_4ac);
202 FX_FLOAT s1, s2; 199 FX_FLOAT s1, s2;
203 if (a > 0) { 200 if (a > 0) {
204 s1 = FXSYS_Div(-b - root, 2 * a); 201 s1 = FXSYS_Div(-b - root, 2 * a);
205 s2 = FXSYS_Div(-b + root, 2 * a); 202 s2 = FXSYS_Div(-b + root, 2 * a);
206 } else { 203 } else {
207 s2 = FXSYS_Div(-b - root, 2 * a); 204 s2 = FXSYS_Div(-b - root, 2 * a);
(...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 } 1204 }
1208 } 1205 }
1209 if (bStroke) { 1206 if (bStroke) {
1210 CPDF_Color& StrokeColor = *pPathObj->m_ColorState.GetStrokeColor(); 1207 CPDF_Color& StrokeColor = *pPathObj->m_ColorState.GetStrokeColor();
1211 if (StrokeColor.m_pCS && StrokeColor.m_pCS->GetFamily() == PDFCS_PATTERN) { 1208 if (StrokeColor.m_pCS && StrokeColor.m_pCS->GetFamily() == PDFCS_PATTERN) {
1212 DrawPathWithPattern(pPathObj, pObj2Device, &StrokeColor, TRUE); 1209 DrawPathWithPattern(pPathObj, pObj2Device, &StrokeColor, TRUE);
1213 bStroke = FALSE; 1210 bStroke = FALSE;
1214 } 1211 }
1215 } 1212 }
1216 } 1213 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp ('k') | core/src/fxge/dib/fx_dib_engine.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698