public String parseState(mxCellState state, boolean edge)
	{
		Map<String, Object> style = state.getStyle();

		// Parses the bounds
		state.setX(mxUtils.getDouble(style, "x"));
		state.setY(mxUtils.getDouble(style, "y"));
		state.setWidth(mxUtils.getDouble(style, "width"));
		state.setHeight(mxUtils.getDouble(style, "height"));

		// Parses the absolute points list
		List<mxPoint> pts = parsePoints(mxUtils.getString(style, "points"));

		if (pts.size() > 0)
		{
			state.setAbsolutePoints(pts);
		}

		// Parses the label and label bounds
		String label = mxUtils.getString(style, "label");

		if (label != null && label.length() > 0)
		{
			mxPoint offset = new mxPoint(mxUtils.getDouble(style, "dx"),
					mxUtils.getDouble(style, "dy"));
			mxRectangle vertexBounds = (!edge) ? state : null;
			state.setLabelBounds(mxUtils.getLabelPaintBounds(label, state
					.getStyle(), mxUtils.isTrue(style, "html", false), offset,
					vertexBounds, scale));
		}

		return label;
	}