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

xytext.h

Go to the documentation of this file.
00001 //* Módulo   : xytext.h                                                          
00002 // _Desc_    : Declara classe XYText.
00003 // _Autores_ : Carlos Henrique Levy e Jaudênia Cavalcante.                       
00004 // _Data_    : 15 fev 96.                                                           
00005 
00006 #ifdef _VMS__
00007 
00008 extern "C" {
00009 char* strdup (char* str);
00010 }
00011 #endif
00012 
00013 #ifndef __XYTEXT_H
00014 #define __XYTEXT_H
00015 
00016 #include <stdlib.h>
00017 #include <string.h>
00018 
00019 #include "xyobj.h"
00020 #include <cd.h>
00021 #include <wd.h>
00022 
00023 class XYGraph;
00024 
00025 //* XYText 
00026 //    Classe abstrata que encapsula a primitiva de texto do CD. Possui todos 
00027 // os atributos que o CD oferece mais um atributo de orientação de escrita   
00028 // que pode ser horizontal, vertical de cima para baixo ou de baixo          
00029 // para cima.                                                                
00030 class XYText : public XYObject
00031 {
00032    public:
00033 
00034  //* enum Orientation #Orientation#
00035    //* Indica as possíveis orientações
00036    enum Orientation {
00037       vertTopBot = -1,
00038       horizontal,
00039       vertBotTop
00040    };
00041 
00042  //* enum Alignment #Alignment#
00043    //* Indica os possíveis alinhamentos
00044    enum Alignment  {
00045       north,
00046       south,
00047       east,
00048       west,
00049       northEast,
00050       northWest,
00051       southEast,
00052       southWest,
00053       center,
00054       baseLeft,
00055       baseCenter,
00056       baseRight,
00057       leftBase   = baseLeft,
00058       centerBase = baseCenter,
00059       rightBase  = baseRight
00060    };
00061 
00062  //* enum Typeface #Typeface#
00063    //* Indica os possíveis tipos de fontes
00064    enum Typeface {
00065       common,
00066       timesRoman,
00067       courier,
00068       helvetica
00069    };
00070 
00071  //* enum Style #Style#
00072    //* Indica os possíveis estilos de fontes
00073    enum Style {
00074       plain,
00075       bold,
00076       italic,
00077       boldItalic,
00078       italicBold = boldItalic
00079    };
00080 
00081  //* Construtores e Destrutor
00082    //* Construtor A
00083    XYText (
00084         const char* text,   // texto a ser desenhado
00085     // posição em relação a área ocupada pelo gráfico
00086         XYCoordinate x,     // coordenada x
00087         XYCoordinate y,     // coordenada y
00088         long color,         // cor do texto
00089         Typeface font,      // tipo de fonte usada
00090         Style style,        // estilo de escrita
00091         Alignment alignment,     // alinhamento (rosa dos ventos)
00092         Orientation orientation, // orientação do texto
00093         xybool underline = xyfalse,  // sublinhado (xytrue or xyfalse)
00094         xybool visible = xytrue);    // visibilidade
00095 
00096    //* Construtor B
00097    XYText (
00098         const char* text,     // texto a ser desenhado
00099     // posição em relação a área ocupada pelo gráfico
00100         XYCoordinate x,       // coordenada x
00101         XYCoordinate y,       // coordenada y
00102         xybool visible = xytrue); // visibilidade
00103 
00104    //* Construtor C
00105    XYText (
00106         const char* text,  // texto a ser desenhado
00107         long color,        // cor do texto
00108         Typeface font,     // tipo de fonte usada
00109         Style style,       // estilo de escrita
00110         Alignment alignment,     // alinhamento (rosa dos ventos)
00111         Orientation orientation, // orientação do texto
00112         xybool underline = xyfalse,  // sublinhado (xytrue or xyfalse)
00113         xybool visible = xytrue);    // visibilidade
00114 
00115    //* Construtor D (atributos)
00116    XYText (
00117         long color,        // cor
00118         Typeface font,     // tipo de fonte usada
00119         Style style,       // estilo de escrita
00120         Alignment alignment,     // alinhamento (rosa dos ventos)
00121         Orientation orientation, // orientação do texto
00122         xybool underline = xyfalse,  // confirma ou não sublinhado
00123         xybool visible = xytrue);    // visibilidade
00124 
00125    //* Destrutor da classe XYText
00126    virtual ~XYText (void);
00127 
00128  //* Define/Consulta atributos
00129    //* Define a cor do texto a ser desenhado
00130    virtual void color (long c);
00131    //* Consulta a cor do texto a ser desenhado
00132    virtual long color (void) const;
00133 
00134    //* Define a fonte de caracteres
00135    virtual void font (Typeface f);
00136    //* Consulta a fonte de caracteres
00137    virtual int font (void) const;
00138 
00139    //* Define o estilo para os caracteres
00140    virtual void style (Style sl);
00141    //* Consulta o estilo para os caracteres
00142    virtual int style (void) const;
00143 
00144    //* Define o alinhamento (rosa dos ventos)
00145    virtual void align (Alignment a);
00146    //* Consulta o alinhamento (rosa dos ventos)
00147    virtual int align (void) const;
00148 
00149    //* Define a orientação do texto
00150    virtual void orientation (Orientation o);
00151    //* Consulta a orientação do texto
00152    virtual int orientation (void) const;
00153 
00154    //* Define o texto a ser desenhado
00155    virtual void text (const char* s);
00156    //* Consulta o texto a ser desenhado
00157    virtual char* text (void) const;
00158 
00159    //* Define se texto terá sublinhado (xytrue ou xyfalse)
00160    virtual void underline (xybool u);
00161    //* Consulta se texto terá sublinhado (xytrue ou xyfalse)
00162    virtual xybool underline (void) const;
00163 
00164  //* Operadores sobrecarregados
00165    //* Redefinição do operador "=" para atribuição entre textos
00166    virtual void operator= (const XYText &t);
00167 
00168    //* Acao realizado quando da insercao de uma mascara no grafico
00169    virtual void insertAction (XYGraph *g);
00170 
00171    //* Acao realizado quando da romcao de uma mascara no grafico
00172    virtual void removeAction (XYGraph *g);
00173 
00174  //* Métodos de Pick
00175    //* Retorna xytrue se o ponto estiver sobre o texto
00176    virtual xybool pick (int px, int py);
00177 
00178    //* Retorna xytrue se o texto estiver interior a região de "fence"
00179    virtual xybool fence (int x0, int y0, int x1, int y1);
00180 
00181  //* Métodos de Draw
00182    //* Desenha um texto
00183    virtual void draw (void) = 0;
00184    //* Desenha um texto numa região
00185    virtual void draw (int xmin, int ymin, int xmax, int ymax) const = 0;
00186 
00187  //* BoundingBox
00188    //* Retorna menor retângulo que contém o texto, suas coordenadas são dadas em pixel
00189    virtual void boundingBox (int& bxmin, int& bymin, int& bxmax, int& bymax) const = 0;
00190                                                         
00191    protected:
00192 
00193    static const int _underline_gap; // espaço, em pixel, entre texto e linha
00194    char*       _text;        // texto a ser desenhado
00195    long        _color;       // cor do texto
00196    Typeface    _font;        // fonte de caracteres (system, ...)
00197    Style       _style;       // plain, bold, italic, boldItalic, ...
00198    Alignment   _alignment;   // alinhamento do texto: (rosa dos ventos)
00199    Orientation _orientation; // orientação do texto: horizontal, verticalBotTop
00200                                          // e verticalTopBot
00201    xybool        _underline;   // indica se texto terá sublinhado (xytrue ou xyfalse)
00202 };
00203 
00204 #endif
00205                                                                                                 

XY
Tecgraf / PUC-Rio - Computer Graphics Technology Group