[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.2' - filter/source

merttumer (via logerrit) logerrit at kemper.freedesktop.org
Mon Aug 19 07:36:49 UTC 2019


 filter/source/pdf/pdfexport.cxx |   57 ++++++++++++++++++++++++++++++----------
 1 file changed, 43 insertions(+), 14 deletions(-)

New commits:
commit 4be6ce6a4888118a10d75cb756b712adb77973a2
Author:     merttumer <mert.tumer at collabora.com>
AuthorDate: Fri Mar 15 20:11:15 2019 +0300
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Mon Aug 19 09:36:13 2019 +0200

    Make pdf export watermarks look like watermarks on online
    
    Signed-off-by: merttumer <mert.tumer at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/69317
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/76289
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
    (cherry picked from commit e6bbfd641c6c65ebdebae92f2382689d3ea4a089)
    
    Change-Id: Ib5af8c61dd9a539c63594a91b8ec17ff07327feb
    Reviewed-on: https://gerrit.libreoffice.org/77575
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx
index eed998112f4d..12dea0a241ca 100644
--- a/filter/source/pdf/pdfexport.cxx
+++ b/filter/source/pdf/pdfexport.cxx
@@ -1148,7 +1148,25 @@ void PDFExport::ImplWriteWatermark( vcl::PDFWriter& rWriter, const Size& rPageSi
 
 void PDFExport::ImplWriteTiledWatermark( vcl::PDFWriter& rWriter, const Size& rPageSize )
 {
-    vcl::Font aFont( OUString( "Liberation Sans" ), Size( 0, 40 ) );
+    OUString watermark = msTiledWatermark;
+    int watermarkLength = watermark.getLength();
+    // Maximum number of characters in one line.
+    // it is set to 21 to make it look like tiled watermaks as online in secure view
+    const int lineLength = 21;
+    int lnIndex = lineLength;
+    int lnCount = watermarkLength / lineLength;
+
+    while(lnCount)
+    {
+        OUString tempstr = watermark;
+        watermark = watermark.copy(0, lnIndex);
+        watermark += "\n";
+        watermark += tempstr.copy(lnIndex);
+        lnIndex += lineLength;
+        lnCount--;
+    }
+
+    vcl::Font aFont( "Liberation Sans", Size( 0, 40 ) );
     aFont.SetItalic( ITALIC_NONE );
     aFont.SetWidthType( WIDTH_NORMAL );
     aFont.SetWeight( WEIGHT_NORMAL );
@@ -1161,8 +1179,14 @@ void PDFExport::ImplWriteTiledWatermark( vcl::PDFWriter& rWriter, const Size& rP
     pDev->SetFont(aFont);
     pDev->SetMapMode( MapMode( MapUnit::MapPoint ) );
     int w = 0;
-    long nTextWidth = (rPageSize.Width()-60) / 4;
-    while((w = pDev->GetTextWidth(msTiledWatermark)) > nTextWidth)
+    int watermarkcount = ((rPageSize.Width()) / 200)+1;
+    long nTextWidth = rPageSize.Width() / (watermarkcount*1.5);
+    OUString oneLineText = watermark;
+
+    if(watermark.getLength() > lineLength)
+        oneLineText = watermark.copy(0, lineLength);
+
+    while((w = pDev->GetTextWidth(oneLineText)) > nTextWidth)
     {
         if(w==0)
             break;
@@ -1171,27 +1195,32 @@ void PDFExport::ImplWriteTiledWatermark( vcl::PDFWriter& rWriter, const Size& rP
         aFont.SetFontHeight(nNewHeight);
         pDev->SetFont( aFont );
     }
+
+    // maximum number of watermark count for the width
+    if(watermarkcount > 8)
+        watermarkcount = 8;
+
     pDev->Pop();
 
     rWriter.Push();
     rWriter.SetMapMode( MapMode( MapUnit::MapPoint ) );
     rWriter.SetFont(aFont);
     rWriter.SetTextColor( Color(19,20,22) );
-    Point aTextPoint;
-    tools::Rectangle aTextRect;
-    aTextPoint = Point(70,80);
+    // center watermarks horizontally
+    Point aTextPoint( (rPageSize.Width()/2) - (((nTextWidth*watermarkcount)+(watermarkcount-1)*(nTextWidth/2))/2),
+                      pDev->GetTextHeight());
 
-    for( int i = 0; i < 3; i ++)
+    for( int i = 0; i < watermarkcount; i ++)
     {
-        while(aTextPoint.getY()+pDev->GetTextHeight() <= rPageSize.Height()-40)
+        while(aTextPoint.getY()+pDev->GetTextHeight()*2 <= rPageSize.Height())
         {
-            aTextRect = tools::Rectangle(Point(aTextPoint.getX(), aTextPoint.getY()-pDev->GetTextHeight()), Size(pDev->GetTextWidth(msTiledWatermark),pDev->GetTextHeight()));
+            tools::Rectangle aTextRect(aTextPoint, Size(nTextWidth,pDev->GetTextHeight()*2));
 
             pDev->Push();
             rWriter.SetClipRegion();
             rWriter.BeginTransparencyGroup();
             rWriter.SetTextColor( Color(19,20,22) );
-            rWriter.DrawText(aTextPoint, msTiledWatermark);
+            rWriter.DrawText(aTextRect, watermark, DrawTextFlags::MultiLine|DrawTextFlags::Center|DrawTextFlags::VCenter);
             rWriter.EndTransparencyGroup( aTextRect, 50 );
             pDev->Pop();
 
@@ -1199,14 +1228,14 @@ void PDFExport::ImplWriteTiledWatermark( vcl::PDFWriter& rWriter, const Size& rP
             rWriter.SetClipRegion();
             rWriter.BeginTransparencyGroup();
             rWriter.SetTextColor( Color(236,235,233) );
-            rWriter.DrawText(aTextPoint, msTiledWatermark);
+            rWriter.DrawText(aTextRect, watermark, DrawTextFlags::MultiLine|DrawTextFlags::Center|DrawTextFlags::VCenter);
             rWriter.EndTransparencyGroup( aTextRect, 50 );
             pDev->Pop();
 
-            aTextPoint.Move(0,(rPageSize.Height()-40)/4);
+            aTextPoint.Move(0, pDev->GetTextHeight()*3);
         }
-        aTextPoint=Point( aTextPoint.getX(), 80 );
-        aTextPoint.Move( (rPageSize.Width()-120)/3, 0 );
+        aTextPoint=Point( aTextPoint.getX(), pDev->GetTextHeight() );
+        aTextPoint.Move( nTextWidth*1.5, 0 );
     }
 
     rWriter.Pop();


More information about the Libreoffice-commits mailing list