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