All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Static Public Attributes | Protected Member Functions
SciFigs::CircleMask Class Reference

A circular mask. More...

#include <CircleMask.h>

Inheritance diagram for SciFigs::CircleMask:
SciFigs::CircleViewer SciFigs::GraphContentLayer QGpGuiTools::PropertyItem QGpCoreTools::XMLClass

List of all members.

Public Member Functions

virtual Rect boundingRect () const
 CircleMask (AxisWindow *parent=0)
virtual void paintData (const LayerPainterRequest &lp, QPainter &p, double dotpercm) const
void set (double x, double y, double rx, double ry, QColor col)
virtual const QString & xml_tagName () const

Static Public Attributes

static const QString xmlCircleMaskTag = "CircleMask"

Protected Member Functions

void xml_polich (XML_POLISH_ARGS)

Detailed Description

A circular mask.

Mask all inferior layers and leave only a visible circle.

TODO: add a property widget


Constructor & Destructor Documentation

Constructs a circle centered around 0,0 with a radius of 1.

References SciFigs::CircleViewer::add(), and TRACE.

      : CircleViewer(parent)
  {
    TRACE;
    add(0, 0, 1, 1, 0.0, Qt::white);
  }

Member Function Documentation

Returns bounding rectangle.

Reimplemented from SciFigs::CircleViewer.

References SciFigs::CircleViewer::_items, QGpCoreTools::Ellipse::center(), TRACE, QGpCoreTools::Point2D::x(), QGpCoreTools::Ellipse::xRadius(), QGpCoreTools::Point2D::y(), and QGpCoreTools::Ellipse::yRadius().

  {
    TRACE;
    const Ellipse& ell=_items[0]._ellipse;
    const Point2D& c=ell.center();
    double xRadius=ell.xRadius();
    double yRadius=ell.yRadius();
    Rect r(c.x()-xRadius, c.y()-yRadius, c.x()+xRadius, c.y()+yRadius);
    return r;
  }
void SciFigs::CircleMask::paintData ( const LayerPainterRequest lp,
QPainter &  p,
double  dotpercm 
) const [virtual]

Paints the mask.

Reimplemented from SciFigs::CircleViewer.

References SciFigs::CircleViewer::Item::_color, SciFigs::CircleViewer::Item::_ellipse, SciFigs::CircleViewer::_items, QGpCoreTools::abs(), SciFigs::GraphContentOptions::ax(), SciFigs::GraphContentOptions::ay(), QGpCoreTools::Ellipse::center(), QGpCoreTools::Rect::height(), QGpCoreTools::Ellipse::majorRadius(), QGpCoreTools::Ellipse::minorRadius(), SciFigs::LayerPainterRequest::options(), SciFigs::CircleViewer::Limits::polarLimits(), TRACE, QGpCoreTools::Rect::width(), QGpCoreTools::Point2D::x(), QGpCoreTools::Rect::x1(), SciFigs::GraphContentOptions::xr2s(), SciFigs::GraphContentOptions::xVisMax(), SciFigs::GraphContentOptions::xVisMin(), QGpCoreTools::Point2D::y(), QGpCoreTools::Rect::y1(), SciFigs::GraphContentOptions::yr2s(), SciFigs::GraphContentOptions::yVisMax(), and SciFigs::GraphContentOptions::yVisMin().

  {
    TRACE;
    const GraphContentOptions& gc=lp.options();
    Limits limits(gc);
    double startPhi, stopPhi;
    const Item& item=_items[0];
    const Ellipse& ell=item._ellipse;
    if(limits.polarLimits(ell, startPhi, stopPhi)) {
      QPainterPath path;
      Rect r(gc.xr2s(gc.xVisMin()), gc.yr2s(gc.yVisMin()), gc.xr2s(gc.xVisMax()), gc.yr2s(gc.yVisMax()));
      path.addRect((int)r.x1(), (int)r.y1(), (int)r.width(), (int)r.height());
      int rx=abs((int)(ell.majorRadius()*gc.ax()));
      int ry=abs((int)(ell.minorRadius()*gc.ay()));
      const Point2D& c=ell.center();
      int orx=gc.xr2s(c.x())-rx;
      int ory=gc.yr2s(c.y())-ry;
      int minphi=(int)floor(Angle::radiansToDegrees(startPhi)*16.0);
      int dphi=(int)ceil(Angle::radiansToDegrees(stopPhi)*16.0)-minphi;
      path.arcTo(orx, ory, rx + rx, ry + ry, minphi, dphi);
      p.setPen(QPen(Qt::NoPen));
      p.setBrush(item._color);
      p.drawPath(path);
    }
  }
void SciFigs::CircleMask::set ( double  x,
double  y,
double  rx,
double  ry,
QColor  col 
)

Sets circle position, circle sizes and mask color.

References TRACE.

Referenced by Simulator::on_gridSizeEdit_valueChanged().

  {
    TRACE;
    CircleViewer::set(0, x, y, rx, ry, 0.0, col);
  }

Makes sure that there is only one circle.

References SciFigs::CircleViewer::resize(), and TRACE.

  {
    TRACE;
    Q_UNUSED(context);
    resize(1);
  }
virtual const QString& SciFigs::CircleMask::xml_tagName ( ) const [inline, virtual]

Reimplemented from SciFigs::CircleViewer.

{return xmlCircleMaskTag;}

Member Data Documentation

const QString SciFigs::CircleMask::xmlCircleMaskTag = "CircleMask" [static]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines