]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/m_layout.cpp
submenu preparation in two methods encapsulated
[wxWidgets.git] / src / html / m_layout.cpp
index c026d8cabb522448e283901dfabd8606822e2c00..e042da6e6a584bb9747eb548a5434151019b7200 100644 (file)
 
 #include "wx/defs.h"
 #if wxUSE_HTML && wxUSE_STREAMS
-#ifdef __BORDLANDC__
+#ifdef __BORLANDC__
 #pragma hdrstop
 #endif
 
 #ifndef WXPRECOMP
-#include "wx/wx.h"
 #endif
 
 
@@ -36,8 +35,8 @@ TAG_HANDLER_BEGIN(P, "P")
 
     TAG_HANDLER_PROC(tag)
     {
-        if (m_WParser->GetContainer()->GetFirstCell() != NULL) 
-           {
+        if (m_WParser->GetContainer()->GetFirstCell() != NULL)
+        {
             m_WParser->CloseContainer();
             m_WParser->OpenContainer();
         }
@@ -56,7 +55,7 @@ TAG_HANDLER_BEGIN(BR, "BR")
     {
         int al = m_WParser->GetContainer()->GetAlignHor();
         wxHtmlContainerCell *c;
-    
+
         m_WParser->CloseContainer();
         c = m_WParser->OpenContainer();
         c->SetAlignHor(al);
@@ -77,21 +76,21 @@ TAG_HANDLER_BEGIN(CENTER, "CENTER")
         wxHtmlContainerCell *c = m_WParser->GetContainer();
 
         m_WParser->SetAlign(wxHTML_ALIGN_CENTER);
-        if (c->GetFirstCell() != NULL) 
-           {
+        if (c->GetFirstCell() != NULL)
+        {
             m_WParser->CloseContainer();
             m_WParser->OpenContainer();
         }
         else
             c->SetAlignHor(wxHTML_ALIGN_CENTER);
 
-        if (tag.HasEnding()) 
-           {
+        if (tag.HasEnding())
+        {
             ParseInner(tag);
 
             m_WParser->SetAlign(old);
-            if (c->GetFirstCell() != NULL) 
-               {
+            if (c->GetFirstCell() != NULL)
+            {
                 m_WParser->CloseContainer();
                 m_WParser->OpenContainer();
             }
@@ -113,16 +112,16 @@ TAG_HANDLER_BEGIN(DIV, "DIV")
     {
         int old = m_WParser->GetAlign();
         wxHtmlContainerCell *c = m_WParser->GetContainer();
-        if (c->GetFirstCell() != NULL) 
-           {
+        if (c->GetFirstCell() != NULL)
+        {
             m_WParser->CloseContainer();
             m_WParser->OpenContainer();
             c = m_WParser->GetContainer();
             c->SetAlign(tag);
             m_WParser->SetAlign(c->GetAlignHor());
         }
-        else 
-           {
+        else
+        {
             c->SetAlign(tag);
             m_WParser->SetAlign(c->GetAlignHor());
         }
@@ -130,8 +129,8 @@ TAG_HANDLER_BEGIN(DIV, "DIV")
         ParseInner(tag);
 
         m_WParser->SetAlign(old);
-        if (c->GetFirstCell() != NULL) 
-           {
+        if (c->GetFirstCell() != NULL)
+        {
             m_WParser->CloseContainer();
             m_WParser->OpenContainer();
         }
@@ -150,16 +149,14 @@ TAG_HANDLER_BEGIN(TITLE, "TITLE")
 
     TAG_HANDLER_PROC(tag)
     {
-        if (m_WParser->GetWindow()) 
-           {
+        if (m_WParser->GetWindow())
+        {
             wxHtmlWindow *wfr = (wxHtmlWindow*)(m_WParser->GetWindow());
-            if (wfr) 
-               {
-                wxString title = "";
-                wxString *src = m_WParser->GetSource();
-
-                for (int i = tag.GetBeginPos(); i < tag.GetEndPos1(); i++) title += (*src)[(unsigned int) i];
-                wfr->OnSetTitle(title);
+            if (wfr)
+            {
+                const wxString& src = *m_WParser->GetSource();
+                wfr->OnSetTitle(src.Mid(tag.GetBeginPos(), 
+                                        tag.GetEndPos1()-tag.GetBeginPos()));
             }
         }
         return TRUE;
@@ -174,37 +171,23 @@ TAG_HANDLER_BEGIN(BODY, "BODY")
 
     TAG_HANDLER_PROC(tag)
     {
-        unsigned long tmp;
         wxColour clr;
 
-        if (tag.HasParam(wxT("TEXT"))) 
-           {
-            if (tag.ScanParam(wxT("TEXT"), wxT("#%lX"), &tmp) == 1) 
-               {
-                clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
-                m_WParser->SetActualColor(clr);
-                m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr));
-            }
-       }
-
-        if (tag.HasParam(wxT("LINK"))) 
-           {
-            if (tag.ScanParam(wxT("LINK"), wxT("#%lX"), &tmp) == 1) 
-               {
-                clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
-                m_WParser->SetLinkColor(clr);
-           }
+        if (tag.GetParamAsColour(wxT("TEXT"), &clr))
+        {
+            m_WParser->SetActualColor(clr);
+            m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr));
         }
 
-        if (tag.HasParam(wxT("BGCOLOR"))) 
-           {
-            if (tag.ScanParam(wxT("BGCOLOR"), wxT("#%lX"), &tmp) == 1) 
-               {
-                clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
-                m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr, wxHTML_CLR_BACKGROUND));
-                if (m_WParser->GetWindow() != NULL)
-                    m_WParser->GetWindow()->SetBackgroundColour(clr);
-           }
+        if (tag.GetParamAsColour(wxT("LINK"), &clr))
+            m_WParser->SetLinkColor(clr);
+
+        if (tag.GetParamAsColour(wxT("BGCOLOR"), &clr))
+        {
+            m_WParser->GetContainer()->InsertCell(
+                new wxHtmlColourCell(clr, wxHTML_CLR_BACKGROUND));
+            if (m_WParser->GetWindow() != NULL)
+                m_WParser->GetWindow()->SetBackgroundColour(clr);
         }
         return FALSE;
     }
@@ -218,16 +201,16 @@ TAG_HANDLER_BEGIN(BLOCKQUOTE, "BLOCKQUOTE")
     TAG_HANDLER_PROC(tag)
     {
         wxHtmlContainerCell *c;
-    
+
         m_WParser->CloseContainer();
         c = m_WParser->OpenContainer();
-    
-           if (c->GetAlignHor() == wxHTML_ALIGN_RIGHT)
+
+        if (c->GetAlignHor() == wxHTML_ALIGN_RIGHT)
             c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_RIGHT);
         else
             c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_LEFT);
-    
-           c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
+
+        c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
         m_WParser->OpenContainer();
         ParseInner(tag);
         c = m_WParser->CloseContainer();
@@ -241,6 +224,14 @@ TAG_HANDLER_END(BLOCKQUOTE)
 
 
 
+// Tag handler for tags that we have to ignore, otherwise non-text data
+// would show up as text:
+TAG_HANDLER_BEGIN(DoNothing, "SCRIPT")
+    TAG_HANDLER_PROC(tag)
+    {
+        return true;
+    }
+TAG_HANDLER_END(DoNothing)
 
 
 
@@ -253,6 +244,7 @@ TAGS_MODULE_BEGIN(Layout)
     TAGS_MODULE_ADD(TITLE)
     TAGS_MODULE_ADD(BODY)
     TAGS_MODULE_ADD(BLOCKQUOTE)
+    TAGS_MODULE_ADD(DoNothing)
 
 TAGS_MODULE_END(Layout)