/*
 MATRIX.DOX

 License CC0 PUBLIC DOMAIN

 To the extent possible under law, Mark J. Olesen has waived all copyright
 and related or neighboring rights to FDOSTUI Library. This work is published
 from: United States.
*/

/*! \file matrix.h
\brief Simple transformation matrix (translate only)
*/

/*!
\struct matrix
\brief matrix 

\var matrix::m_translate_x
	amount to translate in the X direction

\var matrix::m_translate_y
	amount to translate in the Y direction
*/


/*!
\var _matrix
\brief current transformation matrix
*/

/*!
\fn void matrix_cleanup()
\brief release resources held by the global matrix object

This routine should be called when the application exits to
release resources created by the matrix routines.
*/

/*!
\fn  void matrix_push()
\brief pushes the current transformation matrix onto the stack
\returns none
*/

/*!
\fn void matrix_pop()
\brief restore the current transformation matrix 
\returns none
*/

/*!
\fn void matrix_translate(
    int const                     	i_translate_x,
    int const                     	i_translate_y)
\brief translate the current transformation matrix
\param[in] i_translate_x amount to translate in the X direction
\param[in] i_translate_y amount to translate in the Y direction
\returns none


This operation is additive.
*/

/*!
\fn void matrix_transform(
    int*const                     	o_pos_x,
    int*const                     	o_pos_y)
\brief apply the transformation matrix to the parameters
\param[in,out] o_pos_x x position to transform
\param[in,out] o_pos_y y position to transform
\returns none
*/
