Changed: Use current scale value instead of asking CViewRenderer

--HG--
branch : experimental-ui-scaling
feature/pipeline-tools
Nimetu 8 years ago
parent 7b0d1cd056
commit 279f67fc2d

@ -326,7 +326,7 @@ namespace NLGUI
CFormatInfo Format; CFormatInfo Format;
public: public:
// build from a string, using the current text context // build from a string, using the current text context
void build(const ucstring &text, NL3D::UTextContext &textContext, uint numSpaces= 0); void build(const ucstring &text, NL3D::UTextContext &textContext, float scale, uint numSpaces= 0);
}; };
typedef std::vector<CWord> TWordVect; typedef std::vector<CWord> TWordVect;
@ -339,7 +339,7 @@ namespace NLGUI
// Clear the line & remove text contexts // Clear the line & remove text contexts
void clear(NL3D::UTextContext &textContext); void clear(NL3D::UTextContext &textContext);
// Add a new word (and its context) in the line + a number of spaces to append at the end of the line // Add a new word (and its context) in the line + a number of spaces to append at the end of the line
void addWord(const ucstring &word, uint numSpaces, const CFormatInfo &wordFormat, float fontWidth, NL3D::UTextContext &textContext); void addWord(const ucstring &word, uint numSpaces, const CFormatInfo &wordFormat, float fontWidth, NL3D::UTextContext &textContext, float scale);
void addWord(const CWord &word, float fontWidth); void addWord(const CWord &word, float fontWidth);
uint getNumWords() const { return (uint)_Words.size(); } uint getNumWords() const { return (uint)_Words.size(); }
CWord &getWord(uint index) { return _Words[index]; } CWord &getWord(uint index) { return _Words[index]; }

@ -1082,10 +1082,10 @@ namespace NLGUI
// Draw a line // Draw a line
if (_Underlined) if (_Underlined)
rVR.drawRotFlipBitmap (_RenderLayer, (sint)floorf(px), y_line, line_width, 1.0f / rVR.getInterfaceScale(), 0, false, rVR.getBlankTextureId(), col); rVR.drawRotFlipBitmap (_RenderLayer, (sint)floorf(px), y_line, line_width, 1.0f / _Scale, 0, false, rVR.getBlankTextureId(), col);
if (_StrikeThrough) if (_StrikeThrough)
rVR.drawRotFlipBitmap (_RenderLayer, (sint)floorf(px), y_line + (_FontHeight / 2), line_width, 1.0f / rVR.getInterfaceScale(), 0, false, rVR.getBlankTextureId(), col); rVR.drawRotFlipBitmap (_RenderLayer, (sint)floorf(px), y_line + (_FontHeight / 2), line_width, 1.0f / _Scale, 0, false, rVR.getBlankTextureId(), col);
// skip word // skip word
px += currWord.Info.StringWidth; px += currWord.Info.StringWidth;
@ -1426,7 +1426,7 @@ namespace NLGUI
linePushed= true; linePushed= true;
} }
// Append to the last line // Append to the last line
_Lines.back()->addWord(ucCurrentWord, 0, wordFormat, _FontWidth, *TextContext); _Lines.back()->addWord(ucCurrentWord, 0, wordFormat, _FontWidth, *TextContext, _Scale);
// reset the word // reset the word
ucCurrentWord = ucstring(""); ucCurrentWord = ucstring("");
} }
@ -1523,7 +1523,7 @@ namespace NLGUI
if(currLine[i].Format!=lineWordFormat) if(currLine[i].Format!=lineWordFormat)
{ {
// add the current lineWord to the line. // add the current lineWord to the line.
_Lines.back()->addWord(lineWord, 0, lineWordFormat, _FontWidth, *TextContext); _Lines.back()->addWord(lineWord, 0, lineWordFormat, _FontWidth, *TextContext, _Scale);
// get new lineWordFormat // get new lineWordFormat
lineWordFormat= currLine[i].Format; lineWordFormat= currLine[i].Format;
// and clear // and clear
@ -1538,7 +1538,7 @@ namespace NLGUI
} }
if(!lineWord.empty()) if(!lineWord.empty())
_Lines.back()->addWord(lineWord, 0, lineWordFormat, _FontWidth, *TextContext); _Lines.back()->addWord(lineWord, 0, lineWordFormat, _FontWidth, *TextContext, _Scale);
// clear // clear
currLine.clear(); currLine.clear();
@ -1699,7 +1699,7 @@ namespace NLGUI
{ {
uint maxNumSpaces = std::max(1U, (uint) (nMaxWidth / _SpaceWidth)); uint maxNumSpaces = std::max(1U, (uint) (nMaxWidth / _SpaceWidth));
CWord spaceWord; // a word with only spaces in it CWord spaceWord; // a word with only spaces in it
spaceWord.build (ucstring (""), *TextContext, maxNumSpaces); spaceWord.build (ucstring (""), *TextContext, _Scale, maxNumSpaces);
spaceWord.Format= wordFormat; spaceWord.Format= wordFormat;
_Lines.push_back(TLineSPtr(new CLine)); _Lines.push_back(TLineSPtr(new CLine));
_Lines.back()->addWord(spaceWord, _FontWidth); _Lines.back()->addWord(spaceWord, _FontWidth);
@ -1728,7 +1728,7 @@ namespace NLGUI
currChar = std::max((uint) 1, currChar); // must fit at least one character otherwise there's an infinite loop currChar = std::max((uint) 1, currChar); // must fit at least one character otherwise there's an infinite loop
wordValue = _Text.substr(spaceEnd, currChar); wordValue = _Text.substr(spaceEnd, currChar);
CWord word; CWord word;
word.build(wordValue, *TextContext, numSpaces); word.build(wordValue, *TextContext, _Scale, numSpaces);
word.Format= wordFormat; word.Format= wordFormat;
_Lines.push_back(TLineSPtr(new CLine)); _Lines.push_back(TLineSPtr(new CLine));
float roomForSpaces = (float) nMaxWidth - word.Info.StringWidth; float roomForSpaces = (float) nMaxWidth - word.Info.StringWidth;
@ -1763,7 +1763,7 @@ namespace NLGUI
if (!wordValue.empty() || numSpaces != 0) if (!wordValue.empty() || numSpaces != 0)
{ {
CWord word; CWord word;
word.build(wordValue, *TextContext, numSpaces); word.build(wordValue, *TextContext, _Scale, numSpaces);
word.Format= wordFormat; word.Format= wordFormat;
// update line width // update line width
_Lines.back()->addWord(word, _FontWidth); _Lines.back()->addWord(word, _FontWidth);
@ -1883,7 +1883,7 @@ namespace NLGUI
_Lines.pop_back(); _Lines.pop_back();
CViewText::CLine *endLine = new CViewText::CLine; CViewText::CLine *endLine = new CViewText::CLine;
CViewText::CWord w; CViewText::CWord w;
w.build(string("..."), *TextContext); w.build(string("..."), *TextContext, _Scale);
endLine->addWord(w, _FontWidth); endLine->addWord(w, _FontWidth);
_Lines.push_back(TLineSPtr(endLine)); _Lines.push_back(TLineSPtr(endLine));
} }
@ -2280,7 +2280,7 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
// Tool fct : From a word and a x coordinate, give the matching character index // Tool fct : From a word and a x coordinate, give the matching character index
static uint getCharacterIndex(const ucstring &textValue, float x, NL3D::UTextContext &textContext) static uint getCharacterIndex(const ucstring &textValue, float x, NL3D::UTextContext &textContext, float scale)
{ {
float px = 0.f; float px = 0.f;
float sw; float sw;
@ -2292,7 +2292,7 @@ namespace NLGUI
// get character width // get character width
singleChar[0] = textValue[i]; singleChar[0] = textValue[i];
si = textContext.getStringInfo(singleChar); si = textContext.getStringInfo(singleChar);
sw = si.StringWidth / CViewRenderer::getInstance()->getInterfaceScale(); sw = si.StringWidth / scale;
px += sw; px += sw;
// the character is at the i - 1 position // the character is at the i - 1 position
if (px > x) if (px > x)
@ -2390,7 +2390,7 @@ namespace NLGUI
else else
{ {
// the coord is in the word itself // the coord is in the word itself
index = charPos + currWord.NumSpaces + getCharacterIndex(currWord.Text, (float) x - (px + spacesWidth), *TextContext); index = charPos + currWord.NumSpaces + getCharacterIndex(currWord.Text, (float) x - (px + spacesWidth), *TextContext, _Scale);
cursorAtPreviousLineEnd = false; cursorAtPreviousLineEnd = false;
return; return;
} }
@ -2415,7 +2415,7 @@ namespace NLGUI
index = 0; index = 0;
return; return;
} }
index = getCharacterIndex(_Text, (float) x, *TextContext); index = getCharacterIndex(_Text, (float) x, *TextContext, _Scale);
return; return;
} }
} }
@ -2516,10 +2516,10 @@ namespace NLGUI
} }
// *************************************************************************** // ***************************************************************************
void CViewText::CLine::addWord(const ucstring &text, uint numSpaces, const CFormatInfo &wordFormat, float fontWidth, NL3D::UTextContext &textContext) void CViewText::CLine::addWord(const ucstring &text, uint numSpaces, const CFormatInfo &wordFormat, float fontWidth, NL3D::UTextContext &textContext, float scale)
{ {
CWord word; CWord word;
word.build(text, textContext, numSpaces); word.build(text, textContext, scale, numSpaces);
word.Format= wordFormat; word.Format= wordFormat;
addWord(word, fontWidth); addWord(word, fontWidth);
} }
@ -2563,13 +2563,13 @@ namespace NLGUI
} }
// *************************************************************************** // ***************************************************************************
void CViewText::CWord::build(const ucstring &text, NL3D::UTextContext &textContext, uint numSpaces) void CViewText::CWord::build(const ucstring &text, NL3D::UTextContext &textContext, float scale, uint numSpaces)
{ {
Text = text; Text = text;
NumSpaces = numSpaces; NumSpaces = numSpaces;
Index = textContext.textPush(text); Index = textContext.textPush(text);
Info = textContext.getStringInfo(Index); Info = textContext.getStringInfo(Index);
Info.StringWidth /= CViewRenderer::getInstance()->getInterfaceScale(); Info.StringWidth /= scale;
} }
// *************************************************************************** // ***************************************************************************

Loading…
Cancel
Save