public boolean drawShape(mxGraphicsCanvas2D canvas, mxCellState state,
			mxRectangle bounds, boolean background)
	{
		Element elt = (background) ? bgNode : fgNode;

		if (elt != null)
		{
			String direction = mxUtils.getString(state.getStyle(),
					mxConstants.STYLE_DIRECTION, null);
			mxRectangle aspect = computeAspect(state, bounds, direction);
			double minScale = Math.min(aspect.getWidth(), aspect.getHeight());
			double sw = strokewidth.equals("inherit") ? mxUtils.getDouble(
					state.getStyle(), mxConstants.STYLE_STROKEWIDTH, 1)
					* state.getView().getScale() : Double
					.parseDouble(strokewidth) * minScale;
			lastMoveX = 0;
			lastMoveY = 0;
			canvas.setStrokeWidth(sw);

			Node tmp = elt.getFirstChild();

			while (tmp != null)
			{
				if (tmp.getNodeType() == Node.ELEMENT_NODE)
				{
					drawElement(canvas, state, (Element) tmp, aspect);
				}

				tmp = tmp.getNextSibling();
			}

			return true;
		}

		return false;
	}