This is the verbatim text of the q2matrix.h include file. It is is provided only for illustration; the copyright remains with Troll Tech.


/****************************************************************************
** $Id: q2matrix.h,v 1.2 1995/05/19 23:12:25 eiriken Exp $
**
** Definition of Q2DMatrix class
**
** Author  : Haavard Nord
** Created : 941020
**
** Copyright (C) 1994,1995 by Troll Tech AS.  All rights reserved.
**
*****************************************************************************/

#ifndef Q2MATRIX_H
#define Q2MATRIX_H

#include "qwindefs.h"
#include "qpntarry.h"
#include "qrect.h"

class Q2DMatrix                                 // 2D transform matrix
{
public:
    Q2DMatrix();
    Q2DMatrix( float m11, float m12, float m21, float m22,
               float dx,  float dy );

    void        setMatrix( float m11, float m12, float m21, float m22,
                           float dx,  float dy );

    float       m11() const { return _m11; }    // get matrix values
    float       m12() const { return _m12; }
    float       m21() const { return _m21; }
    float       m22() const { return _m22; }
    float       dx()  const { return _dx; }
    float       dy()  const { return _dy; }

    void        map( int x, int y, int *tx, int *ty ) const;
    void        map( float x, float y, float *tx, float *ty ) const;
    QPoint      map( const QPoint & ) const;
    QPointArray map( const QPointArray & ) const;

    void        reset();                        // set to default matrix

    Q2DMatrix  &translate( float dx, float dy );// translate matrix
    Q2DMatrix  &scale( float sx, float sy );    // scale matrix
    Q2DMatrix  &shear( float sh, float sv );    // set hor/ver shear
    Q2DMatrix  &rotate( float a );              // rotate 0..360 degrees

    Q2DMatrix   invert( bool * = 0 ) const;     // invert matrix

    bool        operator==( const Q2DMatrix & ) const;
    bool        operator!=( const Q2DMatrix & ) const;
    Q2DMatrix  &operator*=( const Q2DMatrix & );

    QRect       boundingRect( const QRect &r ) const;
private:
    Q2DMatrix  &bmul( const Q2DMatrix & );
    float       _m11, _m12;
    float       _m21, _m22;
    float       _dx,  _dy;
};


Q2DMatrix operator*( const Q2DMatrix &, const Q2DMatrix & );


// --------------------------------------------------------------------------
// Q2DMatrix stream functions
//

QDataStream &operator<<( QDataStream &, const Q2DMatrix & );
QDataStream &operator>>( QDataStream &, Q2DMatrix & );


#endif // Q2MATRIX_H


Generated at 16:17, 1995/06/30 by the webmaster at Troll Tech