Skip to content

Instantly share code, notes, and snippets.

@kahrl
Created July 5, 2013 05:48
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save kahrl/5932207 to your computer and use it in GitHub Desktop.
diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp
index 0aa2c2d..58008b8 100644
--- a/src/guiFormSpecMenu.cpp
+++ b/src/guiFormSpecMenu.cpp
@@ -61,6 +61,8 @@
}
+const double FS = 1.23;
+
void drawItemStack(video::IVideoDriver *driver,
gui::IGUIFont *font,
const ItemStack &item,
@@ -284,8 +286,8 @@ void GUIFormSpecMenu::parseSize(parserData* data,std::string element) {
if (parts[1].find(';') != std::string::npos)
parts[1] = parts[1].substr(0,parts[1].find(';'));
- invsize.X = stof(parts[0]);
- invsize.Y = stof(parts[1]);
+ invsize.X = stof(parts[0]) * FS;
+ invsize.Y = stof(parts[1]) * FS;
infostream<<"Form size ("<<invsize.X<<","<<invsize.Y<<")"<<std::endl;
@@ -363,12 +365,12 @@ void GUIFormSpecMenu::parseList(parserData* data,std::string element) {
loc.deSerialize(location);
v2s32 pos = padding + AbsoluteRect.UpperLeftCorner;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
v2s32 geom;
- geom.X = stoi(v_geom[0]);
- geom.Y = stoi(v_geom[1]);
+ geom.X = stoi(v_geom[0]) * FS;
+ geom.Y = stoi(v_geom[1]) * FS;
infostream<<"list inv="<<location<<", listname="<<listname
<<", pos=("<<pos.X<<","<<pos.Y<<")"
<<", geom=("<<geom.X<<","<<geom.Y<<")"
@@ -400,8 +402,8 @@ void GUIFormSpecMenu::parseCheckbox(parserData* data,std::string element) {
MY_CHECKPOS("checkbox",0);
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float) spacing.X;
- pos.Y += stof(v_pos[1]) * (float) spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float) spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float) spacing.Y;
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y+((imgsize.Y/2)-15), pos.X+300, pos.Y+((imgsize.Y/2)+15));
@@ -450,12 +452,12 @@ void GUIFormSpecMenu::parseImage(parserData* data,std::string element) {
MY_CHECKGEOM("image",1);
v2s32 pos = padding + AbsoluteRect.UpperLeftCorner;
- pos.X += stof(v_pos[0]) * (float) spacing.X;
- pos.Y += stof(v_pos[1]) * (float) spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float) spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float) spacing.Y;
v2s32 geom;
- geom.X = stoi(v_geom[0]) * (float)imgsize.X;
- geom.Y = stoi(v_geom[1]) * (float)imgsize.Y;
+ geom.X = stoi(v_geom[0]) * FS * (float)imgsize.X;
+ geom.Y = stoi(v_geom[1]) * FS * (float)imgsize.Y;
infostream<<"image name="<<name
<<", pos=("<<pos.X<<","<<pos.Y<<")"
@@ -474,8 +476,8 @@ void GUIFormSpecMenu::parseImage(parserData* data,std::string element) {
MY_CHECKPOS("image",0);
v2s32 pos = padding + AbsoluteRect.UpperLeftCorner;
- pos.X += stof(v_pos[0]) * (float) spacing.X;
- pos.Y += stof(v_pos[1]) * (float) spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float) spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float) spacing.Y;
std::cout<<"image name="<<name
<<", pos=("<<pos.X<<","<<pos.Y<<")"
@@ -500,12 +502,12 @@ void GUIFormSpecMenu::parseItemImage(parserData* data,std::string element) {
MY_CHECKGEOM("itemimage",1);
v2s32 pos = padding + AbsoluteRect.UpperLeftCorner;
- pos.X += stof(v_pos[0]) * (float) spacing.X;
- pos.Y += stof(v_pos[1]) * (float) spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float) spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float) spacing.Y;
v2s32 geom;
- geom.X = stoi(v_geom[0]) * (float)imgsize.X;
- geom.Y = stoi(v_geom[1]) * (float)imgsize.Y;
+ geom.X = stoi(v_geom[0]) * FS * (float)imgsize.X;
+ geom.Y = stoi(v_geom[1]) * FS * (float)imgsize.Y;
infostream<<"item name="<<name
<<", pos=("<<pos.X<<","<<pos.Y<<")"
@@ -532,12 +534,12 @@ void GUIFormSpecMenu::parseButton(parserData* data,std::string element,std::stri
MY_CHECKGEOM("button",1);
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
v2s32 geom;
- geom.X = (stof(v_geom[0]) * (float)spacing.X)-(spacing.X-imgsize.X);
- pos.Y += (stof(v_geom[1]) * (float)imgsize.Y)/2;
+ geom.X = (stof(v_geom[0]) * FS * (float)spacing.X)-(spacing.X-imgsize.X);
+ pos.Y += (stof(v_geom[1]) * FS * (float)imgsize.Y)/2;
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y-15, pos.X+geom.X, pos.Y+15);
@@ -584,12 +586,12 @@ void GUIFormSpecMenu::parseBackground(parserData* data,std::string element) {
MY_CHECKGEOM("background",1);
v2s32 pos = padding + AbsoluteRect.UpperLeftCorner;
- pos.X += stof(v_pos[0]) * (float)spacing.X - ((float)spacing.X-(float)imgsize.X)/2;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y - ((float)spacing.Y-(float)imgsize.Y)/2;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X - ((float)spacing.X-(float)imgsize.X)/2;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y - ((float)spacing.Y-(float)imgsize.Y)/2;
v2s32 geom;
- geom.X = stof(v_geom[0]) * (float)spacing.X;
- geom.Y = stof(v_geom[1]) * (float)spacing.Y;
+ geom.X = stof(v_geom[0]) * FS * (float)spacing.X;
+ geom.Y = stof(v_geom[1]) * FS * (float)spacing.Y;
infostream<<"image name="<<name
<<", pos=("<<pos.X<<","<<pos.Y<<")"
@@ -624,12 +626,12 @@ void GUIFormSpecMenu::parseTextList(parserData* data,std::string element) {
MY_CHECKGEOM("textlist",1);
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
v2s32 geom;
- geom.X = stof(v_geom[0]) * (float)spacing.X;
- geom.Y = stof(v_geom[1]) * (float)spacing.Y;
+ geom.X = stof(v_geom[0]) * FS * (float)spacing.X;
+ geom.Y = stof(v_geom[1]) * FS * (float)spacing.Y;
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y, pos.X+geom.X, pos.Y+geom.Y);
@@ -708,10 +710,10 @@ void GUIFormSpecMenu::parseDropDown(parserData* data,std::string element) {
MY_CHECKPOS("dropdown",0);
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
- s32 width = stof(parts[1]) * (float)spacing.Y;
+ s32 width = stof(parts[1]) * FS * (float)spacing.Y;
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y, pos.X+width, pos.Y+30);
@@ -767,13 +769,13 @@ void GUIFormSpecMenu::parsePwdField(parserData* data,std::string element) {
MY_CHECKGEOM("pwdfield",1);
v2s32 pos;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
v2s32 geom;
- geom.X = (stof(v_geom[0]) * (float)spacing.X)-(spacing.X-imgsize.X);
+ geom.X = (stof(v_geom[0]) * FS * (float)spacing.X)-(spacing.X-imgsize.X);
- pos.Y += (stof(v_geom[1]) * (float)imgsize.Y)/2;
+ pos.Y += (stof(v_geom[1]) * FS * (float)imgsize.Y)/2;
pos.Y -= 15;
geom.Y = 30;
@@ -805,8 +807,8 @@ void GUIFormSpecMenu::parsePwdField(parserData* data,std::string element) {
if (label.length() > 1)
{
- rect.UpperLeftCorner.Y -= 15;
- rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + 15;
+ rect.UpperLeftCorner.Y -= FS*15;
+ rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + FS*15;
Environment->addStaticText(spec.flabel.c_str(), rect, false, true, this, 0);
}
@@ -898,8 +900,8 @@ void GUIFormSpecMenu::parseSimpleField(parserData* data,std::vector<std::string>
if (label.length() > 1)
{
- rect.UpperLeftCorner.Y -= 15;
- rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + 15;
+ rect.UpperLeftCorner.Y -= FS*15;
+ rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + FS*15;
Environment->addStaticText(spec.flabel.c_str(), rect, false, true, this, 0);
}
}
@@ -921,21 +923,21 @@ void GUIFormSpecMenu::parseTextArea(parserData* data,std::vector<std::string>& p
MY_CHECKGEOM(type,1);
v2s32 pos;
- pos.X = stof(v_pos[0]) * (float) spacing.X;
- pos.Y = stof(v_pos[1]) * (float) spacing.Y;
+ pos.X = stof(v_pos[0]) * FS * (float) spacing.X;
+ pos.Y = stof(v_pos[1]) * FS * (float) spacing.Y;
v2s32 geom;
- geom.X = (stof(v_geom[0]) * (float)spacing.X)-(spacing.X-imgsize.X);
+ geom.X = (stof(v_geom[0]) * FS * (float)spacing.X)-(spacing.X-imgsize.X);
if (type == "textarea")
{
- geom.Y = (stof(v_geom[1]) * (float)imgsize.Y) - (spacing.Y-imgsize.Y);
+ geom.Y = (stof(v_geom[1]) * FS * (float)imgsize.Y) - (spacing.Y-imgsize.Y);
pos.Y += 15;
}
else
{
- pos.Y += (stof(v_geom[1]) * (float)imgsize.Y)/2;
+ pos.Y += (stof(v_geom[1]) * FS * (float)imgsize.Y)/2;
pos.Y -= 15;
geom.Y = 30;
}
@@ -998,8 +1000,8 @@ void GUIFormSpecMenu::parseTextArea(parserData* data,std::vector<std::string>& p
if (label.length() > 1)
{
- rect.UpperLeftCorner.Y -= 15;
- rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + 15;
+ rect.UpperLeftCorner.Y -= FS*15;
+ rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + FS*15;
Environment->addStaticText(spec.flabel.c_str(), rect, false, true, this, 0);
}
}
@@ -1033,8 +1035,8 @@ void GUIFormSpecMenu::parseLabel(parserData* data,std::string element) {
MY_CHECKPOS("label",0);
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y+((imgsize.Y/2)-15), pos.X+300, pos.Y+((imgsize.Y/2)+15));
@@ -1075,8 +1077,8 @@ void GUIFormSpecMenu::parseVertLabel(parserData* data,std::string element) {
MY_CHECKPOS("vertlabel",1);
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y+((imgsize.Y/2)-15), pos.X+15, pos.Y+300);
@@ -1126,11 +1128,11 @@ void GUIFormSpecMenu::parseImageButton(parserData* data,std::string element,std:
MY_CHECKGEOM("imagebutton",1);
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
v2s32 geom;
- geom.X = (stof(v_geom[0]) * (float)spacing.X)-(spacing.X-imgsize.X);
- geom.Y = (stof(v_geom[1]) * (float)spacing.Y)-(spacing.Y-imgsize.Y);
+ geom.X = (stof(v_geom[0]) * FS * (float)spacing.X)-(spacing.X-imgsize.X);
+ geom.Y = (stof(v_geom[1]) * FS * (float)spacing.Y)-(spacing.Y-imgsize.Y);
bool noclip = false;
bool drawborder = true;
@@ -1218,8 +1220,8 @@ void GUIFormSpecMenu::parseTabHeader(parserData* data,std::string element) {
spec.ftype = f_TabHeader;
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
v2s32 geom;
geom.X = data->screensize.Y;
geom.Y = 30;
@@ -1275,11 +1277,11 @@ void GUIFormSpecMenu::parseItemImageButton(parserData* data,std::string element)
MY_CHECKGEOM("itemimagebutton",1);
v2s32 pos = padding;
- pos.X += stof(v_pos[0]) * (float)spacing.X;
- pos.Y += stof(v_pos[1]) * (float)spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float)spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float)spacing.Y;
v2s32 geom;
- geom.X = (stof(v_geom[0]) * (float)spacing.X)-(spacing.X-imgsize.X);
- geom.Y = (stof(v_geom[1]) * (float)spacing.Y)-(spacing.Y-imgsize.Y);
+ geom.X = (stof(v_geom[0]) * FS * (float)spacing.X)-(spacing.X-imgsize.X);
+ geom.Y = (stof(v_geom[1]) * FS * (float)spacing.Y)-(spacing.Y-imgsize.Y);
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y, pos.X+geom.X, pos.Y+geom.Y);
@@ -1328,12 +1330,12 @@ void GUIFormSpecMenu::parseBox(parserData* data,std::string element) {
MY_CHECKGEOM("box",1);
v2s32 pos = padding + AbsoluteRect.UpperLeftCorner;
- pos.X += stof(v_pos[0]) * (float) spacing.X;
- pos.Y += stof(v_pos[1]) * (float) spacing.Y;
+ pos.X += stof(v_pos[0]) * FS * (float) spacing.X;
+ pos.Y += stof(v_pos[1]) * FS * (float) spacing.Y;
v2s32 geom;
- geom.X = stof(v_geom[0]) * (float)spacing.X;
- geom.Y = stof(v_geom[1]) * (float)spacing.Y;
+ geom.X = stof(v_geom[0]) * FS * (float)spacing.X;
+ geom.Y = stof(v_geom[1]) * FS * (float)spacing.Y;
bool valid_color = false;
@@ -1475,7 +1477,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
removeChildren();
mydata.size= v2s32(100,100);
- mydata.helptext_h = 15;
+ mydata.helptext_h = FS*15;
mydata.screensize = screensize;
// Base position of contents of form
@@ -1547,7 +1549,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
// Add tooltip
{
// Note: parent != this so that the tooltip isn't clipped by the menu rectangle
- m_tooltip_element = Environment->addStaticText(L"",core::rect<s32>(0,0,110,18));
+ m_tooltip_element = Environment->addStaticText(L"",core::rect<s32>(0,0,FS*110,FS*18));
m_tooltip_element->enableOverrideColor(true);
m_tooltip_element->setBackgroundColor(video::SColor(255,110,130,60));
m_tooltip_element->setDrawBackground(true);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment