diff options
author | Sebastian Leske <Sebastian.Leske@sleske.name> | 2016-01-11 23:26:14 +0100 |
---|---|---|
committer | Sebastian Leske <Sebastian.Leske@sleske.name> | 2016-01-11 23:26:14 +0100 |
commit | 12d8bcaf432644b9a926f531f47006fb570f9309 (patch) | |
tree | fefcb9e2a9de62cc0d36f38f958c8465cd2da73f | |
parent | 77ad8196a9b70d2fe1780685425e838334892e62 (diff) | |
parent | 973cba574582138838ea8a95448d4647a12563a7 (diff) | |
download | navit-12d8bcaf432644b9a926f531f47006fb570f9309.tar.gz |
Merge pull request #49 from metalstrolch/to_upstreamR6533
Add:osd:Make osd button accept h and w props.
-rw-r--r-- | navit/osd/core/osd_core.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/navit/osd/core/osd_core.c b/navit/osd/core/osd_core.c index cd19aeb55..922947ab3 100644 --- a/navit/osd/core/osd_core.c +++ b/navit/osd/core/osd_core.c @@ -1457,7 +1457,7 @@ osd_button_draw(struct osd_priv_common *opc, struct navit *nav) if (this->use_overlay) { struct graphics_image *img; - img=graphics_image_new(opc->osd_item.gr, this->src); + img=graphics_image_new_scaled(opc->osd_item.gr, this->src, opc->osd_item.w, opc->osd_item.h); osd_button_adjust_sizes(opc, img); p.x=(opc->osd_item.w-img->width)/2; p.y=(opc->osd_item.h-img->height)/2; @@ -1467,7 +1467,7 @@ osd_button_draw(struct osd_priv_common *opc, struct navit *nav) } else { struct graphics *gra; gra = navit_get_graphics(nav); - this->img = graphics_image_new(gra, this->src); + this->img = graphics_image_new_scaled(gra, this->src, opc->osd_item.w, opc->osd_item.h); if (!this->img) { dbg(lvl_warning, "failed to load '%s'\n", this->src); @@ -1494,18 +1494,32 @@ osd_button_init(struct osd_priv_common *opc, struct navit *nav) struct osd_button *this = (struct osd_button *)opc->data; struct graphics *gra = navit_get_graphics(nav); + + /* translate properties to real size */ + osd_std_calculate_sizes(&opc->osd_item, navit_get_width(nav), navit_get_height(nav)); + /* most graphics plugins cannot accept w=0 or h=0. They require special w=-1 or h=-1 for "no size"*/ + if((opc->osd_item.w <= 0) || (opc->osd_item.h <=0)) + { + opc->osd_item.w = -1; + opc->osd_item.h = -1; + } dbg(lvl_debug, "enter\n"); - this->img = graphics_image_new(gra, this->src); + dbg(lvl_debug, "Get: %s, %d, %d, %d, %d\n", this->src, opc->osd_item.rel_w, opc->osd_item.rel_h, opc->osd_item.w, opc->osd_item.h); + this->img = graphics_image_new_scaled(gra, this->src, opc->osd_item.w, opc->osd_item.h); if (!this->img) { dbg(lvl_warning, "failed to load '%s'\n", this->src); return; } + else + { + dbg(lvl_debug,"Got %s: %d, %d\n", this->src, this->img->width, this->img->height); + } osd_button_adjust_sizes(opc, this->img); if (this->use_overlay) { struct graphics_image *img; struct point p; osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc); - img=graphics_image_new(opc->osd_item.gr, this->src); + img=graphics_image_new_scaled(opc->osd_item.gr, this->src, opc->osd_item.w, opc->osd_item.h); p.x=(opc->osd_item.w-this->img->width)/2; p.y=(opc->osd_item.h-this->img->height)/2; osd_fill_with_bgcolor(&opc->osd_item); @@ -1550,7 +1564,7 @@ osd_button_set_attr(struct osd_priv_common *opc, struct attr* attr) } nav = opc->osd_item.navit; gra = navit_get_graphics(nav); - this_->img = graphics_image_new(gra, this_->src); + this_->img = graphics_image_new_scaled(gra, this_->src, opc->osd_item.w, opc->osd_item.h); if (!this_->img) { dbg(lvl_warning, "failed to load '%s'\n", this_->src); return 0; |