LCOV - code coverage report
Current view: top level - libreoffice/autodoc/source/display/toolkit - htmlfile.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 66 71 93.0 %
Date: 2012-12-27 Functions: 11 11 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <precomp.h>
      21             : #include <toolkit/htmlfile.hxx>
      22             : 
      23             : // NOT FULLY DECLARED SERVICES
      24             : #include <cosv/file.hxx>
      25             : #include <udm/html/htmlitem.hxx>
      26             : 
      27             : namespace
      28             : {
      29             : bool            bUse_OOoFrameDiv = true;
      30           1 : const String    C_sOOoFrameDiv_IdlId("adc-idlref");
      31             : }
      32             : 
      33             : using namespace csi;
      34             : using csi::xml::AnAttribute;
      35             : 
      36           1 : DocuFile_Html::DocuFile_Html()
      37             :     :   sFilePath(),
      38             :         sTitle(),
      39             :         sLocation(),
      40             :         sStyle(),
      41             :         sCssFile(),
      42             :         sCopyright(),
      43             :         aBodyData(),
      44           1 :         aBuffer(60000) // Grows dynamically, when necessary.
      45             : {
      46           1 : }
      47             : 
      48             : void
      49        7831 : DocuFile_Html::SetLocation( const csv::ploc::Path & i_rFilePath )
      50             : {
      51        7831 :     StreamLock sPath(1000);
      52        7831 :     i_rFilePath.Get( sPath() );
      53             : 
      54        7831 :     sFilePath = sPath().c_str();
      55        7831 : }
      56             : 
      57             : void
      58        7831 : DocuFile_Html::SetTitle( const char * i_sTitle )
      59             : {
      60        7831 :     sTitle = i_sTitle;
      61        7831 : }
      62             : 
      63             : void
      64        7831 : DocuFile_Html::SetRelativeCssPath( const char * i_sCssFile_relativePath )
      65             : {
      66        7831 :     sCssFile = i_sCssFile_relativePath;
      67        7831 : }
      68             : 
      69             : void
      70           1 : DocuFile_Html::SetCopyright( const char * i_sCopyright )
      71             : {
      72           1 :     sCopyright = i_sCopyright;
      73           1 : }
      74             : 
      75             : void
      76        7831 : DocuFile_Html::EmptyBody()
      77             : {
      78        7831 :     aBodyData.SetContent(0);
      79             : 
      80        7831 :      if (bUse_OOoFrameDiv)
      81             :      {
      82             :         // Insert <div> tag to allow better formatting for OOo.
      83             :         aBodyData
      84        7831 :             << new xml::XmlCode("<div id=\"")
      85       15662 :             << new xml::XmlCode(C_sOOoFrameDiv_IdlId)
      86       15662 :             << new xml::XmlCode("\">\n\n");
      87             :      }
      88             : 
      89             :     aBodyData
      90       15662 :         >> *new html::Label( "_top_" )
      91        7831 :         << " ";
      92        7831 : }
      93             : 
      94             : bool
      95        7831 : DocuFile_Html::CreateFile()
      96             : {
      97        7831 :     csv::File aFile(sFilePath, csv::CFM_CREATE);
      98        7831 :     if (NOT aFile.open())
      99             :     {
     100           0 :         Cerr() << "Can't create file " << sFilePath << "." << Endl();
     101           0 :         return false;
     102             :     }
     103             : 
     104        7831 :     WriteHeader(aFile);
     105        7831 :     WriteBody(aFile);
     106             : 
     107             :     // Write end
     108             :     static const char sCompletion[] = "\n</html>\n";
     109        7831 :     aFile.write( sCompletion );
     110             : 
     111        7831 :     aFile.close();
     112        7831 :     Cout() << '.' << Flush();
     113        7831 :     return true;
     114             : }
     115             : 
     116             : 
     117             : void
     118        7831 : DocuFile_Html::WriteHeader( csv::File & io_aFile )
     119             : {
     120        7831 :     aBuffer.reset();
     121             : 
     122             :     static const char s1[] =
     123             :         "<html>\n<head>\n<title>";
     124             :     static const char s2[] =
     125             :         "</title>\n"
     126             :         "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
     127             : 
     128        7831 :     aBuffer.write( s1 );
     129        7831 :     aBuffer.write( sTitle );
     130        7831 :     aBuffer.write( s2 );
     131             : 
     132             : 
     133        7831 :     if (NOT sCssFile.empty())
     134             :     {
     135             :         static const char s3[] =
     136             :             "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
     137             :         static const char s4[] =
     138             :             "\">\n";
     139             : 
     140        7831 :         aBuffer.write(s3);
     141        7831 :         aBuffer.write(sCssFile);
     142        7831 :         aBuffer.write(s4);
     143             :     }
     144             : 
     145        7831 :     if (NOT sStyle.empty())
     146             :     {
     147             :         static const char s5[] =
     148             :             "<style>";
     149             :         static const char s6[] =
     150             :             "</style>\n";
     151             : 
     152           0 :         aBuffer.write(s5);
     153           0 :         aBuffer.write(sStyle);
     154           0 :         aBuffer.write(s6);
     155             :     }
     156             : 
     157             :     static const char s7[] =
     158             :         "</head>\n";
     159        7831 :     aBuffer.write(s7);
     160             : 
     161        7831 :     io_aFile.write(aBuffer.c_str(), aBuffer.size());
     162        7831 : }
     163             : 
     164             : void
     165        7831 : DocuFile_Html::WriteBody( csv::File & io_aFile )
     166             : {
     167        7831 :     aBuffer.reset();
     168             : 
     169             :     aBodyData
     170       15662 :         >> *new html::Link( "#_top_" )
     171        7831 :                 << "Top of Page";
     172             : 
     173        7831 :     if ( sCopyright.length() > 0 )
     174             :     {
     175             :         aBodyData
     176        7831 :             << new xml::XmlCode("<hr size=\"3\">");
     177             : 
     178             :         aBodyData
     179        7831 :             >> *new html::Paragraph
     180       23493 :                     << new html::ClassAttr( "copyright" )
     181       15662 :                     << new xml::AnAttribute( "align", "center" )
     182       15662 :                     << new xml::XmlCode(sCopyright);
     183             :     }
     184             : 
     185        7831 :      if (bUse_OOoFrameDiv)
     186             :     {
     187             :         // Insert <div> tag to allow better formatting for OOo.
     188             :         aBodyData
     189        7831 :             << new xml::XmlCode("\n</div> <!-- id=\"")
     190       15662 :             << new xml::XmlCode(C_sOOoFrameDiv_IdlId)
     191       15662 :             << new xml::XmlCode("\" -->\n");
     192             :     }
     193             : 
     194        7831 :     aBodyData.WriteOut(aBuffer);
     195        7831 :     io_aFile.write(aBuffer.c_str(), aBuffer.size());
     196        7834 : }
     197             : 
     198             : 
     199             : 
     200             : 
     201             : 
     202             : 
     203             : 
     204             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10