TextRenderer: added text renderer for debugging
authorTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Wed, 12 Dec 2012 13:40:17 +0000 (05:40 -0800)
committerTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Wed, 9 Jan 2013 13:34:03 +0000 (05:34 -0800)
the text  renderer does not provide any graphical representation of
the LayerManagement scene.

all calls to this renderer are logged, but no further processing
takes place.

Signed-off-by: Timo Lotterbach <timo.lotterbach@bmw-carit.de>
CMakeLists.txt
LayerManagerPlugins/Renderers/Platform/TextRenderer/CMakeLists.txt [new file with mode: 0644]
LayerManagerPlugins/Renderers/Platform/TextRenderer/include/TextRenderer.h [new file with mode: 0644]
LayerManagerPlugins/Renderers/Platform/TextRenderer/src/TextRenderer.cpp [new file with mode: 0644]

index acdf8c7..443fe3f 100644 (file)
@@ -60,6 +60,8 @@ option (WITH_COMMUNICATOR_GEN "Build Generic Communicator Plugin"
 
 option (WITH_SYSTEMD        "Build with native systemd integration"               OFF)
 
+option (WITH_TEXT_RENDERER  "Build renderer renderer (only logging)"              OFF)
+
 
 #==============================================================================
 # Internal global settings not available to user
@@ -180,6 +182,10 @@ if (WITH_X11_GLES)
     add_subdirectory (LayerManagerPlugins/Renderers/Platform/X11GLESRenderer)
 endif(WITH_X11_GLES)
 
+if (WITH_TEXT_RENDERER)
+    add_subdirectory (LayerManagerPlugins/Renderers/Platform/TextRenderer)
+endif(WITH_TEXT_RENDERER)
+
 if (WITH_SERVICE_BIN OR WITH_CLIENT_LIB)
     add_subdirectory (LayerManagerPlugins/IpcModules)
 
diff --git a/LayerManagerPlugins/Renderers/Platform/TextRenderer/CMakeLists.txt b/LayerManagerPlugins/Renderers/Platform/TextRenderer/CMakeLists.txt
new file mode 100644 (file)
index 0000000..4ad0aa3
--- /dev/null
@@ -0,0 +1,57 @@
+############################################################################
+#
+# Copyright 2010-2012 BMW Car IT GmbH
+#
+#
+# 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.
+#
+############################################################################
+
+cmake_minimum_required (VERSION 2.6)
+
+project(TextRenderer)
+
+find_package (Threads)
+
+include_directories(
+    include
+    ../../Base/include
+    ../../Graphic/include
+    ${CMAKE_SOURCE_DIR}/config
+    ${CMAKE_SOURCE_DIR}/LayerManagerService/include
+    ${CMAKE_SOURCE_DIR}/LayerManagerUtils/include
+)
+
+set(SRC_FILES
+    ../../Base/src/BaseRenderer.cpp
+    src/TextRenderer.cpp
+)
+
+set(LIBS
+    ${LIBS}
+    ${CMAKE_THREAD_LIBS_INIT}
+    LayerManagerUtils
+)
+
+add_library(${PROJECT_NAME} SHARED ${SRC_FILES})
+
+target_link_libraries(${PROJECT_NAME} ${LIBS})
+
+add_dependencies(${PROJECT_NAME}
+    LayerManagerService
+    LayerManagerUtils
+)
+
+install(TARGETS ${PROJECT_NAME}
+        DESTINATION lib/layermanager/renderer
+)
diff --git a/LayerManagerPlugins/Renderers/Platform/TextRenderer/include/TextRenderer.h b/LayerManagerPlugins/Renderers/Platform/TextRenderer/include/TextRenderer.h
new file mode 100644 (file)
index 0000000..7bf8f09
--- /dev/null
@@ -0,0 +1,52 @@
+/***************************************************************************
+*
+* Copyright 2010 BMW Car IT GmbH
+*
+*
+* 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 DEBUGRENDERER_H_
+#define DEBUGRENDERER_H_
+
+#include "LayerList.h"
+#include "BaseRenderer.h"
+
+class TextRenderer : public BaseRenderer
+{
+public:
+       TextRenderer(Scene* pScene);
+    virtual ~TextRenderer();
+    void doScreenShot(std::string fileToSave);
+    void doScreenShotOfLayer(std::string fileToSave, uint id);
+    void doScreenShotOfSurface(std::string fileToSave, uint id, uint layer_id);
+    uint getNumberOfHardwareLayers(uint screenID);
+    uint* getScreenResolution(uint screenID);
+    uint* getScreenIDs(uint* length);
+    bool start(int, int, const char*);
+    void stop();
+
+    void signalWindowSystemRedraw();
+    void forceCompositionWindowSystem();
+
+    virtual bool setOptimizationMode(OptimizationType id, OptimizationModeType mode);
+    virtual bool getOptimizationMode(OptimizationType id, OptimizationModeType* mode);
+
+private:
+    uint m_width;
+    uint m_height;
+    OptimizationModeType m_optimizationMode;
+};
+
+#endif /* DEBUGRENDERER_H_ */
diff --git a/LayerManagerPlugins/Renderers/Platform/TextRenderer/src/TextRenderer.cpp b/LayerManagerPlugins/Renderers/Platform/TextRenderer/src/TextRenderer.cpp
new file mode 100644 (file)
index 0000000..3462237
--- /dev/null
@@ -0,0 +1,146 @@
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* 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.
+*
+****************************************************************************/
+
+#include "TextRenderer.h"
+#include "config.h"
+#include "Log.h"
+#include <string.h>
+#include <fstream>
+
+TextRenderer::TextRenderer(Scene* pScene)
+: BaseRenderer(pScene)
+, m_width(0)
+, m_height(0)
+{
+    LOG_DEBUG("TextRenderer", "created");
+}
+
+bool TextRenderer::start(int width, int height, const char* displayname)
+{
+    m_height = height;
+    m_width = width;
+
+    LOG_DEBUG("TextRenderer", "start("
+              << "width=" << width
+              << ", height=" << height
+              << ", displayname=" << displayname << ")");
+    return true;
+}
+
+void TextRenderer::stop()
+{
+    LOG_DEBUG("TextRenderer", "stop");
+}
+
+TextRenderer::~TextRenderer()
+{
+    LOG_DEBUG("TextRenderer", "destroyed");
+}
+
+void TextRenderer::doScreenShot(std::string fileToSave)
+{
+    LOG_DEBUG("TextRenderer", "doScreenShot("
+              << "fileToSave=" << fileToSave << ")");
+    std::fstream file(fileToSave.c_str());
+}
+
+void TextRenderer::doScreenShotOfLayer(std::string fileToSave,uint id)
+{
+    LOG_DEBUG("TextRenderer", "doScreenShotOfLayer("
+              << "fileToSave=" << fileToSave
+              << ", id=" << id << ")");
+    std::fstream file(fileToSave.c_str());
+}
+
+void TextRenderer::doScreenShotOfSurface(std::string fileToSave, uint id, uint layer_id)
+{
+    LOG_DEBUG("TextRenderer", "doScreenShotOfSurface("
+              << "fileToSave=" << fileToSave
+              << ", id=" << id
+              << ", layer_id=" << layer_id << ")");
+    std::fstream file(fileToSave.c_str());
+}
+
+uint TextRenderer::getNumberOfHardwareLayers(uint screenID)
+{
+    LOG_DEBUG("TextRenderer", "getNumberOfHardwareLayers(screenID=" << screenID << ")");
+    return 0;
+}
+
+uint* TextRenderer::getScreenResolution(uint screenID)
+{
+    LOG_DEBUG("TextRenderer", "getScreenResolution(screenID=" << screenID << ")");
+
+    uint * resolution = new uint[2];
+    resolution[0] = m_width;
+    resolution[1] = m_height;
+    return resolution;
+}
+
+uint* TextRenderer::getScreenIDs(uint* length)
+{
+    LOG_DEBUG("TextRenderer", "getScreenIDs");
+
+    // Screens in X11 can be addresses/accessed by just the number - we must only know how many there are
+    uint numberOfScreens = 1;
+    uint* screenIDS = new uint[numberOfScreens];
+    for (uint i = 0; i < numberOfScreens; i++)
+    {
+        screenIDS[i] = i;
+    }
+    *length = numberOfScreens;
+    return screenIDS;
+}
+
+void TextRenderer::signalWindowSystemRedraw()
+{
+    LOG_DEBUG("TextRenderer", "signalWindowSystemRedraw");
+}
+
+void TextRenderer::forceCompositionWindowSystem()
+{
+    LOG_DEBUG("TextRenderer", "forceCompositionWindowSystem");
+}
+
+bool TextRenderer::setOptimizationMode(OptimizationType id, OptimizationModeType mode)
+{
+    LOG_DEBUG("TextRenderer", "setOptimizationMode("
+              << "id=" << id
+              << ", mode=" << mode << ")");
+    m_optimizationMode = mode;
+    return true;
+}
+
+bool TextRenderer::getOptimizationMode(OptimizationType id, OptimizationModeType* mode)
+{
+    (void)mode;
+    LOG_DEBUG("TextRenderer", "getOptimizationMode("
+              << "id=" << id << ")");
+    *mode = m_optimizationMode;
+    return true;
+}
+
+extern "C" IRenderer* createTextRenderer(Scene* pScene) {
+    return new TextRenderer(pScene);
+}
+
+extern "C" void destroyTextRenderer(TextRenderer* p)
+{
+    delete p;
+}