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

Side by Side Diff: core/src/fxge/agg/agg23/agg_vertex_sequence.h

Issue 402463002: Replace agg with skia (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Fix clang compile error Created 6 years, 5 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/fxge/agg/agg23/agg_vcgen_stroke.h ('k') | core/src/fxge/agg/agg23/fx_agg_curves.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1
2 //----------------------------------------------------------------------------
3 // Anti-Grain Geometry - Version 2.3
4 // Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
5 //
6 // Permission to copy, use, modify, sell and distribute this software
7 // is granted provided this copyright notice appears in all copies.
8 // This software is provided "as is" without express or implied
9 // warranty, and with no claim as to its suitability for any purpose.
10 //
11 //----------------------------------------------------------------------------
12 // Contact: mcseem@antigrain.com
13 // mcseemagg@yahoo.com
14 // http://www.antigrain.com
15 //----------------------------------------------------------------------------
16 //
17 // vertex_sequence container and vertex_dist struct
18 //
19 //----------------------------------------------------------------------------
20 #ifndef AGG_VERTEX_SEQUENCE_INCLUDED
21 #define AGG_VERTEX_SEQUENCE_INCLUDED
22 #include "agg_basics.h"
23 #include "agg_array.h"
24 #include "agg_math.h"
25 namespace agg
26 {
27 template<class T, unsigned S = 6>
28 class vertex_sequence : public pod_deque<T, S>
29 {
30 public:
31 typedef pod_deque<T, S> base_type;
32 void add(const T& val);
33 void modify_last(const T& val);
34 void close(bool remove_flag);
35 };
36 template<class T, unsigned S>
37 void vertex_sequence<T, S>::add(const T& val)
38 {
39 if(base_type::size() > 1) {
40 if(!(*this)[base_type::size() - 2]((*this)[base_type::size() - 1])) {
41 base_type::remove_last();
42 }
43 }
44 base_type::add(val);
45 }
46 template<class T, unsigned S>
47 void vertex_sequence<T, S>::modify_last(const T& val)
48 {
49 base_type::remove_last();
50 add(val);
51 }
52 template<class T, unsigned S>
53 void vertex_sequence<T, S>::close(bool closed)
54 {
55 while(base_type::size() > 1) {
56 if((*this)[base_type::size() - 2]((*this)[base_type::size() - 1])) {
57 break;
58 }
59 T t = (*this)[base_type::size() - 1];
60 base_type::remove_last();
61 modify_last(t);
62 }
63 if(closed) {
64 while(base_type::size() > 1) {
65 if((*this)[base_type::size() - 1]((*this)[0])) {
66 break;
67 }
68 base_type::remove_last();
69 }
70 }
71 }
72 const FX_FLOAT vertex_dist_epsilon = 1e-14f;
73 struct vertex_dist : public CFX_Object {
74 FX_FLOAT x;
75 FX_FLOAT y;
76 FX_FLOAT dist;
77 vertex_dist() {}
78 vertex_dist(FX_FLOAT x_, FX_FLOAT y_) :
79 x(x_),
80 y(y_),
81 dist(0)
82 {
83 }
84 bool operator () (const vertex_dist& val)
85 {
86 bool ret = (dist = calc_distance(x, y, val.x, val.y)) > vertex_dist_epsi lon;
87 return ret;
88 }
89 };
90 struct vertex_dist_cmd : public vertex_dist {
91 unsigned cmd;
92 vertex_dist_cmd() {}
93 vertex_dist_cmd(FX_FLOAT x_, FX_FLOAT y_, unsigned cmd_) :
94 vertex_dist(x_, y_),
95 cmd(cmd_)
96 {
97 }
98 };
99 }
100 #endif
OLDNEW
« no previous file with comments | « core/src/fxge/agg/agg23/agg_vcgen_stroke.h ('k') | core/src/fxge/agg/agg23/fx_agg_curves.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698