forked from mirror/openmw-tes3mp
Added description below the cell id (name if exists, or region)
This commit is contained in:
parent
7640875f9d
commit
0cccdfd114
3 changed files with 25 additions and 5 deletions
|
@ -105,6 +105,9 @@ bool CSVRender::PagedWorldspaceWidget::adjustCells()
|
||||||
CSVRender::TextOverlay *textDisp = new CSVRender::TextOverlay(entity, getCamera(), iter->getId(mWorldspace));
|
CSVRender::TextOverlay *textDisp = new CSVRender::TextOverlay(entity, getCamera(), iter->getId(mWorldspace));
|
||||||
textDisp->enable(true);
|
textDisp->enable(true);
|
||||||
textDisp->setCaption(iter->getId(mWorldspace));
|
textDisp->setCaption(iter->getId(mWorldspace));
|
||||||
|
std::string desc = cells.getRecord(index).get().mName;
|
||||||
|
if(desc == "") desc = cells.getRecord(index).get().mRegion;
|
||||||
|
textDisp->setDesc(desc);
|
||||||
textDisp->update();
|
textDisp->update();
|
||||||
mTextOverlays.push_back(textDisp);
|
mTextOverlays.push_back(textDisp);
|
||||||
|
|
||||||
|
|
|
@ -233,6 +233,15 @@ void TextOverlay::setCaption(const Ogre::String& text)
|
||||||
mElement->setCaption(text);
|
mElement->setCaption(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextOverlay::setDesc(const Ogre::String& text)
|
||||||
|
{
|
||||||
|
if(mDesc == text)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mDesc = text;
|
||||||
|
mElement->setCaption(mCaption + ((text == "") ? "" : ("\n" + text)));
|
||||||
|
}
|
||||||
|
|
||||||
Ogre::FontPtr TextOverlay::getFont()
|
Ogre::FontPtr TextOverlay::getFont()
|
||||||
{
|
{
|
||||||
return mFont;
|
return mFont;
|
||||||
|
@ -240,15 +249,19 @@ Ogre::FontPtr TextOverlay::getFont()
|
||||||
|
|
||||||
int TextOverlay::textWidth()
|
int TextOverlay::textWidth()
|
||||||
{
|
{
|
||||||
float textWidth = 0;
|
float captionWidth = 0;
|
||||||
|
float descWidth = 0;
|
||||||
|
|
||||||
// NOTE: assumed fixed width font, i.e. no compensation for narrow glyphs
|
// NOTE: assumed fixed width font, i.e. no compensation for narrow glyphs
|
||||||
for(Ogre::String::const_iterator i = mCaption.begin(); i < mCaption.end(); ++i)
|
for(Ogre::String::const_iterator i = mCaption.begin(); i < mCaption.end(); ++i)
|
||||||
textWidth += getFont()->getGlyphAspectRatio(*i);
|
captionWidth += getFont()->getGlyphAspectRatio(*i);
|
||||||
|
for(Ogre::String::const_iterator i = mDesc.begin(); i < mDesc.end(); ++i)
|
||||||
|
descWidth += getFont()->getGlyphAspectRatio(*i);
|
||||||
|
|
||||||
textWidth *= fontHeight();
|
captionWidth *= fontHeight();
|
||||||
|
descWidth *= fontHeight();
|
||||||
|
|
||||||
return (int) textWidth;
|
return (int) std::max(captionWidth, descWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextOverlay::fontHeight()
|
int TextOverlay::fontHeight()
|
||||||
|
@ -278,8 +291,10 @@ void TextOverlay::update()
|
||||||
float viewportWidth = std::max(overlayMgr.getViewportWidth(), 1); // zero at the start
|
float viewportWidth = std::max(overlayMgr.getViewportWidth(), 1); // zero at the start
|
||||||
float viewportHeight = std::max(overlayMgr.getViewportHeight(), 1); // zero at the start
|
float viewportHeight = std::max(overlayMgr.getViewportHeight(), 1); // zero at the start
|
||||||
|
|
||||||
int width = 2*fontHeight()/3 + textWidth() + fontHeight()/3; // 2 = fudge factor
|
int width = fontHeight()/3 + textWidth() + fontHeight()/3;
|
||||||
int height = fontHeight()/3 + fontHeight() + fontHeight()/3;
|
int height = fontHeight()/3 + fontHeight() + fontHeight()/3;
|
||||||
|
if(mDesc != "")
|
||||||
|
height = fontHeight()/3 + 2*fontHeight() + fontHeight()/3;
|
||||||
|
|
||||||
float relTextWidth = width / viewportWidth;
|
float relTextWidth = width / viewportWidth;
|
||||||
float relTextHeight = height / viewportHeight;
|
float relTextHeight = height / viewportHeight;
|
||||||
|
|
|
@ -25,6 +25,7 @@ namespace CSVRender
|
||||||
Ogre::OverlayContainer* mContainer;
|
Ogre::OverlayContainer* mContainer;
|
||||||
Ogre::TextAreaOverlayElement* mElement;
|
Ogre::TextAreaOverlayElement* mElement;
|
||||||
Ogre::String mCaption;
|
Ogre::String mCaption;
|
||||||
|
Ogre::String mDesc;
|
||||||
|
|
||||||
const Ogre::MovableObject* mObj;
|
const Ogre::MovableObject* mObj;
|
||||||
const Ogre::Camera* mCamera;
|
const Ogre::Camera* mCamera;
|
||||||
|
@ -50,6 +51,7 @@ namespace CSVRender
|
||||||
void enable(bool enable);
|
void enable(bool enable);
|
||||||
bool isEnabled();
|
bool isEnabled();
|
||||||
void setCaption(const Ogre::String& text);
|
void setCaption(const Ogre::String& text);
|
||||||
|
void setDesc(const Ogre::String& text);
|
||||||
void update();
|
void update();
|
||||||
QRect container();
|
QRect container();
|
||||||
Ogre::String getCaption() { return mCaption; } // FIXME: debug
|
Ogre::String getCaption() { return mCaption; } // FIXME: debug
|
||||||
|
|
Loading…
Reference in a new issue