Exemple #1
0
            public VecDataBuffer(VecReader reader, int coordsPerElem, BufferFactory bufferFactory, int numRows,
                                 int elementsPerRow)
            {
                int           bufferLength = Math.Max(1, elementsPerRow);
                BufferWrapper buffer       = bufferFactory.newBuffer((1 + numRows) * coordsPerElem * bufferLength);

                this.reader = reader;
                this.buffer = new VecBufferSequence(new VecBuffer(coordsPerElem, buffer), 1 + numRows);
                // Insert an empty coordinate so that the coordinate N cooresponds to row id N.
                this.buffer.append(VecBuffer.emptyVecBuffer(coordsPerElem));
            }
Exemple #2
0
            public void read(ByteBuffer byteBuffer, int length)
            {
                VecBuffer vecBuffer = this.reader.read(byteBuffer, length);

                if (vecBuffer != null)
                {
                    this.buffer.append(vecBuffer);
                }
                else
                {
                    this.buffer.append(VecBuffer.emptyVecBuffer(this.buffer.getCoordsPerVec()));
                }
            }
        public static VPFBoundingBox fromVecBuffer(VecBuffer buffer)
        {
            if (buffer == null)
            {
                String message = Logging.getMessage("nullValue.BufferIsNull");
                Logging.logger().severe(message);
                throw new ArgumentException(message);
            }

            if (buffer.getCoordsPerVec() < 2)
            {
                String message = Logging.getMessage("generic.BufferIncompatible", buffer);
                Logging.logger().severe(message);
                throw new ArgumentException(message);
            }

            double xmin = Double.MaxValue;
            double ymin = Double.MaxValue;
            double xmax = -Double.MaxValue;
            double ymax = -Double.MaxValue;

            int bufferSize = buffer.getSize();

            double[] compArray = new double[2];

            for (int i = 0; i < bufferSize; i++)
            {
                buffer.get(i, compArray);

                if (xmin > compArray[0])
                {
                    xmin = compArray[0];
                }
                if (xmax < compArray[0])
                {
                    xmax = compArray[0];
                }

                if (ymin > compArray[1])
                {
                    ymin = compArray[1];
                }
                if (ymax < compArray[1])
                {
                    ymax = compArray[1];
                }
            }

            return(new VPFBoundingBox(xmin, ymin, xmax, ymax));
        }
Exemple #4
0
            public VecBuffer read(ByteBuffer byteBuffer, int length)
            {
                VecBuffer vecBuffer = null;

                int prevLimit = byteBuffer.limit();
                int limit     = byteBuffer.position() + (this.coordsPerElem * this.bytesPerCoord * length);

                try
                {
                    byteBuffer.limit(limit);
                    BufferWrapper newBuffer = this.doRead(byteBuffer);
                    vecBuffer = new VecBuffer(this.coordsPerElem, newBuffer);
                }
                finally
                {
                    byteBuffer.limit(prevLimit);
                    byteBuffer.position(limit);
                }

                return(vecBuffer);
            }