DSDisplayArea: make the DSDisplayAreaPrivate. 90/241590/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 9 Jul 2020 05:02:11 +0000 (14:02 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 20 Aug 2020 09:46:07 +0000 (18:46 +0900)
use Pimpl pattern on DSDisplayArea

Change-Id: I08da8fcbaa60fb917399c0bc653fbd9975c1934e

src/DSDisplayArea/DSDisplayArea.cpp
src/DSDisplayArea/DSDisplayArea.h
src/DSDisplayArea/DSDisplayAreaPrivate.h [new file with mode: 0644]
tests/DSCanvas-test.cpp
tests/DSDisplayArea-test.cpp

index 81b9035..52c4e0a 100644 (file)
@@ -1,39 +1,88 @@
 #include "DSDisplayArea.h"
+#include "DSDisplayAreaPrivate.h"
+#include "DSDebugLog.h"
 
 namespace display_server
 {
 
-DSDisplayArea::DSDisplayArea()
-       : __output(nullptr),
-         __x(0),
-         __y(0),
-         __width(0),
-         __height(0)
+DSDisplayArea::DSDisplayArea(std::shared_ptr<DSOutput> output)
+       : _d_ptr(std::make_unique<DSDisplayAreaPrivate>(this, output))
 {}
 
-DSDisplayArea::DSDisplayArea(std::shared_ptr<DSOutput> output)
-       : __output(output),
+DSDisplayArea::~DSDisplayArea()
+{}
+
+bool DSDisplayArea::setPosition(int x, int y)
+{
+       DS_GET_PRIV(DSDisplayArea);
+
+       if (!priv->setPosition(x, y))
+               return false;
+
+       return true;
+}
+
+bool DSDisplayArea::setSize(int width, int height)
+{
+       DS_GET_PRIV(DSDisplayArea);
+
+       if (!priv->setSize(width, height))
+               return false;
+
+       return true;
+}
+
+int DSDisplayArea::getWidth()
+{
+       DS_GET_PRIV(DSDisplayArea);
+
+       return priv->getWidth();
+}
+
+int DSDisplayArea::getHeight()
+{
+       DS_GET_PRIV(DSDisplayArea);
+
+       return priv->getHeight();
+}
+
+std::shared_ptr<DSOutput> DSDisplayArea::getOutput()
+{
+       DS_GET_PRIV(DSDisplayArea);
+
+       return priv->getOutput();
+}
+
+DSDisplayAreaPrivate::DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr<DSOutput> output)
+       : DSObjectPrivate(p_ptr),
+         __p_ptr(p_ptr),
+         __output(output),
          __x(0),
          __y(0),
          __width(0),
          __height(0)
 {}
 
-DSDisplayArea::~DSDisplayArea()
+DSDisplayAreaPrivate::~DSDisplayAreaPrivate()
 {}
 
-bool DSDisplayArea::setPosition(int x, int y)
+bool DSDisplayAreaPrivate::setPosition(int x, int y)
 {
-       // position to canvas.
-       return false;
+       __x = x;
+       __y = y;
+
+       return true;
 }
 
-bool DSDisplayArea::setSize(int width, int height)
+bool DSDisplayAreaPrivate::setSize(int width, int height)
 {
-       return false;
+       __width = width;
+       __height = height;
+
+       return true;
 }
 
-int DSDisplayArea::getWidth()
+int DSDisplayAreaPrivate::getWidth()
 {
        if (__output == nullptr)
                return -1;
@@ -41,7 +90,7 @@ int DSDisplayArea::getWidth()
        return __width;
 }
 
-int DSDisplayArea::getHeight()
+int DSDisplayAreaPrivate::getHeight()
 {
        if (__output == nullptr)
                return -1;
@@ -49,4 +98,10 @@ int DSDisplayArea::getHeight()
        return __height;
 }
 
+std::shared_ptr<DSOutput> DSDisplayAreaPrivate::getOutput()
+{
+       return __output;
+}
+
+
 } // namespace display_server
index 87fea02..6c1f1bf 100644 (file)
@@ -1,28 +1,27 @@
-#ifndef _DSDISPLAYAREA_H_
-#define _DSDISPLAYAREA_H_
+#ifndef __DS_DISPLAY_AREA_H__
+#define __DS_DISPLAY_AREA_H__
 
+#include <DSCore.h>
+#include <DSObject.h>
 #include <DSOutput.h>
 #include <memory>
 
 namespace display_server
 {
-class DSDisplayArea
-{
+class DSDisplayAreaPrivate;
 
+class DSDisplayArea : public DSObject
+{
+DS_PIMPL_USE_PRIVATE(DSDisplayArea);
 public:
-       DSDisplayArea();
-       DSDisplayArea(std::shared_ptr<DSOutput> output);
+       explicit DSDisplayArea(std::shared_ptr<DSOutput> output);
        virtual ~DSDisplayArea();
 
        bool setPosition(int x, int y);
        bool setSize(int width, int height);
        int getWidth();
        int getHeight();
-
-private:
-       std::shared_ptr<DSOutput> __output;
-       int __x, __y;
-       int __width, __height;
+       std::shared_ptr<DSOutput> getOutput();
 };
 
 }
diff --git a/src/DSDisplayArea/DSDisplayAreaPrivate.h b/src/DSDisplayArea/DSDisplayAreaPrivate.h
new file mode 100644 (file)
index 0000000..761c03b
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef __DS_DISPLAY_AREA_PRIVATE_H__
+#define __DS_DISPLAY_AREA_PRIVATE_H__
+
+#include "DSDisplayArea.h"
+#include <DSOutput.h>
+#include <memory>
+
+namespace display_server
+{
+
+class DSDisplayAreaPrivate : public DSObjectPrivate
+{
+DS_PIMPL_USE_PUBLIC(DSDisplayArea);
+public:
+       DSDisplayAreaPrivate() = delete;
+       DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr<DSOutput> output);
+       virtual ~DSDisplayAreaPrivate();
+
+       bool setPosition(int x, int y);
+       bool setSize(int width, int height);
+       int getWidth();
+       int getHeight();
+
+       bool setOutput(std::shared_ptr<DSOutput> output);
+       std::shared_ptr<DSOutput> getOutput();
+
+private:
+       std::shared_ptr<DSOutput> __output;
+       int __x, __y;
+       int __width, __height;
+};
+
+}
+
+#endif
\ No newline at end of file
index a0946d0..3850ba5 100644 (file)
@@ -18,14 +18,22 @@ TEST_F(DSCanvasTest, NewDSCanvas)
        EXPECT_TRUE(canvas != nullptr);
 }
 
-TEST_F(DSCanvasTest, BasicMethods)
+TEST_F(DSCanvasTest, attachPolicyArea)
 {
-       DSCanvas canvas;
+       std::unique_ptr<DSCanvas> canvas = std::make_unique<DSCanvas>();
+       EXPECT_TRUE(canvas != nullptr);
        auto policyArea = std::make_shared<DSPolicyArea>();
        EXPECT_TRUE(policyArea != nullptr);
-       auto displayArea = std::make_shared<DSDisplayArea>();
-       EXPECT_TRUE(displayArea != nullptr);
+       EXPECT_TRUE(canvas->attachPolicyArea(policyArea) == true);
+}
 
-       EXPECT_TRUE(canvas.attachPolicyArea(policyArea) == true);
-       EXPECT_TRUE(canvas.attachDisplayArea(displayArea) == true);
-}
\ No newline at end of file
+TEST_F(DSCanvasTest, displayArea_Negetive1)
+{
+       std::unique_ptr<DSCanvas> canvas = std::make_unique<DSCanvas>();
+       EXPECT_TRUE(canvas != nullptr);
+       auto output = std::make_shared<DSOutput>();
+       EXPECT_TRUE(output != nullptr);
+       auto displayArea = std::make_shared<DSDisplayArea>(output);
+       EXPECT_TRUE(displayArea != nullptr);
+       EXPECT_TRUE(canvas->attachDisplayArea(displayArea) == false);
+}
index 8794aa0..1361d83 100644 (file)
@@ -1,6 +1,5 @@
 #include "libds-tests.h"
 #include "DSDisplayArea.h"
-#include "DSDisplayDeviceOutputTDMImpl.h"
 
 using namespace display_server;