mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
Sipify QgsClipper
This commit is contained in:
parent
f4f45bf6c6
commit
d76bca0ade
@ -7,7 +7,6 @@ core/qgsattributetableconfig.sip
|
||||
core/qgsattributeeditorelement.sip
|
||||
core/qgsbearingutils.sip
|
||||
core/qgsbrowsermodel.sip
|
||||
core/qgsclipper.sip
|
||||
core/qgscolorramp.sip
|
||||
core/qgscolorscheme.sip
|
||||
core/qgscolorschemeregistry.sip
|
||||
|
@ -1,31 +1,36 @@
|
||||
%Feature ARM
|
||||
/************************************************************************
|
||||
* This file has been generated automatically from *
|
||||
* *
|
||||
* src/core/qgsclipper.h *
|
||||
* *
|
||||
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
|
||||
************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%Feature ARM // Some parts are not available in sip bindings on ARM because of qreal double vs. float issues
|
||||
|
||||
class QgsClipper
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgsclipper.h>
|
||||
%Docstring
|
||||
A class to trim lines and polygons to within a rectangular region.
|
||||
The functions in this class are likely to be called from within a
|
||||
render loop and hence need to as CPU efficient as possible.
|
||||
The main purpose of the functions in this class are to trim lines
|
||||
and polygons to lie within a rectangular region. This is necessary
|
||||
for drawing items to an X11 display which have a limit on the
|
||||
magnitude of the screen coordinates (+/- 32768, i.e. 16 bit integer).
|
||||
%End
|
||||
|
||||
%TypeHeaderCode
|
||||
#include "qgsclipper.h"
|
||||
%End
|
||||
public:
|
||||
|
||||
// Coordinates of the rectangular box that we trim to.
|
||||
//
|
||||
// These are the limits for X11 screen coordinates. The actual
|
||||
// values are +/-32767, but we allow a little bit of space for
|
||||
// rounding errors.
|
||||
|
||||
// You may wonder why the clipping is done to these coordindates
|
||||
// rather than the boundaries of the qgis canvas. Reasons include:
|
||||
// - making the boundaries static const allows the compiler to
|
||||
// optimise the code that uses these values more than if they changed
|
||||
// for every call to the trim code.
|
||||
// - clipping takes quite a bit of CPU effort, and the less that this is
|
||||
// done the better. More stuff would have to be clipped if the
|
||||
// boundaries were the qgis canvas (but this may be offset by
|
||||
// having less to draw).
|
||||
//
|
||||
// The limit is set to 30,000 instead of 32768 because that things
|
||||
// still go wrong.
|
||||
|
||||
static const double MAX_X;
|
||||
static const double MIN_X;
|
||||
@ -33,30 +38,48 @@ class QgsClipper
|
||||
static const double MIN_Y;
|
||||
|
||||
|
||||
//! A handy way to refer to the four boundaries
|
||||
enum Boundary {XMax, XMin, YMax, YMin};
|
||||
enum Boundary
|
||||
{
|
||||
XMax,
|
||||
XMin,
|
||||
YMax,
|
||||
YMin
|
||||
};
|
||||
|
||||
%If (!ARM)
|
||||
/**
|
||||
* Trims the given feature to a rectangular box. Returns the trimmed
|
||||
* feature in x and y. The shapeOpen parameter determines whether
|
||||
* the function treats the points as a closed shape (polygon), or as
|
||||
* an open shape (linestring).
|
||||
*
|
||||
* @note not available in python bindings on android
|
||||
*/
|
||||
static void trimFeature( QVector<double>& x,
|
||||
QVector<double>& y,
|
||||
%If (!ARM) // Not available on ARM sip bindings because of qreal issues
|
||||
static void trimFeature( QVector<double> &x,
|
||||
QVector<double> &y,
|
||||
bool shapeOpen );
|
||||
%Docstring
|
||||
Trims the given feature to a rectangular box. Returns the trimmed
|
||||
feature in x and y. The shapeOpen parameter determines whether
|
||||
the function treats the points as a closed shape (polygon), or as
|
||||
an open shape (linestring).
|
||||
|
||||
.. note::
|
||||
|
||||
not available in python bindings on android
|
||||
%End
|
||||
|
||||
static void trimPolygon( QPolygonF& pts, const QgsRectangle& clipRect );
|
||||
%End
|
||||
static void trimPolygon( QPolygonF &pts, const QgsRectangle &clipRect );
|
||||
|
||||
/** Takes a linestring and clips it to clipExtent
|
||||
* @param curve the linestring
|
||||
* @param clipExtent clipping bounds
|
||||
* @return clipped line coordinates
|
||||
*/
|
||||
static QPolygonF clippedLine( const QgsCurve& curve, const QgsRectangle& clipExtent );
|
||||
static QPolygonF clippedLine( const QgsCurve &curve, const QgsRectangle &clipExtent );
|
||||
%Docstring
|
||||
Takes a linestring and clips it to clipExtent
|
||||
@param curve the linestring
|
||||
@param clipExtent clipping bounds
|
||||
@return clipped line coordinates
|
||||
%End
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* This file has been generated automatically from *
|
||||
* *
|
||||
* src/core/qgsclipper.h *
|
||||
* *
|
||||
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
|
||||
************************************************************************/
|
||||
|
@ -29,6 +29,9 @@
|
||||
|
||||
class QgsCurve;
|
||||
|
||||
SIP_FEATURE( ARM ) // Some parts are not available in sip bindings on ARM because of qreal double vs. float issues
|
||||
|
||||
|
||||
/** \ingroup core
|
||||
* A class to trim lines and polygons to within a rectangular region.
|
||||
* The functions in this class are likely to be called from within a
|
||||
@ -38,7 +41,6 @@ class QgsCurve;
|
||||
* for drawing items to an X11 display which have a limit on the
|
||||
* magnitude of the screen coordinates (+/- 32768, i.e. 16 bit integer).
|
||||
*/
|
||||
|
||||
class CORE_EXPORT QgsClipper
|
||||
{
|
||||
public:
|
||||
@ -69,7 +71,15 @@ class CORE_EXPORT QgsClipper
|
||||
|
||||
|
||||
//! A handy way to refer to the four boundaries
|
||||
enum Boundary {XMax, XMin, YMax, YMin};
|
||||
enum Boundary
|
||||
{
|
||||
XMax,
|
||||
XMin,
|
||||
YMax,
|
||||
YMin
|
||||
};
|
||||
|
||||
SIP_IF_FEATURE( !ARM ) // Not available on ARM sip bindings because of qreal issues
|
||||
|
||||
/**
|
||||
* Trims the given feature to a rectangular box. Returns the trimmed
|
||||
@ -83,6 +93,8 @@ class CORE_EXPORT QgsClipper
|
||||
QVector<double> &y,
|
||||
bool shapeOpen );
|
||||
|
||||
SIP_END
|
||||
|
||||
static void trimPolygon( QPolygonF &pts, const QgsRectangle &clipRect );
|
||||
|
||||
/** Takes a linestring and clips it to clipExtent
|
||||
@ -148,6 +160,7 @@ class CORE_EXPORT QgsClipper
|
||||
static void clipEndLeft( double x0, double y0, double &x1, double &y1, double xMin );
|
||||
};
|
||||
|
||||
#ifndef SIP_RUN
|
||||
// The inline functions
|
||||
|
||||
// Trim the feature using Sutherland and Hodgman's
|
||||
@ -872,6 +885,7 @@ inline bool QgsClipper::clipLineSegment( double xLeft, double xRight, double yBo
|
||||
return false;
|
||||
|
||||
}
|
||||
#endif // SIP_RUN
|
||||
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user