/* * Copyright (c) 2017 TOYOTA MOTOR CORPORATION * * 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 TMCAGLWM_LAYOUT_HPP #define TMCAGLWM_LAYOUT_HPP #include #include #include #include "result.hpp" #include "wayland_ivi_wm.hpp" namespace wm { struct LayoutState { int main{-1}; int sub{-1}; bool operator==(const LayoutState &b) const { return main == b.main && sub == b.sub; } bool operator!=(const LayoutState &b) const { return !(*this == b); } }; } // namespace wm class LayoutManager { public: explicit LayoutManager(); ~LayoutManager() = default; typedef std::unordered_map TypeRolCtg; typedef std::unordered_map TypeAreas; typedef std::unordered_map TypeLayouts; typedef std::unordered_map TypeLayers; int initialize(); bool updateLayout(json_object* obj, const char* new_role, const char* new_area); TypeLayers getCurrentLayers(); TypeLayers getPreviousLayers(); compositor::rect getAreaSize(const char* area); bool isLayoutChanged(const char* layer); void updateArea(const char* layer, const char* role, const char* area); private: // Disable copy and move LayoutManager(LayoutManager const &) = delete; LayoutManager &operator=(LayoutManager const &) = delete; LayoutManager(LayoutManager &&) = delete; LayoutManager &operator=(LayoutManager &&) = delete; TypeLayouts layout_define_; std::unordered_map area2size_; TypeLayers crr_layers_, prv_layers_; TypeLayers prv_layers_car_stop_; std::unordered_map is_layout_changed_; std::string getAreaName(TypeAreas area, const char* role, const char* category); int loadLayoutDb(); std::string role2App(std::string role, void* ptr); }; #endif // TMCAGLWM_LAYOUT_HPP