Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

xyobj.h

Go to the documentation of this file.
00001 //* Módulo   : xyobj.h                                                           
00002 // _Desc_    : Declara classe XYObject. 
00003 // _Autores_ : Carlos Henrique Levy e Jaudênia Cavalcante.                       
00004 // _Data_    : 28 mar 96.                                                           
00005 
00006 #ifndef __XYOBJECT_H
00007 #define __XYOBJECT_H
00008 
00009 #include <stdio.h>
00010 
00011 #ifdef WIN32
00012 #pragma warning(disable:4237)
00013 #endif
00014 
00015 #include <cd.h>
00016 #include <wd.h>
00017 
00018 #include "xypos.h"
00019 #include "xybool.h"
00020 
00021  //* Cores pré-definidas 
00022 #define  XY_RED           0xFF0000L   // 255,   0,   0
00023 #define  XY_DARK_RED      0x800000L   // 128,   0,   0
00024 #define  XY_GREEN         0x00FF00L   //   0, 255,   0
00025 #define  XY_DARK_GREEN    0x008000L   //   0, 128,   0
00026 #define  XY_BLUE          0x0000FFL   //   0,   0, 255
00027 #define  XY_DARK_BLUE     0x000080L   //   0,   0, 128
00028 #define  XY_YELLOW        0xFFFF00L   // 255, 255,   0
00029 #define  XY_DARK_YELLOW   0x808000L   // 128, 128,   0
00030 #define  XY_MAGENTA       0xFF00FFL   // 255,   0, 255
00031 #define  XY_DARK_MAGENTA  0x800080L   // 128,   0, 128
00032 #define  XY_CYAN          0x00FFFFL   //   0, 255, 255
00033 #define  XY_DARK_CYAN     0x008080L   //   0, 128, 128
00034 #define  XY_WHITE         0xFFFFFFL   // 255, 255, 255
00035 #define  XY_BLACK         0x000000L   //   0,   0,   0
00036 #define  XY_DARK_GRAY     0x808080L   // 128, 128, 128
00037 #define  XY_GRAY          0xC0C0C0L   // 192, 192, 192
00038 
00039 extern FILE *logfile;
00040 
00041 //* XYObject
00042 //    Classe abstrata que define as características comuns de uma classe do  
00043 // pacote XY++. Basicamente, é responsável pela função de visibilidade,   
00044 // posição, conexão com o módulo XY++ ativo, controle de window e viewport,    
00045 // desenho e contorno (boundingBox).                                         
00046 class XYObject
00047 {
00048    public:
00049 
00050  //* enum LineStyle #LineStyle#
00051    //* Indica os possíveis estilos de linha
00052    enum LineStyle  {
00053       continuous,
00054       dashed,
00055       dotted,
00056       dashDot,
00057       dashDotDot
00058    };
00059 
00060  //* Construtores e Destrutor
00061    //* Construtor A
00062    XYObject (
00063       XYCoordinate x,  // posição de referência para x
00064       XYCoordinate y,  // posição de referência para y
00065         xybool visible = xytrue);  // visibilidade
00066 
00067    //* Destrutor da classe XYObject
00068    virtual ~XYObject (void);
00069 
00070  //* Define/Consulta atributos
00071    //* Define se o objeto é visível
00072    virtual void visible (xybool v);
00073    //* Consulta se o objeto é visível
00074    virtual xybool visible (void) const;
00075 
00076    //* Define a posição do objeto
00077    virtual void position (double x, double y);
00078    virtual void position (int xp, int yp);
00079 
00080    //* Consulta a posição do objeto
00081    virtual void position (double* x, double* y) const;
00082    virtual void position (int* xp, int* yp) const;
00083    virtual XYCoordinate* position (void);
00084 
00085  //* Conexão entre passivo e ativo
00086    //* Define conexão entre objeto ativo e passivo
00087    virtual void setHandle (void* h);
00088    //* Consulta conexão entre objeto ativo e passivo
00089    virtual void* getHandle (void) const;
00090 
00091  //* Window/Viewport
00092    //* Determina a window da área do gráfico para desenho dos objetos
00093    virtual void setWindow (double xmin = 0.0, double xmax = 1.0,
00094                            double ymin = 0.0, double ymax = 1.0) const;
00095 
00096    //* Determina área do gráfico        para desenho dos objetos
00097    virtual void setViewport (int xmin, int xmax, int ymin, int ymax);
00098    virtual void setViewport (void) const;
00099 
00100    //* Consulta área do gráfico para desenho dos objetos
00101    virtual void getViewport (int& xmin, int& xmax, int& ymin, int& ymax) const;
00102 
00103  //* Métodos de Draw
00104    //* Desenha objeto
00105    virtual void draw (void) = 0;
00106    //* Desenha objeto numa região
00107    virtual void draw (int xmin, int ymin, int xmax, int ymax) const = 0;
00108 
00109  //* BoundingBox
00110    //* Retorna menor retângulo que contém o objeto, suas coordenadas são dadas em pixel
00111    virtual void boundingBox (int& bxmin, int& bymin, int& bxmax, int& bymax) const = 0; 
00112 
00113    protected:
00114 
00115    xybool  _visible; // xytrue ou xyfalse
00116    XYPosition _p;  // posição
00117    void* _handle;  // conexão com o módulo ativo do XY++
00118    int   _xmin, _xmax, // área de visualização (área gráfica), em pixel
00119              _ymin, _ymax;
00120 };
00121 
00122 #endif
00123 

XY
Tecgraf / PUC-Rio - Computer Graphics Technology Group