summaryrefslogtreecommitdiff
path: root/xml2cmp/source/xcd/cr_html.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xml2cmp/source/xcd/cr_html.cxx')
-rw-r--r--xml2cmp/source/xcd/cr_html.cxx268
1 files changed, 268 insertions, 0 deletions
diff --git a/xml2cmp/source/xcd/cr_html.cxx b/xml2cmp/source/xcd/cr_html.cxx
new file mode 100644
index 000000000000..6796f320930c
--- /dev/null
+++ b/xml2cmp/source/xcd/cr_html.cxx
@@ -0,0 +1,268 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <fstream>
+#include "cr_html.hxx"
+#include "xmltree.hxx"
+#include "../support/syshelp.hxx"
+
+
+
+
+char C_sHtmlFileHeader1[] =
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n"
+ "<HTML>\n"
+ "<HEAD>\n"
+ " <TITLE>";
+
+char C_sHtmlFileHeader2[] =
+ "</TITLE>\n"
+ " <META NAME=\"GENERATOR\" CONTENT=\"xml2cmp\">\n"
+ "</HEAD>\n"
+ "<BODY BGCOLOR=\"#ffffff\">\n<P><BR></P>";
+
+
+char C_sHtmlFileFoot[] = "</BODY>\n</HTML>\n";
+
+
+HtmlCreator::HtmlCreator( const char * i_pOutputFileName,
+ const XmlElement & i_rDocument,
+ const Simstr & i_sIDL_BaseDirectory )
+ : aFile(i_pOutputFileName, std::ios::out
+#if defined(WNT) || defined(OS2)
+ | std::ios::binary
+#endif
+ ),
+ rDocument(i_rDocument),
+ sIdl_BaseDirectory(i_sIDL_BaseDirectory)
+{
+ if ( !aFile )
+ {
+ std::cerr << "Error: " << i_pOutputFileName << " could not be created." << std::endl;
+ exit(0);
+ }
+}
+
+HtmlCreator::~HtmlCreator()
+{
+ aFile.close();
+}
+
+void
+HtmlCreator::Run()
+{
+ WriteStr( C_sHtmlFileHeader1 );
+ WriteStr( "ModuleDescription" );
+ WriteStr( C_sHtmlFileHeader2 );
+
+ rDocument.Write2Html(*this);
+
+ WriteStr( "<P><BR><BR></P>\n" );
+ WriteStr( C_sHtmlFileFoot );
+}
+
+void
+HtmlCreator::StartTable()
+{
+ WriteStr( "<P><BR></P>\n" );
+ WriteStr(
+ "<TABLE WIDTH=95% BORDER=1 CELLSPACING=0 CELLPADDING=4>\n"
+ " <TBODY>\n" );
+}
+
+void
+HtmlCreator::FinishTable()
+{
+ WriteStr( " </TBODY>\n"
+ "</TABLE>\n\n" );
+}
+
+void
+HtmlCreator::StartBigCell( const char * i_sTitle )
+{
+ WriteStr( "<TR><TD COLSPAN=2>\n"
+ "<H4><BR>" );
+ WriteStr( i_sTitle );
+ WriteStr( "</H4>\n" );
+
+}
+
+void
+HtmlCreator::FinishBigCell()
+{
+ WriteStr( "</TD><TR>\n" );
+}
+
+void
+HtmlCreator::Write_SglTextElement( const SglTextElement & i_rElement,
+ bool i_bStrong )
+{
+ StartRow();
+
+ WriteElementName( i_rElement.Name(), i_bStrong );
+
+ StartCell( "77%");
+ if (i_bStrong)
+ {
+ WriteStr( "<H4><A NAME=\"" );
+ unsigned nLen = strlen(i_rElement.Data());
+ if ( i_rElement.IsReversedName())
+ {
+ const char * pEnd = strchr(i_rElement.Data(), ' ');
+ nLen = (unsigned)( pEnd - i_rElement.Data() );
+ }
+ aFile.write( i_rElement.Data(), (int) nLen );
+ WriteStr( "\">" );
+ }
+
+ WriteName( aFile, sIdl_BaseDirectory, i_rElement.Data(),
+ i_bStrong ? lt_nolink : i_rElement.LinkType() );
+
+ if (i_bStrong)
+ WriteStr( "</A></H4>" );
+ FinishCell();
+
+ FinishRow();
+}
+
+void
+HtmlCreator::Write_MultiTextElement( const MultipleTextElement & i_rElement )
+{
+ StartRow();
+
+ WriteElementName( i_rElement.Name(), false );
+
+ StartCell( "77%");
+ unsigned i_max = i_rElement.Size();
+ for ( unsigned i = 0; i < i_max; ++i )
+ {
+ if (i > 0)
+ WriteStr( "<BR>\n" );
+ WriteName( aFile, sIdl_BaseDirectory, i_rElement.Data(i), i_rElement.LinkType() );
+ } // end for
+ FinishCell();
+
+ FinishRow();
+}
+
+void
+HtmlCreator::Write_SglText( const Simstr & i_sName,
+ const Simstr & i_sValue )
+{
+ StartRow();
+
+ WriteElementName( i_sName, false );
+
+ StartCell( "77%");
+ WriteStr( i_sValue );
+ FinishCell();
+
+ FinishRow();
+}
+
+void
+HtmlCreator::Write_ReferenceDocu( const Simstr & i_sName,
+ const Simstr & i_sRef,
+ const Simstr & i_sRole,
+ const Simstr & i_sTitle )
+{
+ StartRow();
+
+ StartCell( "23%" );
+ WriteStr(i_sName);
+ FinishCell();
+
+ StartCell( "77%" );
+ if ( !i_sRef.is_empty() )
+ {
+ WriteStr("<A href=\"");
+ WriteStr(i_sRef);
+ WriteStr("\">");
+ if ( !i_sTitle.is_empty() )
+ WriteStr( i_sTitle );
+ else
+ WriteStr(i_sRef);
+ WriteStr("</A><BR>\n");
+ }
+ else if ( !i_sTitle.is_empty() )
+ {
+ WriteStr("Title: ");
+ WriteStr( i_sTitle );
+ WriteStr("<BR>\n");
+ }
+ if ( !i_sRole.is_empty() )
+ {
+ WriteStr("Role: ");
+ WriteStr( i_sRole );
+ }
+ FinishCell();
+
+ FinishRow();
+}
+
+
+void
+HtmlCreator::StartRow()
+{
+ WriteStr( " <TR VALIGN=TOP>\n" );
+}
+
+void
+HtmlCreator::FinishRow()
+{
+ WriteStr( " </TR>\n" );
+}
+
+void
+HtmlCreator::StartCell( const char * i_pWidth)
+{
+ WriteStr( " <TD WIDTH=" );
+ WriteStr( i_pWidth );
+ WriteStr( ">\n <P>" );
+}
+
+void
+HtmlCreator::FinishCell()
+{
+ WriteStr( "</P>\n </TD>\n" );
+}
+
+void
+HtmlCreator::WriteElementName( const Simstr & i_sName,
+ bool i_bStrong )
+{
+ StartCell( "23%" );
+ if (i_bStrong)
+ WriteStr( "<H4>" );
+ WriteStr(i_sName);
+ if (i_bStrong)
+ WriteStr( "</H4>" );
+ FinishCell();
+}
+
+
+