00001 //* Módulo : xysdstr.h 00002 // _Desc_ : Declara classe XYStringScaleDecorator. 00003 // _Autores_ : Camilo da Fonseca Freire. 00004 // _Data_ : 21 mar 96. 00005 00006 #ifndef __XYSCDTST_H 00007 #define __XYSCDTST_H 00008 00009 #include "xysd.h" 00010 #include "xytext.h" 00011 00012 //* XYStringScaleDecorator 00013 // Classe especializada onde decorações textuais são formatadas, ou seja, 00014 // os textos são desenhados no formato indicado, próximo ao eixo ao qual 00015 // estão relacionados e na ordem indicada pelo usuário. 00016 class XYStringScaleDecorator : public XYScaleDecorator 00017 { 00018 public: 00019 00020 //* Construtor e Destrutor 00021 //* Construtor da classe XYStringScaleDecorator 00022 XYStringScaleDecorator (char *label[], // vetor de labels 00023 int n_labels, // numero de labels 00024 XYText* scale); // atributos do texto 00025 00026 //* Destrutor da classe XYStringScaleDecorator 00027 virtual ~XYStringScaleDecorator (void); 00028 00029 //* Define/Consulta atributos 00030 //* Define o formato de exibição dos labels 00031 virtual void labels (char **lb); 00032 //* Retorna o formato de exibição dos labels 00033 virtual char** labels (void) const; 00034 00035 //* Define a quantidade de caracters envolvidos 00036 virtual void numLabels (int nlb); 00037 //* Retorna a quantidade de caracters envolvidos 00038 virtual int numLabels (void) const; 00039 00040 //* Define a escala 00041 virtual void scale (XYText *s); 00042 //* Retorna a escala 00043 virtual XYText* scale (void) const; 00044 00045 //* Métodos de Draw 00046 //* Desenha os labels dos ticks que estão no intervalo especificado 00047 virtual void draw (const XYAxis *axis, int first_tick, int last_tick) const; 00048 00049 //* BoundingBox 00050 //* Retorna menor retângulo que contém toda a decoração 00051 virtual void boundingBox (const XYAxis *axis, int& xmin, int& ymin, 00052 int& xmax, int& ymax) const; 00053 00054 private: 00055 00056 char** _label; // string a ser decorada 00057 int _n_labels; // quantidade de caracters envolvidos 00058 XYText* _scale; // atributos de texto usados para desenhar o número 00059 }; 00060 00061 #endif 00062