X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Flayers.hpp;h=c384895aa2bb3e0ccb01877730e5a1a2f0499363;hb=5c74a62af029d1138416a76a6d44d1711ce97ff6;hp=6ecf2e73a7e519a5a278b923c8fec18001b78268;hpb=2357c437b260d0d8cb927e6878f1226bfafb9d0b;p=apps%2Fagl-service-windowmanager-2017.git diff --git a/src/layers.hpp b/src/layers.hpp index 6ecf2e7..c384895 100644 --- a/src/layers.hpp +++ b/src/layers.hpp @@ -17,12 +17,9 @@ #ifndef TMCAGLWM_LAYERS_H #define TMCAGLWM_LAYERS_H -#include - -#include -#include #include +#include "../include/json.hpp" #include "layout.hpp" #include "result.hpp" #include "wayland_ivi_wm.hpp" @@ -68,6 +65,54 @@ struct layer json to_json() const; }; +/* + * WMLayer is the logical container of application/system application(such like HomeScreen) + * This is handled by Window Manager to classify the application. + */ +class WMLayer +{ + public: + enum MANAGEMENT_TYPE + { + TILE, + STACK + }; + + explicit WMLayer(const std::string& name, MANAGEMENT_TYPE type, unsigned begin, unsigned end); + virtual ~WMLayer(); + + const std::string& layerName(); + MANAGEMENT_TYPE layerType(); + void appendRole(const std::string& name); + void appendArea(const std::string& area); + +/* 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 list); */ + + private: + std::string _name = ""; // Layer name + MANAGEMENT_TYPE _type; + std::vector _roles; + unsigned _id_begin; + unsigned _id_end; + // current holding apps. This dynamically changes. + std::vector _ivi_layer_id_list; + // std::map _render_order; +}; + +class LayerManager +{ + public: + void setRenderOrder(const std::vector layer_render_order); + std::vector getAllRenderOrder(); + std::vector>& getAllLayers(); + std::vector getRenderOrder(const std::string& layer_name); +}; + struct layer_map { using json = nlohmann::json; @@ -117,6 +162,14 @@ struct layer_map } json to_json() const; + compositor::rect getAreaSize(const std::string &area); + const compositor::rect getScaleDestRect(int output_w, int output_h, const std::string &aspect_setting); + int loadAreaDb(); + + private: + std::unordered_map area2size; + + static const char *kDefaultAreaDb; }; struct result to_layer_map(nlohmann::json const &j);