]> git.sur5r.net Git - i3/i3/commitdiff
Remove support for 32-bit visuals and RGBA colors. 1985/head
authorIngo Bürk <ingo.buerk@tngtech.com>
Sat, 10 Oct 2015 19:27:23 +0000 (21:27 +0200)
committerIngo Bürk <ingo.buerk@tngtech.com>
Sat, 10 Oct 2015 22:33:14 +0000 (00:33 +0200)
fixes #1984

i3bar/include/cairo_util.h
i3bar/src/cairo_util.c
i3bar/src/xcb.c
libi3/font.c
libi3/get_colorpixel.c

index ce1d3180df4fd00163933bfa65e4471ca2dda742..37eaa6e24c30af05319dbd77e833389208d3b1b7 100644 (file)
@@ -15,7 +15,6 @@ typedef struct color_t {
     double red;
     double green;
     double blue;
-    double alpha;
 
     /* For compatibility, we also store the colorpixel for now. */
     uint32_t colorpixel;
index e17287863cf218925dcac8b762346d0263151c78..52181aee667b98f9826ee5dc33ccf1360067a72a 100644 (file)
@@ -51,25 +51,15 @@ void cairo_surface_free(surface_t *surface) {
  *
  */
 color_t cairo_hex_to_color(const char *color) {
-    char alpha[2];
-    if (strlen(color) == strlen("#rrggbbaa")) {
-        alpha[0] = color[7];
-        alpha[1] = color[8];
-    } else {
-        alpha[0] = alpha[1] = 'F';
-    }
-
-    char groups[4][3] = {
+    char groups[3][3] = {
         {color[1], color[2], '\0'},
         {color[3], color[4], '\0'},
-        {color[5], color[6], '\0'},
-        {alpha[0], alpha[1], '\0'}};
+        {color[5], color[6], '\0'}};
 
     return (color_t){
         .red = strtol(groups[0], NULL, 16) / 255.0,
         .green = strtol(groups[1], NULL, 16) / 255.0,
         .blue = strtol(groups[2], NULL, 16) / 255.0,
-        .alpha = strtol(groups[3], NULL, 16) / 255.0,
         .colorpixel = get_colorpixel(color)};
 }
 
@@ -78,7 +68,7 @@ color_t cairo_hex_to_color(const char *color) {
  *
  */
 void cairo_set_source_color(surface_t *surface, color_t color) {
-    cairo_set_source_rgba(surface->cr, color.red, color.green, color.blue, color.alpha);
+    cairo_set_source_rgb(surface->cr, color.red, color.green, color.blue);
 }
 
 /**
index 2cd3bd6efbcc829b829e0bdd671b8dc5d6c1bc2c..ac9b50f98d6e28a9b9124b750cc5c21357966dc5 100644 (file)
@@ -1122,21 +1122,7 @@ char *init_xcb_early() {
 
     depth = root_screen->root_depth;
     colormap = root_screen->default_colormap;
-    visual_type = xcb_aux_find_visual_by_attrs(root_screen, -1, 32);
-    if (visual_type) {
-        depth = xcb_aux_get_depth_of_visual(root_screen, visual_type->visual_id);
-        colormap = xcb_generate_id(xcb_connection);
-        xcb_void_cookie_t cm_cookie = xcb_create_colormap_checked(xcb_connection,
-                                                                  XCB_COLORMAP_ALLOC_NONE,
-                                                                  colormap,
-                                                                  xcb_root,
-                                                                  visual_type->visual_id);
-        if (xcb_request_failed(cm_cookie, "Could not allocate colormap")) {
-            exit(EXIT_FAILURE);
-        }
-    } else {
-        visual_type = get_visualtype(root_screen);
-    }
+    visual_type = get_visualtype(root_screen);
 
     /* We draw the statusline to a seperate pixmap, because it looks the same on all bars and
      * this way, we can choose to crop it */
index e14bb08034bb6515f6da2ef0f345df59bec4ddea..9e808a8923bf0ec6c09f0bbe1031c72d3ae6c0f9 100644 (file)
@@ -29,7 +29,6 @@ static xcb_visualtype_t *root_visual_type;
 static double pango_font_red;
 static double pango_font_green;
 static double pango_font_blue;
-static double pango_font_alpha;
 
 /* Necessary to track whether the dpi changes and trigger a LOG() message,
  * which is more easily visible to users. */
@@ -124,8 +123,8 @@ static void draw_text_pango(const char *text, size_t text_len,
         pango_layout_set_text(layout, text, text_len);
 
     /* Do the drawing */
-    cairo_set_source_rgba(cr, pango_font_red, pango_font_green, pango_font_blue, pango_font_alpha);
     cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
+    cairo_set_source_rgb(cr, pango_font_red, pango_font_green, pango_font_blue);
     pango_cairo_update_layout(cr, layout);
     pango_layout_get_pixel_size(layout, NULL, &height);
     /* Center the piece of text vertically if its height is smaller than the
@@ -334,7 +333,6 @@ void set_font_colors(xcb_gcontext_t gc, uint32_t foreground, uint32_t background
             pango_font_red = ((foreground >> 16) & 0xff) / 255.0;
             pango_font_green = ((foreground >> 8) & 0xff) / 255.0;
             pango_font_blue = (foreground & 0xff) / 255.0;
-            pango_font_alpha = ((foreground >> 24) & 0xff) / 255.0;
             break;
 #endif
         default:
index 3a62a8e4949d42e7333a6c50201422ccb868934b..f81ea6c21b378a961c8f2872553e46b0918ab440 100644 (file)
  *
  */
 uint32_t get_colorpixel(const char *hex) {
-    char alpha[2];
-    if (strlen(hex) == strlen("#rrggbbaa")) {
-        alpha[0] = hex[7];
-        alpha[1] = hex[8];
-    } else {
-        alpha[0] = alpha[1] = 'F';
-    }
-
-    char strgroups[4][3] = {
+    char strgroups[3][3] = {
         {hex[1], hex[2], '\0'},
         {hex[3], hex[4], '\0'},
-        {hex[5], hex[6], '\0'},
-        {alpha[0], alpha[1], '\0'}};
+        {hex[5], hex[6], '\0'}};
     uint8_t r = strtol(strgroups[0], NULL, 16);
     uint8_t g = strtol(strgroups[1], NULL, 16);
     uint8_t b = strtol(strgroups[2], NULL, 16);
-    uint8_t a = strtol(strgroups[3], NULL, 16);
 
-    return (a << 24) | (r << 16 | g << 8 | b);
+    return (0xFF << 24) | (r << 16 | g << 8 | b);
 }