diff options
Diffstat (limited to 'src/wm_layer.hpp')
-rw-r--r-- | src/wm_layer.hpp | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/src/wm_layer.hpp b/src/wm_layer.hpp new file mode 100644 index 0000000..ac74530 --- /dev/null +++ b/src/wm_layer.hpp @@ -0,0 +1,95 @@ +/* + * 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 WM_LAYERS_H +#define WM_LAYERS_H + +#include <string> +#include <vector> +#include <unordered_map> +#include <memory> +#include "wm_error.hpp" + +namespace wm +{ + +class LayerState +{ + public: + LayerState(); + ~LayerState() = default; + private: + std::vector<unsigned> _ivi_layer_id_list; + std::unordered_map<std::string, unsigned> area2ivi_layer_id; + // std::map<std::string, unsigned> _render_order; +}; + +class LayerSetting +{ + public: + enum MANAGEMENT_TYPE + { + TILE, + STACK + }; + + explicit LayerSetting(const std::string& name, MANAGEMENT_TYPE type, unsigned begin, unsigned end); + ~LayerSetting() = default; + + const std::string& layerName() { return this->name; } + MANAGEMENT_TYPE layerType() { return this->type; }; + void appendRole(const std::string& role); + void appendArea(const std::string& area); + unsigned idBegin() { return this->id_begin; } + unsigned idEnd() { return this->id_end; } + unsigned getNewLayerID(const std::string& role); + void removeLayerID(unsigned id); + +/* unsigned getNewID(const std::string& role); + void remove(unsigned ivi_layer_id); + void clear(); + bool attach(unsigned ivi_layer_id, const std::string& area); + void stack(unsigned ivi_layer_id, const std::string& area); + bool updateRenderOrder(const std::vector<unsigned> list); */ + + private: + std::string name = ""; // Layer name + MANAGEMENT_TYPE type; + std::vector<std::string> role_list; + std::vector<std::string> area_list; + std::vector<unsigned> id_list; + unsigned id_begin; + unsigned id_end; +}; + +class WMLayer +{ + public: + WMLayer(); + ~WMLayer() = default; + unsigned getNewLayerID(const std::string& role); + LayerState getLayerState() const { return before_state; } + WMError setLayerState(const LayerState& l); + bool checkIDBelongTo(unsigned id); + private: + LayerState before_state; + LayerState state; + std::unique_ptr<LayerSetting> setting; +}; + +} // namespace wm + +#endif // WM_LAYERS_H |