| 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 "xfa/fxgraphics/cfx_path_generator.h" | 7 #include "xfa/fxgraphics/cfx_path_generator.h" |
| 8 | 8 |
| 9 #include "core/fxge/cfx_pathdata.h" | 9 #include "core/fxge/cfx_pathdata.h" |
| 10 #include "core/fxge/cfx_renderdevice.h" | 10 #include "core/fxge/cfx_renderdevice.h" |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 sweep_angle = FX_PI * 2; | 154 sweep_angle = FX_PI * 2; |
| 155 } | 155 } |
| 156 if (sweep_angle <= -FX_PI * 2) { | 156 if (sweep_angle <= -FX_PI * 2) { |
| 157 sweep_angle = -FX_PI * 2; | 157 sweep_angle = -FX_PI * 2; |
| 158 } | 158 } |
| 159 m_pPathData->AddPointCount(1); | 159 m_pPathData->AddPointCount(1); |
| 160 m_pPathData->SetPoint(m_pPathData->GetPointCount() - 1, | 160 m_pPathData->SetPoint(m_pPathData->GetPointCount() - 1, |
| 161 x + (width * FXSYS_cos(start_angle)), | 161 x + (width * FXSYS_cos(start_angle)), |
| 162 y + (height * FXSYS_sin(start_angle)), FXPT_MOVETO); | 162 y + (height * FXSYS_sin(start_angle)), FXPT_MOVETO); |
| 163 FX_FLOAT total_sweep = 0, local_sweep = 0, prev_sweep = 0; | 163 FX_FLOAT total_sweep = 0, local_sweep = 0, prev_sweep = 0; |
| 164 FX_BOOL done = FALSE; | 164 bool done = false; |
| 165 do { | 165 do { |
| 166 if (sweep_angle < 0) { | 166 if (sweep_angle < 0) { |
| 167 prev_sweep = total_sweep; | 167 prev_sweep = total_sweep; |
| 168 local_sweep = -FX_PI / 2; | 168 local_sweep = -FX_PI / 2; |
| 169 total_sweep -= FX_PI / 2; | 169 total_sweep -= FX_PI / 2; |
| 170 if (total_sweep <= sweep_angle + bezier_arc_angle_epsilon) { | 170 if (total_sweep <= sweep_angle + bezier_arc_angle_epsilon) { |
| 171 local_sweep = sweep_angle - prev_sweep; | 171 local_sweep = sweep_angle - prev_sweep; |
| 172 done = TRUE; | 172 done = true; |
| 173 } | 173 } |
| 174 } else { | 174 } else { |
| 175 prev_sweep = total_sweep; | 175 prev_sweep = total_sweep; |
| 176 local_sweep = FX_PI / 2; | 176 local_sweep = FX_PI / 2; |
| 177 total_sweep += FX_PI / 2; | 177 total_sweep += FX_PI / 2; |
| 178 if (total_sweep >= sweep_angle - bezier_arc_angle_epsilon) { | 178 if (total_sweep >= sweep_angle - bezier_arc_angle_epsilon) { |
| 179 local_sweep = sweep_angle - prev_sweep; | 179 local_sweep = sweep_angle - prev_sweep; |
| 180 done = TRUE; | 180 done = true; |
| 181 } | 181 } |
| 182 } | 182 } |
| 183 ArcTo(x, y, width, height, start_angle, local_sweep); | 183 ArcTo(x, y, width, height, start_angle, local_sweep); |
| 184 start_angle += local_sweep; | 184 start_angle += local_sweep; |
| 185 } while (!done); | 185 } while (!done); |
| 186 } | 186 } |
| 187 | 187 |
| 188 void CFX_PathGenerator::AddPie(FX_FLOAT x, | 188 void CFX_PathGenerator::AddPie(FX_FLOAT x, |
| 189 FX_FLOAT y, | 189 FX_FLOAT y, |
| 190 FX_FLOAT width, | 190 FX_FLOAT width, |
| 191 FX_FLOAT height, | 191 FX_FLOAT height, |
| 192 FX_FLOAT start_angle, | 192 FX_FLOAT start_angle, |
| 193 FX_FLOAT sweep_angle) { | 193 FX_FLOAT sweep_angle) { |
| 194 if (sweep_angle == 0) { | 194 if (sweep_angle == 0) { |
| 195 int old_count = m_pPathData->GetPointCount(); | 195 int old_count = m_pPathData->GetPointCount(); |
| 196 m_pPathData->AddPointCount(2); | 196 m_pPathData->AddPointCount(2); |
| 197 m_pPathData->SetPoint(old_count, x, y, FXPT_MOVETO); | 197 m_pPathData->SetPoint(old_count, x, y, FXPT_MOVETO); |
| 198 m_pPathData->SetPoint(old_count + 1, x + (width * FXSYS_cos(start_angle)), | 198 m_pPathData->SetPoint(old_count + 1, x + (width * FXSYS_cos(start_angle)), |
| 199 y + (height * FXSYS_sin(start_angle)), FXPT_LINETO); | 199 y + (height * FXSYS_sin(start_angle)), FXPT_LINETO); |
| 200 return; | 200 return; |
| 201 } | 201 } |
| 202 AddArc(x, y, width, height, start_angle, sweep_angle); | 202 AddArc(x, y, width, height, start_angle, sweep_angle); |
| 203 m_pPathData->AddPointCount(1); | 203 m_pPathData->AddPointCount(1); |
| 204 m_pPathData->SetPoint(m_pPathData->GetPointCount() - 1, x, y, | 204 m_pPathData->SetPoint(m_pPathData->GetPointCount() - 1, x, y, |
| 205 FXPT_LINETO | FXPT_CLOSEFIGURE); | 205 FXPT_LINETO | FXPT_CLOSEFIGURE); |
| 206 } | 206 } |
| OLD | NEW |