[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-4-0' - common/Session.cpp common/Session.hpp kit/Kit.cpp loolwsd.xml.in wsd/ClientSession.cpp

Michael Meeks (via logerrit) logerrit at kemper.freedesktop.org
Mon Sep 2 15:26:01 UTC 2019


 common/Session.cpp    |    8 +++++++-
 common/Session.hpp    |    7 +++++++
 kit/Kit.cpp           |    7 ++++---
 loolwsd.xml.in        |    4 ++++
 wsd/ClientSession.cpp |    1 +
 5 files changed, 23 insertions(+), 4 deletions(-)

New commits:
commit 564414e6b2b0d4ec299253bde3cc95628b54e295
Author:     Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Mon Aug 26 16:23:04 2019 -0400
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Mon Sep 2 11:25:33 2019 -0400

    Add watermark opacity setting.
    
    Change-Id: I839e8aef91acfed40d4afd8c1b50176ed54c670a

diff --git a/common/Session.cpp b/common/Session.cpp
index 1c37e5ba2..f7ed7f33f 100644
--- a/common/Session.cpp
+++ b/common/Session.cpp
@@ -55,7 +55,8 @@ Session::Session(const std::string& name, const std::string& id, bool readOnly)
     _isReadOnly(readOnly),
     _docPassword(""),
     _haveDocPassword(false),
-    _isDocPasswordProtected(false)
+    _isDocPasswordProtected(false),
+    _watermarkOpacity(0.2)
 {
 }
 
@@ -156,6 +157,11 @@ void Session::parseDocOptions(const std::vector<std::string>& tokens, int& part,
             Poco::URI::decode(value, _watermarkText);
             ++offset;
         }
+        else if (name == "watermarkOpacity")
+        {
+            _watermarkOpacity = std::stod(value);
+            ++offset;
+        }
         else if (name == "timestamp")
         {
             timestamp = value;
diff --git a/common/Session.hpp b/common/Session.hpp
index f09af7574..49f48b2e9 100644
--- a/common/Session.hpp
+++ b/common/Session.hpp
@@ -102,8 +102,12 @@ public:
 
     const std::string& getDocOptions() const { return _docOptions; }
 
+    bool hasWatermark() const { return !_watermarkText.empty() && _watermarkOpacity > 0.0; }
+
     const std::string& getWatermarkText() const { return _watermarkText; }
 
+    double getWatermarkOpacity() const { return _watermarkOpacity; }
+
     const std::string& getLang() const { return _lang; }
 
     bool getHaveDocPassword() const { return _haveDocPassword; }
@@ -203,6 +207,9 @@ private:
     /// In case a watermark has to be rendered on each tile.
     std::string _watermarkText;
 
+    /// Opacity in case a watermark has to be rendered on each tile.
+    double _watermarkOpacity;
+
     /// Language for the document based on what the user has in the UI.
     std::string _lang;
 };
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 35c37818c..7bfe2dd96 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -632,13 +632,14 @@ public:
 class Watermark
 {
 public:
-    Watermark(const std::shared_ptr<lok::Document>& loKitDoc, const std::string& text)
+    Watermark(const std::shared_ptr<lok::Document>& loKitDoc, const std::string& text,
+    const std::shared_ptr<ChildSession> & session)
         : _loKitDoc(loKitDoc)
         , _text(text)
         , _font("Liberation Sans")
         , _width(0)
         , _height(0)
-        , _alphaLevel(0.2)
+        , _alphaLevel(session->getWatermarkOpacity())
     {
     }
 
@@ -1731,7 +1732,7 @@ private:
             _renderOpts = renderOpts;
 
             if (!watermarkText.empty())
-                _docWatermark.reset(new Watermark(_loKitDocument, watermarkText));
+                _docWatermark.reset(new Watermark(_loKitDocument, watermarkText, session));
         }
         else
         {
diff --git a/loolwsd.xml.in b/loolwsd.xml.in
index 012d74ffc..e3f2e9e29 100644
--- a/loolwsd.xml.in
+++ b/loolwsd.xml.in
@@ -105,6 +105,10 @@
       <capabilities desc="Should we require capabilities to isolate processes into chroot jails" type="bool" default="true">true</capabilities>
     </security>
 
+    <watermark>
+      <opacity desc="Opacity of on-screen watermark from 0.0 to 1.0" type="double" default="0.2"></opacity>
+    </watermark>
+
     <storage desc="Backend storage">
         <filesystem allow="false" />
         <wopi desc="Allow/deny wopi storage. Mutually exclusive with webdav." allow="true">
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index f3b970c79..c26c804a7 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -475,6 +475,7 @@ bool ClientSession::loadDocument(const char* /*buffer*/, int /*length*/,
             std::string encodedWatermarkText;
             Poco::URI::encode(getWatermarkText(), "", encodedWatermarkText);
             oss << " watermarkText=" << encodedWatermarkText;
+            oss << " watermarkOpacity=" << LOOLWSD::getConfigValue<double>("watermark.opacity", 0.2);
         }
 
         if (!getDocOptions().empty())


More information about the Libreoffice-commits mailing list