diff options
author | zverevgeny <zverevgeny@yandex-team.com> | 2025-05-13 19:00:02 +0300 |
---|---|---|
committer | zverevgeny <zverevgeny@yandex-team.com> | 2025-05-13 19:13:54 +0300 |
commit | 92e06374736aa28637dc0e706455b65c8268a5e6 (patch) | |
tree | 3df370c199ae25d308e542f02af20f43eab78f8a /contrib/python/matplotlib/py3/extern/agg24-svn/include/agg_path_length.h | |
parent | dc63d5794da99c2ebe3f32914d0351d9707660b0 (diff) | |
download | ydb-92e06374736aa28637dc0e706455b65c8268a5e6.tar.gz |
Import matplotlib
commit_hash:d59c2338025ef8fd1e1f961ed9d8d5fd52d0bd96
Diffstat (limited to 'contrib/python/matplotlib/py3/extern/agg24-svn/include/agg_path_length.h')
-rw-r--r-- | contrib/python/matplotlib/py3/extern/agg24-svn/include/agg_path_length.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/contrib/python/matplotlib/py3/extern/agg24-svn/include/agg_path_length.h b/contrib/python/matplotlib/py3/extern/agg24-svn/include/agg_path_length.h new file mode 100644 index 00000000000..740ba31df27 --- /dev/null +++ b/contrib/python/matplotlib/py3/extern/agg24-svn/include/agg_path_length.h @@ -0,0 +1,65 @@ +//---------------------------------------------------------------------------- +// Anti-Grain Geometry - Version 2.4 +// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com) +// +// Permission to copy, use, modify, sell and distribute this software +// is granted provided this copyright notice appears in all copies. +// This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. +// +//---------------------------------------------------------------------------- +// Contact: mcseem@antigrain.com +// mcseemagg@yahoo.com +// http://www.antigrain.com +//---------------------------------------------------------------------------- +#ifndef AGG_PATH_LENGTH_INCLUDED +#define AGG_PATH_LENGTH_INCLUDED + +#include "agg_math.h" + +namespace agg +{ + template<class VertexSource> + double path_length(VertexSource& vs, unsigned path_id = 0) + { + double len = 0.0; + double start_x = 0.0; + double start_y = 0.0; + double x1 = 0.0; + double y1 = 0.0; + double x2 = 0.0; + double y2 = 0.0; + bool first = true; + + unsigned cmd; + vs.rewind(path_id); + while(!is_stop(cmd = vs.vertex(&x2, &y2))) + { + if(is_vertex(cmd)) + { + if(first || is_move_to(cmd)) + { + start_x = x2; + start_y = y2; + } + else + { + len += calc_distance(x1, y1, x2, y2); + } + x1 = x2; + y1 = y2; + first = false; + } + else + { + if(is_close(cmd) && !first) + { + len += calc_distance(x1, y1, start_x, start_y); + } + } + } + return len; + } +} + +#endif |