Vector getLineDashPattern() {
        Vector dashPattern = null;
        Number dashPhase = new Float(0f);
        float[] dashArray = null;
        if (entries.containsKey("D")) {
            try {
                Vector dashData = (Vector) entries.get("D");
                // pop dashPhase off the stack
                dashPhase = (Number) dashData.elementAt(1);
                // pop the dashVector of the stack
                Vector dashVector = (Vector) dashData.elementAt(0);
                // if the dash vector size is zero we have a default none dashed
                // line and thus we skip out
                if (dashVector.size() > 0) {
                    // conver dash vector to a array of floats
                    final int sz = dashVector.size();
                    dashArray = new float[sz];
                    for (int i = 0; i < sz; i++) {
                        dashArray[i] = ((Number) dashVector.get(i)).floatValue();
                    }
                }
                // default to standard black line
                else {
                    dashPhase = new Float(0f);
                    dashArray = null;
                }
                dashPattern = new Vector(2);
                dashPattern.add(dashArray);
                dashPattern.add(dashPhase);
            }
            catch (ClassCastException e) {
                logger.log(Level.FINE, "Dash pattern syntax error: ", e);
            }
        }
        return dashPattern;
    }