Changeset 3344 in webkit
- Timestamp:
- Jan 16, 2003, 6:25:09 PM (22 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog-2003-10-25
r3343 r3344 1 2003-01-16 Richard Williamson <rjw@apple.com> 2 3 Fixed 3148932. Account for zero width characters 4 in <pre> fixed-width optimization. 5 6 Reviewed by hyatt. 7 8 * khtml/rendering/render_text.cpp: 9 (RenderText::widthFromCache): 10 11 Reviewed by Richard (written by Mike S.) 'Clean' implementations of these 12 functions that were too similar to the Qt implementations. 13 14 * kwq/KWQString.mm: 15 (QString::left): 16 (QString::right): 17 (QString::mid): 18 1 19 2003-01-16 Maciej Stachowiak <mjs@apple.com> 2 20 -
trunk/WebCore/ChangeLog-2005-08-23
r3343 r3344 1 2003-01-16 Richard Williamson <rjw@apple.com> 2 3 Fixed 3148932. Account for zero width characters 4 in <pre> fixed-width optimization. 5 6 Reviewed by hyatt. 7 8 * khtml/rendering/render_text.cpp: 9 (RenderText::widthFromCache): 10 11 Reviewed by Richard (written by Mike S.) 'Clean' implementations of these 12 functions that were too similar to the Qt implementations. 13 14 * kwq/KWQString.mm: 15 (QString::left): 16 (QString::right): 17 (QString::mid): 18 1 19 2003-01-16 Maciej Stachowiak <mjs@apple.com> 2 20 -
trunk/WebCore/khtml/rendering/render_text.cpp
r3250 r3344 816 816 { 817 817 if (m_monospaceCharacterWidth != 0){ 818 return len * m_monospaceCharacterWidth; 818 int i, w = 0; 819 for (i = start; i < start+len; i++){ 820 int dir = str->s[i].direction(); 821 if (dir != QChar::DirNSM && dir != QChar::DirBN) 822 w += m_monospaceCharacterWidth; 823 } 824 return w; 819 825 } 820 826 821 827 return f->width(str->s, str->l, start, len); 822 828 } 829 #ifdef XXX 830 inline int RenderText::widthFromCache(const Font *f, int start, int len) const 831 { 832 if (m_monospaceCharacterWidth != 0){ 833 return len * m_monospaceCharacterWidth; 834 } 835 836 return f->width(str->s, str->l, start, len); 837 } 838 #endif 839 823 840 #endif 824 841 -
trunk/WebCore/kwq/KWQString.mm
r3321 r3344 1700 1700 1701 1701 QString QString::left(uint len) const 1702 { 1703 if ( isEmpty() ) { 1704 return QString(); 1705 } else if ( len == 0 ) { // ## just for 1.x compat: 1706 return fromLatin1(""); 1707 } else if ( len > dataHandle[0]->_length ) { 1708 return *this; 1709 } else { 1710 QString s( unicode(), len ); 1711 return s; 1712 } 1713 } 1702 { return mid(0, len); } 1703 1714 1704 1715 1705 QString QString::right(uint len) const 1716 { 1717 if ( isEmpty() ) { 1718 return QString(); 1719 } else if ( len == 0 ) { // ## just for 1.x compat: 1720 return fromLatin1(""); 1721 } else { 1722 uint l = dataHandle[0]->_length; 1723 if ( len > l ) 1724 len = l; 1725 QString s( unicode()+(l-len), len ); 1726 return s; 1727 } 1728 } 1729 1730 QString QString::mid(uint index, uint len) const 1731 { 1732 uint slen = dataHandle[0]->_length; 1733 if ( isEmpty() || index >= slen ) { 1734 return QString(); 1735 } else if ( len == 0 ) { // ## just for 1.x compat: 1736 return fromLatin1(""); 1737 } else { 1738 if (dataHandle[0]->_isAsciiValid){ 1739 if ( len > slen-index ) 1740 len = slen - index; 1741 if ( index == 0 && len == dataHandle[0]->_length ) 1742 return *this; 1743 register const char *p = ascii()+index; 1744 QString s( p, len ); 1745 return s; 1746 } 1747 else if (dataHandle[0]->_isUnicodeValid){ 1748 if ( len > slen-index ) 1749 len = slen - index; 1750 if ( index == 0 && len == dataHandle[0]->_length ) 1751 return *this; 1752 register const QChar *p = unicode()+index; 1753 QString s( p, len ); 1754 return s; 1755 } 1756 else 1757 FATAL("invalid character cache"); 1758 } 1759 return QString(); // Never reached, shut the compiler up. 1760 } 1706 { return mid(length() - len, len); } 1707 1708 1709 QString QString::mid(uint start, uint len) const 1710 { 1711 if( dataHandle && *dataHandle) 1712 { 1713 KWQStringData &data = **dataHandle; 1714 1715 if (data._length == 0) 1716 return QString(); 1717 1718 // clip length 1719 if( len > data._length - start ) 1720 len = data._length - start; 1721 1722 if ( index == 0 && len == data._length ) 1723 return *this; 1724 1725 ASSERT( start+len<=data._length ); // range check 1726 1727 // ascii case 1728 if( data._isAsciiValid && data._ascii ) 1729 return QString( &(data._ascii[start]) , len); 1730 1731 // unicode case 1732 else if( data._isUnicodeValid && data._unicode ) 1733 return QString( &(data._unicode[start]), len ); 1734 } 1735 1736 // degenerate case 1737 return null; 1738 } 1739 1761 1740 1762 1741 QString QString::copy() const
Note:
See TracChangeset
for help on using the changeset viewer.