LCOV - code coverage report
Current view: top level - basic/source/runtime - stdobj1.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 29 224 12.9 %
Date: 2015-06-13 12:38:46 Functions: 5 53 9.4 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <vcl/wrkwin.hxx>
      21             : #include <vcl/svapp.hxx>
      22             : #include <svtools/transfer.hxx>
      23             : #include "runtime.hxx"
      24             : #include "sbstdobj.hxx"
      25             : 
      26             : #define ATTR_IMP_TYPE           1
      27             : #define ATTR_IMP_WIDTH          2
      28             : #define ATTR_IMP_HEIGHT         3
      29             : #define ATTR_IMP_BOLD           4
      30             : #define ATTR_IMP_ITALIC         5
      31             : #define ATTR_IMP_STRIKETHROUGH  6
      32             : #define ATTR_IMP_UNDERLINE      7
      33             : #define ATTR_IMP_SIZE           9
      34             : #define ATTR_IMP_NAME           10
      35             : 
      36             : #define METH_CLEAR              20
      37             : #define METH_GETDATA            21
      38             : #define METH_GETFORMAT          22
      39             : #define METH_GETTEXT            23
      40             : #define METH_SETDATA            24
      41             : #define METH_SETTEXT            25
      42             : 
      43             : 
      44        3188 : SbStdFactory::SbStdFactory()
      45             : {
      46        3188 : }
      47             : 
      48           0 : SbxObject* SbStdFactory::CreateObject( const OUString& rClassName )
      49             : {
      50           0 :     if( rClassName.equalsIgnoreAsciiCase("Picture") )
      51           0 :         return new SbStdPicture;
      52           0 :     else if( rClassName.equalsIgnoreAsciiCase("Font") )
      53           0 :         return new SbStdFont;
      54             :     else
      55           0 :         return NULL;
      56             : }
      57             : 
      58             : 
      59             : 
      60             : 
      61             : 
      62           0 : void SbStdPicture::PropType( SbxVariable* pVar, SbxArray*, bool bWrite )
      63             : {
      64           0 :     if( bWrite )
      65             :     {
      66           0 :         StarBASIC::Error( SbERR_PROP_READONLY );
      67           0 :         return;
      68             :     }
      69             : 
      70           0 :     GraphicType eType = aGraphic.GetType();
      71           0 :     sal_Int16 nType = 0;
      72             : 
      73           0 :     if( eType == GRAPHIC_BITMAP )
      74           0 :         nType = 1;
      75           0 :     else if( eType != GRAPHIC_NONE )
      76           0 :         nType = 2;
      77             : 
      78           0 :     pVar->PutInteger( nType );
      79             : }
      80             : 
      81             : 
      82           0 : void SbStdPicture::PropWidth( SbxVariable* pVar, SbxArray*, bool bWrite )
      83             : {
      84           0 :     if( bWrite )
      85             :     {
      86           0 :         StarBASIC::Error( SbERR_PROP_READONLY );
      87           0 :         return;
      88             :     }
      89             : 
      90           0 :     Size aSize = aGraphic.GetPrefSize();
      91           0 :     aSize = Application::GetAppWindow()->LogicToPixel( aSize, aGraphic.GetPrefMapMode() );
      92           0 :     aSize = Application::GetAppWindow()->PixelToLogic( aSize, MapMode( MAP_TWIP ) );
      93             : 
      94           0 :     pVar->PutInteger( (sal_Int16)aSize.Width() );
      95             : }
      96             : 
      97           0 : void SbStdPicture::PropHeight( SbxVariable* pVar, SbxArray*, bool bWrite )
      98             : {
      99           0 :     if( bWrite )
     100             :     {
     101           0 :         StarBASIC::Error( SbERR_PROP_READONLY );
     102           0 :         return;
     103             :     }
     104             : 
     105           0 :     Size aSize = aGraphic.GetPrefSize();
     106           0 :     aSize = Application::GetAppWindow()->LogicToPixel( aSize, aGraphic.GetPrefMapMode() );
     107           0 :     aSize = Application::GetAppWindow()->PixelToLogic( aSize, MapMode( MAP_TWIP ) );
     108             : 
     109           0 :     pVar->PutInteger( (sal_Int16)aSize.Height() );
     110             : }
     111             : 
     112             : 
     113           0 : TYPEINIT1( SbStdPicture, SbxObject );
     114             : 
     115           0 : SbStdPicture::SbStdPicture() :
     116           0 :     SbxObject( OUString("Picture"))
     117             : {
     118             :     // Properties
     119           0 :     SbxVariable* p = Make( OUString("Type"), SbxCLASS_PROPERTY, SbxVARIANT );
     120           0 :     p->SetFlags( SBX_READ | SBX_DONTSTORE );
     121           0 :     p->SetUserData( ATTR_IMP_TYPE );
     122           0 :     p = Make( OUString("Width"), SbxCLASS_PROPERTY, SbxVARIANT );
     123           0 :     p->SetFlags( SBX_READ | SBX_DONTSTORE );
     124           0 :     p->SetUserData( ATTR_IMP_WIDTH );
     125           0 :     p = Make( OUString("Height"), SbxCLASS_PROPERTY, SbxVARIANT );
     126           0 :     p->SetFlags( SBX_READ | SBX_DONTSTORE );
     127           0 :     p->SetUserData( ATTR_IMP_HEIGHT );
     128           0 : }
     129             : 
     130           0 : SbStdPicture::~SbStdPicture()
     131             : {
     132           0 : }
     133             : 
     134             : 
     135           0 : SbxVariable* SbStdPicture::Find( const OUString& rName, SbxClassType t )
     136             : {
     137             :     // entered already?
     138           0 :     return SbxObject::Find( rName, t );
     139             : }
     140             : 
     141             : 
     142             : 
     143           0 : void SbStdPicture::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
     144             :                                const SfxHint& rHint, const TypeId& rHintType )
     145             : 
     146             : {
     147           0 :     const SbxHint* pHint = dynamic_cast<const SbxHint*>(&rHint);
     148             : 
     149           0 :     if( pHint )
     150             :     {
     151           0 :         if( pHint->GetId() == SBX_HINT_INFOWANTED )
     152             :         {
     153           0 :             SbxObject::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
     154           0 :             return;
     155             :         }
     156             : 
     157           0 :         SbxVariable* pVar   = pHint->GetVar();
     158           0 :         SbxArray*    pPar_  = pVar->GetParameters();
     159           0 :         sal_uInt16       nWhich = (sal_uInt16)pVar->GetUserData();
     160           0 :         bool         bWrite = pHint->GetId() == SBX_HINT_DATACHANGED;
     161             : 
     162             :         // Propteries
     163           0 :         switch( nWhich )
     164             :         {
     165           0 :             case ATTR_IMP_TYPE:     PropType( pVar, pPar_, bWrite ); return;
     166           0 :             case ATTR_IMP_WIDTH:    PropWidth( pVar, pPar_, bWrite ); return;
     167           0 :             case ATTR_IMP_HEIGHT:   PropHeight( pVar, pPar_, bWrite ); return;
     168             :         }
     169             : 
     170           0 :         SbxObject::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
     171             :     }
     172             : }
     173             : 
     174             : 
     175             : 
     176           0 : void SbStdFont::PropBold( SbxVariable* pVar, SbxArray*, bool bWrite )
     177             : {
     178           0 :     if( bWrite )
     179           0 :         SetBold( pVar->GetBool() );
     180             :     else
     181           0 :         pVar->PutBool( IsBold() );
     182           0 : }
     183             : 
     184           0 : void SbStdFont::PropItalic( SbxVariable* pVar, SbxArray*, bool bWrite )
     185             : {
     186           0 :     if( bWrite )
     187           0 :         SetItalic( pVar->GetBool() );
     188             :     else
     189           0 :         pVar->PutBool( IsItalic() );
     190           0 : }
     191             : 
     192           0 : void SbStdFont::PropStrikeThrough( SbxVariable* pVar, SbxArray*, bool bWrite )
     193             : {
     194           0 :     if( bWrite )
     195           0 :         SetStrikeThrough( pVar->GetBool() );
     196             :     else
     197           0 :         pVar->PutBool( IsStrikeThrough() );
     198           0 : }
     199             : 
     200           0 : void SbStdFont::PropUnderline( SbxVariable* pVar, SbxArray*, bool bWrite )
     201             : {
     202           0 :     if( bWrite )
     203           0 :         SetUnderline( pVar->GetBool() );
     204             :     else
     205           0 :         pVar->PutBool( IsUnderline() );
     206           0 : }
     207             : 
     208           0 : void SbStdFont::PropSize( SbxVariable* pVar, SbxArray*, bool bWrite )
     209             : {
     210           0 :     if( bWrite )
     211           0 :         SetSize( (sal_uInt16)pVar->GetInteger() );
     212             :     else
     213           0 :         pVar->PutInteger( (sal_Int16)GetSize() );
     214           0 : }
     215             : 
     216           0 : void SbStdFont::PropName( SbxVariable* pVar, SbxArray*, bool bWrite )
     217             : {
     218           0 :     if( bWrite )
     219             :     {
     220           0 :         SetFontName( pVar->GetOUString() );
     221             :     }
     222             :     else
     223             :     {
     224           0 :         pVar->PutString( GetFontName() );
     225             :     }
     226           0 : }
     227             : 
     228           0 : TYPEINIT1( SbStdFont, SbxObject );
     229             : 
     230           0 : SbStdFont::SbStdFont()
     231             :     : SbxObject( OUString("Font") )
     232             :     , bBold(false)
     233             :     , bItalic(false)
     234             :     , bStrikeThrough(false)
     235             :     , bUnderline(false)
     236           0 :     , nSize(0)
     237             : {
     238             :     // Properties
     239           0 :     SbxVariable* p = Make( OUString("Bold"), SbxCLASS_PROPERTY, SbxVARIANT );
     240           0 :     p->SetFlags( SBX_READWRITE | SBX_DONTSTORE );
     241           0 :     p->SetUserData( ATTR_IMP_BOLD );
     242           0 :     p = Make( OUString("Italic"), SbxCLASS_PROPERTY, SbxVARIANT );
     243           0 :     p->SetFlags( SBX_READWRITE | SBX_DONTSTORE );
     244           0 :     p->SetUserData( ATTR_IMP_ITALIC );
     245           0 :     p = Make( OUString("StrikeThrough"), SbxCLASS_PROPERTY, SbxVARIANT );
     246           0 :     p->SetFlags( SBX_READWRITE | SBX_DONTSTORE );
     247           0 :     p->SetUserData( ATTR_IMP_STRIKETHROUGH );
     248           0 :     p = Make( OUString("Underline"), SbxCLASS_PROPERTY, SbxVARIANT );
     249           0 :     p->SetFlags( SBX_READWRITE | SBX_DONTSTORE );
     250           0 :     p->SetUserData( ATTR_IMP_UNDERLINE );
     251           0 :     p = Make( OUString("Size"), SbxCLASS_PROPERTY, SbxVARIANT );
     252           0 :     p->SetFlags( SBX_READWRITE | SBX_DONTSTORE );
     253           0 :     p->SetUserData( ATTR_IMP_SIZE );
     254             : 
     255             :     // handle name property yourself
     256           0 :     p = Find( OUString("Name"), SbxCLASS_PROPERTY );
     257             :     assert(p && "No Name Property");
     258           0 :     p->SetUserData( ATTR_IMP_NAME );
     259           0 : }
     260             : 
     261           0 : SbStdFont::~SbStdFont()
     262             : {
     263           0 : }
     264             : 
     265           0 : SbxVariable* SbStdFont::Find( const OUString& rName, SbxClassType t )
     266             : {
     267           0 :     return SbxObject::Find( rName, t );
     268             : }
     269             : 
     270           0 : void SbStdFont::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
     271             :                             const SfxHint& rHint, const TypeId& rHintType )
     272             : {
     273           0 :     const SbxHint* pHint = dynamic_cast<const SbxHint*>(&rHint);
     274             : 
     275           0 :     if( pHint )
     276             :     {
     277           0 :         if( pHint->GetId() == SBX_HINT_INFOWANTED )
     278             :         {
     279           0 :             SbxObject::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
     280           0 :             return;
     281             :         }
     282             : 
     283           0 :         SbxVariable* pVar   = pHint->GetVar();
     284           0 :         SbxArray*    pPar_  = pVar->GetParameters();
     285           0 :         sal_uInt16       nWhich = (sal_uInt16)pVar->GetUserData();
     286           0 :         bool         bWrite = pHint->GetId() == SBX_HINT_DATACHANGED;
     287             : 
     288             :         // Propteries
     289           0 :         switch( nWhich )
     290             :         {
     291           0 :             case ATTR_IMP_BOLD:         PropBold( pVar, pPar_, bWrite ); return;
     292           0 :             case ATTR_IMP_ITALIC:       PropItalic( pVar, pPar_, bWrite ); return;
     293           0 :             case ATTR_IMP_STRIKETHROUGH:PropStrikeThrough( pVar, pPar_, bWrite ); return;
     294           0 :             case ATTR_IMP_UNDERLINE:    PropUnderline( pVar, pPar_, bWrite ); return;
     295           0 :             case ATTR_IMP_SIZE:         PropSize( pVar, pPar_, bWrite ); return;
     296           0 :             case ATTR_IMP_NAME:         PropName( pVar, pPar_, bWrite ); return;
     297             :         }
     298             : 
     299           0 :         SbxObject::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
     300             :     }
     301             : }
     302             : 
     303             : 
     304             : 
     305             : 
     306             : 
     307           0 : void SbStdClipboard::MethClear( SbxVariable*, SbxArray* pPar_, bool )
     308             : {
     309           0 :     if( pPar_ && (pPar_->Count() > 1) )
     310             :     {
     311           0 :         StarBASIC::Error( SbERR_BAD_NUMBER_OF_ARGS );
     312           0 :         return;
     313             :     }
     314             : 
     315             : }
     316             : 
     317           0 : void SbStdClipboard::MethGetData( SbxVariable* pVar, SbxArray* pPar_, bool )
     318             : {
     319             :     (void)pVar;
     320             : 
     321           0 :     if( !pPar_ || (pPar_->Count() != 2) )
     322             :     {
     323           0 :         StarBASIC::Error( SbERR_BAD_NUMBER_OF_ARGS );
     324           0 :         return;
     325             :     }
     326             : 
     327           0 :     sal_uInt16 nFormat = pPar_->Get(1)->GetInteger();
     328           0 :     if( !nFormat  || nFormat > 3 )
     329             :     {
     330           0 :         StarBASIC::Error( SbERR_BAD_ARGUMENT );
     331           0 :         return;
     332             :     }
     333             : 
     334             : }
     335             : 
     336           0 : void SbStdClipboard::MethGetFormat( SbxVariable* pVar, SbxArray* pPar_, bool )
     337             : {
     338           0 :     if( !pPar_ || (pPar_->Count() != 2) )
     339             :     {
     340           0 :         StarBASIC::Error( SbERR_BAD_NUMBER_OF_ARGS );
     341           0 :         return;
     342             :     }
     343             : 
     344           0 :     sal_uInt16 nFormat = pPar_->Get(1)->GetInteger();
     345           0 :     if( !nFormat  || nFormat > 3 )
     346             :     {
     347           0 :         StarBASIC::Error( SbERR_BAD_ARGUMENT );
     348           0 :         return;
     349             :     }
     350             : 
     351           0 :     pVar->PutBool( false );
     352             : }
     353             : 
     354           0 : void SbStdClipboard::MethGetText( SbxVariable* pVar, SbxArray* pPar_, bool )
     355             : {
     356           0 :     if( pPar_ && (pPar_->Count() > 1) )
     357             :     {
     358           0 :         StarBASIC::Error( SbERR_BAD_NUMBER_OF_ARGS );
     359           0 :         return;
     360             :     }
     361             : 
     362           0 :     pVar->PutString( OUString() );
     363             : }
     364             : 
     365           0 : void SbStdClipboard::MethSetData( SbxVariable* pVar, SbxArray* pPar_, bool )
     366             : {
     367             :     (void)pVar;
     368             : 
     369           0 :     if( !pPar_ || (pPar_->Count() != 3) )
     370             :     {
     371           0 :         StarBASIC::Error( SbERR_BAD_NUMBER_OF_ARGS );
     372           0 :         return;
     373             :     }
     374             : 
     375           0 :     sal_uInt16 nFormat = pPar_->Get(2)->GetInteger();
     376           0 :     if( !nFormat  || nFormat > 3 )
     377             :     {
     378           0 :         StarBASIC::Error( SbERR_BAD_ARGUMENT );
     379           0 :         return;
     380             :     }
     381             : 
     382             : }
     383             : 
     384           0 : void SbStdClipboard::MethSetText( SbxVariable* pVar, SbxArray* pPar_, bool )
     385             : {
     386             :     (void)pVar;
     387             : 
     388           0 :     if( !pPar_ || (pPar_->Count() != 2) )
     389             :     {
     390           0 :         StarBASIC::Error( SbERR_BAD_NUMBER_OF_ARGS );
     391           0 :         return;
     392             :     }
     393             : 
     394             : }
     395             : 
     396             : 
     397           0 : TYPEINIT1( SbStdClipboard, SbxObject );
     398             : 
     399        3188 : SbStdClipboard::SbStdClipboard() :
     400        3188 :     SbxObject( OUString("Clipboard") )
     401             : {
     402        3188 :     SbxVariable* p = Find( OUString("Name"), SbxCLASS_PROPERTY );
     403             :     assert(p && "No Name Property");
     404        3188 :     p->SetUserData( ATTR_IMP_NAME );
     405             : 
     406             :     // register methods
     407        3188 :     p = Make( OUString("Clear"), SbxCLASS_METHOD, SbxEMPTY );
     408        3188 :     p->SetFlag( SBX_DONTSTORE );
     409        3188 :     p->SetUserData( METH_CLEAR );
     410        3188 :     p = Make( OUString("GetData"), SbxCLASS_METHOD, SbxEMPTY );
     411        3188 :     p->SetFlag( SBX_DONTSTORE );
     412        3188 :     p->SetUserData( METH_GETDATA );
     413        3188 :     p = Make( OUString("GetFormat"), SbxCLASS_METHOD, SbxEMPTY );
     414        3188 :     p->SetFlag( SBX_DONTSTORE );
     415        3188 :     p->SetUserData( METH_GETFORMAT );
     416        3188 :     p = Make( OUString("GetText"), SbxCLASS_METHOD, SbxEMPTY );
     417        3188 :     p->SetFlag( SBX_DONTSTORE );
     418        3188 :     p->SetUserData( METH_GETTEXT );
     419        3188 :     p = Make( OUString("SetData"), SbxCLASS_METHOD, SbxEMPTY );
     420        3188 :     p->SetFlag( SBX_DONTSTORE );
     421        3188 :     p->SetUserData( METH_SETDATA );
     422        3188 :     p = Make( OUString("SetText"), SbxCLASS_METHOD, SbxEMPTY );
     423        3188 :     p->SetFlag( SBX_DONTSTORE );
     424        3188 :     p->SetUserData( METH_SETTEXT );
     425        3188 : }
     426             : 
     427        7611 : SbStdClipboard::~SbStdClipboard()
     428             : {
     429        7611 : }
     430             : 
     431             : 
     432        3188 : SbxVariable* SbStdClipboard::Find( const OUString& rName, SbxClassType t )
     433             : {
     434        3188 :     return SbxObject::Find( rName, t );
     435             : }
     436             : 
     437             : 
     438             : 
     439           0 : void SbStdClipboard::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
     440             :                                  const SfxHint& rHint, const TypeId& rHintType )
     441             : {
     442           0 :     const SbxHint* pHint = dynamic_cast<const SbxHint*>(&rHint);
     443             : 
     444           0 :     if( pHint )
     445             :     {
     446           0 :         if( pHint->GetId() == SBX_HINT_INFOWANTED )
     447             :         {
     448           0 :             SbxObject::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
     449           0 :             return;
     450             :         }
     451             : 
     452           0 :         SbxVariable* pVar   = pHint->GetVar();
     453           0 :         SbxArray*    pPar_  = pVar->GetParameters();
     454           0 :         sal_uInt16       nWhich = (sal_uInt16)pVar->GetUserData();
     455           0 :         bool         bWrite = pHint->GetId() == SBX_HINT_DATACHANGED;
     456             : 
     457             :         // Methods
     458           0 :         switch( nWhich )
     459             :         {
     460           0 :             case METH_CLEAR:            MethClear( pVar, pPar_, bWrite ); return;
     461           0 :             case METH_GETDATA:          MethGetData( pVar, pPar_, bWrite ); return;
     462           0 :             case METH_GETFORMAT:        MethGetFormat( pVar, pPar_, bWrite ); return;
     463           0 :             case METH_GETTEXT:          MethGetText( pVar, pPar_, bWrite ); return;
     464           0 :             case METH_SETDATA:          MethSetData( pVar, pPar_, bWrite ); return;
     465           0 :             case METH_SETTEXT:          MethSetText( pVar, pPar_, bWrite ); return;
     466             :         }
     467             : 
     468           0 :         SbxObject::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
     469             :     }
     470             : }
     471             : 
     472             : 
     473             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11