QWT之QwtClipper 类

QwtClipper 类提供了一些裁剪算法,均为静态函数。因此QwtClipper 类实际上是一个静态工具类,是全局函数的一个替代方案。

Some clipping algos.

具体说来包括三个算法:

  
  
  
  
[cpp] view plain copy
  1. class QWT_EXPORT QwtClipper  
  2. {  
  3. public:  
  4.     static QPolygon clipPolygon( const QRect &,   
  5.         const QPolygon &, bool closePolygon = false ); // 裁剪多边形(整型坐标)  
  6.     static QPolygonF clipPolygonF( const QRectF &,   
  7.         const QPolygonF &, bool closePolygon = false ); // 裁剪多边形(浮点数坐标)  
  8.     static QVector<QwtInterval> clipCircle(  
  9.         const QRectF &, const QPointF &, double radius ); // 裁剪圆  
  10. };  

代码分析:

1)在通常的编码中,我们可能习惯将这些算法定义为全局函数,而在面向对象的系统设计中,过多的全局函数会带来混乱和困惑。如果按照类别(例如这里的“裁剪”)将其分类定义为静态方法。除了能达到全局访问的目的外,还能有效的实现封装。实为良策!

2)实现代码示例:

  
  
  
  
[cpp] view plain copy
  1. /*! 
  2.    Circle clipping 
  3.    clipCircle() devides a circle into intervals of angles representing arcs 
  4.    of the circle. When the circle is completely inside the clip rectangle 
  5.    an interval [0.0, 2 * M_PI] is returned. 
  6.    \param clipRect Clip rectangle 
  7.    \param center Center of the circle 
  8.    \param radius Radius of the circle 
  9.    \return Arcs of the circle 
  10. */  
  11. QVector<QwtInterval> QwtClipper::clipCircle( const QRectF &clipRect,  
  12.     const QPointF ¢er, double radius )  
  13. {  
  14.     QwtCircleClipper clipper( clipRect );  
  15.     return clipper.clipCircle( center, radius );  
  16. }  

QwtCircleClipper 类实现了“裁剪圆”算法的实际功能,但是其本身并未向外暴露,很好的实现了信息隐藏。

你可能感兴趣的:(QWT之QwtClipper 类)