From 4eec91fcd22a1ff5473f3721feed1f15095682e3 Mon Sep 17 00:00:00 2001 From: Marcus Fritzsch Date: Fri, 28 Jul 2017 00:36:46 +0200 Subject: layers: move get_layer_for_surface() to .cpp Signed-off-by: Marcus Fritzsch --- src/layers.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/layers.cpp') diff --git a/src/layers.cpp b/src/layers.cpp index 8bd9b8f..07586ad 100644 --- a/src/layers.cpp +++ b/src/layers.cpp @@ -2,8 +2,10 @@ // Created by m on 7/27/17. // -#include "layers.hpp" +#include + #include "json_helper.hpp" +#include "layers.hpp" #include "util.hpp" namespace wm { @@ -45,4 +47,25 @@ struct result to_surface_id_to_layer_map( } } +// Helper to allow std::lower_bound with a int key only +inline bool + operator<(struct surface_id_to_layer const &a, int b) { + return a.id_max < b; +} + +optional surface_id_to_layer_map::get_layer_for_surface(int surface_id) { + auto i = std::lower_bound(std::cbegin(this->mapping), + std::cend(this->mapping), surface_id); + + if (i != this->mapping.end()) { + // std::less only checks for surface_id_to_layer::id_max, so check + // that we are actually inside of an interval here. + if (i->id_min <= surface_id) { + return optional(i->layer_id); + } + } + + return nullopt; +} + } // namespace wm -- cgit 1.2.3-korg