00001 //* Módulo : xygrapl.h 00002 // _Desc_ : Declara classe XYPolar. 00003 // _Autores_ : Camilo da Fonseca Freire. 00004 // _Data_ : 11 jul 96. 00005 00006 00007 #ifndef __XYPOLAR_H 00008 #define __XYPOLAR_H 00009 00010 #include "xygra.h" 00011 #include "xyrgrid.h" 00012 #include "xyagrid.h" 00013 00014 //* XYPolar 00015 // Classe especializada, responsável pelo desenho de gráficos do tipo 00016 // polar que tem como principal característica um eixo polar (XYPolarAxis). 00017 class XYPolar : public XYGraph 00018 { 00019 public: 00020 00021 //* Construtores e Destrutor 00022 #ifndef NOIUP 00023 //* Construtor da classe XYPolar que recebe um canvas IUP 00024 XYPolar ( 00025 Ihandle* canvas, // indica o canvas IUP onde o canvas CD será 00026 // mapeado 00027 // definição do canvas CD usado será feita automaticamente 00028 // as coordenadas a seguir são normalizadas em relação ao canvas do CD 00029 XYCoordinate x, // referência para a coordenada x 00030 XYCoordinate y, // referência para a coordenada y 00031 double width, // largura da região ocupada pelo gráfico 00032 double height, // altura da região ocupada pelo gráfico 00033 XYRadialGrid* gridr, // grade radial 00034 XYAngGrid* grida, // grade angular 00035 xybool visible = xytrue); // visibilidade 00036 #endif 00037 00038 //* Construtor da classe XYPolar que recebe um canvas CD 00039 XYPolar ( 00040 cdCanvas* cdcanvas, // define o canvas CD onde o gráfico será 00041 // desenhado 00042 // as coordenadas a seguir são normalizadas em relação ao canvas do CD 00043 XYCoordinate x, // referência para a coordenada x 00044 XYCoordinate y, // referência para a coordenada y 00045 double width, // largura da região ocupada pelo gráfico 00046 double height, // altura da região ocupada pelo gráfico 00047 XYRadialGrid* gridr, // grade radial 00048 XYAngGrid* grida, // grade angular 00049 xybool visible = xytrue); // visibilidade 00050 00051 //* Destrutor da classe XYPolar 00052 virtual ~XYPolar (void); 00053 00054 //* Define/Consulta atributos 00055 //* Inicializa grade radial 00056 virtual void setGridR (XYRadialGrid *gridr); 00057 //* Consulta grade radial 00058 virtual XYRadialGrid* getGridR (void) const; 00059 00060 //* Inicializa grade angular 00061 virtual void setGridA (XYAngGrid *grida); 00062 //* Consulta grade angular 00063 virtual XYAngGrid* getGridA (void) const; 00064 00065 //* Cria um marcador como novo elemento pertencente ao gráfico 00066 virtual XYObject* markerCreate(int, int, const XYAxis*) {return NULL;}; 00067 00068 //* Métodos de Pick 00069 //* Verifica se o ponto (x, y) está sobre um elemento do gráfico 00070 virtual XYObject* pick (int x, int y); 00071 00072 //* Retorna lista de elementos do gráfico que estão totalmente dentro da região de "fence" 00073 virtual XYList<XYObject>* fence (int x0, int y0, int x1, int y1); 00074 00075 //* Mask Area 00076 //* Desenha a grade e a "mask area" 00077 virtual void drawMaskArea (void) const; 00078 virtual void drawMaskArea (int xmin, int ymin, int xmax, int ymax) const; 00079 00080 //* Calcula região de desenho das máscaras tendo como ponto central a posição inicial de desenho do eixo polar 00081 virtual void calcMaskArea (void); 00082 00083 //* Métodos de Draw 00084 //* Desenha gráfico polar 00085 virtual void draw (void); 00086 //* Desenha gráfico polar numa região 00087 virtual void draw (int xmin, int ymin, int xmax, int ymax) const; 00088 00089 protected: 00090 00091 // define, em pixel, a região de desenho dos elementos componentes do 00092 // gráfico 00093 virtual void propagateViewport (void) const; 00094 00095 private: 00096 00097 XYRadialGrid* _gridr; // grade radial 00098 XYAngGrid* _grida; // grade angular 00099 }; 00100 00101 #endif 00102