mirror of
https://github.com/edubart/otclient.git
synced 2025-10-19 05:53:26 +02:00
text edit (not finished)
This commit is contained in:
@@ -143,7 +143,9 @@ void Font::renderText(const std::string& text,
|
||||
const Rect& screenCoords,
|
||||
int align,
|
||||
const Color& color,
|
||||
const Point& startInternalPos)
|
||||
const Point& startInternalPos,
|
||||
int cursorPos,
|
||||
const Color& cursorColor)
|
||||
{
|
||||
// prevent glitches from invalid rects
|
||||
if(!screenCoords.isValid())
|
||||
@@ -219,6 +221,17 @@ void Font::renderText(const std::string& text,
|
||||
|
||||
// render glyph
|
||||
g_graphics.drawTexturedRect(glyphScreenCoords, m_texture, glyphTextureCoords, color);
|
||||
|
||||
// render cursor
|
||||
if(i == cursorPos) {
|
||||
Rect cursorRect(glyphScreenCoords.left()-1, glyphScreenCoords.top(), 1, m_glyphHeight);
|
||||
g_graphics.drawFilledRect(cursorRect, cursorColor);
|
||||
}
|
||||
// render cursor after last element
|
||||
else if(cursorPos == textLenght && i == textLenght - 1) {
|
||||
Rect cursorRect(glyphScreenCoords.right()+1, glyphScreenCoords.top(), 1, m_glyphHeight);
|
||||
g_graphics.drawFilledRect(cursorRect, cursorColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -65,7 +65,10 @@ public:
|
||||
const Rect& screenCoords,
|
||||
int align = ALIGN_TOP_LEFT,
|
||||
const Color& color = Color::white,
|
||||
const Point& startInternalPos = Point());
|
||||
const Point& startInternalPos = Point(),
|
||||
int cursorPos = -1,
|
||||
const Color& cursorColor = Color::white);
|
||||
|
||||
|
||||
/// Calculate glyphs positions to use on render, also calculates textBoxSize if wanted
|
||||
Point *calculateGlyphsPositions(const std::string& text, int align = ALIGN_TOP_LEFT, Size *textBoxSize = NULL);
|
||||
@@ -74,7 +77,8 @@ public:
|
||||
Size calculateTextRectSize(const std::string& text);
|
||||
|
||||
const std::string& getName() const { return m_name; }
|
||||
|
||||
int getGlyphHeight() const { return m_glyphHeight; }
|
||||
|
||||
private:
|
||||
void calculateGlyphsWidthsAutomatically(const Size& glyphSize);
|
||||
|
||||
|
26
src/framework/graphics/fonttext.cpp
Normal file
26
src/framework/graphics/fonttext.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
/* The MIT License
|
||||
*
|
||||
* Copyright (c) 2010 OTClient, https://github.com/edubart/otclient
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "fonttext.h"
|
||||
|
53
src/framework/graphics/fonttext.h
Normal file
53
src/framework/graphics/fonttext.h
Normal file
@@ -0,0 +1,53 @@
|
||||
/* The MIT License
|
||||
*
|
||||
* Copyright (c) 2010 OTClient, https://github.com/edubart/otclient
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef FONTTEXT_H
|
||||
#define FONTTEXT_H
|
||||
|
||||
#include "prerequisites.h"
|
||||
#include "font.h"
|
||||
|
||||
class FontText
|
||||
{
|
||||
public:
|
||||
FontText() { }
|
||||
|
||||
void appendCharacter(char c);
|
||||
void appendText(const std::string &text);
|
||||
void erase(bool left);
|
||||
|
||||
void setText(const std::string &text);
|
||||
void setCursorPos(int pos);
|
||||
void setSelection(int start, int end);
|
||||
void setColor(const Color& color);
|
||||
void setSize(const Size& size);
|
||||
void setStartPos();
|
||||
|
||||
private:
|
||||
int m_cursorPos;
|
||||
std::string m_text;
|
||||
Font *m_font;
|
||||
};
|
||||
|
||||
#endif // FONTTEXT_H
|
Reference in New Issue
Block a user