00001 //* Módulo : xysdnm.h 00002 // _Desc_ : Declara classe XYNumericalScaleDecorator. 00003 // _Autores_ : Camilo da Fonseca Freire. 00004 // _Data_ : 05 jul 96. mod 20 mar 98 00005 00006 #ifndef __XYSCDTNM_H 00007 #define __XYSCDTNM_H 00008 00009 #include "xysd.h" 00010 #include "xyrtext.h" 00011 00012 //* XYNumericalScaleDecorator 00013 // Classe especializada onde decorações numéricas são formatadas, ou seja, 00014 // a numeração é desenhada usando-se os valores inicial e final dados no eixo 00015 // ao qual está relacionada, seguindo a incrementação também indicada no 00016 // formato definido pelo usuário. 00017 class XYNumericalScaleDecorator : public XYScaleDecorator 00018 { 00019 public: 00020 00021 //* Construtor e Destrutor 00022 //* Construtor da classe XYNumericalScaleDecorator 00023 XYNumericalScaleDecorator (char *format, 00024 XYRasterText* scale); 00025 00026 //* Construtor da classe XYNumericalScaleDecorator com expoente 00027 XYNumericalScaleDecorator (char *format,double exp,XYRasterText* scale); 00028 00029 //* Destrutor da classe XYNumericalScaleDecorator 00030 virtual ~XYNumericalScaleDecorator (void); 00031 00032 //* Define/Consulta atributos 00033 //* Define o formato de exibição dos números 00034 virtual void format (char *f); 00035 //* Retorna o formato de exibição dos números 00036 virtual char* format (void) const; 00037 00038 //* Define o formato de exibição dos números 00039 virtual void scale (XYRasterText *s); 00040 //* Retorna o formato de exibição dos números 00041 virtual XYRasterText* scale (void) const; 00042 00043 //* Define expoente 00044 void XYNumericalScaleDecorator::exp (double e); 00045 //* Consulta expoente 00046 double XYNumericalScaleDecorator::exp (void) const; 00047 00048 //* Métodos de Draw 00049 //* Desenha a decoração no intervalo entre dois ticks de um eixo 00050 virtual void draw (const XYAxis *axis, int first_tick, int last_tick) const; 00051 00052 //* BoundingBox 00053 //* Retorna menor retângulo que contém toda a decoração de um eixo 00054 virtual void boundingBox (const XYAxis *axis, int& xmin, int& ymin, 00055 int& xmax, int& ymax) const; 00056 00057 protected : 00058 00059 char* _format; // formato em que o número deve ser apresentado 00060 XYRasterText* _scale;// atributos de texto usados para desenhar o número 00061 double _exp; // expoente 00062 00063 }; 00064 00065 #endif 00066