leds and tiny buttons measure actual preferred width
This commit is contained in:
@@ -7,12 +7,12 @@
|
||||
</text>
|
||||
<text name='scale-head' size='large' relative='pos-in pos' rel-anchor='prev' top='10' left='10' width='260' height='17'>Scale UI:</text>
|
||||
<group name='scaleui'>
|
||||
<led name='1' relative='pos-in pos' anchor='scale-head' top='4' left='15' width='33'>1</led>
|
||||
<led name='1_5' relative='pos-in pos' anchor='scale-head' top='4' left='55' width='33'>1.5</led>
|
||||
<led name='2' relative='pos-in pos' anchor='scale-head' top='4' left='95' width='33'>2</led>
|
||||
<led name='3' relative='pos-in pos' anchor='scale-head' top='4' left='135' width='33'>3</led>
|
||||
<led name='4' relative='pos-in pos' anchor='scale-head' top='4' left='175' width='33'>4</led>
|
||||
<led name='other' relative='pos-in pos' anchor='scale-head' top='4' left='215' width='85'/>
|
||||
<led name='1' relative='pos-in pos' anchor='scale-head' top='4' left='15'>1</led>
|
||||
<led name='1_5' relative='pos-in pos' anchor='scale-head' top='4' left='55'>1.5</led>
|
||||
<led name='2' relative='pos-in pos' anchor='scale-head' top='4' left='95'>2</led>
|
||||
<led name='3' relative='pos-in pos' anchor='scale-head' top='4' left='135'>3</led>
|
||||
<led name='4' relative='pos-in pos' anchor='scale-head' top='4' left='175'>4</led>
|
||||
<led name='other' relative='pos-in pos' anchor='scale-head' top='4' left='215'/>
|
||||
</group>
|
||||
<text name='scalemap-head' size='large' relative='neg pos' anchor='scale-head' top='17' left='0' width='260' height='17'>Scale Map:</text>
|
||||
<group name='scalemap'>
|
||||
@@ -26,28 +26,28 @@
|
||||
<text size='large' relative='pos-in pos' anchor='scalemap-head' top='30' left='0' width='182' height='17'>Display alignment:</text>
|
||||
<text name='disp-frame' framed='true' relative='pos-in pos' rel-anchor='prev' top='6' left='0' width='277' height='102'/>
|
||||
<group name='display'>
|
||||
<led name='tl' relative='pos-in' anchor='disp-frame' top='7' left='8' width='54'>Top Left</led>
|
||||
<led name='tr' relative='neg-in pos-in' anchor='disp-frame' top='7' left='128' width='62'>Top Right</led>
|
||||
<led name='mid' relative='pos-in' anchor='disp-frame' top='40' left='83' width='75'>Center</led>
|
||||
<led name='bl' relative='pos-in neg-in' anchor='disp-frame' top='24' left='8' width='104'>Bottom Left</led>
|
||||
<led name='br' relative='neg-in' anchor='disp-frame' top='24' left='128' width='104'>Bottom Right</led>
|
||||
<led name='win' relative='pos-in pos' anchor='disp-frame' top='9' left='8' width='228'>Small Window (not full screen)</led>
|
||||
<led name='tl' relative='pos-in' anchor='disp-frame' top='7' left='8'>Top Left</led>
|
||||
<led name='tr' relative='neg-in pos-in' anchor='disp-frame' top='7' left='128'>Top Right</led>
|
||||
<led name='mid' relative='pos-in' anchor='disp-frame' top='40' left='83'>Center</led>
|
||||
<led name='bl' relative='pos-in neg-in' anchor='disp-frame' top='24' left='8'>Bottom Left</led>
|
||||
<led name='br' relative='neg-in' anchor='disp-frame' top='24' left='128'>Bottom Right</led>
|
||||
<led name='win' relative='pos-in pos' anchor='disp-frame' top='9' left='8'>Small Window (not full screen)</led>
|
||||
</group>
|
||||
<text name='spd-head' size='large' relative='neg pos' anchor='disp-frame' top='31' left='0' width='182' height='17'>Game speed:</text>
|
||||
<group name='speed'>
|
||||
<led name='fast' relative='pos-in pos' anchor='spd-head' top='4' left='15' width='53'>Fast</led>
|
||||
<led name='med' relative='pos-in pos' anchor='spd-head' top='4' left='85' width='53'>Medium</led>
|
||||
<led name='slow' relative='pos-in pos' anchor='spd-head' top='4' left='155' width='53'>Slow</led>
|
||||
<led name='snail' relative='pos-in pos' anchor='spd-head' top='4' left='225' width='70'>Quite Slow</led>
|
||||
<led name='fast' relative='pos-in pos' anchor='spd-head' top='4' left='15'>Fast</led>
|
||||
<led name='med' relative='pos pos-in' anchor='fast' top='0' left='15'>Medium</led>
|
||||
<led name='slow' relative='pos pos-in' anchor='med' top='0' left='15'>Slow</led>
|
||||
<led name='snail' relative='pos pos-in' anchor='slow' top='0' left='15'>Quite Slow</led>
|
||||
</group>
|
||||
<text name='misc-head' size='large' relative='pos-in pos' anchor='spd-head' top='30' left='0' width='182' height='17'>Miscellaneous:</text>
|
||||
<led name='nosound' relative='pos-in pos' anchor='misc-head' top='6' left='15' width='117'>No Sounds</led>
|
||||
<led name='repeatdesc' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='287'>Show room descriptions more than once</led>
|
||||
<led name='easier' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='352'>Make game easier (monsters much weaker)</led>
|
||||
<led name='lesswm' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='340'>Fewer wandering monsters</led>
|
||||
<led name='skipsplash' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='340'>Skip splash screen on startup</led>
|
||||
<led name='nohelp' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='306'>Never show instant help</led>
|
||||
<button name='resethelp' type='tiny' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='340'>
|
||||
<led name='nosound' relative='pos-in pos' anchor='misc-head' top='6' left='15'>No Sounds</led>
|
||||
<led name='repeatdesc' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>Show room descriptions more than once</led>
|
||||
<led name='easier' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>Make game easier (monsters much weaker)</led>
|
||||
<led name='lesswm' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>Fewer wandering monsters</led>
|
||||
<led name='skipsplash' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>Skip splash screen on startup</led>
|
||||
<led name='nohelp' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>Never show instant help</led>
|
||||
<button name='resethelp' type='tiny' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>
|
||||
Reset instant help (all help windows will reappear)
|
||||
</button>
|
||||
<button name='okay' relative='abs pos' rel-anchor='prev' type='regular' top='17' left='354'>OK</button>
|
||||
|
@@ -61,6 +61,8 @@ bool cButton::isScrollable() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
const int tiny_text_offset = 18;
|
||||
|
||||
void cButton::draw(){
|
||||
rectangle from_rect, to_rect;
|
||||
|
||||
@@ -81,7 +83,7 @@ void cButton::draw(){
|
||||
eTextMode textMode = eTextMode::CENTRE;
|
||||
if(type == BTN_TINY) {
|
||||
textMode = wrapLabel ? eTextMode::WRAP : eTextMode::LEFT_TOP;
|
||||
to_rect.left += 18;
|
||||
to_rect.left += tiny_text_offset;
|
||||
style.colour = textClr;
|
||||
} else if(type == BTN_PUSH) {
|
||||
to_rect.top += 42;
|
||||
@@ -175,13 +177,17 @@ void cButton::validatePostParse(ticpp::Element& elem, std::string fname, const s
|
||||
if(labelledButtons.count(type)) {
|
||||
if(!attrs.count("color") && !attrs.count("colour") && parent->getBg() == cDialog::BG_DARK)
|
||||
setColour(sf::Color::White);
|
||||
if(!getText().empty() && !attrs.count("width"))
|
||||
throw xMissingAttr(elem.Value(), "width", elem.Row(), elem.Column(), fname);
|
||||
}
|
||||
}
|
||||
|
||||
location cButton::getPreferredSize() const {
|
||||
return {btnRects[type][0].width(), btnRects[type][0].height()};
|
||||
int width = btnRects[type][0].width();
|
||||
if(type == BTN_TINY && !getText().empty()){
|
||||
TextStyle style;
|
||||
style.pointSize = textSize;
|
||||
width = tiny_text_offset + string_length(getText(), style);
|
||||
}
|
||||
return {width, btnRects[type][0].height()};
|
||||
}
|
||||
|
||||
void cButton::recalcRect() {
|
||||
|
@@ -86,6 +86,8 @@ bool cLed::manageFormat(eFormat prop, bool set, boost::any* val) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const int text_offset = 18; // Possibly could be 20
|
||||
|
||||
void cLed::draw(){
|
||||
rectangle from_rect, to_rect;
|
||||
|
||||
@@ -103,7 +105,7 @@ void cLed::draw(){
|
||||
rect_draw_some_item(*ResMgr::graphics.get(buttons[btnGW[BTN_LED]]),from_rect,*inWindow,to_rect);
|
||||
style.colour = textClr;
|
||||
to_rect.right = frame.right;
|
||||
to_rect.left = frame.left + 18; // Possibly could be 20
|
||||
to_rect.left = frame.left + text_offset;
|
||||
win_draw_string(*inWindow,to_rect,getText(),wrapLabel ? eTextMode::WRAP : eTextMode::LEFT_TOP,style);
|
||||
}
|
||||
|
||||
@@ -152,5 +154,11 @@ bool cLed::parseContent(ticpp::Node& content, int n, std::string tagName, std::s
|
||||
}
|
||||
|
||||
location cLed::getPreferredSize() const {
|
||||
return {ledRects[0][0].width(), ledRects[0][0].height()};
|
||||
int width = ledRects[0][0].width();
|
||||
if(!getText().empty()){
|
||||
TextStyle style;
|
||||
style.pointSize = textSize;
|
||||
width = text_offset + string_length(getText(), style);
|
||||
}
|
||||
return {width, ledRects[0][0].height()};
|
||||
}
|
||||
|
Reference in New Issue
Block a user