Author: alg
Date: Tue Apr 16 16:46:18 2013
New Revision: 1468503

URL: http://svn.apache.org/r1468503
Log:
i122041 Added vaues for defining behaviour of ColorValueSets to 
SvtAccessibilityOptions

Added:
    openoffice/trunk/main/svx/inc/svx/SvxColorChildWindow.hxx   (with props)
    openoffice/trunk/main/svx/inc/svx/SvxColorValueSet.hxx   (with props)
    openoffice/trunk/main/svx/source/tbxctrls/SvxColorChildWindow.cxx   (with 
props)
    openoffice/trunk/main/svx/source/tbxctrls/SvxColorValueSet.cxx   (with 
props)
Modified:
    openoffice/trunk/main/cui/source/tabpages/backgrnd.cxx
    
openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Common.xcs
    openoffice/trunk/main/sc/source/ui/inc/tabbgcolordlg.hxx
    openoffice/trunk/main/sc/source/ui/miscdlgs/tabbgcolordlg.cxx
    openoffice/trunk/main/sc/source/ui/src/miscdlgs.src
    openoffice/trunk/main/svtools/inc/svtools/accessibilityoptions.hxx
    openoffice/trunk/main/svtools/source/config/accessibilityoptions.cxx
    openoffice/trunk/main/svtools/source/control/valueset.cxx
    
openoffice/trunk/main/svtools/source/inc/configitems/accessibilityoptions_const.hxx
    openoffice/trunk/main/vcl/inc/vcl/bitmap.hxx
    openoffice/trunk/main/vcl/source/gdi/bitmap4.cxx

Modified: openoffice/trunk/main/cui/source/tabpages/backgrnd.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/cui/source/tabpages/backgrnd.cxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/cui/source/tabpages/backgrnd.cxx (original)
+++ openoffice/trunk/main/cui/source/tabpages/backgrnd.cxx Tue Apr 16 16:46:18 
2013
@@ -1236,11 +1236,13 @@ void SvxBackgroundTabPage::FillColorValu
     const Size aCurrentSizeContainer(aBorderWin.GetOutputSizePixel());
     const Size aCurrentSizeContent(aBackgroundColorSet.GetOutputSizePixel());
     const Size 
aNewSizeContent(aBackgroundColorSet.layoutToGivenHeight(aCurrentSizeContent.Height()
 - 4, nColorCount));
-    const Size aNewSizeContainer(aNewSizeContent.Width() + 4, 
aNewSizeContent.Height() + 4);
+    static sal_Int32 nAdd = 4;
+    const Size aNewSizeContainer(aNewSizeContent.Width() + nAdd, 
aNewSizeContent.Height() + nAdd);
     const Point aNewPos((aCurrentPosContainer.X() + 
aCurrentSizeContainer.Width()) - aNewSizeContainer.Width(), 
aCurrentPosContainer.Y());
 
     aBorderWin.SetOutputSizePixel(aNewSizeContainer);
     aBackgroundColorSet.SetOutputSizePixel(aNewSizeContent);
+    aBackgroundColorSet.SetPosSizePixel(Point(nAdd/2, nAdd/2), 
aNewSizeContent);
     aBorderWin.SetPosSizePixel(aNewPos, aNewSizeContainer);
 }
 

Modified: 
openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Common.xcs
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Common.xcs?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- 
openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Common.xcs
 (original)
+++ 
openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Common.xcs
 Tue Apr 16 16:46:18 2013
@@ -6156,7 +6156,89 @@
                                </info>
                                <value>false</value>
                        </prop>
-               </group>
+
+            <prop oor:name="ColorValueSetMaximumRowCount" oor:type="xs:short">
+              <info>
+                <author>ALG</author>
+                <desc>Defines the maximum row count for ColorValueSets. If 
more rows are needed, a Scrollbar will be used.</desc>
+                <label>A Scrollbar will be used when more rows are 
needed.</label>
+              </info>
+              <constraints>
+                <minInclusive oor:value="10">
+                  <info>
+                    <desc>Specifies the minimum number of rows before a 
Scrollbar will be used.</desc>
+                  </info>
+                </minInclusive>
+                <maxInclusive oor:value="99">
+                  <info>
+                    <desc>Specifies the maximum number of rows before a 
Scrollbar will be used.</desc>
+                  </info>
+                </maxInclusive>
+              </constraints>
+              <value>40</value>
+            </prop>
+            <prop oor:name="ColorValueSetEntryEdgeLength" oor:type="xs:short">
+              <info>
+                <author>ALG</author>
+                <desc>Defines the EdgeLength in Pixels for Entries generated 
inside of ColorValueSets. The Entries are quadratic for Colors.</desc>
+                <label>Entries in ColorValueSets will have this quadratic size 
in Pixels.</label>
+              </info>
+              <constraints>
+                <minInclusive oor:value="8">
+                  <info>
+                    <desc>Specifies the minimum EdgeLength for Entries in 
ColorValueSets.</desc>
+                  </info>
+                </minInclusive>
+                <maxInclusive oor:value="18">
+                  <info>
+                    <desc>Specifies the minimum EdgeLength for Entries in 
ColorValueSets.</desc>
+                  </info>
+                </maxInclusive>
+              </constraints>
+              <value>14</value>
+            </prop>
+            <prop oor:name="ColorValueSetColumnCount" oor:type="xs:short">
+              <info>
+                <author>ALG</author>
+                <desc>Defines how many colums are to be used in 
ColorValueSets. The idea is to use this defined count to have a good 
visualisation in ColorValueSets which offers the used ColorTable schema nicely 
layouted to the User.</desc>
+                <label>The ColumnCount used in ColorValueSets.</label>
+              </info>
+              <constraints>
+                <minInclusive oor:value="12">
+                  <info>
+                    <desc>Specifies the perfect number of columns for 
ColorValueSet layout.</desc>
+                  </info>
+                </minInclusive>
+                <maxInclusive oor:value="24">
+                  <info>
+                    <desc>Specifies a maximum number of columns for 
ColorValueSet layout.</desc>
+                  </info>
+                </maxInclusive>
+              </constraints>
+              <value>12</value>
+            </prop>
+            <prop oor:name="EdgeBlending" oor:type="xs:short">
+              <info>
+                <author>ALG</author>
+                <desc>Option to use EdgeBlending for previews in the UI (for 
ColorValueSet, ColorDropDown, FillStyle/LineStyle previews, etc...). 
EdgeBlending will visualize a one pixel border on the preview object so that a 
noce 3D effect is shown. It is a percent value describing how strong the effect 
shall be. The value 0% switches it off, while the value 100% will cover the 
preview object completely on it's borders.</desc>
+                <label>Defines the EdgeBlending for Previews in 
percent.</label>
+              </info>
+              <constraints>
+                <minInclusive oor:value="0">
+                  <info>
+                    <desc>Specifies that no EdgeBlending shall happen.</desc>
+                  </info>
+                </minInclusive>
+                <maxInclusive oor:value="99">
+                  <info>
+                    <desc>Specifies that EdgeBlending will cover the edges of 
Previews completely.</desc>
+                  </info>
+                </maxInclusive>
+              </constraints>
+              <value>35</value>
+            </prop>
+
+        </group>
                <set oor:name="OfficeObjects" oor:node-type="ObjectNames">
                        <info>
                                <deprecated>Replaced by 
org.openoffice.Office.Embedding/ObjectNames.</deprecated>

Modified: openoffice/trunk/main/sc/source/ui/inc/tabbgcolordlg.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/inc/tabbgcolordlg.hxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/inc/tabbgcolordlg.hxx (original)
+++ openoffice/trunk/main/sc/source/ui/inc/tabbgcolordlg.hxx Tue Apr 16 
16:46:18 2013
@@ -27,7 +27,7 @@
 #include <vcl/dialog.hxx>
 #include <vcl/fixed.hxx>
 #include <vcl/button.hxx>
-#include <svtools/valueset.hxx>
+#include <svx/SvxColorValueSet.hxx>
 
 //------------------------------------------------------------------------
 
@@ -44,7 +44,7 @@ public:
     void GetSelectedColor( Color& rColor ) const;
 
 private:
-    class ScTabBgColorValueSet : public ValueSet
+    class ScTabBgColorValueSet : public SvxColorValueSet
     {
     public:
         ScTabBgColorValueSet(Control* pParent, const ResId& rResId, 
ScTabBgColorDlg* pTabBgColorDlg);

Modified: openoffice/trunk/main/sc/source/ui/miscdlgs/tabbgcolordlg.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/miscdlgs/tabbgcolordlg.cxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/miscdlgs/tabbgcolordlg.cxx (original)
+++ openoffice/trunk/main/sc/source/ui/miscdlgs/tabbgcolordlg.cxx Tue Apr 16 
16:46:18 2013
@@ -100,45 +100,84 @@ void ScTabBgColorDlg::FillColorValueSets
     DBG_ASSERT( pDocSh, "DocShell not found!" );
 
     if ( pDocSh && ( 0 != ( pItem = pDocSh->GetItem(SID_COLOR_TABLE) ) ) )
+    {
         pColorTable = ( (SvxColorTableItem*)pItem )->GetColorTable();
+    }
+
     if ( !pColorTable )
     {
         pOwnColorTable.reset(new 
XColorList(SvtPathOptions().GetPalettePath()));
         pColorTable = pOwnColorTable.get();
     }
+    
+    long nColorCount(0);
+
     if ( pColorTable )
     {
-        sal_uInt16 i = 0;
-        long nCount = pColorTable->Count();
+        nColorCount = pColorTable->Count();
         XColorEntry* pEntry = NULL;
         Color aColWhite( COL_WHITE );
         String aStrWhite( EditResId( RID_SVXITEMS_COLOR_WHITE ) );
-        WinBits nBits = ( aTabBgColorSet.GetStyle() | WB_NAMEFIELD | 
WB_ITEMBORDER | WB_NONEFIELD | WB_3DLOOK | WB_NO_DIRECTSELECT | 
WB_NOPOINTERFOCUS);
+
+        aTabBgColorSet.addEntriesForXColorList(*pColorTable);
+    }
+
+    if(nColorCount)
+    {
+        const WinBits nBits(aTabBgColorSet.GetStyle() | WB_NAMEFIELD | 
WB_ITEMBORDER | WB_NONEFIELD | WB_3DLOOK | WB_NO_DIRECTSELECT | 
WB_NOPOINTERFOCUS);
         aTabBgColorSet.SetText( aTabBgColorNoColorText );
         aTabBgColorSet.SetStyle( nBits );
-        for ( i = 0; i < nCount; i++ )
-        {
-            pEntry = pColorTable->GetColor(i);
-            aTabBgColorSet.InsertItem( i + 1, pEntry->GetColor(), 
pEntry->GetName() );
-            if (pEntry->GetColor() == aTabBgColor)
-                nSelectedItem = (i + 1);
-        }
+        static sal_Int32 nAdd = 4;
 
-        while ( i < 80 )
-        {
-            aTabBgColorSet.InsertItem( i + 1, aColWhite, aStrWhite );
-            i++;
-        }
+        // calculate new size of color control as base, derive size of border 
win
+        const Size aNewSize(aTabBgColorSet.layoutAllVisible(nColorCount));
+        const Size aNewSizeBorderWin(aNewSize.Width() + nAdd, 
aNewSize.Height() + nAdd);
+
+        // from that, calculate a new dialog size
+        const Size aCurrentSizeDialog(GetOutputSizePixel());
+        const Size aCurrentSizeBorderWin(aBorderWin.GetOutputSizePixel());
+        const long nOffsetX(aCurrentSizeDialog.Width() - 
aCurrentSizeBorderWin.Width());
+        const long nOffsetY(aCurrentSizeDialog.Height() - 
aCurrentSizeBorderWin.Height());
+        const Size aNewSizeDialog(aNewSizeBorderWin.Width() + nOffsetX, 
aNewSizeBorderWin.Height() + nOffsetY);
+
+        // also need to adapt pos and size for the three buttons; as a base, 
take their original
+        // distance from the dialog bottom and get new Y-Pos
+        const long aButtonOffsetFromBottom(aCurrentSizeDialog.Height() - 
aBtnOk.GetPosPixel().Y());
+        const long aNewButtonY(aNewSizeDialog.Height() - 
aButtonOffsetFromBottom);
+
+        // for each button, scale width and x-pos by old/new dialog sizes and 
re-layout
+        // for Okay-Button
+        const long aNewWidthOkay((aBtnOk.GetSizePixel().Width() * 
aNewSizeDialog.Width()) / aCurrentSizeDialog.Width());
+        const long aNewPosOkay((aBtnOk.GetPosPixel().X() * 
aNewSizeDialog.Width()) / aCurrentSizeDialog.Width());
+        const Size aNewSizeOkay(aNewWidthOkay, 
aBtnOk.GetOutputSizePixel().Height());
+        aBtnOk.SetOutputSizePixel(aNewSizeOkay);
+        aBtnOk.SetPosSizePixel(Point(aNewPosOkay, aNewButtonY), aNewSizeOkay);
+
+        // for Cancel-Button
+        const long aNewWidthCancel((aBtnCancel.GetSizePixel().Width() * 
aNewSizeDialog.Width()) / aCurrentSizeDialog.Width());
+        const long aNewPosCancel((aBtnCancel.GetPosPixel().X() * 
aNewSizeDialog.Width()) / aCurrentSizeDialog.Width());
+        const Size aNewSizeCancel(aNewWidthCancel, 
aBtnCancel.GetOutputSizePixel().Height());
+        aBtnCancel.SetOutputSizePixel(aNewSizeCancel);
+        aBtnCancel.SetPosSizePixel(Point(aNewPosCancel, aNewButtonY), 
aNewSizeCancel);
+
+        // for Help-Button
+        const long aNewWidthHelp((aBtnHelp.GetSizePixel().Width() * 
aNewSizeDialog.Width()) / aCurrentSizeDialog.Width());
+        const long aNewPosHelp((aBtnHelp.GetPosPixel().X() * 
aNewSizeDialog.Width()) / aCurrentSizeDialog.Width());
+        const Size aNewSizeHelp(aNewWidthHelp, 
aBtnHelp.GetOutputSizePixel().Height());
+        aBtnHelp.SetOutputSizePixel(aNewSizeHelp);
+        aBtnHelp.SetPosSizePixel(Point(aNewPosHelp, aNewButtonY), 
aNewSizeHelp);
+
+        // set new sizes for color control
+        aTabBgColorSet.SetOutputSizePixel(aNewSize);
+        aTabBgColorSet.SetPosSizePixel(Point(nAdd/2, nAdd/2), aNewSize);
 
-        if ( nCount > 80 )
-        {
-            aTabBgColorSet.SetStyle( nBits | WB_VSCROLL );
-        }
+        // set new size for border win
+        aBorderWin.SetOutputSizePixel(aNewSizeBorderWin);
+
+        // set new size for dialog itself
+        SetOutputSizePixel(aNewSizeDialog);
     }
-    aTabBgColorSet.SetColCount( 10 );
-    aTabBgColorSet.SetLineCount( 10 );
-    aTabBgColorSet.CalcWindowSizePixel( aSize15x15 );
-    aTabBgColorSet.Format();
+
     aTabBgColorSet.SelectItem(nSelectedItem);
     aTabBgColorSet.Resize();
 }
@@ -168,7 +207,7 @@ IMPL_LINK( ScTabBgColorDlg, TabBgColorOK
 }
 
 ScTabBgColorDlg::ScTabBgColorValueSet::ScTabBgColorValueSet( Control* pParent, 
const ResId& rResId, ScTabBgColorDlg* pTabBgColorDlg ) :
-    ValueSet(pParent, rResId)
+    SvxColorValueSet(pParent, rResId)
 {
     aTabBgColorDlg = pTabBgColorDlg;
 }
@@ -187,5 +226,5 @@ void ScTabBgColorDlg::ScTabBgColorValueS
         }
         break;
     }
-    ValueSet::KeyInput(rKEvt);
+    SvxColorValueSet::KeyInput(rKEvt);
 }

Modified: openoffice/trunk/main/sc/source/ui/src/miscdlgs.src
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/src/miscdlgs.src?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/src/miscdlgs.src (original)
+++ openoffice/trunk/main/sc/source/ui/src/miscdlgs.src Tue Apr 16 16:46:18 2013
@@ -619,108 +619,6 @@ ModalDialog RID_SCDLG_TAB_BG_COLOR
         DefButton = FALSE ;
     };
 };
-/*
-ModalDialog RID_SCDLG_TAB_BG_COLOR
-{
-    HelpID = "sc:ModalDialog:RID_SCDLG_TAB_BG_COLOR";
-    OutputSize = TRUE ;
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( 180 , 150 ) ;
-    Moveable = TRUE ;
-    Closeable = TRUE ;
-    Control TAB_BG_COLOR_CT_BORDER
-    {
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( 1 , 1 ) ; //12, 32
-        Size = MAP_APPFONT ( 116+2 , 145+2 ) ;
-        DialogControl = TRUE;
-    };
-    Control TAB_BG_COLOR_SET_BGDCOLOR
-    {
-        // * HelpId = HID_BACKGROUND_CTL_BGDCOLORSET ;
-        Hide = FALSE ;
-        Pos = MAP_APPFONT ( 0 , 0 ) ;
-        Size = MAP_APPFONT ( 116 , 145 ) ;
-        TabStop = TRUE ;
-    };
-    OKButton BTN_OK
-    {
-        Pos = MAP_APPFONT ( 125 , 50 ) ;
-        Size = MAP_APPFONT ( 50 , 14 ) ;
-        TabStop = TRUE ;
-        DefButton = TRUE ;
-    };
-    CancelButton BTN_CANCEL
-    {
-        Pos = MAP_APPFONT ( 125 , 67 ) ;
-        Size = MAP_APPFONT ( 50 , 14 ) ;
-        TabStop = TRUE ;
-        DefButton = FALSE ;
-    };
-    HelpButton BTN_HELP
-    {
-        Pos = MAP_APPFONT ( 125 , 84 ) ;
-        Size = MAP_APPFONT ( 50 , 14 ) ;
-        TabStop = TRUE ;
-        DefButton = FALSE ;
-    };
-};
-*/
-/*
-ModalDialog RID_SCDLG_MTRINPUT
-{
-    HelpID = "sc:ModalDialog:RID_SCDLG_MTRINPUT";
-       OutputSize = TRUE ;
-       SVLook = TRUE ;
-       Size = MAP_APPFONT ( 190 , 63 ) ;
-       Moveable = TRUE ;
-       Closeable = FALSE ;
-       OKButton BTN_OK
-       {
-               Pos = MAP_APPFONT ( 136 , 6 ) ;
-               Size = MAP_APPFONT ( 50 , 14 ) ;
-               TabStop = TRUE ;
-               DefButton = TRUE ;
-       };
-       CancelButton BTN_CANCEL
-       {
-               Pos = MAP_APPFONT ( 136 , 23 ) ;
-               Size = MAP_APPFONT ( 50 , 14 ) ;
-               TabStop = TRUE ;
-       };
-       HelpButton BTN_HELP
-       {
-               Pos = MAP_APPFONT ( 136 , 43 ) ;
-               Size = MAP_APPFONT ( 50 , 14 ) ;
-               TabStop = TRUE ;
-       };
-       FixedText FT_LABEL
-       {
-               Pos = MAP_APPFONT ( 6 , 8 ) ;
-               Size = MAP_APPFONT ( 60 , 10 ) ;
-       };
-       MetricField ED_VALUE
-       {
-                //     HelpID, weil die generierten aus den Ableitungen nicht 
in die hid.lst kommen
-               HelpId = HID_SC_MTRIN_VAL ;
-               Border = TRUE ;
-               Pos = MAP_APPFONT ( 70 , 6 ) ;
-               Size = MAP_APPFONT ( 60 , 12 ) ;
-               TabStop = TRUE ;
-               Repeat = TRUE ;
-               Spin = TRUE ;
-       };
-       CheckBox BTN_DEFVAL
-       {
-           HelpID = "sc:CheckBox:RID_SCDLG_MTRINPUT:BTN_DEFVAL";
-                //     HelpID, weil die generierten aus den Ableitungen nicht 
in die hid.lst kommen
-               TabStop = TRUE ;
-               Pos = MAP_APPFONT ( 70 , 24 ) ;
-               Size = MAP_APPFONT ( 58 , 10 ) ;
-               Text [ en-US ] = "~Default value" ;
-       };
-};
-*/
 
 ModalDialog RID_SCDLG_COL_MAN
 {

Modified: openoffice/trunk/main/svtools/inc/svtools/accessibilityoptions.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svtools/inc/svtools/accessibilityoptions.hxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/svtools/inc/svtools/accessibilityoptions.hxx 
(original)
+++ openoffice/trunk/main/svtools/inc/svtools/accessibilityoptions.hxx Tue Apr 
16 16:46:18 2013
@@ -56,6 +56,15 @@ public:
     sal_Bool    IsSelectionInReadonly() const;
        sal_Bool        GetAutoDetectSystemHC() const;
 
+    // options for configuring the look and feel for the ColorValueSet (color 
selector)
+    sal_Int16   GetColorValueSetMaximumRowCount() const;
+    sal_Int16   GetColorValueSetEntryEdgeLength() const;
+    sal_Int16   GetColorValueSetColumnCount() const;
+
+    // option to activate EdgeBlending for previews in the UI (ColorValueSet, 
ColorDropDown,
+    // FillStyle/LineStyle previews, etc...). 0 == off, 100% == full paint, 
in-between == alpha
+    sal_Int16   GetEdgeBlending() const;
+
     void        SetIsForPagePreviews(sal_Bool bSet);
        void            SetIsHelpTipsDisappear(sal_Bool bSet);
        void            SetIsAllowAnimatedGraphics(sal_Bool bSet);
@@ -65,6 +74,11 @@ public:
        void            SetHelpTipSeconds(sal_Int16 nSet);
     void        SetSelectionInReadonly(sal_Bool bSet);
        void        SetAutoDetectSystemHC(sal_Bool bSet);
+    
+    void        SetColorValueSetMaximumRowCount(sal_Int16 nSet);
+    void        SetColorValueSetEntryEdgeLength(sal_Int16 nSet);
+    void        SetColorValueSetColumnCount(sal_Int16 nSet);
+    void        SetEdgeBlending(sal_Int16 nSet);
 
        sal_Bool                IsModified() const;
        void                        Commit();

Modified: openoffice/trunk/main/svtools/source/config/accessibilityoptions.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svtools/source/config/accessibilityoptions.cxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/svtools/source/config/accessibilityoptions.cxx 
(original)
+++ openoffice/trunk/main/svtools/source/config/accessibilityoptions.cxx Tue 
Apr 16 16:46:18 2013
@@ -86,6 +86,10 @@ public:
        sal_Bool        GetIsSystemFont() const;
        sal_Int16       GetHelpTipSeconds() const;
        sal_Bool        IsSelectionInReadonly() const;
+    sal_Int16   GetColorValueSetMaximumRowCount() const;
+    sal_Int16   GetColorValueSetEntryEdgeLength() const;
+    sal_Int16   GetColorValueSetColumnCount() const;
+    sal_Int16   GetEdgeBlending() const;
 
        void            SetAutoDetectSystemHC(sal_Bool bSet);
        void            SetIsForPagePreviews(sal_Bool bSet);
@@ -96,6 +100,10 @@ public:
        void            SetIsSystemFont(sal_Bool bSet);
        void            SetHelpTipSeconds(sal_Int16 nSet);
        void            SetSelectionInReadonly(sal_Bool bSet);
+    void        SetColorValueSetMaximumRowCount(sal_Int16 nSet);
+    void        SetColorValueSetEntryEdgeLength(sal_Int16 nSet);
+    void        SetColorValueSetColumnCount(sal_Int16 nSet);
+    void        SetEdgeBlending(sal_Int16 nSet);
 
        sal_Bool        IsModified() const { return bIsModified; };
 };
@@ -300,6 +308,78 @@ sal_Bool SvtAccessibilityOptions_Impl::I
        return bRet;
 }
 
+sal_Int16 SvtAccessibilityOptions_Impl::GetColorValueSetMaximumRowCount() const
+{
+    css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
+    sal_Int16 nRet = 40;
+
+    try
+    {
+        if(xNode.is())
+            xNode->getPropertyValue(s_sColorValueSetMaximumRowCount) >>= nRet;
+    }
+    catch(const css::uno::Exception& ex)
+    {
+        LogHelper::logIt(ex);
+    }
+
+    return nRet;
+}
+
+sal_Int16 SvtAccessibilityOptions_Impl::GetColorValueSetEntryEdgeLength() const
+{
+    css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
+    sal_Int16 nRet = 14;
+
+    try
+    {
+        if(xNode.is())
+            xNode->getPropertyValue(s_sColorValueSetEntryEdgeLength) >>= nRet;
+    }
+    catch(const css::uno::Exception& ex)
+    {
+        LogHelper::logIt(ex);
+    }
+
+    return nRet;
+}
+
+sal_Int16 SvtAccessibilityOptions_Impl::GetColorValueSetColumnCount() const
+{
+    css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
+    sal_Int16 nRet = 12;
+
+    try
+    {
+        if(xNode.is())
+            xNode->getPropertyValue(s_sColorValueSetColumnCount) >>= nRet;
+    }
+    catch(const css::uno::Exception& ex)
+    {
+        LogHelper::logIt(ex);
+    }
+
+    return nRet;
+}
+
+sal_Int16 SvtAccessibilityOptions_Impl::GetEdgeBlending() const
+{
+    css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
+    sal_Int16 nRet = 35;
+
+    try
+    {
+        if(xNode.is())
+            xNode->getPropertyValue(s_sEdgeBlending) >>= nRet;
+    }
+    catch(const css::uno::Exception& ex)
+    {
+        LogHelper::logIt(ex);
+    }
+
+    return nRet;
+}
+
 void SvtAccessibilityOptions_Impl::SetAutoDetectSystemHC(sal_Bool bSet)
 {
        css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
@@ -497,6 +577,86 @@ void SvtAccessibilityOptions_Impl::SetVC
        Application::SetSettings(aAllSettings);
 }
 
+void SvtAccessibilityOptions_Impl::SetColorValueSetMaximumRowCount(sal_Int16 
nSet)
+{
+    css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
+
+    try
+    {
+        if(xNode.is() && 
xNode->getPropertyValue(s_sColorValueSetMaximumRowCount)!=nSet)
+        {
+            xNode->setPropertyValue(s_sColorValueSetMaximumRowCount, 
css::uno::makeAny(nSet));
+            ::comphelper::ConfigurationHelper::flush(m_xCfg);
+
+            bIsModified = sal_True;
+        }
+    }
+    catch(const css::uno::Exception& ex)
+    {
+        LogHelper::logIt(ex);
+    }
+}
+
+void SvtAccessibilityOptions_Impl::SetColorValueSetEntryEdgeLength(sal_Int16 
nSet)
+{
+    css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
+
+    try
+    {
+        if(xNode.is() && 
xNode->getPropertyValue(s_sColorValueSetEntryEdgeLength)!=nSet)
+        {
+            xNode->setPropertyValue(s_sColorValueSetEntryEdgeLength, 
css::uno::makeAny(nSet));
+            ::comphelper::ConfigurationHelper::flush(m_xCfg);
+
+            bIsModified = sal_True;
+        }
+    }
+    catch(const css::uno::Exception& ex)
+    {
+        LogHelper::logIt(ex);
+    }
+}
+
+void SvtAccessibilityOptions_Impl::SetColorValueSetColumnCount(sal_Int16 nSet)
+{
+    css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
+
+    try
+    {
+        if(xNode.is() && 
xNode->getPropertyValue(s_sColorValueSetColumnCount)!=nSet)
+        {
+            xNode->setPropertyValue(s_sColorValueSetColumnCount, 
css::uno::makeAny(nSet));
+            ::comphelper::ConfigurationHelper::flush(m_xCfg);
+
+            bIsModified = sal_True;
+        }
+    }
+    catch(const css::uno::Exception& ex)
+    {
+        LogHelper::logIt(ex);
+    }
+}
+
+void SvtAccessibilityOptions_Impl::SetEdgeBlending(sal_Int16 nSet)
+{
+    css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, 
css::uno::UNO_QUERY);
+
+    try
+    {
+        if(xNode.is() && xNode->getPropertyValue(s_sEdgeBlending)!=nSet)
+        {
+            xNode->setPropertyValue(s_sEdgeBlending, css::uno::makeAny(nSet));
+            ::comphelper::ConfigurationHelper::flush(m_xCfg);
+
+            bIsModified = sal_True;
+        }
+    }
+    catch(const css::uno::Exception& ex)
+    {
+        LogHelper::logIt(ex);
+    }
+}
+
 // -----------------------------------------------------------------------
 // class SvtAccessibilityOptions 
--------------------------------------------------
 
@@ -600,6 +760,26 @@ sal_Bool SvtAccessibilityOptions::IsSele
        return sm_pSingleImplConfig->IsSelectionInReadonly();
 }
 
+sal_Int16 SvtAccessibilityOptions::GetColorValueSetMaximumRowCount() const
+{
+    return sm_pSingleImplConfig->GetColorValueSetMaximumRowCount();
+}
+
+sal_Int16 SvtAccessibilityOptions::GetColorValueSetEntryEdgeLength() const
+{
+    return sm_pSingleImplConfig->GetColorValueSetEntryEdgeLength();
+}
+
+sal_Int16 SvtAccessibilityOptions::GetColorValueSetColumnCount() const
+{
+    return sm_pSingleImplConfig->GetColorValueSetColumnCount();
+}
+
+sal_Int16 SvtAccessibilityOptions::GetEdgeBlending() const
+{
+    return sm_pSingleImplConfig->GetEdgeBlending();
+}
+
 // -----------------------------------------------------------------------
 void SvtAccessibilityOptions::SetAutoDetectSystemHC(sal_Bool bSet)
 {
@@ -637,9 +817,24 @@ void SvtAccessibilityOptions::SetSelecti
 {
        sm_pSingleImplConfig->SetSelectionInReadonly(bSet);
 }
-
 void SvtAccessibilityOptions::SetVCLSettings()
 {
        sm_pSingleImplConfig->SetVCLSettings();
 }
+void SvtAccessibilityOptions::SetColorValueSetMaximumRowCount(sal_Int16 nSet)
+{
+    sm_pSingleImplConfig->SetColorValueSetMaximumRowCount(nSet);
+}
+void SvtAccessibilityOptions::SetColorValueSetEntryEdgeLength(sal_Int16 nSet)
+{
+    sm_pSingleImplConfig->SetColorValueSetEntryEdgeLength(nSet);
+}
+void SvtAccessibilityOptions::SetColorValueSetColumnCount(sal_Int16 nSet)
+{
+    sm_pSingleImplConfig->SetColorValueSetColumnCount(nSet);
+}
+void SvtAccessibilityOptions::SetEdgeBlending(sal_Int16 nSet)
+{
+    sm_pSingleImplConfig->SetEdgeBlending(nSet);
+}
 // -----------------------------------------------------------------------

Modified: openoffice/trunk/main/svtools/source/control/valueset.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svtools/source/control/valueset.cxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/svtools/source/control/valueset.cxx (original)
+++ openoffice/trunk/main/svtools/source/control/valueset.cxx Tue Apr 16 
16:46:18 2013
@@ -38,7 +38,7 @@
 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <rtl/ustring.hxx>
-
+#include <svtools/accessibilityoptions.hxx>
 #include "valueimp.hxx"
 
 #define _SV_VALUESET_CXX
@@ -284,6 +284,25 @@ void ValueSet::ImplFormatItem( ValueSetI
                {
                        maVirDev.SetFillColor( pItem->maColor );
                        maVirDev.DrawRect( aRect );
+
+            const SvtAccessibilityOptions aOptions;
+            const sal_Int16 nEdgeBlendingPercent(aOptions.GetEdgeBlending());
+            static bool bTest(false);
+
+            if(nEdgeBlendingPercent && bTest)
+            {
+                Bitmap aBitmap(maVirDev.GetBitmap(aRect.TopLeft(), 
aRect.GetSize()));
+
+                if(!aBitmap.IsEmpty())
+                {
+                    const Color aTopLeft(COL_WHITE);
+                    const Color aBottomRight(COL_BLACK);
+                    const sal_uInt8 nAlpha((nEdgeBlendingPercent * 255) / 100);
+
+                    aBitmap.DrawBlendFrame(nAlpha, aTopLeft, aBottomRight);
+                    maVirDev.DrawBitmap(aRect.TopLeft(), aBitmap);
+                }
+            }
                }
                else
                {

Modified: 
openoffice/trunk/main/svtools/source/inc/configitems/accessibilityoptions_const.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svtools/source/inc/configitems/accessibilityoptions_const.hxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- 
openoffice/trunk/main/svtools/source/inc/configitems/accessibilityoptions_const.hxx
 (original)
+++ 
openoffice/trunk/main/svtools/source/inc/configitems/accessibilityoptions_const.hxx
 Tue Apr 16 16:46:18 2013
@@ -41,6 +41,11 @@ namespace
        static const ::rtl::OUString s_sIsAutomaticFontColor    = 
::rtl::OUString::createFromAscii("IsAutomaticFontColor");
        static const ::rtl::OUString s_sIsSystemFont            = 
::rtl::OUString::createFromAscii("IsSystemFont");
        static const ::rtl::OUString s_sIsSelectionInReadonly   = 
::rtl::OUString::createFromAscii("IsSelectionInReadonly");
+
+    static const ::rtl::OUString s_sColorValueSetMaximumRowCount = 
::rtl::OUString::createFromAscii("ColorValueSetMaximumRowCount");
+    static const ::rtl::OUString s_sColorValueSetEntryEdgeLength = 
::rtl::OUString::createFromAscii("ColorValueSetEntryEdgeLength");
+    static const ::rtl::OUString s_sColorValueSetColumnCount = 
::rtl::OUString::createFromAscii("ColorValueSetColumnCount");
+    static const ::rtl::OUString s_sEdgeBlending = 
::rtl::OUString::createFromAscii("EdgeBlending");
 }
 
 #endif //  INCLUDE_CONFIGITEMS_ACCESSIBILITYOPTIONS_CONST_HXX

Added: openoffice/trunk/main/svx/inc/svx/SvxColorChildWindow.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/inc/svx/SvxColorChildWindow.hxx?rev=1468503&view=auto
==============================================================================
--- openoffice/trunk/main/svx/inc/svx/SvxColorChildWindow.hxx (added)
+++ openoffice/trunk/main/svx/inc/svx/SvxColorChildWindow.hxx Tue Apr 16 
16:46:18 2013
@@ -0,0 +1,47 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+
+#ifndef _SVX_COLORCHILDWINDOW_HXX
+#define _SVX_COLORCHILDWINDOW_HXX
+
+#include <sfx2/childwin.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Ableitung vom SfxChildWindow als "Behaelter" fuer Controller
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxColorChildWindow : public SfxChildWindow
+{
+ public:
+       SvxColorChildWindow( Window*, sal_uInt16, SfxBindings*,
+                                                SfxChildWinInfo* );
+
+       SFX_DECL_CHILDWINDOW(SvxColorChildWindow);
+};
+
+
+#endif // _SVX_COLORCHILDWINDOW_HXX
+
+// eof

Propchange: openoffice/trunk/main/svx/inc/svx/SvxColorChildWindow.hxx
------------------------------------------------------------------------------
    svn:executable = *

Added: openoffice/trunk/main/svx/inc/svx/SvxColorValueSet.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/inc/svx/SvxColorValueSet.hxx?rev=1468503&view=auto
==============================================================================
--- openoffice/trunk/main/svx/inc/svx/SvxColorValueSet.hxx (added)
+++ openoffice/trunk/main/svx/inc/svx/SvxColorValueSet.hxx Tue Apr 16 16:46:18 
2013
@@ -0,0 +1,55 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+#ifndef _SVX_COLORVALUESET_HXX
+#define _SVX_COLORVALUESET_HXX
+
+#include <svtools/valueset.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+class XColorList;
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SvxColorValueSet : public ValueSet
+{
+private:
+protected:
+public:
+    SvxColorValueSet(Window* pParent, WinBits nWinStyle = WB_ITEMBORDER);
+    SvxColorValueSet(Window* pParent, const ResId& rResId);
+
+    sal_uInt32 getMaxRowCount() const;
+    sal_uInt32 getEntryEdgeLength() const;
+    sal_uInt32 getColumnCount() const;
+
+    void addEntriesForXColorList(const XColorList& rXColorList, sal_uInt32 
nStartIndex = 1);
+    Size layoutAllVisible(sal_uInt32 nEntryCount);
+    Size layoutToGivenHeight(sal_uInt32 nHeight, sal_uInt32 nEntryCount);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SVX_COLORVALUESET_HXX
+
+// eof

Propchange: openoffice/trunk/main/svx/inc/svx/SvxColorValueSet.hxx
------------------------------------------------------------------------------
    svn:executable = *

Added: openoffice/trunk/main/svx/source/tbxctrls/SvxColorChildWindow.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/tbxctrls/SvxColorChildWindow.cxx?rev=1468503&view=auto
==============================================================================
--- openoffice/trunk/main/svx/source/tbxctrls/SvxColorChildWindow.cxx (added)
+++ openoffice/trunk/main/svx/source/tbxctrls/SvxColorChildWindow.cxx Tue Apr 
16 16:46:18 2013
@@ -0,0 +1,55 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svx.hxx"
+
+#include <svx/SvxColorChildWindow.hxx>
+#include <sfx2/dockwin.hxx>
+#include <svx/svxids.hrc>
+#include <svx/dialogs.hrc>
+#include <svx/colrctrl.hxx>
+#include <svx/dialmgr.hxx>
+
+SFX_IMPL_DOCKINGWINDOW( SvxColorChildWindow, SID_COLOR_CONTROL )
+
+/*************************************************************************
+|*
+|* Ableitung vom SfxChildWindow als "Behaelter" fuer Animator
+|*
+\************************************************************************/
+
+SvxColorChildWindow::SvxColorChildWindow( Window* _pParent,
+                                                                         
sal_uInt16 nId,
+                                                                               
  SfxBindings* pBindings,
+                                                                               
  SfxChildWinInfo* pInfo ) :
+       SfxChildWindow( _pParent, nId )
+{
+       SvxColorDockingWindow* pWin = new SvxColorDockingWindow( pBindings, 
this,
+                                                                               
_pParent, SVX_RES( RID_SVXCTRL_COLOR ) );
+       pWindow = pWin;
+
+       eChildAlignment = SFX_ALIGN_BOTTOM;
+
+       pWin->Initialize( pInfo );
+}
+
+// eof

Propchange: openoffice/trunk/main/svx/source/tbxctrls/SvxColorChildWindow.cxx
------------------------------------------------------------------------------
    svn:executable = *

Added: openoffice/trunk/main/svx/source/tbxctrls/SvxColorValueSet.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/tbxctrls/SvxColorValueSet.cxx?rev=1468503&view=auto
==============================================================================
--- openoffice/trunk/main/svx/source/tbxctrls/SvxColorValueSet.cxx (added)
+++ openoffice/trunk/main/svx/source/tbxctrls/SvxColorValueSet.cxx Tue Apr 16 
16:46:18 2013
@@ -0,0 +1,158 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svx.hxx"
+
+#include <svx/SvxColorValueSet.hxx>
+#include <svx/xtable.hxx>
+#include <svtools/accessibilityoptions.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+SvxColorValueSet::SvxColorValueSet(Window* _pParent, WinBits nWinStyle) 
+:   ValueSet(_pParent, nWinStyle)
+{
+}
+
+SvxColorValueSet::SvxColorValueSet(Window* _pParent, const ResId& rResId) 
+:   ValueSet(_pParent, rResId)
+{
+}
+
+sal_uInt32 SvxColorValueSet::getMaxRowCount() const 
+{ 
+    const SvtAccessibilityOptions aOptions;
+
+    return aOptions.GetColorValueSetMaximumRowCount(); 
+}
+
+sal_uInt32 SvxColorValueSet::getEntryEdgeLength() const
+{
+    const SvtAccessibilityOptions aOptions;
+
+    return aOptions.GetColorValueSetEntryEdgeLength(); 
+}
+
+sal_uInt32 SvxColorValueSet::getColumnCount() const
+{
+    const SvtAccessibilityOptions aOptions;
+
+    return aOptions.GetColorValueSetColumnCount(); 
+}
+
+void SvxColorValueSet::addEntriesForXColorList(const XColorList& rXColorList, 
sal_uInt32 nStartIndex)
+{
+    const sal_uInt32 nColorCount(rXColorList.Count());
+
+    for(sal_uInt32 nIndex(0); nIndex < nColorCount; nIndex++, nStartIndex++)
+    {
+        const XColorEntry* pEntry = rXColorList.GetColor(nIndex);
+
+        if(pEntry)
+        {
+            InsertItem(nStartIndex, pEntry->GetColor(), pEntry->GetName());
+        }
+        else
+        {
+            OSL_ENSURE(false, "OOps, XColorList with empty entries (!)");
+        }
+    }
+}
+
+Size SvxColorValueSet::layoutAllVisible(sal_uInt32 nEntryCount)
+{
+    if(!nEntryCount)
+    {
+        nEntryCount++;
+    }
+
+    const sal_uInt32 nRowCount(ceil(double(nEntryCount)/getColumnCount()));
+    const Size aItemSize(getEntryEdgeLength() - 2, getEntryEdgeLength() - 2);
+    const WinBits aWinBits(GetStyle() & ~WB_VSCROLL);
+
+    if(nRowCount > getMaxRowCount())
+    {
+        SetStyle(aWinBits|WB_VSCROLL);
+    }
+    else
+    {
+        SetStyle(aWinBits);
+    }
+
+    SetColCount(getColumnCount());
+    SetLineCount(std::min(nRowCount, getMaxRowCount()));
+    SetItemWidth(aItemSize.Width());
+    SetItemHeight(aItemSize.Height());
+
+    return CalcWindowSizePixel(aItemSize);
+}
+
+Size SvxColorValueSet::layoutToGivenHeight(sal_uInt32 nHeight, sal_uInt32 
nEntryCount)
+{
+    if(!nEntryCount)
+    {
+        nEntryCount++;
+    }
+
+    const sal_uInt32 nRowCount(ceil(double(nEntryCount)/getColumnCount()));
+    const Size aItemSize(getEntryEdgeLength(), getEntryEdgeLength());
+    const WinBits aWinBits(GetStyle() & ~WB_VSCROLL);
+
+    // get size whith all fields disabled
+    const WinBits aWinBitsNoScrollNoFields(GetStyle() & 
~(WB_VSCROLL|WB_NAMEFIELD|WB_NONEFIELD));
+    SetStyle(aWinBitsNoScrollNoFields);
+    const Size aSizeNoScrollNoFields(CalcWindowSizePixel(aItemSize, 
getColumnCount()));
+
+    // get size with all needed fields
+    SetStyle(aWinBits);
+    Size aNewSize(CalcWindowSizePixel(aItemSize, getColumnCount()));
+
+    // evtl. activate vertical scroll
+    const bool bAdaptHeight(aNewSize.Height() > nHeight);
+
+    if(bAdaptHeight)
+    {
+        SetStyle(aWinBits|WB_VSCROLL);
+        aNewSize = CalcWindowSizePixel(aItemSize, getColumnCount());
+    }
+
+    // calculate field height and available height for requested height
+    const sal_uInt32 nFieldHeight(aNewSize.Height() - 
aSizeNoScrollNoFields.Height());
+    const sal_uInt32 nAvailableHeight(nHeight >= nFieldHeight ? nHeight - 
nFieldHeight : 0);
+
+    // calculate how many lines can be shown there
+    const Size aItemSizePixel(CalcItemSizePixel(aItemSize));
+    const sal_uInt32 nLineCount((nAvailableHeight + aItemSizePixel.Height() - 
1) / aItemSizePixel.Height());
+
+    // set height to wanted height
+    aNewSize.Height() = nHeight;
+
+    SetItemWidth(aItemSize.Width());
+    SetItemHeight(aItemSize.Height());
+    SetColCount(getColumnCount());
+    SetLineCount(nLineCount);
+
+    return aNewSize;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// eof

Propchange: openoffice/trunk/main/svx/source/tbxctrls/SvxColorValueSet.cxx
------------------------------------------------------------------------------
    svn:executable = *

Modified: openoffice/trunk/main/vcl/inc/vcl/bitmap.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/inc/vcl/bitmap.hxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/inc/vcl/bitmap.hxx (original)
+++ openoffice/trunk/main/vcl/inc/vcl/bitmap.hxx Tue Apr 16 16:46:18 2013
@@ -29,6 +29,7 @@
 #include <vcl/mapmod.hxx>
 #include <tools/rc.hxx>
 #include <vcl/region.hxx>
+#include <tools/color.hxx>
 
 #ifdef WNT
 #define _STLP_HAS_NATIVE_FLOAT_ABS
@@ -883,6 +884,36 @@ public:
                                                                        const 
BmpFilterParam* pFilterParam = NULL,
                                                                        const 
Link* pProgress = NULL );
 
+    /** Draw a blend frame to the Bitmap
+
+        @param nAlpha
+        The blend value defines how strong the frame will be blended with the
+        existing content, 255 == full coverage, 0 == no frame will be drawn
+
+        @param aColorTopLeft, aColorBottomRight, aColorTopRight, 
aColorBottomLeft
+        The colors defining the frame. If the version without aColorTopRight 
and
+        aColorBottomLeft is used, these colors are linearly interpolated from
+        aColorTopLeft and aColorBottomRight using the width and height of the 
area
+
+        @param rTopLeft
+        The start point of the frame in pixels
+
+        @param rSize
+        The size of the frame in pixels
+     */
+    void DrawBlendFrame(
+        sal_uInt8 nAlpha = 128,
+        Color aColorTopLeft = Color(COL_WHITE), 
+        Color aColorBottomRight = Color(COL_BLACK));
+    void DrawBlendFrame(
+        const Point& rTopLeft, 
+        const Size& rSize, 
+        sal_uInt8 nAlpha = 128,
+        Color   aColorTopLeft = Color(COL_WHITE), 
+        Color   aColorTopRight = Color(COL_GRAY), 
+        Color   aColorBottomRight = Color(COL_BLACK), 
+        Color   aColorBottomLeft = Color(COL_GRAY));
+
     BitmapReadAccess*       AcquireReadAccess();
     BitmapWriteAccess*      AcquireWriteAccess();
     void                    ReleaseAccess( BitmapReadAccess* pAccess );

Modified: openoffice/trunk/main/vcl/source/gdi/bitmap4.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/source/gdi/bitmap4.cxx?rev=1468503&r1=1468502&r2=1468503&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/source/gdi/bitmap4.cxx (original)
+++ openoffice/trunk/main/vcl/source/gdi/bitmap4.cxx Tue Apr 16 16:46:18 2013
@@ -1003,3 +1003,200 @@ sal_Bool Bitmap::ImplPopArt( const BmpFi
 
        return bRet;
 }
+
+// 
-----------------------------------------------------------------------------
+
+void impMixPixel(BitmapWriteAccess& rAcc, long y, long x, const Color& rColor, 
sal_uInt8 nAlpha)
+{
+    const BitmapColor aBitmapColor(rColor);
+
+    if(nAlpha)
+    {
+        if(255 != nAlpha)
+        {
+            BitmapColor aTarget(rAcc.GetColor(y, x));
+
+            aTarget.Merge(aBitmapColor, nAlpha);
+            rAcc.SetPixel(y, x, aTarget);
+        }
+    }
+    else
+    {
+        rAcc.SetPixel(y, x, aBitmapColor);
+    }
+}
+
+inline bool impVisibleX(long x, const Size& rSizePixel)
+{
+    return x >= 0 && x < rSizePixel.Width();
+}
+
+inline bool impVisibleY(long y, const Size& rSizePixel)
+{
+    return y >= 0 && y < rSizePixel.Width();
+}
+
+inline bool impVisibleXY(long y, long x, const Size& rSizePixel)
+{
+    return impVisibleX(x, rSizePixel) && impVisibleY(y, rSizePixel);
+}
+
+void Bitmap::DrawBlendFrame(
+    const Point& rTopLeft, 
+    const Size& rSize, 
+    sal_uInt8 nAlpha,
+    Color aColorTopLeft, 
+    Color aColorTopRight, 
+    Color aColorBottomRight, 
+    Color aColorBottomLeft)
+{
+    if(!IsEmpty())
+    {
+        const Size aSizePixel(GetSizePixel());
+
+        if(aSizePixel.Width() && aSizePixel.Height())
+        {
+            const long nW(rSize.Width());
+            const long nH(rSize.Height());
+
+            if(nW || nH)
+            {
+                BitmapWriteAccess* pAcc = AcquireWriteAccess();
+                const long nStartX(rTopLeft.X());
+                const long nStartY(rTopLeft.X());
+                const long nEndX(rTopLeft.X() + nW);
+                const long nEndY(rTopLeft.X() + nH);
+                long x(nStartX);
+                long y(nStartY);
+
+                if(pAcc)
+                {
+                    if(impVisibleXY(y, x, aSizePixel))
+                    {
+                        // x == nStartX, y == nStartY
+                        impMixPixel(*pAcc, y, x, aColorTopLeft, nAlpha);
+                    }
+
+                    if(impVisibleY(y, aSizePixel))
+                    {
+                        for(x = 1; x < nEndX - 1; x++) // y == nStartY
+                        {
+                            if(impVisibleX(x, aSizePixel))
+                            {
+                                Color aMix(aColorTopLeft);
+                                aMix.Merge(aColorTopRight, 255 - sal_uInt8(((x 
- nStartX) * 255) / nW));
+                                impMixPixel(*pAcc, y, x, aMix, nAlpha);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        x = nEndX - 1;
+                    }
+
+                    if(impVisibleXY(y, x, aSizePixel))
+                    {
+                        // x == nEndX - 1, y == nStartY
+                        impMixPixel(*pAcc, y, x, aColorTopRight, nAlpha);
+                    }
+
+                    const bool bLeftVisible(impVisibleX(nStartX, aSizePixel));
+                    const bool bRightVisible(impVisibleX(x, aSizePixel));
+
+                    if(bLeftVisible || bRightVisible)
+                    {
+                        if(bLeftVisible)
+                        {
+                            for(y = 1; y < nEndY - 1; y++) // x == nStartX and 
nEndX-1
+                            {
+                                if(impVisibleY(y, aSizePixel))
+                                {
+                                    Color aMix(aColorTopLeft);
+                                    aMix.Merge(aColorBottomLeft, 255 - 
sal_uInt8(((y - nStartY) * 255) / nH));
+                                    impMixPixel(*pAcc, y, nStartX, aMix, 
nAlpha);
+                                }
+                            }
+                        }
+
+                        if(bRightVisible)
+                        {
+                            for(y = 1; y < nEndY - 1; y++) // x == nStartX and 
nEndX-1
+                            {
+                                if(impVisibleY(y, aSizePixel))
+                                {
+                                    Color aMix(aColorTopRight);
+                                    aMix.Merge(aColorBottomRight, 255 - 
sal_uInt8(((y -nStartY) * 255) / nH));
+                                    impMixPixel(*pAcc, y, x, aMix, nAlpha);
+                                }
+                            }
+                        }
+                    }
+                    else
+                    {
+                        y = nEndY - 1;
+                    }
+
+                    if(impVisibleXY(y, x, aSizePixel))
+                    {
+                        x = nStartX; // x == nStartX, y == nEndY-1
+                        impMixPixel(*pAcc, y, x, aColorBottomLeft, nAlpha);
+                    }
+
+                    if(impVisibleY(y, aSizePixel))
+                    {
+                        for(x = 1; x < nEndX - 1; x++) // y == nEndY-1
+                        {
+                            if(impVisibleX(x, aSizePixel))
+                            {
+                                Color aMix(aColorBottomLeft);
+                                aMix.Merge(aColorBottomRight, 255 - 
sal_uInt8(((x - nStartX)* 255) / nW));
+                                impMixPixel(*pAcc, y, x, aMix, nAlpha);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        x = nEndX - 1;
+                    }
+
+                    if(impVisibleXY(y, x, aSizePixel))
+                    {
+                        // x == nEndX - 1, y == nEndY - 1
+                        impMixPixel(*pAcc, y, x, aColorBottomRight, nAlpha);
+                    }
+
+                    ReleaseAccess(pAcc);
+                }
+            }
+        }
+    }
+}
+
+void Bitmap::DrawBlendFrame(
+    sal_uInt8 nAlpha,
+    Color aColorTopLeft, 
+    Color aColorBottomRight)
+{
+    if(!IsEmpty())
+    {
+        const Point aTopLeft(0, 0);
+        const Size aSize(GetSizePixel());
+        const sal_uInt32 nW(aSize.Width());
+        const sal_uInt32 nH(aSize.Height());
+
+        if(nW || nH)
+        {
+            Color aColTopRight(aColorTopLeft);
+            Color aColBottomLeft(aColorTopLeft);
+            const sal_uInt32 nDE(nW + nH);
+
+            aColTopRight.Merge(aColorBottomRight, 255 - sal_uInt8((nW * 255) / 
nDE));
+            aColBottomLeft.Merge(aColorBottomRight, 255 - sal_uInt8((nH * 255) 
/ nDE));
+
+            DrawBlendFrame(aTopLeft, aSize, nAlpha, aColorTopLeft, 
aColTopRight, aColorBottomRight, aColBottomLeft);
+        }
+    }
+}
+
+// 
-----------------------------------------------------------------------------
+// eof


Reply via email to