/* * \brief Support functions for drawing outlined labels * \author Norman Feske * \date 2006-08-22 */ /* * Copyright (C) 2006-2013 Genode Labs GmbH * * This file is part of the Genode OS framework, which is distributed * under the terms of the GNU General Public License version 2. */ #ifndef _DRAW_LABEL_H_ #define _DRAW_LABEL_H_ extern Font default_font; /* * Gap between session label and view title in pixels */ enum { LABEL_GAP = 5 }; /** * Draw black outline of string */ inline void draw_string_outline(Canvas &canvas, Point pos, const char *s) { for (int j = -1; j <= 1; j++) for (int i = -1; i <= 1; i++) if (i || j) canvas.draw_string(pos + Point(i, j), default_font, BLACK, s); } /** * Return bounding box of composed label displayed with the default font * * \param sl session label string * \param vt view title string */ inline Area label_size(const char *sl, const char *vt) { return Area(default_font.str_w(sl) + LABEL_GAP + default_font.str_w(vt) + 2, default_font.str_h(sl) + 2); } /** * Draw outlined view label * * View labels are composed of two parts: the session label and the view title. * The unforgeable session label is defined on session creation by system * policy. In contrast, the view title can individually be defined by the * application. */ static void draw_label(Canvas &canvas, Point pos, const char *session_label, Color session_label_color, const char *view_title, Color view_title_color) { pos = pos + Point(1, 1); draw_string_outline(canvas, pos, session_label); canvas.draw_string(pos, default_font, session_label_color, session_label); pos = pos + Point(default_font.str_w(session_label) + LABEL_GAP, 0); draw_string_outline(canvas, pos, view_title); canvas.draw_string(pos, default_font, view_title_color, view_title); } #endif /* _DRAW_LABEL_H_ */