summaryrefslogtreecommitdiff
path: root/binfilter/bf_svx/source/items/svx_paperinf.cxx
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-08-23 15:10:47 +0200
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-08-23 15:10:47 +0200
commit5047523157e7e60ae8cda8874d9a612901519e49 (patch)
treefaa36aaa54a39b1db9a6e6cfbc5a7e9a9e585c52 /binfilter/bf_svx/source/items/svx_paperinf.cxx
parent94844f1a5db3657d0e649069f5a7f4d890b80568 (diff)
recreated tag libreoffice-3.3.3.1 which had these commits:
commit 1bcb7c0787a73a4caaf385d9c7a0668f6ce0c712 (tag: refs/tags/libreoffice-3.3.3.1) Author: Petr Mladek <pmladek@suse.cz> Date: Tue May 31 17:39:05 2011 +0200 Version 3.3.3.1, tag libreoffice-3.3.3.1 (3.3.3-rc1) commit d74a6ab18ffdb0f1eb796dc9211e7d2109d348c8 Author: Caolán McNamara <caolanm@redhat.com> Date: Wed Apr 6 21:37:47 2011 +0100 avoid possibility of accessing out of range ObjTimes lotuswordpro/source/filter/lwpidxmgr.hxx | 2 +- lotuswordpro/source/filter/lwpobjid.cxx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
Notes
split repo tag: filters_libreoffice-3.3.3.1 split repo tag: filters_libreoffice-3.3.4.1
Diffstat (limited to 'binfilter/bf_svx/source/items/svx_paperinf.cxx')
-rw-r--r--binfilter/bf_svx/source/items/svx_paperinf.cxx179
1 files changed, 179 insertions, 0 deletions
diff --git a/binfilter/bf_svx/source/items/svx_paperinf.cxx b/binfilter/bf_svx/source/items/svx_paperinf.cxx
new file mode 100644
index 000000000000..bf0e181a4a33
--- /dev/null
+++ b/binfilter/bf_svx/source/items/svx_paperinf.cxx
@@ -0,0 +1,179 @@
+/* -*- 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.
+ *
+ ************************************************************************/
+
+// include ---------------------------------------------------------------
+
+#include <limits.h>
+
+#include <sal/macros.h>
+#include "dialogs.hrc"
+#include "paperinf.hxx"
+namespace binfilter {
+
+#define SVX_PAPER_OFFSET 3 // Anfang: enum Paper A3 - SvxPaper A0; Diff=3
+
+// STATIC DATA -----------------------------------------------------------
+
+static Size __FAR_DATA aDinTab[] =
+{
+ Size(lA0Width,lA0Height), // A0
+ Size(lA1Width,lA1Height), // A1
+ Size(lA2Width,lA2Height), // A2
+ Size(lA3Width,lA3Height), // A3
+ Size(lA4Width,lA4Height), // A4
+ Size(lA5Width,lA5Height), // A5
+ Size(lB4Width, lB4Height), // B4
+ Size(lB5Width,lB5Height), // B5
+ Size(lLetterWidth,lLetterHeight), // LETTER
+ Size(lLegalWidth,lLegalHeight), // LEGAL
+ Size(lTabloidWidth,lTabloidHeight), // TABLOID
+ Size(0, 0), // USER
+ Size(lB6Width, lB6Height), // B6
+ Size(lC4Width, lC4Height), // C4
+ Size(lC5Width, lC5Height), // C5
+ Size(lC6Width, lC6Height), // C6
+ Size(lC65Width, lC65Height), // C65
+ Size(lDLWidth, lDLHeight), // DL
+ Size(lDiaWidth,lDiaHeight ), // DIA
+ Size(lScreenWidth, lScreenHeight), // SCREEN
+ Size(lAWidth, lAHeight), // A
+ Size(lBWidth, lBHeight), // B
+ Size(lCWidth, lCHeight), // C
+ Size(lDWidth, lDHeight), // D
+ Size(lEWidth, lEHeight), // E
+ Size(lExeWidth, lExeHeight), // Executive
+ Size(lLegal2Width, lLegal2Height), // Legal2
+ Size(lMonarchWidth, lMonarchHeight),// Monarch
+ Size(lCom675Width, lCom675Height), // COM-6 3/4
+ Size(lCom9Width, lCom9Height), // COM-9
+ Size(lCom10Width, lCom10Height), // COM-10
+ Size(lCom11Width, lCom11Height), // COM-11
+ Size(lCom12Width, lCom12Height), // COM-12
+ Size(lKai16Width, lKai16Height), // 16 kai
+ Size(lKai32Width, lKai32Height), // 32 kai
+ Size(lKai32BigWidth, lKai32BigHeight), // 32 kai gross
+ Size(lJISB4Width, lJISB4Height), // B4 (JIS)
+ Size(lJISB5Width, lJISB5Height), // B5 (JIS)
+ Size(lJISB6Width, lJISB6Height) // B6 (JIS)
+};
+
+static const int nTabSize = SAL_N_ELEMENTS(aDinTab);
+
+// -----------------------------------------------------------------------
+
+/*N*/ long TwipsTo100thMM( long nIn )
+/*N*/ {
+/*N*/ long nRet = OutputDevice::LogicToLogic( nIn, MAP_TWIP, MAP_100TH_MM );
+/*N*/ long nTmp = nRet % 10;
+/*N*/
+/*N*/ if ( nTmp )
+/*N*/ nRet += 10 - nTmp;
+/*N*/ return nRet;
+/*N*/ }
+
+// -----------------------------------------------------------------------
+
+/*N*/ Size ConvertTo100thMM( Size& rSize )
+/*N*/ {
+/*N*/ // Convert form TWIPS to 100TH_MM
+/*N*/ long nW = TwipsTo100thMM( rSize.Width() );
+/*N*/ long nH = TwipsTo100thMM( rSize.Height() );
+/*N*/
+/*N*/ rSize.Width() = nW;
+/*N*/ rSize.Height() = nH;
+/*N*/ return rSize;
+/*N*/ }
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ist der Printer gueltig
+ --------------------------------------------------------------------*/
+
+/*?*/ inline BOOL IsValidPrinter( const Printer* pPtr )
+/*?*/ {
+/*?*/ return pPtr->GetName().Len() ? TRUE : FALSE;
+/*?*/ }
+
+/*------------------------------------------------------------------------
+ Beschreibung: Konvertierung eines SV-Defines fuer Papiergroesse in
+ Twips.
+ Funktioniert logischerweise nicht fuer User Groessen
+ (ASSERT).
+------------------------------------------------------------------------*/
+
+/*N*/ Size SvxPaperInfo::GetPaperSize( SvxPaper ePaper, MapUnit eUnit )
+/*N*/ {
+/*N*/ DBG_ASSERT( ePaper < nTabSize, "Tabelle der Papiergroessen ueberindiziert" );
+/*N*/ DBG_ASSERT( eUnit == MAP_TWIP || eUnit == MAP_100TH_MM, "this MapUnit not supported" );
+/*N*/ Size aSize = aDinTab[ePaper]; // in Twips
+/*N*/
+/*N*/ if ( eUnit == MAP_100TH_MM )
+/*N*/ ConvertTo100thMM( aSize );
+/*N*/ return aSize;
+/*N*/ }
+
+/*------------------------------------------------------------------------
+ Beschreibung: Papiergroesse der Druckers liefern, aligned auf
+ die eigenen Groessen.
+ Falls kein Printer im System eingestellt ist,
+ wird DIN A4 Portrait als Defaultpapiergroesse geliefert.
+------------------------------------------------------------------------*/
+
+/*N*/ Size SvxPaperInfo::GetPaperSize( const Printer* pPrinter )
+/*N*/ {
+/*N*/ if ( !IsValidPrinter(pPrinter) )
+/*?*/ return GetPaperSize( SVX_PAPER_A4 );
+/*N*/ const SvxPaper ePaper = (SvxPaper)(pPrinter->GetPaper() + SVX_PAPER_OFFSET);
+/*N*/
+/*N*/ if ( ePaper == SVX_PAPER_USER )
+/*N*/ {
+/*N*/ // Orientation nicht beruecksichtigen, da durch SV bereits
+/*N*/ // die richtigen Masze eingestellt worden sind.
+/*N*/ Size aPaperSize = pPrinter->GetPaperSize();
+/*N*/ const Size aInvalidSize;
+/*N*/
+/*N*/ if ( aPaperSize == aInvalidSize )
+/*?*/ return GetPaperSize(SVX_PAPER_A4);
+/*N*/ MapMode aMap1 = pPrinter->GetMapMode();
+/*N*/ MapMode aMap2;
+/*N*/
+/*N*/ if ( aMap1 == aMap2 )
+/*N*/ aPaperSize =
+/*N*/ pPrinter->PixelToLogic( aPaperSize, MapMode( MAP_TWIP ) );
+/*N*/ return aPaperSize;
+/*N*/ }
+/*N*/
+/*N*/ const Orientation eOrient = pPrinter->GetOrientation();
+/*N*/ Size aSize( GetPaperSize( ePaper ) );
+/*N*/ // bei Landscape die Seiten tauschen, ist bei SV schon geschehen
+/*N*/ if ( eOrient == ORIENTATION_LANDSCAPE )
+/*?*/ Swap( aSize );
+/*N*/ return aSize;
+/*N*/ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */