agg_vpgen_clip_polyline.cpp

来自「这是VCF框架的代码」· C++ 代码 · 共 78 行

CPP
78
字号
//----------------------------------------------------------------------------// 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//----------------------------------------------------------------------------#include "agg_vpgen_clip_polyline.h"#include "agg_clip_liang_barsky.h"namespace agg{    //----------------------------------------------------------------------------    void vpgen_clip_polyline::reset()    {        m_vertex = 0;        m_num_vertices = 0;        m_move_to = false;    }    //----------------------------------------------------------------------------    void vpgen_clip_polyline::move_to(double x, double y)    {        m_vertex = 0;        m_num_vertices = 0;        m_x1 = x;        m_y1 = y;        m_move_to = true;    }    //----------------------------------------------------------------------------    void vpgen_clip_polyline::line_to(double x, double y)    {        double x2 = x;        double y2 = y;        unsigned flags = clip_line_segment(&m_x1, &m_y1, &x2, &y2, m_clip_box);        m_vertex = 0;        m_num_vertices = 0;        if((flags & 4) == 0)        {            if((flags & 1) != 0 || m_move_to)            {                m_x[0] = m_x1;                m_y[0] = m_y1;                m_cmd[0] = path_cmd_move_to;                m_num_vertices = 1;            }            m_x[m_num_vertices] = x2;            m_y[m_num_vertices] = y2;            m_cmd[m_num_vertices++] = path_cmd_line_to;            m_move_to = (flags & 2) != 0;        }        m_x1 = x;        m_y1 = y;    }    //----------------------------------------------------------------------------    unsigned vpgen_clip_polyline::vertex(double* x, double* y)    {        if(m_vertex < m_num_vertices)        {            *x = m_x[m_vertex];            *y = m_y[m_vertex];            return m_cmd[m_vertex++];        }        return path_cmd_stop;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?