css_bg.w, css_bg.h, dp_bg.left(), dp_bg.top(), dp_bg.width(), dp_bg.height());
double scale = static_cast<double>(dp_bg.height()) / css_bg.h;
- this->lc->setupArea(scale);
+ this->lc->setupArea(dp_bg, scale);
/* this->display->add_global_handler(
"wl_output", [this](wl_registry *r, uint32_t name, uint32_t v) {
return area2size[area];
}
-void LayerControl::setupArea(double scaling)
+void LayerControl::setupArea(const rectangle& base_rct, double scaling)
{
struct rect rct;
this->scaling = scaling;
for (auto &i : this->area2size)
{
- i.second.x = static_cast<int>(scaling * i.second.x + 0.5);
- i.second.y = static_cast<int>(scaling * i.second.y + 0.5);
+ i.second.x = base_rct.left() + static_cast<int>(scaling * i.second.x + 0.5);
+ i.second.y = base_rct.top() + static_cast<int>(scaling * i.second.y + 0.5);
i.second.w = static_cast<int>(scaling * i.second.w + 0.5);
i.second.h = static_cast<int>(scaling * i.second.h + 0.5);
// Layout Manager
// WMError ret = this->setLayerSize(layer, action.area);
auto rect = this->getAreaSize(action.area);
+ HMI_DEBUG("Set layout %d, %d, %d, %d",rect.x, rect.y, rect.w, rect.h);
ilmErrorTypes err = ilm_layerSetDestinationRectangle(layer, rect.x, rect.y, rect.w, rect.h);
for(auto &wm_layer: this->wm_layers)
{
std::shared_ptr<WMLayer> getWMLayer(unsigned layer);
// std::shared_ptr<WMLayer> getWMLayer(std::string layer_name);
struct rect getAreaSize(const std::string& area);
- void setupArea(double scaling);
+ void setupArea(const rectangle& base_rct, double scaling);
Screen getScreenInfo();
double scale();
// void setRenderOrder(const std::vector<unsigned> layer_render_order);