diff options
Diffstat (limited to 'sw/source/ui/frmdlg/colex.cxx')
-rw-r--r-- | sw/source/ui/frmdlg/colex.cxx | 587 |
1 files changed, 0 insertions, 587 deletions
diff --git a/sw/source/ui/frmdlg/colex.cxx b/sw/source/ui/frmdlg/colex.cxx deleted file mode 100644 index c198c5aa47..0000000000 --- a/sw/source/ui/frmdlg/colex.cxx +++ /dev/null @@ -1,587 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sw.hxx" - - - - -#include "cmdid.h" -#include "hintids.hxx" -#include <algorithm> - - -#include <svl/eitem.hxx> -#include <editeng/lrspitem.hxx> -#include <editeng/ulspitem.hxx> -#include <editeng/sizeitem.hxx> -#include <svx/pageitem.hxx> -#include <editeng/brshitem.hxx> -#include <editeng/frmdiritem.hxx> -#include <vcl/bitmap.hxx> -#include <vcl/graph.hxx> -#include <tgrditem.hxx> -#include <viewopt.hxx> -#include "colex.hxx" -#include "colmgr.hxx" - -/*----------------------------------------------------------------------- - Description: Taking the updated values from the set - -----------------------------------------------------------------------*/ -void SwPageExample::UpdateExample( const SfxItemSet& rSet ) -{ - const SvxPageItem* pPage = 0; - SfxItemPool* pPool = rSet.GetPool(); - sal_uInt16 nWhich = pPool->GetWhich( SID_ATTR_PAGE ); - - if ( rSet.GetItemState( nWhich, sal_False ) == SFX_ITEM_SET ) - { - // alignment - pPage = (const SvxPageItem*)&rSet.Get( nWhich ); - - if ( pPage ) - SetUsage( pPage->GetPageUsage() ); - } - - nWhich = pPool->GetWhich( SID_ATTR_PAGE_SIZE ); - - if ( rSet.GetItemState( nWhich, sal_False ) == SFX_ITEM_SET ) - { - // orientation and size from PageItem - const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get( nWhich ); - SetSize( rSize.GetSize() ); - } - nWhich = RES_LR_SPACE; - if ( rSet.GetItemState( nWhich, sal_False ) == SFX_ITEM_SET ) - { - // set left and right border - const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rSet.Get( nWhich ); - - SetLeft( rLRSpace.GetLeft() ); - SetRight( rLRSpace.GetRight() ); - } - else - { - SetLeft( 0 ); - SetRight( 0 ); - } - - nWhich = RES_UL_SPACE; - - if ( rSet.GetItemState( nWhich, sal_False ) == SFX_ITEM_SET ) - { - // set upper and lower border - const SvxULSpaceItem& rULSpace = (const SvxULSpaceItem&)rSet.Get( nWhich ); - - SetTop( rULSpace.GetUpper() ); - SetBottom( rULSpace.GetLower() ); - } - else - { - SetTop( 0 ); - SetBottom( 0 ); - } - - - // evaluate header-attributes - const SfxPoolItem* pItem; - if( SFX_ITEM_SET == rSet.GetItemState( pPool->GetWhich( SID_ATTR_PAGE_HEADERSET), - sal_False, &pItem ) ) - { - const SfxItemSet& rHeaderSet = ((SvxSetItem*)pItem)->GetItemSet(); - const SfxBoolItem& rHeaderOn = - (const SfxBoolItem&)rHeaderSet.Get( pPool->GetWhich( SID_ATTR_PAGE_ON ) ); - - if ( rHeaderOn.GetValue() ) - { - const SvxSizeItem& rSize = - (const SvxSizeItem&)rHeaderSet.Get(pPool->GetWhich(SID_ATTR_PAGE_SIZE)); - - const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rHeaderSet.Get( - pPool->GetWhich(SID_ATTR_ULSPACE)); - const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rHeaderSet.Get( - pPool->GetWhich(SID_ATTR_LRSPACE)); - - SetHdHeight( rSize.GetSize().Height() - rUL.GetLower()); - SetHdDist( rUL.GetLower() ); - SetHdLeft( rLR.GetLeft() ); - SetHdRight( rLR.GetRight() ); - SetHeader( sal_True ); - if ( rHeaderSet.GetItemState( RES_BACKGROUND ) == SFX_ITEM_SET ) - { - const SvxBrushItem& rItem = - (const SvxBrushItem&)rHeaderSet.Get( RES_BACKGROUND ); - SetHdColor( rItem.GetColor() ); - } - if ( rHeaderSet.GetItemState( RES_BOX ) == SFX_ITEM_SET ) - { - const SvxBoxItem& rItem = - (const SvxBoxItem&)rHeaderSet.Get( RES_BOX ); - SetHdBorder( rItem ); - } - } - else - SetHeader( sal_False ); - } - - if( SFX_ITEM_SET == rSet.GetItemState( pPool->GetWhich( SID_ATTR_PAGE_FOOTERSET), - sal_False, &pItem ) ) - { - const SfxItemSet& rFooterSet = ((SvxSetItem*)pItem)->GetItemSet(); - const SfxBoolItem& rFooterOn = - (const SfxBoolItem&)rFooterSet.Get( SID_ATTR_PAGE_ON ); - - if ( rFooterOn.GetValue() ) - { - const SvxSizeItem& rSize = - (const SvxSizeItem&)rFooterSet.Get( pPool->GetWhich( SID_ATTR_PAGE_SIZE ) ); - - const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rFooterSet.Get( - pPool->GetWhich( SID_ATTR_ULSPACE ) ); - const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rFooterSet.Get( - pPool->GetWhich( SID_ATTR_LRSPACE ) ); - - SetFtHeight( rSize.GetSize().Height() - rUL.GetUpper()); - SetFtDist( rUL.GetUpper() ); - SetFtLeft( rLR.GetLeft() ); - SetFtRight( rLR.GetRight() ); - SetFooter( sal_True ); - if( rFooterSet.GetItemState( RES_BACKGROUND ) == SFX_ITEM_SET ) - { - const SvxBrushItem& rItem = - (const SvxBrushItem&)rFooterSet.Get( RES_BACKGROUND ); - SetFtColor( rItem.GetColor() ); - } - if( rFooterSet.GetItemState( RES_BOX ) == SFX_ITEM_SET ) - { - const SvxBoxItem& rItem = - (const SvxBoxItem&)rFooterSet.Get( RES_BOX ); - SetFtBorder( rItem ); - } - } - else - SetFooter( sal_False ); - } - if( SFX_ITEM_SET == rSet.GetItemState( RES_BACKGROUND, - sal_False, &pItem ) ) - { - SetColor( ( (const SvxBrushItem*)pItem )->GetColor() ); - const Graphic* pGrf = ( (const SvxBrushItem*)pItem )->GetGraphic(); - - if ( pGrf ) - { - Bitmap aBitmap = pGrf->GetBitmap(); - SetBitmap( &aBitmap ); - } - else - SetBitmap( NULL ); - } - - Invalidate(); -} - -void SwColExample::DrawPage( const Point& rOrg, - const sal_Bool bSecond, - const sal_Bool bEnabled ) -{ - SwPageExample::DrawPage( rOrg, bSecond, bEnabled ); - sal_uInt16 nColumnCount; - if( pColMgr && 0 != (nColumnCount = pColMgr->GetCount())) - { - long nL = GetLeft(); - long nR = GetRight(); - - if ( GetUsage() == SVX_PAGE_MIRROR && !bSecond ) - { - // rotate for mirrored - nL = GetRight(); - nR = GetLeft(); - } - - SetFillColor( Color( COL_LIGHTGRAY ) ); - Rectangle aRect; - aRect.Right() = rOrg.X() + GetSize().Width() - nR; - aRect.Left() = rOrg.X() + nL; - aRect.Top() = rOrg.Y() + GetTop() - + GetHdHeight() + GetHdDist(); - aRect.Bottom()= rOrg.Y() + GetSize().Height() - GetBottom() - - GetFtHeight() - GetFtDist(); - DrawRect(aRect); - - if(GetColor() == Color(COL_TRANSPARENT)) - { - const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); - const Color& rFieldColor = rStyleSettings.GetFieldColor(); - SetFillColor( rFieldColor ); - } - else - SetFillColor( GetColor() ); - - // #97495# make sure that the automatic column widht's are always equal - sal_Bool bAutoWidth = pColMgr->IsAutoWidth(); - sal_Int32 nAutoColWidth = 0; - if(bAutoWidth) - { - sal_Int32 nColumnWidthSum = 0; - sal_uInt16 i; - for(i = 0; i < nColumnCount; ++i) - nColumnWidthSum += pColMgr->GetColWidth( i ); - nAutoColWidth = nColumnWidthSum / nColumnCount; - } - - sal_uInt16 i; - for( i = 0; i < nColumnCount; i++) - { - if(!bAutoWidth) - nAutoColWidth = pColMgr->GetColWidth( i ); - aRect.Right() = aRect.Left() + nAutoColWidth; - DrawRect(aRect); - if(i < nColumnCount - 1) - aRect.Left() = aRect.Right() + pColMgr->GetGutterWidth(i); - } - if(pColMgr->HasLine()) - { - Point aUp( rOrg.X() + nL, rOrg.Y() + GetTop() ); - Point aDown( rOrg.X() + nL, rOrg.Y() + GetSize().Height() - - GetBottom() - GetFtHeight() - GetFtDist() ); - - if( pColMgr->GetLineHeightPercent() != 100 ) - { - long nLength = aDown.Y() - aUp.Y(); - nLength -= nLength * pColMgr->GetLineHeightPercent() / 100; - switch(pColMgr->GetAdjust()) - { - case COLADJ_BOTTOM: aUp.Y() += nLength; break; - case COLADJ_TOP: aDown.Y() -= nLength; break; - case COLADJ_CENTER: - aUp.Y() += nLength / 2; - aDown.Y() -= nLength / 2; - break; - default:; // prevent warning - } - } - - int nDist; - for( i = 0; i < nColumnCount - 1; i++) - { - int nGutter = pColMgr->GetGutterWidth(i); - nDist = pColMgr->GetColWidth( i ) + nGutter; - nDist -= (i == 0) ? - nGutter/2 : - 0; - aUp.X() += nDist; - aDown.X() += nDist; - DrawLine( aUp, aDown ); - - } - } - } -} - -SwColumnOnlyExample::SwColumnOnlyExample( Window* pParent, const ResId& rResId) : - Window(pParent, rResId), - m_aFrmSize(1,1) -{ - SetMapMode( MapMode( MAP_TWIP ) ); - m_aWinSize = GetOutputSizePixel(); - m_aWinSize.Height() -= 4; - m_aWinSize.Width() -= 4; - - m_aWinSize = PixelToLogic( m_aWinSize ); - - SetBorderStyle( WINDOW_BORDER_MONO ); - - m_aFrmSize = SvxPaperInfo::GetPaperSize(PAPER_A4);// DIN A4 - ::FitToActualSize(m_aCols, (sal_uInt16)m_aFrmSize.Width()); - - long nHeight = m_aFrmSize.Height(); - Fraction aScale( m_aWinSize.Height(), nHeight ); - MapMode aMapMode( GetMapMode() ); - aMapMode.SetScaleX( aScale ); - aMapMode.SetScaleY( aScale ); - SetMapMode( aMapMode ); -} - -void SwColumnOnlyExample::Paint( const Rectangle& /*rRect*/ ) -{ - const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); - const Color& rFieldColor = rStyleSettings.GetFieldColor(); - const Color& rDlgColor = rStyleSettings.GetDialogColor(); - const Color& rFieldTextColor = SwViewOption::GetFontColor(); - Color aGrayColor(COL_LIGHTGRAY); - if(rFieldColor == aGrayColor) - aGrayColor.Invert(); - - Size aLogSize(PixelToLogic(GetOutputSizePixel())); - Rectangle aCompleteRect(Point(0,0), aLogSize); - SetLineColor(rDlgColor); - SetFillColor(rDlgColor); - DrawRect(aCompleteRect); - - SetLineColor( rFieldTextColor ); - Point aTL( (aLogSize.Width() - m_aFrmSize.Width()) / 2, - (aLogSize.Height() - m_aFrmSize.Height()) / 2); - Rectangle aRect(aTL, m_aFrmSize); - - //draw a shadow rectangle - SetFillColor( Color(COL_GRAY) ); - Rectangle aShadowRect(aRect); - aShadowRect.Move(aTL.Y(), aTL.Y()); - DrawRect(aShadowRect); - - SetFillColor( rFieldColor ); - DrawRect(aRect); - - SetFillColor( aGrayColor ); - - //column seperator? - long nLength = aLogSize.Height() - 2 * aTL.Y(); - Point aUp( aTL ); - Point aDown( aTL.X(), nLength ); - sal_Bool bLines = sal_False; - if(m_aCols.GetLineAdj() != COLADJ_NONE) - { - bLines = sal_True; - - sal_uInt16 nPercent = m_aCols.GetLineHeight(); - if( nPercent != 100 ) - { - nLength -= nLength * nPercent / 100; - switch(m_aCols.GetLineAdj()) - { - case COLADJ_BOTTOM: aUp.Y() += nLength; break; - case COLADJ_TOP: aDown.Y() -= nLength; break; - case COLADJ_CENTER: - aUp.Y() += nLength / 2; - aDown.Y() -= nLength / 2; - break; - default:; //prevent warning - } - } - - } - const SwColumns& rCols = m_aCols.GetColumns(); - sal_uInt16 nColCount = rCols.Count(); - if( nColCount ) - { - DrawRect(aRect); - SetFillColor( rFieldColor ); - Rectangle aFrmRect(aTL, m_aFrmSize); - long nSum = aTL.X(); - for(sal_uInt16 i = 0; i < nColCount; i++) - { - SwColumn* pCol = rCols[i]; - aFrmRect.Left() = nSum + pCol->GetLeft();//nSum + pCol->GetLeft() + aTL.X(); - nSum += pCol->GetWishWidth(); - aFrmRect.Right() = nSum - pCol->GetRight(); - DrawRect(aFrmRect); - } - if(bLines ) - { - nSum = aTL.X(); - for(sal_uInt16 i = 0; i < nColCount - 1; i++) - { - nSum += rCols[i]->GetWishWidth(); - aUp.X() = nSum; - aDown.X() = nSum; - DrawLine(aUp, aDown); - } - } - } -} - -void SwColumnOnlyExample::SetColumns(const SwFmtCol& rCol) -{ - m_aCols = rCol; - sal_uInt16 nWishSum = m_aCols.GetWishWidth(); - long nFrmWidth = m_aFrmSize.Width(); - SwColumns& rCols = m_aCols.GetColumns(); - sal_uInt16 nColCount = rCols.Count(); - - for(sal_uInt16 i = 0; i < nColCount; i++) - { - SwColumn* pCol = rCols[i]; - long nWish = pCol->GetWishWidth(); - nWish *= nFrmWidth; - nWish /= nWishSum; - pCol->SetWishWidth((sal_uInt16)nWish); - long nLeft = pCol->GetLeft(); - nLeft *= nFrmWidth; - nLeft /= nWishSum; - pCol->SetLeft((sal_uInt16)nLeft); - long nRight = pCol->GetRight(); - nRight *= nFrmWidth; - nRight /= nWishSum; - pCol->SetRight((sal_uInt16)nRight); - } - // #97495# make sure that the automatic column width's are always equal - if(nColCount && m_aCols.IsOrtho()) - { - sal_Int32 nColumnWidthSum = 0; - sal_uInt16 i; - for(i = 0; i < nColCount; ++i) - { - SwColumn* pCol = rCols[i]; - nColumnWidthSum += pCol->GetWishWidth(); - nColumnWidthSum -= (pCol->GetRight() + pCol->GetLeft()); - } - nColumnWidthSum /= nColCount; - for(i = 0; i < nColCount; ++i) - { - SwColumn* pCol = rCols[i]; - pCol->SetWishWidth( static_cast< sal_uInt16 >(nColumnWidthSum + pCol->GetRight() + pCol->GetLeft())); - } - } -} - -SwPageGridExample::~SwPageGridExample() -{ - delete pGridItem; -} - -#define MAX_ROWS 10 -#define MAX_LINES 15 -void SwPageGridExample::DrawPage( const Point& rOrg, - const sal_Bool bSecond, - const sal_Bool bEnabled ) -{ - SwPageExample::DrawPage(rOrg, bSecond, bEnabled); - if(pGridItem && pGridItem->GetGridType()) - { - //paint the grid now - Color aLineColor = pGridItem->GetColor(); - if(aLineColor.GetColor() == COL_AUTO) - { - aLineColor = GetFillColor(); - aLineColor.Invert(); - } - SetLineColor(aLineColor); - long nL = GetLeft(); - long nR = GetRight(); - - if ( GetUsage() == SVX_PAGE_MIRROR && !bSecond ) - { - // rotate for mirrored - nL = GetRight(); - nR = GetLeft(); - } - - Rectangle aRect; - aRect.Right() = rOrg.X() + GetSize().Width() - nR; - aRect.Left() = rOrg.X() + nL; - aRect.Top() = rOrg.Y() + GetTop() - + GetHdHeight() + GetHdDist(); - aRect.Bottom()= rOrg.Y() + GetSize().Height() - GetBottom() - - GetFtHeight() - GetFtDist(); - - //increase the values to get a 'viewable' preview - sal_Int32 nBaseHeight = pGridItem->GetBaseHeight() * 3; - sal_Int32 nRubyHeight = pGridItem->GetRubyHeight() * 3; - - //detect height of rectangles - Rectangle aRubyRect(aRect.TopLeft(), - m_bVertical ? - Size(nRubyHeight, aRect.GetHeight()) : - Size(aRect.GetWidth(), nRubyHeight)); - Rectangle aCharRect(aRect.TopLeft(), - m_bVertical ? - Size(nBaseHeight, aRect.GetHeight()) : - Size(aRect.GetWidth(), nBaseHeight)); - - sal_Int32 nLineHeight = nBaseHeight + nRubyHeight; - - //detect count of rectangles - sal_Int32 nLines = (m_bVertical ? aRect.GetWidth(): aRect.GetHeight()) / nLineHeight; - if(nLines > pGridItem->GetLines()) - nLines = pGridItem->GetLines(); - - // determine start position - if(m_bVertical) - { - sal_Int16 nXStart = static_cast< sal_Int16 >(aRect.GetWidth() / 2 - nLineHeight * nLines /2); - aRubyRect.Move(nXStart, 0); - aCharRect.Move(nXStart, 0); - } - else - { - sal_Int16 nYStart = static_cast< sal_Int16 >(aRect.GetHeight() / 2 - nLineHeight * nLines /2); - aRubyRect.Move(0, nYStart); - aCharRect.Move(0, nYStart); - } - - if(pGridItem->IsRubyTextBelow()) - m_bVertical ? aRubyRect.Move(nBaseHeight, 0) : aRubyRect.Move(0, nBaseHeight); - else - m_bVertical ? aCharRect.Move(nRubyHeight, 0) : aCharRect.Move(0, nRubyHeight); - - //vertical lines - sal_Bool bBothLines = pGridItem->GetGridType() == GRID_LINES_CHARS; - SetFillColor( Color( COL_TRANSPARENT ) ); - sal_Int32 nXMove = m_bVertical ? nLineHeight : 0; - sal_Int32 nYMove = m_bVertical ? 0 : nLineHeight; - for(sal_Int32 nLine = 0; nLine < nLines; nLine++) - { - DrawRect(aRubyRect); - DrawRect(aCharRect); - if(bBothLines) - { - Point aStart = aCharRect.TopLeft(); - Point aEnd = m_bVertical ? aCharRect.TopRight() : aCharRect.BottomLeft(); - while(m_bVertical ? aStart.Y() < aRect.Bottom(): aStart.X() < aRect.Right()) - { - DrawLine(aStart, aEnd); - if(m_bVertical) - aStart.Y() = aEnd.Y() += nBaseHeight; - else - aStart.X() = aEnd.X() += nBaseHeight; - } - } - aRubyRect.Move(nXMove, nYMove); - aCharRect.Move(nXMove, nYMove); - } - } -} - -void SwPageGridExample::UpdateExample( const SfxItemSet& rSet ) -{ - DELETEZ(pGridItem); - //get the grid information - if(SFX_ITEM_AVAILABLE <= rSet.GetItemState(RES_TEXTGRID, sal_True)) - pGridItem = (SwTextGridItem*)((const SwTextGridItem&)rSet.Get(RES_TEXTGRID)).Clone(); - if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( RES_FRAMEDIR, sal_True )) - { - const SvxFrameDirectionItem& rDirItem = - (const SvxFrameDirectionItem&)rSet.Get(RES_FRAMEDIR); - m_bVertical = rDirItem.GetValue() == FRMDIR_VERT_TOP_RIGHT|| - rDirItem.GetValue() == FRMDIR_VERT_TOP_LEFT; - } - SwPageExample::UpdateExample(rSet); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |