#ifndef TAGS_H #define TAGS_H #define QUOTATION_MARK """ #define LESS_THAN "<" #define GREATER_THAN ">" #define AMPERSAND "&" #define NEWLINE "<br>" #define SPACE_CHAR " " #define FONT_TAG "font" #define COLOR_TAG "color" #define BOLD_TAG "b" #define ITALIC_TAG "i" #define UNDERLINE_TAG "u" #define ISBOLD 0x1 #define ISITALIC 0x2 #define ISUNDERLINE 0x4 #include "list.h" #include "colors.h" #include <iostream.h> #include <string.h> class Tag { protected: char *TagName ; char *color ; int flags ; public: Tag( char *n ) : TagName( n ), color( 0 ), flags( 0 ) {} Tag( char *n, char *c ) : TagName( n ), flags( 0 ) { if ( strcmp( c, GREEN ) == 0 ) color = GREEN_C ; else if ( strcmp( c, RED ) == 0 ) color = RED_C ; else if ( strcmp( c, DARKRED ) == 0 ) color = DARKRED_C ; else if ( strcmp( c, BLUE ) == 0 ) color = BLUE_C ; else if ( strcmp( c, BROWN ) == 0 ) color = BROWN_C ; else if ( strcmp( c, PINK ) == 0 ) color = PINK_C ; else if ( strcmp( c, YELLOW ) == 0 ) color = YELLOW_C ; else if ( strcmp( c, CYAN ) == 0 ) color = CYAN_C ; else if ( strcmp( c, PURPLE ) == 0 ) color = PURPLE_C ; else if ( strcmp( c, ORANGE ) == 0 ) color = ORANGE_C ; else if ( strcmp( c, BRIGHTORANGE ) == 0 ) color = BRIGHTORANGE_C ; else if ( strcmp( c, BRIGHTGREEN ) == 0 ) color = BRIGHTGREEN_C ; else if ( strcmp( c, BLACK ) == 0 ) color = BLACK_C ; else color = NULL ; } void SetFlags( int f ) { flags = f ; } char *GetName() { return TagName ; } char *GetColor() { return color ; } void SetColor( char *col ) { color = col ; } int IsBold() { return ( flags & ISBOLD ) ; } int IsItalic() { return ( flags & ISITALIC ) ; } int IsUnderline() { return ( flags & ISUNDERLINE ) ; } void Print() ; } ; class Tags { protected: List<Tag *> tagsList ; public: Tags() {} void AddTag( Tag *t ) { tagsList.Add( t ) ; } Tag *GetTag( char *name ) ; } ; inline Tag * Tags::GetTag( char *name ) { if ( tagsList.Empty() ) return NULL ; ListNode<Tag *> *tag = tagsList.First() ; while ( tag ) { if ( strcmp( tag->Elem()->GetName(), name ) == 0 ) return tag->Elem() ; tag = tag->Next() ; } return NULL ; } void setTags( Tags *t ) ; Tag *getTag( char *name ) ; void createDefaultTags() ; Tag *newDefaultTag( char *tag, char *color ) ; #endif