]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkregion-generic.h
Updated German translation.
[~andy/gtk] / gdk / gdkregion-generic.h
index 017ee43e2c8826f618b98ba6572e809b1a9dd1c3..9f510621e794f1492cb98d45582a34e964ee4268 100644 (file)
@@ -45,8 +45,6 @@ SOFTWARE.
 #ifndef __GDK_REGION_GENERIC_H__
 #define __GDK_REGION_GENERIC_H__
 
-#include "gdktypes.h"
-
 typedef GdkSegment GdkRegionBox;
 
 /* 
@@ -85,13 +83,28 @@ struct _GdkRegion
               (idRect)->extents.y2 = (r)->y2;\
         }
 
+#define GROWREGION(reg, nRects) {                                         \
+         if ((nRects) == 0) {                                             \
+            if ((reg)->rects != &(reg)->extents) {                        \
+             g_free ((reg)->rects);                                       \
+              (reg)->rects = &(reg)->extents;                             \
+           }                                                              \
+         }                                                                \
+         else if ((reg)->rects == &(reg)->extents) {                      \
+            (reg)->rects = g_new (GdkRegionBox, (nRects));                \
+            (reg)->rects[0] = (reg)->extents;                              \
+          }                                                                \
+          else                                                             \
+            (reg)->rects = g_renew (GdkRegionBox, (reg)->rects, (nRects)); \
+         (reg)->size = (nRects);                                          \
+       }                                
+
 /*
  *   Check to see if there is enough memory in the present region.
  */
 #define MEMCHECK(reg, rect, firstrect){                                                 \
         if ((reg)->numRects >= ((reg)->size - 1)) {                             \
-          (firstrect) = g_renew (GdkRegionBox, (firstrect), 2 * (reg)->size);    \
-          (reg)->size *= 2;                                                     \
+          GROWREGION(reg,2*(reg)->size);                                         \
           (rect) = &(firstrect)[(reg)->numRects];                               \
          }                                                                      \
        }