00001 //* Módulo : xygrid.h 00002 // _Desc_ : Declara classe XYGrid. 00003 // _Autores_ : Carlos Henrique Levy e Jaudênia Cavalcante. 00004 // _Data_ : 12 mar 96. 00005 00006 #ifndef __XYGRID_H 00007 #define __XYGRID_H 00008 00009 #include "xyax.h" 00010 00011 //* XYGrid 00012 // Classe especializada que define um tipo especial de eixo que desenha 00013 // linhas perpendiculares ao ângulo de rotação em toda a região de desenho 00014 // das máscaras do gráfico (mask area), começando numa posição específica 00015 // com intervalo entre as linhas definido pelo usuário. 00016 class XYGrid: public XYAxis 00017 { 00018 public: 00019 00020 //* Construtores e Destrutor 00021 //* Construtor A 00022 XYGrid ( 00023 double mn, // valor mínimo que a grade representa (assume) 00024 double mx, // valor máximo que a grade representa (assume) 00025 double p, // ponto inicial, entre mn e mx 00026 long color, // cor da grade 00027 double rot, // ângulo, em graus, no sentido anti-horário 00028 double step, // intervalo entre as retas perpendiculares 00029 xybool visible = xytrue); // visibilidade 00030 00031 //* Construtor B 00032 XYGrid ( 00033 double mn, // valor mínimo que a grade representa (assume) 00034 double mx, // valor máximo que a grade representa (assume) 00035 double p, // ponto inicial, entre mn e mx 00036 long color, // cor da grade 00037 int style, // estilo de linha para a grade 00038 double rot, // ângulo, em graus, no sentido anti-horário 00039 double step, // intervalo entre as retas perpendiculares 00040 xybool visible = xytrue); // visibilidade 00041 00042 //* Destrutor da classe XYGrid 00043 virtual ~XYGrid (void) {}; 00044 00045 //* Define/Consulta atributos 00046 //* Define limite da grade, [mn, mx] 00047 virtual void limit (double h); 00048 //* Consulta limite da grade, [mn, mx] 00049 virtual double limit (void) const; 00050 00051 //* Define estilo da linha da grade 00052 virtual void style (int s); 00053 //* Consulta estilo da linha da grade 00054 virtual int style (void) const; 00055 00056 //* Métodos de Pick 00057 //* Verifica se ponto está sobre linha da grade 00058 virtual xybool pointInGrid (int px, int py, int x0, int y0, int x1, int y1); 00059 00060 //* Retorna xytrue se o ponto estiver sobre a grade 00061 virtual xybool pick (int px, int py); 00062 00063 //* Transformações 00064 //* Transforma tamanho em coordenadas do mundo para coordenadas inteiras 00065 virtual int worldSize2PixelSize (double w) const; 00066 00067 //* Métodos de Draw 00068 //* Desenha grade 00069 virtual void draw (void); 00070 //* Desenha grade numa região 00071 virtual void draw (int xmin, int ymin, int xmax, int ymax) const; 00072 00073 //* BoundingBox 00074 //* Retorna menor retângulo que contém a grade, suas coordenadas são dadas em pixel 00075 virtual void boundingBox (int& xmin, int& ymin, int& xmax, int& ymax) const; 00076 00077 protected: 00078 00079 double _limit; // altura da grade 00080 int _style; // estilo da linha da grade 00081 }; 00082 00083 #endif 00084