Exemplo n.º 1
0
WTransform WTransform::adjoint() const
{
  return WTransform(m33() * m22() - m32() * m23(),
		    - (m33() * m12() - m32() * m13()),
		    - (m33() * m21() - m31() * m23()),
		    m33() * m11() - m31() * m13(),
		    m32() * m21() - m31() * m22(),
		    - (m32() * m11() - m31() * m12()));
}
Exemplo n.º 2
0
WTransform& WTransform::rotateRadians(double angle)
{
  double r11 = std::cos(angle);
  double r12 = -std::sin(angle);
  double r21 = -r12;
  double r22 = r11;

  // note: our public constructor is transposed!
  return *this *= WTransform(r11, r21, r12, r22, 0, 0);
}
Exemplo n.º 3
0
Arquivo: WPainter.C Projeto: nkabir/wt
void WPainter::recalculateViewTransform()
{
    viewTransform_ = WTransform();

    double scaleX = viewPort_.width() / window_.width();
    double scaleY = viewPort_.height() / window_.height();

    viewTransform_.translate(viewPort_.x() - window_.x() * scaleX,
                             viewPort_.y() - window_.y() * scaleY);
    viewTransform_.scale(scaleX, scaleY);

    if (device_)
        device_->setChanged(WPaintDevice::Transform);
}
Exemplo n.º 4
0
Arquivo: WPainter.C Projeto: nkabir/wt
void WPainter::drawPie(const WRectF& rectangle, int startAngle, int spanAngle)
{
    WTransform oldTransform = WTransform(worldTransform());

    translate(rectangle.center().x(), rectangle.center().y());
    scale(1., rectangle.height() / rectangle.width());

    WPainterPath path(WPointF(0.0, 0.0));
    path.arcTo(0.0, 0.0, rectangle.width() / 2.0,
               startAngle / 16., spanAngle / 16.);
    path.closeSubPath();

    drawPath(path);

    setWorldTransform(oldTransform);
}
Exemplo n.º 5
0
WTransform WTransform::inverted() const
{
  double det = determinant();

  if (det != 0) {
    WTransform adj = adjoint();

    return WTransform(adj.m11() / det, adj.m12() / det,
		      adj.m21() / det, adj.m22() / det,
		      adj.m31() / det, adj.m32() / det);
  } else {
    LOG_ERROR("inverted(): oops, determinant == 0");

    return *this;
  }
}
Exemplo n.º 6
0
WTransform WTransform::adjoint() const
{
  WTransform res = WTransform(m33() * m22() - m32() * m23(),
		    - (m33() * m12() - m32() * m13()),
		    - (m33() * m21() - m31() * m23()),
		    m33() * m11() - m31() * m13(),
		    m32() * m21() - m31() * m22(),
		    - (m32() * m11() - m31() * m12()));

  if (isJavaScriptBound()) {
    res.assignBinding(*this,
	WT_CLASS ".gfxUtils.transform_adjoint(" + jsRef() + ")");
  }

  return res;
}
Exemplo n.º 7
0
Arquivo: WPainter.C Projeto: nkabir/wt
void WPainter::drawChord(const WRectF& rectangle, int startAngle, int spanAngle)
{
    WTransform oldTransform = WTransform(worldTransform());

    translate(rectangle.center().x(), rectangle.center().y());
    scale(1., rectangle.height() / rectangle.width());

    double start = startAngle / 16.;
    double span = spanAngle / 16.;

    WPainterPath path;
    path.arcMoveTo(0, 0, rectangle.width()/2., start);
    path.arcTo(0, 0, rectangle.width()/2., start, span);
    path.closeSubPath();

    drawPath(path);

    setWorldTransform(oldTransform);
}
Exemplo n.º 8
0
WTransform& WTransform::translate(double dx, double dy)
{
  return *this *= WTransform(1, 0, 0, 1, dx, dy);
}
Exemplo n.º 9
0
WTransform& WTransform::shear(double sh, double sv)
{
  return *this *= WTransform(0, sv, sh, 0, 0, 0);
}
Exemplo n.º 10
0
WTransform& WTransform::scale(double sx, double sy)
{
  return *this *= WTransform(sx, 0, 0, sy, 0, 0);
}