Author: jordi
Date: 2005-05-05 11:27:46 -0400 (Thu, 05 May 2005)
New Revision: 44088

Modified:
   trunk/libgdiplus/src/ChangeLog
   trunk/libgdiplus/src/graphics.c
   trunk/libgdiplus/src/region.c
Log:
2005-05-05 Jordi Mas i Hernandez  <[EMAIL PROTECTED]>

        * graphics.c:
                - Empty the region before working with it
                - Move printf into debug bloc
        * region.c:
                - Fixes infinite regions



Modified: trunk/libgdiplus/src/ChangeLog
===================================================================
--- trunk/libgdiplus/src/ChangeLog      2005-05-05 15:11:25 UTC (rev 44087)
+++ trunk/libgdiplus/src/ChangeLog      2005-05-05 15:27:46 UTC (rev 44088)
@@ -1,3 +1,11 @@
+2005-05-05 Jordi Mas i Hernandez  <[EMAIL PROTECTED]>
+
+       * graphics.c:
+               - Empty the region before working with it
+               - Move printf into debug bloc
+       * region.c:
+               - Fixes infinite regions
+
 2005-04-28 Jordi Mas i Hernandez  <[EMAIL PROTECTED]>
 
        * tiffcodec.c: Inits Byte and ByteCount to avoid releasing not allocated

Modified: trunk/libgdiplus/src/graphics.c
===================================================================
--- trunk/libgdiplus/src/graphics.c     2005-05-05 15:11:25 UTC (rev 44087)
+++ trunk/libgdiplus/src/graphics.c     2005-05-05 15:27:46 UTC (rev 44088)
@@ -2930,9 +2930,8 @@
                if (i % 3 == 2) {
                        printf("\n");
                }
+               printf ("curr details: x: %f y: %f wd: %f\n", 
CurrentDetail->PosX, CurrentDetail->PosY,CurrentDetail->Width);
 #endif
-
-               printf ("curr details: x: %f y: %f wd: %f\n", 
CurrentDetail->PosX, CurrentDetail->PosY,CurrentDetail->Width);
                CurrentDetail++;
                CurrentLineStart->LineLen++;
        }
@@ -3060,6 +3059,7 @@
        /* Create a region for every char range */
        for (i = 0; i < format->charRangeCount; i++) {
                range = format->charRanges [i];
+               GdipSetEmpty (regions [i]); 
 
                if (range.length > 0)
                        start = range.first;

Modified: trunk/libgdiplus/src/region.c
===================================================================
--- trunk/libgdiplus/src/region.c       2005-05-05 15:11:25 UTC (rev 44087)
+++ trunk/libgdiplus/src/region.c       2005-05-05 15:27:46 UTC (rev 44088)
@@ -127,10 +127,22 @@
         return FALSE;
 }                                                
 
+bool
+gdip_is_InfiniteRegion (GpRegion *region)
+{             
+       if (region->cnt != 1)
+              return FALSE;      
 
+       if (region->rects->X == -4194304 && region->rects->Y == -4194304 &&
+               region->rects->Width == 8388608 &&  region->rects->Height == 
8388608)
+               return TRUE;
+
+       return FALSE;
+}
+
 GpStatus
 gdip_createRegion (GpRegion **region, RegionType type, void *src)
-{
+{      
         GpRegion *result;
         GpRectF rect;
 
@@ -865,6 +877,9 @@
         if (!region || !rect)
                 return InvalidParameter;
 
+       if (gdip_is_InfiniteRegion (region))
+               return Ok;
+
         switch (combineMode) {
         case CombineModeExclude:
                 gdip_combine_exclude (region, (GpRectF *) rect, 1);
@@ -917,6 +932,9 @@
         if (!region || !region2)
                 return InvalidParameter;
 
+       if (gdip_is_InfiniteRegion (region) || gdip_is_InfiniteRegion(region2))
+               return Ok;
+
         switch (combineMode) {
         case CombineModeExclude:
                 gdip_combine_exclude (region, region2->rects, region2->cnt);   
    
@@ -979,17 +997,7 @@
       if (!region || !graphics || !result)
                 return InvalidParameter;
 
-      if (region->cnt != 1) {
-              *result = FALSE;
-              return Ok;
-      }
-
-      if (region->rects->X == -4194304 && region->rects->Y == -4194304 &&
-                region->rects->Width == 8388608 &&  region->rects->Height == 
8388608)
-                *result = TRUE;
-      else
-                *result = FALSE;
-
+      *result = gdip_is_InfiniteRegion (region);
       return Ok;
 }
 

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to