summaryrefslogtreecommitdiff
path: root/sw/source/core/view
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/core/view')
-rwxr-xr-x[-rw-r--r--]sw/source/core/view/makefile.mk18
-rwxr-xr-xsw/source/core/view/printdata.cxx546
-rw-r--r--sw/source/core/view/scrrect.cxx1192
-rw-r--r--sw/source/core/view/viewimp.cxx19
-rwxr-xr-x[-rw-r--r--]sw/source/core/view/viewsh.cxx61
-rwxr-xr-x[-rw-r--r--]sw/source/core/view/vprint.cxx555
6 files changed, 583 insertions, 1808 deletions
diff --git a/sw/source/core/view/makefile.mk b/sw/source/core/view/makefile.mk
index aa010e6b6055..0ac0e0d106cb 100644..100755
--- a/sw/source/core/view/makefile.mk
+++ b/sw/source/core/view/makefile.mk
@@ -1,7 +1,7 @@
#*************************************************************************
#
# 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
@@ -40,18 +40,20 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
SLOFILES = \
- $(SLO)$/scrrect.obj \
$(SLO)$/vdraw.obj \
$(SLO)$/viewimp.obj \
$(SLO)$/viewsh.obj \
- $(SLO)$/viewpg.obj \
- $(SLO)$/vnew.obj \
- $(SLO)$/vprint.obj \
- $(SLO)$/pagepreviewlayout.obj
-
+ $(SLO)$/pagepreviewlayout.obj \
+ $(SLO)$/printdata.obj \
+ $(SLO)$/viewpg.obj \
+ $(SLO)$/vnew.obj \
+ $(SLO)$/vprint.obj
+
+
+
EXCEPTIONSFILES = \
$(SLO)$/pagepreviewlayout.obj
-
+
# --- Targets -------------------------------------------------------
diff --git a/sw/source/core/view/printdata.cxx b/sw/source/core/view/printdata.cxx
new file mode 100755
index 000000000000..39bd4d91290c
--- /dev/null
+++ b/sw/source/core/view/printdata.cxx
@@ -0,0 +1,546 @@
+/**************************************************************************
+ *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: vprint.cxx,v $
+ * $Revision: 1.46 $
+ *
+ * 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 <printdata.hxx>
+
+#include <globals.hrc>
+#include <doc.hxx>
+#include <unotxdoc.hxx>
+#include <wdocsh.hxx>
+#include <viewsh.hxx>
+#include <docfld.hxx>
+#include <swprtopt.hxx>
+
+#include <svl/languageoptions.hxx>
+#include <toolkit/awt/vclxdevice.hxx>
+#include <tools/string.hxx>
+#include <tools/debug.hxx>
+#include <tools/resary.hxx>
+#include <unotools/moduleoptions.hxx>
+#include <vcl/outdev.hxx>
+
+
+extern bool lcl_GetPostIts( IDocumentFieldsAccess* pIDFA, _SetGetExpFlds * pSrtLst );
+
+
+using namespace ::com::sun::star;
+using ::rtl::OUString;
+
+
+//////////////////////////////////////////////////////////////////////
+
+SwRenderData::SwRenderData()
+{
+ m_pPostItFields = 0;
+ m_pPostItDoc = 0;
+ m_pPostItShell = 0;
+
+ m_pViewOptionAdjust = 0;
+ m_pPrtOptions = 0;
+}
+
+
+SwRenderData::~SwRenderData()
+{
+ delete m_pViewOptionAdjust; m_pViewOptionAdjust = 0;
+ delete m_pPrtOptions; m_pPrtOptions = 0;
+ DBG_ASSERT( !m_pPostItShell, "m_pPostItShell should already have been deleted" );
+ DBG_ASSERT( !m_pPostItDoc, "m_pPostItDoc should already have been deleted" );
+ DBG_ASSERT( !m_pPostItFields, " should already have been deleted" );
+}
+
+
+void SwRenderData::CreatePostItData( SwDoc *pDoc, const SwViewOption *pViewOpt, OutputDevice *pOutDev )
+{
+ DBG_ASSERT( !m_pPostItFields && !m_pPostItDoc && !m_pPostItShell, "some post-it data already exists" );
+ m_pPostItFields = new _SetGetExpFlds;
+ lcl_GetPostIts( pDoc, m_pPostItFields );
+ m_pPostItDoc = new SwDoc;
+
+ //!! Disable spell and grammar checking in the temporary document.
+ //!! Otherwise the grammar checker might process it and crash if we later on
+ //!! simply delete this document while he is still at it.
+ SwViewOption aViewOpt( *pViewOpt );
+ aViewOpt.SetOnlineSpell( FALSE );
+
+ m_pPostItShell = new ViewShell( *m_pPostItDoc, 0, &aViewOpt, pOutDev );
+}
+
+
+void SwRenderData::DeletePostItData()
+{
+ if (HasPostItData())
+ {
+ m_pPostItDoc->setPrinter( 0, false, false ); //damit am echten DOC der Drucker bleibt
+ delete m_pPostItShell; //Nimmt das PostItDoc mit ins Grab.
+ delete m_pPostItFields;
+ m_pPostItDoc = 0;
+ m_pPostItShell = 0;
+ m_pPostItFields = 0;
+ }
+}
+
+bool SwRenderData::NeedNewViewOptionAdjust( const SwWrtShell& rCompare ) const
+{
+ return m_pViewOptionAdjust ? ! m_pViewOptionAdjust->checkShell( rCompare ) : true;
+}
+
+
+void SwRenderData::ViewOptionAdjustStart( SwWrtShell &rSh, const SwViewOption &rViewOptions )
+{
+ if (m_pViewOptionAdjust)
+ {
+ DBG_ASSERT( 0, "error: there should be no ViewOptionAdjust active when calling this function" );
+ }
+ m_pViewOptionAdjust = new SwViewOptionAdjust_Impl( rSh, rViewOptions );
+}
+
+
+void SwRenderData::ViewOptionAdjust( const SwPrtOptions *pPrtOptions )
+{
+ m_pViewOptionAdjust->AdjustViewOptions( pPrtOptions );
+}
+
+
+void SwRenderData::ViewOptionAdjustStop()
+{
+ if (m_pViewOptionAdjust)
+ {
+ delete m_pViewOptionAdjust;
+ m_pViewOptionAdjust = 0;
+ }
+}
+
+
+void SwRenderData::MakeSwPrtOptions(
+ SwPrtOptions &rOptions,
+ const SwDocShell *pDocShell,
+ const SwPrintUIOptions *pOpt,
+ const SwRenderData *pData,
+ bool bIsPDFExport )
+{
+ if (!pDocShell || !pOpt || !pData)
+ return;
+
+ // get default print options
+ const TypeId aSwWebDocShellTypeId = TYPE(SwWebDocShell);
+ BOOL bWeb = pDocShell->IsA( aSwWebDocShellTypeId );
+ rOptions.MakeOptions( bWeb );
+
+ // get print options to use from provided properties
+ rOptions.bPrintGraphic = pOpt->IsPrintGraphics();
+ rOptions.bPrintTable = pOpt->IsPrintTables();
+ rOptions.bPrintDraw = pOpt->IsPrintDrawings();
+ rOptions.bPrintControl = pOpt->IsPrintFormControls();
+ rOptions.bPrintLeftPages = pOpt->IsPrintLeftPages();
+ rOptions.bPrintRightPages = pOpt->IsPrintRightPages();
+ rOptions.bPrintPageBackground = pOpt->IsPrintPageBackground();
+ rOptions.bPrintEmptyPages = pOpt->IsPrintEmptyPages( bIsPDFExport );
+ // bUpdateFieldsInPrinting <-- not set here; mail merge only
+ rOptions.bPaperFromSetup = pOpt->IsPaperFromSetup();
+ rOptions.bPrintReverse = pOpt->IsPrintReverse();
+ rOptions.bPrintProspect = pOpt->IsPrintProspect();
+ rOptions.bPrintProspectRTL = pOpt->IsPrintProspectRTL();
+ // bPrintSingleJobs <-- not set here; mail merge and or configuration
+ // bModified <-- not set here; mail merge only
+ rOptions.bPrintBlackFont = pOpt->IsPrintWithBlackTextColor();
+ rOptions.bPrintHiddenText = pOpt->IsPrintHiddenText();
+ rOptions.bPrintTextPlaceholder = pOpt->IsPrintTextPlaceholders();
+ rOptions.nPrintPostIts = pOpt->GetPrintPostItsType();
+
+ //! needs to be set after MakeOptions since the assignment operation in that
+ //! function will destroy the pointers
+ rOptions.SetPrintUIOptions( pOpt );
+ rOptions.SetRenderData( pData );
+
+ // rOptions.aMulti is not used anymore in the XRenderable API
+ // Thus we set it to a dummy value here.
+ rOptions.aMulti = MultiSelection( Range( 1, 1 ) );
+
+ //! Note: Since for PDF export of (multi-)selection a temporary
+ //! document is created that contains only the selects parts,
+ //! and thus that document is to printed in whole the,
+ //! rOptions.bPrintSelection parameter will be false.
+ if (bIsPDFExport)
+ rOptions.bPrintSelection = FALSE;
+}
+
+
+//////////////////////////////////////////////////////////////////////
+
+SwPrintUIOptions::SwPrintUIOptions(
+ bool bWeb,
+ bool bSwSrcView,
+ bool bHasSelection,
+ bool bHasPostIts,
+ const SwPrintData &rDefaultPrintData ) :
+ m_pLast( NULL ),
+ m_rDefaultPrintData( rDefaultPrintData )
+{
+ ResStringArray aLocalizedStrings( SW_RES( STR_PRINTOPTUI ) );
+
+ DBG_ASSERT( aLocalizedStrings.Count() >= 44, "resource incomplete" );
+ if( aLocalizedStrings.Count() < 44 ) // bad resource ?
+ return;
+
+ // printing HTML sources does not have any valid UI options.
+ // Its just the source code that gets printed ...
+ if (bSwSrcView)
+ {
+ m_aUIProperties.realloc( 0 );
+ return;
+ }
+
+ // check if CTL is enabled
+ SvtLanguageOptions aLangOpt;
+ bool bCTL = aLangOpt.IsCTLFontEnabled();
+
+ // create sequence of print UI options
+ // (5 options are not available for Writer-Web)
+ const int nCTLOpts = bCTL ? 1 : 0;
+ const int nNumProps = nCTLOpts + (bWeb ? 14 : 20);
+ m_aUIProperties.realloc( nNumProps );
+ int nIdx = 0;
+
+ // create "writer" section (new tab page in dialog)
+ SvtModuleOptions aModOpt;
+ String aAppGroupname( aLocalizedStrings.GetString( 0 ) );
+ aAppGroupname.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ),
+ aModOpt.GetModuleName( SvtModuleOptions::E_SWRITER ) );
+ m_aUIProperties[ nIdx++ ].Value = getGroupControlOpt( aAppGroupname, rtl::OUString() );
+
+ // create sub section for Contents
+ m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( aLocalizedStrings.GetString( 1 ), rtl::OUString() );
+
+ // create a bool option for background
+ bool bDefaultVal = rDefaultPrintData.IsPrintPageBackground();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 2 ),
+ aLocalizedStrings.GetString( 3 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPageBackground" ) ),
+ bDefaultVal );
+
+ // create a bool option for pictures/graphics AND OLE and drawing objects as well
+ bDefaultVal = rDefaultPrintData.IsPrintGraphic() || rDefaultPrintData.IsPrintDraw();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 4 ),
+ aLocalizedStrings.GetString( 5 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPicturesAndObjects" ) ),
+ bDefaultVal );
+ if (!bWeb)
+ {
+ // create a bool option for hidden text
+ bDefaultVal = rDefaultPrintData.IsPrintHiddenText();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 6 ),
+ aLocalizedStrings.GetString( 7 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintHiddenText" ) ),
+ bDefaultVal );
+
+ // create a bool option for place holder
+ bDefaultVal = rDefaultPrintData.IsPrintTextPlaceholder();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 8 ),
+ aLocalizedStrings.GetString( 9 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintTextPlaceholder" ) ),
+ bDefaultVal );
+ }
+
+ // create a bool option for controls
+ bDefaultVal = rDefaultPrintData.IsPrintControl();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 10 ),
+ aLocalizedStrings.GetString( 11 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintControls" ) ),
+ bDefaultVal );
+
+ // create sub section for Color
+ m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( aLocalizedStrings.GetString( 12 ), rtl::OUString() );
+
+ // create a bool option for printing text with black font color
+ bDefaultVal = rDefaultPrintData.IsPrintBlackFont();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 13 ),
+ aLocalizedStrings.GetString( 14 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintBlackFonts" ) ),
+ bDefaultVal );
+
+ if (!bWeb)
+ {
+ // create subgroup for misc options
+ m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 15 ) ), rtl::OUString() );
+
+ // create a bool option for printing automatically inserted blank pages
+ bDefaultVal = rDefaultPrintData.IsPrintEmptyPages();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 16 ),
+ aLocalizedStrings.GetString( 17 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintEmptyPages" ) ),
+ bDefaultVal );
+ }
+
+ // create a bool option for paper tray
+ bDefaultVal = rDefaultPrintData.IsPaperFromSetup();
+ vcl::PrinterOptionsHelper::UIControlOptions aPaperTrayOpt;
+ aPaperTrayOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OptionsPageOptGroup" ) );
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 18 ),
+ aLocalizedStrings.GetString( 19 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPaperFromSetup" ) ),
+ bDefaultVal,
+ aPaperTrayOpt
+ );
+
+ // print range selection
+ vcl::PrinterOptionsHelper::UIControlOptions aPrintRangeOpt;
+ aPrintRangeOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintRange" ) );
+ aPrintRangeOpt.mbInternalOnly = sal_True;
+ m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 37 ) ),
+ rtl::OUString(),
+ aPrintRangeOpt
+ );
+
+ // create a choice for the content to create
+ rtl::OUString aPrintRangeName( RTL_CONSTASCII_USTRINGPARAM( "PrintContent" ) );
+ uno::Sequence< rtl::OUString > aChoices( bHasSelection ? 3 : 2 );
+ uno::Sequence< rtl::OUString > aHelpText( bHasSelection ? 3 : 2 );
+ aChoices[0] = aLocalizedStrings.GetString( 38 );
+ aHelpText[0] = aLocalizedStrings.GetString( 39 );
+ aChoices[1] = aLocalizedStrings.GetString( 40 );
+ aHelpText[1] = aLocalizedStrings.GetString( 41 );
+ if (bHasSelection)
+ {
+ aChoices[2] = aLocalizedStrings.GetString( 42 );
+ aHelpText[2] = aLocalizedStrings.GetString( 43 );
+ }
+ m_aUIProperties[nIdx++].Value = getChoiceControlOpt( rtl::OUString(),
+ aHelpText,
+ aPrintRangeName,
+ aChoices,
+ bHasSelection ? 2 /*enable 'Selection' radio button*/ : 0 /* enable 'All pages' */);
+ // create a an Edit dependent on "Pages" selected
+ vcl::PrinterOptionsHelper::UIControlOptions aPageRangeOpt( aPrintRangeName, 1, sal_True );
+ m_aUIProperties[nIdx++].Value = getEditControlOpt( rtl::OUString(),
+ rtl::OUString(),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PageRange" ) ),
+ rtl::OUString(),
+ aPageRangeOpt
+ );
+ // print content selection
+ vcl::PrinterOptionsHelper::UIControlOptions aContentsOpt;
+ aContentsOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "JobPage" ) );
+ m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 20 ) ),
+ rtl::OUString(),
+ aContentsOpt
+ );
+ // create a list box for notes content
+ const sal_Int16 nPrintPostIts = rDefaultPrintData.GetPrintPostIts();
+ aChoices.realloc( 4 );
+ aChoices[0] = aLocalizedStrings.GetString( 21 );
+ aChoices[1] = aLocalizedStrings.GetString( 22 );
+ aChoices[2] = aLocalizedStrings.GetString( 23 );
+ aChoices[3] = aLocalizedStrings.GetString( 24 );
+ aHelpText.realloc( 2 );
+ aHelpText[0] = aLocalizedStrings.GetString( 25 );
+ aHelpText[1] = aLocalizedStrings.GetString( 25 );
+ vcl::PrinterOptionsHelper::UIControlOptions aAnnotOpt( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintProspect" ) ), 0, sal_False );
+ aAnnotOpt.mbEnabled = bHasPostIts;
+ m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( aLocalizedStrings.GetString( 26 ),
+ aHelpText,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintAnnotationMode" ) ),
+ aChoices,
+ nPrintPostIts,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) ),
+ aAnnotOpt
+ );
+
+ // create subsection for Page settings
+ vcl::PrinterOptionsHelper::UIControlOptions aPageSetOpt;
+ aPageSetOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutPage" ) );
+
+ if (!bWeb)
+ {
+ m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 27 ) ),
+ rtl::OUString(),
+ aPageSetOpt
+ );
+ uno::Sequence< rtl::OUString > aRLChoices( 3 );
+ aRLChoices[0] = aLocalizedStrings.GetString( 28 );
+ aRLChoices[1] = aLocalizedStrings.GetString( 29 );
+ aRLChoices[2] = aLocalizedStrings.GetString( 30 );
+ uno::Sequence< rtl::OUString > aRLHelp( 1 );
+ aRLHelp[0] = aLocalizedStrings.GetString( 31 );
+ // create a choice option for all/left/right pages
+ // 0 : all pages (left & right)
+ // 1 : left pages
+ // 2 : right pages
+ DBG_ASSERT( rDefaultPrintData.IsPrintLeftPage() || rDefaultPrintData.IsPrintRightPage(),
+ "unexpected value combination" );
+ sal_Int16 nPagesChoice = 0;
+ if (rDefaultPrintData.IsPrintLeftPage() && !rDefaultPrintData.IsPrintRightPage())
+ nPagesChoice = 1;
+ else if (!rDefaultPrintData.IsPrintLeftPage() && rDefaultPrintData.IsPrintRightPage())
+ nPagesChoice = 2;
+ m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( aLocalizedStrings.GetString( 32 ),
+ aRLHelp,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintLeftRightPages" ) ),
+ aRLChoices,
+ nPagesChoice,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) )
+ );
+ }
+
+ // create a bool option for brochure
+ bDefaultVal = rDefaultPrintData.IsPrintProspect();
+ rtl::OUString aBrochurePropertyName( RTL_CONSTASCII_USTRINGPARAM( "PrintProspect" ) );
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 33 ),
+ aLocalizedStrings.GetString( 34 ),
+ aBrochurePropertyName,
+ bDefaultVal,
+ aPageSetOpt
+ );
+
+ if (bCTL)
+ {
+ // create a bool option for brochure RTL dependent on brochure
+ uno::Sequence< rtl::OUString > aBRTLChoices( 2 );
+ aBRTLChoices[0] = aLocalizedStrings.GetString( 35 );
+ aBRTLChoices[1] = aLocalizedStrings.GetString( 36 );
+ vcl::PrinterOptionsHelper::UIControlOptions aBrochureRTLOpt( aBrochurePropertyName, -1, sal_True );
+ aBrochureRTLOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutPage" ) );
+ // RTL brochure choices
+ // 0 : left-to-right
+ // 1 : right-to-left
+ const sal_Int16 nBRTLChoice = rDefaultPrintData.IsPrintProspectRTL() ? 1 : 0;
+ m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( rtl::OUString(),
+ uno::Sequence< rtl::OUString >(),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintProspectRTL" ) ),
+ aBRTLChoices,
+ nBRTLChoice,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) ),
+ aBrochureRTLOpt
+ );
+ }
+
+
+ DBG_ASSERT( nIdx == nNumProps, "number of added properties is not as expected" );
+}
+
+
+SwPrintUIOptions::~SwPrintUIOptions()
+{
+}
+
+bool SwPrintUIOptions::IsPrintLeftPages() const
+{
+ // take care of different property names for the option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+ // 0: left and right pages
+ // 1: left pages only
+ // 2: right pages only
+ sal_Int64 nLRPages = getIntValue( "PrintLeftRightPages", 0 /* default: all */ );
+ bool bRes = nLRPages == 0 || nLRPages == 1;
+ bRes = getBoolValue( "PrintLeftPages", bRes /* <- default value if property is not found */ );
+ return bRes;
+}
+
+bool SwPrintUIOptions::IsPrintRightPages() const
+{
+ // take care of different property names for the option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+ sal_Int64 nLRPages = getIntValue( "PrintLeftRightPages", 0 /* default: all */ );
+ bool bRes = nLRPages == 0 || nLRPages == 2;
+ bRes = getBoolValue( "PrintRightPages", bRes /* <- default value if property is not found */ );
+ return bRes;
+}
+
+bool SwPrintUIOptions::IsPrintEmptyPages( bool bIsPDFExport ) const
+{
+ // take care of different property names for the option.
+
+ bool bRes = bIsPDFExport ?
+ !getBoolValue( "IsSkipEmptyPages", sal_True ) :
+ getBoolValue( "PrintEmptyPages", sal_True );
+ return bRes;
+}
+
+bool SwPrintUIOptions::IsPrintTables() const
+{
+ // take care of different property names currently in use for this option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+// bool bRes = getBoolValue( "PrintTablesGraphicsAndDiagrams", sal_True );
+// bRes = getBoolValue( "PrintTables", bRes );
+// return bRes;
+ // for now it was decided that tables should always be printed
+ return true;
+}
+
+bool SwPrintUIOptions::IsPrintGraphics() const
+{
+ // take care of different property names for the option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+ bool bRes = getBoolValue( "PrintPicturesAndObjects", sal_True );
+ bRes = getBoolValue( "PrintGraphics", bRes );
+ return bRes;
+}
+
+bool SwPrintUIOptions::IsPrintDrawings() const
+{
+ // take care of different property names for the option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+ bool bRes = getBoolValue( "PrintPicturesAndObjects", sal_True );
+ bRes = getBoolValue( "PrintDrawings", bRes );
+ return bRes;
+}
+
+bool SwPrintUIOptions::processPropertiesAndCheckFormat( const uno::Sequence< beans::PropertyValue >& i_rNewProp )
+{
+ bool bChanged = processProperties( i_rNewProp );
+
+ uno::Reference< awt::XDevice > xRenderDevice;
+ uno::Any aVal( getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) ) ) );
+ aVal >>= xRenderDevice;
+
+ OutputDevice* pOut = 0;
+ if (xRenderDevice.is())
+ {
+ VCLXDevice* pDevice = VCLXDevice::GetImplementation( xRenderDevice );
+ pOut = pDevice ? pDevice->GetOutputDevice() : 0;
+ }
+ bChanged = bChanged || (pOut != m_pLast);
+ if( pOut )
+ m_pLast = pOut;
+
+ return bChanged;
+}
+
+//////////////////////////////////////////////////////////////////////
+
diff --git a/sw/source/core/view/scrrect.cxx b/sw/source/core/view/scrrect.cxx
deleted file mode 100644
index 05baadde4946..000000000000
--- a/sw/source/core/view/scrrect.cxx
+++ /dev/null
@@ -1,1192 +0,0 @@
-/*************************************************************************
- *
- * 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 <viewimp.hxx>
-#include <viewsh.hxx>
-#include <viewopt.hxx>
-#include <vcl/window.hxx>
-#include <scrrect.hxx> // SwScrollRect, SwScrollRects
-// OD 18.02.2003 #107562# - <SwAlignRect> for <ViewShell::Scroll()>
-#include <frmtool.hxx>
-#ifndef _CURSOR_HXX //autogen
-#include <vcl/cursor.hxx>
-#endif
-#include <vcl/virdev.hxx>
-#ifndef _APP_HXX //autogen
-#include <vcl/svapp.hxx>
-#endif
-#include <txtfrm.hxx>
-#include "crsrsh.hxx"
-#include "rootfrm.hxx"
-#include "pagefrm.hxx"
-
-// OD 12.11.2002 #96272# - include declaration for <SetMappingForVirtDev>
-#include "setmapvirtdev.hxx"
-#include <IDocumentDrawModelAccess.hxx>
-
-// #i75172#
-#include "dview.hxx"
-
-DBG_NAME(RefreshTimer)
-
-SV_IMPL_VARARR(SwStripeArr,SwStripe);
-SV_IMPL_OP_PTRARR_SORT(SwScrollStripes, SwStripesPtr);
-SV_IMPL_OP_PTRARR_SORT(SScrAreas, SwScrollAreaPtr);
-
-/*****************************************************************************
-|*
-|* ViewShell::AddScrollRect()
-|*
-|* Creation MA 07. Mar. 94
-|* Last change AMA 20. July 00
-|*
-|* Description
-|* ViewShell::AddScrollRect(..) passes a registration from a scrolling frame or
-|* rectangle to all ViewShells and SwViewImps respectively.
-|*
-******************************************************************************/
-
-void ViewShell::AddScrollRect( const SwFrm *pFrm, const SwRect &rRect,
- long nOfs )
-{
- ASSERT( pFrm, "Where is my friend, the frame?" );
- BOOL bScrollOn = TRUE;
-
-#ifdef NOSCROLL
- //Auch im Product per speziellem Compilat abschaltbar.
- bScrollOn = FALSE;
-#endif
-
- if( bScrollOn && Imp()->IsScroll() && nOfs <= SHRT_MAX && nOfs >= SHRT_MIN )
- {
- ViewShell *pSh = this;
- do
- {
- pSh->Imp()->AddScrollRect( pFrm, rRect, nOfs );
- pSh = (ViewShell*)pSh->GetNext();
- } while ( pSh != this );
- }
- else
- AddPaintRect( rRect );
-}
-
-/******************************************************************************
-|*
-|* ViewShell::Scroll()
-|*
-|* Ersterstellung MA 07. Mar. 94
-|* Last change AMA 21. July 00
-|*
-|* Description
-|* ViewShell::Scroll() scrolls all rectangles in the pScrollRects-list and
-|* transfers the critical lines by calling SwViewImp::MoveScrollArea(..).
-|*
-******************************************************************************/
-#include <svx/sdrpaintwindow.hxx>
-#include <svx/sdr/overlay/overlaymanager.hxx>
-
-void ViewShell::Scroll()
-{
- SwScrollAreas *pScrollRects = Imp()->GetScrollRects();
- if ( pScrollRects )
- {
- bPaintWorks = FALSE;
- ASSERT( pScrollRects->Count(), "ScrollRects ohne ScrollRects." );
-
- //Abgleichen der Region mit den Scroll-Bereichen!!!
- //Wenn eines der Scroll-Rechtecke ungueltig wird, so muss
- //der PaintMode wahrscheinlich auf PAINT_BACKGROUND umgeschaltet
- //werden.
-
- //Auf die Richtung kommt es an:
- //- Bei einem pos. Ofst muss von hinten nach vorn gescrollt werden.
- //- Bei einem neg. Ofst muss von vorn nach hinten gescrollt werden.
- BOOL bPositive = (*pScrollRects)[0]->GetOffs() > 0;
- if( (*pScrollRects)[0]->IsVertical() )
- bPositive = !bPositive;
- int i = bPositive ? pScrollRects->Count()-1 : 0;
-
- for ( ; bPositive ?
- i >= 0 :
- i < (int)pScrollRects->Count();
- bPositive ?
- --i :
- ++i )
- {
- const SwScrollArea &rScroll = *(*pScrollRects)[ sal::static_int_cast<USHORT>(i) ];
- if( rScroll.Count() )
- {
- int j = bPositive ? rScroll.Count()-1 : 0;
- for ( ; bPositive ? j >= 0 : j < (int)rScroll.Count();
- bPositive ? --j : ++j )
- {
- const SwStripes& rStripes = *rScroll[ sal::static_int_cast<USHORT>(j) ];
- if( rScroll.IsVertical() )
- {
- Rectangle aRectangle( rStripes.GetY() -
- rStripes.GetHeight() + rScroll.GetOffs(),
- rStripes.GetMin(),
- rStripes.GetY() + rScroll.GetOffs(),
- rStripes.GetMax() );
- // OD 18.02.2003 #107562# - align rectangle for scrolling
- SwRect aAlignedScrollRect( aRectangle );
- ::SwAlignRect( aAlignedScrollRect, this );
-
- // #i68597# when scrolling, let DrawingLayer know about refreshed areas,
- // even when no DL objects are in the area. This is needed to allow
- // fully buffered overlay.
- const Rectangle aSourceRect(aAlignedScrollRect.SVRect());
- const Rectangle aTargetRect(
- aSourceRect.Left() - rScroll.GetOffs(), aSourceRect.Top(),
- aSourceRect.Right() - rScroll.GetOffs(), aSourceRect.Bottom());
-
- if(GetWin())
- {
- // SCROLL_NOWINDOWINVALIDATE okay since AddPaintRect below adds the to-be-invalidated region
- GetWin()->Scroll( -rScroll.GetOffs(), 0, aSourceRect, SCROLL_CHILDREN | SCROLL_NOWINDOWINVALIDATE );
- }
-
- // #i68597# if buffered overlay, the buffered content needs to be scrolled directly
- {
- SdrPaintWindow* pPaintWindow = GetDrawView()->GetPaintWindow(0);
-
- if(pPaintWindow)
- {
- sdr::overlay::OverlayManager* pOverlayManager = pPaintWindow->GetOverlayManager();
-
- if(pOverlayManager)
- {
- pOverlayManager->copyArea(aTargetRect.TopLeft(), aSourceRect.TopLeft(), aSourceRect.GetSize());
- }
- }
- }
-
- SwRect aRect( aRectangle );
- Imp()->ScrolledRect( aRect, -rScroll.GetOffs() );
- if ( bPositive )
- aRect.Right( aRect.Left() + rScroll.GetOffs()-1 );
- else
- aRect.Left( aRect.Right() - rScroll.GetOffs() );
- Imp()->AddPaintRect( aRect );
- }
- else
- {
- Rectangle aRectangle( rStripes.GetMin(),
- rStripes.GetY() - rScroll.GetOffs(),
- rStripes.GetRight(),
- rStripes.GetBottom() - rScroll.GetOffs() );
- // OD 18.02.2003 #107562# - use aligned rectangle for scrolling
- SwRect aAlignedScrollRect( aRectangle );
- ::SwAlignRect( aAlignedScrollRect, this );
-
- // #i68597# when scrolling, let DrawingLayer know about refreshed areas,
- // even when no DL objects are in the area. This is needed to allow
- // fully buffered overlay.
- const Rectangle aSourceRect(aAlignedScrollRect.SVRect());
- const Rectangle aTargetRect(
- aSourceRect.Left(), aSourceRect.Top() + rScroll.GetOffs(),
- aSourceRect.Right(), aSourceRect.Bottom() + rScroll.GetOffs());
-
- if(GetWin())
- {
- // SCROLL_NOWINDOWINVALIDATE okay since AddPaintRect below adds the to-be-invalidated region
- GetWin()->Scroll( 0, rScroll.GetOffs(), aSourceRect, SCROLL_CHILDREN | SCROLL_NOWINDOWINVALIDATE );
- }
-
- // #i68597# if buffered overlay, the buffered content needs to be scrolled directly
- {
- SdrPaintWindow* pPaintWindow = GetDrawView()->GetPaintWindow(0);
-
- if(pPaintWindow)
- {
- sdr::overlay::OverlayManager* pOverlayManager = pPaintWindow->GetOverlayManager();
-
- if(pOverlayManager)
- {
- pOverlayManager->copyArea(aTargetRect.TopLeft(), aSourceRect.TopLeft(), aSourceRect.GetSize());
- }
- }
- }
-
- SwRect aRect( aRectangle );
- Imp()->ScrolledRect( aRect, rScroll.GetOffs() );
- if ( bPositive )
- aRect.Bottom( aRect.Top() + rScroll.GetOffs()-1 );
- else
- aRect.Top( aRect.Bottom() + rScroll.GetOffs() );
- Imp()->AddPaintRect( aRect );
- }
- }
- }
- }
- if ( !Imp()->IsScrolled() )
- Imp()->SetScrolled();
-
- Imp()->MoveScrollArea();
- bPaintWorks = TRUE;
- }
-}
-
-/******************************************************************************
-|*
-|* ViewShell::SetNoNextScroll()
-|*
-|* Ersterstellung MA 08. Mar. 94
-|* Letzte Aenderung MA 08. Mar. 94
-|*
-******************************************************************************/
-
-void ViewShell::SetNoNextScroll()
-{
- ViewShell *pSh = this;
- do
- { pSh->Imp()->ResetNextScroll();
- pSh = (ViewShell*)pSh->GetNext();
-
- } while ( pSh != this );
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::AddScrollRect()
-|*
-|* Ersterstellung MA 07. Mar. 94
-|* Last change AMA 21. July 00
-|*
-|* Adds a scrollable rectangle and his critical lines to the list.
-|*
-******************************************************************************/
-
-void SwViewImp::AddScrollRect( const SwFrm *pFrm, const SwRect &rRect,
- long nOffs )
-{
- ASSERT( nOffs != 0, "Scrollen ohne Ofst." );
- SwRect aRect( rRect );
- BOOL bVert = pFrm->IsVertical();
- if( bVert )
- aRect.Pos().X() += nOffs;
- else
- aRect.Pos().Y() -= nOffs;
- if( aRect.IsOver( pSh->VisArea() ) )
- {
- ASSERT( pSh->GetWin(), "Scrolling without outputdevice" );
- aRect._Intersection( pSh->VisArea() );
- SwStripes *pStr;
- if ( !pScrollRects )
- pScrollRects = new SwScrollAreas;
- if( bVert )
- {
- aRect.Pos().X() -= nOffs;
- pStr = new SwStripes( aRect.Right(), aRect.Width(),
- aRect.Top(), aRect.Bottom() );
- if( pFrm->IsTxtFrm() )
- ((SwTxtFrm*)pFrm)->CriticalLines(*pSh->GetWin(), *pStr, nOffs );
- else
- pStr->Insert( SwStripe( aRect.Right(), aRect.Width() ), 0 );
- pScrollRects->InsertCol( SwScrollColumn( pFrm->Frm().Top(),
- pFrm->Frm().Height(), nOffs, bVert ), pStr);
- }
- else
- {
- aRect.Pos().Y() += nOffs;
- pStr = new SwStripes( aRect.Top(), aRect.Height(),
- aRect.Left(), aRect.Right() );
- if( pFrm->IsTxtFrm() )
- ((SwTxtFrm*)pFrm)->CriticalLines(*pSh->GetWin(), *pStr, nOffs );
- else
- pStr->Insert( SwStripe( aRect.Top(), aRect.Height() ), 0 );
- pScrollRects->InsertCol( SwScrollColumn( pFrm->Frm().Left(),
- pFrm->Frm().Width(), nOffs, bVert ), pStr );
- }
- }
- else
- AddPaintRect( rRect );
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::MoveScrollArea()
-|*
-|* Creation AMA 10. July 00
-|* Last change AMA 21. July 00
-|*
-|* Transfers the areas after scrolling to the scrolled list, but only those
-|* parts with critical lines.
-|*
-******************************************************************************/
-
-void SwViewImp::MoveScrollArea()
-{
- if( !pScrolledArea )
- pScrolledArea = new SwScrollAreas;
- for( USHORT nIdx = 0; nIdx < pScrollRects->Count(); ++nIdx )
- {
- SwScrollArea *pScr = (*pScrollRects)[ nIdx ];
- if( pScr->Compress() )
- delete pScr;
- else
- {
- USHORT nIndx;
- if( pScrolledArea->Seek_Entry( pScr, &nIndx ) )
- pScrolledArea->GetObject(nIndx)->Add( pScr );
- else
- pScrolledArea->Insert( pScr );
- }
- }
- delete pScrollRects;
- pScrollRects = NULL;
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::FlushScrolledArea()
-|*
-|* Creation AMA 10. July 00
-|* Last change AMA 21. July 00
-|*
-|* Flushes the scrolled critical lines, that is transfer them to AddPaintRect()
-|* and remove them from the list.
-|*
-******************************************************************************/
-
-void SwViewImp::FlushScrolledArea()
-{
- USHORT nCount = pScrolledArea->Count();
- while( nCount )
- {
- SwScrollArea* pScroll = (*pScrolledArea)[--nCount];
- USHORT nCnt = pScroll->Count();
- while( nCnt )
- {
- SwStripes* pStripes = (*pScroll)[--nCnt];
- if( pScroll->IsVertical() )
- {
- SwRect aRect( 0, pStripes->GetMin(), 0, pStripes->GetWidth() );
- for( USHORT i = 0; i < pStripes->Count(); ++i )
- {
- long nWidth = (*pStripes)[i].GetHeight();
- aRect.Left( (*pStripes)[i].GetY() - nWidth + 1 );
- aRect.Width( nWidth );
- AddPaintRect( aRect );
- }
- }
- {
- SwRect aRect( pStripes->GetMin(), 0, pStripes->GetWidth(), 0 );
- for( USHORT i = 0; i < pStripes->Count(); ++i )
- {
- aRect.Top( (*pStripes)[i].GetY() );
- aRect.Height( (*pStripes)[i].GetHeight() );
- AddPaintRect( aRect );
- }
- }
- pScroll->Remove( nCnt );
- delete pStripes;
- }
- pScrolledArea->Remove( nCount );
- delete pScroll;
- }
- delete pScrolledArea;
- pScrolledArea = NULL;
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::_FlushScrolledArea(..)
-|*
-|* Creation AMA 10. July 00
-|* Last change AMA 21. July 00
-|*
-|* The critical lines, which overlaps with the given rectangle, will be united
-|* with the rectangle and removed from the list.
-|*
-******************************************************************************/
-
-BOOL SwViewImp::_FlushScrolledArea( SwRect& rRect )
-{
- BOOL bRet = FALSE;
- for( USHORT i = pScrolledArea->Count(); i; )
- {
- SwScrollArea* pScroll = (*pScrolledArea)[--i];
- for( USHORT j = pScroll->Count(); j; )
- {
- SwStripes* pStripes = (*pScroll)[--j];
- if( pStripes->Count() )
- {
- if( pScroll->IsVertical() )
- {
- SwRect aRect( pStripes->GetY() - pStripes->GetHeight(),
- pStripes->GetMin(), pStripes->GetHeight(),
- pStripes->GetWidth() );
- if( rRect.IsOver( aRect ) )
- {
- for( USHORT nI = pStripes->Count(); nI; )
- {
- long nWidth = (*pStripes)[--nI].GetHeight();
- aRect.Left( (*pStripes)[nI].GetY() - nWidth + 1 );
- aRect.Width( nWidth );
- if( rRect.IsOver( aRect ) )
- {
- rRect.Union( aRect );
- bRet = TRUE;
- pStripes->Remove( nI );
- nI = pStripes->Count();
- }
- }
- }
- }
- else
- {
- SwRect aRect( pStripes->GetMin(), pStripes->GetY(),
- pStripes->GetWidth(), pStripes->GetHeight() );
- if( rRect.IsOver( aRect ) )
- {
- for( USHORT nI = pStripes->Count(); nI; )
- {
- aRect.Top( (*pStripes)[--nI].GetY() );
- aRect.Height( (*pStripes)[nI].GetHeight() );
- if( rRect.IsOver( aRect ) )
- {
- rRect.Union( aRect );
- bRet = TRUE;
- pStripes->Remove( nI );
- nI = pStripes->Count();
- }
- }
- }
- }
- }
- if( !pStripes->Count() )
- {
- pScroll->Remove( j );
- delete pStripes;
- }
- }
- if( !pScroll->Count() )
- {
- pScrolledArea->Remove( pScroll );
- delete pScroll;
- }
- }
- if( !pScrolledArea->Count() )
- {
- DELETEZ( pScrolledArea );
- SetNextScroll();
- }
- return bRet;
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::RefreshScrolledHdl(..)
-|*
-|* Creation MA 06. Oct. 94
-|* Last change AMA 21. July 00
-|*
-|* Every timerstop one of the critical lines will be painted.
-|*
-******************************************************************************/
-
-IMPL_LINK( SwViewImp, RefreshScrolledHdl, Timer *, EMPTYARG )
-{
- DBG_PROFSTART( RefreshTimer );
-
- if ( !IsScrolled() )
- { DBG_PROFSTOP( RefreshTimer );
- return 0;
- }
-
- SET_CURR_SHELL( GetShell() );
-
- //Kein Refresh wenn eine Selektion besteht.
- if ( GetShell()->IsA( TYPE(SwCrsrShell) ) &&
- (((SwCrsrShell*)GetShell())->HasSelection() ||
- ((SwCrsrShell*)GetShell())->GetCrsrCnt() > 1))
- {
- DBG_PROFSTOP( RefreshTimer );
- return 0;
- }
-
- if( pScrolledArea )
- {
- const SwRect aRect( GetShell()->VisArea() );
- BOOL bNoRefresh = GetShell()->IsA( TYPE(SwCrsrShell) ) &&
- ( ((SwCrsrShell*)GetShell())->HasSelection() ||
- ((SwCrsrShell*)GetShell())->GetCrsrCnt() > 1 );
- if( pScrolledArea->Count() )
- {
- SwScrollArea* pScroll = pScrolledArea->GetObject(0);
- ASSERT( pScroll->Count(), "Empty scrollarea" );
- // OD 21.10.2003 #112616# - for savety reason:
- // react, if precondition named in assertion isn't hold
- if ( pScroll->Count() )
- {
- SwStripes* pStripes = pScroll->GetObject(0);
- // OD 20.10.2003 #112616# - consider also first stripe
- ASSERT( pStripes->Count(), "Empty scrollstripes" );
- // OD 21.10.2003 #112616# - for savety reason:
- // react, if precondition named in assertion isn't hold
- if ( pStripes->Count() )
- {
- const SwStripe &rStripe = pStripes->GetObject(0);
- SwRect aTmpRect = pScroll->IsVertical() ?
- SwRect( rStripe.GetY() - rStripe.GetHeight(), pScroll->GetX(),
- rStripe.GetHeight(), pScroll->GetWidth() ) :
- SwRect( pScroll->GetX(), rStripe.GetY(),
- pScroll->GetWidth(), rStripe.GetHeight() );
- if( aTmpRect.IsOver( aRect ) )
- {
- // SwSaveHdl aSaveHdl( this );
- if( !bNoRefresh )
- _RefreshScrolledArea( aTmpRect );
- }
- // OD 20.10.2003 #112616# - consider also first stripe
- pStripes->Remove( 0 );
- }
- if( pStripes->Count() < 1 )
- {
- pScroll->Remove( USHORT(0) );
- delete pStripes;
- }
- }
- if( !pScroll->Count() )
- {
- pScrolledArea->Remove( pScroll );
- delete pScroll;
- }
- }
- if( !pScrolledArea->Count() )
- {
- delete pScrolledArea;
- pScrolledArea = 0;
- }
- }
-
- //All done?
- if( !pScrolledArea || !pScrolledArea->Count()
- )
- {
- ResetScrolled();
- SetNextScroll();
- aScrollTimer.Stop();
- }
-
- DBG_PROFSTOP( RefreshTimer );
- return 0;
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::_ScrolledRect(..)
-|*
-|* Creation AMA 20. July 00
-|* Last change AMA 21. July 00
-|*
-|* handles the problem of scrolled criticals lines, when they are a part of
-|* a scrolling area again. In this case, their rectangle has to move to the
-|* right position.
-|*
-******************************************************************************/
-
-void SwViewImp::_ScrolledRect( const SwRect& rRect, long nOffs )
-{
- for( USHORT i = pScrolledArea->Count(); i; )
- {
- SwScrollArea* pScroll = (*pScrolledArea)[--i];
- ASSERT( pScroll->Count() == 1, "Missing scrollarea compression 1" );
- SwStripes* pStripes = (*pScroll)[0];
- if( pStripes->Count() )
- {
- SwRect aRect = pScroll->IsVertical() ?
- SwRect( pStripes->GetY() - pStripes->GetHeight(),
- pStripes->GetMin(), pStripes->GetHeight(),
- pStripes->GetWidth() ) :
- SwRect( pStripes->GetMin(), pStripes->GetY(),
- pStripes->GetWidth(), pStripes->GetHeight() );
-
- if( rRect.IsOver( aRect ) )
- {
- BOOL bRecalc = FALSE;
- for( USHORT nI = pStripes->Count(); nI; )
- {
- if( pScroll->IsVertical() )
- {
- long nWidth = (*pStripes)[--nI].GetHeight();
- aRect.Left( (*pStripes)[nI].GetY() - nWidth + 1 );
- aRect.Width( nWidth );
- }
- else
- {
- aRect.Top( (*pStripes)[--nI].GetY() );
- aRect.Height( (*pStripes)[nI].GetHeight() );
- }
- if( rRect.IsInside( aRect ) )
- {
- (*pStripes)[nI].Y() += nOffs;
- bRecalc = TRUE;
- }
- }
- if( bRecalc )
- pStripes->Recalc( pScroll->IsVertical() );
- }
- }
- }
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::_RefreshScrolledArea()
-|*
-******************************************************************************/
-
-//Berechnen der Hoehe fuer das virtuelle Device, Breite und maximaler
-//Speicherbedarf sind vorgegeben.
-#define MAXKB 180L
-
-static void lcl_CalcVirtHeight( OutputDevice *pOut, Size &rSz )
-{
- char nBytes;
- const ULONG nColorCount = pOut->GetColorCount();
- if( 256 >= nColorCount ) // 2^8
- nBytes = 1;
- else
- if( USHRT_MAX >= nColorCount ) // 2^16
- nBytes = 2;
- else
- if( 16777216 >= nColorCount ) // 2^24
- nBytes = 3;
- else
- nBytes = 4; // 2^n
-
- rSz = pOut->LogicToPixel( rSz );
-
- long nKB = MAXKB * 1000;
- nKB /= nBytes;
- if ( rSz.Width() > 0 )
- rSz.Height() = nKB / rSz.Width();
- else
- rSz.Height() = nKB;
-
- rSz = pOut->PixelToLogic( rSz );
-}
-
-void SwViewImp::_RefreshScrolledArea( const SwRect &rRect )
-{
- SwRect aScRect( rRect );
- aScRect.Intersection( GetShell()->VisArea() );
-
- if( aScRect.IsEmpty() )
- return;
-
- BOOL bShowCrsr = FALSE;
- Window *pWin = GetShell()->GetWin();
- if ( pWin && pWin->GetCursor() && pWin->GetCursor()->IsVisible() )
- {
- bShowCrsr = TRUE;
- pWin->GetCursor()->Hide();
- }
-
- //Virtuelles Device erzeugen und einstellen.
- // --> OD 2007-08-16 #i80720#
- // rename variable <pOld> to <pCurrentOut>
- OutputDevice* pCurrentOut = GetShell()->GetOut();
- VirtualDevice *pVout = new VirtualDevice( *pCurrentOut );
- MapMode aMapMode( pCurrentOut->GetMapMode() );
- pVout->SetMapMode( aMapMode );
- Size aSize( aScRect.Width(), 0 );
- lcl_CalcVirtHeight( pCurrentOut, aSize );
- if ( aSize.Height() > aScRect.Height() )
- aSize.Height() = aScRect.Height() + 50;
-
- //unten in der Schleife lassen wir die Rechtecke ein wenig ueberlappen,
- //das muss auch bei der Groesse beruecksichtigt werden.
- aSize = pCurrentOut->LogicToPixel( aSize );
- aSize.Width() += 4; aSize.Height() += 4;
- aSize = pCurrentOut->PixelToLogic( aSize );
- // <--
-
- const SwRootFrm* pLayout = GetShell()->GetLayout();
-
- // #i75172# Avoid VDev if PreRendering is active
- static bool bDoNotUseVDev(GetDrawView()->IsBufferedOutputAllowed());
-
- // --> OD 2007-08-16 #i80720#
- // Enlarge paint rectangle also in case that "own" virtual device <pVout>
- // isn't used. Refactor code a little bit to achieve this.
- const bool bApplyVDev = !bDoNotUseVDev && pVout->SetOutputSize( aSize );
-
- {
- if ( bApplyVDev )
- {
- // --> OD 2007-08-16 #i80720#
- // rename variable <pOld> to <pCurrentOut>
- pVout->SetLineColor( pCurrentOut->GetLineColor() );
- pVout->SetFillColor( pCurrentOut->GetFillColor() );
- // <--
- }
-
- // #i72754# start Pre/PostPaint encapsulation before pOut is changed to the buffering VDev
- const Region aRepaintRegion(aScRect.SVRect());
- GetShell()->DLPrePaint2(aRepaintRegion);
-
- //Virtuelles Device in die ViewShell 'selektieren'
- // --> OD 2007-08-16 #i80720#
- // remember current output device at this place
- OutputDevice* pOldOut = GetShell()->GetOut();
- // <--
- if ( bApplyVDev )
- {
- GetShell()->pOut = pVout;
- }
-
- const SwFrm *pPg = GetFirstVisPage();
- do
- {
- SwRect aRect( pPg->Frm() );
- if ( aRect.IsOver( aScRect ) )
- {
- aRect._Intersection( aScRect );
- do
- {
- Rectangle aTmp( aRect.SVRect() );
- long nTmp = aTmp.Top() + aSize.Height();
- if ( aTmp.Bottom() > nTmp )
- aTmp.Bottom() = nTmp;
-
- aTmp = pOldOut->LogicToPixel( aTmp );
- if( aRect.Top() > pPg->Frm().Top() )
- aTmp.Top() -= 2;
- if( aRect.Top() + aRect.Height() < pPg->Frm().Top()
- + pPg->Frm().Height() )
- aTmp.Bottom() += 2;
- if( aRect.Left() > pPg->Frm().Left() )
- aTmp.Left() -= 2;
- if( aRect.Left() + aRect.Width() < pPg->Frm().Left()
- + pPg->Frm().Width() )
- aTmp.Right() += 2;
- aTmp = pOldOut->PixelToLogic( aTmp );
- SwRect aTmp2( aTmp );
-
- if ( bApplyVDev )
- {
- // OD 12.11.2002 #96272# - use method to set mapping
- //Point aOrigin( aTmp2.Pos() );
- //aOrigin.X() = -aOrigin.X(); aOrigin.Y() = -aOrigin.Y();
- //aMapMode.SetOrigin( aOrigin );
- ::SetMappingForVirtDev( aTmp2.Pos(), &aMapMode, pOldOut, pVout );
- pVout->SetMapMode( aMapMode );
- }
-
- pLayout->Paint( aTmp2 );
- if ( bApplyVDev )
- {
- pOldOut->DrawOutDev( aTmp2.Pos(), aTmp2.SSize(),
- aTmp2.Pos(), aTmp2.SSize(), *pVout );
- }
-
- aRect.Top( aRect.Top() + aSize.Height() );
- aScRect.Top( aRect.Top() );
-
- } while ( aRect.Height() > 0 );
- }
- pPg = pPg->GetNext();
-
- } while ( pPg && pPg->Frm().IsOver( GetShell()->VisArea() ) );
-
- if ( bApplyVDev )
- {
- GetShell()->pOut = pOldOut;
- }
- delete pVout;
-
- // #i72754# end Pre/PostPaint encapsulation when pOut is back and content is painted
- GetShell()->DLPostPaint2(true);
- }
- // <--
-
- if ( bShowCrsr )
- pWin->GetCursor()->Show();
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::RefreshScrolledArea()
-|*
-|* Ersterstellung MA 06. Oct. 94
-|* Letzte Aenderung MA 19. Apr. 95
-|*
-******************************************************************************/
-
-void SwViewImp::RefreshScrolledArea( SwRect &rRect )
-{
- // --> OD 2007-07-24 #123003# - make code robust
- // avoid recursive call
- static bool bRunning( false );
-
- if ( bRunning )
- {
- ASSERT( false, "<SwViewImp::RefreshScrolledArea(..)> - recursive method call - please inform OD" );
- return;
- }
- // <--
-
- //1. Wird auch von der CrsrShell gerufen, um ggf. den Bereich, in den der
- //Crsr gesetzt wird (Absatz, ganze Zeile bei einer Tabelle) aufzufrischen.
- //Allerdings kann es dann natuerlich sein, dass das Rechteck ueberhaupt
- //nicht mit aufzufrischenden Bereichen ueberlappt.
- //2. Kein Refresh wenn eine Selektion besteht.
- if( (GetShell()->IsA( TYPE(SwCrsrShell) ) &&
- (((SwCrsrShell*)GetShell())->HasSelection() ||
- ((SwCrsrShell*)GetShell())->GetCrsrCnt() > 1)))
- {
- return;
- }
-
- // --> OD 2007-07-27 #123003#
- bRunning = true;
- // <--
-
- if( pScrolledArea && pScrolledArea->Count() &&
- !( ( GetShell()->IsA( TYPE(SwCrsrShell) ) &&
- ( ((SwCrsrShell*)GetShell())->HasSelection() ||
- ((SwCrsrShell*)GetShell())->GetCrsrCnt() > 1) ) ) )
- {
- for( USHORT i = pScrolledArea->Count(); i; )
- {
- SwScrollArea* pScroll = (*pScrolledArea)[--i];
- for( USHORT j = pScroll->Count(); j; )
- {
- SwStripes* pStripes = (*pScroll)[--j];
- if( pStripes->Count() )
- {
- SwRect aRect = pScroll->IsVertical() ?
- SwRect( pStripes->GetY() - pStripes->GetHeight(),
- pStripes->GetMin(), pStripes->GetHeight(),
- pStripes->GetWidth() ) :
- SwRect( pStripes->GetMin(), pStripes->GetY(),
- pStripes->GetWidth(), pStripes->GetHeight() );
- if( rRect.IsOver( aRect ) )
- {
- for( USHORT nI = pStripes->Count(); nI; )
- {
- if( pScroll->IsVertical() )
- {
- long nWidth = (*pStripes)[--nI].GetHeight();
- aRect.Left( (*pStripes)[nI].GetY() -nWidth +1 );
- aRect.Width( nWidth );
- }
- else
- {
- aRect.Top( (*pStripes)[--nI].GetY() );
- aRect.Height( (*pStripes)[nI].GetHeight() );
- }
- if( rRect.IsOver( aRect ) )
- {
- pStripes->Remove( nI );
- _RefreshScrolledArea( aRect );
- }
- }
- }
- }
- if( !pStripes->Count() )
- {
- pScroll->Remove( j );
- delete pStripes;
- }
- }
- if( !pScroll->Count() )
- {
- pScrolledArea->Remove( pScroll );
- delete pScroll;
- }
- //Ist da jemand ungeduldig?
- //Nur Mouse und Keyboard, weil wir sonst von jeder billigen
- //Uhr unterbrochen werden.
- if( GetpApp()->AnyInput( INPUT_MOUSEANDKEYBOARD ) )
- break;
- }
- }
-
- //All done?
- if( !pScrolledArea || !pScrolledArea->Count() )
- {
- ResetScrolled();
- SetNextScroll();
- aScrollTimer.Stop();
- }
-
- // --> OD 2007-07-24 #123003#
- bRunning = false;
- // <--
-}
-
-SwStripes& SwStripes::Plus( const SwStripes& rOther, BOOL bVert )
-{
- if( !Count() )
- {
- Insert( &rOther, 0 );
- SetMin( rOther.GetMin() );
- SetMax( rOther.GetMax() );
- return *this;
- }
-
- long nCnt = rOther.Count();
- if( nCnt )
- {
- ChkMin( rOther.GetMin() );
- ChkMax( rOther.GetMax() );
- USHORT nStart = 0;
- if( bVert )
- for( USHORT nIdx = 0; nIdx < nCnt; ++nIdx )
- {
- const SwStripe& rAdd = rOther[ nIdx ];
- long nBottom = rAdd.GetY() - rAdd.GetHeight();
- USHORT nCount = Count();
- USHORT nTmpY = nStart;
- while( nTmpY < nCount )
- {
- SwStripe& rChk = GetObject( nTmpY );
- if( rChk.GetY() - rChk.GetHeight() < rAdd.GetY() )
- break;
- else
- ++nTmpY;
- }
- USHORT nB = nTmpY;
- while( nB < nCount )
- {
- const SwStripe& rChk = GetObject( nB );
- if( rChk.GetY() <= nBottom )
- break;
- else
- ++nB;
- }
- nStart = nTmpY;
- if( nTmpY == nB )
- Insert( rAdd, nTmpY );
- else
- {
- long nChkBottom = rAdd.GetY() - rAdd.GetHeight();;
- const SwStripe& rChkB = GetObject( nB - 1 );
- long nTmp = rChkB.GetY() - rChkB.GetHeight();
- if( nTmp < nChkBottom )
- nChkBottom = nTmp;
- SwStripe& rChk = GetObject( nTmpY );
- if( rAdd.GetY() > rChk.GetY() )
- rChk.Y() = rAdd.GetY();
- rChk.Height() = rChk.GetY() - nChkBottom;
- nChkBottom = nB - nTmpY - 1;
- if( nChkBottom )
- Remove( nTmpY + 1, (USHORT)nChkBottom );
- }
- }
- else
- {
- for( USHORT nIdx = 0; nIdx < nCnt; ++nIdx )
- {
- const SwStripe& rAdd = rOther[ nIdx ];
- long nBottom = rAdd.GetY() + rAdd.GetHeight();
- USHORT nCount = Count();
- USHORT nTmpY = nStart;
- while( nTmpY < nCount )
- {
- SwStripe& rChk = GetObject( nTmpY );
- if( rChk.GetY() + rChk.GetHeight() > rAdd.GetY() )
- break;
- else
- ++nTmpY;
- }
- USHORT nB = nTmpY;
- while( nB < nCount )
- {
- const SwStripe& rChk = GetObject( nB );
- if( rChk.GetY() >= nBottom )
- break;
- else
- ++nB;
- }
- nStart = nTmpY;
- if( nTmpY == nB )
- Insert( rAdd, nTmpY );
- else
- {
- long nChkBottom = rAdd.GetY() + rAdd.GetHeight();;
- const SwStripe& rChkB = GetObject( nB - 1 );
- long nTmp = rChkB.GetY() + rChkB.GetHeight();
- if( nTmp > nChkBottom )
- nChkBottom = nTmp;
- SwStripe& rChk = GetObject( nTmpY );
- if( rAdd.GetY() < rChk.GetY() )
- rChk.Y() = rAdd.GetY();
- rChk.Height() = nChkBottom - rChk.GetY();
- nChkBottom = nB - nTmpY - 1;
- if( nChkBottom )
- Remove( nTmpY + 1, (USHORT)nChkBottom );
- }
- }
- }
- }
- return *this;
-}
-
-BOOL SwStripes::Recalc( BOOL bVert )
-{
- if( !Count() )
- return TRUE;
- Y() = GetObject(0).GetY();
- if( bVert )
- {
- long nTmpMin = GetObject(0).GetY() - GetObject(0).Height();
- for( USHORT nIdx = 1; nIdx < Count(); )
- {
- const SwStripe& rStr = GetObject(nIdx++);
- if( GetY() < rStr.GetY() )
- Y() = rStr.GetY();
- if( nTmpMin > rStr.GetY() - rStr.GetHeight() )
- nTmpMin = rStr.GetY() - rStr.GetHeight();
- }
- Height() = GetY() - nTmpMin;
- }
- else
- {
- long nTmpMax = GetObject(0).GetY() + GetObject(0).Height();
- for( USHORT nIdx = 1; nIdx < Count(); )
- {
- const SwStripe& rStr = GetObject(nIdx++);
- if( GetY() > rStr.GetY() )
- Y() = rStr.GetY();
- if( nTmpMax < rStr.GetY() + rStr.GetHeight() )
- nTmpMax = rStr.GetY() + rStr.GetHeight();
- }
- Height() = nTmpMax - GetY();
- }
- return FALSE;
-}
-
-BOOL SwScrollArea::Compress()
-{
- if( !Count() )
- return TRUE;
- for( USHORT nIdx = Count() - 1; nIdx > 0; --nIdx )
- {
- GetObject(0)->Plus( *GetObject(nIdx), IsVertical() );
- delete GetObject( nIdx );
- Remove( nIdx, 1 );
- }
- ClrOffs();
- return GetObject(0)->Recalc( IsVertical() );
-}
-
-void SwScrollArea::Add( SwScrollArea *pScroll )
-{
- ASSERT( pScroll->Count() == 1, "Missing scrollarea compression 2" );
- ASSERT( Count() == 1, "Missing scrollarea compression 3" );
- GetObject(0)->Plus( *pScroll->GetObject(0), IsVertical() );
- GetObject(0)->Recalc( IsVertical() );
- delete pScroll->GetObject( 0 );
- pScroll->Remove( (USHORT)0, 1 );
- delete pScroll;
-}
-
-/******************************************************************************
-|*
-|* SwScrollAreas::Insert(..)
-|*
-******************************************************************************/
-
-void SwScrollAreas::InsertCol( const SwScrollColumn &rCol,
- SwStripes *pStripes )
-{
- SwScrollArea *pTmp = new SwScrollArea( rCol, pStripes );
- USHORT nIdx;
- if( Seek_Entry( pTmp, &nIdx ) )
- {
- GetObject( nIdx )->SmartInsert( pStripes );
- delete pTmp;
- }
- else
- Insert( pTmp );
-}
-
-
-void SwScrollArea::SmartInsert( SwStripes* pStripes )
-{
- ASSERT( pStripes, "Insert empty scrollstripe?" );
- BOOL bNotInserted = TRUE;
- if( IsVertical() )
- for( USHORT nIdx = 0; nIdx < Count() && bNotInserted; )
- {
- SwStripes* pTmp = GetObject( nIdx++ );
- if( pTmp->GetY() - pTmp->GetHeight() == pStripes->GetY() )
- {
- pTmp->Height() += pStripes->GetHeight();
- pTmp->ChkMin( pStripes->GetMin() );
- pTmp->ChkMax( pStripes->GetMax() );
- if( pStripes->Count() )
- pTmp->Insert( (SwStripeArr*)pStripes, pTmp->Count(), 0 );
- bNotInserted = FALSE;
- }
- else if( pTmp->GetY() == pStripes->GetY() - pStripes->GetHeight() )
- {
- pTmp->Height() += pStripes->GetHeight();
- pTmp->Y() = pStripes->GetY();
- pTmp->ChkMin( pStripes->GetMin() );
- pTmp->ChkMax( pStripes->GetMax() );
- if( pStripes->Count() )
- pTmp->Insert( (SwStripeArr*)pStripes, 0, 0 );
- bNotInserted = FALSE;
- }
- }
- else
- for( USHORT nIdx = 0; nIdx < Count() && bNotInserted; )
- {
- SwStripes* pTmp = GetObject( nIdx++ );
- if( pTmp->GetY() + pTmp->GetHeight() == pStripes->GetY() )
- {
- pTmp->Height() += pStripes->GetHeight();
- pTmp->ChkMin( pStripes->GetMin() );
- pTmp->ChkMax( pStripes->GetMax() );
- if( pStripes->Count() )
- pTmp->Insert( (SwStripeArr*)pStripes, pTmp->Count(), 0 );
- bNotInserted = FALSE;
- }
- else if( pTmp->GetY() == pStripes->GetY() + pStripes->GetHeight() )
- {
- pTmp->Height() += pStripes->GetHeight();
- pTmp->Y() = pStripes->GetY();
- pTmp->ChkMin( pStripes->GetMin() );
- pTmp->ChkMax( pStripes->GetMax() );
- if( pStripes->Count() )
- pTmp->Insert( (SwStripeArr*)pStripes, 0, 0 );
- bNotInserted = FALSE;
- }
- }
- if( !bNotInserted || !Insert( pStripes ) )
- delete pStripes;
-}
diff --git a/sw/source/core/view/viewimp.cxx b/sw/source/core/view/viewimp.cxx
index c317424ceafe..b2d91c48f598 100644
--- a/sw/source/core/view/viewimp.cxx
+++ b/sw/source/core/view/viewimp.cxx
@@ -29,7 +29,6 @@
#include "precompiled_sw.hxx"
-#include "scrrect.hxx"
#include "crsrsh.hxx"
#include "rootfrm.hxx"
#include "pagefrm.hxx"
@@ -126,8 +125,6 @@ SwViewImp::SwViewImp( ViewShell *pParent ) :
pSdrPageView( 0 ),
pFirstVisPage( 0 ),
pRegion( 0 ),
- pScrollRects( 0 ),
- pScrolledArea( 0 ),
pLayAct( 0 ),
pIdleAct( 0 ),
pAccMap( 0 ),
@@ -138,13 +135,9 @@ SwViewImp::SwViewImp( ViewShell *pParent ) :
{
//bResetXorVisibility =
//HMHbShowHdlPaint =
- bResetHdlHiddenPaint = bScrolled =
- bPaintInScroll = bSmoothUpdate = bStopSmooth = bStopPrt = FALSE;
- bFirstPageInvalid = bScroll = bNextScroll = TRUE;
-
- aScrollTimer.SetTimeout( 1500 );
- aScrollTimer.SetTimeoutHdl( LINK( this, SwViewImp, RefreshScrolledHdl));
- aScrollTimer.Stop();
+ bResetHdlHiddenPaint =
+ bSmoothUpdate = bStopSmooth = bStopPrt = FALSE;
+ bFirstPageInvalid = TRUE;
}
/******************************************************************************
@@ -169,8 +162,7 @@ SwViewImp::~SwViewImp()
delete pDrawView;
- DelRegions();
- delete pScrolledArea;
+ DelRegion();
ASSERT( !pLayAct, "Have action for the rest of your life." );
ASSERT( !pIdleAct,"Be idle for the rest of your life." );
@@ -185,10 +177,9 @@ SwViewImp::~SwViewImp()
|*
******************************************************************************/
-void SwViewImp::DelRegions()
+void SwViewImp::DelRegion()
{
DELETEZ(pRegion);
- DELETEZ(pScrollRects);
}
/******************************************************************************
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 9f6b08e6f95f..156447fda9da 100644..100755
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -216,28 +216,18 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
Imp()->StartAction();
if ( Imp()->GetRegion() && Imp()->GetRegion()->GetOrigin() != VisArea() )
- Imp()->DelRegions();
+ Imp()->DelRegion();
const BOOL bExtraData = ::IsExtraData( GetDoc() );
if ( !bIdleEnd )
{
- if ( Imp()->IsNextScroll() && !bExtraData )
- Imp()->SetScroll();
- else
- {
- if ( bExtraData )
- Imp()->bScroll = FALSE;
- Imp()->SetNextScroll();
- Imp()->ResetScroll();
- }
SwLayAction aAction( GetLayout(), Imp() );
aAction.SetComplete( FALSE );
if ( nLockPaint )
aAction.SetPaint( FALSE );
aAction.SetInputType( INPUT_KEYBOARD );
aAction.Action();
- Imp()->SetScroll();
}
if ( bIsShellForCheckViewLayout )
@@ -246,8 +236,9 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
//Wenn wir selbst keine Paints erzeugen, so warten wir auf das Paint
//vom System. Dann ist das Clipping korrekt gesetzt; Beispiel: verschieben
//eines DrawObjektes.
- if ( Imp()->GetRegion() || Imp()->GetScrollRects() ||
- aInvalidRect.HasArea() || bExtraData )
+ if ( Imp()->GetRegion() ||
+ aInvalidRect.HasArea() ||
+ bExtraData )
{
if ( !nLockPaint )
{
@@ -271,15 +262,10 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
// Mitte eine Selektion und mit einem anderen Cursor an linken
// rechten Rand springen. Ohne ShowCrsr verschwindet die
// Selektion
- BOOL bShowCrsr = (pRegion || Imp()->GetScrollRects()) &&
- IsA( TYPE(SwCrsrShell) );
+ BOOL bShowCrsr = pRegion && IsA( TYPE(SwCrsrShell) );
if( bShowCrsr )
((SwCrsrShell*)this)->HideCrsrs();
- Scroll();
- if ( bPaintsFromSystem && Imp()->pScrolledArea )
- Imp()->FlushScrolledArea();
-
if ( pRegion )
{
SwRootFrm* pLayout = GetLayout();
@@ -408,14 +394,14 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
delete pVout;
delete pRegion;
- Imp()->DelRegions();
+ Imp()->DelRegion();
}
if( bShowCrsr )
((SwCrsrShell*)this)->ShowCrsrs( TRUE );
}
else
{
- Imp()->DelRegions();
+ Imp()->DelRegion();
bPaintWorks = TRUE;
}
}
@@ -435,13 +421,6 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
UISizeNotify();
++nStartAction;
-#ifdef DBG_UTIL
- // test option 'No Scroll' suppresses the automatic repair of the scrolled area
- if ( !GetViewOptions()->IsTest8() )
-#endif
- if ( Imp()->IsScrolled() )
- Imp()->RestartScrollTimer();
-
if( Imp()->IsAccessible() )
Imp()->FireAccessibleEvents();
}
@@ -1196,12 +1175,10 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
//vom RootFrm::Paint erzeugt worden sein.
if ( !bInEndAction &&
Imp()->GetRegion() && Imp()->GetRegion()->GetOrigin() != VisArea() )
- Imp()->DelRegions();
+ Imp()->DelRegion();
SET_CURR_SHELL( this );
- //SwSaveHdl aSaveHdl( Imp() );
-
bool bScrolled = false;
SwPostItMgr* pPostItMgr = GetPostItMgr();
@@ -1338,9 +1315,7 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
Imp()->GetDrawView()->VisAreaChanged( GetWin() );
Imp()->GetDrawView()->SetActualWin( GetWin() );
}
- Imp()->bPaintInScroll = TRUE;
GetWin()->Update();
- Imp()->bPaintInScroll = FALSE;
// --> OD 2010-02-11 #i88070#
if ( pPostItMgr )
@@ -1850,9 +1825,8 @@ BOOL ViewShell::CheckInvalidForPaint( const SwRect &rRect )
//nicht ankommen.
//Ergo: Alles selbst machen (siehe ImplEndAction())
if ( Imp()->GetRegion() && Imp()->GetRegion()->GetOrigin() != VisArea())
- Imp()->DelRegions();
+ Imp()->DelRegion();
- Imp()->ResetScroll();
SwLayAction aAction( GetLayout(), Imp() );
aAction.SetComplete( FALSE );
// We increment the action counter to avoid a recursive call of actions
@@ -1878,7 +1852,7 @@ BOOL ViewShell::CheckInvalidForPaint( const SwRect &rRect )
}
if ( bStop )
{
- Imp()->DelRegions();
+ Imp()->DelRegion();
pRegion = 0;
}
}
@@ -1923,7 +1897,7 @@ BOOL ViewShell::CheckInvalidForPaint( const SwRect &rRect )
}
else
bRet = FALSE;
- Imp()->DelRegions();
+ Imp()->DelRegion();
}
else
bRet = FALSE;
@@ -1974,17 +1948,7 @@ void ViewShell::Paint(const Rectangle &rRect)
{
if( GetWin() && GetWin()->IsVisible() )
{
- //Wenn mit dem Paint ein Bereich betroffen ist, der vorher gescrolled
- //wurde, so wiederholen wir das Paint mit dem Gesamtbereich. Nur so
- //koennen wir sicherstellen, das (nicht mal kurzfristig) durch das Paint
- //keine Alignmentfehler sichtbar werden.
SwRect aRect( rRect );
- if ( Imp()->IsScrolled() && Imp()->FlushScrolledArea( aRect ) )
- {
- GetWin()->Invalidate( aRect.SVRect() );
- return;
- }
-
if ( bPaintInProgress ) //Schutz gegen doppelte Paints!
{
GetWin()->Invalidate( rRect );
@@ -2296,7 +2260,8 @@ void ViewShell::ApplyViewOptions( const SwViewOption &rOpt )
void ViewShell::ImplApplyViewOptions( const SwViewOption &rOpt )
{
- ASSERT( !(*pOpt == rOpt), "ViewShell::ApplyViewOptions: ");
+ if (*pOpt == rOpt)
+ return;
Window *pMyWin = GetWin();
if( !pMyWin )
diff --git a/sw/source/core/view/vprint.cxx b/sw/source/core/view/vprint.cxx
index d7400ad2a73b..e74fb21f720a 100644..100755
--- a/sw/source/core/view/vprint.cxx
+++ b/sw/source/core/view/vprint.cxx
@@ -31,35 +31,27 @@
#include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/view/XRenderable.hpp>
#include <hintids.hxx>
-#include <vcl/oldprintadaptor.hxx>
-#include <sfx2/printer.hxx>
-#include <sfx2/objsh.hxx>
-#include <tools/resary.hxx>
-#include <tools/debug.hxx>
#include <rtl/ustring.hxx>
-#include <toolkit/awt/vclxdevice.hxx>
-#include <toolkit/awt/vclxdevice.hxx>
-
-#include <sfx2/progress.hxx>
#include <sfx2/app.hxx>
+#include <sfx2/objsh.hxx>
#include <sfx2/prnmon.hxx>
+#include <svl/languageoptions.hxx>
#include <editeng/paperinf.hxx>
#include <editeng/pbinitem.hxx>
#include <svx/svdview.hxx>
+#include <toolkit/awt/vclxdevice.hxx>
+#include <tools/debug.hxx>
#include <unotools/localedatawrapper.hxx>
-
#include <unotools/moduleoptions.hxx>
-#include <svl/languageoptions.hxx>
-
-#include <com/sun/star/uno/Any.hxx>
-#include <com/sun/star/view/XRenderable.hpp>
+#include <unotools/syslocale.hxx>
+#include <vcl/oldprintadaptor.hxx>
#include <unotxdoc.hxx>
-
#include <docsh.hxx>
-#include <unotools/syslocale.hxx>
#include <txtfld.hxx>
#include <fmtfld.hxx>
#include <fmtfsize.hxx>
@@ -83,9 +75,7 @@
#include <pagedesc.hxx>
#include <poolfmt.hxx> // fuer RES_POOLPAGE_JAKET
#include <mdiexp.hxx> // Ansteuern der Statusleiste
-#ifndef _STATSTR_HRC
#include <statstr.hrc> // -- " --
-#endif
#include <ptqueue.hxx>
#include <tabfrm.hxx>
#include <txtfrm.hxx> // MinPrtLine
@@ -93,13 +83,6 @@
#include <fmtpdsc.hxx> // SwFmtPageDesc
#include <globals.hrc>
-#define JOBSET_ERR_DEFAULT 0
-#define JOBSET_ERR_ERROR 1
-#define JOBSET_ERR_ISSTARTET 2
-
-
-extern bool lcl_GetPostIts( IDocumentFieldsAccess* pIDFA, _SetGetExpFlds * pSrtLst );
-
using namespace ::com::sun::star;
@@ -210,500 +193,6 @@ void SwPaintQueue::Remove( ViewShell *pSh )
}
}
-/*****************************************************************************/
-
-const XubString& SwPrtOptions::MakeNextJobName()
-{
- static char __READONLY_DATA sDelim[] = " - ";
- USHORT nDelim = sJobName.SearchAscii( sDelim );
- if( STRING_NOTFOUND == nDelim )
- sJobName.AppendAscii(sDelim);
- else
- sJobName.Erase( nDelim + 3/*Zeichen!*/ );
-
- return sJobName += XubString::CreateFromInt32( ++nJobNo );
-}
-
-/*****************************************************************************/
-
-SwRenderData::SwRenderData()
-{
- m_pPostItFields = 0;
- m_pPostItDoc = 0;
- m_pPostItShell = 0;
-
- m_pViewOptionAdjust = 0;
- m_pPrtOptions = 0;
-}
-
-
-SwRenderData::~SwRenderData()
-{
- delete m_pViewOptionAdjust; m_pViewOptionAdjust = 0;
- delete m_pPrtOptions; m_pPrtOptions = 0;
- DBG_ASSERT( !m_pPostItShell, "m_pPostItShell should already have been deleted" );
- DBG_ASSERT( !m_pPostItDoc, "m_pPostItDoc should already have been deleted" );
- DBG_ASSERT( !m_pPostItFields, " should already have been deleted" );
-}
-
-
-void SwRenderData::CreatePostItData( SwDoc *pDoc, const SwViewOption *pViewOpt, OutputDevice *pOutDev )
-{
- DBG_ASSERT( !m_pPostItFields && !m_pPostItDoc && !m_pPostItShell, "some post-it data already exists" );
- m_pPostItFields = new _SetGetExpFlds;
- lcl_GetPostIts( pDoc, m_pPostItFields );
- m_pPostItDoc = new SwDoc;
-
- //!! Disable spell and grammar checking in the temporary document.
- //!! Otherwise the grammar checker might process it and crash if we later on
- //!! simply delete this document while he is still at it.
- SwViewOption aViewOpt( *pViewOpt );
- aViewOpt.SetOnlineSpell( FALSE );
-
- m_pPostItShell = new ViewShell( *m_pPostItDoc, 0, &aViewOpt, pOutDev );
-}
-
-
-void SwRenderData::DeletePostItData()
-{
- if (HasPostItData())
- {
- m_pPostItDoc->setPrinter( 0, false, false ); //damit am echten DOC der Drucker bleibt
- delete m_pPostItShell; //Nimmt das PostItDoc mit ins Grab.
- delete m_pPostItFields;
- m_pPostItDoc = 0;
- m_pPostItShell = 0;
- m_pPostItFields = 0;
- }
-}
-
-
-void SwRenderData::ViewOptionAdjustStart( SwWrtShell &rSh, const SwViewOption &rViewOptions )
-{
- if (m_pViewOptionAdjust)
- {
- DBG_ASSERT( 0, "error: there should be no ViewOptionAdjust active when calling this function" );
- }
- m_pViewOptionAdjust = new SwViewOptionAdjust_Impl( rSh, rViewOptions );
-}
-
-
-void SwRenderData::ViewOptionAdjust( const SwPrtOptions *pPrtOptions )
-{
- m_pViewOptionAdjust->AdjustViewOptions( pPrtOptions );
-}
-
-
-void SwRenderData::ViewOptionAdjustStop()
-{
- if (m_pViewOptionAdjust)
- {
- delete m_pViewOptionAdjust;
- m_pViewOptionAdjust = 0;
- }
-}
-
-
-void SwRenderData::MakeSwPrtOptions(
- SwPrtOptions &rOptions,
- const SwDocShell *pDocShell,
- const SwPrintUIOptions *pOpt,
- const SwRenderData *pData,
- bool bIsPDFExport )
-{
- if (!pDocShell || !pOpt || !pData)
- return;
-
- // get default print options
- const TypeId aSwWebDocShellTypeId = TYPE(SwWebDocShell);
- BOOL bWeb = pDocShell->IsA( aSwWebDocShellTypeId );
- rOptions.MakeOptions( bWeb );
-
- // get print options to use from provided properties
- rOptions.bPrintGraphic = pOpt->IsPrintGraphics();
- rOptions.bPrintTable = pOpt->IsPrintTables();
- rOptions.bPrintDraw = pOpt->IsPrintDrawings();
- rOptions.bPrintControl = pOpt->IsPrintFormControls();
- rOptions.bPrintLeftPages = pOpt->IsPrintLeftPages();
- rOptions.bPrintRightPages = pOpt->IsPrintRightPages();
- rOptions.bPrintPageBackground = pOpt->IsPrintPageBackground();
- rOptions.bPrintEmptyPages = pOpt->IsPrintEmptyPages( bIsPDFExport );
- // bUpdateFieldsInPrinting <-- not set here; mail merge only
- rOptions.bPaperFromSetup = pOpt->IsPaperFromSetup();
- rOptions.bPrintReverse = pOpt->IsPrintReverse();
- rOptions.bPrintProspect = pOpt->IsPrintProspect();
- rOptions.bPrintProspectRTL = pOpt->IsPrintProspectRTL();
- // bPrintSingleJobs <-- not set here; mail merge and or configuration
- // bModified <-- not set here; mail merge only
- rOptions.bPrintBlackFont = pOpt->IsPrintWithBlackTextColor();
- rOptions.bPrintHiddenText = pOpt->IsPrintHiddenText();
- rOptions.bPrintTextPlaceholder = pOpt->IsPrintTextPlaceholders();
- rOptions.nPrintPostIts = pOpt->GetPrintPostItsType();
-
- //! needs to be set after MakeOptions since the assignment operation in that
- //! function will destroy the pointers
- rOptions.SetPrintUIOptions( pOpt );
- rOptions.SetRenderData( pData );
-
- // rOptions.aMulti is not used anymore in the XRenderable API
- // Thus we set it to a dummy value here.
- rOptions.aMulti = MultiSelection( Range( 1, 1 ) );
-
- //! Note: Since for PDF export of (multi-)selection a temporary
- //! document is created that contains only the selects parts,
- //! and thus that document is to printed in whole the,
- //! rOptions.bPrintSelection parameter will be false.
- if (bIsPDFExport)
- rOptions.bPrintSelection = FALSE;
-}
-
-
-/*****************************************************************************/
-
-SwPrintUIOptions::SwPrintUIOptions(
- bool bWeb,
- bool bSwSrcView,
- bool bHasSelection,
- bool bHasPostIts,
- const SwPrintData &rDefaultPrintData ) :
- m_pLast( NULL ),
- m_rDefaultPrintData( rDefaultPrintData )
-{
- ResStringArray aLocalizedStrings( SW_RES( STR_PRINTOPTUI ) );
-
- DBG_ASSERT( aLocalizedStrings.Count() >= 44, "resource incomplete" );
- if( aLocalizedStrings.Count() < 44 ) // bad resource ?
- return;
-
- // printing HTML sources does not have any valid UI options.
- // Its just the source code that gets printed ...
- if (bSwSrcView)
- {
- m_aUIProperties.realloc( 0 );
- return;
- }
-
- // check if CTL is enabled
- SvtLanguageOptions aLangOpt;
- bool bCTL = aLangOpt.IsCTLFontEnabled();
-
- // create sequence of print UI options
- // (5 options are not available for Writer-Web)
- const int nCTLOpts = bCTL ? 1 : 0;
- const int nNumProps = nCTLOpts + (bWeb ? 14 : 20);
- m_aUIProperties.realloc( nNumProps );
- int nIdx = 0;
-
- // create "writer" section (new tab page in dialog)
- SvtModuleOptions aModOpt;
- String aAppGroupname( aLocalizedStrings.GetString( 0 ) );
- aAppGroupname.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ),
- aModOpt.GetModuleName( SvtModuleOptions::E_SWRITER ) );
- m_aUIProperties[ nIdx++ ].Value = getGroupControlOpt( aAppGroupname, rtl::OUString() );
-
- // create sub section for Contents
- m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( aLocalizedStrings.GetString( 1 ), rtl::OUString() );
-
- // create a bool option for background
- bool bDefaultVal = rDefaultPrintData.IsPrintPageBackground();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 2 ),
- aLocalizedStrings.GetString( 3 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPageBackground" ) ),
- bDefaultVal );
-
- // create a bool option for pictures/graphics AND OLE and drawing objects as well
- bDefaultVal = rDefaultPrintData.IsPrintGraphic() || rDefaultPrintData.IsPrintDraw();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 4 ),
- aLocalizedStrings.GetString( 5 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPicturesAndObjects" ) ),
- bDefaultVal );
- if (!bWeb)
- {
- // create a bool option for hidden text
- bDefaultVal = rDefaultPrintData.IsPrintHiddenText();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 6 ),
- aLocalizedStrings.GetString( 7 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintHiddenText" ) ),
- bDefaultVal );
-
- // create a bool option for place holder
- bDefaultVal = rDefaultPrintData.IsPrintTextPlaceholder();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 8 ),
- aLocalizedStrings.GetString( 9 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintTextPlaceholder" ) ),
- bDefaultVal );
- }
-
- // create a bool option for controls
- bDefaultVal = rDefaultPrintData.IsPrintControl();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 10 ),
- aLocalizedStrings.GetString( 11 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintControls" ) ),
- bDefaultVal );
-
- // create sub section for Color
- m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( aLocalizedStrings.GetString( 12 ), rtl::OUString() );
-
- // create a bool option for printing text with black font color
- bDefaultVal = rDefaultPrintData.IsPrintBlackFont();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 13 ),
- aLocalizedStrings.GetString( 14 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintBlackFonts" ) ),
- bDefaultVal );
-
- if (!bWeb)
- {
- // create subgroup for misc options
- m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 15 ) ), rtl::OUString() );
-
- // create a bool option for printing automatically inserted blank pages
- bDefaultVal = rDefaultPrintData.IsPrintEmptyPages();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 16 ),
- aLocalizedStrings.GetString( 17 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintEmptyPages" ) ),
- bDefaultVal );
- }
-
- // create a bool option for paper tray
- bDefaultVal = rDefaultPrintData.IsPaperFromSetup();
- vcl::PrinterOptionsHelper::UIControlOptions aPaperTrayOpt;
- aPaperTrayOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OptionsPageOptGroup" ) );
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 18 ),
- aLocalizedStrings.GetString( 19 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPaperFromSetup" ) ),
- bDefaultVal,
- aPaperTrayOpt
- );
-
- // print range selection
- vcl::PrinterOptionsHelper::UIControlOptions aPrintRangeOpt;
- aPrintRangeOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintRange" ) );
- aPrintRangeOpt.mbInternalOnly = sal_True;
- m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 37 ) ),
- rtl::OUString(),
- aPrintRangeOpt
- );
-
- // create a choice for the content to create
- rtl::OUString aPrintRangeName( RTL_CONSTASCII_USTRINGPARAM( "PrintContent" ) );
- uno::Sequence< rtl::OUString > aChoices( bHasSelection ? 3 : 2 );
- uno::Sequence< rtl::OUString > aHelpText( bHasSelection ? 3 : 2 );
- aChoices[0] = aLocalizedStrings.GetString( 38 );
- aHelpText[0] = aLocalizedStrings.GetString( 39 );
- aChoices[1] = aLocalizedStrings.GetString( 40 );
- aHelpText[1] = aLocalizedStrings.GetString( 41 );
- if (bHasSelection)
- {
- aChoices[2] = aLocalizedStrings.GetString( 42 );
- aHelpText[2] = aLocalizedStrings.GetString( 43 );
- }
- m_aUIProperties[nIdx++].Value = getChoiceControlOpt( rtl::OUString(),
- aHelpText,
- aPrintRangeName,
- aChoices,
- bHasSelection ? 2 /*enable 'Selection' radio button*/ : 0 /* enable 'All pages' */);
- // create a an Edit dependent on "Pages" selected
- vcl::PrinterOptionsHelper::UIControlOptions aPageRangeOpt( aPrintRangeName, 1, sal_True );
- m_aUIProperties[nIdx++].Value = getEditControlOpt( rtl::OUString(),
- rtl::OUString(),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PageRange" ) ),
- rtl::OUString(),
- aPageRangeOpt
- );
- // print content selection
- vcl::PrinterOptionsHelper::UIControlOptions aContentsOpt;
- aContentsOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "JobPage" ) );
- m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 20 ) ),
- rtl::OUString(),
- aContentsOpt
- );
- // create a list box for notes content
- const sal_Int16 nPrintPostIts = rDefaultPrintData.GetPrintPostIts();
- aChoices.realloc( 4 );
- aChoices[0] = aLocalizedStrings.GetString( 21 );
- aChoices[1] = aLocalizedStrings.GetString( 22 );
- aChoices[2] = aLocalizedStrings.GetString( 23 );
- aChoices[3] = aLocalizedStrings.GetString( 24 );
- aHelpText.realloc( 2 );
- aHelpText[0] = aLocalizedStrings.GetString( 25 );
- aHelpText[1] = aLocalizedStrings.GetString( 25 );
- vcl::PrinterOptionsHelper::UIControlOptions aAnnotOpt( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintProspect" ) ), 0, sal_False );
- aAnnotOpt.mbEnabled = bHasPostIts;
- m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( aLocalizedStrings.GetString( 26 ),
- aHelpText,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintAnnotationMode" ) ),
- aChoices,
- nPrintPostIts,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) ),
- aAnnotOpt
- );
-
- // create subsection for Page settings
- vcl::PrinterOptionsHelper::UIControlOptions aPageSetOpt;
- aPageSetOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutPage" ) );
-
- if (!bWeb)
- {
- m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 27 ) ),
- rtl::OUString(),
- aPageSetOpt
- );
- uno::Sequence< rtl::OUString > aRLChoices( 3 );
- aRLChoices[0] = aLocalizedStrings.GetString( 28 );
- aRLChoices[1] = aLocalizedStrings.GetString( 29 );
- aRLChoices[2] = aLocalizedStrings.GetString( 30 );
- uno::Sequence< rtl::OUString > aRLHelp( 1 );
- aRLHelp[0] = aLocalizedStrings.GetString( 31 );
- // create a choice option for all/left/right pages
- // 0 : all pages (left & right)
- // 1 : left pages
- // 2 : right pages
- DBG_ASSERT( rDefaultPrintData.IsPrintLeftPage() || rDefaultPrintData.IsPrintRightPage(),
- "unexpected value combination" );
- sal_Int16 nPagesChoice = 0;
- if (rDefaultPrintData.IsPrintLeftPage() && !rDefaultPrintData.IsPrintRightPage())
- nPagesChoice = 1;
- else if (!rDefaultPrintData.IsPrintLeftPage() && rDefaultPrintData.IsPrintRightPage())
- nPagesChoice = 2;
- m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( aLocalizedStrings.GetString( 32 ),
- aRLHelp,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintLeftRightPages" ) ),
- aRLChoices,
- nPagesChoice,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) )
- );
- }
-
- // create a bool option for brochure
- bDefaultVal = rDefaultPrintData.IsPrintProspect();
- rtl::OUString aBrochurePropertyName( RTL_CONSTASCII_USTRINGPARAM( "PrintProspect" ) );
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 33 ),
- aLocalizedStrings.GetString( 34 ),
- aBrochurePropertyName,
- bDefaultVal,
- aPageSetOpt
- );
-
- if (bCTL)
- {
- // create a bool option for brochure RTL dependent on brochure
- uno::Sequence< rtl::OUString > aBRTLChoices( 2 );
- aBRTLChoices[0] = aLocalizedStrings.GetString( 35 );
- aBRTLChoices[1] = aLocalizedStrings.GetString( 36 );
- vcl::PrinterOptionsHelper::UIControlOptions aBrochureRTLOpt( aBrochurePropertyName, -1, sal_True );
- aBrochureRTLOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutPage" ) );
- // RTL brochure choices
- // 0 : left-to-right
- // 1 : right-to-left
- const sal_Int16 nBRTLChoice = rDefaultPrintData.IsPrintProspectRTL() ? 1 : 0;
- m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( rtl::OUString(),
- uno::Sequence< rtl::OUString >(),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintProspectRTL" ) ),
- aBRTLChoices,
- nBRTLChoice,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) ),
- aBrochureRTLOpt
- );
- }
-
-
- DBG_ASSERT( nIdx == nNumProps, "number of added properties is not as expected" );
-}
-
-
-SwPrintUIOptions::~SwPrintUIOptions()
-{
-}
-
-bool SwPrintUIOptions::IsPrintLeftPages() const
-{
- // take care of different property names for the option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
- // 0: left and right pages
- // 1: left pages only
- // 2: right pages only
- sal_Int64 nLRPages = getIntValue( "PrintLeftRightPages", 0 /* default: all */ );
- bool bRes = nLRPages == 0 || nLRPages == 1;
- bRes = getBoolValue( "PrintLeftPages", bRes /* <- default value if property is not found */ );
- return bRes;
-}
-
-bool SwPrintUIOptions::IsPrintRightPages() const
-{
- // take care of different property names for the option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
- sal_Int64 nLRPages = getIntValue( "PrintLeftRightPages", 0 /* default: all */ );
- bool bRes = nLRPages == 0 || nLRPages == 2;
- bRes = getBoolValue( "PrintRightPages", bRes /* <- default value if property is not found */ );
- return bRes;
-}
-
-bool SwPrintUIOptions::IsPrintEmptyPages( bool bIsPDFExport ) const
-{
- // take care of different property names for the option.
-
- bool bRes = bIsPDFExport ?
- !getBoolValue( "IsSkipEmptyPages", sal_True ) :
- getBoolValue( "PrintEmptyPages", sal_True );
- return bRes;
-}
-
-bool SwPrintUIOptions::IsPrintTables() const
-{
- // take care of different property names currently in use for this option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
-// bool bRes = getBoolValue( "PrintTablesGraphicsAndDiagrams", sal_True );
-// bRes = getBoolValue( "PrintTables", bRes );
-// return bRes;
- // for now it was decided that tables should always be printed
- return true;
-}
-
-bool SwPrintUIOptions::IsPrintGraphics() const
-{
- // take care of different property names for the option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
- bool bRes = getBoolValue( "PrintPicturesAndObjects", sal_True );
- bRes = getBoolValue( "PrintGraphics", bRes );
- return bRes;
-}
-
-bool SwPrintUIOptions::IsPrintDrawings() const
-{
- // take care of different property names for the option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
- bool bRes = getBoolValue( "PrintPicturesAndObjects", sal_True );
- bRes = getBoolValue( "PrintDrawings", bRes );
- return bRes;
-}
-
-bool SwPrintUIOptions::processPropertiesAndCheckFormat( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& i_rNewProp )
-{
- bool bChanged = processProperties( i_rNewProp );
-
- uno::Reference< awt::XDevice > xRenderDevice;
- uno::Any aVal( getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) ) ) );
- aVal >>= xRenderDevice;
-
- OutputDevice* pOut = 0;
- if (xRenderDevice.is())
- {
- VCLXDevice* pDevice = VCLXDevice::GetImplementation( xRenderDevice );
- pOut = pDevice ? pDevice->GetOutputDevice() : 0;
- }
- bChanged = bChanged || (pOut != m_pLast);
- if( pOut )
- m_pLast = pOut;
-
- return bChanged;
-}
-
-
/******************************************************************************
* Methode : void SetSwVisArea( ViewShell *pSh, Point aPrtOffset, ...
* Beschreibung:
@@ -847,33 +336,6 @@ void ViewShell::ChgAllPageSize( Size &rSz )
}
-void lcl_SetState( SfxProgress& rProgress, ULONG nPage, ULONG nMax,
- const XubString *pStr, ULONG nAct, ULONG nCnt, ULONG nOffs, ULONG nPageNo )
-{
- XubString aTmp = XubString::CreateFromInt64( nPageNo );
- if( pStr )
- {
- aTmp += ' ';
- aTmp += *pStr;
- if( nCnt )
- {
- nMax *= 2;
- rProgress.SetStateText( (nAct-1)*nMax+nPage+nOffs,
- aTmp, nCnt*nMax );
- }
- else
- rProgress.SetStateText( nPage, aTmp, nMax );
- }
- else
- {
- aTmp += ' '; aTmp += '('; aTmp += XubString::CreateFromInt64( nPage );
- aTmp += '/'; aTmp += XubString::CreateFromInt64( nMax ); aTmp += ')';
- rProgress.SetStateText( nPage, aTmp, nMax );
- }
-}
-
-
-
void ViewShell::CalcPagesForPrint( USHORT nMax )
{
SET_CURR_SHELL( this );
@@ -1394,3 +856,4 @@ void ViewShell::PrepareForPrint( const SwPrintData &rOptions )
}
}
}
+