diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp | 191 |
1 files changed, 4 insertions, 187 deletions
diff --git a/src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp b/src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp index d80e270b78..5a8a812bfc 100644 --- a/src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp @@ -1,6 +1,4 @@ /* - * This file is part of the DOM implementation for KDE. - * * Copyright (C) 2006 Lars Knoll <lars@trolltech.com> * * This library is free software; you can redistribute it and/or @@ -23,7 +21,6 @@ #include "config.h" #include "TextBreakIterator.h" -#if QT_VERSION >= 0x040400 #include <QtCore/qtextboundaryfinder.h> #include <qdebug.h> @@ -43,7 +40,7 @@ namespace WebCore { TextBreakIterator* wordBreakIterator(const UChar* string, int length) { - if (!string) + if (!string || !length) return 0; if (!iterator) iterator = new QTextBoundaryFinder; @@ -54,7 +51,7 @@ namespace WebCore { TextBreakIterator* characterBreakIterator(const UChar* string, int length) { - if (!string) + if (!string || !length) return 0; if (!iterator) iterator = new QTextBoundaryFinder; @@ -71,7 +68,7 @@ namespace WebCore { TextBreakIterator* lineBreakIterator(const UChar* string, int length) { static QTextBoundaryFinder *iterator = 0; - if (!string) + if (!string || !length) return 0; if (!iterator) iterator = new QTextBoundaryFinder; @@ -82,7 +79,7 @@ namespace WebCore { TextBreakIterator* sentenceBreakIterator(const UChar* string, int length) { - if (!string) + if (!string || !length) return 0; if (!iterator) iterator = new QTextBoundaryFinder; @@ -132,183 +129,3 @@ namespace WebCore { } } -#else -#include <qtextlayout.h> - -namespace WebCore { - - class TextBreakIterator { - public: - virtual int first() = 0; - virtual int next() = 0; - virtual int previous() = 0; - inline int following(int pos) - { - currentPos = pos; - return next(); - } - inline int preceding(int pos) - { - currentPos = pos; - return previous(); - } - int currentPos; - const UChar *string; - int length; - }; - - class WordBreakIteratorQt : public TextBreakIterator { - public: - virtual int first(); - virtual int next(); - virtual int previous(); - }; - - class CharBreakIteratorQt : public TextBreakIterator { - public: - virtual int first(); - virtual int next(); - virtual int previous(); - QTextLayout layout; - }; - - int WordBreakIteratorQt::first() - { - currentPos = 0; - return currentPos; - } - - int WordBreakIteratorQt::next() - { - if (currentPos >= length) { - currentPos = -1; - return currentPos; - } - bool haveSpace = false; - while (currentPos < length) { - if (haveSpace && !QChar(string[currentPos]).isSpace()) - break; - if (QChar(string[currentPos]).isSpace()) - haveSpace = true; - ++currentPos; - } - return currentPos; - } - - int WordBreakIteratorQt::previous() - { - if (currentPos <= 0) { - currentPos = -1; - return currentPos; - } - bool haveSpace = false; - while (currentPos > 0) { - if (haveSpace && !QChar(string[currentPos]).isSpace()) - break; - if (QChar(string[currentPos]).isSpace()) - haveSpace = true; - --currentPos; - } - return currentPos; - } - - int CharBreakIteratorQt::first() - { - currentPos = 0; - return currentPos; - } - - int CharBreakIteratorQt::next() - { - if (currentPos >= length) - return -1; - currentPos = layout.nextCursorPosition(currentPos); - return currentPos; - } - - int CharBreakIteratorQt::previous() - { - if (currentPos <= 0) - return -1; - currentPos = layout.previousCursorPosition(currentPos); - return currentPos; - } - - -TextBreakIterator* wordBreakIterator(const UChar* string, int length) -{ - static WordBreakIteratorQt *iterator = 0; - if (!iterator) - iterator = new WordBreakIteratorQt; - - iterator->string = string; - iterator->length = length; - iterator->currentPos = 0; - - return iterator; -} - -TextBreakIterator* characterBreakIterator(const UChar* string, int length) -{ - static CharBreakIteratorQt *iterator = 0; - if (!iterator) - iterator = new CharBreakIteratorQt; - - iterator->string = string; - iterator->length = length; - iterator->currentPos = 0; - iterator->layout.setText(QString(reinterpret_cast<const QChar*>(string), length)); - - return iterator; -} - -TextBreakIterator* cursorMovementIterator(const UChar* string, int length) -{ - return characterBreakIterator(string, length); -} - -TextBreakIterator* lineBreakIterator(const UChar*, int) -{ - // not yet implemented - return 0; -} - -TextBreakIterator* sentenceBreakIterator(const UChar*, int) -{ - // not yet implemented - return 0; -} - -int textBreakFirst(TextBreakIterator* bi) -{ - return bi->first(); -} - -int textBreakNext(TextBreakIterator* bi) -{ - return bi->next(); -} - -int textBreakPreceding(TextBreakIterator* bi, int pos) -{ - return bi->preceding(pos); -} - -int textBreakFollowing(TextBreakIterator* bi, int pos) -{ - return bi->following(pos); -} - -int textBreakCurrent(TextBreakIterator* bi) -{ - return bi->currentPos; -} - -bool isTextBreak(TextBreakIterator*, int) -{ - return true; -} - -} - -#endif |