]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmlcell.cpp
using new API (no visual difference)
[wxWidgets.git] / src / html / htmlcell.cpp
index b2db6ded5417907f78408fd291a208da62909254..114097e2fae2d7d956f740a2fd333766bb1c6f3b 100644 (file)
@@ -90,6 +90,8 @@ wxHtmlCell::wxHtmlCell() : wxObject()
     m_Next = NULL;
     m_Parent = NULL;
     m_Width = m_Height = m_Descent = 0;
+    m_ScriptMode = wxHTML_SCRIPT_NORMAL;        // <sub> or <sup> mode
+    m_ScriptBaseline = 0;                       // <sub> or <sup> baseline
     m_CanLiveOnPagebreak = true;
     m_Link = NULL;
 }
@@ -99,6 +101,21 @@ wxHtmlCell::~wxHtmlCell()
     delete m_Link;
 }
 
+// Update the descent value when whe are in a <sub> or <sup>.
+// prevbase is the parent base
+void wxHtmlCell::SetScriptMode(wxHtmlScriptMode mode, long previousBase)
+{
+    m_ScriptMode = mode;
+
+    if (mode == wxHTML_SCRIPT_SUP)
+        m_ScriptBaseline = previousBase - (m_Height + 1) / 2;
+    else if (mode == wxHTML_SCRIPT_SUB)
+        m_ScriptBaseline = previousBase + (m_Height + 1) / 6;
+    else
+        m_ScriptBaseline = 0;
+
+    m_Descent += m_ScriptBaseline;
+}
 
 void wxHtmlCell::OnMouseClick(wxWindow *parent, int x, int y,
                               const wxMouseEvent& event)
@@ -646,8 +663,6 @@ void wxHtmlContainerCell::Layout(int w)
        return;
     }
 
-    wxHtmlCell *cell = m_Cells,
-               *line = m_Cells;
     wxHtmlCell *nextCell;
     long xpos = 0, ypos = m_IndentTop;
     int xdelta = 0, ybasicpos = 0, ydiff;
@@ -694,6 +709,8 @@ void wxHtmlContainerCell::Layout(int w)
     s_width = m_Width - s_indent - ((m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight);
 
     // my own layouting:
+    wxHtmlCell *cell = m_Cells,
+               *line = m_Cells;
     while (cell != NULL)
     {
         switch (m_AlignVer)