コード例 #1
0
 public NITFSSegment getSegment(NITFSSegmentType segmentType)
 {
     for (NITFSSegment seg : segments)
     {
         if (null != seg && seg.segmentType.Equals(segmentType))
         {
             return(seg);
         }
     }
     return(null);
 }
コード例 #2
0
 public NITFSSegment(NITFSSegmentType segmentType, java.nio.ByteBuffer buffer,
                     int headerStartOffset, int headerLength, int dataStartOffset, int dataLength)
 {
     this.buffer            = buffer;
     this.segmentType       = segmentType;
     this.headerStartOffset = headerStartOffset;
     this.headerLength      = headerLength;
     this.dataStartOffset   = dataStartOffset;
     this.dataLength        = dataLength;
     this.savedBufferOffset = buffer.position();
 }
コード例 #3
0
        private int parseSegment(NITFSSegmentType segType, int nextSegmentOffset)
        {
            int headerLengthSize = segType.getHeaderLengthSize();
            int dataLengthSize   = segType.getDataLengthSize();

            int numOfSegments = Integer.parseInt(NITFSUtil.getString(this.buffer, 3));

            for (int i = 0; i < numOfSegments; i++)
            {
                int segHeaderLength = Integer.parseInt(NITFSUtil.getString(this.buffer, headerLengthSize));
                int seqDataLength   = Integer.parseInt(NITFSUtil.getString(this.buffer, dataLengthSize));

                int          saveOffset = this.buffer.position(); // pass buffer to NITFSSegment to parse their headers' contents
                NITFSSegment segment;
                switch (segType)
                {
                case IMAGE_SEGMENT:
                    segment = new NITFSImageSegment(this.buffer, nextSegmentOffset, segHeaderLength,
                                                    nextSegmentOffset + segHeaderLength, seqDataLength);
                    break;

                case SYMBOL_SEGMENT:
                    segment = new NITFSSymbolSegment(this.buffer, nextSegmentOffset, segHeaderLength,
                                                     nextSegmentOffset + segHeaderLength, seqDataLength);
                    break;

                case LABEL_SEGMENT:
                    segment = new NITFSLabelSegment(this.buffer, nextSegmentOffset, segHeaderLength,
                                                    nextSegmentOffset + segHeaderLength, seqDataLength);
                    break;

                case TEXT_SEGMENT:
                    segment = new NITFSTextSegment(this.buffer, nextSegmentOffset, segHeaderLength,
                                                   nextSegmentOffset + segHeaderLength, seqDataLength);
                    break;

                case DATA_EXTENSION_SEGMENT:
                    segment = new NITFSDataExtensionSegment(this.buffer, nextSegmentOffset, segHeaderLength,
                                                            nextSegmentOffset + segHeaderLength, seqDataLength);
                    break;

                case RESERVED_EXTENSION_SEGMENT:
                    segment = new NITFSReservedExtensionSegment(this.buffer, nextSegmentOffset, segHeaderLength,
                                                                nextSegmentOffset + segHeaderLength, seqDataLength);
                    break;

                case USER_DEFINED_HEADER_SEGMENT:
                    segment = new RPFUserDefinedHeaderSegment(this.buffer);
                    break;

                case EXTENDED_HEADER_SEGMENT:    // // throw exception - wrong parser for EXTENDED_HEADER_SEGMENT
                    segment = new NITFSExtendedHeaderSegment(this.buffer, nextSegmentOffset, segHeaderLength,
                                                             nextSegmentOffset + segHeaderLength, seqDataLength);
                    break;

                default:
                    throw new NITFSRuntimeException("NITFSReader.UnknownOrUnsupportedSegment", segType.ToString());
                }
                this.segments.add(segment);

                nextSegmentOffset += segHeaderLength + seqDataLength;
                buffer.position(saveOffset); // restore offset
            }
            return(nextSegmentOffset);
        }
コード例 #4
0
ファイル: RPFFile.cs プロジェクト: zhj149/WorldWindJava.NET
 public NITFSSegment getNITFSSegment(NITFSSegmentType segmentType)
 {
     return((null != nitfsMsg) ? nitfsMsg.getSegment(segmentType) : null);
 }