00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _ufontMetrics_hpp_
00022 #define _ufontMetrics_hpp_
00023 #include <ubit/uappli.hpp>
00024
00025 namespace ubit {
00026
00027 struct UFontMetrics {
00028
00029 UFontMetrics(UContext&);
00030 UFontMetrics(const UFont&, UDisp*);
00031 UFontMetrics(const UFontDesc&, UDisp*);
00036 ~UFontMetrics();
00037
00038 int getCharWidth(UChar) const;
00040
00041 int getTextWidth(const UStr&) const;
00042 int getTextWidth(const char* str, int str_len) const;
00043 int getTextHeight() const;
00044 void getTextSize(const UStr&, int& width, int& height) const;
00045 void getTextSize(const char* str, int str_len, int& width, int& height) const;
00047
00048 int getCharPos(const char* str, int str_len, int x) const;
00049 int getXPos(const char* str, int str_len, int char_pos) const;
00051
00052 bool getSubTextSize(const char* str, int str_len,
00053 int& w, int& h, int available_width,
00054 int& sublen, int& change_line) const;
00065 static bool getClippedText(UGraph*, float clip_x, float clip_width,
00066 const char*, int len, float x0, float y0,
00067 int& charpos_begin, int& charpos_end,
00068 float& xpos_begin, float& xpos_end);
00074 protected:
00075 UDisp& disp;
00076 const UFontDesc& font;
00077 bool own_font;
00078 };
00079
00080 }
00081 #endif
00082
00083