Click here to Skip to main content
15,895,772 members
Articles / Web Development / HTML

Printing Framework

Rate me:
Please Sign up or sign in to vote.
3.77/5 (10 votes)
22 Nov 20032 min read 65.1K   3.3K   28  
Simple framework for text and graphic Printing/Previewing
/*! 
 *********************************************************************
 * \file       : FormatString.h
 *
 *  \b Package : dll Printer
 *
 *  \b Author  : T. Montembault                            
 *
 *	\b Date		: 03/04/02
 *
 *  \b Objet   : Une CString capable de calculer sa taille (nombre de lignes)
 *						et de s'afficher.
 *
 *********************************************************************
 * \par Version History:
 *
 *		@li  V 0.10  03.04.02 Cr�ation 
 *
 *********************************************************************
 *
 */
#ifndef AFX_TEXTITEM_H__5E17814C_9A8F_47B2_965D_C9CFD04082B5__INCLUDED_
#define AFX_TEXTITEM_H__5E17814C_9A8F_47B2_965D_C9CFD04082B5__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <vector>

namespace printer {

//! Un CString capable de "s'auto-formater" sur un contexte d'impression.
/*! En fonction d'une longueur fournie et d'un contexte d'impression (=taille
	de la police), la classe construit un tableau d'index. Pour chaque 
	ligne, ces index indiquent quelle partie de la CString s'affiche.
	
	Exemple :
	\verbatim
    Sur la CString = "Il fait beau aujourd'hui."
    qui se formatte ainsi sur un DC :
    
    Il fait beau
    aujourd'hui.

    On obtient :
      m_listFirstLast[0] = (0,11);
      m_listFirstLast[1] = (13,24);
	\endverbatim

	Ensuite les accesseurs permettent de r�cup�rer facilement le nombre de
	lignes, le contenu d'une ligne et la longueur d'une ligne.
*/
class CFormatString  
{
public:

	/*! \par Objet :
		Constructeur
		strText : Le texte � formater.
	*/
	CFormatString(const CString& strText);

	/*! \par Objet :
		Le destructeur
	*/
	virtual ~CFormatString();

	/*! \par Objet :
		Initialisation
		\param pDC : Un pointeur sur le contexte ou doit se faire l'affichage
		\param nLon : La longueur allou�e pour l'affichage

		En fonction de ces param�tres et du texte, la m�thode initialise un 
		tableau qui permet de calculer le nombre de lignes et les index dans la 
		cha�ne de caract�re pour chaque ligne.
	*/
	void Initialize(CDC* pDC, int nLon);

	/*! \par Objet :
		Accesseur
		\return Le nombre de lignes.
	*/
	int GetNbLignes();

	/*! \par Objet :
		Accesseur
		\param nIndex : le num�ro de la ligne
		\return La longueur de la sous-cha�ne affich�e � la ligne nIndex.
	*/
	int GetLength(int nIndex);

	/*! \par Objet :
		Accesseur
		\param nIndex : le num�ro de la ligne
		\return La sous-cha�ne affich�e � la ligne nIndex
	*/
	CString GetSubLigne(int nIndex);

private:
	/*! \typedef ListOfFirstLast 
		Un tableau d'indices.
	*/ 
	typedef std::vector< std::pair<int, int> > ListOfFirstLast;

	/*! \par Objet
		Calcule de l'endroit ou faire la c�sure.
		\param pDC : Un pointeur sur le contexte
		\param nLon : La longueur
		\param strText : Une r�f�rence sur la cha�ne � formatter
		\param nFirst : L'indice du premier caract�re
		\param nLast : L'indice du dernier caract�re
	*/
	void static GetCesure(CDC* pDC, int nLon, CString& strText, int& nFirst, int& nLast);

	CString m_strText;								/*!< Le texte � formater */
	ListOfFirstLast m_listFirstLast;	/*!< Une liste d'indices */
};

}
#endif // !defined(AFX_TEXTITEM_H__5E17814C_9A8F_47B2_965D_C9CFD04082B5__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions