| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| #include "precompiled_sc.hxx" |
| |
| #include <CellBorderUpdater.hxx> |
| #include <vcl/bmpacc.hxx> |
| #include <vcl/svapp.hxx> |
| |
| namespace sc { namespace sidebar { |
| |
| CellBorderUpdater::CellBorderUpdater( |
| sal_uInt16 nTbxBtnId, |
| ToolBox& rTbx) |
| : mnBtnId(nTbxBtnId), |
| mrTbx(rTbx) |
| { |
| } |
| |
| CellBorderUpdater::~CellBorderUpdater() |
| { |
| } |
| |
| void CellBorderUpdater::UpdateCellBorder(bool bTop, bool bBot, bool bLeft, bool bRight, Image aImg, bool bVer, bool bHor) |
| { |
| BitmapEx aBmpEx( aImg.GetBitmapEx() ); |
| Bitmap aBmp( aBmpEx.GetBitmap() ); |
| BitmapWriteAccess* pBmpAcc = aBmp.AcquireWriteAccess(); |
| const Size maBmpSize = aBmp.GetSizePixel(); |
| |
| if( pBmpAcc ) |
| { |
| Bitmap aMsk; |
| BitmapWriteAccess* pMskAcc; |
| |
| if( aBmpEx.IsAlpha() ) |
| pMskAcc = ( aMsk = aBmpEx.GetAlpha().GetBitmap() ).AcquireWriteAccess(); |
| else if( aBmpEx.IsTransparent() ) |
| pMskAcc = ( aMsk = aBmpEx.GetMask() ).AcquireWriteAccess(); |
| else |
| pMskAcc = NULL; |
| |
| pBmpAcc->SetLineColor( ::Application::GetSettings().GetStyleSettings().GetFieldTextColor() ) ; |
| pBmpAcc->SetFillColor( COL_BLACK); |
| |
| if(maBmpSize.Width() == 43 && maBmpSize.Height() == 43) |
| { |
| 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); |
| if( pMskAcc ) |
| { |
| pMskAcc->SetLineColor( COL_BLACK ); |
| pMskAcc->SetFillColor( COL_BLACK ); |
| } |
| if(bLeft) |
| { |
| pBmpAcc->DrawLine( aTL,aBL ); |
| if( pMskAcc ) |
| pMskAcc->DrawLine( aTL,aBL ); |
| } |
| if(bRight) |
| { |
| pBmpAcc->DrawLine( aTR,aBR ); |
| if( pMskAcc ) |
| pMskAcc->DrawLine( aTR,aBR ); |
| } |
| if(bTop) |
| { |
| pBmpAcc->DrawLine( aTL,aTR ); |
| if( pMskAcc ) |
| pMskAcc->DrawLine( aTL,aTR ); |
| } |
| if(bBot) |
| { |
| pBmpAcc->DrawLine( aBL,aBR ); |
| if( pMskAcc ) |
| pMskAcc->DrawLine( aBL,aBR ); |
| } |
| if(bVer) |
| { |
| pBmpAcc->DrawLine( aVT,aVB ); |
| if( pMskAcc ) |
| pMskAcc->DrawLine( aVT,aVB ); |
| } |
| if(bHor) |
| { |
| pBmpAcc->DrawLine( aHL,aHR ); |
| if( pMskAcc ) |
| pMskAcc->DrawLine( aHL,aHR ); |
| } |
| } |
| |
| aBmp.ReleaseAccess( pBmpAcc ); |
| if( pMskAcc ) |
| aMsk.ReleaseAccess( pMskAcc ); |
| |
| if( aBmpEx.IsAlpha() ) |
| aBmpEx = BitmapEx( aBmp, AlphaMask( aMsk ) ); |
| else if( aBmpEx.IsTransparent() ) |
| aBmpEx = BitmapEx( aBmp, aMsk ); |
| else |
| aBmpEx = aBmp; |
| |
| mrTbx.SetItemImage( mnBtnId, Image( aBmpEx ) ); |
| } |
| } |
| |
| } } // end of namespace svx::sidebar |
| |
| // eof |