]> git.sur5r.net Git - i3/i3/commitdiff
We don't need get_string_width anymore
authorAxel Wagner <mail@merovius.de>
Fri, 17 Sep 2010 01:11:49 +0000 (03:11 +0200)
committerAxel Wagner <mail@merovius.de>
Fri, 17 Sep 2010 01:11:49 +0000 (03:11 +0200)
i3bar/include/xcb.h
i3bar/src/workspaces.c
i3bar/src/xcb.c

index 2e4b16a88a8679107d6657509e6b5f675b4b7aa6..82216f7f118c1a4b0a98c268fb9416e426869cce 100644 (file)
@@ -55,11 +55,11 @@ void draw_bars();
 void redraw_bars();
 
 /*
- * Calculate the rendered width of a string with the configured font.
+ * Predicts the length of text based on cached data.
  * The string has to be encoded in ucs2 and glyph_len has to be the length
- * of the string (in width)
+ * of the string (in glyphs).
  *
  */
-int get_string_width(xcb_char2b_t *string, int glyph_len);
+uint32_t predict_text_extents(xcb_char2b_t *text, uint32_t length);
 
 #endif
index 8ba79eecfc98f8d8b4e0f9edc52873b6ce977dac..71903fb07b4b47ff6f373fba462840a59fff6a58 100644 (file)
@@ -115,8 +115,9 @@ static int workspaces_string_cb(void *params_, const unsigned char *val, unsigne
             xcb_char2b_t *ucs2_name = (xcb_char2b_t*) convert_utf8_to_ucs2(params->workspaces_walk->name, &ucs2_len);
             params->workspaces_walk->ucs2_name = ucs2_name;
             params->workspaces_walk->name_glyphs = ucs2_len;
-            params->workspaces_walk->name_width = get_string_width(params->workspaces_walk->ucs2_name,
-                                                                   params->workspaces_walk->name_glyphs);
+            params->workspaces_walk->name_width =
+                predict_text_extents(params->workspaces_walk->ucs2_name,
+                params->workspaces_walk->name_glyphs);
 
             printf("Got Workspace %s, name_width: %d, glyphs: %d\n",
                    params->workspaces_walk->name,
index 453d5f4641188f41861b16480631da084f4fafa1..e200c5e46c1ce8cf248ea53d0ddaff385942cf05 100644 (file)
@@ -64,7 +64,9 @@ ev_io      *xcb_io;
 ev_io      *xkb_io;
 
 /*
- * Predicts the length of text based on cached data
+ * Predicts the length of text based on cached data.
+ * The string has to be encoded in ucs2 and glyph_len has to be the length
+ * of the string (in glyphs).
  *
  */
 uint32_t predict_text_extents(xcb_char2b_t *text, uint32_t length) {
@@ -396,30 +398,6 @@ void xkb_io_cb(struct ev_loop *loop, ev_io *watcher, int revents) {
     }
 }
 
-/*
- * Calculate the rendered width of a string with the configured font.
- * The string has to be encoded in ucs2 and glyph_len has to be the length
- * of the string (in width)
- *
- */
-int get_string_width(xcb_char2b_t *string, int glyph_len) {
-    xcb_query_text_extents_cookie_t cookie;
-    xcb_query_text_extents_reply_t *reply;
-    xcb_generic_error_t *error = NULL;
-    int width;
-
-    cookie = xcb_query_text_extents(xcb_connection, xcb_font, glyph_len, string);
-    reply = xcb_query_text_extents_reply(xcb_connection, cookie, &error);
-    if (error != NULL) {
-        printf("ERROR: Could not get text extents! XCB-errorcode: %d\n", error->error_code);
-        exit(EXIT_FAILURE);
-    }
-
-    width = reply->overall_width;
-    free(reply);
-    return width;
-}
-
 /*
  * Initialize xcb and use the specified fontname for text-rendering
  *