All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gov.nasa.worldwind.formats.vpf.VPFPrimitiveData Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2012 United States Government as represented by the Administrator of the
 * National Aeronautics and Space Administration.
 * All Rights Reserved.
 */
package gov.nasa.worldwind.formats.vpf;

import gov.nasa.worldwind.util.*;

import java.util.*;

/**
 * @author dcollins
 * @version $Id: VPFPrimitiveData.java 1171 2013-02-11 21:45:02Z dcollins $
 */
public class VPFPrimitiveData
{
    public interface PrimitiveInfo
    {
        VPFBoundingBox getBounds();
    }

    public static class BasicPrimitiveInfo implements PrimitiveInfo
    {
        protected VPFBoundingBox bounds;

        public BasicPrimitiveInfo(VPFBoundingBox bounds)
        {
            this.bounds = bounds;
        }

        public VPFBoundingBox getBounds()
        {
            return this.bounds;
        }
    }

    public static class EdgeInfo extends BasicPrimitiveInfo
    {
        protected int edgeType;
        protected int startNode;
        protected int endNode;
        protected int leftFace;
        protected int rightFace;
        protected int leftEdge;
        protected int rightEdge;
        protected boolean isOnTileBoundary;

        public EdgeInfo(int edgeType, int startNode, int endNode, int leftFace, int rightFace, int leftEdge,
            int rightEdge, boolean isOnTileBoundary, VPFBoundingBox bounds)
        {
            super(bounds);
            this.edgeType = edgeType;
            this.startNode = startNode;
            this.endNode = endNode;
            this.leftFace = leftFace;
            this.rightFace = rightFace;
            this.leftEdge = leftEdge;
            this.rightEdge = rightEdge;
            this.isOnTileBoundary = isOnTileBoundary;
        }

        public int getEdgeType()
        {
            return this.edgeType;
        }

        public int getStartNode()
        {
            return this.startNode;
        }

        public int getEndNode()
        {
            return this.endNode;
        }

        public int getLeftFace()
        {
            return this.leftFace;
        }

        public int getRightFace()
        {
            return this.rightFace;
        }

        public int getLeftEdge()
        {
            return this.leftEdge;
        }

        public int getRightEdge()
        {
            return this.rightEdge;
        }

        public boolean isOnTileBoundary()
        {
            return this.isOnTileBoundary;
        }
    }

    public static class FaceInfo extends BasicPrimitiveInfo
    {
        protected Ring outerRing;
        protected Ring[] innerRings;
        protected VPFBoundingBox bounds;

        public FaceInfo(Ring outerRing, Ring[] innerRings, VPFBoundingBox bounds)
        {
            super(bounds);
            this.outerRing = outerRing;
            this.innerRings = innerRings;
        }

        public Ring getOuterRing()
        {
            return this.outerRing;
        }

        public Ring[] getInnerRings()
        {
            return this.innerRings;
        }
    }

    public static class Ring
    {
        protected int numEdges;
        protected int[] edgeId;
        protected int[] edgeOrientation;

        public Ring(int numEdges, int[] edgeId, int[] edgeOrientation)
        {
            this.numEdges = numEdges;
            this.edgeId = edgeId;
            this.edgeOrientation = edgeOrientation;
        }

        public int getNumEdges()
        {
            return this.numEdges;
        }

        public int getEdgeId(int index)
        {
            return this.edgeId[index];
        }

        public int getEdgeOrientation(int index)
        {
            return this.edgeOrientation[index];
        }
    }

    protected Map primitiveInfo;
    protected Map primitiveCoords;
    protected Map primitiveStrings;

    public VPFPrimitiveData()
    {
        this.primitiveInfo = new HashMap();
        this.primitiveCoords = new HashMap();
        this.primitiveStrings = new HashMap();
    }

    public PrimitiveInfo[] getPrimitiveInfo(String name)
    {
        return this.primitiveInfo.get(name);
    }

    public void setPrimitiveInfo(String name, PrimitiveInfo[] info)
    {
        this.primitiveInfo.put(name, info);
    }

    public PrimitiveInfo getPrimitiveInfo(String name, int id)
    {
        return this.primitiveInfo.get(name)[VPFBufferedRecordData.indexFromId(id)];
    }

    public VecBufferSequence getPrimitiveCoords(String name)
    {
        return this.primitiveCoords.get(name);
    }

    public void setPrimitiveCoords(String name, VecBufferSequence coords)
    {
        this.primitiveCoords.put(name, coords);
    }

    public CompoundStringBuilder getPrimitiveStrings(String name)
    {
        return this.primitiveStrings.get(name);
    }

    public void setPrimitiveStrings(String name, CompoundStringBuilder strings)
    {
        this.primitiveStrings.put(name, strings);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy