Implement initial CalGray support
Gamma and Whitepoint are supported in this patch for CalGray. Blackpoint is not supported.
This commit is contained in:
		
							parent
							
								
									b9bceb4c4b
								
							
						
					
					
						commit
						a5bf02573d
					
				@ -15,7 +15,7 @@
 | 
				
			|||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* globals error, info, isArray, isDict, isName, isStream, isString,
 | 
					/* globals error, info, isArray, isDict, isName, isStream, isString,
 | 
				
			||||||
           PDFFunction, warn, shadow */
 | 
					           PDFFunction, warn, shadow, TODO */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
'use strict';
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -132,6 +132,11 @@ var ColorSpace = (function ColorSpaceClosure() {
 | 
				
			|||||||
        return this.singletons.rgb;
 | 
					        return this.singletons.rgb;
 | 
				
			||||||
      case 'DeviceCmykCS':
 | 
					      case 'DeviceCmykCS':
 | 
				
			||||||
        return this.singletons.cmyk;
 | 
					        return this.singletons.cmyk;
 | 
				
			||||||
 | 
					      case 'CalGrayCS':
 | 
				
			||||||
 | 
					        var whitePoint = IR[1].WhitePoint;
 | 
				
			||||||
 | 
					        var blackPoint = IR[1].BlackPoint;
 | 
				
			||||||
 | 
					        var gamma = IR[1].Gamma;
 | 
				
			||||||
 | 
					        return new CalGrayCS(whitePoint, blackPoint, gamma);
 | 
				
			||||||
      case 'PatternCS':
 | 
					      case 'PatternCS':
 | 
				
			||||||
        var basePatternCS = IR[1];
 | 
					        var basePatternCS = IR[1];
 | 
				
			||||||
        if (basePatternCS)
 | 
					        if (basePatternCS)
 | 
				
			||||||
@ -207,7 +212,8 @@ var ColorSpace = (function ColorSpaceClosure() {
 | 
				
			|||||||
        case 'CMYK':
 | 
					        case 'CMYK':
 | 
				
			||||||
          return 'DeviceCmykCS';
 | 
					          return 'DeviceCmykCS';
 | 
				
			||||||
        case 'CalGray':
 | 
					        case 'CalGray':
 | 
				
			||||||
          return 'DeviceGrayCS';
 | 
					          var params = cs[1].getAll();
 | 
				
			||||||
 | 
					          return ['CalGrayCS', params];
 | 
				
			||||||
        case 'CalRGB':
 | 
					        case 'CalRGB':
 | 
				
			||||||
          return 'DeviceRgbCS';
 | 
					          return 'DeviceRgbCS';
 | 
				
			||||||
        case 'ICCBased':
 | 
					        case 'ICCBased':
 | 
				
			||||||
@ -627,6 +633,113 @@ var DeviceCmykCS = (function DeviceCmykCSClosure() {
 | 
				
			|||||||
  return DeviceCmykCS;
 | 
					  return DeviceCmykCS;
 | 
				
			||||||
})();
 | 
					})();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// CalGrayCS: Based on "PDF Reference, Sixth Ed", p.245
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					var CalGrayCS = (function CalGrayCSClosure() {
 | 
				
			||||||
 | 
					  function CalGrayCS(whitePoint, blackPoint, gamma) {
 | 
				
			||||||
 | 
					    this.name = 'CalGray';
 | 
				
			||||||
 | 
					    this.numComps = 3;
 | 
				
			||||||
 | 
					    this.defaultColor = new Float32Array([0, 0, 0]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!whitePoint) {
 | 
				
			||||||
 | 
					      error('WhitePoint missing - required for color space CalGray');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    blackPoint = blackPoint || [0, 0, 0];
 | 
				
			||||||
 | 
					    gamma = gamma || 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Translate arguments to spec variables.
 | 
				
			||||||
 | 
					    this.XW = whitePoint[0];
 | 
				
			||||||
 | 
					    this.YW = whitePoint[1];
 | 
				
			||||||
 | 
					    this.ZW = whitePoint[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.XB = blackPoint[0];
 | 
				
			||||||
 | 
					    this.YB = blackPoint[1];
 | 
				
			||||||
 | 
					    this.ZB = blackPoint[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.G = gamma;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Validate variables as per spec.
 | 
				
			||||||
 | 
					    if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {
 | 
				
			||||||
 | 
					      error('Invalid WhitePoint components for ' + this.name +
 | 
				
			||||||
 | 
					            ', no fallback available');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
 | 
				
			||||||
 | 
					      info('Invalid BlackPoint for ' + this.name + ', falling back to default');
 | 
				
			||||||
 | 
					      this.XB = this.YB = this.ZB = 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {
 | 
				
			||||||
 | 
					      TODO(this.name + ', BlackPoint: XB: ' + this.XB + ', YB: ' + this.YB +
 | 
				
			||||||
 | 
					           ', ZB: ' + this.ZB + ', only default values are supported.');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (this.G < 1) {
 | 
				
			||||||
 | 
					      info('Invalid Gamma: ' + this.G + ' for ' + this.name +
 | 
				
			||||||
 | 
					           ', falling back to default');
 | 
				
			||||||
 | 
					      this.G = 1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  CalGrayCS.prototype = {
 | 
				
			||||||
 | 
					    getRgb: function CalGrayCS_getRgb(src, srcOffset) {
 | 
				
			||||||
 | 
					      var rgb = new Uint8Array(3);
 | 
				
			||||||
 | 
					      this.getRgbItem(src, srcOffset, rgb, 0);
 | 
				
			||||||
 | 
					      return rgb;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    getRgbItem: function CalGrayCS_getRgbItem(src, srcOffset,
 | 
				
			||||||
 | 
					                                              dest, destOffset) {
 | 
				
			||||||
 | 
					      // A represents a gray component of a calibrated gray space.
 | 
				
			||||||
 | 
					      // A <---> AG in the spec
 | 
				
			||||||
 | 
					      var A = src[srcOffset];
 | 
				
			||||||
 | 
					      var AG = Math.pow(A, this.G);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // Computes intermediate variables M, L, N as per spec.
 | 
				
			||||||
 | 
					      // Except if other than default BlackPoint values are used.
 | 
				
			||||||
 | 
					      var M = this.XW * AG;
 | 
				
			||||||
 | 
					      var L = this.YW * AG;
 | 
				
			||||||
 | 
					      var N = this.ZW * AG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // Decode XYZ, as per spec.
 | 
				
			||||||
 | 
					      var X = M;
 | 
				
			||||||
 | 
					      var Y = L;
 | 
				
			||||||
 | 
					      var Z = N;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.
 | 
				
			||||||
 | 
					      // This yields values in range [0, 100].
 | 
				
			||||||
 | 
					      var Lstar = Math.max(116 * Math.pow(Y, 1 / 3) - 16, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // Convert values to rgb range [0, 255].
 | 
				
			||||||
 | 
					      dest[destOffset] = Lstar * 255 / 100;
 | 
				
			||||||
 | 
					      dest[destOffset + 1] = Lstar * 255 / 100;
 | 
				
			||||||
 | 
					      dest[destOffset + 2] = Lstar * 255 / 100;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    getRgbBuffer: function CalGrayCS_getRgbBuffer(src, srcOffset, count,
 | 
				
			||||||
 | 
					                                                  dest, destOffset, bits) {
 | 
				
			||||||
 | 
					      // TODO: This part is copied from DeviceGray. Make this utility function.
 | 
				
			||||||
 | 
					      var scale = 255 / ((1 << bits) - 1);
 | 
				
			||||||
 | 
					      var j = srcOffset, q = destOffset;
 | 
				
			||||||
 | 
					      for (var i = 0; i < count; ++i) {
 | 
				
			||||||
 | 
					        var c = (scale * src[j++]) | 0;
 | 
				
			||||||
 | 
					        dest[q++] = c;
 | 
				
			||||||
 | 
					        dest[q++] = c;
 | 
				
			||||||
 | 
					        dest[q++] = c;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    getOutputLength: function CalGrayCS_getOutputLength(inputLength) {
 | 
				
			||||||
 | 
					      return inputLength * 3;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    isPassthrough: ColorSpace.prototype.isPassthrough,
 | 
				
			||||||
 | 
					    createRgbBuffer: ColorSpace.prototype.createRgbBuffer,
 | 
				
			||||||
 | 
					    isDefaultDecode: function CalGrayCS_isDefaultDecode(decodeMap) {
 | 
				
			||||||
 | 
					      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    usesZeroToOneRange: true
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  return CalGrayCS;
 | 
				
			||||||
 | 
					})();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// LabCS: Based on "PDF Reference, Sixth Ed", p.250
 | 
					// LabCS: Based on "PDF Reference, Sixth Ed", p.250
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@ -767,3 +880,4 @@ var LabCS = (function LabCSClosure() {
 | 
				
			|||||||
  };
 | 
					  };
 | 
				
			||||||
  return LabCS;
 | 
					  return LabCS;
 | 
				
			||||||
})();
 | 
					})();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										553
									
								
								test/pdfs/calgray.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										553
									
								
								test/pdfs/calgray.pdf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,553 @@
 | 
				
			|||||||
 | 
					%PDF-1.7
 | 
				
			||||||
 | 
					% filler                              %
 | 
				
			||||||
 | 
					% filler                                        %
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1 0 obj % entry point                           %
 | 
				
			||||||
 | 
					<<                                              %
 | 
				
			||||||
 | 
					  /Type /Catalog                                %
 | 
				
			||||||
 | 
					  /Pages 2 0 R                                  %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2 0 obj                                         %
 | 
				
			||||||
 | 
					<< /Type /Pages                                 %
 | 
				
			||||||
 | 
					   /MediaBox [ 0 0 850 1100 ]                   %
 | 
				
			||||||
 | 
					   /Count 3                                     %
 | 
				
			||||||
 | 
					   /Kids [  3 0 R                               %
 | 
				
			||||||
 | 
					            8 0 R                               %
 | 
				
			||||||
 | 
					           12 0 R                               %
 | 
				
			||||||
 | 
					         ]                                      %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3 0 obj % Page object                           %
 | 
				
			||||||
 | 
					<< /Type /Page                                  %
 | 
				
			||||||
 | 
					   /Parent 2 0 R                                %
 | 
				
			||||||
 | 
					   /Resources 4 0 R                             %
 | 
				
			||||||
 | 
					   /Contents 7 0 R                              %
 | 
				
			||||||
 | 
					   /CropBox [ 0 0 850 1100 ]                    %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					4 0 obj % Resource dictionary for page          %
 | 
				
			||||||
 | 
					<<                                              %
 | 
				
			||||||
 | 
					   /ColorSpace << /Cs5 5 0 R >>                 %
 | 
				
			||||||
 | 
					   /Font << /F1 6 0 R >>                        %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					5 0 obj % Colorspace definition                 %
 | 
				
			||||||
 | 
					[ /CalGray                                      %
 | 
				
			||||||
 | 
					<< /WhitePoint [ 1.00000 1.0 1.00000 ]          %
 | 
				
			||||||
 | 
					   /BlackPoint [ 0.0 0.0 0.0 ]                  %
 | 
				
			||||||
 | 
					   /Gamma  1.0                                  %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					]                                               %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					6 0 obj % Font definition                       %
 | 
				
			||||||
 | 
					<< /Type /Font                                  %
 | 
				
			||||||
 | 
					   /Subtype /Type1                              %
 | 
				
			||||||
 | 
					   /BaseFont /Times-Roman                       %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					7 0 obj % Contents of page                      %
 | 
				
			||||||
 | 
					<< /Length 3300 >>
 | 
				
			||||||
 | 
					stream
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.00 sc              %
 | 
				
			||||||
 | 
					   25   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.01 sc              %
 | 
				
			||||||
 | 
					  225   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.05 sc              %
 | 
				
			||||||
 | 
					  425   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.10 sc              %
 | 
				
			||||||
 | 
					  625   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.15 sc              %
 | 
				
			||||||
 | 
					   25  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.20 sc              %
 | 
				
			||||||
 | 
					  225  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.25 sc              %
 | 
				
			||||||
 | 
					  425  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.30 sc              %
 | 
				
			||||||
 | 
					  625  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.35 sc              %
 | 
				
			||||||
 | 
					   25  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.40 sc              %
 | 
				
			||||||
 | 
					  225  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.45 sc              %
 | 
				
			||||||
 | 
					  425  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.50 sc              %
 | 
				
			||||||
 | 
					  625  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.55 sc              %
 | 
				
			||||||
 | 
					   25  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.60 sc              %
 | 
				
			||||||
 | 
					  225  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.65 sc              %
 | 
				
			||||||
 | 
					  425  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.70 sc              %
 | 
				
			||||||
 | 
					  625  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.75 sc              %
 | 
				
			||||||
 | 
					   25  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.80 sc              %
 | 
				
			||||||
 | 
					  225  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  0.90 sc              %
 | 
				
			||||||
 | 
					  425  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs5 cs               %
 | 
				
			||||||
 | 
					  1.00 sc              %
 | 
				
			||||||
 | 
					  625  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 BT                    %
 | 
				
			||||||
 | 
					 /F1 16 Tf             %
 | 
				
			||||||
 | 
					   50   50  Td         %
 | 
				
			||||||
 | 
					 (A = 0.00) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.01) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.05) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.10) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.15) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.20) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.25) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.30) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.35) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.40) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.45) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.50) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.55) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.60) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.65) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.70) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td  0.0 g  %
 | 
				
			||||||
 | 
					 (A = 0.75) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.80) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.90) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 1.00) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (WhitePoint [ 1.0 1.0 1.0 ]) Tj                %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (BlackPoint [ 0.0 0.0 0.0 ]) Tj                %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (Gamma  1.0) Tj                                %
 | 
				
			||||||
 | 
					 ET                    %
 | 
				
			||||||
 | 
					endstream
 | 
				
			||||||
 | 
					%  %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					8 0 obj % Page object                           %
 | 
				
			||||||
 | 
					<< /Type /Page                                  %
 | 
				
			||||||
 | 
					   /Parent 2 0 R                                %
 | 
				
			||||||
 | 
					   /Resources 9 0 R                             %
 | 
				
			||||||
 | 
					   /Contents 11 0 R                             %
 | 
				
			||||||
 | 
					   /CropBox [ 0 0 850 1100 ]                    %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					9 0 obj % Resource dictionary for page          %
 | 
				
			||||||
 | 
					<<                                              %
 | 
				
			||||||
 | 
					   /ColorSpace << /Cs10 10 0 R >>               %
 | 
				
			||||||
 | 
					   /Font << /F1 6 0 R >>                        %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					10 0 obj % Colorspace definition                %
 | 
				
			||||||
 | 
					[ /CalGray                                      %
 | 
				
			||||||
 | 
					<< /WhitePoint [ 1.00000 1.0 1.00000 ]          %
 | 
				
			||||||
 | 
					   /BlackPoint [ 0.0 0.0 0.0 ]                  %
 | 
				
			||||||
 | 
					   /Gamma  5.0                                  %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					]                                               %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					11 0 obj % Contents of page                     %
 | 
				
			||||||
 | 
					<< /Length 3300 >>
 | 
				
			||||||
 | 
					stream
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.0  sc              %
 | 
				
			||||||
 | 
					   25   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.01 sc              %
 | 
				
			||||||
 | 
					  225   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.05 sc              %
 | 
				
			||||||
 | 
					  425   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.1  sc              %
 | 
				
			||||||
 | 
					  625   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.15 sc              %
 | 
				
			||||||
 | 
					   25  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.2  sc              %
 | 
				
			||||||
 | 
					  225  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.25 sc              %
 | 
				
			||||||
 | 
					  425  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.3  sc              %
 | 
				
			||||||
 | 
					  625  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.35 sc              %
 | 
				
			||||||
 | 
					   25  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.4  sc              %
 | 
				
			||||||
 | 
					  225  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.45 sc              %
 | 
				
			||||||
 | 
					  425  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.5  sc              %
 | 
				
			||||||
 | 
					  625  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.55 sc              %
 | 
				
			||||||
 | 
					   25  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.6  sc              %
 | 
				
			||||||
 | 
					  225  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.65 sc              %
 | 
				
			||||||
 | 
					  425  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.7  sc              %
 | 
				
			||||||
 | 
					  625  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.75 sc              %
 | 
				
			||||||
 | 
					   25  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.8  sc              %
 | 
				
			||||||
 | 
					  225  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  0.9  sc              %
 | 
				
			||||||
 | 
					  425  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs10 cs              %
 | 
				
			||||||
 | 
					  1.0  sc              %
 | 
				
			||||||
 | 
					  625  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 BT                    %
 | 
				
			||||||
 | 
					 /F1 16 Tf             %
 | 
				
			||||||
 | 
					   50   50  Td         %
 | 
				
			||||||
 | 
					 (A = 0.00) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.01) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.05) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.10) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.15) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.20) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.25) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.30) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.35) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.40) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.45) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.50) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.55) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.60) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.65) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.70) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td  0.0 g  %
 | 
				
			||||||
 | 
					 (A = 0.75) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.80) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.90) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 1.00) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (WhitePoint [ 1.0 1.0 1.0 ]) Tj                %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (BlackPoint [ 0.0 0.0 0.0 ]) Tj                %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (Gamma  5.0) Tj                                %
 | 
				
			||||||
 | 
					 ET                    %
 | 
				
			||||||
 | 
					endstream
 | 
				
			||||||
 | 
					%  %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					12 0 obj % Page object                          %
 | 
				
			||||||
 | 
					<< /Type /Page                                  %
 | 
				
			||||||
 | 
					   /Parent 2 0 R                                %
 | 
				
			||||||
 | 
					   /Resources 13 0 R                            %
 | 
				
			||||||
 | 
					   /Contents 15 0 R                             %
 | 
				
			||||||
 | 
					   /CropBox [ 0 0 850 1100 ]                    %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					13 0 obj % Resource dictionary for page         %
 | 
				
			||||||
 | 
					<<                                              %
 | 
				
			||||||
 | 
					   /ColorSpace << /Cs14 14 0 R >>               %
 | 
				
			||||||
 | 
					   /Font << /F1 6 0 R >>                        %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					14 0 obj % Colorspace definition                %
 | 
				
			||||||
 | 
					[ /CalGray                                      %
 | 
				
			||||||
 | 
					<< /WhitePoint [ 1.00000 1.0 1.00000 ]          %
 | 
				
			||||||
 | 
					   /BlackPoint [ 0.7 0.7 0.7 ]                  %
 | 
				
			||||||
 | 
					   /Gamma  1.0                                  %
 | 
				
			||||||
 | 
					>>                                              %
 | 
				
			||||||
 | 
					]                                               %
 | 
				
			||||||
 | 
					% filler                                %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					15 0 obj % Contents of page                     %
 | 
				
			||||||
 | 
					<< /Length 3300 >>
 | 
				
			||||||
 | 
					stream
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.0  sc              %
 | 
				
			||||||
 | 
					   25   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.01 sc              %
 | 
				
			||||||
 | 
					  225   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.05 sc              %
 | 
				
			||||||
 | 
					  425   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.1  sc              %
 | 
				
			||||||
 | 
					  625   25  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.15 sc              %
 | 
				
			||||||
 | 
					   25  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.2  sc              %
 | 
				
			||||||
 | 
					  225  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.25 sc              %
 | 
				
			||||||
 | 
					  425  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.3  sc              %
 | 
				
			||||||
 | 
					  625  225  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.35 sc              %
 | 
				
			||||||
 | 
					   25  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.4  sc              %
 | 
				
			||||||
 | 
					  225  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.45 sc              %
 | 
				
			||||||
 | 
					  425  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.5  sc              %
 | 
				
			||||||
 | 
					  625  425  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.55 sc              %
 | 
				
			||||||
 | 
					   25  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.6  sc              %
 | 
				
			||||||
 | 
					  225  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.65 sc              %
 | 
				
			||||||
 | 
					  425  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.7  sc              %
 | 
				
			||||||
 | 
					  625  625  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.75 sc              %
 | 
				
			||||||
 | 
					   25  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.8  sc              %
 | 
				
			||||||
 | 
					  225  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  0.9  sc              %
 | 
				
			||||||
 | 
					  425  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 /Cs14 cs              %
 | 
				
			||||||
 | 
					  1.0  sc              %
 | 
				
			||||||
 | 
					  625  825  200  200 re%
 | 
				
			||||||
 | 
					 f                     %
 | 
				
			||||||
 | 
					 BT                    %
 | 
				
			||||||
 | 
					 /F1 16 Tf             %
 | 
				
			||||||
 | 
					   50   50  Td         %
 | 
				
			||||||
 | 
					 (A = 0.00) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.01) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.05) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.10) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.15) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.20) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.25) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.30) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.35) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.40) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.45) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.50) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (A = 0.55) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.60) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.65) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.70) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td  0.0 g  %
 | 
				
			||||||
 | 
					 (A = 0.75) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.80) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 0.90) Tj         %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (A = 1.00) Tj         %
 | 
				
			||||||
 | 
					 -600  200  Td         %
 | 
				
			||||||
 | 
					 (WhitePoint [ 1.0 1.0 1.0 ]) Tj                %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (BlackPoint [ 0.7 0.7 0.7 ]) Tj                %
 | 
				
			||||||
 | 
					  200    0  Td         %
 | 
				
			||||||
 | 
					 (Gamma  1.0) Tj                                %
 | 
				
			||||||
 | 
					 ET                    %
 | 
				
			||||||
 | 
					endstream
 | 
				
			||||||
 | 
					%  %
 | 
				
			||||||
 | 
					endobj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					xref
 | 
				
			||||||
 | 
					0 16
 | 
				
			||||||
 | 
					0000000000 65535 f 
 | 
				
			||||||
 | 
					0000000100 00000 n 
 | 
				
			||||||
 | 
					0000000400 00000 n 
 | 
				
			||||||
 | 
					0000000900 00000 n 
 | 
				
			||||||
 | 
					0000001300 00000 n 
 | 
				
			||||||
 | 
					0000001600 00000 n 
 | 
				
			||||||
 | 
					0000002000 00000 n 
 | 
				
			||||||
 | 
					0000002300 00000 n 
 | 
				
			||||||
 | 
					0000005700 00000 n 
 | 
				
			||||||
 | 
					0000006100 00000 n 
 | 
				
			||||||
 | 
					0000006400 00000 n 
 | 
				
			||||||
 | 
					0000006800 00000 n 
 | 
				
			||||||
 | 
					0000010200 00000 n 
 | 
				
			||||||
 | 
					0000010600 00000 n 
 | 
				
			||||||
 | 
					0000010900 00000 n 
 | 
				
			||||||
 | 
					0000011300 00000 n 
 | 
				
			||||||
 | 
					trailer
 | 
				
			||||||
 | 
					<<
 | 
				
			||||||
 | 
					   /Size 16
 | 
				
			||||||
 | 
					   /Root 1 0 R
 | 
				
			||||||
 | 
					>>
 | 
				
			||||||
 | 
					startxref
 | 
				
			||||||
 | 
					14700
 | 
				
			||||||
 | 
					%%EOF
 | 
				
			||||||
@ -1363,6 +1363,12 @@
 | 
				
			|||||||
       "lastPage": 1,
 | 
					       "lastPage": 1,
 | 
				
			||||||
       "type": "eq"
 | 
					       "type": "eq"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    {  "id": "calgray",
 | 
				
			||||||
 | 
					       "file": "pdfs/calgray.pdf",
 | 
				
			||||||
 | 
					       "md5": "ee784999bfa1ed373f55cdabbb580df1",
 | 
				
			||||||
 | 
					       "rounds": 1,
 | 
				
			||||||
 | 
					       "type": "eq"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    {  "id": "issue2853",
 | 
					    {  "id": "issue2853",
 | 
				
			||||||
       "file": "pdfs/issue2853.pdf",
 | 
					       "file": "pdfs/issue2853.pdf",
 | 
				
			||||||
       "md5": "9f0ad95ef0b243ee8813c4eca0f7a042",
 | 
					       "md5": "9f0ad95ef0b243ee8813c4eca0f7a042",
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user