Exemple #1
0
void Selection::transform(QTransform transform, int pageNum)
{
  m_selectionPolygon = transform.map(m_selectionPolygon);

  qreal sx = transform.m11();
  qreal sy = transform.m22();
  qreal s = (sx + sy) / 2.0;

  for (int i = 0; i < m_strokes.size(); ++i)
  {
    m_strokes[i].points = transform.map(m_strokes[i].points);
    /*
    'if (!transform.isRotating())' doesn't work, since rotation of 180 and 360 degrees is treated as a scaling transformation. Same goes for
    'if (transform.isScaling())'
    */
    if (transform.determinant() != 1)
    {
      m_strokes[i].penWidth = m_strokes[i].penWidth * s;
    }
  }
  if (transform.determinant() != 1)
  {
    m_x_padding *= sx;
    m_y_padding *= sy;
  }
  if (transform.isRotating())
  {
    m_x_padding = m_padding;
    m_y_padding = m_padding;
  }

  m_angle = 0.0;

  setPageNum(pageNum);
}
bool CallbackAxisPointsAbstract::threePointsAreCollinear (double m [3] [3], int numberColumns)
{
  if (numberColumns == 3) {

    // Compute determinant to determine if the three points are collinear
    QTransform t (
        m [0] [0], m [0] [1], m [0] [2],
        m [1] [0], m [1] [1], m [1] [2],
        m [2] [0], m [2] [1], m [2] [2]);

    return (t.determinant() == 0);
  }

  return false;
}
Exemple #3
0
qreal KoUnit::approxTransformScale(const QTransform &t)
{
    return std::sqrt(t.determinant());
}
bool CallbackAxisPointsAbstract::threePointsAreCollinear (const QTransform &transform)
{
  return (transform.determinant() == 0);
}
Exemple #5
0
bool QPaintEngineEx::shouldDrawCachedGlyphs(qreal pixelSize, const QTransform &m) const
{
    return (pixelSize * pixelSize * qAbs(m.determinant())) <
           QT_MAX_CACHED_GLYPH_SIZE * QT_MAX_CACHED_GLYPH_SIZE;
}