LCOV - code coverage report
Current view: top level - sd/source/ui/view - drviews9.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 407 0.0 %
Date: 2014-04-14 Functions: 0 4 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : 
      21             : #include "DrawViewShell.hxx"
      22             : #include <vcl/wrkwin.hxx>
      23             : #include <svx/xgrad.hxx>
      24             : #include <svx/svdpagv.hxx>
      25             : #include <svx/xlnwtit.hxx>
      26             : #include <svx/xlndsit.hxx>
      27             : #include <svx/xflhtit.hxx>
      28             : #include <svx/xflgrit.hxx>
      29             : #include <svx/xlnclit.hxx>
      30             : #include <svx/xflclit.hxx>
      31             : #include <sfx2/bindings.hxx>
      32             : 
      33             : #include <sfx2/dispatch.hxx>
      34             : #include <svl/intitem.hxx>
      35             : #include <sfx2/app.hxx>
      36             : #include <sfx2/request.hxx>
      37             : #include <svl/stritem.hxx>
      38             : #include <svx/svxids.hrc>
      39             : #include <svx/xtable.hxx>
      40             : #include <svx/gallery.hxx>
      41             : #include <vcl/graph.hxx>
      42             : #include <svx/svdograf.hxx>
      43             : #include <svx/svdoole2.hxx>
      44             : #include <sot/storage.hxx>
      45             : #include <svl/whiter.hxx>
      46             : #include <basic/sbstar.hxx>
      47             : 
      48             : #include <sfx2/viewfrm.hxx>
      49             : 
      50             : 
      51             : #include "app.hrc"
      52             : #include "strings.hrc"
      53             : #include "Window.hxx"
      54             : #include "drawdoc.hxx"
      55             : #include "drawview.hxx"
      56             : #include "DrawDocShell.hxx"
      57             : #include "sdresid.hxx"
      58             : #include "fupoor.hxx"
      59             : 
      60             : #include <svx/galleryitem.hxx>
      61             : #include <com/sun/star/gallery/GalleryItemType.hpp>
      62             : 
      63             : namespace sd {
      64             : 
      65             : 
      66           0 : void DrawViewShell::ExecGallery(SfxRequest& rReq)
      67             : {
      68             :     // nothing is executed during a slide show!
      69           0 :     if(HasCurrentFunction(SID_PRESENTATION))
      70           0 :         return;
      71             : 
      72           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
      73             : 
      74           0 :     SFX_ITEMSET_ARG( pArgs, pGalleryItem, SvxGalleryItem, SID_GALLERY_FORMATS, false );
      75           0 :     if ( !pGalleryItem )
      76           0 :         return;
      77             : 
      78           0 :     GetDocSh()->SetWaitCursor( true );
      79             : 
      80           0 :     sal_Int8 nType( pGalleryItem->GetType() );
      81             :     // insert graphic
      82           0 :     if (nType == com::sun::star::gallery::GalleryItemType::GRAPHIC)
      83             :     {
      84           0 :         Graphic aGraphic( pGalleryItem->GetGraphic() );
      85             : 
      86             :         // reduce size if necessary
      87           0 :         Window aWindow (GetActiveWindow());
      88           0 :         aWindow.SetMapMode(aGraphic.GetPrefMapMode());
      89           0 :         Size aSizePix = aWindow.LogicToPixel(aGraphic.GetPrefSize());
      90           0 :         aWindow.SetMapMode( MapMode(MAP_100TH_MM) );
      91           0 :         Size aSize = aWindow.PixelToLogic(aSizePix);
      92             : 
      93             :         // constrain size to page size if necessary
      94           0 :         SdrPage* pPage = mpDrawView->GetSdrPageView()->GetPage();
      95           0 :         Size aPageSize = pPage->GetSize();
      96           0 :         aPageSize.Width() -= pPage->GetLftBorder() + pPage->GetRgtBorder();
      97           0 :         aPageSize.Height() -= pPage->GetUppBorder() + pPage->GetLwrBorder();
      98             : 
      99             : 
     100             :         // Falls Grafik zu gross, wird die Grafik
     101             :         // in die Seite eingepasst
     102           0 :         if ( ( ( aSize.Height() > aPageSize.Height() ) || ( aSize.Width()   > aPageSize.Width() ) ) &&
     103           0 :             aSize.Height() && aPageSize.Height() )
     104             :         {
     105           0 :             float fGrfWH =  (float)aSize.Width() /
     106           0 :                             (float)aSize.Height();
     107           0 :             float fWinWH =  (float)aPageSize.Width() /
     108           0 :                             (float)aPageSize.Height();
     109             : 
     110             :             // constrain size to page size if necessary
     111           0 :             if ((fGrfWH != 0.F) && (fGrfWH < fWinWH))
     112             :             {
     113           0 :                 aSize.Width() = (long)(aPageSize.Height() * fGrfWH);
     114           0 :                 aSize.Height()= aPageSize.Height();
     115             :             }
     116             :             else
     117             :             {
     118           0 :                 aSize.Width() = aPageSize.Width();
     119           0 :                 aSize.Height()= (long)(aPageSize.Width() / fGrfWH);
     120             :             }
     121             :         }
     122             : 
     123             :         // set output rectangle for graphic
     124           0 :         Point aPnt ((aPageSize.Width()  - aSize.Width())  / 2,
     125           0 :                     (aPageSize.Height() - aSize.Height()) / 2);
     126           0 :         aPnt += Point(pPage->GetLftBorder(), pPage->GetUppBorder());
     127           0 :         Rectangle aRect (aPnt, aSize);
     128             : 
     129           0 :         SdrGrafObj* pGrafObj = NULL;
     130             : 
     131           0 :         sal_Bool bInsertNewObject = sal_True;
     132             : 
     133           0 :         if ( mpDrawView->AreObjectsMarked() )
     134             :         {
     135             :             // is there a empty graphic object?
     136           0 :             const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
     137             : 
     138           0 :             if (rMarkList.GetMarkCount() == 1)
     139             :             {
     140           0 :                 SdrMark* pMark = rMarkList.GetMark(0);
     141           0 :                 SdrObject* pObj = pMark->GetMarkedSdrObj();
     142             : 
     143           0 :                 if (pObj->GetObjInventor() == SdrInventor && pObj->GetObjIdentifier() == OBJ_GRAF)
     144             :                 {
     145           0 :                     pGrafObj = (SdrGrafObj*) pObj;
     146             : 
     147           0 :                     if( pGrafObj->IsEmptyPresObj() )
     148             :                     {
     149             :                         // the empty graphic object gets a new graphic
     150           0 :                         bInsertNewObject = sal_False;
     151             : 
     152           0 :                         SdrGrafObj* pNewGrafObj = (SdrGrafObj*) pGrafObj->Clone();
     153           0 :                         pNewGrafObj->SetEmptyPresObj(false);
     154           0 :                         pNewGrafObj->SetOutlinerParaObject(NULL);
     155           0 :                         pNewGrafObj->SetGraphic(aGraphic);
     156             : 
     157           0 :                         OUString aStr(mpDrawView->GetDescriptionOfMarkedObjects());
     158           0 :                         aStr += " " + SD_RESSTR(STR_UNDO_REPLACE);
     159           0 :                         mpDrawView->BegUndo(aStr);
     160           0 :                         SdrPageView* pPV = mpDrawView->GetSdrPageView();
     161           0 :                         mpDrawView->ReplaceObjectAtView(pGrafObj, *pPV, pNewGrafObj);
     162           0 :                         mpDrawView->EndUndo();
     163             :                     }
     164             :                 }
     165             :             }
     166             :         }
     167             : 
     168             : 
     169           0 :         if( bInsertNewObject )
     170             :         {
     171           0 :             pGrafObj = new SdrGrafObj(aGraphic, aRect);
     172           0 :             SdrPageView* pPV = mpDrawView->GetSdrPageView();
     173           0 :             mpDrawView->InsertObjectAtView(pGrafObj, *pPV, SDRINSERT_SETDEFLAYER);
     174           0 :         }
     175             :     }
     176             :     // insert sound
     177           0 :     else if( nType == com::sun::star::gallery::GalleryItemType::MEDIA )
     178             :     {
     179           0 :         const SfxStringItem aMediaURLItem( SID_INSERT_AVMEDIA, pGalleryItem->GetURL() );
     180           0 :         GetViewFrame()->GetDispatcher()->Execute( SID_INSERT_AVMEDIA, SFX_CALLMODE_SYNCHRON, &aMediaURLItem, 0L );
     181             :     }
     182             : 
     183           0 :     GetDocSh()->SetWaitCursor( false );
     184             : }
     185             : 
     186             : 
     187             : 
     188           0 : void DrawViewShell::GetGalleryState(SfxItemSet& )
     189             : {
     190           0 : }
     191             : 
     192             : /**
     193             :  * Edit macros for attribute configuration
     194             :  */
     195             : 
     196             : /* the work flow to adjust the attributes is nearly everywhere the same
     197             :    1. read existing attributes
     198             :    2. read parameter from the basic-set
     199             :    3. delete selected item from the attribute-set
     200             :    4. create new attribute-item
     201             :    5. insert item into set      */
     202           0 : void DrawViewShell::AttrExec (SfxRequest &rReq)
     203             : {
     204             :     // nothing is executed during a slide show!
     205           0 :     if(HasCurrentFunction(SID_PRESENTATION))
     206           0 :         return;
     207             : 
     208           0 :     CheckLineTo (rReq);
     209             : 
     210           0 :     SfxBindings&    rBindings = GetViewFrame()->GetBindings();
     211           0 :     SfxItemSet*     pAttr = new SfxItemSet ( GetDoc()->GetPool() );
     212             : 
     213           0 :     GetView()->GetAttributes( *pAttr );
     214           0 :     const SfxItemSet* pArgs = rReq.GetArgs();
     215             : 
     216           0 :     switch (rReq.GetSlot ())
     217             :     {
     218             :         // set new fill-style
     219             :         case SID_SETFILLSTYLE :
     220           0 :             if (pArgs)
     221           0 :                 if (pArgs->Count () == 1)
     222             :                 {
     223           0 :                     SFX_REQUEST_ARG (rReq, pFillStyle, SfxUInt32Item, ID_VAL_STYLE, false);
     224           0 :                     if (CHECK_RANGE (XFILL_NONE, (sal_Int32)pFillStyle->GetValue (), XFILL_BITMAP))
     225             :                     {
     226           0 :                         pAttr->ClearItem (XATTR_FILLSTYLE);
     227           0 :                         pAttr->Put (XFillStyleItem ((XFillStyle) pFillStyle->GetValue ()), XATTR_FILLSTYLE);
     228           0 :                         rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     229             :                     }
     230             : #ifndef DISABLE_SCRIPTING
     231           0 :                     else StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
     232             : #endif
     233           0 :                     break;
     234             :                 }
     235             : #ifndef DISABLE_SCRIPTING
     236           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     237             : #endif
     238           0 :             break;
     239             : 
     240             :         // determine new line style
     241             :         case SID_SETLINESTYLE :
     242           0 :             if (pArgs)
     243           0 :                 if (pArgs->Count () == 1)
     244             :                 {
     245           0 :                     SFX_REQUEST_ARG (rReq, pLineStyle, SfxUInt32Item, ID_VAL_STYLE, false);
     246           0 :                     if (CHECK_RANGE (XLINE_NONE, (sal_Int32)pLineStyle->GetValue (), XLINE_DASH))
     247             :                     {
     248           0 :                         pAttr->ClearItem (XATTR_LINESTYLE);
     249           0 :                         pAttr->Put (XLineStyleItem ((XLineStyle) pLineStyle->GetValue ()), XATTR_LINESTYLE);
     250           0 :                         rBindings.Invalidate (SID_ATTR_LINE_STYLE);
     251             :                     }
     252             : #ifndef DISABLE_SCRIPTING
     253           0 :                     else StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
     254             : #endif
     255           0 :                     break;
     256             :                 }
     257             : #ifndef DISABLE_SCRIPTING
     258           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     259             : #endif
     260           0 :             break;
     261             : 
     262             :         // set line width
     263             :         case SID_SETLINEWIDTH :
     264           0 :             if (pArgs)
     265           0 :                 if (pArgs->Count () == 1)
     266             :                 {
     267           0 :                     SFX_REQUEST_ARG (rReq, pLineWidth, SfxUInt32Item, ID_VAL_WIDTH, false);
     268           0 :                     pAttr->ClearItem (XATTR_LINEWIDTH);
     269           0 :                     pAttr->Put (XLineWidthItem (pLineWidth->GetValue ()), XATTR_LINEWIDTH);
     270           0 :                     rBindings.Invalidate (SID_ATTR_LINE_WIDTH);
     271           0 :                     break;
     272             :                 }
     273             : #ifndef DISABLE_SCRIPTING
     274           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     275             : #endif
     276           0 :             break;
     277             : 
     278             :         case SID_SETFILLCOLOR :
     279           0 :             if (pArgs)
     280           0 :                 if (pArgs->Count () == 3)
     281             :                 {
     282           0 :                     SFX_REQUEST_ARG (rReq, pRed, SfxUInt32Item, ID_VAL_RED, false);
     283           0 :                     SFX_REQUEST_ARG (rReq, pGreen, SfxUInt32Item, ID_VAL_GREEN, false);
     284           0 :                     SFX_REQUEST_ARG (rReq, pBlue, SfxUInt32Item, ID_VAL_BLUE, false);
     285             : 
     286           0 :                     pAttr->ClearItem (XATTR_FILLCOLOR);
     287           0 :                     pAttr->ClearItem (XATTR_FILLSTYLE);
     288           0 :                     pAttr->Put (XFillColorItem (-1, Color ((sal_uInt8) pRed->GetValue (),
     289           0 :                                                            (sal_uInt8) pGreen->GetValue (),
     290           0 :                                                            (sal_uInt8) pBlue->GetValue ())),
     291           0 :                                 XATTR_FILLCOLOR);
     292           0 :                     pAttr->Put (XFillStyleItem (XFILL_SOLID), XATTR_FILLSTYLE);
     293           0 :                     rBindings.Invalidate (SID_ATTR_FILL_COLOR);
     294           0 :                     rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     295           0 :                     break;
     296             :                 }
     297             : #ifndef DISABLE_SCRIPTING
     298           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     299             : #endif
     300           0 :             break;
     301             : 
     302             :         case SID_SETLINECOLOR :
     303           0 :             if (pArgs)
     304           0 :                 if (pArgs->Count () == 3)
     305             :                 {
     306           0 :                     SFX_REQUEST_ARG (rReq, pRed, SfxUInt32Item, ID_VAL_RED, false);
     307           0 :                     SFX_REQUEST_ARG (rReq, pGreen, SfxUInt32Item, ID_VAL_GREEN, false);
     308           0 :                     SFX_REQUEST_ARG (rReq, pBlue, SfxUInt32Item, ID_VAL_BLUE, false);
     309             : 
     310           0 :                     pAttr->ClearItem (XATTR_LINECOLOR);
     311           0 :                     pAttr->Put (XLineColorItem (-1, Color ((sal_uInt8) pRed->GetValue (),
     312           0 :                                                            (sal_uInt8) pGreen->GetValue (),
     313           0 :                                                            (sal_uInt8) pBlue->GetValue ())),
     314           0 :                                 XATTR_LINECOLOR);
     315           0 :                     rBindings.Invalidate (SID_ATTR_LINE_COLOR);
     316           0 :                     break;
     317             :                 }
     318             : #ifndef DISABLE_SCRIPTING
     319           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     320             : #endif
     321           0 :             break;
     322             : 
     323             :         case SID_SETGRADSTARTCOLOR :
     324             :         case SID_SETGRADENDCOLOR :
     325           0 :             if (pArgs)
     326           0 :                 if (pArgs->Count () == 4)
     327             :                 {
     328           0 :                     SFX_REQUEST_ARG (rReq, pName, SfxStringItem, ID_VAL_INDEX, false);
     329           0 :                     SFX_REQUEST_ARG (rReq, pRed, SfxUInt32Item, ID_VAL_RED, false);
     330           0 :                     SFX_REQUEST_ARG (rReq, pGreen, SfxUInt32Item, ID_VAL_GREEN, false);
     331           0 :                     SFX_REQUEST_ARG (rReq, pBlue, SfxUInt32Item, ID_VAL_BLUE, false);
     332             : 
     333           0 :                     XGradientListRef pGradientList = GetDoc()->GetGradientList ();
     334           0 :                     long          nCounts        = pGradientList->Count ();
     335           0 :                     Color         aColor ((sal_uInt8) pRed->GetValue (),
     336           0 :                                           (sal_uInt8) pGreen->GetValue (),
     337           0 :                                           (sal_uInt8) pBlue->GetValue ());
     338             :                     long i;
     339             : 
     340           0 :                     pAttr->ClearItem (XATTR_FILLGRADIENT);
     341           0 :                     pAttr->ClearItem (XATTR_FILLSTYLE);
     342             : 
     343           0 :                     for ( i = 0; i < nCounts; i ++)
     344             :                     {
     345           0 :                         XGradientEntry *pEntry = pGradientList->GetGradient (i);
     346             : 
     347           0 :                         if (pEntry->GetName () == pName->GetValue ())
     348             :                         {
     349           0 :                             XGradient aGradient(pEntry->GetGradient());
     350             : 
     351           0 :                             if (rReq.GetSlot () == SID_SETGRADSTARTCOLOR) aGradient.SetStartColor (aColor);
     352           0 :                             else aGradient.SetEndColor (aColor);
     353             : 
     354           0 :                             pAttr->Put (XFillStyleItem (XFILL_GRADIENT), XATTR_FILLSTYLE);
     355           0 :                             pAttr->Put (XFillGradientItem (pName->GetValue (), aGradient), XATTR_FILLGRADIENT);
     356           0 :                             break;
     357             :                         }
     358             :                     }
     359             : 
     360           0 :                     if (i >= nCounts)
     361             :                     {
     362           0 :                         Color aBlack (0, 0, 0);
     363           0 :                         XGradient aGradient ((rReq.GetSlot () == SID_SETGRADSTARTCOLOR)
     364             :                                                  ? aColor
     365             :                                                  : aBlack,
     366           0 :                                              (rReq.GetSlot () == SID_SETGRADENDCOLOR)
     367             :                                                  ? aColor
     368           0 :                                                  : aBlack);
     369             : 
     370           0 :                         GetDoc()->GetGradientList ()->Insert (new XGradientEntry (aGradient, pName->GetValue ()));
     371             : 
     372           0 :                         pAttr->Put (XFillStyleItem (XFILL_GRADIENT), XATTR_FILLSTYLE);
     373           0 :                         pAttr->Put (XFillGradientItem (pName->GetValue (), aGradient), XATTR_FILLGRADIENT);
     374             :                     }
     375             : 
     376           0 :                     rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     377           0 :                     rBindings.Invalidate (SID_ATTR_FILL_GRADIENT);
     378           0 :                     break;
     379             :                 }
     380             : #ifndef DISABLE_SCRIPTING
     381           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     382             : #endif
     383           0 :             break;
     384             : 
     385             :         case SID_SETHATCHCOLOR :
     386           0 :             if (pArgs)
     387           0 :                 if (pArgs->Count () == 4)
     388             :                 {
     389           0 :                     SFX_REQUEST_ARG (rReq, pName, SfxStringItem, ID_VAL_INDEX, false);
     390           0 :                     SFX_REQUEST_ARG (rReq, pRed, SfxUInt32Item, ID_VAL_RED, false);
     391           0 :                     SFX_REQUEST_ARG (rReq, pGreen, SfxUInt32Item, ID_VAL_GREEN, false);
     392           0 :                     SFX_REQUEST_ARG (rReq, pBlue, SfxUInt32Item, ID_VAL_BLUE, false);
     393             : 
     394           0 :                     XHatchListRef pHatchList = GetDoc()->GetHatchList ();
     395           0 :                     long       nCounts     = pHatchList->Count ();
     396           0 :                     Color      aColor ((sal_uInt8) pRed->GetValue (),
     397           0 :                                        (sal_uInt8) pGreen->GetValue (),
     398           0 :                                        (sal_uInt8) pBlue->GetValue ());
     399             :                     long i;
     400             : 
     401           0 :                     pAttr->ClearItem (XATTR_FILLHATCH);
     402           0 :                     pAttr->ClearItem (XATTR_FILLSTYLE);
     403             : 
     404           0 :                     for ( i = 0; i < nCounts; i ++)
     405             :                     {
     406           0 :                         XHatchEntry *pEntry = pHatchList->GetHatch (i);
     407             : 
     408           0 :                         if (pEntry->GetName () == pName->GetValue ())
     409             :                         {
     410           0 :                             XHatch aHatch(pEntry->GetHatch());
     411             : 
     412           0 :                             aHatch.SetColor (aColor);
     413             : 
     414           0 :                             pAttr->Put (XFillStyleItem (XFILL_HATCH), XATTR_FILLSTYLE);
     415           0 :                             pAttr->Put (XFillHatchItem (pName->GetValue (), aHatch), XATTR_FILLHATCH);
     416           0 :                             break;
     417             :                         }
     418             :                     }
     419             : 
     420           0 :                     if (i >= nCounts)
     421             :                     {
     422           0 :                         XHatch aHatch (aColor);
     423             : 
     424           0 :                         GetDoc()->GetHatchList ()->Insert (new XHatchEntry (aHatch, pName->GetValue ()));
     425             : 
     426           0 :                         pAttr->Put (XFillStyleItem (XFILL_HATCH), XATTR_FILLSTYLE);
     427           0 :                         pAttr->Put (XFillHatchItem (pName->GetValue (), aHatch), XATTR_FILLHATCH);
     428             :                     }
     429             : 
     430           0 :                     rBindings.Invalidate (SID_ATTR_FILL_HATCH);
     431           0 :                     rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     432           0 :                     break;
     433             :                 }
     434             : #ifndef DISABLE_SCRIPTING
     435           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     436             : #endif
     437           0 :             break;
     438             : 
     439             :         // einstellungen fuer liniendash
     440             :         case SID_DASH :
     441           0 :             if (pArgs)
     442           0 :                 if (pArgs->Count () == 7)
     443             :                 {
     444           0 :                     SFX_REQUEST_ARG (rReq, pName, SfxStringItem, ID_VAL_INDEX, false);
     445           0 :                     SFX_REQUEST_ARG (rReq, pStyle, SfxUInt32Item, ID_VAL_STYLE, false);
     446           0 :                     SFX_REQUEST_ARG (rReq, pDots, SfxUInt32Item, ID_VAL_DOTS, false);
     447           0 :                     SFX_REQUEST_ARG (rReq, pDotLen, SfxUInt32Item, ID_VAL_DOTLEN, false);
     448           0 :                     SFX_REQUEST_ARG (rReq, pDashes, SfxUInt32Item, ID_VAL_DASHES, false);
     449           0 :                     SFX_REQUEST_ARG (rReq, pDashLen, SfxUInt32Item, ID_VAL_DASHLEN, false);
     450           0 :                     SFX_REQUEST_ARG (rReq, pDistance, SfxUInt32Item, ID_VAL_DISTANCE, false);
     451             : 
     452           0 :                     if (CHECK_RANGE (XDASH_RECT, (sal_Int32)pStyle->GetValue (), XDASH_ROUNDRELATIVE))
     453             :                     {
     454           0 :                         XDash aNewDash ((XDashStyle) pStyle->GetValue (), (short) pDots->GetValue (), pDotLen->GetValue (),
     455           0 :                                         (short) pDashes->GetValue (), pDashLen->GetValue (), pDistance->GetValue ());
     456             : 
     457           0 :                         pAttr->ClearItem (XATTR_LINEDASH);
     458           0 :                         pAttr->ClearItem (XATTR_LINESTYLE);
     459             : 
     460           0 :                         XDashListRef pDashList = GetDoc()->GetDashList();
     461           0 :                         long       nCounts    = pDashList->Count ();
     462           0 :                         XDashEntry *pEntry    = new XDashEntry (aNewDash, pName->GetValue ());
     463             :                         long i;
     464             : 
     465           0 :                         for ( i = 0; i < nCounts; i++ )
     466           0 :                             if (pDashList->GetDash (i)->GetName () == pName->GetValue ())
     467           0 :                                 break;
     468             : 
     469           0 :                         if (i < nCounts)
     470           0 :                             pDashList->Replace (pEntry, i);
     471             :                         else
     472           0 :                             pDashList->Insert (pEntry);
     473             : 
     474           0 :                         pAttr->Put (XLineDashItem (pName->GetValue (), aNewDash), XATTR_LINEDASH);
     475           0 :                         pAttr->Put (XLineStyleItem (XLINE_DASH), XATTR_LINESTYLE);
     476           0 :                         rBindings.Invalidate (SID_ATTR_LINE_DASH);
     477           0 :                         rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     478             :                     }
     479             : #ifndef DISABLE_SCRIPTING
     480           0 :                     else StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
     481             : #endif
     482           0 :                     break;
     483             :                 }
     484             : #ifndef DISABLE_SCRIPTING
     485           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     486             : #endif
     487           0 :             break;
     488             : 
     489             :         // configuration for gradients
     490             :         case SID_GRADIENT :
     491           0 :             if (pArgs)
     492           0 :                 if (pArgs->Count () == 8)
     493             :                 {
     494           0 :                     SFX_REQUEST_ARG (rReq, pName, SfxStringItem, ID_VAL_INDEX, false);
     495           0 :                     SFX_REQUEST_ARG (rReq, pStyle, SfxUInt32Item, ID_VAL_STYLE, false);
     496           0 :                     SFX_REQUEST_ARG (rReq, pAngle, SfxUInt32Item, ID_VAL_ANGLE, false);
     497           0 :                     SFX_REQUEST_ARG (rReq, pBorder, SfxUInt32Item, ID_VAL_BORDER, false);
     498           0 :                     SFX_REQUEST_ARG (rReq, pCenterX, SfxUInt32Item, ID_VAL_CENTER_X, false);
     499           0 :                     SFX_REQUEST_ARG (rReq, pCenterY, SfxUInt32Item, ID_VAL_CENTER_Y, false);
     500           0 :                     SFX_REQUEST_ARG (rReq, pStart, SfxUInt32Item, ID_VAL_STARTINTENS, false);
     501           0 :                     SFX_REQUEST_ARG (rReq, pEnd, SfxUInt32Item, ID_VAL_ENDINTENS, false);
     502             : 
     503           0 :                     if (CHECK_RANGE (XGRAD_LINEAR, (sal_Int32)pStyle->GetValue (), XGRAD_RECT) &&
     504           0 :                         CHECK_RANGE (0, (sal_Int32)pAngle->GetValue (), 360) &&
     505           0 :                         CHECK_RANGE (0, (sal_Int32)pBorder->GetValue (), 100) &&
     506           0 :                         CHECK_RANGE (0, (sal_Int32)pCenterX->GetValue (), 100) &&
     507           0 :                         CHECK_RANGE (0, (sal_Int32)pCenterY->GetValue (), 100) &&
     508           0 :                         CHECK_RANGE (0, (sal_Int32)pStart->GetValue (), 100) &&
     509           0 :                         CHECK_RANGE (0, (sal_Int32)pEnd->GetValue (), 100))
     510             :                     {
     511           0 :                         pAttr->ClearItem (XATTR_FILLGRADIENT);
     512           0 :                         pAttr->ClearItem (XATTR_FILLSTYLE);
     513             : 
     514           0 :                         XGradientListRef pGradientList = GetDoc()->GetGradientList ();
     515           0 :                         long           nCounts        = pGradientList->Count ();
     516             :                         long i;
     517             : 
     518           0 :                         for ( i = 0; i < nCounts; i++ )
     519             :                         {
     520           0 :                             XGradientEntry *pEntry = pGradientList->GetGradient (i);
     521             : 
     522           0 :                             if (pEntry->GetName () == pName->GetValue ())
     523             :                             {
     524           0 :                                 XGradient aGradient(pEntry->GetGradient());
     525             : 
     526           0 :                                 aGradient.SetGradientStyle ((XGradientStyle) pStyle->GetValue ());
     527           0 :                                 aGradient.SetAngle (pAngle->GetValue () * 10);
     528           0 :                                 aGradient.SetBorder ((short) pBorder->GetValue ());
     529           0 :                                 aGradient.SetXOffset ((short) pCenterX->GetValue ());
     530           0 :                                 aGradient.SetYOffset ((short) pCenterY->GetValue ());
     531           0 :                                 aGradient.SetStartIntens ((short) pStart->GetValue ());
     532           0 :                                 aGradient.SetEndIntens ((short) pEnd->GetValue ());
     533             : 
     534           0 :                                 pAttr->Put (XFillStyleItem (XFILL_GRADIENT), XATTR_FILLSTYLE);
     535           0 :                                 pAttr->Put (XFillGradientItem (pName->GetValue (), aGradient), XATTR_FILLGRADIENT);
     536           0 :                                 break;
     537             :                             }
     538             :                         }
     539             : 
     540           0 :                         if (i >= nCounts)
     541             :                         {
     542           0 :                             Color aBlack (0, 0, 0);
     543           0 :                             XGradient aGradient (aBlack, aBlack, (XGradientStyle) pStyle->GetValue (),
     544           0 :                                                  pAngle->GetValue () * 10, (short) pCenterX->GetValue (),
     545           0 :                                                  (short) pCenterY->GetValue (), (short) pBorder->GetValue (),
     546           0 :                                                  (short) pStart->GetValue (), (short) pEnd->GetValue ());
     547             : 
     548           0 :                             pGradientList->Insert (new XGradientEntry (aGradient, pName->GetValue ()));
     549           0 :                             pAttr->Put (XFillStyleItem (XFILL_GRADIENT), XATTR_FILLSTYLE);
     550           0 :                             pAttr->Put (XFillGradientItem (pName->GetValue (), aGradient), XATTR_FILLGRADIENT);
     551             :                         }
     552             : 
     553           0 :                         rBindings.Invalidate (SID_ATTR_FILL_GRADIENT);
     554           0 :                         rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     555             :                     }
     556             : #ifndef DISABLE_SCRIPTING
     557           0 :                     else StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
     558             : #endif
     559           0 :                     break;
     560             :                 }
     561             : #ifndef DISABLE_SCRIPTING
     562           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     563             : #endif
     564           0 :             break;
     565             : 
     566             :         // configuration for hatch
     567             :         case SID_HATCH :
     568           0 :             if (pArgs)
     569           0 :                 if (pArgs->Count () == 4)
     570             :                 {
     571           0 :                     SFX_REQUEST_ARG (rReq, pName, SfxStringItem, ID_VAL_INDEX, false);
     572           0 :                     SFX_REQUEST_ARG (rReq, pStyle, SfxUInt32Item, ID_VAL_STYLE, false);
     573           0 :                     SFX_REQUEST_ARG (rReq, pDistance, SfxUInt32Item, ID_VAL_DISTANCE, false);
     574           0 :                     SFX_REQUEST_ARG (rReq, pAngle, SfxUInt32Item, ID_VAL_ANGLE, false);
     575             : 
     576           0 :                     if (CHECK_RANGE (XHATCH_SINGLE, (sal_Int32)pStyle->GetValue (), XHATCH_TRIPLE) &&
     577           0 :                         CHECK_RANGE (0, (sal_Int32)pAngle->GetValue (), 360))
     578             :                     {
     579           0 :                         pAttr->ClearItem (XATTR_FILLHATCH);
     580           0 :                         pAttr->ClearItem (XATTR_FILLSTYLE);
     581             : 
     582           0 :                         XHatchListRef pHatchList = GetDoc()->GetHatchList ();
     583           0 :                         long       nCounts     = pHatchList->Count ();
     584             :                         long i;
     585             : 
     586           0 :                         for ( i = 0; i < nCounts; i++ )
     587             :                         {
     588           0 :                             XHatchEntry *pEntry = pHatchList->GetHatch (i);
     589             : 
     590           0 :                             if (pEntry->GetName () == pName->GetValue ())
     591             :                             {
     592           0 :                                 XHatch aHatch(pEntry->GetHatch());
     593             : 
     594           0 :                                 aHatch.SetHatchStyle ((XHatchStyle) pStyle->GetValue ());
     595           0 :                                 aHatch.SetDistance (pDistance->GetValue ());
     596           0 :                                 aHatch.SetAngle (pAngle->GetValue () * 10);
     597             : 
     598           0 :                                 pAttr->Put (XFillStyleItem (XFILL_HATCH), XATTR_FILLSTYLE);
     599           0 :                                 pAttr->Put (XFillHatchItem (pName->GetValue (), aHatch), XATTR_FILLHATCH);
     600           0 :                                 break;
     601             :                             }
     602             :                         }
     603             : 
     604           0 :                         if (i >= nCounts)
     605             :                         {
     606           0 :                             Color  aBlack (0, 0, 0);
     607           0 :                             XHatch aHatch (aBlack, (XHatchStyle) pStyle->GetValue (), pDistance->GetValue (),
     608           0 :                                            pAngle->GetValue () * 10);
     609             : 
     610           0 :                             pHatchList->Insert (new XHatchEntry (aHatch, pName->GetValue ()));
     611           0 :                             pAttr->Put (XFillStyleItem (XFILL_HATCH), XATTR_FILLSTYLE);
     612           0 :                             pAttr->Put (XFillHatchItem (pName->GetValue (), aHatch), XATTR_FILLHATCH);
     613             :                         }
     614             : 
     615           0 :                         rBindings.Invalidate (SID_ATTR_FILL_HATCH);
     616           0 :                         rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     617             :                     }
     618             : #ifndef DISABLE_SCRIPTING
     619           0 :                     else StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
     620             : #endif
     621           0 :                     break;
     622             :                 }
     623             : #ifndef DISABLE_SCRIPTING
     624           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     625             : #endif
     626           0 :             break;
     627             : 
     628             :         case SID_SELECTGRADIENT :
     629           0 :             if (pArgs)
     630           0 :                 if (pArgs->Count () == 1)
     631             :                 {
     632           0 :                     SFX_REQUEST_ARG (rReq, pName, SfxStringItem, ID_VAL_INDEX, false);
     633             : 
     634           0 :                     XGradientListRef pGradientList = GetDoc()->GetGradientList ();
     635           0 :                     long           nCounts        = pGradientList->Count ();
     636             : 
     637           0 :                     for (long i = 0;
     638             :                               i < nCounts;
     639             :                               i ++)
     640             :                     {
     641           0 :                         XGradientEntry *pEntry = pGradientList->GetGradient (i);
     642             : 
     643           0 :                         if (pEntry->GetName () == pName->GetValue ())
     644             :                         {
     645           0 :                             pAttr->ClearItem (XATTR_FILLGRADIENT);
     646           0 :                             pAttr->ClearItem (XATTR_FILLSTYLE);
     647           0 :                             pAttr->Put (XFillStyleItem (XFILL_GRADIENT), XATTR_FILLSTYLE);
     648           0 :                             pAttr->Put (XFillGradientItem (pName->GetValue (), pEntry->GetGradient ()), XATTR_FILLGRADIENT);
     649             : 
     650           0 :                             rBindings.Invalidate (SID_ATTR_FILL_GRADIENT);
     651           0 :                             rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     652           0 :                             break;
     653             :                         }
     654             :                     }
     655             : 
     656           0 :                     break;
     657             :                 }
     658             : #ifndef DISABLE_SCRIPTING
     659           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     660             : #endif
     661           0 :             break;
     662             : 
     663             :         case SID_SELECTHATCH :
     664           0 :             if (pArgs)
     665           0 :                 if (pArgs->Count () == 1)
     666             :                 {
     667           0 :                     SFX_REQUEST_ARG (rReq, pName, SfxStringItem, ID_VAL_INDEX, false);
     668             : 
     669           0 :                     XHatchListRef pHatchList = GetDoc()->GetHatchList ();
     670           0 :                     long       nCounts     = pHatchList->Count ();
     671             : 
     672           0 :                     for (long i = 0;
     673             :                               i < nCounts;
     674             :                               i ++)
     675             :                     {
     676           0 :                         XHatchEntry *pEntry = pHatchList->GetHatch (i);
     677             : 
     678           0 :                         if (pEntry->GetName () == pName->GetValue ())
     679             :                         {
     680           0 :                             pAttr->ClearItem (XATTR_FILLHATCH);
     681           0 :                             pAttr->ClearItem (XATTR_FILLSTYLE);
     682           0 :                             pAttr->Put (XFillStyleItem (XFILL_HATCH), XATTR_FILLSTYLE);
     683           0 :                             pAttr->Put (XFillHatchItem (pName->GetValue (), pEntry->GetHatch ()), XATTR_FILLHATCH);
     684             : 
     685           0 :                             rBindings.Invalidate (SID_ATTR_FILL_HATCH);
     686           0 :                             rBindings.Invalidate (SID_ATTR_FILL_STYLE);
     687           0 :                             break;
     688             :                         }
     689             :                     }
     690             : 
     691           0 :                     break;
     692             :                 }
     693             : #ifndef DISABLE_SCRIPTING
     694           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     695             : #endif
     696           0 :             break;
     697             : 
     698             :         case SID_UNSELECT :
     699           0 :             mpDrawView->UnmarkAll ();
     700           0 :             break;
     701             : 
     702             :         case SID_GETRED :
     703           0 :             if (pArgs)
     704           0 :                 if (pArgs->Count () == 1)
     705             :                 {
     706           0 :                     break;
     707             :                 }
     708             : #ifndef DISABLE_SCRIPTING
     709           0 :             StarBASIC::FatalError (SbERR_WRONG_ARGS);
     710             : #endif
     711           0 :             break;
     712             : 
     713             : /*        case SID_SETFONTFAMILYNAME :
     714             :         case SID_SETFONTSTYLENAME :
     715             :         case SID_SETFONTFAMILY :
     716             :         case SID_SETFONTPITCH :
     717             :         case SID_SETFONTCHARSET :
     718             :         case SID_SETFONTPOSTURE :
     719             :         case SID_SETFONTWEIGHT :
     720             :         case SID_SETFONTUNDERLINE :
     721             :         case SID_SETFONTCROSSEDOUT :
     722             :         case SID_SETFONTSHADOWED :
     723             :         case SID_SETFONTCONTOUR :
     724             :         case SID_SETFONTCOLOR :
     725             :         case SID_SETFONTLANGUAGE :
     726             :         case SID_SETFONTWORDLINE :
     727             :         case SID_SETFONTCASEMAP :
     728             :         case SID_SETFONTESCAPE :
     729             :         case SID_SETFONTKERNING :
     730             :             break;*/
     731             : 
     732             :         default :
     733             :             ;
     734             :     }
     735             : 
     736           0 :     mpDrawView->SetAttributes (*(const SfxItemSet *) pAttr);
     737           0 :     rReq.Ignore ();
     738           0 :     delete pAttr;
     739             : }
     740             : 
     741             : /**
     742             :  * Edit macros for attribute configuration
     743             :  */
     744           0 : void DrawViewShell::AttrState (SfxItemSet& rSet)
     745             : {
     746           0 :     SfxWhichIter     aIter (rSet);
     747           0 :     sal_uInt16           nWhich = aIter.FirstWhich ();
     748           0 :     SfxItemSet aAttr( GetDoc()->GetPool() );
     749           0 :     mpDrawView->GetAttributes( aAttr );
     750             : 
     751           0 :     while (nWhich)
     752             :     {
     753           0 :         switch (nWhich)
     754             :         {
     755             :             case SID_GETFILLSTYLE :
     756             :             {
     757           0 :                 const XFillStyleItem &rFillStyleItem = (const XFillStyleItem &) aAttr.Get (XATTR_FILLSTYLE);
     758             : 
     759           0 :                 rSet.Put (SfxUInt32Item (nWhich, (long) rFillStyleItem.GetValue ()));
     760           0 :                 break;
     761             :             }
     762             : 
     763             :             case SID_GETLINESTYLE :
     764             :             {
     765           0 :                 const XLineStyleItem &rLineStyleItem = (const XLineStyleItem &) aAttr.Get (XATTR_LINESTYLE);
     766             : 
     767           0 :                 rSet.Put (SfxUInt32Item (nWhich, (long) rLineStyleItem.GetValue ()));
     768           0 :                 break;
     769             :             }
     770             : 
     771             :             case SID_GETLINEWIDTH :
     772             :             {
     773           0 :                 const XLineWidthItem &rLineWidthItem = (const XLineWidthItem &) aAttr.Get (XATTR_LINEWIDTH);
     774             : 
     775           0 :                 rSet.Put (SfxUInt32Item (nWhich, (long) rLineWidthItem.GetValue ()));
     776           0 :                 break;
     777             :             }
     778             : 
     779             :             case SID_GETGREEN :
     780             :             case SID_GETRED :
     781             :             case SID_GETBLUE :
     782             :             {
     783           0 :                 const SfxUInt32Item &rWhatKind = (const SfxUInt32Item &) rSet.Get (ID_VAL_WHATKIND);
     784           0 :                 Color               aColor;
     785             : 
     786           0 :                 switch (rWhatKind.GetValue ())
     787             :                 {
     788             :                     case 1 :
     789             :                     {
     790           0 :                         const XLineColorItem &rLineColorItem = (const XLineColorItem &) aAttr.Get (XATTR_LINECOLOR);
     791             : 
     792           0 :                         aColor = rLineColorItem.GetColorValue ();
     793           0 :                         break;
     794             :                     }
     795             : 
     796             :                     case 2 :
     797             :                     {
     798           0 :                         const XFillColorItem &rFillColorItem = (const XFillColorItem &) aAttr.Get (XATTR_FILLCOLOR);
     799             : 
     800           0 :                         aColor = rFillColorItem.GetColorValue ();
     801           0 :                         break;
     802             :                     }
     803             : 
     804             :                     case 3 :
     805             :                     case 4 :
     806             :                     {
     807           0 :                         const XFillGradientItem &rFillGradientItem = (const XFillGradientItem &) aAttr.Get (XATTR_FILLGRADIENT);
     808           0 :                         const XGradient         &rGradient         = rFillGradientItem.GetGradientValue ();
     809             : 
     810           0 :                         aColor = (rWhatKind.GetValue () == 3)
     811             :                                     ? rGradient.GetStartColor ()
     812           0 :                                     : rGradient.GetEndColor ();
     813           0 :                         break;
     814             :                     }
     815             : 
     816             :                     case 5:
     817             :                     {
     818           0 :                         const XFillHatchItem &rFillHatchItem = (const XFillHatchItem &) aAttr.Get (XATTR_FILLHATCH);
     819           0 :                         const XHatch         &rHatch         = rFillHatchItem.GetHatchValue ();
     820             : 
     821           0 :                         aColor = rHatch.GetColor ();
     822           0 :                         break;
     823             :                     }
     824             : 
     825             :                     default :
     826             :                         ;
     827             :                 }
     828             : 
     829             :                 rSet.Put (SfxUInt32Item (nWhich, (long) ((nWhich == SID_GETRED)
     830           0 :                                                              ? aColor.GetRed ()
     831             :                                                              : (nWhich == SID_GETGREEN)
     832           0 :                                                                    ? aColor.GetGreen ()
     833           0 :                                                                    : aColor.GetBlue ())));
     834           0 :                 break;
     835             :             }
     836             : 
     837             :             default :
     838             :                 ;
     839             :         }
     840             : 
     841           0 :         nWhich = aIter.NextWhich ();
     842           0 :     }
     843           0 : }
     844             : 
     845             : } // end of namespace sd
     846             : 
     847             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10