public override void PrintDir(Tiff tif, Stream fd, TiffPrintFlags flags) { CodecWithPredictor sp = tif.m_currentCodec as CodecWithPredictor; Debug.Assert(sp != null); if (tif.fieldSet(CodecWithPredictor.FIELD_PREDICTOR)) { Tiff.fprintf(fd, " Predictor: "); Predictor predictor = sp.GetPredictorValue(); switch (predictor) { case Predictor.NONE: Tiff.fprintf(fd, "none "); break; case Predictor.HORIZONTAL: Tiff.fprintf(fd, "horizontal differencing "); break; case Predictor.FLOATINGPOINT: Tiff.fprintf(fd, "floating point predictor "); break; } Tiff.fprintf(fd, "{0} (0x{1:x})\r\n", predictor, predictor); } TiffTagMethods childMethods = sp.GetChildTagMethods(); if (childMethods != null) childMethods.PrintDir(tif, fd, flags); else base.PrintDir(tif, fd, flags); }
public override void PrintDir(Tiff tif, Stream fd, TiffPrintFlags flags) { JpegCodec sp = tif.m_currentCodec as JpegCodec; Debug.Assert(sp != null); if (tif.fieldSet(JpegCodec.FIELD_JPEGTABLES)) { Tiff.fprintf(fd, " JPEG Tables: ({0} bytes)\n", sp.m_jpegtables_length); } if (tif.fieldSet(JpegCodec.FIELD_RECVPARAMS)) { Tiff.fprintf(fd, " Fax Receive Parameters: {0,8:x}\n", sp.m_recvparams); } if (tif.fieldSet(JpegCodec.FIELD_SUBADDRESS)) { Tiff.fprintf(fd, " Fax SubAddress: {0}\n", sp.m_subaddress); } if (tif.fieldSet(JpegCodec.FIELD_RECVTIME)) { Tiff.fprintf(fd, " Fax Receive Time: {0} secs\n", sp.m_recvtime); } if (tif.fieldSet(JpegCodec.FIELD_FAXDCS)) { Tiff.fprintf(fd, " Fax DCS: {0}\n", sp.m_faxdcs); } }
public override void PrintDir(Tiff tif, Stream fd, TiffPrintFlags flags) { OJpegCodec sp = tif.m_currentCodec as OJpegCodec; Debug.Assert(sp != null); if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGINTERCHANGEFORMAT)) { Tiff.fprintf(fd, " JpegInterchangeFormat: {0}\n", sp.m_jpeg_interchange_format); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGINTERCHANGEFORMATLENGTH)) { Tiff.fprintf(fd, " JpegInterchangeFormatLength: {0}\n", sp.m_jpeg_interchange_format_length); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGQTABLES)) { Tiff.fprintf(fd, " JpegQTables:"); for (byte m = 0; m < sp.m_qtable_offset_count; m++) { Tiff.fprintf(fd, " {0}", sp.m_qtable_offset[m]); } Tiff.fprintf(fd, "\n"); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGDCTABLES)) { Tiff.fprintf(fd, " JpegDcTables:"); for (byte m = 0; m < sp.m_dctable_offset_count; m++) { Tiff.fprintf(fd, " {0}", sp.m_dctable_offset[m]); } Tiff.fprintf(fd, "\n"); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGACTABLES)) { Tiff.fprintf(fd, " JpegAcTables:"); for (byte m = 0; m < sp.m_actable_offset_count; m++) { Tiff.fprintf(fd, " {0}", sp.m_actable_offset[m]); } Tiff.fprintf(fd, "\n"); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGPROC)) { Tiff.fprintf(fd, " JpegProc: {0}\n", sp.m_jpeg_proc); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGRESTARTINTERVAL)) { Tiff.fprintf(fd, " JpegRestartInterval: {0}\n", sp.m_restart_interval); } }
public override void PrintDir(Tiff tif, Stream fd, TiffPrintFlags flags) { OJpegCodec sp = tif.m_currentCodec as OJpegCodec; Debug.Assert(sp != null); if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGINTERCHANGEFORMAT)) Tiff.fprintf(fd, " JpegInterchangeFormat: {0}\n", sp.m_jpeg_interchange_format); if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGINTERCHANGEFORMATLENGTH)) Tiff.fprintf(fd, " JpegInterchangeFormatLength: {0}\n", sp.m_jpeg_interchange_format_length); if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGQTABLES)) { Tiff.fprintf(fd, " JpegQTables:"); for (byte m = 0; m < sp.m_qtable_offset_count; m++) Tiff.fprintf(fd, " {0}", sp.m_qtable_offset[m]); Tiff.fprintf(fd, "\n"); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGDCTABLES)) { Tiff.fprintf(fd, " JpegDcTables:"); for (byte m = 0; m < sp.m_dctable_offset_count; m++) Tiff.fprintf(fd, " {0}", sp.m_dctable_offset[m]); Tiff.fprintf(fd, "\n"); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGACTABLES)) { Tiff.fprintf(fd, " JpegAcTables:"); for (byte m = 0; m < sp.m_actable_offset_count; m++) Tiff.fprintf(fd, " {0}", sp.m_actable_offset[m]); Tiff.fprintf(fd, "\n"); } if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGPROC)) Tiff.fprintf(fd, " JpegProc: {0}\n", sp.m_jpeg_proc); if (tif.fieldSet(OJpegCodec.FIELD_OJPEG_JPEGRESTARTINTERVAL)) Tiff.fprintf(fd, " JpegRestartInterval: {0}\n", sp.m_restart_interval); }
public override void PrintDir(Tiff tif, Stream fd, TiffPrintFlags flags) { CodecWithPredictor sp = tif.m_currentCodec as CodecWithPredictor; Debug.Assert(sp != null); if (tif.fieldSet(CodecWithPredictor.FIELD_PREDICTOR)) { Tiff.fprintf(fd, " Predictor: "); Predictor predictor = sp.GetPredictorValue(); switch (predictor) { case Predictor.NONE: Tiff.fprintf(fd, "none "); break; case Predictor.HORIZONTAL: Tiff.fprintf(fd, "horizontal differencing "); break; case Predictor.FLOATINGPOINT: Tiff.fprintf(fd, "floating point predictor "); break; } Tiff.fprintf(fd, "{0} (0x{1:x})\r\n", predictor, predictor); } TiffTagMethods childMethods = sp.GetChildTagMethods(); if (childMethods != null) { childMethods.PrintDir(tif, fd, flags); } else { base.PrintDir(tif, fd, flags); } }
/// <summary> /// Prints formatted description of the contents of the current directory to the /// specified stream using specified print (formatting) options. /// </summary> /// <param name="stream">The stream.</param> /// <param name="flags">The print (formatting) options.</param> public void PrintDirectory(Stream stream, TiffPrintFlags flags) { const string EndOfLine = "\r\n"; fprintf(stream, "TIFF Directory at offset 0x{0:x} ({1})" + EndOfLine, m_diroff, m_diroff); if (fieldSet(FieldBit.SubFileType)) { fprintf(stream, " Subfile Type:"); string sep = " "; if ((m_dir.td_subfiletype & FileType.ReducedResImage) != 0) { fprintf(stream, "{0}reduced-resolution image", sep); sep = "/"; } if ((m_dir.td_subfiletype & FileType.Page) != 0) { fprintf(stream, "{0}multi-page document", sep); sep = "/"; } if ((m_dir.td_subfiletype & FileType.Mask) != 0) fprintf(stream, "{0}transparency mask", sep); fprintf(stream, " ({0} = 0x{1:x})" + EndOfLine, m_dir.td_subfiletype, m_dir.td_subfiletype); } if (fieldSet(FieldBit.ImageDimensions)) { fprintf(stream, " Image Width: {0} Image Length: {1}", m_dir.td_imagewidth, m_dir.td_imagelength); if (fieldSet(FieldBit.ImageDepth)) fprintf(stream, " Image Depth: {0}", m_dir.td_imagedepth); fprintf(stream, EndOfLine); } if (fieldSet(FieldBit.TileDimensions)) { fprintf(stream, " Tile Width: {0} Tile Length: {1}", m_dir.td_tilewidth, m_dir.td_tilelength); if (fieldSet(FieldBit.TileDepth)) fprintf(stream, " Tile Depth: {0}", m_dir.td_tiledepth); fprintf(stream, EndOfLine); } if (fieldSet(FieldBit.Resolution)) { fprintf(stream, " Resolution: {0:G}, {1:G}", m_dir.td_xresolution, m_dir.td_yresolution); if (fieldSet(FieldBit.ResolutionUnit)) { switch (m_dir.td_resolutionunit) { case ResolutionUnit.None: fprintf(stream, " (unitless)"); break; case ResolutionUnit.Inch: fprintf(stream, " pixels/inch"); break; case ResolutionUnit.Centimeter: fprintf(stream, " pixels/cm"); break; default: fprintf(stream, " (unit {0} = 0x{1:x})", m_dir.td_resolutionunit, m_dir.td_resolutionunit); break; } } fprintf(stream, EndOfLine); } if (fieldSet(FieldBit.Position)) fprintf(stream, " Position: {0:G}, {1:G}" + EndOfLine, m_dir.td_xposition, m_dir.td_yposition); if (fieldSet(FieldBit.BitsPerSample)) fprintf(stream, " Bits/Sample: {0}" + EndOfLine, m_dir.td_bitspersample); if (fieldSet(FieldBit.SampleFormat)) { fprintf(stream, " Sample Format: "); switch (m_dir.td_sampleformat) { case SampleFormat.UnTyped: fprintf(stream, "void" + EndOfLine); break; case SampleFormat.Int: fprintf(stream, "signed integer" + EndOfLine); break; case SampleFormat.UInt: fprintf(stream, "unsigned integer" + EndOfLine); break; case SampleFormat.IEEEFloat: fprintf(stream, "IEEE floating point" + EndOfLine); break; case SampleFormat.COMPLEXINT: fprintf(stream, "complex signed integer" + EndOfLine); break; case SampleFormat.ComplexIEEEFloat: fprintf(stream, "complex IEEE floating point" + EndOfLine); break; default: fprintf(stream, "{0} (0x{1:x})" + EndOfLine, m_dir.td_sampleformat, m_dir.td_sampleformat); break; } } if (fieldSet(FieldBit.Compression)) { TiffCodec c = FindCodec(m_dir.td_compression); fprintf(stream, " Compression Scheme: "); if (c != null) fprintf(stream, "{0}" + EndOfLine, c.m_name); else fprintf(stream, "{0} (0x{1:x})" + EndOfLine, m_dir.td_compression, m_dir.td_compression); } if (fieldSet(FieldBit.Photometric)) { fprintf(stream, " Photometric Interpretation: "); if ((int)m_dir.td_photometric < photoNames.Length) fprintf(stream, "{0}" + EndOfLine, photoNames[(int)m_dir.td_photometric]); else { switch (m_dir.td_photometric) { case Photometric.LogL: fprintf(stream, "CIE Log2(L)" + EndOfLine); break; case Photometric.LogLUV: fprintf(stream, "CIE Log2(L) (u',v')" + EndOfLine); break; default: fprintf(stream, "{0} (0x{1:x})" + EndOfLine, m_dir.td_photometric, m_dir.td_photometric); break; } } } if (fieldSet(FieldBit.ExtraSamples) && m_dir.td_extrasamples != 0) { fprintf(stream, " Extra Samples: {0}<", m_dir.td_extrasamples); string sep = ""; for (short i = 0; i < m_dir.td_extrasamples; i++) { switch (m_dir.td_sampleinfo[i]) { case ExtraSample.UnSpecified: fprintf(stream, "{0}unspecified", sep); break; case ExtraSample.AssociatedAlpha: fprintf(stream, "{0}assoc-alpha", sep); break; case ExtraSample.UnAssociatedAlpha: fprintf(stream, "{0}unassoc-alpha", sep); break; default: fprintf(stream, "{0}{1} (0x{2:x})", sep, m_dir.td_sampleinfo[i], m_dir.td_sampleinfo[i]); break; } sep = ", "; } fprintf(stream, ">" + EndOfLine); } if (fieldSet(FieldBit.InkNames)) { fprintf(stream, " Ink Names: "); string[] names = m_dir.td_inknames.Split(new char[] { '\0' }); for (int i = 0; i < names.Length; i++) { printAscii(stream, names[i]); fprintf(stream, ", "); } fprintf(stream, EndOfLine); } if (fieldSet(FieldBit.Thresholding)) { fprintf(stream, " Thresholding: "); switch (m_dir.td_threshholding) { case Threshold.BILevel: fprintf(stream, "bilevel art scan" + EndOfLine); break; case Threshold.HalfTone: fprintf(stream, "halftone or dithered scan" + EndOfLine); break; case Threshold.ErrorDiffuse: fprintf(stream, "error diffused" + EndOfLine); break; default: fprintf(stream, "{0} (0x{1:x})" + EndOfLine, m_dir.td_threshholding, m_dir.td_threshholding); break; } } if (fieldSet(FieldBit.FillOrder)) { fprintf(stream, " BitOrder: "); switch (m_dir.td_fillorder) { case BitOrder.BigEndian: fprintf(stream, "msb-to-lsb" + EndOfLine); break; case BitOrder.LittleEndian: fprintf(stream, "lsb-to-msb" + EndOfLine); break; default: fprintf(stream, "{0} (0x{1:x})" + EndOfLine, m_dir.td_fillorder, m_dir.td_fillorder); break; } } if (fieldSet(FieldBit.YCbCrSubsampling)) { // For hacky reasons (see JpegCodecTagMethods.JPEGFixupTestSubsampling method), // we need to fetch this rather than trust what is in our structures. FieldValue[] result = GetField(TiffTag.YCBCRSUBSAMPLING); short subsampling0 = result[0].ToShort(); short subsampling1 = result[1].ToShort(); fprintf(stream, " YCbCr Subsampling: {0}, {1}" + EndOfLine, subsampling0, subsampling1); } if (fieldSet(FieldBit.YCbCrPositioning)) { fprintf(stream, " YCbCr Positioning: "); switch (m_dir.td_ycbcrpositioning) { case YCbCrPosition.Centered: fprintf(stream, "centered" + EndOfLine); break; case YCbCrPosition.CoSited: fprintf(stream, "cosited" + EndOfLine); break; default: fprintf(stream, "{0} (0x{1:x})" + EndOfLine, m_dir.td_ycbcrpositioning, m_dir.td_ycbcrpositioning); break; } } if (fieldSet(FieldBit.HalftoneHints)) fprintf(stream, " Halftone Hints: light {0} dark {1}" + EndOfLine, m_dir.td_halftonehints[0], m_dir.td_halftonehints[1]); if (fieldSet(FieldBit.Orientation)) { fprintf(stream, " Orientation: "); if ((int)m_dir.td_orientation < orientNames.Length) fprintf(stream, "{0}" + EndOfLine, orientNames[(int)m_dir.td_orientation]); else fprintf(stream, "{0} (0x{1:x})" + EndOfLine, m_dir.td_orientation, m_dir.td_orientation); } if (fieldSet(FieldBit.SamplesPerPixel)) fprintf(stream, " Samples/Pixel: {0}" + EndOfLine, m_dir.td_samplesperpixel); if (fieldSet(FieldBit.RowsPerStrip)) { fprintf(stream, " Rows/Strip: "); if (m_dir.td_rowsperstrip == -1) fprintf(stream, "(infinite)" + EndOfLine); else fprintf(stream, "{0}" + EndOfLine, m_dir.td_rowsperstrip); } if (fieldSet(FieldBit.MinSampleValue)) fprintf(stream, " Min Sample Value: {0}" + EndOfLine, m_dir.td_minsamplevalue); if (fieldSet(FieldBit.MaxSampleValue)) fprintf(stream, " Max Sample Value: {0}" + EndOfLine, m_dir.td_maxsamplevalue); if (fieldSet(FieldBit.SMinSampleValue)) fprintf(stream, " SMin Sample Value: {0:G}" + EndOfLine, m_dir.td_sminsamplevalue); if (fieldSet(FieldBit.SMaxSampleValue)) fprintf(stream, " SMax Sample Value: {0:G}" + EndOfLine, m_dir.td_smaxsamplevalue); if (fieldSet(FieldBit.PlanarConfig)) { fprintf(stream, " Planar Configuration: "); switch (m_dir.td_planarconfig) { case PlanarConfig.Contig: fprintf(stream, "single image plane" + EndOfLine); break; case PlanarConfig.Separate: fprintf(stream, "separate image planes" + EndOfLine); break; default: fprintf(stream, "{0} (0x{1:x})" + EndOfLine, m_dir.td_planarconfig, m_dir.td_planarconfig); break; } } if (fieldSet(FieldBit.PageNumber)) fprintf(stream, " Page Number: {0}-{1}" + EndOfLine, m_dir.td_pagenumber[0], m_dir.td_pagenumber[1]); if (fieldSet(FieldBit.ColorMap)) { fprintf(stream, " Color Map: "); if ((flags & TiffPrintFlags.Colormap) != 0) { fprintf(stream, "" + EndOfLine); int n = 1 << m_dir.td_bitspersample; for (int l = 0; l < n; l++) fprintf(stream, " {0,5}: {1,5} {2,5} {3,5}" + EndOfLine, l, m_dir.td_colormap[0][l], m_dir.td_colormap[1][l], m_dir.td_colormap[2][l]); } else fprintf(stream, "(present)" + EndOfLine); } if (fieldSet(FieldBit.TransferFunction)) { fprintf(stream, " Transfer Function: "); if ((flags & TiffPrintFlags.Curves) != 0) { fprintf(stream, "" + EndOfLine); int n = 1 << m_dir.td_bitspersample; for (int l = 0; l < n; l++) { fprintf(stream, " {0,2}: {0,5}", l, m_dir.td_transferfunction[0][l]); for (short i = 1; i < m_dir.td_samplesperpixel; i++) fprintf(stream, " {0,5}", m_dir.td_transferfunction[i][l]); fprintf(stream, "" + EndOfLine); } } else fprintf(stream, "(present)" + EndOfLine); } if (fieldSet(FieldBit.SubIFD) && m_dir.td_subifd != null) { fprintf(stream, " SubIFD Offsets:"); for (short i = 0; i < m_dir.td_nsubifd; i++) fprintf(stream, " {0,5}", m_dir.td_subifd[i]); fprintf(stream, "" + EndOfLine); } // Custom tag support. int count = GetTagListCount(); for (int i = 0; i < count; i++) { TiffTag tag = (TiffTag)GetTagListEntry(i); TiffFieldInfo fip = FieldWithTag(tag); if (fip == null) continue; byte[] raw_data = null; int value_count; if (fip.PassCount) { FieldValue[] result = GetField(tag); if (result == null) continue; value_count = result[0].ToInt(); raw_data = result[1].ToByteArray(); } else { if (fip.ReadCount == TiffFieldInfo.Variable || fip.ReadCount == TiffFieldInfo.Variable2) { value_count = 1; } else if (fip.ReadCount == TiffFieldInfo.Spp) { value_count = m_dir.td_samplesperpixel; } else { value_count = fip.ReadCount; } if ((fip.Type == TiffType.ASCII || fip.ReadCount == TiffFieldInfo.Variable || fip.ReadCount == TiffFieldInfo.Variable2 || fip.ReadCount == TiffFieldInfo.Spp || value_count > 1) && fip.Tag != TiffTag.PageNumber && fip.Tag != TiffTag.HalfToneHints && fip.Tag != TiffTag.YCBCRSUBSAMPLING && fip.Tag != TiffTag.DotRange) { FieldValue[] result = GetField(tag); if (result == null) continue; raw_data = result[0].ToByteArray(); } else if (fip.Tag != TiffTag.PageNumber && fip.Tag != TiffTag.HalfToneHints && fip.Tag != TiffTag.YCBCRSUBSAMPLING && fip.Tag != TiffTag.DotRange) { raw_data = new byte[dataSize(fip.Type) * value_count]; FieldValue[] result = GetField(tag); if (result == null) continue; raw_data = result[0].ToByteArray(); } else { // XXX: Should be fixed and removed, see the notes // related to PageNumber, HalfToneHints, // YCBCRSUBSAMPLING and DotRange tags raw_data = new byte[dataSize(fip.Type) * value_count]; FieldValue[] result = GetField(tag); if (result == null) continue; byte[] first = result[0].ToByteArray(); byte[] second = result[1].ToByteArray(); Buffer.BlockCopy(first, 0, raw_data, 0, first.Length); Buffer.BlockCopy(second, 0, raw_data, dataSize(fip.Type), second.Length); } } // Catch the tags which needs to be specially handled and // pretty print them. If tag not handled in prettyPrintField() // fall down and print it as any other tag. if (prettyPrintField(stream, tag, value_count, raw_data)) continue; else printField(stream, fip, value_count, raw_data); } m_tagmethods.PrintDir(this, stream, flags); if ((flags & TiffPrintFlags.Strips) != 0 && fieldSet(FieldBit.StripOffsets)) { fprintf(stream, " {0} {1}:" + EndOfLine, m_dir.td_nstrips, IsTiled() ? "Tiles" : "Strips"); for (int s = 0; s < m_dir.td_nstrips; s++) fprintf(stream, " {0,3}: [{0,8}, {0,8}]" + EndOfLine, s, m_dir.td_stripoffset[s], m_dir.td_stripbytecount[s]); } }
/// <summary> /// Prints formatted description of the contents of the current directory to the /// specified stream using specified print (formatting) options. /// </summary> /// <param name="tif">An instance of the <see cref="Tiff"/> class.</param> /// <param name="stream">The stream to print to.</param> /// <param name="flags">The print (formatting) options.</param> public virtual void PrintDir(Tiff tif, Stream stream, TiffPrintFlags flags) { }
public override void PrintDir(Tiff tif, Stream fd, TiffPrintFlags flags) { JpegCodec sp = tif.m_currentCodec as JpegCodec; Debug.Assert(sp != null); if (tif.fieldSet(JpegCodec.FIELD_JPEGTABLES)) Tiff.fprintf(fd, " JPEG Tables: ({0} bytes)\n", sp.m_jpegtables_length); if (tif.fieldSet(JpegCodec.FIELD_RECVPARAMS)) Tiff.fprintf(fd, " Fax Receive Parameters: {0,8:x}\n", sp.m_recvparams); if (tif.fieldSet(JpegCodec.FIELD_SUBADDRESS)) Tiff.fprintf(fd, " Fax SubAddress: {0}\n", sp.m_subaddress); if (tif.fieldSet(JpegCodec.FIELD_RECVTIME)) Tiff.fprintf(fd, " Fax Receive Time: {0} secs\n", sp.m_recvtime); if (tif.fieldSet(JpegCodec.FIELD_FAXDCS)) Tiff.fprintf(fd, " Fax DCS: {0}\n", sp.m_faxdcs); }
public override void PrintDir(Tiff tif, Stream fd, TiffPrintFlags flags) { CCITTCodec sp = tif.m_currentCodec as CCITTCodec; Debug.Assert(sp != null); if (tif.fieldSet(CCITTCodec.FIELD_OPTIONS)) { string sep = " "; if (tif.m_dir.td_compression == Compression.CCITTFAX4) { Tiff.fprintf(fd, " Group 4 Options:"); if ((sp.m_groupoptions & Group3Option.UnCompressed) != 0) Tiff.fprintf(fd, "{0}uncompressed data", sep); } else { Tiff.fprintf(fd, " Group 3 Options:"); if ((sp.m_groupoptions & Group3Option.Encoding2D) != 0) { Tiff.fprintf(fd, "{0}2-d encoding", sep); sep = "+"; } if ((sp.m_groupoptions & Group3Option.FillBits) != 0) { Tiff.fprintf(fd, "{0}EOL padding", sep); sep = "+"; } if ((sp.m_groupoptions & Group3Option.UnCompressed) != 0) Tiff.fprintf(fd, "{0}uncompressed data", sep); } Tiff.fprintf(fd, " ({0} = 0x{1:x})\n", sp.m_groupoptions, sp.m_groupoptions); } if (tif.fieldSet(CCITTCodec.FIELD_CLEANFAXDATA)) { Tiff.fprintf(fd, " Fax Data:"); switch (sp.m_cleanfaxdata) { case CleanFaxData.Clean: Tiff.fprintf(fd, " clean"); break; case CleanFaxData.Regenerated: Tiff.fprintf(fd, " receiver regenerated"); break; case CleanFaxData.UnClean: Tiff.fprintf(fd, " uncorrected errors"); break; } Tiff.fprintf(fd, " ({0} = 0x{1:x})\n", sp.m_cleanfaxdata, sp.m_cleanfaxdata); } if (tif.fieldSet(CCITTCodec.FIELD_BADFAXLINES)) Tiff.fprintf(fd, " Bad Fax Lines: {0}\n", sp.m_badfaxlines); if (tif.fieldSet(CCITTCodec.FIELD_BADFAXRUN)) Tiff.fprintf(fd, " Consecutive Bad Fax Lines: {0}\n", sp.m_badfaxrun); if (tif.fieldSet(CCITTCodec.FIELD_RECVPARAMS)) Tiff.fprintf(fd, " Fax Receive Parameters: {0,8:x}\n", sp.m_recvparams); if (tif.fieldSet(CCITTCodec.FIELD_SUBADDRESS)) Tiff.fprintf(fd, " Fax SubAddress: {0}\n", sp.m_subaddress); if (tif.fieldSet(CCITTCodec.FIELD_RECVTIME)) Tiff.fprintf(fd, " Fax Receive Time: {0} secs\n", sp.m_recvtime); if (tif.fieldSet(CCITTCodec.FIELD_FAXDCS)) Tiff.fprintf(fd, " Fax DCS: {0}\n", sp.m_faxdcs); }
public override void PrintDir(Tiff tif, Stream fd, TiffPrintFlags flags) { CCITTCodec sp = tif.m_currentCodec as CCITTCodec; Debug.Assert(sp != null); if (tif.fieldSet(CCITTCodec.FIELD_OPTIONS)) { string sep = " "; if (tif.m_dir.td_compression == Compression.CCITTFAX4) { Tiff.fprintf(fd, " Group 4 Options:"); if ((sp.m_groupoptions & Group3Opt.UNCOMPRESSED) != 0) { Tiff.fprintf(fd, "{0}uncompressed data", sep); } } else { Tiff.fprintf(fd, " Group 3 Options:"); if ((sp.m_groupoptions & Group3Opt.ENCODING2D) != 0) { Tiff.fprintf(fd, "{0}2-d encoding", sep); sep = "+"; } if ((sp.m_groupoptions & Group3Opt.FILLBITS) != 0) { Tiff.fprintf(fd, "{0}EOL padding", sep); sep = "+"; } if ((sp.m_groupoptions & Group3Opt.UNCOMPRESSED) != 0) { Tiff.fprintf(fd, "{0}uncompressed data", sep); } } Tiff.fprintf(fd, " ({0} = 0x{1:x})\n", sp.m_groupoptions, sp.m_groupoptions); } if (tif.fieldSet(CCITTCodec.FIELD_CLEANFAXDATA)) { Tiff.fprintf(fd, " Fax Data:"); switch (sp.m_cleanfaxdata) { case CleanFaxData.CLEAN: Tiff.fprintf(fd, " clean"); break; case CleanFaxData.REGENERATED: Tiff.fprintf(fd, " receiver regenerated"); break; case CleanFaxData.UNCLEAN: Tiff.fprintf(fd, " uncorrected errors"); break; } Tiff.fprintf(fd, " ({0} = 0x{1:x})\n", sp.m_cleanfaxdata, sp.m_cleanfaxdata); } if (tif.fieldSet(CCITTCodec.FIELD_BADFAXLINES)) { Tiff.fprintf(fd, " Bad Fax Lines: {0}\n", sp.m_badfaxlines); } if (tif.fieldSet(CCITTCodec.FIELD_BADFAXRUN)) { Tiff.fprintf(fd, " Consecutive Bad Fax Lines: {0}\n", sp.m_badfaxrun); } if (tif.fieldSet(CCITTCodec.FIELD_RECVPARAMS)) { Tiff.fprintf(fd, " Fax Receive Parameters: {0,8:x}\n", sp.m_recvparams); } if (tif.fieldSet(CCITTCodec.FIELD_SUBADDRESS)) { Tiff.fprintf(fd, " Fax SubAddress: {0}\n", sp.m_subaddress); } if (tif.fieldSet(CCITTCodec.FIELD_RECVTIME)) { Tiff.fprintf(fd, " Fax Receive Time: {0} secs\n", sp.m_recvtime); } if (tif.fieldSet(CCITTCodec.FIELD_FAXDCS)) { Tiff.fprintf(fd, " Fax DCS: {0}\n", sp.m_faxdcs); } }