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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #5
0
        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);
            }
        }
Example #6
0
        /// <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]);
            }
        }
Example #7
0
 /// <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)
 {
 }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
 /// <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)
 {
 }
Example #11
0
        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);
            }
        }