xref: /trunk/main/sc/source/ui/sidebar/CellBorderUpdater.cxx (revision 8e9b0a85b2dd8f856db2f1d954db9a1a7b527cb1)
1facb16e7SArmin Le Grand /**************************************************************
2facb16e7SArmin Le Grand  *
3facb16e7SArmin Le Grand  * Licensed to the Apache Software Foundation (ASF) under one
4facb16e7SArmin Le Grand  * or more contributor license agreements.  See the NOTICE file
5facb16e7SArmin Le Grand  * distributed with this work for additional information
6facb16e7SArmin Le Grand  * regarding copyright ownership.  The ASF licenses this file
7facb16e7SArmin Le Grand  * to you under the Apache License, Version 2.0 (the
8facb16e7SArmin Le Grand  * "License"); you may not use this file except in compliance
9facb16e7SArmin Le Grand  * with the License.  You may obtain a copy of the License at
10facb16e7SArmin Le Grand  *
11facb16e7SArmin Le Grand  *   http://www.apache.org/licenses/LICENSE-2.0
12facb16e7SArmin Le Grand  *
13facb16e7SArmin Le Grand  * Unless required by applicable law or agreed to in writing,
14facb16e7SArmin Le Grand  * software distributed under the License is distributed on an
15facb16e7SArmin Le Grand  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16facb16e7SArmin Le Grand  * KIND, either express or implied.  See the License for the
17facb16e7SArmin Le Grand  * specific language governing permissions and limitations
18facb16e7SArmin Le Grand  * under the License.
19facb16e7SArmin Le Grand  *
20facb16e7SArmin Le Grand  *************************************************************/
21facb16e7SArmin Le Grand 
22*8e9b0a85Smseidel 
23*8e9b0a85Smseidel 
24facb16e7SArmin Le Grand #include "precompiled_sc.hxx"
25facb16e7SArmin Le Grand 
26facb16e7SArmin Le Grand #include <CellBorderUpdater.hxx>
27facb16e7SArmin Le Grand #include <vcl/bmpacc.hxx>
28facb16e7SArmin Le Grand #include <vcl/svapp.hxx>
29facb16e7SArmin Le Grand 
30facb16e7SArmin Le Grand namespace sc { namespace sidebar {
31facb16e7SArmin Le Grand 
CellBorderUpdater(sal_uInt16 nTbxBtnId,ToolBox & rTbx)32facb16e7SArmin Le Grand CellBorderUpdater::CellBorderUpdater(
33facb16e7SArmin Le Grand     sal_uInt16 nTbxBtnId,
34facb16e7SArmin Le Grand     ToolBox& rTbx)
35facb16e7SArmin Le Grand :   mnBtnId(nTbxBtnId),
36facb16e7SArmin Le Grand     mrTbx(rTbx)
37facb16e7SArmin Le Grand {
38facb16e7SArmin Le Grand }
39facb16e7SArmin Le Grand 
~CellBorderUpdater()40facb16e7SArmin Le Grand CellBorderUpdater::~CellBorderUpdater()
41facb16e7SArmin Le Grand {
42facb16e7SArmin Le Grand }
43facb16e7SArmin Le Grand 
UpdateCellBorder(bool bTop,bool bBot,bool bLeft,bool bRight,Image aImg,bool bVer,bool bHor)44facb16e7SArmin Le Grand void CellBorderUpdater::UpdateCellBorder(bool bTop, bool bBot, bool bLeft, bool bRight, Image aImg, bool bVer, bool bHor)
45facb16e7SArmin Le Grand {
46facb16e7SArmin Le Grand     BitmapEx            aBmpEx( aImg.GetBitmapEx() );
47facb16e7SArmin Le Grand     Bitmap              aBmp( aBmpEx.GetBitmap() );
48facb16e7SArmin Le Grand     BitmapWriteAccess*  pBmpAcc = aBmp.AcquireWriteAccess();
49facb16e7SArmin Le Grand     const Size maBmpSize = aBmp.GetSizePixel();
50facb16e7SArmin Le Grand 
51facb16e7SArmin Le Grand     if( pBmpAcc )
52facb16e7SArmin Le Grand     {
53facb16e7SArmin Le Grand         Bitmap              aMsk;
54facb16e7SArmin Le Grand         BitmapWriteAccess*  pMskAcc;
55facb16e7SArmin Le Grand 
56facb16e7SArmin Le Grand         if( aBmpEx.IsAlpha() )
57facb16e7SArmin Le Grand             pMskAcc = ( aMsk = aBmpEx.GetAlpha().GetBitmap() ).AcquireWriteAccess();
58facb16e7SArmin Le Grand         else if( aBmpEx.IsTransparent() )
59facb16e7SArmin Le Grand             pMskAcc = ( aMsk = aBmpEx.GetMask() ).AcquireWriteAccess();
60facb16e7SArmin Le Grand         else
61facb16e7SArmin Le Grand             pMskAcc = NULL;
62facb16e7SArmin Le Grand 
63facb16e7SArmin Le Grand         pBmpAcc->SetLineColor( ::Application::GetSettings().GetStyleSettings().GetFieldTextColor() ) ;
64facb16e7SArmin Le Grand         pBmpAcc->SetFillColor( COL_BLACK);
65facb16e7SArmin Le Grand 
66facb16e7SArmin Le Grand         if(maBmpSize.Width() == 43 && maBmpSize.Height() == 43)
67facb16e7SArmin Le Grand         {
68facb16e7SArmin Le Grand             Point aTL(2, 1), aTR(42,1), aBL(2, 41), aBR(42, 41), aHL(2,21), aHR(42, 21), aVT(22,1), aVB(22, 41);
69facb16e7SArmin Le Grand             if( pMskAcc )
70facb16e7SArmin Le Grand             {
71facb16e7SArmin Le Grand                 pMskAcc->SetLineColor( COL_BLACK );
72facb16e7SArmin Le Grand                 pMskAcc->SetFillColor( COL_BLACK );
73facb16e7SArmin Le Grand             }
74facb16e7SArmin Le Grand             if(bLeft)
75facb16e7SArmin Le Grand             {
76facb16e7SArmin Le Grand                 pBmpAcc->DrawLine( aTL,aBL );
77facb16e7SArmin Le Grand                 if( pMskAcc )
78facb16e7SArmin Le Grand                     pMskAcc->DrawLine( aTL,aBL );
79facb16e7SArmin Le Grand             }
80facb16e7SArmin Le Grand             if(bRight)
81facb16e7SArmin Le Grand             {
82facb16e7SArmin Le Grand                 pBmpAcc->DrawLine( aTR,aBR );
83facb16e7SArmin Le Grand                 if( pMskAcc )
84facb16e7SArmin Le Grand                     pMskAcc->DrawLine( aTR,aBR );
85facb16e7SArmin Le Grand             }
86facb16e7SArmin Le Grand             if(bTop)
87facb16e7SArmin Le Grand             {
88facb16e7SArmin Le Grand                 pBmpAcc->DrawLine( aTL,aTR );
89facb16e7SArmin Le Grand                 if( pMskAcc )
90facb16e7SArmin Le Grand                     pMskAcc->DrawLine( aTL,aTR );
91facb16e7SArmin Le Grand             }
92facb16e7SArmin Le Grand             if(bBot)
93facb16e7SArmin Le Grand             {
94facb16e7SArmin Le Grand                 pBmpAcc->DrawLine( aBL,aBR );
95facb16e7SArmin Le Grand                 if( pMskAcc )
96facb16e7SArmin Le Grand                     pMskAcc->DrawLine( aBL,aBR );
97facb16e7SArmin Le Grand             }
98facb16e7SArmin Le Grand             if(bVer)
99facb16e7SArmin Le Grand             {
100facb16e7SArmin Le Grand                 pBmpAcc->DrawLine( aVT,aVB );
101facb16e7SArmin Le Grand                 if( pMskAcc )
102facb16e7SArmin Le Grand                     pMskAcc->DrawLine( aVT,aVB );
103facb16e7SArmin Le Grand             }
104facb16e7SArmin Le Grand             if(bHor)
105facb16e7SArmin Le Grand             {
106facb16e7SArmin Le Grand                 pBmpAcc->DrawLine( aHL,aHR );
107facb16e7SArmin Le Grand                 if( pMskAcc )
108facb16e7SArmin Le Grand                     pMskAcc->DrawLine( aHL,aHR );
109facb16e7SArmin Le Grand             }
110facb16e7SArmin Le Grand         }
111facb16e7SArmin Le Grand 
112facb16e7SArmin Le Grand         aBmp.ReleaseAccess( pBmpAcc );
113facb16e7SArmin Le Grand         if( pMskAcc )
114facb16e7SArmin Le Grand                 aMsk.ReleaseAccess( pMskAcc );
115facb16e7SArmin Le Grand 
116facb16e7SArmin Le Grand         if( aBmpEx.IsAlpha() )
117facb16e7SArmin Le Grand             aBmpEx = BitmapEx( aBmp, AlphaMask( aMsk ) );
118facb16e7SArmin Le Grand         else if( aBmpEx.IsTransparent() )
119facb16e7SArmin Le Grand             aBmpEx = BitmapEx( aBmp, aMsk );
120facb16e7SArmin Le Grand         else
121facb16e7SArmin Le Grand             aBmpEx = aBmp;
122facb16e7SArmin Le Grand 
123facb16e7SArmin Le Grand         mrTbx.SetItemImage( mnBtnId, Image( aBmpEx ) );
124facb16e7SArmin Le Grand     }
125facb16e7SArmin Le Grand }
126facb16e7SArmin Le Grand 
127facb16e7SArmin Le Grand } } // end of namespace svx::sidebar
128facb16e7SArmin Le Grand 
129*8e9b0a85Smseidel /* vim: set noet sw=4 ts=4: */
130