Mask

Description

A Mask consists out of a arbitrary number of polygons and can be used to mask parts of an image.

Public Interface

Constructor

  • Mask()
  • Mask(const Mask& m)
  • Mask(const geom::Polygon2& p,bool invert=false)

void AddPolygon(const geom::Polygon2& p,bool invert=false)

Adds a polygon to the mask.

void Invert()

Inverts the mask.

bool IsInside(const geom::Vec2& v) const

Checks if a point is inside the mask.

bool IsOutside(const geom::Vec2& v) const

Checks if a point is outside the mask.

unsigned int GetPolygonCount() const

Gets the number of polygons in the mask.

geom::Polygon2 GetPolygon(unsigned int n) const

Gets polygon Nr. n.

void SetNode(unsigned int npol,unsigned int nnode,const geom::Vec2& n)

Modifies a node within a polygon of the mask.

void Expand(double val)

Expands the mask by val units.

Operators

  • Mask operator+(const geom::Polygon2& p) const
  • Mask operator+(const Mask& m) const
  • Mask operator!() const
  • Mask operator+( const geom::Vec2& v) const
  • Mask operator*(double d) const

The basic arithmetic operators can be used to add a polygon to a mask to merge two masks to invert a mask or to shift a mask (add a Vec2 to every node).

C++

#include <iplt/mask.hh>

using namespace iplt;
using namespace geom;

int main() 
{
  Polygon2 p;
  p.AddNode(Vec2(1,2));
  p.AddNode(Vec2(10,2));
  p.AddNode(Vec2(10,20));
  p.AddNode(Vec2(5,25));
  p.AddNode(Vec2(1,20));
  // generates mask with polygon p as parameter
  Mask m(p); 
  Polygon2 p2;
  p2.AddNode(Vec2(15,2));
  p2.AddNode(Vec2(20,2));
  p2.AddNode(Vec2(20,20));
  // generates a new mask containing both polygons
  Mask m2=m+p2;
  //inverts mask;
  m2.invert();
  return 0;
}

Python

from iplt import *

p=Polygon2();
p.AddNode(Vec2(1,2))
p.AddNode(Vec2(10,2))
p.AddNode(Vec2(10,20))
p.AddNode(Vec2(5,25))
p.AddNode(Vec2(1,20))
# generates mask with polygon p as parameter
m=Mask(p); 
p2=Polygon2();
p2.AddNode(Vec2(15,2))
p2.AddNode(Vec2(20,2))
p2.AddNode(Vec2(20,20))
# generates a new mask containing both polygons
m2=m+p2;
#inverts mask;
m2.invert()

back to Core Classes