[Libreoffice-commits] core.git: sd/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Nov 7 06:59:04 UTC 2018


 sd/source/core/sdpage.cxx                           |   11 
 sd/source/filter/ppt/pptinanimations.cxx            |   29 
 sd/source/ui/animations/motionpathtag.cxx           |   35 
 sd/source/ui/func/fusel.cxx                         |   16 
 sd/source/ui/func/futext.cxx                        |   11 
 sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx |    7 
 sd/source/ui/unoidl/unopage.cxx                     |    7 
 sd/source/ui/view/DocumentRenderer.cxx              |    7 
 sd/source/ui/view/drviews2.cxx                      |   50 -
 sd/source/ui/view/drviews9.cxx                      |  753 +++++++++-----------
 10 files changed, 441 insertions(+), 485 deletions(-)

New commits:
commit 9476ecb71b1acc66506a768a5fe0c123afd46b93
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Tue Nov 6 13:27:44 2018 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Nov 7 07:57:08 2018 +0100

    loplugin:collapseif in sd
    
    Change-Id: I0751c9d3f379a3621bdc7ccce6a0d58c701a0261
    Reviewed-on: https://gerrit.libreoffice.org/62955
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 841ac6868884..55edc022eb73 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -2104,15 +2104,12 @@ static SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourc
                 OUString aName( rPage.GetLayoutName() + " " + OUString::number( nLevel ) );
                 SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>( rModel.GetStyleSheetPool()->Find(aName, SfxStyleFamily::Page) );
 
-                if (pSheet)
+                if (pSheet && nLevel == 1)
                 {
-                    if (nLevel == 1)
-                    {
-                        SfxStyleSheet* pSubtitleSheet = rPage.GetStyleSheetForPresObj(PRESOBJ_TEXT);
+                    SfxStyleSheet* pSubtitleSheet = rPage.GetStyleSheetForPresObj(PRESOBJ_TEXT);
 
-                        if (pSubtitleSheet)
-                            pOutlParaObj->ChangeStyleSheetName(SfxStyleFamily::Page, pSubtitleSheet->GetName(), pSheet->GetName());
-                    }
+                    if (pSubtitleSheet)
+                        pOutlParaObj->ChangeStyleSheetName(SfxStyleFamily::Page, pSubtitleSheet->GetName(), pSheet->GetName());
                 }
             }
 
diff --git a/sd/source/filter/ppt/pptinanimations.cxx b/sd/source/filter/ppt/pptinanimations.cxx
index d40d7f7f9512..e90087c343bc 100644
--- a/sd/source/filter/ppt/pptinanimations.cxx
+++ b/sd/source/filter/ppt/pptinanimations.cxx
@@ -1207,27 +1207,24 @@ void AnimationImporter::importAnimateAttributeTargetContainer( const Atom* pAtom
                     // nAccumulate 0 = none, 1 = always
                     // nTransformType 0: "property" else "image"
 
-                    if( nBits & 3 )
+                    if( nBits & 3 && xAnimate.is() )
                     {
-                        if( xAnimate.is() )
+                        if( nBits & 1 )
                         {
-                            if( nBits & 1 )
+                            sal_Int16 nTemp = AnimationAdditiveMode::BASE;
+                            switch( nAdditive )
                             {
-                                sal_Int16 nTemp = AnimationAdditiveMode::BASE;
-                                switch( nAdditive )
-                                {
-                                case 1: nTemp = AnimationAdditiveMode::SUM; break;
-                                case 2: nTemp = AnimationAdditiveMode::REPLACE; break;
-                                case 3: nTemp = AnimationAdditiveMode::MULTIPLY; break;
-                                case 4: nTemp = AnimationAdditiveMode::NONE; break;
-                                }
-                                xAnimate->setAdditive( nTemp );
+                            case 1: nTemp = AnimationAdditiveMode::SUM; break;
+                            case 2: nTemp = AnimationAdditiveMode::REPLACE; break;
+                            case 3: nTemp = AnimationAdditiveMode::MULTIPLY; break;
+                            case 4: nTemp = AnimationAdditiveMode::NONE; break;
                             }
+                            xAnimate->setAdditive( nTemp );
+                        }
 
-                            if( nBits & 2 )
-                            {
-                                xAnimate->setAccumulate( nAccumulate == 0 );
-                            }
+                        if( nBits & 2 )
+                        {
+                            xAnimate->setAccumulate( nAccumulate == 0 );
                         }
                     }
 #ifdef DBG_ANIM_LOG
diff --git a/sd/source/ui/animations/motionpathtag.cxx b/sd/source/ui/animations/motionpathtag.cxx
index 130775dfea49..47e2f5d98f1d 100644
--- a/sd/source/ui/animations/motionpathtag.cxx
+++ b/sd/source/ui/animations/motionpathtag.cxx
@@ -837,27 +837,24 @@ bool MotionPathTag::getContext( SdrViewContext& rContext )
 
 void MotionPathTag::CheckPossibilities()
 {
-    if( mpPathObj )
+    if( mpPathObj && isSelected() )
     {
-        if( isSelected() )
-        {
-            mrView.SetMoveAllowed( true );
-            mrView.SetMoveProtected( false );
-            mrView.SetResizeFreeAllowed( true );
-            mrView.SetResizePropAllowed( true );
-            mrView.SetResizeProtected( false );
+        mrView.SetMoveAllowed( true );
+        mrView.SetMoveProtected( false );
+        mrView.SetResizeFreeAllowed( true );
+        mrView.SetResizePropAllowed( true );
+        mrView.SetResizeProtected( false );
 
-            if( !mrView.IsFrameDragSingles() )
-            {
-                bool b1stSmooth(true);
-                bool b1stSegm(true);
-                bool bCurve(false);
-                bool bSmoothFuz(false);
-                bool bSegmFuz(false);
-                basegfx::B2VectorContinuity eSmooth = basegfx::B2VectorContinuity::NONE;
-
-                mrView.CheckPolyPossibilitiesHelper( mpMark.get(), b1stSmooth, b1stSegm, bCurve, bSmoothFuz, bSegmFuz, eSmooth );
-            }
+        if( !mrView.IsFrameDragSingles() )
+        {
+            bool b1stSmooth(true);
+            bool b1stSegm(true);
+            bool bCurve(false);
+            bool bSmoothFuz(false);
+            bool bSegmFuz(false);
+            basegfx::B2VectorContinuity eSmooth = basegfx::B2VectorContinuity::NONE;
+
+            mrView.CheckPolyPossibilitiesHelper( mpMark.get(), b1stSmooth, b1stSegm, bCurve, bSmoothFuz, bSegmFuz, eSmooth );
         }
     }
 }
diff --git a/sd/source/ui/func/fusel.cxx b/sd/source/ui/func/fusel.cxx
index 02cc7b941b7f..6ac2999d630e 100644
--- a/sd/source/ui/func/fusel.cxx
+++ b/sd/source/ui/func/fusel.cxx
@@ -522,9 +522,8 @@ bool FuSelection::MouseButtonDown(const MouseEvent& rMEvt)
                 // Point IS marked and NO shift is pressed. Start
                 // dragging of selected point(s)
                 pHdl = mpView->PickHandle(aMDPos);
-                if(pHdl)
-                    if ( ! rMEvt.IsRight())
-                        mpView->BegDragObj(aMDPos, nullptr, pHdl, nDrgLog);
+                if(pHdl && ! rMEvt.IsRight())
+                    mpView->BegDragObj(aMDPos, nullptr, pHdl, nDrgLog);
             }
         }
         else
@@ -683,14 +682,11 @@ bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt)
                 **************************************************************/
                 SdrPageView* pPV;
                 SdrObject* pObj = mpView->PickObj(aMDPos, mpView->getHitTolLog(), pPV, SdrSearchOptions::ALSOONMASTER | SdrSearchOptions::BEFOREMARK);
-                if (pObj)
+                if (pObj && pPV->IsObjMarkable(pObj))
                 {
-                    if (pPV->IsObjMarkable(pObj))
-                    {
-                        mpView->UnmarkAllObj();
-                        mpView->MarkObj(pObj,pPV);
-                        return true;
-                    }
+                    mpView->UnmarkAllObj();
+                    mpView->MarkObj(pObj,pPV);
+                    return true;
                 }
                 /**************************************************************
                 * Toggle between selection and rotation
diff --git a/sd/source/ui/func/futext.cxx b/sd/source/ui/func/futext.cxx
index 437f0ccee25f..d68d55e09ec4 100644
--- a/sd/source/ui/func/futext.cxx
+++ b/sd/source/ui/func/futext.cxx
@@ -669,14 +669,11 @@ bool FuText::MouseButtonUp(const MouseEvent& rMEvt)
             **************************************************************/
             SdrPageView* pPV;
             SdrObject* pObj = mpView->PickObj(aMDPos, mpView->getHitTolLog(), pPV, SdrSearchOptions::ALSOONMASTER | SdrSearchOptions::BEFOREMARK);
-            if (pObj)
+            if (pObj && pPV->IsObjMarkable(pObj))
             {
-                if (pPV->IsObjMarkable(pObj))
-                {
-                    mpView->UnmarkAllObj();
-                    mpView->MarkObj(pObj,pPV);
-                    return bReturn;
-                }
+                mpView->UnmarkAllObj();
+                mpView->MarkObj(pObj,pPV);
+                return bReturn;
             }
         }
     }
diff --git a/sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx b/sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx
index 5534a57164ed..4a1dafead1dd 100644
--- a/sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx
+++ b/sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx
@@ -191,11 +191,8 @@ void InsertAnimator::Implementation::SetInsertPosition (
 
     // When the new insert position is in a different run then move the page
     // objects in the old run to their default positions.
-    if (pOldRun != pCurrentRun)
-    {
-        if (pOldRun)
-            pOldRun->ResetOffsets(eMode);
-    }
+    if (pOldRun != pCurrentRun && pOldRun)
+        pOldRun->ResetOffsets(eMode);
 
     if (pCurrentRun)
     {
diff --git a/sd/source/ui/unoidl/unopage.cxx b/sd/source/ui/unoidl/unopage.cxx
index 7760e132519b..b301c8bf1775 100644
--- a/sd/source/ui/unoidl/unopage.cxx
+++ b/sd/source/ui/unoidl/unopage.cxx
@@ -3041,11 +3041,8 @@ void SAL_CALL SdMasterPage::remove( const Reference< drawing::XShape >& xShape )
     if( pShape )
     {
         SdrObject* pObj = pShape->GetSdrObject();
-        if( pObj )
-        {
-            if( GetPage()->IsPresObj( pObj ) )
-                GetPage()->RemovePresObj(pObj);
-        }
+        if( pObj && GetPage()->IsPresObj( pObj ) )
+            GetPage()->RemovePresObj(pObj);
     }
 
     SdGenericDrawPage::remove( xShape );
diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx
index 80d25dc1f3de..09a227c0a854 100644
--- a/sd/source/ui/view/DocumentRenderer.cxx
+++ b/sd/source/ui/view/DocumentRenderer.cxx
@@ -1196,11 +1196,8 @@ public:
             }
         }
 
-        if (bIsValueChanged)
-        {
-            if ( ! mpOptions )
-                mpOptions.reset(new PrintOptions(*this, maSlidesPerPage));
-        }
+        if (bIsValueChanged && ! mpOptions )
+            mpOptions.reset(new PrintOptions(*this, maSlidesPerPage));
         if( bIsValueChanged || bIsPaperChanged )
             PreparePages();
     }
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 37690eac773f..a4863b8aca00 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -842,19 +842,18 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
         {
             const SfxItemSet *pArgs = rReq.GetArgs ();
 
-            if (pArgs)
-                if (pArgs->Count () == 3)
-                {
-                    const SfxUInt32Item* pWidth = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGEWIDTH);
-                    const SfxUInt32Item* pHeight = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGEHEIGHT);
-                    const SfxBoolItem* pScaleAll = rReq.GetArg<SfxBoolItem>(ID_VAL_SCALEOBJECTS);
+            if (pArgs && pArgs->Count () == 3)
+            {
+                const SfxUInt32Item* pWidth = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGEWIDTH);
+                const SfxUInt32Item* pHeight = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGEHEIGHT);
+                const SfxBoolItem* pScaleAll = rReq.GetArg<SfxBoolItem>(ID_VAL_SCALEOBJECTS);
 
-                    Size aSize (pWidth->GetValue (), pHeight->GetValue ());
+                Size aSize (pWidth->GetValue (), pHeight->GetValue ());
 
-                    SetupPage (aSize, 0, 0, 0, 0, true, false, pScaleAll->GetValue ());
-                    rReq.Ignore ();
-                    break;
-                }
+                SetupPage (aSize, 0, 0, 0, 0, true, false, pScaleAll->GetValue ());
+                rReq.Ignore ();
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
@@ -866,23 +865,22 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
         {
             const SfxItemSet *pArgs = rReq.GetArgs ();
 
-            if (pArgs)
-                if (pArgs->Count () == 5)
-                {
-                    const SfxUInt32Item* pLeft = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGELEFT);
-                    const SfxUInt32Item* pRight = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGERIGHT);
-                    const SfxUInt32Item* pUpper = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGETOP);
-                    const SfxUInt32Item* pLower = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGEBOTTOM);
-                    const SfxBoolItem* pScaleAll = rReq.GetArg<SfxBoolItem>(ID_VAL_SCALEOBJECTS);
+            if (pArgs && pArgs->Count () == 5)
+            {
+                const SfxUInt32Item* pLeft = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGELEFT);
+                const SfxUInt32Item* pRight = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGERIGHT);
+                const SfxUInt32Item* pUpper = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGETOP);
+                const SfxUInt32Item* pLower = rReq.GetArg<SfxUInt32Item>(ID_VAL_PAGEBOTTOM);
+                const SfxBoolItem* pScaleAll = rReq.GetArg<SfxBoolItem>(ID_VAL_SCALEOBJECTS);
 
-                    Size aEmptySize (0, 0);
+                Size aEmptySize (0, 0);
 
-                    SetupPage (aEmptySize, pLeft->GetValue (), pRight->GetValue (),
-                               pUpper->GetValue (), pLower->GetValue (),
-                               false, true, pScaleAll->GetValue ());
-                    rReq.Ignore ();
-                    break;
-                }
+                SetupPage (aEmptySize, pLeft->GetValue (), pRight->GetValue (),
+                           pUpper->GetValue (), pLower->GetValue (),
+                           false, true, pScaleAll->GetValue ());
+                rReq.Ignore ();
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
diff --git a/sd/source/ui/view/drviews9.cxx b/sd/source/ui/view/drviews9.cxx
index c6db972461c7..809bfdebc041 100644
--- a/sd/source/ui/view/drviews9.cxx
+++ b/sd/source/ui/view/drviews9.cxx
@@ -217,24 +217,23 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
     {
         // set new fill-style
         case SID_SETFILLSTYLE :
-            if (pArgs)
-                if (pArgs->Count () == 1)
+            if (pArgs && pArgs->Count () == 1)
+            {
+                const SfxUInt32Item* pFillStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
+                if (CHECK_RANGE (drawing::FillStyle_NONE, static_cast<drawing::FillStyle>(pFillStyle->GetValue ()), drawing::FillStyle_BITMAP))
                 {
-                    const SfxUInt32Item* pFillStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
-                    if (CHECK_RANGE (drawing::FillStyle_NONE, static_cast<drawing::FillStyle>(pFillStyle->GetValue ()), drawing::FillStyle_BITMAP))
-                    {
-                        pAttr->ClearItem (XATTR_FILLSTYLE);
-                        XFillStyleItem aStyleItem(static_cast<drawing::FillStyle>(pFillStyle->GetValue ()));
-                        aStyleItem.SetWhich(XATTR_FILLSTYLE);
-                        pAttr->Put (aStyleItem);
-                        rBindings.Invalidate (SID_ATTR_FILL_STYLE);
-                        rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
-                    }
+                    pAttr->ClearItem (XATTR_FILLSTYLE);
+                    XFillStyleItem aStyleItem(static_cast<drawing::FillStyle>(pFillStyle->GetValue ()));
+                    aStyleItem.SetWhich(XATTR_FILLSTYLE);
+                    pAttr->Put (aStyleItem);
+                    rBindings.Invalidate (SID_ATTR_FILL_STYLE);
+                    rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
+                }
 #if HAVE_FEATURE_SCRIPTING
-                    else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
+                else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
 #endif
-                    break;
-                }
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
@@ -242,23 +241,22 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
 
         // determine new line style
         case SID_SETLINESTYLE :
-            if (pArgs)
-                if (pArgs->Count () == 1)
+            if (pArgs && pArgs->Count () == 1)
+            {
+                const SfxUInt32Item* pLineStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
+                if (CHECK_RANGE (sal_Int32(drawing::LineStyle_NONE), static_cast<sal_Int32>(pLineStyle->GetValue()), sal_Int32(drawing::LineStyle_DASH)))
                 {
-                    const SfxUInt32Item* pLineStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
-                    if (CHECK_RANGE (sal_Int32(drawing::LineStyle_NONE), static_cast<sal_Int32>(pLineStyle->GetValue()), sal_Int32(drawing::LineStyle_DASH)))
-                    {
-                        pAttr->ClearItem (XATTR_LINESTYLE);
-                        XLineStyleItem aStyleItem(static_cast<drawing::LineStyle>(pLineStyle->GetValue()));
-                        aStyleItem.SetWhich(XATTR_LINESTYLE);
-                        pAttr->Put(aStyleItem);
-                        rBindings.Invalidate (SID_ATTR_LINE_STYLE);
-                    }
+                    pAttr->ClearItem (XATTR_LINESTYLE);
+                    XLineStyleItem aStyleItem(static_cast<drawing::LineStyle>(pLineStyle->GetValue()));
+                    aStyleItem.SetWhich(XATTR_LINESTYLE);
+                    pAttr->Put(aStyleItem);
+                    rBindings.Invalidate (SID_ATTR_LINE_STYLE);
+                }
 #if HAVE_FEATURE_SCRIPTING
-                    else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
+                else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
 #endif
-                    break;
-                }
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
@@ -266,91 +264,283 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
 
         // set line width
         case SID_SETLINEWIDTH :
-            if (pArgs)
-                if (pArgs->Count () == 1)
-                {
-                    const SfxUInt32Item* pLineWidth = rReq.GetArg<SfxUInt32Item>(ID_VAL_WIDTH);
-                    pAttr->ClearItem (XATTR_LINEWIDTH);
-                    XLineWidthItem aWidthItem(pLineWidth->GetValue());
-                    aWidthItem.SetWhich(XATTR_LINEWIDTH);
-                    pAttr->Put(aWidthItem);
-                    rBindings.Invalidate (SID_ATTR_LINE_WIDTH);
-                    break;
-                }
+            if (pArgs && pArgs->Count () == 1)
+            {
+                const SfxUInt32Item* pLineWidth = rReq.GetArg<SfxUInt32Item>(ID_VAL_WIDTH);
+                pAttr->ClearItem (XATTR_LINEWIDTH);
+                XLineWidthItem aWidthItem(pLineWidth->GetValue());
+                aWidthItem.SetWhich(XATTR_LINEWIDTH);
+                pAttr->Put(aWidthItem);
+                rBindings.Invalidate (SID_ATTR_LINE_WIDTH);
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
             break;
 
         case SID_SETFILLCOLOR :
-            if (pArgs)
-                if (pArgs->Count () == 3)
+            if (pArgs && pArgs->Count () == 3)
+            {
+                const SfxUInt32Item* pRed = rReq.GetArg<SfxUInt32Item>(ID_VAL_RED);
+                const SfxUInt32Item* pGreen = rReq.GetArg<SfxUInt32Item>(ID_VAL_GREEN);
+                const SfxUInt32Item* pBlue = rReq.GetArg<SfxUInt32Item>(ID_VAL_BLUE);
+
+                pAttr->ClearItem (XATTR_FILLCOLOR);
+                pAttr->ClearItem (XATTR_FILLSTYLE);
+                XFillColorItem aColorItem(-1, Color (static_cast<sal_uInt8>(pRed->GetValue ()),
+                                                       static_cast<sal_uInt8>(pGreen->GetValue ()),
+                                                       static_cast<sal_uInt8>(pBlue->GetValue ())));
+                aColorItem.SetWhich(XATTR_FILLCOLOR);
+                pAttr->Put(aColorItem);
+                rBindings.Invalidate (SID_ATTR_FILL_COLOR);
+                rBindings.Invalidate (SID_ATTR_PAGE_COLOR);
+                rBindings.Invalidate (SID_ATTR_FILL_STYLE);
+                rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
+                break;
+            }
+#if HAVE_FEATURE_SCRIPTING
+            StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
+#endif
+            break;
+
+        case SID_SETLINECOLOR :
+            if (pArgs && pArgs->Count () == 3)
+            {
+                const SfxUInt32Item* pRed = rReq.GetArg<SfxUInt32Item>(ID_VAL_RED);
+                const SfxUInt32Item* pGreen = rReq.GetArg<SfxUInt32Item>(ID_VAL_GREEN);
+                const SfxUInt32Item* pBlue = rReq.GetArg<SfxUInt32Item>(ID_VAL_BLUE);
+
+                pAttr->ClearItem (XATTR_LINECOLOR);
+                XLineColorItem aColorItem(-1, Color(static_cast<sal_uInt8>(pRed->GetValue()),
+                                                    static_cast<sal_uInt8>(pGreen->GetValue()),
+                                                    static_cast<sal_uInt8>(pBlue->GetValue())));
+                aColorItem.SetWhich(XATTR_LINECOLOR);
+                pAttr->Put(aColorItem);
+                rBindings.Invalidate (SID_ATTR_LINE_COLOR);
+                break;
+            }
+#if HAVE_FEATURE_SCRIPTING
+            StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
+#endif
+            break;
+
+        case SID_SETGRADSTARTCOLOR :
+        case SID_SETGRADENDCOLOR :
+            if (pArgs && pArgs->Count () == 4)
+            {
+                const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
+                const SfxUInt32Item* pRed = rReq.GetArg<SfxUInt32Item>(ID_VAL_RED);
+                const SfxUInt32Item* pGreen = rReq.GetArg<SfxUInt32Item>(ID_VAL_GREEN);
+                const SfxUInt32Item* pBlue = rReq.GetArg<SfxUInt32Item>(ID_VAL_BLUE);
+
+                XGradientListRef pGradientList = GetDoc()->GetGradientList ();
+                long          nCounts        = pGradientList->Count ();
+                Color         aColor (static_cast<sal_uInt8>(pRed->GetValue ()),
+                                      static_cast<sal_uInt8>(pGreen->GetValue ()),
+                                      static_cast<sal_uInt8>(pBlue->GetValue ()));
+                long i;
+
+                pAttr->ClearItem (XATTR_FILLGRADIENT);
+                pAttr->ClearItem (XATTR_FILLSTYLE);
+
+                for ( i = 0; i < nCounts; i ++)
                 {
-                    const SfxUInt32Item* pRed = rReq.GetArg<SfxUInt32Item>(ID_VAL_RED);
-                    const SfxUInt32Item* pGreen = rReq.GetArg<SfxUInt32Item>(ID_VAL_GREEN);
-                    const SfxUInt32Item* pBlue = rReq.GetArg<SfxUInt32Item>(ID_VAL_BLUE);
+                    const XGradientEntry* pEntry = pGradientList->GetGradient(i);
 
-                    pAttr->ClearItem (XATTR_FILLCOLOR);
-                    pAttr->ClearItem (XATTR_FILLSTYLE);
-                    XFillColorItem aColorItem(-1, Color (static_cast<sal_uInt8>(pRed->GetValue ()),
-                                                           static_cast<sal_uInt8>(pGreen->GetValue ()),
-                                                           static_cast<sal_uInt8>(pBlue->GetValue ())));
-                    aColorItem.SetWhich(XATTR_FILLCOLOR);
-                    pAttr->Put(aColorItem);
-                    rBindings.Invalidate (SID_ATTR_FILL_COLOR);
-                    rBindings.Invalidate (SID_ATTR_PAGE_COLOR);
-                    rBindings.Invalidate (SID_ATTR_FILL_STYLE);
-                    rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
-                    break;
+                    if (pEntry->GetName () == pName->GetValue ())
+                    {
+                        XGradient aGradient(pEntry->GetGradient());
+
+                        if (rReq.GetSlot () == SID_SETGRADSTARTCOLOR) aGradient.SetStartColor (aColor);
+                        else aGradient.SetEndColor (aColor);
+
+                        XFillStyleItem aStyleItem(drawing::FillStyle_GRADIENT);
+                        aStyleItem.SetWhich(XATTR_FILLSTYLE);
+                        pAttr->Put(aStyleItem);
+                        XFillGradientItem aGradientItem(pName->GetValue (), aGradient);
+                        aGradientItem.SetWhich(XATTR_FILLGRADIENT);
+                        pAttr->Put(aGradientItem);
+                        break;
+                    }
                 }
+
+                if (i >= nCounts)
+                {
+                    Color aBlack (0, 0, 0);
+                    XGradient aGradient ((rReq.GetSlot () == SID_SETGRADSTARTCOLOR)
+                                             ? aColor
+                                             : aBlack,
+                                         (rReq.GetSlot () == SID_SETGRADENDCOLOR)
+                                             ? aColor
+                                             : aBlack);
+
+                    GetDoc()->GetGradientList()->Insert(o3tl::make_unique<XGradientEntry>(aGradient, pName->GetValue()));
+
+                    XFillStyleItem aStyleItem(drawing::FillStyle_GRADIENT);
+                    aStyleItem.SetWhich(XATTR_FILLSTYLE);
+                    pAttr->Put(aStyleItem);
+                    XFillGradientItem aGradientItem(pName->GetValue(), aGradient);
+                    aGradientItem.SetWhich(XATTR_FILLGRADIENT);
+                    pAttr->Put(aGradientItem);
+                }
+
+                rBindings.Invalidate (SID_ATTR_FILL_STYLE);
+                rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
+                rBindings.Invalidate (SID_ATTR_FILL_GRADIENT);
+                rBindings.Invalidate (SID_ATTR_PAGE_GRADIENT);
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
             break;
 
-        case SID_SETLINECOLOR :
-            if (pArgs)
-                if (pArgs->Count () == 3)
+        case SID_SETHATCHCOLOR :
+            if (pArgs && pArgs->Count () == 4)
+            {
+                const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
+                const SfxUInt32Item* pRed = rReq.GetArg<SfxUInt32Item>(ID_VAL_RED);
+                const SfxUInt32Item* pGreen = rReq.GetArg<SfxUInt32Item>(ID_VAL_GREEN);
+                const SfxUInt32Item* pBlue = rReq.GetArg<SfxUInt32Item>(ID_VAL_BLUE);
+
+                XHatchListRef pHatchList = GetDoc()->GetHatchList ();
+                long       nCounts     = pHatchList->Count ();
+                Color      aColor (static_cast<sal_uInt8>(pRed->GetValue ()),
+                                   static_cast<sal_uInt8>(pGreen->GetValue ()),
+                                   static_cast<sal_uInt8>(pBlue->GetValue ()));
+                long i;
+
+                pAttr->ClearItem (XATTR_FILLHATCH);
+                pAttr->ClearItem (XATTR_FILLSTYLE);
+
+                for ( i = 0; i < nCounts; i ++)
                 {
-                    const SfxUInt32Item* pRed = rReq.GetArg<SfxUInt32Item>(ID_VAL_RED);
-                    const SfxUInt32Item* pGreen = rReq.GetArg<SfxUInt32Item>(ID_VAL_GREEN);
-                    const SfxUInt32Item* pBlue = rReq.GetArg<SfxUInt32Item>(ID_VAL_BLUE);
-
-                    pAttr->ClearItem (XATTR_LINECOLOR);
-                    XLineColorItem aColorItem(-1, Color(static_cast<sal_uInt8>(pRed->GetValue()),
-                                                        static_cast<sal_uInt8>(pGreen->GetValue()),
-                                                        static_cast<sal_uInt8>(pBlue->GetValue())));
-                    aColorItem.SetWhich(XATTR_LINECOLOR);
-                    pAttr->Put(aColorItem);
-                    rBindings.Invalidate (SID_ATTR_LINE_COLOR);
-                    break;
+                    const XHatchEntry* pEntry = pHatchList->GetHatch(i);
+
+                    if (pEntry->GetName () == pName->GetValue ())
+                    {
+                        XHatch aHatch(pEntry->GetHatch());
+
+                        aHatch.SetColor (aColor);
+
+                        XFillStyleItem aStyleItem(drawing::FillStyle_HATCH);
+                        aStyleItem.SetWhich(XATTR_FILLSTYLE);
+                        pAttr->Put(aStyleItem);
+                        XFillHatchItem aHatchItem(pName->GetValue(), aHatch);
+                        aHatchItem.SetWhich(XATTR_FILLHATCH);
+                        pAttr->Put(aHatchItem);
+                        break;
+                    }
+                }
+
+                if (i >= nCounts)
+                {
+                    XHatch aHatch (aColor);
+
+                    GetDoc()->GetHatchList()->Insert(o3tl::make_unique<XHatchEntry>(aHatch, pName->GetValue()));
+
+                    XFillStyleItem aStyleItem(drawing::FillStyle_HATCH);
+                    aStyleItem.SetWhich(XATTR_FILLSTYLE);
+                    pAttr->Put(aStyleItem);
+                    XFillHatchItem aHatchItem(pName->GetValue (), aHatch);
+                    aHatchItem.SetWhich(XATTR_FILLHATCH);
+                    pAttr->Put(aHatchItem);
                 }
+
+                rBindings.Invalidate (SID_ATTR_FILL_HATCH);
+                rBindings.Invalidate (SID_ATTR_PAGE_HATCH);
+                rBindings.Invalidate (SID_ATTR_FILL_STYLE);
+                rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
             break;
 
-        case SID_SETGRADSTARTCOLOR :
-        case SID_SETGRADENDCOLOR :
-            if (pArgs)
-                if (pArgs->Count () == 4)
+        // configuration for line-dash
+        case SID_DASH :
+            if (pArgs && pArgs->Count () == 7)
+            {
+                const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
+                const SfxUInt32Item* pStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
+                const SfxUInt32Item* pDots = rReq.GetArg<SfxUInt32Item>(ID_VAL_DOTS);
+                const SfxUInt32Item* pDotLen = rReq.GetArg<SfxUInt32Item>(ID_VAL_DOTLEN);
+                const SfxUInt32Item* pDashes = rReq.GetArg<SfxUInt32Item>(ID_VAL_DASHES);
+                const SfxUInt32Item* pDashLen = rReq.GetArg<SfxUInt32Item>(ID_VAL_DASHLEN);
+                const SfxUInt32Item* pDistance = rReq.GetArg<SfxUInt32Item>(ID_VAL_DISTANCE);
+
+                if (CHECK_RANGE (sal_Int32(css::drawing::DashStyle_RECT), static_cast<sal_Int32>(pStyle->GetValue()), sal_Int32(css::drawing::DashStyle_ROUNDRELATIVE)))
                 {
-                    const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
-                    const SfxUInt32Item* pRed = rReq.GetArg<SfxUInt32Item>(ID_VAL_RED);
-                    const SfxUInt32Item* pGreen = rReq.GetArg<SfxUInt32Item>(ID_VAL_GREEN);
-                    const SfxUInt32Item* pBlue = rReq.GetArg<SfxUInt32Item>(ID_VAL_BLUE);
+                    XDash aNewDash (static_cast<css::drawing::DashStyle>(pStyle->GetValue ()), static_cast<short>(pDots->GetValue ()), pDotLen->GetValue (),
+                                    static_cast<short>(pDashes->GetValue ()), pDashLen->GetValue (), pDistance->GetValue ());
 
-                    XGradientListRef pGradientList = GetDoc()->GetGradientList ();
-                    long          nCounts        = pGradientList->Count ();
-                    Color         aColor (static_cast<sal_uInt8>(pRed->GetValue ()),
-                                          static_cast<sal_uInt8>(pGreen->GetValue ()),
-                                          static_cast<sal_uInt8>(pBlue->GetValue ()));
+                    pAttr->ClearItem (XATTR_LINEDASH);
+                    pAttr->ClearItem (XATTR_LINESTYLE);
+
+                    XDashListRef pDashList = GetDoc()->GetDashList();
+                    long       nCounts    = pDashList->Count ();
+                    std::unique_ptr<XDashEntry> pEntry = o3tl::make_unique<XDashEntry>(aNewDash, pName->GetValue());
                     long i;
 
+                    for ( i = 0; i < nCounts; i++ )
+                        if (pDashList->GetDash (i)->GetName () == pName->GetValue ())
+                            break;
+
+                    if (i < nCounts)
+                        pDashList->Replace(std::move(pEntry), i);
+                    else
+                        pDashList->Insert(std::move(pEntry));
+
+                    XLineDashItem aDashItem(pName->GetValue(), aNewDash);
+                    aDashItem.SetWhich(XATTR_LINEDASH);
+                    pAttr->Put(aDashItem);
+                    XLineStyleItem aStyleItem(drawing::LineStyle_DASH);
+                    aStyleItem.SetWhich(XATTR_LINESTYLE);
+                    pAttr->Put(aStyleItem);
+                    rBindings.Invalidate (SID_ATTR_LINE_DASH);
+                    rBindings.Invalidate (SID_ATTR_FILL_STYLE);
+                }
+#if HAVE_FEATURE_SCRIPTING
+                else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
+#endif
+                break;
+            }
+#if HAVE_FEATURE_SCRIPTING
+            StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
+#endif
+            break;
+
+        // configuration for gradients
+        case SID_GRADIENT :
+            if (pArgs && pArgs->Count () == 8)
+            {
+                const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
+                const SfxUInt32Item* pStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
+                const SfxUInt32Item* pAngle = rReq.GetArg<SfxUInt32Item>(ID_VAL_ANGLE);
+                const SfxUInt32Item* pBorder = rReq.GetArg<SfxUInt32Item>(ID_VAL_BORDER);
+                const SfxUInt32Item* pCenterX = rReq.GetArg<SfxUInt32Item>(ID_VAL_CENTER_X);
+                const SfxUInt32Item* pCenterY = rReq.GetArg<SfxUInt32Item>(ID_VAL_CENTER_Y);
+                const SfxUInt32Item* pStart = rReq.GetArg<SfxUInt32Item>(ID_VAL_STARTINTENS);
+                const SfxUInt32Item* pEnd = rReq.GetArg<SfxUInt32Item>(ID_VAL_ENDINTENS);
+
+                if (CHECK_RANGE (sal_Int32(css::awt::GradientStyle_LINEAR), static_cast<sal_Int32>(pStyle->GetValue()), sal_Int32(css::awt::GradientStyle_RECT)) &&
+                    CHECK_RANGE (0, static_cast<sal_Int32>(pAngle->GetValue ()), 360) &&
+                    CHECK_RANGE (0, static_cast<sal_Int32>(pBorder->GetValue ()), 100) &&
+                    CHECK_RANGE (0, static_cast<sal_Int32>(pCenterX->GetValue ()), 100) &&
+                    CHECK_RANGE (0, static_cast<sal_Int32>(pCenterY->GetValue ()), 100) &&
+                    CHECK_RANGE (0, static_cast<sal_Int32>(pStart->GetValue ()), 100) &&
+                    CHECK_RANGE (0, static_cast<sal_Int32>(pEnd->GetValue ()), 100))
+                {
                     pAttr->ClearItem (XATTR_FILLGRADIENT);
                     pAttr->ClearItem (XATTR_FILLSTYLE);
 
-                    for ( i = 0; i < nCounts; i ++)
+                    XGradientListRef pGradientList = GetDoc()->GetGradientList ();
+                    long           nCounts        = pGradientList->Count ();
+                    long i;
+
+                    for ( i = 0; i < nCounts; i++ )
                     {
                         const XGradientEntry* pEntry = pGradientList->GetGradient(i);
 
@@ -358,8 +548,13 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
                         {
                             XGradient aGradient(pEntry->GetGradient());
 
-                            if (rReq.GetSlot () == SID_SETGRADSTARTCOLOR) aGradient.SetStartColor (aColor);
-                            else aGradient.SetEndColor (aColor);
+                            aGradient.SetGradientStyle (static_cast<css::awt::GradientStyle>(pStyle->GetValue ()));
+                            aGradient.SetAngle (pAngle->GetValue () * 10);
+                            aGradient.SetBorder (static_cast<short>(pBorder->GetValue ()));
+                            aGradient.SetXOffset (static_cast<short>(pCenterX->GetValue ()));
+                            aGradient.SetYOffset (static_cast<short>(pCenterY->GetValue ()));
+                            aGradient.SetStartIntens (static_cast<short>(pStart->GetValue ()));
+                            aGradient.SetEndIntens (static_cast<short>(pEnd->GetValue ()));
 
                             XFillStyleItem aStyleItem(drawing::FillStyle_GRADIENT);
                             aStyleItem.SetWhich(XATTR_FILLSTYLE);
@@ -374,54 +569,55 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
                     if (i >= nCounts)
                     {
                         Color aBlack (0, 0, 0);
-                        XGradient aGradient ((rReq.GetSlot () == SID_SETGRADSTARTCOLOR)
-                                                 ? aColor
-                                                 : aBlack,
-                                             (rReq.GetSlot () == SID_SETGRADENDCOLOR)
-                                                 ? aColor
-                                                 : aBlack);
-
-                        GetDoc()->GetGradientList()->Insert(o3tl::make_unique<XGradientEntry>(aGradient, pName->GetValue()));
+                        XGradient aGradient (aBlack, aBlack, static_cast<css::awt::GradientStyle>(pStyle->GetValue ()),
+                                             pAngle->GetValue () * 10, static_cast<short>(pCenterX->GetValue ()),
+                                             static_cast<short>(pCenterY->GetValue ()), static_cast<short>(pBorder->GetValue ()),
+                                             static_cast<short>(pStart->GetValue ()), static_cast<short>(pEnd->GetValue ()));
 
+                        pGradientList->Insert(o3tl::make_unique<XGradientEntry>(aGradient, pName->GetValue()));
                         XFillStyleItem aStyleItem(drawing::FillStyle_GRADIENT);
                         aStyleItem.SetWhich(XATTR_FILLSTYLE);
                         pAttr->Put(aStyleItem);
-                        XFillGradientItem aGradientItem(pName->GetValue(), aGradient);
+                        XFillGradientItem aGradientItem(pName->GetValue (), aGradient);
                         aGradientItem.SetWhich(XATTR_FILLGRADIENT);
                         pAttr->Put(aGradientItem);
                     }
 
-                    rBindings.Invalidate (SID_ATTR_FILL_STYLE);
-                    rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
                     rBindings.Invalidate (SID_ATTR_FILL_GRADIENT);
                     rBindings.Invalidate (SID_ATTR_PAGE_GRADIENT);
-                    break;
+                    rBindings.Invalidate (SID_ATTR_FILL_STYLE);
+                    rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
                 }
 #if HAVE_FEATURE_SCRIPTING
+                else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
+#endif
+                break;
+            }
+#if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
             break;
 
-        case SID_SETHATCHCOLOR :
-            if (pArgs)
-                if (pArgs->Count () == 4)
+        // configuration for hatch
+        case SID_HATCH :
+            if (pArgs && pArgs->Count () == 4)
+            {
+                const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
+                const SfxUInt32Item* pStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
+                const SfxUInt32Item* pDistance = rReq.GetArg<SfxUInt32Item>(ID_VAL_DISTANCE);
+                const SfxUInt32Item* pAngle = rReq.GetArg<SfxUInt32Item>(ID_VAL_ANGLE);
+
+                if (CHECK_RANGE (sal_Int32(css::drawing::HatchStyle_SINGLE), static_cast<sal_Int32>(pStyle->GetValue()), sal_Int32(css::drawing::HatchStyle_TRIPLE)) &&
+                    CHECK_RANGE (0, static_cast<sal_Int32>(pAngle->GetValue ()), 360))
                 {
-                    const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
-                    const SfxUInt32Item* pRed = rReq.GetArg<SfxUInt32Item>(ID_VAL_RED);
-                    const SfxUInt32Item* pGreen = rReq.GetArg<SfxUInt32Item>(ID_VAL_GREEN);
-                    const SfxUInt32Item* pBlue = rReq.GetArg<SfxUInt32Item>(ID_VAL_BLUE);
+                    pAttr->ClearItem (XATTR_FILLHATCH);
+                    pAttr->ClearItem (XATTR_FILLSTYLE);
 
                     XHatchListRef pHatchList = GetDoc()->GetHatchList ();
                     long       nCounts     = pHatchList->Count ();
-                    Color      aColor (static_cast<sal_uInt8>(pRed->GetValue ()),
-                                       static_cast<sal_uInt8>(pGreen->GetValue ()),
-                                       static_cast<sal_uInt8>(pBlue->GetValue ()));
                     long i;
 
-                    pAttr->ClearItem (XATTR_FILLHATCH);
-                    pAttr->ClearItem (XATTR_FILLSTYLE);
-
-                    for ( i = 0; i < nCounts; i ++)
+                    for ( i = 0; i < nCounts; i++ )
                     {
                         const XHatchEntry* pEntry = pHatchList->GetHatch(i);
 
@@ -429,12 +625,14 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
                         {
                             XHatch aHatch(pEntry->GetHatch());
 
-                            aHatch.SetColor (aColor);
+                            aHatch.SetHatchStyle (static_cast<css::drawing::HatchStyle>(pStyle->GetValue ()));
+                            aHatch.SetDistance (pDistance->GetValue ());
+                            aHatch.SetAngle (pAngle->GetValue () * 10);
 
                             XFillStyleItem aStyleItem(drawing::FillStyle_HATCH);
                             aStyleItem.SetWhich(XATTR_FILLSTYLE);
                             pAttr->Put(aStyleItem);
-                            XFillHatchItem aHatchItem(pName->GetValue(), aHatch);
+                            XFillHatchItem aHatchItem(pName->GetValue (), aHatch);
                             aHatchItem.SetWhich(XATTR_FILLHATCH);
                             pAttr->Put(aHatchItem);
                             break;
@@ -443,10 +641,10 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
 
                     if (i >= nCounts)
                     {
-                        XHatch aHatch (aColor);
-
-                        GetDoc()->GetHatchList()->Insert(o3tl::make_unique<XHatchEntry>(aHatch, pName->GetValue()));
+                        XHatch aHatch (Color(0), static_cast<css::drawing::HatchStyle>(pStyle->GetValue ()), pDistance->GetValue (),
+                                       pAngle->GetValue () * 10);
 
+                        pHatchList->Insert(o3tl::make_unique<XHatchEntry>(aHatch, pName->GetValue()));
                         XFillStyleItem aStyleItem(drawing::FillStyle_HATCH);
                         aStyleItem.SetWhich(XATTR_FILLSTYLE);
                         pAttr->Put(aStyleItem);
@@ -456,302 +654,88 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
                     }
 
                     rBindings.Invalidate (SID_ATTR_FILL_HATCH);
-                    rBindings.Invalidate (SID_ATTR_PAGE_HATCH);
                     rBindings.Invalidate (SID_ATTR_FILL_STYLE);
-                    rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
-                    break;
                 }
 #if HAVE_FEATURE_SCRIPTING
-            StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
-#endif
-            break;
-
-        // configuration for line-dash
-        case SID_DASH :
-            if (pArgs)
-                if (pArgs->Count () == 7)
-                {
-                    const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
-                    const SfxUInt32Item* pStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
-                    const SfxUInt32Item* pDots = rReq.GetArg<SfxUInt32Item>(ID_VAL_DOTS);
-                    const SfxUInt32Item* pDotLen = rReq.GetArg<SfxUInt32Item>(ID_VAL_DOTLEN);
-                    const SfxUInt32Item* pDashes = rReq.GetArg<SfxUInt32Item>(ID_VAL_DASHES);
-                    const SfxUInt32Item* pDashLen = rReq.GetArg<SfxUInt32Item>(ID_VAL_DASHLEN);
-                    const SfxUInt32Item* pDistance = rReq.GetArg<SfxUInt32Item>(ID_VAL_DISTANCE);
-
-                    if (CHECK_RANGE (sal_Int32(css::drawing::DashStyle_RECT), static_cast<sal_Int32>(pStyle->GetValue()), sal_Int32(css::drawing::DashStyle_ROUNDRELATIVE)))
-                    {
-                        XDash aNewDash (static_cast<css::drawing::DashStyle>(pStyle->GetValue ()), static_cast<short>(pDots->GetValue ()), pDotLen->GetValue (),
-                                        static_cast<short>(pDashes->GetValue ()), pDashLen->GetValue (), pDistance->GetValue ());
-
-                        pAttr->ClearItem (XATTR_LINEDASH);
-                        pAttr->ClearItem (XATTR_LINESTYLE);
-
-                        XDashListRef pDashList = GetDoc()->GetDashList();
-                        long       nCounts    = pDashList->Count ();
-                        std::unique_ptr<XDashEntry> pEntry = o3tl::make_unique<XDashEntry>(aNewDash, pName->GetValue());
-                        long i;
-
-                        for ( i = 0; i < nCounts; i++ )
-                            if (pDashList->GetDash (i)->GetName () == pName->GetValue ())
-                                break;
-
-                        if (i < nCounts)
-                            pDashList->Replace(std::move(pEntry), i);
-                        else
-                            pDashList->Insert(std::move(pEntry));
-
-                        XLineDashItem aDashItem(pName->GetValue(), aNewDash);
-                        aDashItem.SetWhich(XATTR_LINEDASH);
-                        pAttr->Put(aDashItem);
-                        XLineStyleItem aStyleItem(drawing::LineStyle_DASH);
-                        aStyleItem.SetWhich(XATTR_LINESTYLE);
-                        pAttr->Put(aStyleItem);
-                        rBindings.Invalidate (SID_ATTR_LINE_DASH);
-                        rBindings.Invalidate (SID_ATTR_FILL_STYLE);
-                    }
-#if HAVE_FEATURE_SCRIPTING
-                    else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
+                else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
 #endif
-                    break;
-                }
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
             break;
 
-        // configuration for gradients
-        case SID_GRADIENT :
-            if (pArgs)
-                if (pArgs->Count () == 8)
+        case SID_SELECTGRADIENT :
+            if (pArgs && (pArgs->Count () == 1))
+            {
+                const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
+
+                XGradientListRef pGradientList = GetDoc()->GetGradientList ();
+                long           nCounts        = pGradientList->Count ();
+
+                for (long i = 0; i < nCounts; i ++)
                 {
-                    const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
-                    const SfxUInt32Item* pStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
-                    const SfxUInt32Item* pAngle = rReq.GetArg<SfxUInt32Item>(ID_VAL_ANGLE);
-                    const SfxUInt32Item* pBorder = rReq.GetArg<SfxUInt32Item>(ID_VAL_BORDER);
-                    const SfxUInt32Item* pCenterX = rReq.GetArg<SfxUInt32Item>(ID_VAL_CENTER_X);
-                    const SfxUInt32Item* pCenterY = rReq.GetArg<SfxUInt32Item>(ID_VAL_CENTER_Y);
-                    const SfxUInt32Item* pStart = rReq.GetArg<SfxUInt32Item>(ID_VAL_STARTINTENS);
-                    const SfxUInt32Item* pEnd = rReq.GetArg<SfxUInt32Item>(ID_VAL_ENDINTENS);
-
-                    if (CHECK_RANGE (sal_Int32(css::awt::GradientStyle_LINEAR), static_cast<sal_Int32>(pStyle->GetValue()), sal_Int32(css::awt::GradientStyle_RECT)) &&
-                        CHECK_RANGE (0, static_cast<sal_Int32>(pAngle->GetValue ()), 360) &&
-                        CHECK_RANGE (0, static_cast<sal_Int32>(pBorder->GetValue ()), 100) &&
-                        CHECK_RANGE (0, static_cast<sal_Int32>(pCenterX->GetValue ()), 100) &&
-                        CHECK_RANGE (0, static_cast<sal_Int32>(pCenterY->GetValue ()), 100) &&
-                        CHECK_RANGE (0, static_cast<sal_Int32>(pStart->GetValue ()), 100) &&
-                        CHECK_RANGE (0, static_cast<sal_Int32>(pEnd->GetValue ()), 100))
+                    const XGradientEntry* pEntry = pGradientList->GetGradient(i);
+
+                    if (pEntry->GetName () == pName->GetValue ())
                     {
                         pAttr->ClearItem (XATTR_FILLGRADIENT);
                         pAttr->ClearItem (XATTR_FILLSTYLE);
-
-                        XGradientListRef pGradientList = GetDoc()->GetGradientList ();
-                        long           nCounts        = pGradientList->Count ();
-                        long i;
-
-                        for ( i = 0; i < nCounts; i++ )
-                        {
-                            const XGradientEntry* pEntry = pGradientList->GetGradient(i);
-
-                            if (pEntry->GetName () == pName->GetValue ())
-                            {
-                                XGradient aGradient(pEntry->GetGradient());
-
-                                aGradient.SetGradientStyle (static_cast<css::awt::GradientStyle>(pStyle->GetValue ()));
-                                aGradient.SetAngle (pAngle->GetValue () * 10);
-                                aGradient.SetBorder (static_cast<short>(pBorder->GetValue ()));
-                                aGradient.SetXOffset (static_cast<short>(pCenterX->GetValue ()));
-                                aGradient.SetYOffset (static_cast<short>(pCenterY->GetValue ()));
-                                aGradient.SetStartIntens (static_cast<short>(pStart->GetValue ()));
-                                aGradient.SetEndIntens (static_cast<short>(pEnd->GetValue ()));
-
-                                XFillStyleItem aStyleItem(drawing::FillStyle_GRADIENT);
-                                aStyleItem.SetWhich(XATTR_FILLSTYLE);
-                                pAttr->Put(aStyleItem);
-                                XFillGradientItem aGradientItem(pName->GetValue (), aGradient);
-                                aGradientItem.SetWhich(XATTR_FILLGRADIENT);
-                                pAttr->Put(aGradientItem);
-                                break;
-                            }
-                        }
-
-                        if (i >= nCounts)
-                        {
-                            Color aBlack (0, 0, 0);
-                            XGradient aGradient (aBlack, aBlack, static_cast<css::awt::GradientStyle>(pStyle->GetValue ()),
-                                                 pAngle->GetValue () * 10, static_cast<short>(pCenterX->GetValue ()),
-                                                 static_cast<short>(pCenterY->GetValue ()), static_cast<short>(pBorder->GetValue ()),
-                                                 static_cast<short>(pStart->GetValue ()), static_cast<short>(pEnd->GetValue ()));
-
-                            pGradientList->Insert(o3tl::make_unique<XGradientEntry>(aGradient, pName->GetValue()));
-                            XFillStyleItem aStyleItem(drawing::FillStyle_GRADIENT);
-                            aStyleItem.SetWhich(XATTR_FILLSTYLE);
-                            pAttr->Put(aStyleItem);
-                            XFillGradientItem aGradientItem(pName->GetValue (), aGradient);
-                            aGradientItem.SetWhich(XATTR_FILLGRADIENT);
-                            pAttr->Put(aGradientItem);
-                        }
-
+                        XFillStyleItem aStyleItem(drawing::FillStyle_GRADIENT);
+                        aStyleItem.SetWhich(XATTR_FILLSTYLE);
+                        pAttr->Put(aStyleItem);
+                        XFillGradientItem aGradientItem(pName->GetValue (), pEntry->GetGradient ());
+                        aGradientItem.SetWhich(XATTR_FILLGRADIENT);
+                        pAttr->Put(aGradientItem);
                         rBindings.Invalidate (SID_ATTR_FILL_GRADIENT);
                         rBindings.Invalidate (SID_ATTR_PAGE_GRADIENT);
                         rBindings.Invalidate (SID_ATTR_FILL_STYLE);
                         rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
+                        break;
                     }
-#if HAVE_FEATURE_SCRIPTING
-                    else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
-#endif
-                    break;
                 }
+
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
             break;
 
-        // configuration for hatch
-        case SID_HATCH :
-            if (pArgs)
-                if (pArgs->Count () == 4)
+        case SID_SELECTHATCH :
+            if (pArgs && pArgs->Count () == 1)
+            {
+                const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
+
+                XHatchListRef pHatchList = GetDoc()->GetHatchList ();
+                long       nCounts     = pHatchList->Count ();
+
+                for (long i = 0; i < nCounts; i ++)
                 {
-                    const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
-                    const SfxUInt32Item* pStyle = rReq.GetArg<SfxUInt32Item>(ID_VAL_STYLE);
-                    const SfxUInt32Item* pDistance = rReq.GetArg<SfxUInt32Item>(ID_VAL_DISTANCE);
-                    const SfxUInt32Item* pAngle = rReq.GetArg<SfxUInt32Item>(ID_VAL_ANGLE);
+                    const XHatchEntry* pEntry = pHatchList->GetHatch(i);
 
-                    if (CHECK_RANGE (sal_Int32(css::drawing::HatchStyle_SINGLE), static_cast<sal_Int32>(pStyle->GetValue()), sal_Int32(css::drawing::HatchStyle_TRIPLE)) &&
-                        CHECK_RANGE (0, static_cast<sal_Int32>(pAngle->GetValue ()), 360))
+                    if (pEntry->GetName () == pName->GetValue ())
                     {
                         pAttr->ClearItem (XATTR_FILLHATCH);
                         pAttr->ClearItem (XATTR_FILLSTYLE);
-
-                        XHatchListRef pHatchList = GetDoc()->GetHatchList ();
-                        long       nCounts     = pHatchList->Count ();
-                        long i;
-
-                        for ( i = 0; i < nCounts; i++ )
-                        {
-                            const XHatchEntry* pEntry = pHatchList->GetHatch(i);
-
-                            if (pEntry->GetName () == pName->GetValue ())
-                            {
-                                XHatch aHatch(pEntry->GetHatch());
-
-                                aHatch.SetHatchStyle (static_cast<css::drawing::HatchStyle>(pStyle->GetValue ()));
-                                aHatch.SetDistance (pDistance->GetValue ());
-                                aHatch.SetAngle (pAngle->GetValue () * 10);
-
-                                XFillStyleItem aStyleItem(drawing::FillStyle_HATCH);
-                                aStyleItem.SetWhich(XATTR_FILLSTYLE);
-                                pAttr->Put(aStyleItem);
-                                XFillHatchItem aHatchItem(pName->GetValue (), aHatch);
-                                aHatchItem.SetWhich(XATTR_FILLHATCH);
-                                pAttr->Put(aHatchItem);
-                                break;
-                            }
-                        }
-
-                        if (i >= nCounts)
-                        {
-                            XHatch aHatch (Color(0), static_cast<css::drawing::HatchStyle>(pStyle->GetValue ()), pDistance->GetValue (),
-                                           pAngle->GetValue () * 10);
-
-                            pHatchList->Insert(o3tl::make_unique<XHatchEntry>(aHatch, pName->GetValue()));
-                            XFillStyleItem aStyleItem(drawing::FillStyle_HATCH);
-                            aStyleItem.SetWhich(XATTR_FILLSTYLE);
-                            pAttr->Put(aStyleItem);
-                            XFillHatchItem aHatchItem(pName->GetValue (), aHatch);
-                            aHatchItem.SetWhich(XATTR_FILLHATCH);
-                            pAttr->Put(aHatchItem);
-                        }
+                        XFillStyleItem aStyleItem(drawing::FillStyle_HATCH);
+                        aStyleItem.SetWhich(XATTR_FILLSTYLE);
+                        pAttr->Put(aStyleItem);
+                        XFillHatchItem aHatchItem(pName->GetValue (), pEntry->GetHatch ());
+                        aHatchItem.SetWhich(XATTR_FILLHATCH);
+                        pAttr->Put(aHatchItem);
 
                         rBindings.Invalidate (SID_ATTR_FILL_HATCH);
+                        rBindings.Invalidate (SID_ATTR_PAGE_HATCH);
                         rBindings.Invalidate (SID_ATTR_FILL_STYLE);
+                        rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
+                        break;
                     }
-#if HAVE_FEATURE_SCRIPTING
-                    else StarBASIC::FatalError (ERRCODE_BASIC_BAD_PROP_VALUE);
-#endif
-                    break;
-                }
-#if HAVE_FEATURE_SCRIPTING
-            StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
-#endif
-            break;
-
-        case SID_SELECTGRADIENT :
-            if (pArgs)
-                if (pArgs->Count () == 1)
-                {
-                    const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
-
-                    XGradientListRef pGradientList = GetDoc()->GetGradientList ();
-                    long           nCounts        = pGradientList->Count ();
-
-                    for (long i = 0;
-                              i < nCounts;
-                              i ++)
-                    {
-                        const XGradientEntry* pEntry = pGradientList->GetGradient(i);
-
-                        if (pEntry->GetName () == pName->GetValue ())
-                        {
-                            pAttr->ClearItem (XATTR_FILLGRADIENT);
-                            pAttr->ClearItem (XATTR_FILLSTYLE);
-                            XFillStyleItem aStyleItem(drawing::FillStyle_GRADIENT);
-                            aStyleItem.SetWhich(XATTR_FILLSTYLE);
-                            pAttr->Put(aStyleItem);
-                            XFillGradientItem aGradientItem(pName->GetValue (), pEntry->GetGradient ());
-                            aGradientItem.SetWhich(XATTR_FILLGRADIENT);
-                            pAttr->Put(aGradientItem);
-                            rBindings.Invalidate (SID_ATTR_FILL_GRADIENT);
-                            rBindings.Invalidate (SID_ATTR_PAGE_GRADIENT);
-                            rBindings.Invalidate (SID_ATTR_FILL_STYLE);
-                            rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
-                            break;
-                        }
-                    }
-
-                    break;
                 }
-#if HAVE_FEATURE_SCRIPTING
-            StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
-#endif
-            break;
-
-        case SID_SELECTHATCH :
-            if (pArgs)
-                if (pArgs->Count () == 1)
-                {
-                    const SfxStringItem* pName = rReq.GetArg<SfxStringItem>(ID_VAL_INDEX);
-
-                    XHatchListRef pHatchList = GetDoc()->GetHatchList ();
-                    long       nCounts     = pHatchList->Count ();
-
-                    for (long i = 0;
-                              i < nCounts;
-                              i ++)
-                    {
-                        const XHatchEntry* pEntry = pHatchList->GetHatch(i);
-
-                        if (pEntry->GetName () == pName->GetValue ())
-                        {
-                            pAttr->ClearItem (XATTR_FILLHATCH);
-                            pAttr->ClearItem (XATTR_FILLSTYLE);
-                            XFillStyleItem aStyleItem(drawing::FillStyle_HATCH);
-                            aStyleItem.SetWhich(XATTR_FILLSTYLE);
-                            pAttr->Put(aStyleItem);
-                            XFillHatchItem aHatchItem(pName->GetValue (), pEntry->GetHatch ());
-                            aHatchItem.SetWhich(XATTR_FILLHATCH);
-                            pAttr->Put(aHatchItem);
-
-                            rBindings.Invalidate (SID_ATTR_FILL_HATCH);
-                            rBindings.Invalidate (SID_ATTR_PAGE_HATCH);
-                            rBindings.Invalidate (SID_ATTR_FILL_STYLE);
-                            rBindings.Invalidate (SID_ATTR_PAGE_FILLSTYLE);
-                            break;
-                        }
-                    }
 
-                    break;
-                }
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif
@@ -762,11 +746,10 @@ void DrawViewShell::AttrExec (SfxRequest &rReq)
             break;
 
         case SID_GETRED :
-            if (pArgs)
-                if (pArgs->Count () == 1)
-                {
-                    break;
-                }
+            if (pArgs && pArgs->Count () == 1)
+            {
+                break;
+            }
 #if HAVE_FEATURE_SCRIPTING
             StarBASIC::FatalError (ERRCODE_BASIC_WRONG_ARGS);
 #endif


More information about the Libreoffice-commits mailing list