Logo Search packages:      
Sourcecode: ktechlab version File versions  Download package

utils.h

#ifndef UTILS_H
#define UTILS_H

#include <qpoint.h>
#include <cmath>

inline int roundDown( int x, int roundness )
{
      if ( x < 0 )
            return (x-roundness+1) / roundness;
      else
            return (x / roundness);
}
inline int roundDown( double x, int roundness )
{
      return roundDown( int(x), roundness );
}

inline QPoint roundDown( const QPoint & p, int roundness )
{
      return QPoint( roundDown( p.x(), roundness ), roundDown( p.y(), roundness ) );
}

inline int toCanvas( int pos )
{
    return pos*8+4;
}
inline int fromCanvas( int pos )
{
      return roundDown( pos-4, 8 );
}

inline QPoint toCanvas( const QPoint * pos )
{
      return QPoint( toCanvas(pos->x()), toCanvas(pos->y()) );
}
inline QPoint fromCanvas( const QPoint * pos )
{
      return QPoint( fromCanvas(pos->x()), fromCanvas(pos->y()) );
}

inline QPoint toCanvas( const QPoint & pos )
{
      return QPoint( toCanvas(pos.x()), toCanvas(pos.y()) );
}
inline QPoint fromCanvas( const QPoint & pos )
{
      return QPoint( fromCanvas(pos.x()), fromCanvas(pos.y()) );
}

inline int roundDouble( double x )
{
      return int(std::floor(x+0.5));
}

inline double qpoint_distance( const QPoint & p1, const QPoint & p2 )
{
      double dx = p1.x() - p2.x();
      double dy = p1.y() - p2.y();

      return std::sqrt( dx*dx + dy*dy );
}


inline int snapToCanvas( int x )
{
      return roundDown( x, 8 )*8 + 4;
}
inline int snapToCanvas( double x )
{
      return snapToCanvas( int(x) );
}

#endif

Generated by  Doxygen 1.6.0   Back to index