本文整理汇总了C++中gui::Label类的典型用法代码示例。如果您正苦于以下问题:C++ Label类的具体用法?C++ Label怎么用?C++ Label使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Label类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: AddOutput
void LuaConsole::AddOutput(const std::string &line) {
Gui::Label *label = 0;
if (int(m_outputLines.size()) > m_nextOutputLine) {
label = m_outputLines[m_nextOutputLine];
Remove(label);
} else {
Gui::Screen::PushFont("ConsoleFont");
label = new Gui::Label("", Gui::TextLayout::ColourMarkupNone);
Gui::Screen::PopFont();
m_outputLines.push_back(label);
}
m_nextOutputLine = (m_nextOutputLine + 1) % m_maxOutputLines;
label->SetText(line);
float size[2];
label->GetSizeRequested(size);
label->SetSize(float(Gui::Screen::GetWidth()), size[1]);
label->Show();
Remove(m_entryField);
PackEnd(label);
PackEnd(m_entryField);
}
开发者ID:AaronSenese,项目名称:pioneer,代码行数:23,代码来源:LuaConsole.cpp
示例2: OnBodyViewed
void SystemInfoView::OnBodyViewed(SystemBody *b)
{
std::string desc, data;
m_infoBox->DeleteAllChildren();
Gui::Fixed *outer = new Gui::Fixed(600, 200);
m_infoBox->PackStart(outer);
Gui::VBox *col1 = new Gui::VBox();
Gui::VBox *col2 = new Gui::VBox();
outer->Add(col1, 0, 0);
outer->Add(col2, 300, 0);
#define _add_label_and_value(label, value) { \
Gui::Label *l = (new Gui::Label(label))->Color(255,255,0); \
col1->PackEnd(l); \
l = (new Gui::Label(value))->Color(255,255,0); \
col2->PackEnd(l); \
}
bool multiple = (b->GetSuperType() == SystemBody::SUPERTYPE_STAR &&
b->GetParent() && b->GetParent()->GetType() == SystemBody::TYPE_GRAVPOINT && b->GetParent()->GetParent());
{
Gui::Label *l = new Gui::Label(b->GetName() + ": " + b->GetAstroDescription() +
(multiple ? (std::string(" (")+b->GetParent()->GetName() + ")") : ""));
l->Color(255,255,0);
m_infoBox->PackStart(l);
}
_add_label_and_value(Lang::MASS, stringf(Lang::N_WHATEVER_MASSES, formatarg("mass", b->GetMassAsFixed().ToDouble()),
formatarg("units", std::string(b->GetSuperType() == SystemBody::SUPERTYPE_STAR ? Lang::SOLAR : Lang::EARTH))));
_add_label_and_value(Lang::RADIUS, stringf(Lang::N_WHATEVER_RADII, formatarg("radius", b->GetRadiusAsFixed().ToDouble()),
formatarg("units", std::string(b->GetSuperType() == SystemBody::SUPERTYPE_STAR ? Lang::SOLAR : Lang::EARTH)),
formatarg("radkm", b->GetRadius() / 1000.0)));
if (b->GetSuperType() == SystemBody::SUPERTYPE_STAR) {
_add_label_and_value(Lang::EQUATORIAL_RADIUS_TO_POLAR_RADIUS_RATIO, stringf("%0{f.3}", b->GetAspectRatio()));
}
if (b->GetType() != SystemBody::TYPE_STARPORT_ORBITAL) {
_add_label_and_value(Lang::SURFACE_TEMPERATURE, stringf(Lang::N_CELSIUS, formatarg("temperature", b->GetAverageTemp()-273)));
_add_label_and_value(Lang::SURFACE_GRAVITY, stringf("%0{f.3} m/s^2", b->CalcSurfaceGravity()));
}
if (b->GetParent()) {
float days = float(b->GetOrbit().Period()) / float(60*60*24);
if (days > 1000) {
data = stringf(Lang::N_YEARS, formatarg("years", days/365));
} else {
data = stringf(Lang::N_DAYS, formatarg("days", b->GetOrbit().Period() / (60*60*24)));
}
if (multiple) {
float pdays = float(b->GetParent()->GetOrbit().Period()) /float(60*60*24);
data += " (" + (pdays > 1000 ? stringf(Lang::N_YEARS, formatarg("years", pdays/365))
: stringf(Lang::N_DAYS, formatarg("days", b->GetParent()->GetOrbit().Period() / (60*60*24)))) + ")";
}
_add_label_and_value(Lang::ORBITAL_PERIOD, data);
_add_label_and_value(Lang::PERIAPSIS_DISTANCE, format_distance(b->GetOrbMin()*AU, 3) +
(multiple ? (std::string(" (") + format_distance(b->GetParent()->GetOrbMin()*AU, 3)+ ")") : ""));
_add_label_and_value(Lang::APOAPSIS_DISTANCE, format_distance(b->GetOrbMax()*AU, 3) +
(multiple ? (std::string(" (") + format_distance(b->GetParent()->GetOrbMax()*AU, 3)+ ")") : ""));
_add_label_and_value(Lang::ECCENTRICITY, stringf("%0{f.2}", b->GetOrbit().GetEccentricity()) +
(multiple ? (std::string(" (") + stringf("%0{f.2}", b->GetParent()->GetOrbit().GetEccentricity()) + ")") : ""));
if (b->GetType() != SystemBody::TYPE_STARPORT_ORBITAL) {
_add_label_and_value(Lang::AXIAL_TILT, stringf(Lang::N_DEGREES, formatarg("angle", b->GetAxialTilt() * (180.0/M_PI))));
if (b->IsRotating()) {
_add_label_and_value(
std::string(Lang::DAY_LENGTH)+std::string(Lang::ROTATIONAL_PERIOD),
stringf(Lang::N_EARTH_DAYS, formatarg("days", b->GetRotationPeriodInDays())));
}
}
int numSurfaceStarports = 0;
std::string nameList;
for (const SystemBody* kid : b->GetChildren()) {
if (kid->GetType() == SystemBody::TYPE_STARPORT_SURFACE) {
nameList += (numSurfaceStarports ? ", " : "") + kid->GetName();
numSurfaceStarports++;
}
}
if (numSurfaceStarports) {
_add_label_and_value(Lang::STARPORTS, nameList);
}
}
m_infoBox->ShowAll();
m_infoBox->ResizeRequest();
}
开发者ID:Wuzzy2,项目名称:pioneer,代码行数:88,代码来源:SystemInfoView.cpp
示例3: OnBodyViewed
void SystemInfoView::OnBodyViewed(SBody *b)
{
std::string desc, data;
m_infoBox->DeleteAllChildren();
Gui::Fixed *outer = new Gui::Fixed(600, 200);
m_infoBox->PackStart(outer);
Gui::VBox *col1 = new Gui::VBox();
Gui::VBox *col2 = new Gui::VBox();
outer->Add(col1, 0, 0);
outer->Add(col2, 300, 0);
#define _add_label_and_value(label, value) { \
Gui::Label *l = (new Gui::Label(label))->Color(1.0f,1.0f,0.0f); \
col1->PackEnd(l); \
l = (new Gui::Label(value))->Color(1.0f,1.0f,0.0f); \
col2->PackEnd(l); \
}
{
Gui::Label *l = new Gui::Label(b->name + ": " + b->GetAstroDescription());
l->Color(1,1,0);
m_infoBox->PackStart(l);
}
_add_label_and_value(Lang::MASS, stringf(Lang::N_WHATEVER_MASSES, formatarg("mass", b->mass.ToDouble()),
formatarg("units", std::string(b->GetSuperType() == SBody::SUPERTYPE_STAR ? Lang::SOLAR : Lang::EARTH))));
if (b->type != SBody::TYPE_STARPORT_ORBITAL) {
_add_label_and_value(Lang::SURFACE_TEMPERATURE, stringf(Lang::N_CELSIUS, formatarg("temperature", b->averageTemp-273)));
_add_label_and_value(Lang::SURFACE_GRAVITY, stringf("%0{f.3} m/s^2", b->CalcSurfaceGravity()));
}
if (b->parent) {
float days = float(b->orbit.period) / float(60*60*24);
if (days > 1000) {
data = stringf(Lang::N_YEARS, formatarg("years", days/365));
} else {
data = stringf(Lang::N_DAYS, formatarg("days", b->orbit.period / (60*60*24)));
}
_add_label_and_value(Lang::ORBITAL_PERIOD, data);
_add_label_and_value(Lang::PERIAPSIS_DISTANCE, stringf("%0{f.3} AU", b->orbMin.ToDouble()));
_add_label_and_value(Lang::APOAPSIS_DISTANCE, stringf("%0{f.3} AU", b->orbMax.ToDouble()));
_add_label_and_value(Lang::ECCENTRICITY, stringf("%0{f.2}", b->orbit.eccentricity));
if (b->type != SBody::TYPE_STARPORT_ORBITAL) {
_add_label_and_value(Lang::AXIAL_TILT, stringf(Lang::N_DEGREES, formatarg("angle", b->axialTilt.ToDouble() * (180.0/M_PI))));
if (b->rotationPeriod != 0) {
_add_label_and_value(
std::string(Lang::DAY_LENGTH)+std::string(Lang::ROTATIONAL_PERIOD),
stringf(Lang::N_EARTH_DAYS, formatarg("days", b->rotationPeriod.ToDouble())));
}
}
int numSurfaceStarports = 0;
std::string nameList;
for (std::vector<SBody*>::iterator i = b->children.begin(); i != b->children.end(); ++i) {
if ((*i)->type == SBody::TYPE_STARPORT_SURFACE) {
nameList += (numSurfaceStarports ? ", " : "") + (*i)->name;
numSurfaceStarports++;
}
}
if (numSurfaceStarports) {
_add_label_and_value(Lang::STARPORTS, nameList);
}
}
m_infoBox->ShowAll();
m_infoBox->ResizeRequest();
}
开发者ID:AaronSenese,项目名称:pioneer,代码行数:69,代码来源:SystemInfoView.cpp
示例4: ShowAll
void CommodityTradeWidget::ShowAll()
{
DeleteAllChildren();
m_stockLabels.clear();
m_cargoLabels.clear();
SetTransparency(true);
Gui::VScrollBar *scroll = new Gui::VScrollBar();
Gui::VScrollPortal *portal = new Gui::VScrollPortal(450);
scroll->SetAdjustment(&portal->vscrollAdjust);
//int GetStock(Equip::Type t) const { return m_equipmentStock[t]; }
int NUM_ITEMS = 0;
const float YSEP = floor(Gui::Screen::GetFontHeight() * 2.5f);
for (int i=Equip::FIRST_COMMODITY; i<=Equip::LAST_COMMODITY; i++) {
assert(Equip::types[i].slot == Equip::SLOT_CARGO);
if (m_seller->DoesSell(Equip::Type(i))) {
NUM_ITEMS++;
}
}
Gui::Fixed *innerbox = new Gui::Fixed(450, NUM_ITEMS*YSEP);
innerbox->SetTransparency(true);
const float iconOffset = 8.0f;
for (int i=Equip::FIRST_COMMODITY, num=0; i<=Equip::LAST_COMMODITY; i++) {
assert(Equip::types[i].slot == Equip::SLOT_CARGO);
if (!m_seller->DoesSell(Equip::Type(i))) continue;
int stock = m_seller->GetStock(static_cast<Equip::Type>(i));
std::map<Equip::Type,std::string>::iterator icon_iter = s_iconMap.find(Equip::Type(i));
if (icon_iter != s_iconMap.end()) {
Gui::Image *icon = new Gui::Image(("icons/goods/" + (*icon_iter).second + ".png").c_str());
// this forces the on-screen rendering to fit within (rescale) to these dimensions
icon->SetRenderDimensions(38.0f, 32.0f);
innerbox->Add(icon, 0, num*YSEP);
}
Gui::Label *l = new Gui::Label(Equip::types[i].name);
if (Equip::types[i].description)
l->SetToolTip(Equip::types[i].description);
innerbox->Add(l,42,num*YSEP+iconOffset);
Gui::RepeaterButton *b = new Gui::RepeaterButton(RBUTTON_DELAY, RBUTTON_REPEAT);
sigc::slot<void> func = sigc::bind(sigc::mem_fun(this, &CommodityTradeWidget::OnClickBuy), i);
b->onClick.connect(sigc::bind(sigc::mem_fun(this, &CommodityTradeWidget::ManageRButton), b, func));
innerbox->Add(b, 380, num*YSEP+iconOffset);
b = new Gui::RepeaterButton(RBUTTON_DELAY, RBUTTON_REPEAT);
func = sigc::bind(sigc::mem_fun(this, &CommodityTradeWidget::OnClickSell), i);
b->onClick.connect(sigc::bind(sigc::mem_fun(this, &CommodityTradeWidget::ManageRButton), b, func));
innerbox->Add(b, 415, num*YSEP+iconOffset);
char buf[128];
innerbox->Add(new Gui::Label(
format_money(m_seller->GetPrice(static_cast<Equip::Type>(i)))
), 200, num*YSEP+iconOffset);
snprintf(buf, sizeof(buf), "%dt", stock*Equip::types[i].mass);
Gui::Label *stocklabel = new Gui::Label(buf);
m_stockLabels[i] = stocklabel;
innerbox->Add(stocklabel, 275, num*YSEP+iconOffset);
snprintf(buf, sizeof(buf), "%dt", Pi::player->m_equipment.Count(Equip::SLOT_CARGO, static_cast<Equip::Type>(i))*Equip::types[i].mass);
Gui::Label *cargolabel = new Gui::Label(buf);
m_cargoLabels[i] = cargolabel;
innerbox->Add(cargolabel, 325, num*YSEP+iconOffset);
num++;
}
innerbox->ShowAll();
portal->Add(innerbox);
portal->ShowAll();
Gui::Fixed *heading = new Gui::Fixed(470, Gui::Screen::GetFontHeight());
const Color &col = Gui::Theme::Colors::tableHeading;
heading->Add((new Gui::Label(Lang::ITEM))->Color(col), 0, 0);
heading->Add((new Gui::Label(Lang::PRICE))->Color(col), 200, 0);
heading->Add((new Gui::Label(Lang::BUY))->Color(col), 380, 0);
heading->Add((new Gui::Label(Lang::SELL))->Color(col), 415, 0);
heading->Add((new Gui::Label(Lang::STOCK))->Color(col), 275, 0);
heading->Add((new Gui::Label(Lang::CARGO))->Color(col), 325, 0);
PackEnd(heading);
Gui::HBox *body = new Gui::HBox();
body->PackEnd(portal);
body->PackEnd(scroll);
PackEnd(body);
SetSpacing(YSEP-Gui::Screen::GetFontHeight());
Gui::VBox::ShowAll();
}
开发者ID:Faiva78,项目名称:pioneer,代码行数:92,代码来源:CommodityTradeWidget.cpp
示例5: View
SpaceStationView::SpaceStationView(): View()
{
Gui::Label *l = new Gui::Label(Lang::COMMS_LINK);
l->Color(1,.7f,0);
m_rightRegion2->Add(l, 10, 0);
SetTransparency(false);
m_title = new Gui::Label("");
Add(m_title, 10, 10);
m_statusBox = new Gui::Fixed(300, 300);
Add(m_statusBox, 10, 350);
const float YSEP = Gui::Screen::GetFontHeight() * 1.2f;
m_statusBox->Add(new Gui::Label(std::string("#007")+std::string(Lang::CASH)), 0, 0);
m_statusBox->Add(new Gui::Label(std::string("#007")+std::string(Lang::LEGAL_STATUS)), 0, 2*YSEP);
m_statusBox->Add(new Gui::Label(std::string("#007")+std::string(Lang::USED)), 130, 4*YSEP);
m_statusBox->Add(new Gui::Label(std::string("#007")+std::string(Lang::FREE)), 210, 4*YSEP);
m_statusBox->Add(new Gui::Label(std::string("#007")+std::string(Lang::CARGO_SPACE)), 0, 5*YSEP);
m_statusBox->Add(new Gui::Label(std::string("#007")+std::string(Lang::SHIP_EQUIPMENT)), 0, 6*YSEP);
m_statusBox->Add(new Gui::Label(std::string("#007")+std::string(Lang::CABINS)), 0, 7*YSEP);
m_money = new Gui::Label("");
m_statusBox->Add(m_money, 210, 0);
m_cargoSpaceUsed = new Gui::Label("");
m_statusBox->Add(m_cargoSpaceUsed, 130, 5*YSEP);
m_cargoSpaceFree = new Gui::Label("");
m_statusBox->Add(m_cargoSpaceFree, 210, 5*YSEP);
m_equipmentMass = new Gui::Label("");
m_statusBox->Add(m_equipmentMass, 130, 6*YSEP);
m_cabinsUsed = new Gui::Label("");
m_statusBox->Add(m_cabinsUsed, 130, 7*YSEP);
m_cabinsFree = new Gui::Label("");
m_statusBox->Add(m_cabinsFree, 210, 7*YSEP);
m_legalstatus = new Gui::Label(Lang::CLEAN);
m_statusBox->Add(m_legalstatus, 210, 2*YSEP);
m_formStack = new Gui::Stack();
m_formController = new FormController(m_formStack);
m_formController->onRefresh.connect(sigc::mem_fun(this, &SpaceStationView::RefreshForForm));
m_backButtonBox = new Gui::HBox();
m_backButtonBox->SetSpacing(4.0f);
Add(m_backButtonBox, 680, 470);
Gui::SolidButton *b = new Gui::SolidButton();
b->onClick.connect(sigc::mem_fun(m_formController, &FormController::CloseForm));
m_backButtonBox->PackEnd(b);
m_backButtonBox->PackEnd(new Gui::Label(Lang::GO_BACK));
m_videoLink = 0;
m_undockConnection = Pi::player->onUndock.connect(sigc::mem_fun(m_formStack, &Gui::Stack::Clear));
}
开发者ID:GizmoR13,项目名称:pioneer,代码行数:67,代码来源:SpaceStationView.cpp
示例6: FaceForm
StationShipEquipmentForm::StationShipEquipmentForm(FormController *controller) : FaceForm(controller)
{
m_station = Pi::player->GetDockedWith();
SetTitle(stringf(Lang::SOMEWHERE_SHIP_EQUIPMENT, formatarg("station", m_station->GetLabel())));
Gui::VScrollBar *scroll = new Gui::VScrollBar();
Gui::VScrollPortal *portal = new Gui::VScrollPortal(450);
scroll->SetAdjustment(&portal->vscrollAdjust);
int NUM_ITEMS = 0;
const float YSEP = floor(Gui::Screen::GetFontHeight() * 1.5f);
for (int i=Equip::FIRST_SHIPEQUIP; i<=Equip::LAST_SHIPEQUIP; i++) {
if (m_station->GetStock(static_cast<Equip::Type>(i)))
NUM_ITEMS++;
}
Gui::VBox *outerbox = new Gui::VBox();
Gui::Fixed *innerbox = new Gui::Fixed(450, NUM_ITEMS*YSEP);
innerbox->SetTransparency(true);
for (int i=Equip::FIRST_SHIPEQUIP, num=0; i<=Equip::LAST_SHIPEQUIP; i++) {
Equip::Type type = static_cast<Equip::Type>(i);
int stock = m_station->GetStock(type);
if (!stock) continue;
Gui::Label *l = new Gui::Label(Equip::types[i].name);
if (Equip::types[i].description) {
l->SetToolTip(Equip::types[i].description);
}
innerbox->Add(l,0,num*YSEP);
innerbox->Add(new Gui::Label(format_money(m_station->GetPrice(type))), 200, num*YSEP);
innerbox->Add(new Gui::Label(format_money(REMOVAL_VALUE_PERCENT * m_station->GetPrice(type) / 100)),
275, num*YSEP);
innerbox->Add(new Gui::Label(stringf(Lang::NUMBER_TONNES, formatarg("mass", Equip::types[i].mass))), 360, num*YSEP);
ButtonPair pair;
pair.type = type;
pair.add = new Gui::SolidButton();
pair.add->onClick.connect(sigc::bind(sigc::mem_fun(this, &StationShipEquipmentForm::FitItem), type));
innerbox->Add(pair.add, 400, num*YSEP);
pair.remove = new Gui::SolidButton();
pair.remove->onClick.connect(sigc::bind(sigc::mem_fun(this, &StationShipEquipmentForm::RemoveItem), type));
innerbox->Add(pair.remove, 420, num*YSEP);
m_buttons.push_back(pair);
num++;
}
portal->Add(innerbox);
Gui::Fixed *heading = new Gui::Fixed(470, Gui::Screen::GetFontHeight());
const float *col = Gui::Theme::Colors::tableHeading;
heading->Add((new Gui::Label(Lang::ITEM))->Color(col), 0, 0);
heading->Add((new Gui::Label(Lang::PRICE_TO_FIT))->Color(col), 200, 0);
heading->Add((new Gui::Label(Lang::PRICE_TO_REMOVE))->Color(col), 275, 0);
heading->Add((new Gui::Label(Lang::WT))->Color(col), 360, 0);
heading->Add((new Gui::Label(Lang::FIT))->Color(col), 400, 0);
heading->Add((new Gui::Label(Lang::REMOVE))->Color(col), 420, 0);
outerbox->PackEnd(heading);
Gui::HBox *body = new Gui::HBox();
body->PackEnd(portal);
body->PackEnd(scroll);
outerbox->PackEnd(body);
outerbox->SetSpacing(YSEP-Gui::Screen::GetFontHeight());
Add(outerbox, 0, 0);
}
开发者ID:Gudadantza,项目名称:pioneer,代码行数:76,代码来源:StationShipEquipmentForm.cpp
示例7: View
GameMenuView::GameMenuView(): View()
{
m_subview = 0;
Gui::Tabbed *tabs = new Gui::Tabbed();
Add(tabs, 0, 0);
Gui::Fixed *mainTab = new Gui::Fixed(800, 600);
tabs->AddPage(new Gui::Label(Lang::SIGHTS_SOUNDS_SAVES), mainTab);
mainTab->Add((new Gui::Label(Lang::PIONEER))->Shadow(true), 350, 10);
SetTransparency(false);
Gui::Label *l = new Gui::Label(Lang::PIONEER);
l->Color(1,.7,0);
m_rightRegion2->Add(l, 10, 0);
{
Gui::LabelButton *b;
Gui::Box *hbox = new Gui::HBox();
hbox->SetSpacing(5.0f);
mainTab->Add(hbox, 20, 30);
b = new Gui::LabelButton(new Gui::Label(Lang::SAVE_THE_GAME));
b->SetShortcut(SDLK_s, KMOD_NONE);
b->onClick.connect(sigc::mem_fun(this, &GameMenuView::OpenSaveDialog));
hbox->PackEnd(b);
b = new Gui::LabelButton(new Gui::Label(Lang::LOAD_A_GAME));
b->onClick.connect(sigc::mem_fun(this, &GameMenuView::OpenLoadDialog));
b->SetShortcut(SDLK_l, KMOD_NONE);
hbox->PackEnd(b);
b = new Gui::LabelButton(new Gui::Label(Lang::EXIT_THIS_GAME));
b->onClick.connect(sigc::mem_fun(this, &GameMenuView::HideAll));
b->onClick.connect(sigc::ptr_fun(&Pi::EndGame));
hbox->PackEnd(b);
}
Gui::Box *vbox = new Gui::VBox();
vbox->SetSizeRequest(300, 440);
vbox->SetSpacing(5.0);
mainTab->Add(vbox, 20, 60);
{
vbox->PackEnd((new Gui::Label(Lang::WINDOW_OR_FULLSCREEN))->Color(1.0f,1.0f,0.0f));
m_toggleFullscreen = new Gui::ToggleButton();
m_toggleFullscreen->onChange.connect(sigc::mem_fun(this, &GameMenuView::OnToggleFullscreen));
Gui::HBox *hbox = new Gui::HBox();
hbox->SetSpacing(5.0f);
hbox->PackEnd(m_toggleFullscreen);
hbox->PackEnd(new Gui::Label(Lang::FULL_SCREEN));
vbox->PackEnd(hbox);
vbox->PackEnd((new Gui::Label(Lang::OTHER_GRAPHICS_SETTINGS))->Color(1.0f,1.0f,0.0f));
m_toggleShaders = new Gui::ToggleButton();
m_toggleShaders->onChange.connect(sigc::mem_fun(this, &GameMenuView::OnToggleShaders));
hbox = new Gui::HBox();
hbox->SetSpacing(5.0f);
hbox->PackEnd(m_toggleShaders);
hbox->PackEnd(new Gui::Label(Lang::USE_SHADERS));
vbox->PackEnd(hbox);
m_toggleHDR = new Gui::ToggleButton();
m_toggleHDR->onChange.connect(sigc::mem_fun(this, &GameMenuView::OnToggleHDR));
hbox = new Gui::HBox();
hbox->SetSpacing(5.0f);
hbox->PackEnd(m_toggleHDR);
hbox->PackEnd(new Gui::Label(Lang::USE_HDR));
vbox->PackEnd(hbox);
if (!Render::IsHDRAvailable()) m_toggleHDR->SetEnabled(false);
vbox->PackEnd((new Gui::Label(Lang::SOUND_SETTINGS))->Color(1.0f,1.0f,0.0f));
m_masterVolume = new VolumeControl(Lang::VOL_MASTER, Pi::config.Float("MasterVolume"), Pi::config.Int("MasterMuted"));
vbox->PackEnd(m_masterVolume);
m_sfxVolume = new VolumeControl(Lang::VOL_EFFECTS, Pi::config.Float("SfxVolume"), Pi::config.Int("SfxMuted"));
vbox->PackEnd(m_sfxVolume);
m_musicVolume = new VolumeControl(Lang::VOL_MUSIC, Pi::config.Float("MusicVolume"), Pi::config.Int("MusicMuted"));
vbox->PackEnd(m_musicVolume);
m_masterVolume->onChanged.connect(sigc::mem_fun(this, &GameMenuView::OnChangeVolume));
m_sfxVolume->onChanged.connect(sigc::mem_fun(this, &GameMenuView::OnChangeVolume));
m_musicVolume->onChanged.connect(sigc::mem_fun(this, &GameMenuView::OnChangeVolume));
}
vbox->PackEnd((new Gui::Label(Lang::VIDEO_RESOLUTION))->Color(1.0f,1.0f,0.0f));
Gui::RadioGroup *g = new Gui::RadioGroup();
SDL_Rect **modes;
modes = SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
if ((modes!=0) && (modes != reinterpret_cast<SDL_Rect**>(-1))) {
// box to put the scroll portal and its scroll bar into
Gui::HBox *scrollHBox = new Gui::HBox();
vbox->PackEnd(scrollHBox);
Gui::VScrollBar *scroll = new Gui::VScrollBar();
Gui::VScrollPortal *portal = new Gui::VScrollPortal(280);
scroll->SetAdjustment(&portal->vscrollAdjust);
scrollHBox->PackEnd(portal);
scrollHBox->PackEnd(scroll);
Gui::VBox *vbox2 = new Gui::VBox();
portal->Add(vbox2);
//.........这里部分代码省略.........
开发者ID:johnuk89,项目名称:pioneer,代码行数:101,代码来源:GameMenuView.cpp
示例8: MainLoop
void Viewer::MainLoop()
{
Uint32 lastTurd = SDL_GetTicks();
Uint32 t = SDL_GetTicks();
int numFrames = 0;
Uint32 lastFpsReadout = SDL_GetTicks();
g_campos = vector3f(0.0f, 0.0f, m_cmesh->GetBoundingRadius());
g_camorient = matrix4x4f::Identity();
matrix4x4f modelRot = matrix4x4f::Identity();
printf("Geom tree build in %dms\n", SDL_GetTicks() - t);
Render::State::SetZnearZfar(1.0f, 10000.0f);
for (;;) {
PollEvents();
Render::PrepareFrame();
if (g_keyState[SDLK_LSHIFT] || g_keyState[SDLK_RSHIFT]) {
if (g_keyState[SDLK_UP]) g_camorient = g_camorient * matrix4x4f::RotateXMatrix(g_frameTime);
if (g_keyState[SDLK_DOWN]) g_camorient = g_camorient * matrix4x4f::RotateXMatrix(-g_frameTime);
if (g_keyState[SDLK_LEFT]) g_camorient = g_camorient * matrix4x4f::RotateYMatrix(-g_frameTime);
if (g_keyState[SDLK_RIGHT]) g_camorient = g_camorient * matrix4x4f::RotateYMatrix(g_frameTime);
if (g_mouseButton[3]) {
float rx = 0.01f*g_mouseMotion[1];
float ry = 0.01f*g_mouseMotion[0];
g_camorient = g_camorient * matrix4x4f::RotateXMatrix(rx);
g_camorient = g_camorient * matrix4x4f::RotateYMatrix(ry);
if (g_mouseButton[1]) {
g_campos = g_campos - g_camorient * vector3f(0.0f,0.0f,1.0f) * 0.01 *
m_model->GetDrawClipRadius();
}
}
} else {
if (g_keyState[SDLK_UP]) modelRot = modelRot * matrix4x4f::RotateXMatrix(g_frameTime);
if (g_keyState[SDLK_DOWN]) modelRot = modelRot * matrix4x4f::RotateXMatrix(-g_frameTime);
if (g_keyState[SDLK_LEFT]) modelRot = modelRot * matrix4x4f::RotateYMatrix(-g_frameTime);
if (g_keyState[SDLK_RIGHT]) modelRot = modelRot * matrix4x4f::RotateYMatrix(g_frameTime);
if (g_mouseButton[3]) {
float rx = 0.01f*g_mouseMotion[1];
float ry = 0.01f*g_mouseMotion[0];
modelRot = modelRot * matrix4x4f::RotateXMatrix(rx);
modelRot = modelRot * matrix4x4f::RotateYMatrix(ry);
}
}
if (g_keyState[SDLK_EQUALS]) g_campos = g_campos - g_camorient * vector3f(0.0f,0.0f,1.0f);
if (g_keyState[SDLK_MINUS]) g_campos = g_campos + g_camorient * vector3f(0.0f,0.0f,1.0f);
if (g_keyState[SDLK_PAGEUP]) g_campos = g_campos - g_camorient * vector3f(0.0f,0.0f,1.0f);
if (g_keyState[SDLK_PAGEDOWN]) g_campos = g_campos + g_camorient * vector3f(0.0f,0.0f,1.0f);
// geom->MoveTo(modelRot, vector3d(0.0,0.0,0.0));
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
float fracH = g_height / (float)g_width;
glFrustum(-1, 1, -fracH, fracH, 1.0f, 10000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
SetSbreParams();
int beforeDrawTriStats = LmrModelGetStatsTris();
if (g_renderType == 0) {
glPushAttrib(GL_ALL_ATTRIB_BITS);
matrix4x4f m = g_camorient.InverseOf() * matrix4x4f::Translation(-g_campos) * modelRot.InverseOf();
if (g_doBenchmark) {
for (int i=0; i<1000; i++) m_model->Render(m, ¶ms);
} else {
m_model->Render(m, ¶ms);
}
glPopAttrib();
} else if (g_renderType == 1) {
glPushMatrix();
matrix4x4f m = g_camorient.InverseOf() * matrix4x4f::Translation(-g_campos) * modelRot.InverseOf();
glMultMatrixf(&m[0]);
render_coll_mesh(m_cmesh);
glPopMatrix();
} else {
matrix4x4f tran = modelRot * g_camorient;//.InverseOf();
vector3d forward = tran * vector3d(0.0,0.0,-1.0);
vector3d up = tran * vector3d(0.0,1.0,0.0);
raytraceCollMesh(modelRot * g_campos, up, forward, m_space);
}
Render::State::UseProgram(0);
Render::UnbindAllBuffers();
{
char buf[128];
Aabb aabb = m_cmesh->GetAabb();
snprintf(buf, sizeof(buf), "%d triangles, collision mesh size: %.1fx%.1fx%.1f (radius %.1f)",
(g_renderType == 0 ?
LmrModelGetStatsTris() - beforeDrawTriStats :
m_cmesh->m_numTris),
aabb.max.x-aabb.min.x,
aabb.max.y-aabb.min.y,
//.........这里部分代码省略.........
开发者ID:Snaar,项目名称:pioneer,代码行数:101,代码来源:LuaModelViewer.cpp
注:本文中的gui::Label类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论