First version of new table visi
[dyninst.git] / visiClients / tableVisi / src / tvFocus.h
1 // tvFocus.h
2 // Ariel Tamches
3
4 /*
5  * $Log: tvFocus.h,v $
6  * Revision 1.1  1995/11/04 00:46:39  tamches
7  * First version of new table visi
8  *
9  */
10
11 #ifndef _TV_FOCUS_H_
12 #define _TV_FOCUS_H_
13
14 #include "String.h"
15 #include "tkclean.h"
16
17 class tvFocus {
18  private:
19    string longName, shortName;
20    unsigned longNamePixWidth, shortNamePixWidth;
21
22  public:
23    tvFocus(){} // needed by class Vector (nuts)
24    tvFocus(const string &iLongName, XFontStruct *nameFontStruct) :
25             longName(iLongName) {
26       longNamePixWidth = XTextWidth(nameFontStruct, longName.string_of(),
27                                     longName.length());
28       
29       // Calculate the short name now, by starting at the end of name, working
30       // backwards, and looking for a "/"
31       const char *ptr = strrchr(longName.string_of(), '/');
32       if (ptr == NULL)
33          shortName = longName;
34       else if (ptr + 1 == '\0')
35          shortName = longName;
36       else
37          shortName = ptr + 1;
38
39       shortNamePixWidth = XTextWidth(nameFontStruct, shortName.string_of(),
40                                      shortName.length());
41    }
42    tvFocus(const tvFocus &src) : longName(src.longName), shortName(src.shortName) {
43       longNamePixWidth = src.longNamePixWidth;
44       shortNamePixWidth = src.shortNamePixWidth;
45    }
46   ~tvFocus() {}
47
48    bool less_than(const tvFocus &other, bool useLongName) {
49       if (useLongName)
50          return (longName < other.longName);
51       else
52          return (shortName < other.shortName);
53    }
54
55    bool greater_than(const tvFocus &other, bool useLongName) {
56       if (useLongName)
57          return (longName > other.longName);
58       else
59          return (shortName > other.shortName);
60    }
61
62    const string &getLongName() const {return longName;}
63    const string &getShortName() const {return shortName;}
64    unsigned getLongNamePixWidth() const {return longNamePixWidth;}
65    unsigned getShortNamePixWidth() const {return shortNamePixWidth;}
66 };
67
68 #endif