Hi,
as suggested on IRC I've removed the whole StrictSO52Compatibility
stuff. It builds successfully - make test is on its way. "git grep"
reported some test documents matching as well, so I expect some tests to
fail.
Christina
Am 05.03.2012 12:41, schrieb Michael Meeks:
On Fri, 2012-03-02 at 21:03 +0100, Chr. Rossmanith wrote:
static const sal_Char pProlog[] and static const sal_Char
pSO52CompatProlog[] share about 90% of their content (2 out of 84 lines
differ).
Wow - that is really horrible :-)
I could split the prolog in three parts: part 1 and 3 identical
for both variables and part 2 varies with
m_pGraphics->getStrictSO52Compatibility()
Sounds good to me; I'm trying to think of a way to make that
elegant :-) the prolog for the prolog seems fun :-)
There is no performance concern here, so making the code look pretty is
the only interesting thing I suppose. Your idea of splitting into
several named variables makes good sense though.
This is where the prologs are used:
WritePS (pFile, m_pGraphics&&
m_pGraphics->getStrictSO52Compatibility() ? pSO52CompatProlog : pProlog);
Any arguments against that approach? It would need 3 instead of 1 call
to WritePS...
That's no problem at all :-)
Thanks for unwinding that cut/paste rat's nest :-)
Having said all this, I'm not 100% certain that we really need:
m_pGraphics->getStrictSO52Compatibility()
is 'strict Star Office 5.2 Compatibility' in postscript generation a
truly useful feature ? :-) I suspect it could only be at all useful for
unit testing / backwards compatibility testing - but ...
Surely we could update those tests to a new postscript header ?
git grep -5 StrictSO52Compatibility
I'd be inclined to deliberately break that method, then run 'make
check' to see if it busts anything.
Caolan - I notice the option seems to be mentioned in:
qadevOOo/testdocs/ttt.sda
Which you touched last :-) is this a feature we need to keep ?
All the best,
Michael.
From ee4bfbaecc7f99d01165be73c237d83dccf2f668 Mon Sep 17 00:00:00 2001
From: Christina Rossmanith <ChrRossmanith@web.de>
Date: Mon, 5 Mar 2012 14:57:30 +0100
Subject: [PATCH] Remove SO52 strict compatibility stuff
---
vcl/generic/print/common_gfx.cxx | 3 +-
vcl/generic/print/genprnpsp.cxx | 36 ---------------
vcl/generic/print/printerjob.cxx | 89 +-------------------------------------
vcl/generic/print/text_gfx.cxx | 42 ------------------
vcl/headless/svpprn.cxx | 11 -----
vcl/inc/generic/printergfx.hxx | 3 -
6 files changed, 2 insertions(+), 182 deletions(-)
diff --git a/vcl/generic/print/common_gfx.cxx b/vcl/generic/print/common_gfx.cxx
index 941a5cc..44bf1a7 100644
--- a/vcl/generic/print/common_gfx.cxx
+++ b/vcl/generic/print/common_gfx.cxx
@@ -129,8 +129,7 @@ PrinterGfx::PrinterGfx() :
maFillColor (0xff,0,0),
maTextColor (0,0,0),
maLineColor (0, 0xff, 0),
- mpFontSubstitutes( NULL ),
- mbStrictSO52Compatibility( false )
+ mpFontSubstitutes( NULL )
{
maVirtualStatus.mfLineWidth = 1.0;
maVirtualStatus.mnTextHeight = 12;
diff --git a/vcl/generic/print/genprnpsp.cxx b/vcl/generic/print/genprnpsp.cxx
index a456517..64f86b3 100644
--- a/vcl/generic/print/genprnpsp.cxx
+++ b/vcl/generic/print/genprnpsp.cxx
@@ -415,18 +415,6 @@ void SalGenericInstance::configurePspInfoPrinter(PspSalInfoPrinter *pPrinter,
pJobSetup->maPrinterName = pQueueInfo->maPrinterName;
pJobSetup->maDriver = aInfo.m_aDriverName;
copyJobDataToJobSetup( pJobSetup, aInfo );
-
- // set/clear backwards compatibility flag
- bool bStrictSO52Compatibility = false;
- boost::unordered_map<rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator
compat_it =
- pJobSetup->maValueMap.find( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"StrictSO52Compatibility" ) ) );
-
- if( compat_it != pJobSetup->maValueMap.end() )
- {
- if( compat_it->second.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("true")) )
- bStrictSO52Compatibility = true;
- }
- pPrinter->m_aPrinterGfx.setStrictSO52Compatibility( bStrictSO52Compatibility );
}
}
@@ -629,18 +617,6 @@ sal_Bool PspSalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pJobSetup )
// should be merged into the independent data
sal_Bool PspSalInfoPrinter::SetPrinterData( ImplJobSetup* pJobSetup )
{
- // set/clear backwards compatibility flag
- bool bStrictSO52Compatibility = false;
- boost::unordered_map<rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator
compat_it =
- pJobSetup->maValueMap.find( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"StrictSO52Compatibility" ) ) );
-
- if( compat_it != pJobSetup->maValueMap.end() )
- {
- if( compat_it->second.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("true")) )
- bStrictSO52Compatibility = true;
- }
- m_aPrinterGfx.setStrictSO52Compatibility( bStrictSO52Compatibility );
-
if( pJobSetup->mpDriverData )
return SetData( ~0, pJobSetup );
@@ -993,18 +969,6 @@ sal_Bool PspSalPrinter::StartJob(
#endif
m_aPrinterGfx.Init( m_aJobData );
- // set/clear backwards compatibility flag
- bool bStrictSO52Compatibility = false;
- boost::unordered_map<rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator
compat_it =
- pJobSetup->maValueMap.find( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"StrictSO52Compatibility" ) ) );
-
- if( compat_it != pJobSetup->maValueMap.end() )
- {
- if( compat_it->second.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("true")) )
- bStrictSO52Compatibility = true;
- }
- m_aPrinterGfx.setStrictSO52Compatibility( bStrictSO52Compatibility );
-
return m_aPrintJob.StartJob( ! m_aTmpFile.isEmpty() ? m_aTmpFile : m_aFileName, nMode,
rJobName, rAppName, m_aJobData, &m_aPrinterGfx, bDirect ) ? sal_True : sal_False;
}
diff --git a/vcl/generic/print/printerjob.cxx b/vcl/generic/print/printerjob.cxx
index 503d7af..4cf9efc 100644
--- a/vcl/generic/print/printerjob.cxx
+++ b/vcl/generic/print/printerjob.cxx
@@ -977,94 +977,7 @@ bool PrinterJob::writeProlog (osl::File* pFile, const JobData& rJobData )
"%%EndResource\n"
"%%EndProlog\n"
};
- static const sal_Char pSO52CompatProlog[] = {
- "%%BeginResource: procset PSPrint-Prolog 1.0 0\n"
- "/ISO1252Encoding [\n"
- "/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n"
- "/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n"
- "/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n"
- "/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n"
- "/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright\n"
- "/parenleft /parenright /asterisk /plus /comma /minus /period /slash\n"
- "/zero /one /two /three /four /five /six /seven\n"
- "/eight /nine /colon /semicolon /less /equal /greater /question\n"
- "/at /A /B /C /D /E /F /G\n"
- "/H /I /J /K /L /M /N /O\n"
- "/P /Q /R /S /T /U /V /W\n"
- "/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore\n"
- "/grave /a /b /c /d /e /f /g\n"
- "/h /i /j /k /l /m /n /o\n"
- "/p /q /r /s /t /u /v /w\n"
- "/x /y /z /braceleft /bar /braceright /asciitilde /unused\n"
- "/Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl\n"
- "/circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused\n"
- "/unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash\n"
- "/tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis\n"
- "/space /exclamdown /cent /sterling /currency /yen /brokenbar /section\n"
- "/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered
/macron\n"
- "/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered\n"
- "/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters
/questiondown\n"
- "/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla\n"
- "/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis\n"
- "/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply\n"
- "/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls\n"
- "/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla\n"
- "/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis\n"
- "/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide\n"
- "/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def\n"
- "\n"
- "/psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne\n"
- "{ def } { pop pop } ifelse } forall /Encoding 3 -1 roll def\n"
- "currentdict end exch pop definefont pop } def\n"
- "\n"
- "/pathdict dup 8 dict def load begin\n"
- "/rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit }\n"
- "{ pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1\n"
- "add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10\n"
- "eq 3 1 roll exch } def\n"
- "/rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0\n"
- "get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3\n"
- "-1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul }\n"
- "for 256 div exch pop exch { neg } if } def\n"
- "/xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add\n"
- "1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end\n"
- "/readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def\n"
- "\n"
- "systemdict /languagelevel known not {\n"
- "/xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get\n"
- "exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1\n"
- "roll show moveto 0 rmoveto } for pop pop } def\n"
- "/rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0\n"
- "rlineto closepath } def\n"
- "/rectfill { rectangle fill } def\n"
- "/rectstroke { rectangle stroke } def } if\n"
- "/bshow { currentlinewidth 3 1 roll currentpoint 3 index show moveto\n"
- "setlinewidth false charpath stroke setlinewidth } def\n"
- "/bxshow { currentlinewidth 4 1 roll setlinewidth exch dup length 1 sub\n"
- "0 1 3 -1 roll { 1 string 2 index 2 index get 1 index exch 0 exch put dup\n"
- "currentpoint 3 -1 roll show moveto currentpoint 3 -1 roll false charpath\n"
- "stroke moveto 2 index exch get 0 rmoveto } for pop pop setlinewidth } def\n"
- "\n"
- "/psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def\n"
- "/psp_ascii85filter { currentfile /ASCII85Decode filter } def\n"
- "/psp_lzwstring { psp_lzwfilter 1024 string readstring } def\n"
- "/psp_ascii85string { psp_ascii85filter 1024 string readstring } def\n"
- "/psp_imagedict {\n"
- "/psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def\n"
- "/psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get }\n"
- "def 7 dict dup\n"
- "/ImageType 1 put dup\n"
- "/Width 7 -1 roll put dup\n"
- "/Height 5 index put dup\n"
- "/BitsPerComponent 4 index psp_bitspercomponent put dup\n"
- "/Decode 5 -1 roll psp_decodearray put dup\n"
- "/ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup\n"
- "/DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put\n"
- "} def\n"
- "%%EndResource\n"
- "%%EndProlog\n"
- };
- WritePS (pFile, m_pGraphics && m_pGraphics->getStrictSO52Compatibility() ? pSO52CompatProlog :
pProlog);
+ WritePS (pFile, pProlog);
return true;
}
diff --git a/vcl/generic/print/text_gfx.cxx b/vcl/generic/print/text_gfx.cxx
index d14d70c..06dbf7d 100644
--- a/vcl/generic/print/text_gfx.cxx
+++ b/vcl/generic/print/text_gfx.cxx
@@ -655,38 +655,7 @@ PrinterGfx::getCharMetric (const Font3 &rFont, sal_Unicode n_char,
CharacterMetr
{
fontID n_font = rFont.GetFont(n);
if (n_font != -1)
- {
- if( mbStrictSO52Compatibility )
- {
- fonttype::type eType = mrFontMgr.getFontType( n_font );
- if( (eType == fonttype::Builtin || eType == fonttype::Type1) )
- {
- // note: any character exchanged here MUST also be changed
- // in the compatibility ISO encoding vector in the prolog
- // in printerjob.cxx
- sal_Unicode aRepl = 0;
- if( n_char == 0x2d )
- aRepl = 0x2212;
- else if( n_char == 0x27 )
- aRepl = 0x2019;
- /*
- additional characters that may need backwards compatibility:
- ISO5589 StdEnc Unicode suggested n_char -> aRepl
- 0264 0302 0x00B4 0x00B4 (acute) -> 0x2019 (quiteright)
- 0246 - 0x00A6 0x00A6 (brokenbar) -> 0x007C (bar)
- 0225 0267 0x0095 0x0095 () -> 0x2022 (bullet)
- 0140 0301 0x0060 0x0060 (grave) -> ?
- */
- if( aRepl )
- {
- mrFontMgr.getMetrics( n_font, aRepl, aRepl, p_bbox );
- if (p_bbox->width >= 0 && p_bbox->height >= 0)
- return n_font;
- }
- }
- }
mrFontMgr.getMetrics( n_font, n_char, n_char, p_bbox );
- }
if (p_bbox->width >= 0 && p_bbox->height >= 0)
return n_font;
}
@@ -853,15 +822,4 @@ PrinterGfx::writeResources( osl::File* pFile, std::list< rtl::OString >&
rSuppli
}
}
}
-
-bool PrinterGfx::getStrictSO52Compatibility() const
-{
- return mbStrictSO52Compatibility;
-}
-
-void PrinterGfx::setStrictSO52Compatibility( bool bCompat)
-{
- mbStrictSO52Compatibility = bCompat;
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/headless/svpprn.cxx b/vcl/headless/svpprn.cxx
index a567438..d50436a 100644
--- a/vcl/headless/svpprn.cxx
+++ b/vcl/headless/svpprn.cxx
@@ -192,17 +192,6 @@ SalInfoPrinter* SvpSalInstance::CreateInfoPrinter( SalPrinterQueueInfo*
pQueueIn
pJobSetup->maPrinterName = pQueueInfo->maPrinterName;
pJobSetup->maDriver = aInfo.m_aDriverName;
copyJobDataToJobSetup( pJobSetup, aInfo );
-
- // set/clear backwards compatibility flag
- bool bStrictSO52Compatibility = false;
- boost::unordered_map<rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator
compat_it =
- pJobSetup->maValueMap.find( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"StrictSO52Compatibility" ) ) );
- if( compat_it != pJobSetup->maValueMap.end() )
- {
- if( compat_it->second.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM("true")) )
- bStrictSO52Compatibility = true;
- }
- pPrinter->m_aPrinterGfx.setStrictSO52Compatibility( bStrictSO52Compatibility );
}
diff --git a/vcl/inc/generic/printergfx.hxx b/vcl/inc/generic/printergfx.hxx
index a8d259a..3ac5df0 100644
--- a/vcl/inc/generic/printergfx.hxx
+++ b/vcl/inc/generic/printergfx.hxx
@@ -262,7 +262,6 @@ private:
fontID getFontSubstitute () const;
fontID getFallbackID () const { return mnFallbackID; }
- bool mbStrictSO52Compatibility;
public:
/* grahics status update */
void PSSetColor ();
@@ -433,8 +432,6 @@ public:
sal_Int16 nLen,
sal_Int32* pDeltaArray );
- bool getStrictSO52Compatibility() const;
- void setStrictSO52Compatibility( bool );
};
} /* namespace psp */
--
1.7.4.1
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.