Add a truncation variable to text run boxes that will eventually be used to know...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 15 Jun 2004 08:01:43 +0000 (08:01 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 15 Jun 2004 08:01:43 +0000 (08:01 +0000)
rendering.

        Reviewed by darin

        * khtml/rendering/render_text.cpp:
        (RenderText::clearTextOverflowTruncation):
        * khtml/rendering/render_text.h:
        (khtml::InlineTextBox:::InlineRunBox):
        (khtml::InlineTextBox::clearTruncation):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@6849 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/rendering/render_text.cpp
WebCore/khtml/rendering/render_text.h

index b0671e0..39f7bac 100644 (file)
@@ -1,3 +1,16 @@
+2004-06-15  David Hyatt  <hyatt@apple.com>
+
+       Add a truncation variable to text run boxes that will eventually be used to know how to cut out some of the glyphs when
+       rendering.
+       
+        Reviewed by darin
+
+        * khtml/rendering/render_text.cpp:
+        (RenderText::clearTextOverflowTruncation):
+        * khtml/rendering/render_text.h:
+        (khtml::InlineTextBox:::InlineRunBox):
+        (khtml::InlineTextBox::clearTruncation):
+
 2004-06-14  Darin Adler  <darin@apple.com>
 
         Reviewed by Maciej.
index 3eb2793..c77b682 100644 (file)
@@ -1464,6 +1464,9 @@ InlineBox *RenderText::inlineBox(long offset)
 
 void RenderText::clearTextOverflowTruncation()
 {
+    // Walk our text boxes and clear any truncation bits that might be set.
+    for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox())
+        box->clearTruncation();
 }
    
 RenderTextFragment::RenderTextFragment(DOM::NodeImpl* _node, DOM::DOMStringImpl* _str,
index 169ce30..112dd44 100644 (file)
@@ -43,6 +43,9 @@ namespace DOM {
 // Define a constant for soft hyphen's unicode value.
 #define SOFT_HYPHEN 173
 
+const int cNoTruncation = -1;
+const int cFullTruncation = -2;
+
 namespace khtml
 {
     class RenderText;
@@ -58,6 +61,7 @@ public:
         m_len = 0;
         m_reversed = false;
         m_toAdd = 0;
+        m_truncation = cNoTruncation;
     }
     
     InlineTextBox* nextTextBox() const { return static_cast<InlineTextBox*>(nextLineBox()); }
@@ -75,6 +79,8 @@ public:
     virtual void extractLine();
     virtual void attachLine();
 
+    void clearTruncation() { m_truncation = cNoTruncation; }
+
     // Overloaded new operator.  Derived classes must override operator new
     // in order to allocate out of the RenderArena.
     void* operator new(size_t sz, RenderArena* renderArena) throw();    
@@ -112,6 +118,9 @@ public:
     int m_start;
     unsigned short m_len;
     
+    int m_truncation; // Where to truncate when text overflow is applied.  We use special constants to
+                      // denote no truncation (the whole run paints) and full truncation (nothing paints at all).
+
     bool m_reversed : 1;
     int m_toAdd : 14; // for justified text
 private:
@@ -217,7 +226,7 @@ public:
     virtual InlineBox *inlineBox(long offset);
     
     void clearTextOverflowTruncation();
-
+    
 #if APPLE_CHANGES
     int widthFromCache(const Font *, int start, int len) const;
     bool shouldUseMonospaceCache(const Font *) const;