aboutsummaryrefslogtreecommitdiff
path: root/graphics/macgui/mactext.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2017-08-03 22:50:01 +0200
committerEugene Sandulenko2017-08-04 21:54:20 +0200
commit23649e8d87bf2c1d8c93fa0c4a6502285b258429 (patch)
treebb1e573839ee5fbee1db80ae21b61c7136ce50ce /graphics/macgui/mactext.cpp
parent66f59aa893449596298a2cee1d8f761bcf8cc9bd (diff)
downloadscummvm-rg350-23649e8d87bf2c1d8c93fa0c4a6502285b258429.tar.gz
scummvm-rg350-23649e8d87bf2c1d8c93fa0c4a6502285b258429.tar.bz2
scummvm-rg350-23649e8d87bf2c1d8c93fa0c4a6502285b258429.zip
GRAPHICS: MACGUI: Initial code for copying selection to clipboard
Diffstat (limited to 'graphics/macgui/mactext.cpp')
-rw-r--r--graphics/macgui/mactext.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index b3942f0d38..f2366790ef 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -492,4 +492,80 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
}
}
+Common::String MacText::getTextChunk(int startRow, int startCol, int endRow, int endCol, bool formatted) {
+ Common::String res;
+
+ CLIP(startRow, 0, (int)_textLines.size() - 1);
+ CLIP(endRow, 0, (int)_textLines.size() - 1);
+
+ for (int i = startRow; i <= endRow; i++) {
+ if (i == startRow && i == endRow) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ if (startCol <= 0) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ if (endCol <= _textLines[i].chunks[chunk].text.size())
+ res += _textLines[i].chunks[chunk].text;
+ else
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str(), endCol);
+ } else if (_textLines[i].chunks[chunk].text.size() > startCol) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str() + startCol);
+ }
+
+ startCol -= _textLines[i].chunks[chunk].text.size();
+ endCol -= _textLines[i].chunks[chunk].text.size();
+
+ if (endCol <= 0)
+ break;
+ }
+ } else if (i == startRow && startCol != 0) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ if (startCol <= 0) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ res += _textLines[i].chunks[chunk].text;
+ } else if (_textLines[i].chunks[chunk].text.size() > startCol) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str() + startCol);
+ }
+
+ startCol -= _textLines[i].chunks[chunk].text.size();
+ }
+ } else if (i == endRow) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ if (endCol <= _textLines[i].chunks[chunk].text.size())
+ res += _textLines[i].chunks[chunk].text;
+ else
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str(), endCol);
+
+ endCol -= _textLines[i].chunks[chunk].text.size();
+
+ if (endCol <= 0)
+ break;
+ }
+ } else {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ res += _textLines[i].chunks[chunk].text;
+ }
+
+ res += '\n';
+ }
+ }
+
+ return res;
+}
+
} // End of namespace Graphics