]> Dogcows Code - chaz/openbox/commitdiff
add RrColorGC
authorDana Jansens <danakj@orodu.net>
Sun, 31 Aug 2003 17:02:49 +0000 (17:02 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 31 Aug 2003 17:02:49 +0000 (17:02 +0000)
add a LineArt texture type for drawing a line, this is used for drawing the menu separators

render/render.c
render/render.h

index 4735ec51a948a385a1d6116ecfcc474b9dddc938..1351cb363e887cedf33d836d4c0e8b68db04d1c7 100644 (file)
@@ -97,18 +97,35 @@ void RrPaint(RrAppearance *l, Window win, gint w, gint h)
                                            RrColormap(l->inst));
             }
             RrFontDraw(l->xftdraw, &l->texture[i].data.text, &tarea);
-        break;
+            break;
+        case RR_TEXTURE_LINE_ART:
+            if (!transferred) {
+                transferred = 1;
+                if (l->surface.grad != RR_SURFACE_SOLID)
+                    pixel_data_to_pixmap(l, 0, 0, w, h);
+            }
+            g_message("%d %d -> %d %d",
+                      l->texture[i].data.lineart.x1,
+                      l->texture[i].data.lineart.y1,
+                      l->texture[i].data.lineart.x2,
+                      l->texture[i].data.lineart.y2);
+            XDrawLine(RrDisplay(l->inst), l->pixmap,
+                      RrColorGC(l->texture[i].data.lineart.color),
+                      l->texture[i].data.lineart.x1,
+                      l->texture[i].data.lineart.y1,
+                      l->texture[i].data.lineart.x2,
+                      l->texture[i].data.lineart.y2);
+            break;
         case RR_TEXTURE_MASK:
             if (!transferred) {
                 transferred = 1;
                 if (l->surface.grad != RR_SURFACE_SOLID)
                     pixel_data_to_pixmap(l, 0, 0, w, h);
             }
-            if (l->texture[i].data.mask.color->gc == None)
-                RrColorAllocateGC(l->texture[i].data.mask.color);
             RrPixmapMaskDraw(l->pixmap, &l->texture[i].data.mask, &tarea);
-        break;
+            break;
         case RR_TEXTURE_RGBA:
+            g_assert(!transferred);
             RrImageDraw(l->surface.pixel_data,
                         &l->texture[i].data.rgba, &tarea);
         break;
@@ -121,7 +138,6 @@ void RrPaint(RrAppearance *l, Window win, gint w, gint h)
             pixel_data_to_pixmap(l, 0, 0, w, h);
     }
 
-
     XSetWindowBackgroundPixmap(RrDisplay(l->inst), win, l->pixmap);
     XClearWindow(RrDisplay(l->inst), win);
     if (oldp) XFreePixmap(RrDisplay(l->inst), oldp);
@@ -288,6 +304,12 @@ void RrMinsize(RrAppearance *l, gint *w, gint *h)
             *w += MAX(*w, l->texture[i].data.rgba.width);
             *h += MAX(*h, l->texture[i].data.rgba.height);
             break;
+        case RR_TEXTURE_LINE_ART:
+            *w += MAX(*w, MAX(l->texture[i].data.lineart.x1,
+                              l->texture[i].data.lineart.x2));
+            *h += MAX(*h, MAX(l->texture[i].data.lineart.y1,
+                              l->texture[i].data.lineart.y2));
+            break;
         }
     }
 
index 3ddde716ee42b6ec8f0cfb8bc08a658f8ab267b8..19f0989eff4c8b9463ddbbf6d333252d66366337 100644 (file)
@@ -14,6 +14,7 @@ typedef struct _RrTexture          RrTexture;
 typedef struct _RrTextureMask      RrTextureMask;
 typedef struct _RrTextureRGBA      RrTextureRGBA;
 typedef struct _RrTextureText      RrTextureText;
+typedef struct _RrTextureLineArt   RrTextureLineArt;
 typedef struct _RrPixmapMask       RrPixmapMask;
 typedef struct _RrInstance         RrInstance;
 typedef struct _RrColor            RrColor;
@@ -47,6 +48,7 @@ typedef enum {
     RR_TEXTURE_NONE,
     RR_TEXTURE_MASK,
     RR_TEXTURE_TEXT,
+    RR_TEXTURE_LINE_ART,
     RR_TEXTURE_RGBA
 } RrTextureType;
 
@@ -103,10 +105,19 @@ struct _RrTextureRGBA {
     RrPixel32 *cache;
 };
 
+struct _RrTextureLineArt {
+    RrColor *color;
+    gint x1;
+    gint y1;
+    gint x2;
+    gint y2;
+};
+
 union _RrTextureData {
     RrTextureRGBA rgba;
     RrTextureText text;
     RrTextureMask mask;
+    RrTextureLineArt lineart;
 };
 
 struct _RrTexture {
@@ -163,6 +174,7 @@ gint     RrColorRed   (const RrColor *c);
 gint     RrColorGreen (const RrColor *c);
 gint     RrColorBlue  (const RrColor *c);
 gulong   RrColorPixel (const RrColor *c);
+GC       RrColorGC    (RrColor *c);
 
 RrAppearance *RrAppearanceNew  (const RrInstance *inst, gint numtex);
 RrAppearance *RrAppearanceCopy (RrAppearance *a);
This page took 0.031328 seconds and 4 git commands to generate.