common render: code refactoring. 00/236800/1
authorHermet Park <chuneon.park@samsung.com>
Mon, 22 Jun 2020 07:30:18 +0000 (16:30 +0900)
committerHermet Park <chuneon.park@samsung.com>
Mon, 22 Jun 2020 07:30:18 +0000 (16:30 +0900)
just replace the filename.

Change-Id: I6b18520d33c7db3ac9d6c44b10dd693b204495e5

src/lib/tvgRender.h [new file with mode: 0644]
src/lib/tvgRenderCommon.h [deleted file]

diff --git a/src/lib/tvgRender.h b/src/lib/tvgRender.h
new file mode 100644 (file)
index 0000000..a581067
--- /dev/null
@@ -0,0 +1,193 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *               http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+#ifndef _TVG_RENDER_COMMON_H_
+#define _TVG_RENDER_COMMON_H_
+
+namespace tvg
+{
+
+struct Surface
+{
+    //TODO: Union for multiple types
+    uint32_t* buffer;
+    uint32_t stride;
+    uint32_t w, h;
+};
+
+enum RenderUpdateFlag {None = 0, Path = 1, Color = 2, Gradient = 4, Stroke = 8, Transform = 16, All = 32};
+
+struct RenderTransform
+{
+    //3x3 Matrix Elements
+    float e11, e12, e13;
+    float e21, e22, e23;
+    float e31, e32, e33;
+
+    float x = 0.0f;
+    float y = 0.0f;
+    float degree = 0.0f;  //rotation degree
+    float factor = 1.0f;  //scale factor
+
+    bool update()
+    {
+        constexpr auto PI = 3.141592f;
+
+        //Init Status
+        if (fabsf(x) <= FLT_EPSILON && fabsf(y) <= FLT_EPSILON &&
+            fabsf(degree) <= FLT_EPSILON && fabsf(factor - 1) <= FLT_EPSILON) {
+            return false;
+        }
+
+        //identity
+        e11 = 1.0f;
+        e12 = 0.0f;
+        e13 = 0.0f;
+        e21 = 0.0f;
+        e22 = 1.0f;
+        e23 = 0.0f;
+        e31 = 0.0f;
+        e32 = 0.0f;
+        e33 = 1.0f;
+
+        //scale
+        e11 *= factor;
+        e22 *= factor;
+        e33 *= factor;
+
+        //rotation
+        if (fabsf(degree) > FLT_EPSILON) {
+            auto radian = degree / 180.0f * PI;
+            auto cosVal = cosf(radian);
+            auto sinVal = sinf(radian);
+
+            auto t11 = e11 * cosVal + e12 * sinVal;
+            auto t12 = e11 * -sinVal + e12 * cosVal;
+            auto t21 = e21 * cosVal + e22 * sinVal;
+            auto t22 = e21 * -sinVal + e22 * cosVal;
+            auto t31 = e31 * cosVal + e32 * sinVal;
+            auto t32 = e31 * -sinVal + e32 * cosVal;
+
+            e11 = t11;
+            e12 = t12;
+            e21 = t21;
+            e22 = t22;
+            e31 = t31;
+            e32 = t32;
+        }
+
+        e31 += x;
+        e32 += y;
+
+        return true;
+    }
+
+    RenderTransform()
+    {
+    }
+
+    RenderTransform(const RenderTransform* lhs, const RenderTransform* rhs)
+    {
+        assert(lhs && rhs);
+
+        auto dx = rhs->x * lhs->factor;
+        auto dy = rhs->y * lhs->factor;
+        auto tx = dx * lhs->e11 + dy * lhs->e12 + lhs->e13;
+        auto ty = dx * lhs->e21 + dy * lhs->e22 + lhs->e23;
+
+        x = lhs->x + tx;
+        y = lhs->y + ty;
+        degree = lhs->degree + rhs->degree;
+        factor = lhs->factor * rhs->factor;
+
+        update();
+    }
+};
+
+
+class RenderMethod
+{
+public:
+    virtual ~RenderMethod() {}
+    virtual void* prepare(const Shape& shape, void* data, const RenderTransform* transform, RenderUpdateFlag flags) = 0;
+    virtual bool dispose(const Shape& shape, void *data) = 0;
+    virtual bool render(const Shape& shape, void *data) = 0;
+    virtual bool clear() = 0;
+    virtual uint32_t ref() = 0;
+    virtual uint32_t unref() = 0;
+};
+
+struct RenderInitializer
+{
+    RenderMethod* pInst = nullptr;
+    uint32_t refCnt = 0;
+    bool initialized = false;
+
+    static bool init(RenderInitializer& renderInit, RenderMethod* engine)
+    {
+        assert(engine);
+        if (renderInit.pInst || renderInit.refCnt > 0) return false;
+        renderInit.pInst = engine;
+        renderInit.refCnt = 0;
+        renderInit.initialized = true;
+        return true;
+    }
+
+    static bool term(RenderInitializer& renderInit)
+    {
+        if (!renderInit.pInst || !renderInit.initialized) return false;
+
+        renderInit.initialized = false;
+
+        //Still it's refered....
+        if (renderInit.refCnt > 0) return  true;
+        delete(renderInit.pInst);
+        renderInit.pInst = nullptr;
+
+        return true;
+    }
+
+    static uint32_t unref(RenderInitializer& renderInit)
+    {
+        assert(renderInit.refCnt > 0);
+        --renderInit.refCnt;
+
+        //engine has been requested to termination
+        if (!renderInit.initialized && renderInit.refCnt == 0) {
+            if (renderInit.pInst) {
+                delete(renderInit.pInst);
+                renderInit.pInst = nullptr;
+            }
+        }
+        return renderInit.refCnt;
+    }
+
+    static RenderMethod* inst(RenderInitializer& renderInit)
+    {
+        assert(renderInit.pInst);
+        return renderInit.pInst;
+    }
+
+    static uint32_t ref(RenderInitializer& renderInit)
+    {
+        return ++renderInit.refCnt;
+    }
+
+};
+
+}
+
+#endif //_TVG_RENDER_COMMON_H_
diff --git a/src/lib/tvgRenderCommon.h b/src/lib/tvgRenderCommon.h
deleted file mode 100644 (file)
index a581067..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *               http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-#ifndef _TVG_RENDER_COMMON_H_
-#define _TVG_RENDER_COMMON_H_
-
-namespace tvg
-{
-
-struct Surface
-{
-    //TODO: Union for multiple types
-    uint32_t* buffer;
-    uint32_t stride;
-    uint32_t w, h;
-};
-
-enum RenderUpdateFlag {None = 0, Path = 1, Color = 2, Gradient = 4, Stroke = 8, Transform = 16, All = 32};
-
-struct RenderTransform
-{
-    //3x3 Matrix Elements
-    float e11, e12, e13;
-    float e21, e22, e23;
-    float e31, e32, e33;
-
-    float x = 0.0f;
-    float y = 0.0f;
-    float degree = 0.0f;  //rotation degree
-    float factor = 1.0f;  //scale factor
-
-    bool update()
-    {
-        constexpr auto PI = 3.141592f;
-
-        //Init Status
-        if (fabsf(x) <= FLT_EPSILON && fabsf(y) <= FLT_EPSILON &&
-            fabsf(degree) <= FLT_EPSILON && fabsf(factor - 1) <= FLT_EPSILON) {
-            return false;
-        }
-
-        //identity
-        e11 = 1.0f;
-        e12 = 0.0f;
-        e13 = 0.0f;
-        e21 = 0.0f;
-        e22 = 1.0f;
-        e23 = 0.0f;
-        e31 = 0.0f;
-        e32 = 0.0f;
-        e33 = 1.0f;
-
-        //scale
-        e11 *= factor;
-        e22 *= factor;
-        e33 *= factor;
-
-        //rotation
-        if (fabsf(degree) > FLT_EPSILON) {
-            auto radian = degree / 180.0f * PI;
-            auto cosVal = cosf(radian);
-            auto sinVal = sinf(radian);
-
-            auto t11 = e11 * cosVal + e12 * sinVal;
-            auto t12 = e11 * -sinVal + e12 * cosVal;
-            auto t21 = e21 * cosVal + e22 * sinVal;
-            auto t22 = e21 * -sinVal + e22 * cosVal;
-            auto t31 = e31 * cosVal + e32 * sinVal;
-            auto t32 = e31 * -sinVal + e32 * cosVal;
-
-            e11 = t11;
-            e12 = t12;
-            e21 = t21;
-            e22 = t22;
-            e31 = t31;
-            e32 = t32;
-        }
-
-        e31 += x;
-        e32 += y;
-
-        return true;
-    }
-
-    RenderTransform()
-    {
-    }
-
-    RenderTransform(const RenderTransform* lhs, const RenderTransform* rhs)
-    {
-        assert(lhs && rhs);
-
-        auto dx = rhs->x * lhs->factor;
-        auto dy = rhs->y * lhs->factor;
-        auto tx = dx * lhs->e11 + dy * lhs->e12 + lhs->e13;
-        auto ty = dx * lhs->e21 + dy * lhs->e22 + lhs->e23;
-
-        x = lhs->x + tx;
-        y = lhs->y + ty;
-        degree = lhs->degree + rhs->degree;
-        factor = lhs->factor * rhs->factor;
-
-        update();
-    }
-};
-
-
-class RenderMethod
-{
-public:
-    virtual ~RenderMethod() {}
-    virtual void* prepare(const Shape& shape, void* data, const RenderTransform* transform, RenderUpdateFlag flags) = 0;
-    virtual bool dispose(const Shape& shape, void *data) = 0;
-    virtual bool render(const Shape& shape, void *data) = 0;
-    virtual bool clear() = 0;
-    virtual uint32_t ref() = 0;
-    virtual uint32_t unref() = 0;
-};
-
-struct RenderInitializer
-{
-    RenderMethod* pInst = nullptr;
-    uint32_t refCnt = 0;
-    bool initialized = false;
-
-    static bool init(RenderInitializer& renderInit, RenderMethod* engine)
-    {
-        assert(engine);
-        if (renderInit.pInst || renderInit.refCnt > 0) return false;
-        renderInit.pInst = engine;
-        renderInit.refCnt = 0;
-        renderInit.initialized = true;
-        return true;
-    }
-
-    static bool term(RenderInitializer& renderInit)
-    {
-        if (!renderInit.pInst || !renderInit.initialized) return false;
-
-        renderInit.initialized = false;
-
-        //Still it's refered....
-        if (renderInit.refCnt > 0) return  true;
-        delete(renderInit.pInst);
-        renderInit.pInst = nullptr;
-
-        return true;
-    }
-
-    static uint32_t unref(RenderInitializer& renderInit)
-    {
-        assert(renderInit.refCnt > 0);
-        --renderInit.refCnt;
-
-        //engine has been requested to termination
-        if (!renderInit.initialized && renderInit.refCnt == 0) {
-            if (renderInit.pInst) {
-                delete(renderInit.pInst);
-                renderInit.pInst = nullptr;
-            }
-        }
-        return renderInit.refCnt;
-    }
-
-    static RenderMethod* inst(RenderInitializer& renderInit)
-    {
-        assert(renderInit.pInst);
-        return renderInit.pInst;
-    }
-
-    static uint32_t ref(RenderInitializer& renderInit)
-    {
-        return ++renderInit.refCnt;
-    }
-
-};
-
-}
-
-#endif //_TVG_RENDER_COMMON_H_