changed menustyle.framefont/titlefont to nonpointer

This commit is contained in:
fluxgen 2002-05-15 09:35:49 +00:00
parent 109b457ed7
commit 58c6885c23
3 changed files with 51 additions and 73 deletions

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Basemenu.cc,v 1.22 2002/04/28 15:54:59 fluxgen Exp $
// $Id: Basemenu.cc,v 1.23 2002/05/15 09:35:49 fluxgen Exp $
//use GNU extensions
#ifndef _GNU_SOURCE
@ -95,12 +95,12 @@ m_alignment(ALIGNDONTCARE) {
if (i18n->multibyte()) {
menu.width = menu.title_h = menu.item_w = menu.frame_h =
m_screen->getMenuStyle()->titlefont->getFontSetExtents()->max_ink_extent.height +
m_screen->getMenuStyle()->titlefont.getFontSetExtents()->max_ink_extent.height +
(menu.bevel_w * 2);
} else {
menu.width = menu.title_h = menu.item_w = menu.frame_h =
m_screen->getMenuStyle()->titlefont->getFontStruct()->ascent +
m_screen->getMenuStyle()->titlefont->getFontStruct()->descent +
m_screen->getMenuStyle()->titlefont.getFontStruct()->ascent +
m_screen->getMenuStyle()->titlefont.getFontStruct()->descent +
(menu.bevel_w * 2);
}
@ -109,11 +109,11 @@ m_alignment(ALIGNDONTCARE) {
menu.minsub = 0;
if (i18n->multibyte()) {
menu.item_h = m_screen->getMenuStyle()->framefont->getFontSetExtents()->max_ink_extent.height +
menu.item_h = m_screen->getMenuStyle()->framefont.getFontSetExtents()->max_ink_extent.height +
(menu.bevel_w);
} else {
menu.item_h = m_screen->getMenuStyle()->framefont->getFontStruct()->ascent +
m_screen->getMenuStyle()->framefont->getFontStruct()->descent +
menu.item_h = m_screen->getMenuStyle()->framefont.getFontStruct()->ascent +
m_screen->getMenuStyle()->framefont.getFontStruct()->descent +
(menu.bevel_w);
}
menu.height = menu.title_h + m_screen->getBorderWidth() + menu.frame_h;
@ -260,16 +260,16 @@ void Basemenu::update(void) {
I18n *i18n = I18n::instance();
if (i18n->multibyte()) {
menu.item_h = m_screen->getMenuStyle()->framefont->getFontSetExtents()->max_ink_extent.height +
menu.item_h = m_screen->getMenuStyle()->framefont.getFontSetExtents()->max_ink_extent.height +
menu.bevel_w;
menu.title_h = m_screen->getMenuStyle()->titlefont->getFontSetExtents()->max_ink_extent.height +
menu.title_h = m_screen->getMenuStyle()->titlefont.getFontSetExtents()->max_ink_extent.height +
(menu.bevel_w * 2);
} else {
menu.item_h = m_screen->getMenuStyle()->framefont->getFontStruct()->ascent +
m_screen->getMenuStyle()->framefont->getFontStruct()->descent +
menu.item_h = m_screen->getMenuStyle()->framefont.getFontStruct()->ascent +
m_screen->getMenuStyle()->framefont.getFontStruct()->descent +
menu.bevel_w;
menu.title_h = m_screen->getMenuStyle()->titlefont->getFontStruct()->ascent +
m_screen->getMenuStyle()->titlefont->getFontStruct()->descent +
menu.title_h = m_screen->getMenuStyle()->titlefont.getFontStruct()->ascent +
m_screen->getMenuStyle()->titlefont.getFontStruct()->descent +
(menu.bevel_w * 2);
}
@ -279,14 +279,15 @@ void Basemenu::update(void) {
FBNLS::BasemenuSet, FBNLS::BasemenuBlackboxMenu,
"fluxbox Menu");
int l = strlen(s);
/*
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(m_screen->getMenuStyle()->titlefont->getFontSet(), s, l, &ink, &logical);
XmbTextExtents(m_screen->getMenuStyle()->titlefont.getFontSet(), s, l, &ink, &logical);
menu.item_w = logical.width;
} else
menu.item_w = XTextWidth(m_screen->getMenuStyle()->titlefont->getFontStruct(), s, l);
} else*/
menu.item_w = m_screen->getMenuStyle()->titlefont.getTextWidth(s, l);
//XTextWidth(m_screen->getMenuStyle()->titlefont.getFontStruct(), s, l);
menu.item_w += (menu.bevel_w * 2);
} else
@ -301,12 +302,15 @@ void Basemenu::update(void) {
const char *s = itmp->label().c_str();
int l = itmp->label().size();
if (i18n->multibyte()) {
/*if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(m_screen->getMenuStyle()->framefont->getFontSet(), s, l, &ink, &logical);
XmbTextExtents(m_screen->getMenuStyle()->framefont.getFontSet(), s, l, &ink, &logical);
ii = logical.width;
} else
ii = XTextWidth(m_screen->getMenuStyle()->framefont->getFontStruct(), s, l);
ii = XTextWidth(m_screen->getMenuStyle()->framefont.getFontStruct(), s, l);
*/
ii = screen()->getMenuStyle()->framefont.getTextWidth(s, l);
ii += (menu.bevel_w * 2) + (menu.item_h * 2);
@ -485,7 +489,7 @@ void Basemenu::redrawTitle(void) {
int dx = menu.bevel_w, len = strlen(text);
unsigned int l;
l = m_screen->getMenuStyle()->titlefont->getTextWidth(text, len);
l = m_screen->getMenuStyle()->titlefont.getTextWidth(text, len);
l += (menu.bevel_w * 2);
@ -503,13 +507,13 @@ void Basemenu::redrawTitle(void) {
}
if (i18n->multibyte())
XmbDrawString(m_display, menu.title, m_screen->getMenuStyle()->titlefont->getFontSet(),
XmbDrawString(m_display, menu.title, m_screen->getMenuStyle()->titlefont.getFontSet(),
m_screen->getMenuStyle()->t_text_gc, dx, menu.bevel_w -
m_screen->getMenuStyle()->titlefont->getFontSetExtents()->max_ink_extent.y,
m_screen->getMenuStyle()->titlefont.getFontSetExtents()->max_ink_extent.y,
text, len);
else
XDrawString(m_display, menu.title, m_screen->getMenuStyle()->t_text_gc, dx,
m_screen->getMenuStyle()->titlefont->getFontStruct()->ascent + menu.bevel_w,
m_screen->getMenuStyle()->titlefont.getFontStruct()->ascent + menu.bevel_w,
text, len);
}
@ -654,14 +658,14 @@ void Basemenu::drawItem(unsigned int index, bool highlight, bool clear,
I18n *i18n = I18n::instance();
if (text) {
text_w = m_screen->getMenuStyle()->framefont->getTextWidth(text, len);
text_w = m_screen->getMenuStyle()->framefont.getTextWidth(text, len);
if (m_screen->getMenuStyle()->framefont->multibyte()) {
if (m_screen->getMenuStyle()->framefont.multibyte()) {
text_y = item_y + (menu.bevel_w / 2) -
m_screen->getMenuStyle()->framefont->getFontSetExtents()->max_ink_extent.y;
m_screen->getMenuStyle()->framefont.getFontSetExtents()->max_ink_extent.y;
} else {
text_y = item_y +
m_screen->getMenuStyle()->framefont->getFontStruct()->ascent +
m_screen->getMenuStyle()->framefont.getFontStruct()->ascent +
(menu.bevel_w / 2);
}
@ -753,7 +757,7 @@ void Basemenu::drawItem(unsigned int index, bool highlight, bool clear,
if (dotext && text) {
if (i18n->multibyte()) {
XmbDrawString(m_display, menu.frame, m_screen->getMenuStyle()->framefont->getFontSet(),
XmbDrawString(m_display, menu.frame, m_screen->getMenuStyle()->framefont.getFontSet(),
tgc, text_x, text_y, text, len);
} else
XDrawString(m_display, menu.frame, tgc, text_x, text_y, text, len);

View file

@ -41,7 +41,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Theme.cc,v 1.20 2002/04/20 10:33:10 fluxgen Exp $
// $Id: Theme.cc,v 1.21 2002/05/15 09:35:49 fluxgen Exp $
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
@ -71,6 +71,7 @@ using namespace std;
Theme::Theme(Display *display, Window rootwindow, Colormap colormap,
int screennum, BImageControl *ic, const char *filename, const char *rootcommand):
m_menustyle(display),
m_imagecontrol(ic),
m_display(display),
m_colormap(colormap),
@ -81,8 +82,7 @@ m_rootcommand(rootcommand==0 ? "" : rootcommand) //we dont want to send 0-pointe
cerr<<__FILE__<<"("<<__LINE__<<"): Creating."<<endl;
#endif //DEBUG
//default settings
m_menustyle.titlefont = new FbTk::Font(m_display, "fixed"); //create with default font
m_menustyle.framefont = new FbTk::Font(m_display, "fixed");
m_windowstyle.font.set = m_toolbarstyle.font.set = m_windowstyle.tab.font.set = 0;
m_toolbarstyle.font.fontstruct = m_windowstyle.font.fontstruct = m_windowstyle.tab.font.fontstruct = 0;
@ -147,15 +147,15 @@ m_rootcommand(rootcommand==0 ? "" : rootcommand) //we dont want to send 0-pointe
GCForeground, &gcv);
gcv.foreground = m_menustyle.t_text.getPixel();
if (m_menustyle.titlefont->getFontStruct())
gcv.font = m_menustyle.titlefont->getFontStruct()->fid;
if (m_menustyle.titlefont.getFontStruct())
gcv.font = m_menustyle.titlefont.getFontStruct()->fid;
m_menustyle.t_text_gc =
XCreateGC(m_display, rootwindow,
gc_value_mask, &gcv);
gcv.foreground = m_menustyle.f_text.getPixel();
if (m_menustyle.framefont->getFontStruct())
gcv.font = m_menustyle.framefont->getFontStruct()->fid;
if (m_menustyle.framefont.getFontStruct())
gcv.font = m_menustyle.framefont.getFontStruct()->fid;
m_menustyle.f_text_gc =
XCreateGC(m_display, rootwindow,
@ -213,10 +213,6 @@ Theme::~Theme() {
// should only be called from ~Theme
//--------------------
void Theme::freeMenuStyle() {
delete m_menustyle.framefont;
m_menustyle.framefont = 0;
delete m_menustyle.titlefont;
m_menustyle.titlefont = 0;
XFreeGC(m_display, m_menustyle.t_text_gc);
XFreeGC(m_display, m_menustyle.f_text_gc);
@ -300,8 +296,6 @@ void Theme::load(const char *filename){
}
void Theme::loadMenuStyle() {
if (m_menustyle.titlefont==0)
m_menustyle.titlefont = new FbTk::Font(m_display);
readDatabaseTexture("menu.title", "Menu.Title",
&m_menustyle.title,
@ -381,30 +375,8 @@ void Theme::loadMenuStyle() {
m_menustyle.bullet_pos = Basemenu::LEFT;
//---------- font
m_menustyle.framefont->loadFromDatabase(m_database, "menu.frame.font", "Menu.Frame.Font");
m_menustyle.titlefont->loadFromDatabase(m_database, "menu.title.font", "Menu.Title.Font");
/*
if (I18n::instance()->multibyte()) {
readDatabaseFontSet("menu.title.font", "Menu.Title.Font",
&m_menustyle.titlefont.set);
readDatabaseFontSet("menu.frame.font", "Menu.Frame.Font",
&m_menustyle.framefont.set);
m_menustyle.titlefont.set_extents =
XExtentsOfFontSet(m_menustyle.titlefont.set);
m_menustyle.framefont.set_extents =
XExtentsOfFontSet(m_menustyle.framefont.set);
} else {
readDatabaseFont("menu.title.font", "Menu.Title.Font",
&m_menustyle.titlefont.fontstruct);
readDatabaseFont("menu.frame.font", "Menu.Frame.Font",
&m_menustyle.framefont.fontstruct);
}*/
m_menustyle.framefont.loadFromDatabase(m_database, "menu.frame.font", "Menu.Frame.Font");
m_menustyle.titlefont.loadFromDatabase(m_database, "menu.title.font", "Menu.Title.Font");
}
@ -990,14 +962,14 @@ void Theme::reconfigure() {
GCForeground, &gcv);
gcv.foreground = m_menustyle.t_text.getPixel();
if (m_menustyle.titlefont->getFontStruct())
gcv.font = m_menustyle.titlefont->getFontStruct()->fid;
if (m_menustyle.titlefont.getFontStruct())
gcv.font = m_menustyle.titlefont.getFontStruct()->fid;
XChangeGC(m_display, m_menustyle.t_text_gc,
gc_value_mask, &gcv);
gcv.foreground = m_menustyle.f_text.getPixel();
if (m_menustyle.framefont->getFontStruct())
gcv.font = m_menustyle.framefont->getFontStruct()->fid;
if (m_menustyle.framefont.getFontStruct())
gcv.font = m_menustyle.framefont.getFontStruct()->fid;
XChangeGC(m_display, m_menustyle.f_text_gc,
gc_value_mask, &gcv);

View file

@ -42,7 +42,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Theme.hh,v 1.8 2002/05/07 15:22:07 fluxgen Exp $
// $Id: Theme.hh,v 1.9 2002/05/15 09:35:49 fluxgen Exp $
#ifndef THEME_HH
#define THEME_HH
@ -66,10 +66,12 @@ public:
typedef struct MenuStyle {
MenuStyle(Display *display):titlefont(display, "fixed"),
framefont(display, "fixed") { }
BColor t_text, f_text, h_text, d_text;
BTexture title, frame, hilite;
GC t_text_gc, f_text_gc, h_text_gc, d_text_gc, hilite_gc;
FbTk::Font *titlefont, *framefont;
FbTk::Font titlefont, framefont;
DrawUtil::Font::FontJustify framefont_justify;
DrawUtil::Font::FontJustify titlefont_justify;
int bullet, bullet_pos;