[gs-cvs] rev 7509 - in trunk/gs: doc src

leonardo at ghostscript.com leonardo at ghostscript.com
Thu Dec 14 13:40:08 PST 2006


Author: leonardo
Date: 2006-12-14 13:40:07 -0800 (Thu, 14 Dec 2006)
New Revision: 7509

Modified:
   trunk/gs/doc/pscet_status.txt
   trunk/gs/src/gxshade.c
   trunk/gs/src/gxshade.h
   trunk/gs/src/gxshade4.c
Log:
Fix (shadings) : Align coordinate data and color data to byte boundary (continued).

DETAILS :

Debugged with CET 12-14O.PS page 2.
The recent patch for the subject appears incomplete.
After debugging with more tests (ShadingType 5), 
the parameter align_color_data appears always false and goes away.

EXPECTED DIFFERENCES :

None.


Modified: trunk/gs/doc/pscet_status.txt
===================================================================
--- trunk/gs/doc/pscet_status.txt	2006-12-14 20:24:33 UTC (rev 7508)
+++ trunk/gs/doc/pscet_status.txt	2006-12-14 21:40:07 UTC (rev 7509)
@@ -1062,13 +1062,17 @@
 		-		- 
 		Test12: ok	Fixed by rev 7175.
 
-09-47J-1  DIFF	graphic column 1 row 1 different clipping Assign: Ray
+09-47J-1  AOK	Analyzed by Igor.
+                Tek misses an imagemask or a character with a shading color.
+                See explanation in 09-47J-6.
 		cpsi/09-47J-1  missing
 
 09-47J-10 OK	Verified visually against Tek hardcopy by Sabrina
 		cpsi/09-47J-10  missing
 
-09-47J-2  DIFF	graphic column 1 row 1 different clipping Assign: Ray
+09-47J-2  AOK	Analyzed by Igor.
+                Tek misses an imagemask or a character with a shading color.
+                See explanation in 09-47J-6.
 		cpsi/09-47J-2  missing
 
 09-47J-3  OK	Verified visually against Tek hardcopy by Sabrina
@@ -1077,30 +1081,54 @@
 09-47J-4  OK	Verified visually against Tek hardcopy by Sabrina
 		cpsi/09-47J-4  missing
 
-09-47J-5  DIFF	missing several graphics Assign: Ray
+09-47J-5  AOK	Analyzed by Igor.
+                Tek misses an imagemask or a character with a shading color.
+                The bug is well visible in Test03 : The triangle is painted with the shading color,
+                then the character is painted with the shading Background,
+                which overlaps a part of the triangle, and then the character is 
+                not painted with the shading color.
 		cpsi/09-47J-5  missing
 
-09-47J-6  DIFF	missing several graphics Assign: Ray
+09-47J-6  AOK	Analyzed by Igor.
+                Tek misses an imagemask or a character with a shading color.
+                The bug is well visible in Test03 : The triangle is painted with the shading color,
+                then the character is painted with the shading Background,
+                which overlaps a part of the triangle, and then the character is 
+                not painted with the shading color.
 		cpsi/09-47J-6  missing
 
 09-47J-4  OK	Verified visually against Tek hardcopy by Sabrina
 		cpsi/09-47J-7  missing
 
-09-47J-8  DIFF	graphic column 1 row 1 different clipping Assign: Ray
+09-47J-8  AOK	Analyzed by Igor.
+                Tek misses an imagemaskmask or a character with a shading color.
 		cpsi/09-47J-8  missing
 
 09-47J-4  OK	Verified visually against Tek hardcopy by Sabrina
 		cpsi/09-47J-9  missing
 
-09-47K-1  DIFF	graphic column 1 row 1 different clipping Assign: Ray
+09-47K-1  AOK	Analyzed by Igor.
+                Tek yields a rangecheck while rendering 
+                an imagemask or a character with a shading color.
+                and misses the rest of graphics.
+                I don't see any legal reason for rangecheck. 
+                See explanation in 09-47J-6.
 		cpsi/09-47K-1  missing
 
-09-47K-2  DIFF	graphic column 1 row 1 different clipping Assign: Ray
-		Improved with rev 7211, still needs to veryfy with Tek.
+09-47K-2  AOK	Analyzed by Igor.
+                Tek yields a rangecheck while rendering 
+                an imagemask or a character with a shading color.
+                and misses the rest of graphics.
+                I don't see any legal reason for rangecheck.
+                See explanation in 09-47J-6.
 		cpsi/09-47K-2  missing
 
-09-47K-3  DIFF	graphic column 1 row 1 different clipping Assign: Ray
-		Improved with rev 7211, still needs to veryfy with Tek.
+09-47K-3  AOK	Analyzed by Igor.
+                Tek yields a rangecheck while rendering 
+                an imagemask or a character with a shading color.
+                and misses the rest of graphics.
+                I don't see any legal reason for rangecheck.
+                See explanation in 09-47J-6.
 		cpsi/09-47K-3  missing
 
 09-47K-4  OK	Verified visually against Tek hardcopy by Sabrina
@@ -2646,8 +2674,8 @@
 
 12-14O-1  OK	Minor differences in positions and character shapes - ADC
 
-12-14O-2  DIFF	GS has wrong colors, Test05, Test06. GS has red-green shading
-		CPSI has green-blue shading. (as of rev 7211) Assign: Igor
+12-14O-2  DIFF  test12: The yellow horizontal bar must not appear.
+		Assigned to Igor.
 
 12-14O-3  OK	Fixed with rev 7211.
 

Modified: trunk/gs/src/gxshade.c
===================================================================
--- trunk/gs/src/gxshade.c	2006-12-14 20:24:33 UTC (rev 7508)
+++ trunk/gs/src/gxshade.c	2006-12-14 21:40:07 UTC (rev 7509)
@@ -297,12 +297,10 @@
 
 /* Get the next vertex for a mesh element. */
 int
-shade_next_vertex(shade_coord_stream_t * cs, shading_vertex_t * vertex, patch_color_t *c, bool align_color_data)
+shade_next_vertex(shade_coord_stream_t * cs, shading_vertex_t * vertex, patch_color_t *c)
 {   /* Assuming p->c == c, provides a non-const access. */
     int code = shade_next_coords(cs, &vertex->p, 1);
 
-    if (code >= 0 && align_color_data)
-	cs->align(cs, 8);
     if (code >= 0)
 	code = shade_next_color(cs, c->cc.paint.values);
     if (code >= 0)

Modified: trunk/gs/src/gxshade.h
===================================================================
--- trunk/gs/src/gxshade.h	2006-12-14 20:24:33 UTC (rev 7508)
+++ trunk/gs/src/gxshade.h	2006-12-14 21:40:07 UTC (rev 7509)
@@ -152,7 +152,7 @@
 
 /* Get the next vertex for a mesh element. */
 int shade_next_vertex(shade_coord_stream_t * cs, shading_vertex_t * vertex, 
-		      patch_color_t *c, bool align_color_data);
+		      patch_color_t *c);
 
 /*
    Currently, all shading fill procedures follow the same algorithm:

Modified: trunk/gs/src/gxshade4.c
===================================================================
--- trunk/gs/src/gxshade4.c	2006-12-14 20:24:33 UTC (rev 7508)
+++ trunk/gs/src/gxshade4.c	2006-12-14 21:40:07 UTC (rev 7509)
@@ -48,9 +48,9 @@
 
 private int
 Gt_next_vertex(const gs_shading_mesh_t * psh, shade_coord_stream_t * cs,
-	       shading_vertex_t * vertex, patch_color_t *c, bool align_color_data)
+	       shading_vertex_t * vertex, patch_color_t *c)
 {
-    int code = shade_next_vertex(cs, vertex, c, align_color_data);
+    int code = shade_next_vertex(cs, vertex, c);
  
     if (code >= 0 && psh->params.Function) {
 	c->t[0] = c->cc.paint.values[0];
@@ -122,9 +122,9 @@
 	    default:
 		return_error(gs_error_rangecheck);
 	    case 0:
-		if ((code = Gt_next_vertex(pshm, &cs, &va, ca, false)) < 0 ||
+		if ((code = Gt_next_vertex(pshm, &cs, &va, ca)) < 0 ||
 		    (code = shade_next_flag(&cs, num_bits)) < 0 ||
-		    (code = Gt_next_vertex(pshm, &cs, &vb, cb, false)) < 0 ||
+		    (code = Gt_next_vertex(pshm, &cs, &vb, cb)) < 0 ||
 		    (code = shade_next_flag(&cs, num_bits)) < 0
 		    )
 		    break;
@@ -139,11 +139,12 @@
 		vb = vc;
 		cb = cc;
 		vc.c = cc = c;
-v2:		if ((code = Gt_next_vertex(pshm, &cs, &vc, cc, false)) < 0)
+v2:		if ((code = Gt_next_vertex(pshm, &cs, &vc, cc)) < 0)
 		    break;
 		if ((code = Gt_fill_triangle(&pfs, &va, &vb, &vc)) < 0)
 		    break;
 	}
+	cs.align(&cs, 8); /* Debugged with 12-14O.PS page 2. */
     }
     if (VD_TRACE_TRIANGLE_PATCH && vd_allowed('s'))
 	vd_release_dc;
@@ -211,11 +212,11 @@
     for (i = 0; i < per_row; ++i) {
 	color_buffer_ptrs[i] = (patch_color_t *)(color_buffer + pfs.color_stack_step * i);
 	vertex[i].c = color_buffer_ptrs[i];
-	if ((code = Gt_next_vertex(pshm, &cs, &vertex[i], color_buffer_ptrs[i], true)) < 0)
+	if ((code = Gt_next_vertex(pshm, &cs, &vertex[i], color_buffer_ptrs[i])) < 0)
 	    goto out;
     }
     while (!seofp(cs.s)) {
-	code = Gt_next_vertex(pshm, &cs, &next, cn, true);
+	code = Gt_next_vertex(pshm, &cs, &next, cn);
 	if (code < 0)
 	    goto out;
 	for (i = 1; i < per_row; ++i) {
@@ -226,7 +227,7 @@
 	    vertex[i - 1] = next;
 	    color_buffer_ptrs[i - 1] = cn;
 	    next.c = cn = c;
-	    code = Gt_next_vertex(pshm, &cs, &next, cn, true);
+	    code = Gt_next_vertex(pshm, &cs, &next, cn);
 	    if (code < 0)
 		goto out;
 	    code = Gt_fill_triangle(&pfs, &vertex[i], &vertex[i - 1], &next);



More information about the gs-cvs mailing list