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

Generated by: LCOV version 1.10