00001 //* Módulo : xysl.h 00002 // _Desc_ : Declara classe XYSlice. 00003 // _Autores_ : Carlos Henrique Levy e Jaudênia Cavalcante. 00004 // _Data_ : 12 mai 97. 00005 00006 #ifndef __XYSLICE_H 00007 #define __XYSLICE_H 00008 00009 #include "xyobj.h" 00010 #include "xymath.h" 00011 #include "xyax.h" 00012 #include "xymk.h" 00013 00014 class XYGraph; 00015 00016 //* XYSlice 00017 // Classe abstrata que evidencia uma área num gráfico através de traços 00018 // verticais e mudança na cor de fundo da região por eles delimitada. 00019 class XYSlice : public XYObject 00020 { 00021 public: 00022 00023 //* Construtor e Destrutor 00024 //* Construtor da classe XYSlice 00025 XYSlice ( 00026 const XYAxis* axis, // eixo de referência 00027 // posição em relação a graduação do eixo de referência para: 00028 double begin, // o marcador inicial 00029 double end, // o marcador final 00030 xybool visible = xytrue); // visibilidade 00031 00032 //* Destrutor da classe XYSlice 00033 virtual ~XYSlice (void) {}; 00034 00035 //* Define/Consulta atributos 00036 //* Define o marcador de início de fronteira 00037 virtual void beginMarker (XYMarker* b); 00038 //* Consulta o marcador de início de fronteira 00039 virtual XYMarker* beginMarker (void) const; 00040 00041 //* Define o marcador de final de fronteira 00042 virtual void endMarker (XYMarker* e); 00043 //* Consulta o marcador de final de fronteira 00044 virtual XYMarker* endMarker (void) const; 00045 00046 //* Define o eixo de referência 00047 virtual void axis (const XYAxis* ax); 00048 //* Consulta o eixo de referência 00049 virtual const XYAxis* axis (void) const; 00050 00051 //* Define posição do marcador inicial em relação a graduação do eixo de referência 00052 virtual void begin (double bm); 00053 //* Consulta posição do marcador inicial em relação a graduação do eixo de referência 00054 virtual double begin (void) const; 00055 00056 //* Define posição do marcador final em relação a graduação do eixo de referência 00057 virtual void end (double em); 00058 //* Consulta posição do marcador final em relação a graduação do eixo de referência 00059 virtual double end (void) const; 00060 00061 //* Define cor para os marcadores 00062 virtual void color (long c); 00063 //* Consulta cor dos marcadores 00064 virtual long color (void) const; 00065 00066 //* Define cor de fundo para a região 00067 virtual void backgroundColor (long bc); 00068 //* Consulta cor de fundo da região 00069 virtual long backgroundColor (void) const; 00070 00071 //* Acao realizado quando da insercao de uma mascara no grafico 00072 virtual void insertAction (XYGraph *g); 00073 00074 //* Acao realizado quando da romcao de uma mascara no grafico 00075 virtual void removeAction (XYGraph *g); 00076 00077 //* Métodos de Pick 00078 //* Retorna xytrue se o ponto estiver sobre o "slice" 00079 virtual xybool pick (int px, int py) = 0; 00080 00081 //* Retorna xytrue se o "slice" for interior a região de "fence" 00082 virtual xybool fence (int x0, int y0, int x1, int y1) = 0; 00083 00084 //* Métodos de Draw 00085 //* Desenha "slice" 00086 virtual void draw (void) = 0; 00087 //* Desenha "slice" numa região 00088 virtual void draw (int xmin, int ymin, int xmax, int ymax) const = 0; 00089 00090 //* BoundingBox 00091 //* Retorna menor retângulo que contém um "slice", suas coordenadas são dadas em pixel 00092 virtual void boundingBox (int& bxmin, int& bymin, int& bxmax, int& bymax) const = 0; 00093 00094 protected: 00095 00096 // clareia ou escurece a cor dada de acordo com as taxas fornecidas 00097 // se taxas positivas: clareia, se negativas: escurece 00098 long changeColor(long color, int tr, int tg, int tb); 00099 00100 const XYAxis* _axis; // eixo de referência 00101 XYMarker* _beginMarker; // fronteira inicial da região 00102 XYMarker* _endMarker; // fronteira final da região 00103 // posição em relação a graduação do eixo de referência para: 00104 double _begin; // o marcador inicial 00105 double _end; // o marcador final 00106 long _color; // cor dos marcadores 00107 long _backgroundColor; // cor de fund da região 00108 }; 00109 00110 #endif 00111 00112