void load_intro_gfx(void) { int tot, lin, y, w; char s[64]; XColor face; int have_face; const char *motto = freeciv_motto(); XFontSetExtents *exts; /* metrics */ exts = XExtentsOfFontSet(main_font_set); lin = exts->max_logical_extent.height; /* get colors */ if(XParseColor(display, cmap, COLOR_MOTTO_FACE, &face) && XAllocColor(display, cmap, &face)) { have_face = TRUE; } else { face.pixel = get_color(tileset, COLOR_OVERVIEW_VIEWRECT)->color.pixel; have_face = FALSE; } /* Main graphic */ intro_gfx_sprite = load_gfxfile(tileset_main_intro_filename(tileset)); tot = intro_gfx_sprite->width; y = intro_gfx_sprite->height - (2 * lin); w = XmbTextEscapement(main_font_set, motto, strlen(motto)); XSetForeground(display, font_gc, face.pixel); XmbDrawString(display, intro_gfx_sprite->pixmap, main_font_set, font_gc, tot / 2 - w / 2, y, motto, strlen(motto)); /* Minimap graphic */ radar_gfx_sprite = load_gfxfile(tileset_mini_intro_filename(tileset)); tot = radar_gfx_sprite->width; y = radar_gfx_sprite->height - (lin + 1.5 * (exts->max_logical_extent.height + exts->max_logical_extent.y)); w = XmbTextEscapement(main_font_set, word_version(), strlen(word_version())); XSetForeground(display, font_gc, get_color(tileset, COLOR_OVERVIEW_UNKNOWN)->color.pixel); XmbDrawString(display, radar_gfx_sprite->pixmap, main_font_set, font_gc, (tot / 2 - w / 2) + 1, y + 1, word_version(), strlen(word_version())); XSetForeground(display, font_gc, get_color(tileset, COLOR_OVERVIEW_VIEWRECT)->color.pixel); XmbDrawString(display, radar_gfx_sprite->pixmap, main_font_set, font_gc, tot / 2 - w / 2, y, word_version(), strlen(word_version())); y += lin; fc_snprintf(s, sizeof(s), "%d.%d.%d%s", MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION, VERSION_LABEL); w = XmbTextEscapement(main_font_set, s, strlen(s)); XSetForeground(display, font_gc, get_color(tileset, COLOR_OVERVIEW_UNKNOWN)->color.pixel); XmbDrawString(display, radar_gfx_sprite->pixmap, main_font_set, font_gc, (tot / 2 - w / 2) + 1, y + 1, s, strlen(s)); XSetForeground(display, font_gc, get_color(tileset, COLOR_OVERVIEW_VIEWRECT)->color.pixel); XmbDrawString(display, radar_gfx_sprite->pixmap, main_font_set, font_gc, tot / 2 - w / 2, y, s, strlen(s)); /* free colors */ if (have_face) { XFreeColors(display, cmap, &(face.pixel), 1, 0); } /* done */ return; }
/************************************************************************** Creates buttons and layouts for start page. **************************************************************************/ void fc_client::create_main_page(void) { QPixmap main_graphics(tileset_main_intro_filename(tileset)); QLabel* free_main_pic = new QLabel; QPainter painter(&main_graphics); QStringList buttons_names; int buttons_nr; char msgbuf[128]; const char *rev_ver; QFont f = QApplication::font(); QFontMetrics fm(f); pages_layout[PAGE_MAIN] = new QGridLayout; rev_ver = fc_svn_revision(); if (rev_ver == NULL) { /* TRANS: "version 2.6.0, Qt client" */ fc_snprintf(msgbuf, sizeof(msgbuf), _("%s%s, Qt client"), word_version(), VERSION_STRING); } else { /* TRANS: "version 2.6.0 (r25000), Qt client" */ fc_snprintf(msgbuf, sizeof(msgbuf), _("%s%s (%s), Qt client"), word_version(), VERSION_STRING, rev_ver); } painter.setPen(Qt::white); painter.drawText(main_graphics.width()-fm.width(msgbuf)-10, main_graphics.height()-fm.descent(), msgbuf); free_main_pic->setPixmap(main_graphics); pages_layout[PAGE_MAIN]->addWidget(free_main_pic, 0, 0, 1, 2, Qt::AlignCenter); buttons_names << _("Start new game") << _("Start scenario game") << _("Load saved game") << _("Connect to network game") << _("Options") << _("Quit"); buttons_nr = buttons_names.count(); for (int iter = 0; iter < buttons_nr; iter++) { button = new QPushButton(buttons_names[iter]); switch (iter) { case 0: pages_layout[PAGE_MAIN]->addWidget(button, 1, 0); break; case 1: pages_layout[PAGE_MAIN]->addWidget(button, 2, 0); connect(button, SIGNAL(clicked()), switch_page_mapper, SLOT(map())); switch_page_mapper->setMapping(button, PAGE_SCENARIO); break; case 2: pages_layout[PAGE_MAIN]->addWidget(button, 3, 0); connect(button, SIGNAL(clicked()), switch_page_mapper, SLOT(map())); switch_page_mapper->setMapping(button, PAGE_LOAD); break; case 3: pages_layout[PAGE_MAIN]->addWidget(button, 1, 1); connect(button, SIGNAL(clicked()), switch_page_mapper, SLOT(map())); switch_page_mapper->setMapping(button, PAGE_NETWORK); break; case 4: pages_layout[PAGE_MAIN]->addWidget(button, 2, 1); connect(button, SIGNAL(clicked()), this, SLOT(popup_client_options())); break; case 5: pages_layout[PAGE_MAIN]->addWidget(button, 3, 1); QObject::connect(button, SIGNAL(clicked()), this, SLOT(quit())); break; default: break; } } }