00001 //* Módulo : xygraca.h 00002 // _Desc_ : Declara classe XYCartesian. 00003 // _Autores_ : Carlos Henrique Levy e Jaudênia Cavalcante. 00004 // _Data_ : 07 mar 96. 00005 00006 #ifndef __XYCARTESIAN_H 00007 #define __XYCARTESIAN_H 00008 00009 #include "xygra.h" 00010 #include "xygrid.h" 00011 00012 //* XYCartesian 00013 // Classe especializada responsável pelo desenho de gráficos do tipo 00014 // cartesiano que tem como principal característica pelo menos dois eixos, um 00015 // na direção x (rotação 0) e outro na direção y (rotação 90). 00016 class XYCartesian : public XYGraph 00017 { 00018 public: 00019 00020 //* Construtores e Destrutor 00021 #ifndef NOIUP 00022 //* Construtor da classe XYCartesian que recebe canvas IUP 00023 XYCartesian ( 00024 Ihandle* canvas, // indica o canvas IUP onde o canvas CD será 00025 // mapeado 00026 // definição do canvas CD será feita automaticamente 00027 // as coordenadas a seguir são normalizadas em relação ao canvas do CD 00028 XYCoordinate x, // referência para a coordenada x 00029 XYCoordinate y, // referência para a coordenada y 00030 double width, // largura da região ocupada pelo gráfico 00031 double height, // altura da região ocupada pelo gráfico 00032 XYGrid* gridh, // grade horizontal 00033 XYGrid* gridv, // grade vertical 00034 xybool visible = xytrue); // visibilidade 00035 #endif 00036 00037 //* Construtor da classe XYCartesian que recebe canvas CD 00038 XYCartesian ( 00039 cdCanvas* cdcanvas, // define o canvas CD onde o gráfico será 00040 // desenhado 00041 // as coordenadas a seguir são normalizadas em relação ao canvas do CD 00042 XYCoordinate x, // referência para a coordenada x 00043 XYCoordinate y, // referência para a coordenada y 00044 double width, // largura da região ocupada pelo gráfico 00045 double height, // altura da região ocupada pelo gráfico 00046 XYGrid* gridh, // grade horizontal 00047 XYGrid* gridv, // grade vertical 00048 xybool visible = xytrue); // visibilidade 00049 00050 //* Destrutor da classe XYCartesian 00051 virtual ~XYCartesian (void); 00052 00053 //* Mask Area 00054 //* Calcula região de desenho das máscaras dependendo da orientação dos eixos 00055 virtual void calcMaskArea (void); 00056 00057 //* Atualiza a "mask area" desenhando os objetos que estão contidos nela 00058 virtual void drawMaskArea (void) const; 00059 virtual void drawMaskArea (int xmin, int ymin, int xmax, int ymax) const; 00060 00061 //* Métodos de Pick 00062 //* Verifica se o ponto (x, y) está sobre um elemento do gráfico 00063 virtual XYObject* pick (int x, int y); 00064 00065 //* Retorna lista de elementos do gráfico que estão totalmente dentro da região de "fence" 00066 virtual XYList<XYObject>* fence (int x0, int y0, int x1, int y1); 00067 00068 //* Métodos de Draw 00069 //* Desenha gráfico cartesiano 00070 virtual void draw (void); 00071 //* Desenha gráfico cartesiano numa região 00072 virtual void draw (int xmin, int ymin, int xmax, int ymax) const; 00073 00074 //* Define/Consulta atributos 00075 //* Define grade horizontal 00076 virtual void setGridH (XYGrid *gridh); 00077 //* Consulta grade horizontal 00078 virtual XYGrid* getGridH (void) const; 00079 00080 //* Cria um marcador como novo elemento pertencente ao gráfico cartesiano 00081 virtual XYObject* markerCreate(int x0, int y0, const XYAxis* master); 00082 00083 //* Define grade vertical 00084 virtual void setGridV (XYGrid *gridv); 00085 //* Consulta grade vertical 00086 virtual XYGrid* getGridV (void) const; 00087 00088 protected: 00089 00090 // Define, em pixel, a região de desenho dos elementos componentes do gráfico 00091 virtual void propagateViewport (void) const; 00092 00093 private: 00094 00095 XYGrid* _gridh; // grade horizontal 00096 XYGrid* _gridv; // grade vertical 00097 }; 00098 00099 #endif 00100