Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


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.