LCOV - code coverage report
Current view: top level - sw/source/filter/html - htmlplug.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 658 0.0 %
Date: 2012-08-25 Functions: 0 12 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 1652 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include <com/sun/star/embed/EmbedStates.hpp>
      30                 :            : #include <com/sun/star/beans/XPropertySet.hpp>
      31                 :            : 
      32                 :            : #include "hintids.hxx"
      33                 :            : #include <rtl/strbuf.hxx>
      34                 :            : #include <svl/urihelper.hxx>
      35                 :            : #include <vcl/svapp.hxx>
      36                 :            : #include <sfx2/frmhtml.hxx>
      37                 :            : #include <sfx2/frmhtmlw.hxx>
      38                 :            : #include <vcl/wrkwin.hxx>
      39                 :            : #include <sot/storage.hxx>
      40                 :            : #include <svx/xoutbmp.hxx>
      41                 :            : #include <editeng/ulspitem.hxx>
      42                 :            : #include <editeng/lrspitem.hxx>
      43                 :            : #include <svtools/htmlkywd.hxx>
      44                 :            : #include <svtools/htmltokn.h>
      45                 :            : #include <SwAppletImpl.hxx>
      46                 :            : #include <fmtornt.hxx>
      47                 :            : #include <fmtfsize.hxx>
      48                 :            : #include <fmtsrnd.hxx>
      49                 :            : #include <fmtanchr.hxx>
      50                 :            : #include <fmtcntnt.hxx>
      51                 :            : #include <frmfmt.hxx>
      52                 :            : 
      53                 :            : #include <svl/ownlist.hxx>
      54                 :            : #include "pam.hxx"
      55                 :            : #include "doc.hxx"
      56                 :            : #include "ndtxt.hxx"
      57                 :            : #include "swerror.h"
      58                 :            : #include "ndole.hxx"
      59                 :            : #include "swtable.hxx"
      60                 :            : #include "swhtml.hxx"
      61                 :            : #include "wrthtml.hxx"
      62                 :            : #include "htmlfly.hxx"
      63                 :            : #include "swcss1.hxx"
      64                 :            : #include <com/sun/star/embed/XClassifiedObject.hpp>
      65                 :            : #include <comphelper/embeddedobjectcontainer.hxx>
      66                 :            : #include <sot/clsids.hxx>
      67                 :            : 
      68                 :            : using namespace com::sun::star;
      69                 :            : 
      70                 :            : #define HTML_DFLT_EMBED_WIDTH ((MM50*5)/2)
      71                 :            : #define HTML_DFLT_EMBED_HEIGHT ((MM50*5)/2)
      72                 :            : 
      73                 :            : #define HTML_DFLT_APPLET_WIDTH ((MM50*5)/2)
      74                 :            : #define HTML_DFLT_APPLET_HEIGHT ((MM50*5)/2)
      75                 :            : 
      76                 :            : namespace {
      77                 :            : 
      78                 :            : static char const sHTML_O_Hidden_False[] = "FALSE";
      79                 :            : 
      80                 :            : }
      81                 :            : 
      82                 :            : const sal_uLong HTML_FRMOPTS_EMBED_ALL      =
      83                 :            :     HTML_FRMOPT_ALT |
      84                 :            :     HTML_FRMOPT_SIZE |
      85                 :            :     HTML_FRMOPT_NAME;
      86                 :            : const sal_uLong HTML_FRMOPTS_EMBED_CNTNR    =
      87                 :            :     HTML_FRMOPTS_EMBED_ALL |
      88                 :            :     HTML_FRMOPT_ABSSIZE;
      89                 :            : const sal_uLong HTML_FRMOPTS_EMBED          =
      90                 :            :     HTML_FRMOPTS_EMBED_ALL |
      91                 :            :     HTML_FRMOPT_ALIGN |
      92                 :            :     HTML_FRMOPT_SPACE |
      93                 :            :     HTML_FRMOPT_BRCLEAR |
      94                 :            :     HTML_FRMOPT_NAME;
      95                 :            : const sal_uLong HTML_FRMOPTS_HIDDEN_EMBED   =
      96                 :            :     HTML_FRMOPT_ALT |
      97                 :            :     HTML_FRMOPT_NAME;
      98                 :            : 
      99                 :            : const sal_uLong HTML_FRMOPTS_APPLET_ALL     =
     100                 :            :     HTML_FRMOPT_ALT |
     101                 :            :     HTML_FRMOPT_SIZE;
     102                 :            : const sal_uLong HTML_FRMOPTS_APPLET_CNTNR   =
     103                 :            :     HTML_FRMOPTS_APPLET_ALL |
     104                 :            :     HTML_FRMOPT_ABSSIZE;
     105                 :            : const sal_uLong HTML_FRMOPTS_APPLET         =
     106                 :            :     HTML_FRMOPTS_APPLET_ALL |
     107                 :            :     HTML_FRMOPT_ALIGN |
     108                 :            :     HTML_FRMOPT_SPACE |
     109                 :            :     HTML_FRMOPT_BRCLEAR;
     110                 :            : 
     111                 :            : const sal_uLong HTML_FRMOPTS_IFRAME_ALL     =
     112                 :            :     HTML_FRMOPT_ALT |
     113                 :            :     HTML_FRMOPT_SIZE;
     114                 :            : const sal_uLong HTML_FRMOPTS_IFRAME_CNTNR   =
     115                 :            :     HTML_FRMOPTS_IFRAME_ALL |
     116                 :            :     HTML_FRMOPT_ABSSIZE;
     117                 :            : const sal_uLong HTML_FRMOPTS_IFRAME         =
     118                 :            :     HTML_FRMOPTS_IFRAME_ALL |
     119                 :            :     HTML_FRMOPT_ALIGN |
     120                 :            :     HTML_FRMOPT_SPACE |
     121                 :            :     HTML_FRMOPT_BORDER |
     122                 :            :     HTML_FRMOPT_BRCLEAR;
     123                 :            : 
     124                 :            : const sal_uLong HTML_FRMOPTS_OLE_CSS1       =
     125                 :            :     HTML_FRMOPT_S_ALIGN |
     126                 :            :     HTML_FRMOPT_S_SPACE;
     127                 :            : 
     128                 :            : 
     129                 :          0 : void SwHTMLParser::SetFixSize( const Size& rPixSize,
     130                 :            :                                const Size& rTwipDfltSize,
     131                 :            :                                sal_Bool bPrcWidth, sal_Bool bPrcHeight,
     132                 :            :                                SfxItemSet& /*rCSS1ItemSet*/,
     133                 :            :                                SvxCSS1PropertyInfo& rCSS1PropInfo,
     134                 :            :                                SfxItemSet& rFlyItemSet )
     135                 :            : {
     136                 :            :     // absolulte Groessenangaben in Twip umrechnen
     137                 :          0 :     sal_uInt8 nPrcWidth = 0, nPrcHeight = 0;
     138                 :          0 :     Size aTwipSz( bPrcWidth || USHRT_MAX==rPixSize.Width() ? 0 : rPixSize.Width(),
     139 [ #  # ][ #  # ]:          0 :                   bPrcHeight || USHRT_MAX==rPixSize.Height() ? 0 : rPixSize.Height() );
           [ #  #  #  # ]
     140 [ #  # ][ #  # ]:          0 :     if( (aTwipSz.Width() || aTwipSz.Height()) && Application::GetDefaultDevice() )
         [ #  # ][ #  # ]
                 [ #  # ]
     141                 :            :     {
     142                 :            :         aTwipSz =
     143                 :            :             Application::GetDefaultDevice()->PixelToLogic( aTwipSz,
     144 [ #  # ][ #  # ]:          0 :                                                 MapMode(MAP_TWIP) );
         [ #  # ][ #  # ]
     145                 :            :     }
     146                 :            : 
     147                 :            :     // die Breite bearbeiten
     148         [ #  # ]:          0 :     if( SVX_CSS1_LTYPE_PERCENTAGE == rCSS1PropInfo.eWidthType )
     149                 :            :     {
     150                 :          0 :         nPrcWidth = (sal_uInt8)rCSS1PropInfo.nWidth;
     151                 :          0 :         aTwipSz.Width() = rTwipDfltSize.Width();
     152                 :            :     }
     153         [ #  # ]:          0 :     else if( SVX_CSS1_LTYPE_TWIP== rCSS1PropInfo.eWidthType )
     154                 :            :     {
     155                 :          0 :         aTwipSz.Width() = rCSS1PropInfo.nWidth;
     156                 :            :     }
     157 [ #  # ][ #  # ]:          0 :     else if( bPrcWidth && rPixSize.Width() )
                 [ #  # ]
     158                 :            :     {
     159                 :          0 :         nPrcWidth = (sal_uInt8)rPixSize.Width();
     160         [ #  # ]:          0 :         if( nPrcWidth > 100 )
     161                 :          0 :             nPrcWidth = 100;
     162                 :            : 
     163                 :          0 :         aTwipSz.Width() = rTwipDfltSize.Width();
     164                 :            :     }
     165         [ #  # ]:          0 :     else if( USHRT_MAX==rPixSize.Width() )
     166                 :            :     {
     167                 :          0 :         aTwipSz.Width() = rTwipDfltSize.Width();
     168                 :            :     }
     169         [ #  # ]:          0 :     if( aTwipSz.Width() < MINFLY )
     170                 :            :     {
     171                 :          0 :         aTwipSz.Width() = MINFLY;
     172                 :            :     }
     173                 :            : 
     174                 :            :     // Hoehe bearbeiten
     175         [ #  # ]:          0 :     if( SVX_CSS1_LTYPE_PERCENTAGE == rCSS1PropInfo.eHeightType )
     176                 :            :     {
     177                 :          0 :         nPrcHeight = (sal_uInt8)rCSS1PropInfo.nHeight;
     178                 :          0 :         aTwipSz.Height() = rTwipDfltSize.Height();
     179                 :            :     }
     180         [ #  # ]:          0 :     else if( SVX_CSS1_LTYPE_TWIP== rCSS1PropInfo.eHeightType )
     181                 :            :     {
     182                 :          0 :         aTwipSz.Height() = rCSS1PropInfo.nHeight;
     183                 :            :     }
     184 [ #  # ][ #  # ]:          0 :     else if( bPrcHeight && rPixSize.Height() )
                 [ #  # ]
     185                 :            :     {
     186                 :          0 :         nPrcHeight = (sal_uInt8)rPixSize.Height();
     187         [ #  # ]:          0 :         if( nPrcHeight > 100 )
     188                 :          0 :             nPrcHeight = 100;
     189                 :            : 
     190                 :          0 :         aTwipSz.Height() = rTwipDfltSize.Height();
     191                 :            :     }
     192         [ #  # ]:          0 :     else if( USHRT_MAX==rPixSize.Height() )
     193                 :            :     {
     194                 :          0 :         aTwipSz.Height() = rTwipDfltSize.Height();
     195                 :            :     }
     196         [ #  # ]:          0 :     if( aTwipSz.Height() < MINFLY )
     197                 :            :     {
     198                 :          0 :         aTwipSz.Height() = MINFLY;
     199                 :            :     }
     200                 :            : 
     201                 :            :     // Size setzen
     202         [ #  # ]:          0 :     SwFmtFrmSize aFrmSize( ATT_FIX_SIZE, aTwipSz.Width(), aTwipSz.Height() );
     203                 :          0 :     aFrmSize.SetWidthPercent( nPrcWidth );
     204                 :          0 :     aFrmSize.SetHeightPercent( nPrcHeight );
     205 [ #  # ][ #  # ]:          0 :     rFlyItemSet.Put( aFrmSize );
     206                 :          0 : }
     207                 :            : 
     208                 :          0 : void SwHTMLParser::SetSpace( const Size& rPixSpace,
     209                 :            :                              SfxItemSet& rCSS1ItemSet,
     210                 :            :                              SvxCSS1PropertyInfo& rCSS1PropInfo,
     211                 :            :                              SfxItemSet& rFlyItemSet )
     212                 :            : {
     213                 :          0 :     sal_Int32 nLeftSpace = 0, nRightSpace = 0;
     214                 :          0 :     sal_uInt16 nUpperSpace = 0, nLowerSpace = 0;
     215 [ #  # ][ #  # ]:          0 :     if( (rPixSpace.Width() || rPixSpace.Height()) && Application::GetDefaultDevice() )
         [ #  # ][ #  # ]
                 [ #  # ]
     216                 :            :     {
     217                 :          0 :         Size aTwipSpc( rPixSpace.Width(), rPixSpace.Height() );
     218                 :            :         aTwipSpc =
     219                 :            :             Application::GetDefaultDevice()->PixelToLogic( aTwipSpc,
     220 [ #  # ][ #  # ]:          0 :                                                 MapMode(MAP_TWIP) );
         [ #  # ][ #  # ]
     221                 :          0 :         nLeftSpace = nRightSpace = aTwipSpc.Width();
     222                 :          0 :         nUpperSpace = nLowerSpace = (sal_uInt16)aTwipSpc.Height();
     223                 :            :     }
     224                 :            : 
     225                 :            :     // linken/rechten Rand setzen
     226                 :            :     const SfxPoolItem *pItem;
     227 [ #  # ][ #  # ]:          0 :     if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, sal_True, &pItem ) )
     228                 :            :     {
     229                 :            :         // Ggf. den Erstzeilen-Einzug noch plaetten
     230                 :          0 :         const SvxLRSpaceItem *pLRItem = (const SvxLRSpaceItem *)pItem;
     231         [ #  # ]:          0 :         SvxLRSpaceItem aLRItem( *pLRItem );
     232         [ #  # ]:          0 :         aLRItem.SetTxtFirstLineOfst( 0 );
     233         [ #  # ]:          0 :         if( rCSS1PropInfo.bLeftMargin )
     234                 :            :         {
     235                 :          0 :             nLeftSpace = aLRItem.GetLeft();
     236                 :          0 :             rCSS1PropInfo.bLeftMargin = sal_False;
     237                 :            :         }
     238         [ #  # ]:          0 :         if( rCSS1PropInfo.bRightMargin )
     239                 :            :         {
     240                 :          0 :             nRightSpace = aLRItem.GetRight();
     241                 :          0 :             rCSS1PropInfo.bRightMargin = sal_False;
     242                 :            :         }
     243 [ #  # ][ #  # ]:          0 :         rCSS1ItemSet.ClearItem( RES_LR_SPACE );
     244                 :            :     }
     245 [ #  # ][ #  # ]:          0 :     if( nLeftSpace > 0 || nRightSpace > 0 )
     246                 :            :     {
     247         [ #  # ]:          0 :         SvxLRSpaceItem aLRItem( RES_LR_SPACE );
     248                 :          0 :         aLRItem.SetLeft( nLeftSpace > 0 ? nLeftSpace : 0 );
     249                 :          0 :         aLRItem.SetRight( nRightSpace > 0 ? nRightSpace : 0 );
     250         [ #  # ]:          0 :         rFlyItemSet.Put( aLRItem );
     251         [ #  # ]:          0 :         if( nLeftSpace )
     252                 :            :         {
     253                 :            :             const SwFmtHoriOrient& rHoriOri =
     254         [ #  # ]:          0 :                 (const SwFmtHoriOrient&)rFlyItemSet.Get( RES_HORI_ORIENT );
     255         [ #  # ]:          0 :             if( text::HoriOrientation::NONE == rHoriOri.GetHoriOrient() )
     256                 :            :             {
     257         [ #  # ]:          0 :                 SwFmtHoriOrient aHoriOri( rHoriOri );
     258                 :          0 :                 aHoriOri.SetPos( aHoriOri.GetPos() + nLeftSpace );
     259 [ #  # ][ #  # ]:          0 :                 rFlyItemSet.Put( aHoriOri );
     260                 :            :             }
     261         [ #  # ]:          0 :         }
     262                 :            :     }
     263                 :            : 
     264                 :            :     // oberen/unteren Rand setzen
     265 [ #  # ][ #  # ]:          0 :     if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, sal_True, &pItem ) )
     266                 :            :     {
     267                 :            :         // Ggf. den Erstzeilen-Einzug noch plaetten
     268                 :          0 :         const SvxULSpaceItem *pULItem = (const SvxULSpaceItem *)pItem;
     269         [ #  # ]:          0 :         if( rCSS1PropInfo.bTopMargin )
     270                 :            :         {
     271                 :          0 :             nUpperSpace = pULItem->GetUpper();
     272                 :          0 :             rCSS1PropInfo.bTopMargin = sal_False;
     273                 :            :         }
     274         [ #  # ]:          0 :         if( rCSS1PropInfo.bBottomMargin )
     275                 :            :         {
     276                 :          0 :             nLowerSpace = pULItem->GetLower();
     277                 :          0 :             rCSS1PropInfo.bBottomMargin = sal_False;
     278                 :            :         }
     279         [ #  # ]:          0 :         rCSS1ItemSet.ClearItem( RES_UL_SPACE );
     280                 :            :     }
     281 [ #  # ][ #  # ]:          0 :     if( nUpperSpace || nLowerSpace )
     282                 :            :     {
     283         [ #  # ]:          0 :         SvxULSpaceItem aULItem( RES_UL_SPACE );
     284                 :          0 :         aULItem.SetUpper( nUpperSpace );
     285                 :          0 :         aULItem.SetLower( nLowerSpace );
     286         [ #  # ]:          0 :         rFlyItemSet.Put( aULItem );
     287         [ #  # ]:          0 :         if( nUpperSpace )
     288                 :            :         {
     289                 :            :             const SwFmtVertOrient& rVertOri =
     290         [ #  # ]:          0 :                 (const SwFmtVertOrient&)rFlyItemSet.Get( RES_VERT_ORIENT );
     291         [ #  # ]:          0 :             if( text::VertOrientation::NONE == rVertOri.GetVertOrient() )
     292                 :            :             {
     293         [ #  # ]:          0 :                 SwFmtVertOrient aVertOri( rVertOri );
     294                 :          0 :                 aVertOri.SetPos( aVertOri.GetPos() + nUpperSpace );
     295 [ #  # ][ #  # ]:          0 :                 rFlyItemSet.Put( aVertOri );
     296                 :            :             }
     297         [ #  # ]:          0 :         }
     298                 :            :     }
     299                 :          0 : }
     300                 :            : 
     301                 :            : 
     302                 :          0 : void SwHTMLParser::InsertEmbed()
     303                 :            : {
     304 [ #  # ][ #  # ]:          0 :     String aURL, aType, aName, aAlt, aId, aStyle, aClass;
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     305                 :          0 :     Size aSize( USHRT_MAX, USHRT_MAX );
     306                 :          0 :     Size aSpace( USHRT_MAX, USHRT_MAX );
     307                 :          0 :     sal_Bool bPrcWidth = sal_False, bPrcHeight = sal_False, bHidden = sal_False;
     308                 :          0 :     sal_Int16 eVertOri = text::VertOrientation::NONE;
     309                 :          0 :     sal_Int16 eHoriOri = text::HoriOrientation::NONE;
     310         [ #  # ]:          0 :     SvCommandList aCmdLst;
     311         [ #  # ]:          0 :     const HTMLOptions& rHTMLOptions = GetOptions();
     312                 :            : 
     313                 :            :     // Die Optionen werden vorwaerts gelesen, weil die Plugins sie in
     314                 :            :     // dieser Reihenfolge erwarten. Trotzdem darf immer nur der erste
     315                 :            :     // Wert einer Option beruecksichtigt werden.
     316         [ #  # ]:          0 :     for (size_t i = 0, n = rHTMLOptions.size(); i < n; ++i)
     317                 :            :     {
     318         [ #  # ]:          0 :         const HTMLOption& rOption = rHTMLOptions[i];
     319   [ #  #  #  #  :          0 :         switch( rOption.GetToken() )
          #  #  #  #  #  
             #  #  #  #  
                      # ]
     320                 :            :         {
     321                 :            :         case HTML_O_ID:
     322         [ #  # ]:          0 :             aId = rOption.GetString();
     323                 :          0 :             break;
     324                 :            :         case HTML_O_STYLE:
     325         [ #  # ]:          0 :             aStyle = rOption.GetString();
     326                 :          0 :             break;
     327                 :            :         case HTML_O_CLASS:
     328         [ #  # ]:          0 :             aClass = rOption.GetString();
     329                 :          0 :             break;
     330                 :            :         case HTML_O_NAME:
     331         [ #  # ]:          0 :             aName = rOption.GetString();
     332                 :          0 :             break;
     333                 :            :         case HTML_O_SRC:
     334         [ #  # ]:          0 :             if( !aURL.Len() )
     335         [ #  # ]:          0 :                 aURL = rOption.GetString();
     336                 :          0 :             break;
     337                 :            :         case HTML_O_ALT:
     338         [ #  # ]:          0 :             aAlt = rOption.GetString();
     339                 :          0 :             break;
     340                 :            :         case HTML_O_TYPE:
     341         [ #  # ]:          0 :             if( !aType.Len() )
     342         [ #  # ]:          0 :                 aType = rOption.GetString();
     343                 :          0 :             break;
     344                 :            :         case HTML_O_ALIGN:
     345 [ #  # ][ #  # ]:          0 :             if( eVertOri==text::VertOrientation::NONE && eHoriOri==text::HoriOrientation::NONE )
     346                 :            :             {
     347         [ #  # ]:          0 :                 eVertOri = rOption.GetEnum( aHTMLImgVAlignTable, eVertOri );
     348         [ #  # ]:          0 :                 eHoriOri = rOption.GetEnum( aHTMLImgHAlignTable, eHoriOri );
     349                 :            :             }
     350                 :          0 :             break;
     351                 :            :         case HTML_O_WIDTH:
     352         [ #  # ]:          0 :             if( USHRT_MAX==aSize.Width() )
     353                 :            :             {
     354         [ #  # ]:          0 :                 bPrcWidth = (rOption.GetString().Search('%') != STRING_NOTFOUND);
     355         [ #  # ]:          0 :                 aSize.Width() = (long)rOption.GetNumber();
     356                 :            :             }
     357                 :          0 :             break;
     358                 :            :         case HTML_O_HEIGHT:
     359         [ #  # ]:          0 :             if( USHRT_MAX==aSize.Height() )
     360                 :            :             {
     361         [ #  # ]:          0 :                 bPrcHeight = (rOption.GetString().Search('%') != STRING_NOTFOUND);
     362         [ #  # ]:          0 :                 aSize.Height() = (long)rOption.GetNumber();
     363                 :            :             }
     364                 :          0 :             break;
     365                 :            :         case HTML_O_HSPACE:
     366         [ #  # ]:          0 :             if( USHRT_MAX==aSpace.Width() )
     367         [ #  # ]:          0 :                 aSpace.Width() = (long)rOption.GetNumber();
     368                 :          0 :             break;
     369                 :            :         case HTML_O_VSPACE:
     370         [ #  # ]:          0 :             if( USHRT_MAX==aSpace.Height() )
     371         [ #  # ]:          0 :                 aSpace.Height() = (long)rOption.GetNumber();
     372                 :          0 :             break;
     373                 :            :         case HTML_O_UNKNOWN:
     374 [ #  # ][ #  # ]:          0 :             if( rOption.GetTokenString().EqualsIgnoreCaseAscii( OOO_STRING_SW_HTML_O_Hidden ) )
     375                 :            :                 bHidden =
     376         [ #  # ]:          0 :                     !rOption.GetString().EqualsIgnoreCaseAscii( sHTML_O_Hidden_False );
     377                 :          0 :             break;
     378                 :            :         }
     379                 :            : 
     380                 :            :         // Es werden alle Parameter an das Plugin weitergereicht
     381 [ #  # ][ #  # ]:          0 :         aCmdLst.Append( rOption.GetTokenString(), rOption.GetString() );
                 [ #  # ]
     382                 :            :     }
     383                 :            : 
     384 [ #  # ][ #  # ]:          0 :     SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
     385         [ #  # ]:          0 :     SvxCSS1PropertyInfo aPropInfo;
     386         [ #  # ]:          0 :     if( HasStyleOptions( aStyle, aId, aClass ) )
     387         [ #  # ]:          0 :         ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
     388                 :            : 
     389                 :            :     // Die Default-Werte umsetzen (ausser Hoehe/Breite, das macht schon
     390                 :            :     // SetFrmSize() fuer uns)
     391 [ #  # ][ #  # ]:          0 :     if( eVertOri==text::VertOrientation::NONE && eHoriOri==text::HoriOrientation::NONE )
     392                 :          0 :         eVertOri = text::VertOrientation::TOP;
     393         [ #  # ]:          0 :     if( USHRT_MAX==aSpace.Width() )
     394                 :          0 :         aSpace.Width() = 0;
     395         [ #  # ]:          0 :     if( USHRT_MAX==aSpace.Height() )
     396                 :          0 :         aSpace.Height() = 0;
     397         [ #  # ]:          0 :     if( bHidden )
     398                 :            :     {
     399                 :            :         // Size (0,0) wird in SetFrmSize auf (MINFLY, MINFLY) umgebogen
     400                 :          0 :         aSize.Width() = 0; aSize.Height() = 0;
     401                 :          0 :         aSpace.Width() = 0; aSpace.Height() = 0;
     402                 :          0 :         bPrcWidth = bPrcHeight = sal_False;
     403                 :            :     }
     404                 :            : 
     405                 :            :     // die URL aufbereiten
     406         [ #  # ]:          0 :     INetURLObject aURLObj;
     407                 :          0 :     bool bHasURL = aURL.Len() &&
     408                 :            :                    aURLObj.SetURL(
     409                 :            :                        URIHelper::SmartRel2Abs(
     410                 :            :                            INetURLObject(sBaseURL), aURL,
     411 [ #  # ][ #  # ]:          0 :                            URIHelper::GetMaybeFileHdl()) );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  #  
          #  #  #  #  #  
                #  #  # ]
                 [ #  # ]
     412                 :            : 
     413                 :            :     // do not insert plugin if it has neither URL nor type
     414                 :          0 :     bool bHasType = aType.Len() != 0;
     415 [ #  # ][ #  # ]:          0 :     if( !bHasURL && !bHasType )
     416                 :          0 :         return;
     417                 :            : 
     418                 :            :     // das Plugin anlegen
     419         [ #  # ]:          0 :     comphelper::EmbeddedObjectContainer aCnt;
     420                 :          0 :     ::rtl::OUString aObjName;
     421 [ #  # ][ #  # ]:          0 :     uno::Reference < embed::XEmbeddedObject > xObj = aCnt.CreateEmbeddedObject( SvGlobalName( SO3_PLUGIN_CLASSID ).GetByteSequence(), aObjName );
         [ #  # ][ #  # ]
                 [ #  # ]
     422 [ #  # ][ #  # ]:          0 :     if ( svt::EmbeddedObjectRef::TryRunningState( xObj ) )
     423                 :            :     {
     424 [ #  # ][ #  # ]:          0 :         uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
                 [ #  # ]
     425         [ #  # ]:          0 :         if ( xSet.is() )
     426                 :            :         {
     427         [ #  # ]:          0 :             if( bHasURL )
     428         [ #  # ]:          0 :                 xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginURL")),
     429 [ #  # ][ #  # ]:          0 :                     uno::makeAny( ::rtl::OUString( aURL ) ) );
         [ #  # ][ #  # ]
     430         [ #  # ]:          0 :             if( bHasType )
     431         [ #  # ]:          0 :                 xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginMimeType")),
     432 [ #  # ][ #  # ]:          0 :                     uno::makeAny( ::rtl::OUString( aType ) ) );
         [ #  # ][ #  # ]
     433                 :            : 
     434         [ #  # ]:          0 :             uno::Sequence < beans::PropertyValue > aProps;
     435         [ #  # ]:          0 :             aCmdLst.FillSequence( aProps );
     436 [ #  # ][ #  # ]:          0 :             xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginCommands")), uno::makeAny( aProps ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     437                 :            : 
     438                 :          0 :         }
     439                 :            :     }
     440                 :            : 
     441                 :          0 :     SfxItemSet aFrmSet( pDoc->GetAttrPool(),
     442         [ #  # ]:          0 :                         RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
     443         [ #  # ]:          0 :     if( !IsNewDoc() )
     444         [ #  # ]:          0 :         Reader::ResetFrmFmtAttrs( aFrmSet );
     445                 :            : 
     446                 :            :     // den Anker setzen
     447         [ #  # ]:          0 :     if( !bHidden )
     448                 :            :     {
     449         [ #  # ]:          0 :         SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, aFrmSet );
     450                 :            :     }
     451                 :            :     else
     452                 :            :     {
     453         [ #  # ]:          0 :         SwFmtAnchor aAnchor( FLY_AT_PARA );
     454         [ #  # ]:          0 :         aAnchor.SetAnchor( pPam->GetPoint() );
     455         [ #  # ]:          0 :         aFrmSet.Put( aAnchor );
     456 [ #  # ][ #  # ]:          0 :         aFrmSet.Put( SwFmtHoriOrient( 0, text::HoriOrientation::LEFT, text::RelOrientation::FRAME) );
                 [ #  # ]
     457 [ #  # ][ #  # ]:          0 :         aFrmSet.Put( SwFmtSurround( SURROUND_THROUGHT ) );
                 [ #  # ]
     458 [ #  # ][ #  # ]:          0 :         aFrmSet.Put( SwFmtVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::PRINT_AREA ) );
         [ #  # ][ #  # ]
     459                 :            :     }
     460                 :            : 
     461                 :            :     // und noch die Groesse des Rahmens
     462                 :          0 :     Size aDfltSz( HTML_DFLT_EMBED_WIDTH, HTML_DFLT_EMBED_HEIGHT );
     463                 :            :     SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
     464         [ #  # ]:          0 :                 aFrmSet );
     465         [ #  # ]:          0 :     SetSpace( aSpace, aItemSet, aPropInfo, aFrmSet );
     466                 :            : 
     467                 :            :     // und in das Dok einfuegen
     468                 :            :     SwFrmFmt* pFlyFmt =
     469 [ #  # ][ #  # ]:          0 :         pDoc->Insert( *pPam, ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), &aFrmSet, NULL, NULL );
                 [ #  # ]
     470                 :            : 
     471                 :            :     // Namen am FrmFmt setzen
     472         [ #  # ]:          0 :     if( aName.Len() )
     473         [ #  # ]:          0 :         pFlyFmt->SetName( aName );
     474                 :            : 
     475                 :            :     // den alternativen Text setzen
     476                 :            :     SwNoTxtNode *pNoTxtNd =
     477   [ #  #  #  # ]:          0 :         pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
     478         [ #  # ]:          0 :                           ->GetIndex()+1 ]->GetNoTxtNode();
     479         [ #  # ]:          0 :     pNoTxtNd->SetTitle( aAlt );
     480                 :            : 
     481                 :            :     // Ggf Frames anlegen und auto-geb. Rahmen registrieren
     482         [ #  # ]:          0 :     if( !bHidden )
     483                 :            :     {
     484                 :            :         // HIDDEN-Plugins sollen absatzgebunden bleiben. Da RegisterFlyFrm
     485                 :            :         // absatzgebundene Rahmen mit DUrchlauf in am Zeichen gebundene
     486                 :            :         // Rahmen umwandelt, muessen die Frames hier von Hand angelegt werden.
     487         [ #  # ]:          0 :         RegisterFlyFrm( pFlyFmt );
     488 [ #  # ][ #  # ]:          0 :     }
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     489                 :            : }
     490                 :            : 
     491                 :            : 
     492                 :            : #ifdef SOLAR_JAVA
     493                 :          0 : void SwHTMLParser::NewObject()
     494                 :            : {
     495 [ #  # ][ #  # ]:          0 :     String aClassID, aName, aStandBy, aId, aStyle, aClass;
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     496                 :          0 :     Size aSize( USHRT_MAX, USHRT_MAX );
     497                 :          0 :     Size aSpace( 0, 0 );
     498                 :          0 :     sal_Int16 eVertOri = text::VertOrientation::TOP;
     499                 :          0 :     sal_Int16 eHoriOri = text::HoriOrientation::NONE;
     500                 :            : 
     501                 :          0 :     sal_Bool bPrcWidth = sal_False, bPrcHeight = sal_False,
     502                 :          0 :              bDeclare = sal_False;
     503                 :            :     // Eine neue Command-List anlegen
     504 [ #  # ][ #  # ]:          0 :     delete pAppletImpl;
     505                 :          0 :     pAppletImpl = new SwApplet_Impl( pDoc->GetAttrPool(),
     506 [ #  # ][ #  # ]:          0 :                                      RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
     507                 :            : 
     508         [ #  # ]:          0 :     const HTMLOptions& rHTMLOptions = GetOptions();
     509         [ #  # ]:          0 :     for (size_t i = rHTMLOptions.size(); i; )
     510                 :            :     {
     511         [ #  # ]:          0 :         const HTMLOption& rOption = rHTMLOptions[--i];
     512   [ #  #  #  #  :          0 :         switch( rOption.GetToken() )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
                   #  # ]
     513                 :            :         {
     514                 :            :         case HTML_O_ID:
     515         [ #  # ]:          0 :             aId = rOption.GetString();
     516                 :          0 :             break;
     517                 :            :         case HTML_O_STYLE:
     518         [ #  # ]:          0 :             aStyle = rOption.GetString();
     519                 :          0 :             break;
     520                 :            :         case HTML_O_CLASS:
     521         [ #  # ]:          0 :             aClass = rOption.GetString();
     522                 :          0 :             break;
     523                 :            :         case HTML_O_DECLARE:
     524                 :          0 :             bDeclare = sal_True;
     525                 :          0 :             break;
     526                 :            :         case HTML_O_CLASSID:
     527         [ #  # ]:          0 :             aClassID = rOption.GetString();
     528                 :          0 :             break;
     529                 :            :         case HTML_O_CODEBASE:
     530                 :          0 :             break;
     531                 :            :         case HTML_O_DATA:
     532                 :          0 :             break;
     533                 :            :         case HTML_O_TYPE:
     534                 :          0 :             break;
     535                 :            :         case HTML_O_CODETYPE:
     536                 :          0 :             break;
     537                 :            :         case HTML_O_ARCHIVE:
     538                 :            :         case HTML_O_UNKNOWN:
     539                 :          0 :             break;
     540                 :            :         case HTML_O_STANDBY:
     541         [ #  # ]:          0 :             aStandBy = rOption.GetString();
     542                 :          0 :             break;
     543                 :            :         case HTML_O_WIDTH:
     544         [ #  # ]:          0 :             bPrcWidth = (rOption.GetString().Search('%') != STRING_NOTFOUND);
     545         [ #  # ]:          0 :             aSize.Width() = (long)rOption.GetNumber();
     546                 :          0 :             break;
     547                 :            :         case HTML_O_HEIGHT:
     548         [ #  # ]:          0 :             bPrcHeight = (rOption.GetString().Search('%') != STRING_NOTFOUND);
     549         [ #  # ]:          0 :             aSize.Height() = (long)rOption.GetNumber();
     550                 :          0 :             break;
     551                 :            :         case HTML_O_ALIGN:
     552         [ #  # ]:          0 :             eVertOri = rOption.GetEnum( aHTMLImgVAlignTable, eVertOri );
     553         [ #  # ]:          0 :             eHoriOri = rOption.GetEnum( aHTMLImgHAlignTable, eHoriOri );
     554                 :          0 :             break;
     555                 :            :         case HTML_O_USEMAP:
     556                 :          0 :             break;
     557                 :            :         case HTML_O_NAME:
     558         [ #  # ]:          0 :             aName = rOption.GetString();
     559                 :          0 :             break;
     560                 :            :         case HTML_O_HSPACE:
     561         [ #  # ]:          0 :             aSpace.Width() = (long)rOption.GetNumber();
     562                 :          0 :             break;
     563                 :            :         case HTML_O_VSPACE:
     564         [ #  # ]:          0 :             aSpace.Height() = (long)rOption.GetNumber();
     565                 :          0 :             break;
     566                 :            :         case HTML_O_BORDER:
     567                 :          0 :             break;
     568                 :            : 
     569                 :            :         case HTML_O_SDONCLICK:
     570                 :            :         case HTML_O_ONCLICK:
     571                 :            :         case HTML_O_SDONMOUSEOVER:
     572                 :            :         case HTML_O_ONMOUSEOVER:
     573                 :            :         case HTML_O_SDONMOUSEOUT:
     574                 :            :         case HTML_O_ONMOUSEOUT:
     575                 :          0 :             break;
     576                 :            :         }
     577                 :            :         // Es werden alle Parameter auch an das Applet weitergereicht
     578                 :          0 :         pAppletImpl->AppendParam( rOption.GetTokenString(),
     579   [ #  #  #  # ]:          0 :                                   rOption.GetString() );
                 [ #  # ]
     580                 :            : 
     581                 :            :     }
     582                 :            : 
     583                 :            :     // Objects that are declared only are not evaluated. Moreover, only
     584                 :            :     // Java applets are supported.
     585                 :          0 :     sal_Bool bIsApplet = sal_False;
     586                 :            : 
     587 [ #  # ][ #  # ]:          0 :     if( !bDeclare && aClassID.Len() == 42 &&
         [ #  # ][ #  # ]
     588         [ #  # ]:          0 :         aClassID.EqualsAscii( "clsid:", 0, 6 ) )
     589                 :            :     {
     590         [ #  # ]:          0 :         aClassID.Erase( 0, 6 );
     591         [ #  # ]:          0 :         SvGlobalName aCID;
     592 [ #  # ][ #  # ]:          0 :         if( aCID.MakeId( aClassID ) )
     593                 :            :         {
     594                 :            :             SvGlobalName aJavaCID( 0x8AD9C840UL, 0x044EU, 0x11D1U, 0xB3U, 0xE9U,
     595         [ #  # ]:          0 :                                    0x00U, 0x80U, 0x5FU, 0x49U, 0x9DU, 0x93U );
     596                 :            : 
     597 [ #  # ][ #  # ]:          0 :             bIsApplet = aJavaCID == aCID;
     598         [ #  # ]:          0 :         }
     599                 :            :     }
     600                 :            : 
     601         [ #  # ]:          0 :     if( !bIsApplet )
     602                 :            :     {
     603 [ #  # ][ #  # ]:          0 :         delete pAppletImpl;
     604                 :          0 :         pAppletImpl = 0;
     605                 :          0 :         return;
     606                 :            :     }
     607                 :            : 
     608         [ #  # ]:          0 :     pAppletImpl->SetAltText( aStandBy );
     609                 :            : 
     610 [ #  # ][ #  # ]:          0 :     SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
     611         [ #  # ]:          0 :     SvxCSS1PropertyInfo aPropInfo;
     612         [ #  # ]:          0 :     if( HasStyleOptions( aStyle, aId, aClass ) )
     613         [ #  # ]:          0 :         ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
     614                 :            : 
     615                 :          0 :     SfxItemSet& rFrmSet = pAppletImpl->GetItemSet();
     616         [ #  # ]:          0 :     if( !IsNewDoc() )
     617         [ #  # ]:          0 :         Reader::ResetFrmFmtAttrs( rFrmSet );
     618                 :            : 
     619                 :            :     // den Anker und die Ausrichtung setzen
     620         [ #  # ]:          0 :     SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, rFrmSet );
     621                 :            : 
     622                 :            :     // und noch die Groesse des Rahmens
     623                 :          0 :     Size aDfltSz( HTML_DFLT_APPLET_WIDTH, HTML_DFLT_APPLET_HEIGHT );
     624                 :            :     SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
     625         [ #  # ]:          0 :                 rFrmSet );
     626 [ #  # ][ #  # ]:          0 :     SetSpace( aSpace, aItemSet, aPropInfo, rFrmSet );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     627                 :            : }
     628                 :            : #endif
     629                 :            : 
     630                 :          0 : void SwHTMLParser::EndObject()
     631                 :            : {
     632                 :            : #ifdef SOLAR_JAVA
     633         [ #  # ]:          0 :     if( !pAppletImpl )
     634                 :          0 :         return;
     635 [ #  # ][ #  # ]:          0 :     if( pAppletImpl->CreateApplet( sBaseURL ) )
     636                 :            :     {
     637                 :          0 :         pAppletImpl->FinishApplet();
     638                 :            : 
     639                 :            :         // und in das Dok einfuegen
     640                 :            :         SwFrmFmt* pFlyFmt =
     641                 :            :             pDoc->Insert( *pPam,
     642                 :            :                     ::svt::EmbeddedObjectRef( pAppletImpl->GetApplet(), embed::Aspects::MSOLE_CONTENT ),
     643                 :          0 :                     &pAppletImpl->GetItemSet(),
     644                 :            :                     NULL,
     645 [ #  # ][ #  # ]:          0 :                     NULL );
                 [ #  # ]
     646                 :            : 
     647                 :            :         // den alternativen Namen setzen
     648                 :            :         SwNoTxtNode *pNoTxtNd =
     649                 :          0 :             pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
     650                 :          0 :                               ->GetIndex()+1 ]->GetNoTxtNode();
     651         [ #  # ]:          0 :         pNoTxtNd->SetTitle( pAppletImpl->GetAltText() );
     652                 :            : 
     653                 :            :         // Ggf Frames anlegen und auto-geb. Rahmen registrieren
     654                 :          0 :         RegisterFlyFrm( pFlyFmt );
     655                 :            : 
     656         [ #  # ]:          0 :         delete pAppletImpl;
     657                 :          0 :         pAppletImpl = 0;
     658                 :            :     }
     659                 :            : #endif
     660                 :            : }
     661                 :            : 
     662                 :            : #ifdef SOLAR_JAVA
     663                 :          0 : void SwHTMLParser::InsertApplet()
     664                 :            : {
     665 [ #  # ][ #  # ]:          0 :     String aCodeBase, aCode, aName, aAlt, aId, aStyle, aClass;
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     666                 :          0 :     Size aSize( USHRT_MAX, USHRT_MAX );
     667                 :          0 :     Size aSpace( 0, 0 );
     668                 :          0 :     sal_Bool bPrcWidth = sal_False, bPrcHeight = sal_False, bMayScript = sal_False;
     669                 :          0 :     sal_Int16 eVertOri = text::VertOrientation::TOP;
     670                 :          0 :     sal_Int16 eHoriOri = text::HoriOrientation::NONE;
     671                 :            : 
     672                 :            :     // Eine neue Command-List anlegen
     673 [ #  # ][ #  # ]:          0 :     delete pAppletImpl;
     674 [ #  # ][ #  # ]:          0 :     pAppletImpl = new SwApplet_Impl( pDoc->GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
     675                 :            : 
     676         [ #  # ]:          0 :     const HTMLOptions& rHTMLOptions = GetOptions();
     677         [ #  # ]:          0 :     for (size_t i = rHTMLOptions.size(); i; )
     678                 :            :     {
     679         [ #  # ]:          0 :         const HTMLOption& rOption = rHTMLOptions[--i];
     680   [ #  #  #  #  :          0 :         switch( rOption.GetToken() )
          #  #  #  #  #  
             #  #  #  #  
                      # ]
     681                 :            :         {
     682                 :            :         case HTML_O_ID:
     683         [ #  # ]:          0 :             aId = rOption.GetString();
     684                 :          0 :             break;
     685                 :            :         case HTML_O_STYLE:
     686         [ #  # ]:          0 :             aStyle = rOption.GetString();
     687                 :          0 :             break;
     688                 :            :         case HTML_O_CLASS:
     689         [ #  # ]:          0 :             aClass = rOption.GetString();
     690                 :          0 :             break;
     691                 :            :         case HTML_O_CODEBASE:
     692         [ #  # ]:          0 :             aCodeBase = rOption.GetString();
     693                 :          0 :             break;
     694                 :            :         case HTML_O_CODE:
     695         [ #  # ]:          0 :             aCode = rOption.GetString();
     696                 :          0 :             break;
     697                 :            :         case HTML_O_NAME:
     698         [ #  # ]:          0 :             aName = rOption.GetString();
     699                 :          0 :             break;
     700                 :            :         case HTML_O_ALT:
     701         [ #  # ]:          0 :             aAlt = rOption.GetString();
     702                 :          0 :             break;
     703                 :            :         case HTML_O_ALIGN:
     704         [ #  # ]:          0 :             eVertOri = rOption.GetEnum( aHTMLImgVAlignTable, eVertOri );
     705         [ #  # ]:          0 :             eHoriOri = rOption.GetEnum( aHTMLImgHAlignTable, eHoriOri );
     706                 :          0 :             break;
     707                 :            :         case HTML_O_WIDTH:
     708         [ #  # ]:          0 :             bPrcWidth = (rOption.GetString().Search('%') != STRING_NOTFOUND);
     709         [ #  # ]:          0 :             aSize.Width() = (long)rOption.GetNumber();
     710                 :          0 :             break;
     711                 :            :         case HTML_O_HEIGHT:
     712         [ #  # ]:          0 :             bPrcHeight = (rOption.GetString().Search('%') != STRING_NOTFOUND);
     713         [ #  # ]:          0 :             aSize.Height() = (long)rOption.GetNumber();
     714                 :          0 :             break;
     715                 :            :         case HTML_O_HSPACE:
     716         [ #  # ]:          0 :             aSpace.Width() = (long)rOption.GetNumber();
     717                 :          0 :             break;
     718                 :            :         case HTML_O_VSPACE:
     719         [ #  # ]:          0 :             aSpace.Height() = (long)rOption.GetNumber();
     720                 :          0 :             break;
     721                 :            :         case HTML_O_MAYSCRIPT:
     722                 :          0 :             bMayScript = sal_True;
     723                 :          0 :             break;
     724                 :            :         }
     725                 :            : 
     726                 :            :         // Es werden alle Parameter auch an das Applet weitergereicht
     727                 :          0 :         pAppletImpl->AppendParam( rOption.GetTokenString(),
     728   [ #  #  #  # ]:          0 :                                   rOption.GetString() );
                 [ #  # ]
     729                 :            :     }
     730                 :            : 
     731         [ #  # ]:          0 :     if( !aCode.Len() )
     732                 :            :     {
     733 [ #  # ][ #  # ]:          0 :         delete pAppletImpl;
     734                 :          0 :         pAppletImpl = 0;
     735                 :          0 :         return;
     736                 :            :     }
     737                 :            : 
     738         [ #  # ]:          0 :     if ( aCodeBase.Len() )
     739 [ #  # ][ #  # ]:          0 :         aCodeBase = INetURLObject::GetAbsURL( sBaseURL, aCodeBase );
         [ #  # ][ #  # ]
     740 [ #  # ][ #  # ]:          0 :     pAppletImpl->CreateApplet( aCode, aName, bMayScript, aCodeBase, sBaseURL );//, aAlt );
         [ #  # ][ #  # ]
                 [ #  # ]
     741         [ #  # ]:          0 :     pAppletImpl->SetAltText( aAlt );
     742                 :            : 
     743 [ #  # ][ #  # ]:          0 :     SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
     744         [ #  # ]:          0 :     SvxCSS1PropertyInfo aPropInfo;
     745         [ #  # ]:          0 :     if( HasStyleOptions( aStyle, aId, aClass ) )
     746         [ #  # ]:          0 :         ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
     747                 :            : 
     748                 :          0 :     SfxItemSet& rFrmSet = pAppletImpl->GetItemSet();
     749         [ #  # ]:          0 :     if( !IsNewDoc() )
     750         [ #  # ]:          0 :         Reader::ResetFrmFmtAttrs( rFrmSet );
     751                 :            : 
     752                 :            :     // den Anker und die Ausrichtung setzen
     753         [ #  # ]:          0 :     SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, rFrmSet );
     754                 :            : 
     755                 :            :     // und noch die Groesse des Rahmens
     756                 :          0 :     Size aDfltSz( HTML_DFLT_APPLET_WIDTH, HTML_DFLT_APPLET_HEIGHT );
     757                 :            :     SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
     758         [ #  # ]:          0 :                 rFrmSet );
     759 [ #  # ][ #  # ]:          0 :     SetSpace( aSpace, aItemSet, aPropInfo, rFrmSet );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     760                 :            : }
     761                 :            : #endif
     762                 :            : 
     763                 :          0 : void SwHTMLParser::EndApplet()
     764                 :            : {
     765                 :            : #ifdef SOLAR_JAVA
     766         [ #  # ]:          0 :     if( !pAppletImpl )
     767                 :          0 :         return;
     768                 :            : 
     769                 :          0 :     pAppletImpl->FinishApplet();
     770                 :            : 
     771                 :            :     // und in das Dok einfuegen
     772                 :            :     SwFrmFmt* pFlyFmt =
     773                 :            :         pDoc->Insert( *pPam,
     774                 :            :                     ::svt::EmbeddedObjectRef( pAppletImpl->GetApplet(), embed::Aspects::MSOLE_CONTENT ),
     775                 :          0 :                     &pAppletImpl->GetItemSet(),
     776                 :            :                     NULL,
     777 [ #  # ][ #  # ]:          0 :                     NULL );
                 [ #  # ]
     778                 :            : 
     779                 :            :     // den alternativen Namen setzen
     780                 :            :     SwNoTxtNode *pNoTxtNd =
     781                 :          0 :         pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
     782                 :          0 :                           ->GetIndex()+1 ]->GetNoTxtNode();
     783         [ #  # ]:          0 :     pNoTxtNd->SetTitle( pAppletImpl->GetAltText() );
     784                 :            : 
     785                 :            :     // Ggf Frames anlegen und auto-geb. Rahmen registrieren
     786                 :          0 :     RegisterFlyFrm( pFlyFmt );
     787                 :            : 
     788         [ #  # ]:          0 :     delete pAppletImpl;
     789                 :          0 :     pAppletImpl = 0;
     790                 :            : #endif
     791                 :            : }
     792                 :            : 
     793                 :          0 : void SwHTMLParser::InsertParam()
     794                 :            : {
     795                 :            : #ifdef SOLAR_JAVA
     796         [ #  # ]:          0 :     if( !pAppletImpl )
     797                 :            :         return;
     798                 :            : 
     799 [ #  # ][ #  # ]:          0 :     String aName, aValue;
     800                 :            : 
     801         [ #  # ]:          0 :     const HTMLOptions& rHTMLOptions = GetOptions();
     802         [ #  # ]:          0 :     for (size_t i = rHTMLOptions.size(); i; )
     803                 :            :     {
     804         [ #  # ]:          0 :         const HTMLOption& rOption = rHTMLOptions[--i];
     805      [ #  #  # ]:          0 :         switch( rOption.GetToken() )
     806                 :            :         {
     807                 :            :         case HTML_O_NAME:
     808         [ #  # ]:          0 :             aName = rOption.GetString();
     809                 :          0 :             break;
     810                 :            :         case HTML_O_VALUE:
     811         [ #  # ]:          0 :             aValue = rOption.GetString();
     812                 :          0 :             break;
     813                 :            :         }
     814                 :            :     }
     815                 :            : 
     816         [ #  # ]:          0 :     if( !aName.Len() )
     817                 :            :         return;
     818                 :            : 
     819 [ #  # ][ #  # ]:          0 :     pAppletImpl->AppendParam( aName, aValue );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     820                 :            : #endif
     821                 :            : }
     822                 :            : 
     823                 :            : 
     824                 :            : 
     825                 :          0 : void SwHTMLParser::InsertFloatingFrame()
     826                 :            : {
     827 [ #  # ][ #  # ]:          0 :     String aAlt, aId, aStyle, aClass;
         [ #  # ][ #  # ]
     828                 :          0 :     Size aSize( USHRT_MAX, USHRT_MAX );
     829                 :          0 :     Size aSpace( 0, 0 );
     830                 :          0 :     sal_Bool bPrcWidth = sal_False, bPrcHeight = sal_False;
     831                 :          0 :     sal_Int16 eVertOri = text::VertOrientation::TOP;
     832                 :          0 :     sal_Int16 eHoriOri = text::HoriOrientation::NONE;
     833                 :            : 
     834         [ #  # ]:          0 :     const HTMLOptions& rHTMLOptions = GetOptions();
     835                 :            : 
     836                 :            :     // Erstmal die Optionen f?r das Writer-Frame-Format holen
     837         [ #  # ]:          0 :     for (size_t i = 0, n = rHTMLOptions.size(); i < n; ++i)
     838                 :            :     {
     839         [ #  # ]:          0 :         const HTMLOption& rOption = rHTMLOptions[i];
     840   [ #  #  #  #  :          0 :         switch( rOption.GetToken() )
          #  #  #  #  #  
                      # ]
     841                 :            :         {
     842                 :            :         case HTML_O_ID:
     843         [ #  # ]:          0 :             aId = rOption.GetString();
     844                 :          0 :             break;
     845                 :            :         case HTML_O_STYLE:
     846         [ #  # ]:          0 :             aStyle = rOption.GetString();
     847                 :          0 :             break;
     848                 :            :         case HTML_O_CLASS:
     849         [ #  # ]:          0 :             aClass = rOption.GetString();
     850                 :          0 :             break;
     851                 :            :         case HTML_O_ALT:
     852         [ #  # ]:          0 :             aAlt = rOption.GetString();
     853                 :          0 :             break;
     854                 :            :         case HTML_O_ALIGN:
     855         [ #  # ]:          0 :             eVertOri = rOption.GetEnum( aHTMLImgVAlignTable, eVertOri );
     856         [ #  # ]:          0 :             eHoriOri = rOption.GetEnum( aHTMLImgHAlignTable, eHoriOri );
     857                 :          0 :             break;
     858                 :            :         case HTML_O_WIDTH:
     859         [ #  # ]:          0 :             bPrcWidth = (rOption.GetString().Search('%') != STRING_NOTFOUND);
     860         [ #  # ]:          0 :             aSize.Width() = (long)rOption.GetNumber();
     861                 :          0 :             break;
     862                 :            :         case HTML_O_HEIGHT:
     863         [ #  # ]:          0 :             bPrcHeight = (rOption.GetString().Search('%') != STRING_NOTFOUND);
     864         [ #  # ]:          0 :             aSize.Height() = (long)rOption.GetNumber();
     865                 :          0 :             break;
     866                 :            :         case HTML_O_HSPACE:
     867         [ #  # ]:          0 :             aSpace.Width() = (long)rOption.GetNumber();
     868                 :          0 :             break;
     869                 :            :         case HTML_O_VSPACE:
     870         [ #  # ]:          0 :             aSpace.Height() = (long)rOption.GetNumber();
     871                 :          0 :             break;
     872                 :            :         }
     873                 :            :     }
     874                 :            : 
     875                 :            :     // und jetzt die fuer den SfxFrame
     876         [ #  # ]:          0 :     SfxFrameDescriptor aFrameDesc;
     877                 :            : 
     878         [ #  # ]:          0 :     SfxFrameHTMLParser::ParseFrameOptions( &aFrameDesc, rHTMLOptions, sBaseURL );
     879                 :            : 
     880                 :            :     // den Floating-Frame anlegen
     881         [ #  # ]:          0 :     comphelper::EmbeddedObjectContainer aCnt;
     882                 :          0 :     ::rtl::OUString aObjName;
     883 [ #  # ][ #  # ]:          0 :     uno::Reference < embed::XEmbeddedObject > xObj = aCnt.CreateEmbeddedObject( SvGlobalName( SO3_IFRAME_CLASSID ).GetByteSequence(), aObjName );
         [ #  # ][ #  # ]
                 [ #  # ]
     884                 :            : 
     885                 :            :     try
     886                 :            :     {
     887                 :            :         // TODO/MBA: testing
     888 [ #  # ][ #  # ]:          0 :         if ( svt::EmbeddedObjectRef::TryRunningState( xObj ) )
     889                 :            :         {
     890 [ #  # ][ #  # ]:          0 :             uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
                 [ #  # ]
     891         [ #  # ]:          0 :             if ( xSet.is() )
     892                 :            :             {
     893         [ #  # ]:          0 :                 ::rtl::OUString aName = aFrameDesc.GetName();
     894                 :          0 :                 ScrollingMode eScroll = aFrameDesc.GetScrollingMode();
     895         [ #  # ]:          0 :                 sal_Bool bHasBorder = aFrameDesc.HasFrameBorder();
     896                 :          0 :                 Size aMargin = aFrameDesc.GetMargin();
     897                 :            : 
     898 [ #  # ][ #  # ]:          0 :                 xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameURL")), uno::makeAny( ::rtl::OUString( aFrameDesc.GetURL().GetMainURL( INetURLObject::NO_DECODE ) ) ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     899 [ #  # ][ #  # ]:          0 :                 xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameName")), uno::makeAny( aName ) );
         [ #  # ][ #  # ]
     900                 :            : 
     901         [ #  # ]:          0 :                 if ( eScroll == ScrollingAuto )
     902         [ #  # ]:          0 :                     xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameIsAutoScroll")),
     903 [ #  # ][ #  # ]:          0 :                         uno::makeAny( sal_True ) );
                 [ #  # ]
     904                 :            :                 else
     905         [ #  # ]:          0 :                     xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameIsScrollingMode")),
     906 [ #  # ][ #  # ]:          0 :                         uno::makeAny( (sal_Bool) ( eScroll == ScrollingYes) ) );
                 [ #  # ]
     907                 :            : 
     908         [ #  # ]:          0 :                 xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameIsBorder")),
     909 [ #  # ][ #  # ]:          0 :                         uno::makeAny( bHasBorder ) );
                 [ #  # ]
     910                 :            : 
     911         [ #  # ]:          0 :                 xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameMarginWidth")),
     912 [ #  # ][ #  # ]:          0 :                     uno::makeAny( sal_Int32( aMargin.Width() ) ) );
                 [ #  # ]
     913                 :            : 
     914         [ #  # ]:          0 :                 xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameMarginHeight")),
     915 [ #  # ][ #  # ]:          0 :                     uno::makeAny( sal_Int32( aMargin.Height() ) ) );
                 [ #  # ]
     916         [ #  # ]:          0 :             }
     917                 :            :         }
     918                 :            :     }
     919         [ #  # ]:          0 :     catch ( uno::Exception& )
     920                 :            :     {
     921                 :            :     }
     922                 :            : 
     923 [ #  # ][ #  # ]:          0 :     SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
     924         [ #  # ]:          0 :     SvxCSS1PropertyInfo aPropInfo;
     925         [ #  # ]:          0 :     if( HasStyleOptions( aStyle, aId, aClass ) )
     926         [ #  # ]:          0 :         ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
     927                 :            : 
     928                 :            :     // den Itemset holen
     929                 :          0 :     SfxItemSet aFrmSet( pDoc->GetAttrPool(),
     930         [ #  # ]:          0 :                         RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
     931         [ #  # ]:          0 :     if( !IsNewDoc() )
     932         [ #  # ]:          0 :         Reader::ResetFrmFmtAttrs( aFrmSet );
     933                 :            : 
     934                 :            :     // den Anker und die Ausrichtung setzen
     935         [ #  # ]:          0 :     SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, aFrmSet );
     936                 :            : 
     937                 :            :     // und noch die Groesse des Rahmens
     938                 :          0 :     Size aDfltSz( HTML_DFLT_APPLET_WIDTH, HTML_DFLT_APPLET_HEIGHT );
     939                 :            :     SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
     940         [ #  # ]:          0 :                 aFrmSet );
     941         [ #  # ]:          0 :     SetSpace( aSpace, aItemSet, aPropInfo, aFrmSet );
     942                 :            : 
     943                 :            :     // und in das Dok einfuegen
     944                 :            :     SwFrmFmt* pFlyFmt =
     945 [ #  # ][ #  # ]:          0 :         pDoc->Insert( *pPam, ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), &aFrmSet, NULL, NULL );
                 [ #  # ]
     946                 :            : 
     947                 :            :     // den alternativen Namen setzen
     948                 :            :     SwNoTxtNode *pNoTxtNd =
     949   [ #  #  #  # ]:          0 :         pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
     950         [ #  # ]:          0 :                           ->GetIndex()+1 ]->GetNoTxtNode();
     951         [ #  # ]:          0 :     pNoTxtNd->SetTitle( aAlt );
     952                 :            : 
     953                 :            :     // Ggf Frames anlegen und auto-geb. Rahmen registrieren
     954         [ #  # ]:          0 :     RegisterFlyFrm( pFlyFmt );
     955                 :            : 
     956 [ #  # ][ #  # ]:          0 :     bInFloatingFrame = sal_True;
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     957                 :          0 : }
     958                 :            : 
     959                 :            : 
     960                 :          0 : sal_uInt16 SwHTMLWriter::GuessOLENodeFrmType( const SwNode& rNode )
     961                 :            : {
     962                 :          0 :     SwOLEObj& rObj = ((SwOLENode*)rNode.GetOLENode())->GetOLEObj();
     963                 :            : 
     964                 :          0 :     SwHTMLFrmType eType = HTML_FRMTYPE_OLE;
     965                 :            : 
     966 [ #  # ][ #  # ]:          0 :     uno::Reference < embed::XClassifiedObject > xClass ( rObj.GetOleRef(), uno::UNO_QUERY );
     967 [ #  # ][ #  # ]:          0 :     SvGlobalName aClass( xClass->getClassID() );
         [ #  # ][ #  # ]
     968 [ #  # ][ #  # ]:          0 :     if( aClass == SvGlobalName( SO3_PLUGIN_CLASSID ) )
         [ #  # ][ #  # ]
     969                 :            :     {
     970                 :          0 :         eType = HTML_FRMTYPE_PLUGIN;
     971                 :            :     }
     972 [ #  # ][ #  # ]:          0 :     else if( aClass == SvGlobalName( SO3_IFRAME_CLASSID ) )
         [ #  # ][ #  # ]
     973                 :            :     {
     974                 :          0 :         eType = HTML_FRMTYPE_IFRAME;
     975                 :            :     }
     976                 :            : #ifdef SOLAR_JAVA
     977 [ #  # ][ #  # ]:          0 :     else if( aClass == SvGlobalName( SO3_APPLET_CLASSID ) )
         [ #  # ][ #  # ]
     978                 :            :     {
     979                 :          0 :         eType = HTML_FRMTYPE_APPLET;
     980                 :            :     }
     981                 :            : #endif
     982                 :            : 
     983         [ #  # ]:          0 :     return static_cast< sal_uInt16 >(eType);
     984                 :            : }
     985                 :            : 
     986                 :          0 : Writer& OutHTML_FrmFmtOLENode( Writer& rWrt, const SwFrmFmt& rFrmFmt,
     987                 :            :                                sal_Bool bInCntnr )
     988                 :            : {
     989                 :          0 :     SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
     990                 :            : 
     991         [ #  # ]:          0 :     const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
     992                 :          0 :     sal_uLong nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
     993 [ #  # ][ #  # ]:          0 :     SwOLENode *pOLENd = rHTMLWrt.pDoc->GetNodes()[ nStt ]->GetOLENode();
     994                 :            : 
     995                 :            :     OSL_ENSURE( pOLENd, "OLE-Node erwartet" );
     996         [ #  # ]:          0 :     if( !pOLENd )
     997                 :          0 :         return rWrt;
     998                 :            : 
     999                 :          0 :     SwOLEObj &rObj = pOLENd->GetOLEObj();
    1000                 :            : 
    1001         [ #  # ]:          0 :     uno::Reference < embed::XEmbeddedObject > xObj( rObj.GetOleRef() );
    1002 [ #  # ][ #  # ]:          0 :     if ( !svt::EmbeddedObjectRef::TryRunningState( xObj ) )
    1003                 :          0 :         return rWrt;
    1004                 :            : 
    1005 [ #  # ][ #  # ]:          0 :     uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
                 [ #  # ]
    1006                 :          0 :     sal_Bool bHiddenEmbed = sal_False;
    1007                 :            : 
    1008         [ #  # ]:          0 :     if( !xSet.is() )
    1009                 :            :     {
    1010                 :            :         OSL_FAIL("Unknown Object" );
    1011                 :          0 :         return rWrt;
    1012                 :            :     }
    1013                 :            : 
    1014                 :            :     sal_uLong nFrmOpts;
    1015                 :            : 
    1016                 :            :     // wenn meoglich vor dem "Objekt" einen Zeilen-Umbruch ausgeben
    1017         [ #  # ]:          0 :     if( rHTMLWrt.bLFPossible )
    1018         [ #  # ]:          0 :         rHTMLWrt.OutNewLine( sal_True );
    1019                 :            : 
    1020         [ #  # ]:          0 :     if( rFrmFmt.GetName().Len() )
    1021                 :          0 :         rHTMLWrt.OutImplicitMark( rFrmFmt.GetName(),
    1022         [ #  # ]:          0 :                                   pMarkToOLE );
    1023                 :          0 :     uno::Any aAny;
    1024 [ #  # ][ #  # ]:          0 :     SvGlobalName aGlobName( xObj->getClassID() );
         [ #  # ][ #  # ]
    1025                 :          0 :     rtl::OStringBuffer sOut;
    1026         [ #  # ]:          0 :     sOut.append('<');
    1027 [ #  # ][ #  # ]:          0 :     if( aGlobName == SvGlobalName( SO3_PLUGIN_CLASSID ) )
         [ #  # ][ #  # ]
    1028                 :            :     {
    1029                 :            :         // erstmal das Plug-spezifische
    1030         [ #  # ]:          0 :         sOut.append(OOO_STRING_SVTOOLS_HTML_embed);
    1031                 :            : 
    1032                 :          0 :         ::rtl::OUString aStr;
    1033         [ #  # ]:          0 :         String aURL;
    1034 [ #  # ][ #  # ]:          0 :         aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginURL")) );
                 [ #  # ]
    1035 [ #  # ][ #  # ]:          0 :         if( (aAny >>= aStr) && !aStr.isEmpty() )
                 [ #  # ]
    1036                 :            :         {
    1037                 :          0 :             aURL = URIHelper::simpleNormalizedMakeRelative( rWrt.GetBaseURL(),
    1038 [ #  # ][ #  # ]:          0 :                       aStr);
                 [ #  # ]
    1039                 :            :         }
    1040                 :            : 
    1041         [ #  # ]:          0 :         if( aURL.Len() )
    1042                 :            :         {
    1043 [ #  # ][ #  # ]:          0 :             sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_src)
    1044         [ #  # ]:          0 :                 .append("=\"");
    1045 [ #  # ][ #  # ]:          0 :             rWrt.Strm() << sOut.makeStringAndClear().getStr();
    1046 [ #  # ][ #  # ]:          0 :             HTMLOutFuncs::Out_String( rWrt.Strm(), aURL, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
    1047         [ #  # ]:          0 :             sOut.append('\"');
    1048                 :            :         }
    1049                 :            : 
    1050                 :          0 :         ::rtl::OUString aType;
    1051 [ #  # ][ #  # ]:          0 :         aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginMimeType")) );
                 [ #  # ]
    1052 [ #  # ][ #  # ]:          0 :         if( (aAny >>= aType) && !aType.isEmpty() )
                 [ #  # ]
    1053                 :            :         {
    1054 [ #  # ][ #  # ]:          0 :             sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_type)
    1055         [ #  # ]:          0 :                 .append("=\"");
    1056 [ #  # ][ #  # ]:          0 :             rWrt.Strm() << sOut.makeStringAndClear().getStr();
    1057 [ #  # ][ #  # ]:          0 :             HTMLOutFuncs::Out_String( rWrt.Strm(), aType, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
         [ #  # ][ #  # ]
    1058         [ #  # ]:          0 :             sOut.append('\"');
    1059                 :            :         }
    1060                 :            : 
    1061         [ #  # ]:          0 :         if ((FLY_AT_PARA == rFrmFmt.GetAnchor().GetAnchorId()) &&
           [ #  #  #  # ]
                 [ #  # ]
    1062         [ #  # ]:          0 :             SURROUND_THROUGHT == rFrmFmt.GetSurround().GetSurround() )
    1063                 :            :         {
    1064                 :            :             // Das Plugin ist HIDDEN
    1065 [ #  # ][ #  # ]:          0 :             sOut.append(' ').append(OOO_STRING_SW_HTML_O_Hidden);
    1066                 :          0 :             nFrmOpts = HTML_FRMOPTS_HIDDEN_EMBED;
    1067                 :          0 :             bHiddenEmbed = sal_True;
    1068                 :            :         }
    1069                 :            :         else
    1070                 :            :         {
    1071                 :            :             nFrmOpts = bInCntnr ? HTML_FRMOPTS_EMBED_CNTNR
    1072         [ #  # ]:          0 :                                 : HTML_FRMOPTS_EMBED;
    1073         [ #  # ]:          0 :         }
    1074                 :            :     }
    1075 [ #  # ][ #  # ]:          0 :     else if( aGlobName == SvGlobalName( SO3_APPLET_CLASSID ) )
         [ #  # ][ #  # ]
    1076                 :            :     {
    1077                 :            :         // oder das Applet-Spezifische
    1078                 :            : 
    1079         [ #  # ]:          0 :         sOut.append(OOO_STRING_SVTOOLS_HTML_applet);
    1080                 :            : 
    1081                 :            :         // CODEBASE
    1082                 :          0 :         ::rtl::OUString aCd;
    1083 [ #  # ][ #  # ]:          0 :         aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletCodeBase")) );
                 [ #  # ]
    1084 [ #  # ][ #  # ]:          0 :         if( (aAny >>= aCd) && !aCd.isEmpty() )
                 [ #  # ]
    1085                 :            :         {
    1086 [ #  # ][ #  # ]:          0 :             String sCodeBase( URIHelper::simpleNormalizedMakeRelative(rWrt.GetBaseURL(), aCd) );
                 [ #  # ]
    1087         [ #  # ]:          0 :             if( sCodeBase.Len() )
    1088                 :            :             {
    1089 [ #  # ][ #  # ]:          0 :                 sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_codebase)
    1090         [ #  # ]:          0 :                     .append("=\"");
    1091 [ #  # ][ #  # ]:          0 :                 rWrt.Strm() << sOut.makeStringAndClear().getStr();
    1092 [ #  # ][ #  # ]:          0 :                 HTMLOutFuncs::Out_String( rWrt.Strm(), sCodeBase, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
    1093         [ #  # ]:          0 :                 sOut.append('\"');
    1094         [ #  # ]:          0 :             }
    1095                 :            :         }
    1096                 :            : 
    1097                 :            :         // CODE
    1098                 :          0 :         ::rtl::OUString aClass;
    1099 [ #  # ][ #  # ]:          0 :         aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletCode")) );
                 [ #  # ]
    1100                 :          0 :         aAny >>= aClass;
    1101 [ #  # ][ #  # ]:          0 :         sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_code)
    1102         [ #  # ]:          0 :             .append("=\"");
    1103 [ #  # ][ #  # ]:          0 :         rWrt.Strm() << sOut.makeStringAndClear().getStr();
    1104 [ #  # ][ #  # ]:          0 :         HTMLOutFuncs::Out_String( rWrt.Strm(), aClass, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
         [ #  # ][ #  # ]
    1105         [ #  # ]:          0 :         sOut.append('\"');
    1106                 :            : 
    1107                 :            :         // NAME
    1108                 :          0 :         ::rtl::OUString aAppletName;
    1109 [ #  # ][ #  # ]:          0 :         aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletName")) );
                 [ #  # ]
    1110                 :          0 :         aAny >>= aAppletName;
    1111         [ #  # ]:          0 :         if( !aAppletName.isEmpty() )
    1112                 :            :         {
    1113 [ #  # ][ #  # ]:          0 :             sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_name)
    1114         [ #  # ]:          0 :                 .append("=\"");
    1115 [ #  # ][ #  # ]:          0 :             rWrt.Strm() << sOut.makeStringAndClear().getStr();
    1116 [ #  # ][ #  # ]:          0 :             HTMLOutFuncs::Out_String( rWrt.Strm(), aAppletName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
         [ #  # ][ #  # ]
    1117         [ #  # ]:          0 :             sOut.append('\"');
    1118                 :            :         }
    1119                 :            : 
    1120                 :          0 :         sal_Bool bScript = sal_False;
    1121 [ #  # ][ #  # ]:          0 :         aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletIsScript")) );
                 [ #  # ]
    1122                 :          0 :         aAny >>= bScript;
    1123         [ #  # ]:          0 :         if( bScript )
    1124 [ #  # ][ #  # ]:          0 :             sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_mayscript);
    1125                 :            : 
    1126                 :            :         nFrmOpts = bInCntnr ? HTML_FRMOPTS_APPLET_CNTNR
    1127         [ #  # ]:          0 :                             : HTML_FRMOPTS_APPLET;
    1128                 :            :     }
    1129                 :            :     else
    1130                 :            :     {
    1131                 :            :         // oder das Flating-Frame spezifische
    1132                 :            : 
    1133         [ #  # ]:          0 :         sOut.append(OOO_STRING_SVTOOLS_HTML_iframe);
    1134 [ #  # ][ #  # ]:          0 :         rWrt.Strm() << sOut.makeStringAndClear().getStr();
    1135                 :            : 
    1136         [ #  # ]:          0 :         SfxFrameHTMLWriter::Out_FrameDescriptor( rWrt.Strm(), rWrt.GetBaseURL(),
    1137                 :            :                                         xSet,
    1138                 :            :                                         rHTMLWrt.eDestEnc,
    1139         [ #  # ]:          0 :                                         &rHTMLWrt.aNonConvertableCharacters );
    1140                 :            : 
    1141                 :            :         nFrmOpts = bInCntnr ? HTML_FRMOPTS_IFRAME_CNTNR
    1142         [ #  # ]:          0 :                             : HTML_FRMOPTS_IFRAME;
    1143                 :            :     }
    1144                 :            : 
    1145 [ #  # ][ #  # ]:          0 :     rWrt.Strm() << sOut.makeStringAndClear().getStr();
    1146                 :            : 
    1147                 :            :     // ALT, WIDTH, HEIGHT, HSPACE, VSPACE, ALIGN
    1148 [ #  # ][ #  # ]:          0 :     if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bHiddenEmbed )
                 [ #  # ]
    1149                 :          0 :         nFrmOpts |= HTML_FRMOPTS_OLE_CSS1;
    1150 [ #  # ][ #  # ]:          0 :     rtl::OString aEndTags = rHTMLWrt.OutFrmFmtOptions( rFrmFmt, pOLENd->GetTitle(), nFrmOpts );
                 [ #  # ]
    1151 [ #  # ][ #  # ]:          0 :     if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bHiddenEmbed )
                 [ #  # ]
    1152         [ #  # ]:          0 :         rHTMLWrt.OutCSS1_FrmFmtOptions( rFrmFmt, nFrmOpts );
    1153                 :            : 
    1154 [ #  # ][ #  # ]:          0 :     if( aGlobName == SvGlobalName( SO3_APPLET_CLASSID ) )
         [ #  # ][ #  # ]
    1155                 :            :     {
    1156                 :            :         // fuer Applets die Parameter als eigene Tags ausgeben
    1157                 :            :         // und ein </APPLET> schreiben
    1158                 :            : 
    1159         [ #  # ]:          0 :         uno::Sequence < beans::PropertyValue > aProps;
    1160 [ #  # ][ #  # ]:          0 :         aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletCommands")) );
                 [ #  # ]
    1161         [ #  # ]:          0 :         aAny >>= aProps;
    1162                 :            : 
    1163         [ #  # ]:          0 :         SvCommandList aCommands;
    1164         [ #  # ]:          0 :         aCommands.FillFromSequence( aProps );
    1165         [ #  # ]:          0 :         std::vector<sal_uLong> aParams;
    1166                 :          0 :         size_t i = aCommands.size();
    1167         [ #  # ]:          0 :         while( i > 0 )
    1168                 :            :         {
    1169         [ #  # ]:          0 :             const SvCommand& rCommand = aCommands[ --i ];
    1170         [ #  # ]:          0 :             const String& rName = rCommand.GetCommand();
    1171 [ #  # ][ #  # ]:          0 :             sal_uInt16 nType = SwApplet_Impl::GetOptionType( rName, sal_True );
    1172         [ #  # ]:          0 :             if( SWHTML_OPTTYPE_TAG == nType )
    1173                 :            :             {
    1174         [ #  # ]:          0 :                 const String& rValue = rCommand.GetArgument();
    1175 [ #  # ][ #  # ]:          0 :                 rWrt.Strm() << ' ';
    1176 [ #  # ][ #  # ]:          0 :                 HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
    1177 [ #  # ][ #  # ]:          0 :                 rWrt.Strm() << "=\"";
    1178 [ #  # ][ #  # ]:          0 :                 HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << '\"';
         [ #  # ][ #  # ]
    1179                 :            :             }
    1180         [ #  # ]:          0 :             else if( SWHTML_OPTTYPE_PARAM == nType )
    1181                 :            :             {
    1182         [ #  # ]:          0 :                 aParams.push_back( i );
    1183                 :            :             }
    1184         [ #  # ]:          0 :         }
    1185                 :            : 
    1186 [ #  # ][ #  # ]:          0 :         rHTMLWrt.Strm() << '>';
    1187                 :            : 
    1188                 :          0 :         rHTMLWrt.IncIndentLevel(); // Inhalt von Applet einruecken
    1189                 :            : 
    1190                 :          0 :         sal_uInt16 ii = aParams.size();
    1191         [ #  # ]:          0 :         while( ii > 0  )
    1192                 :            :         {
    1193 [ #  # ][ #  # ]:          0 :             const SvCommand& rCommand = aCommands[ aParams[--ii] ];
    1194         [ #  # ]:          0 :             const String& rName = rCommand.GetCommand();
    1195         [ #  # ]:          0 :             const String& rValue = rCommand.GetArgument();
    1196         [ #  # ]:          0 :             rHTMLWrt.OutNewLine();
    1197                 :          0 :             rtl::OStringBuffer sBuf;
    1198 [ #  # ][ #  # ]:          0 :             sBuf.append('<').append(OOO_STRING_SVTOOLS_HTML_param)
    1199 [ #  # ][ #  # ]:          0 :                 .append(' ').append(OOO_STRING_SVTOOLS_HTML_O_name)
    1200         [ #  # ]:          0 :                 .append("=\"");
    1201 [ #  # ][ #  # ]:          0 :             rWrt.Strm() << sBuf.makeStringAndClear().getStr();
    1202 [ #  # ][ #  # ]:          0 :             HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
    1203 [ #  # ][ #  # ]:          0 :             sBuf.append("\" ").append(OOO_STRING_SVTOOLS_HTML_O_value)
    1204         [ #  # ]:          0 :                 .append("=\"");
    1205 [ #  # ][ #  # ]:          0 :             rWrt.Strm() << sBuf.makeStringAndClear().getStr();
    1206 [ #  # ][ #  # ]:          0 :             HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << "\">";
                 [ #  # ]
    1207 [ #  # ][ #  # ]:          0 :         }
    1208                 :            : 
    1209                 :          0 :         rHTMLWrt.DecIndentLevel(); // Inhalt von Applet einruecken
    1210         [ #  # ]:          0 :         if( aCommands.size() )
    1211         [ #  # ]:          0 :             rHTMLWrt.OutNewLine();
    1212 [ #  # ][ #  # ]:          0 :         HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), OOO_STRING_SVTOOLS_HTML_applet, sal_False );
                 [ #  # ]
    1213                 :            :     }
    1214                 :            :     else
    1215 [ #  # ][ #  # ]:          0 :     if( aGlobName == SvGlobalName( SO3_PLUGIN_CLASSID ) )
         [ #  # ][ #  # ]
    1216                 :            :     {
    1217                 :            :         // fuer Plugins die Paramater als Optionen schreiben
    1218                 :            : 
    1219         [ #  # ]:          0 :         uno::Sequence < beans::PropertyValue > aProps;
    1220 [ #  # ][ #  # ]:          0 :         aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginCommands")) );
                 [ #  # ]
    1221         [ #  # ]:          0 :         aAny >>= aProps;
    1222                 :            : 
    1223         [ #  # ]:          0 :         SvCommandList aCommands;
    1224         [ #  # ]:          0 :         aCommands.FillFromSequence( aProps );
    1225         [ #  # ]:          0 :         for( size_t i = 0; i < aCommands.size(); i++ )
    1226                 :            :         {
    1227         [ #  # ]:          0 :             const SvCommand& rCommand = aCommands[ i ];
    1228         [ #  # ]:          0 :             const String& rName = rCommand.GetCommand();
    1229                 :            : 
    1230 [ #  # ][ #  # ]:          0 :             if( SwApplet_Impl::GetOptionType( rName, sal_False ) == SWHTML_OPTTYPE_TAG )
                 [ #  # ]
    1231                 :            :             {
    1232         [ #  # ]:          0 :                 const String& rValue = rCommand.GetArgument();
    1233 [ #  # ][ #  # ]:          0 :                 rWrt.Strm() << ' ';
    1234 [ #  # ][ #  # ]:          0 :                 HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
    1235 [ #  # ][ #  # ]:          0 :                 rWrt.Strm() << "=\"";
    1236 [ #  # ][ #  # ]:          0 :                 HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << '\"';
         [ #  # ][ #  # ]
    1237                 :            :             }
    1238         [ #  # ]:          0 :         }
    1239 [ #  # ][ #  # ]:          0 :         rHTMLWrt.Strm() << '>';
                 [ #  # ]
    1240                 :            :     }
    1241                 :            :     else
    1242                 :            :     {
    1243                 :            :         // und fuer Floating-Frames einfach noch ein </IFRAME>
    1244                 :            :         // ausgeben
    1245                 :            : 
    1246 [ #  # ][ #  # ]:          0 :         rHTMLWrt.Strm() << '>';
    1247 [ #  # ][ #  # ]:          0 :         HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), OOO_STRING_SVTOOLS_HTML_iframe, sal_False );
    1248                 :            :     }
    1249                 :            : 
    1250         [ #  # ]:          0 :     if( !aEndTags.isEmpty() )
    1251 [ #  # ][ #  # ]:          0 :         rWrt.Strm() << aEndTags.getStr();
    1252                 :            : 
    1253         [ #  # ]:          0 :     return rWrt;
    1254                 :            : }
    1255                 :            : 
    1256                 :          0 : Writer& OutHTML_FrmFmtOLENodeGrf( Writer& rWrt, const SwFrmFmt& rFrmFmt,
    1257                 :            :                                   sal_Bool bInCntnr )
    1258                 :            : {
    1259                 :          0 :     SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
    1260                 :            : 
    1261                 :          0 :     const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
    1262                 :          0 :     sal_uLong nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
    1263                 :          0 :     SwOLENode *pOLENd = rHTMLWrt.pDoc->GetNodes()[ nStt ]->GetOLENode();
    1264                 :            : 
    1265                 :            :     OSL_ENSURE( pOLENd, "OLE-Node erwartet" );
    1266         [ #  # ]:          0 :     if( !pOLENd )
    1267                 :          0 :         return rWrt;
    1268                 :            : 
    1269                 :            :     {
    1270 [ #  # ][ #  # ]:          0 :         Graphic aGrf( *pOLENd->GetGraphic() );
    1271         [ #  # ]:          0 :         String aGrfNm;
    1272                 :          0 :         const String* pTempFileName = rHTMLWrt.GetOrigFileName();
    1273         [ #  # ]:          0 :         if(pTempFileName)
    1274         [ #  # ]:          0 :             aGrfNm = *pTempFileName;
    1275                 :            : 
    1276                 :            :         sal_uInt16 nErr = XOutBitmap::WriteGraphic( aGrf, aGrfNm,
    1277                 :            :                                     rtl::OUString("JPG"),
    1278                 :            :                                     (XOUTBMP_USE_GIF_IF_POSSIBLE |
    1279 [ #  # ][ #  # ]:          0 :                                      XOUTBMP_USE_NATIVE_IF_POSSIBLE) );
                 [ #  # ]
    1280         [ #  # ]:          0 :         if( nErr )              // fehlerhaft, da ist nichts auszugeben
    1281                 :            :         {
    1282                 :          0 :             rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
    1283                 :          0 :             return rWrt;
    1284                 :            :         }
    1285                 :            :         aGrfNm = URIHelper::SmartRel2Abs(
    1286                 :          0 :             INetURLObject(rWrt.GetBaseURL()), aGrfNm,
    1287         [ #  # ]:          0 :             URIHelper::GetMaybeFileHdl() );
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1288                 :            :         sal_uLong nFlags = bInCntnr ? HTML_FRMOPTS_GENIMG_CNTNR
    1289         [ #  # ]:          0 :                                   : HTML_FRMOPTS_GENIMG;
    1290                 :            :         OutHTML_Image( rWrt, rFrmFmt, aGrfNm,
    1291                 :          0 :                        pOLENd->GetTitle(), pOLENd->GetTwipSize(),
    1292 [ #  # ][ #  # ]:          0 :                        nFlags, pMarkToOLE );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1293                 :            :     }
    1294                 :            : 
    1295                 :          0 :     return rWrt;
    1296                 :            : }
    1297                 :            : 
    1298                 :            : 
    1299                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10