Home | Overview |

# Example

Delphi Code Sample:
      uses
        graphics32, clipper;

      function GetEllipsePoints(bounds: TIntRect): TPolygon;
      begin
        //code to create an elliptical polygon here
      end;

      procedure DrawPolygons(polys: TPolygons; color: TColor32);
      begin
        //code to display the polygons here
      end;

      var
        sub, clp, sol: TPolygons;
      begin

        //set up the subject and clip polygons ...
        setlength(sub, 3);
        sub[0] := GetEllipsePoints(IntRect(100,100,300,300));
        sub[1] := GetEllipsePoints(IntRect(125,130,275,180));
        sub[2] := GetEllipsePoints(IntRect(125,220,275,270));

        setlength(clp, 1);
        clp[0] := GetEllipsePoints(IntRect(140,70,220,320));

        //display the subject and clip polygons ...
        DrawPolygons(sub, 0x8033FFFF);
        DrawPolygons(clp, 0x80FFFF33);

        //get the intersection of the subject and clip polygons ...
        with TClipper.Create do
        try
          AddPolygons(sub, ptSubject);
          AddPolygons(clp, ptClip);
          Execute(ctIntersection, sol, pftEvenOdd, pftEvenOdd);
        finally
          free;
        end;

        //finally draw the intersection polygons ...
        DrawPolygons(sol, 0x40808080);

C++ Code Sample:
      #include "clipper.hpp"

      ...

      //from clipper.hpp ...
      //typedef long long long64;
      //struct IntPoint {long64 X; long64 Y;};
      //typedef std::vector<IntPoint> Polygon;
      //typedef std::vector<Polygon> Polygons;

      using namespace ClipperLib;

      void GetEllipsePoints(IntRect& bounds, Polygon& p)
      {/* ... */}

      void DrawPolygons(Polygons& p, unsigned color)
      {/* ... */}

      int main()
      {
        //set up the subject and clip polygons ...
        Polygons sub(3);
        GetEllipsePoints(IntRect(100,100,300,300), sub[0]);
        GetEllipsePoints(IntRect(125,130,275,180), sub[1]);
        GetEllipsePoints(IntRect(125,220,275,270), sub[2]);

        Polygons clp(1);
        GetEllipsePoints(IntRect(140,70,220,320), clp[0]);

        //display the subject and clip polygons ...
        DrawPolygons(sub, 0x8033FFFF);
        DrawPolygons(clp, 0x80FFFF33);

        //get the intersection of the subject and clip polygons ...
        Clipper clpr;
        clpr.AddPolygons(sub, ptSubject);
        clpr.AddPolygons(clp, ptClip);
        Polygons sol;
        clpr.Execute(ctIntersection, sol, pftEvenOdd, pftEvenOdd);

        //finally draw the intersection polygons ...
        DrawPolygons(sol, 0x40808080);
      }

C# Code Sample:
      ...
      using ClipperLib;

      ...
      using Polygon = List<IntPoint>;
      using Polygons = List<List<IntPoint>>;

      static Polygon GetEllipsePoints(IntRect bounds)
      {/* ... */}

      static void DrawPolygons(Polygon p, unsigned color)
      {/* ... */}

      static void Main(string[] args)
      {
        Polygons subjs = new Polygons(3);
        subjs.Add(GetEllipsePoints(new IntRect(100,100,300,300)));
        subjs.Add(GetEllipsePoints(new IntRect(125,130,275,180)));
        subjs.Add(GetEllipsePoints(new IntRect(125,220,275,270)));

        Polygons clips = new Polygons(1);
        clips.Add(GetEllipsePoints(new IntRect(140,70,220,320)));

        DrawPolygons(subjs, 0x8033FFFF);
        DrawPolygons(clips, 0x80FFFF33);

        Polygons solution = new Polygons();
        Clipper c = new Clipper();
        c.AddPolygons(subjs, PolyType.ptSubject);
        c.AddPolygons(clips, PolyType.ptClip);
        c.Execute(ClipType.ctIntersection, solution);

        DrawPolygons(solution, 0x40808080);
      }

Copyright ©2010-2013 Angus Johnson - Clipper version 5.1.5 - Help file built on 6-May-2013