protected Figure createFigure(Point[] points, int numPoints, boolean closed) {
		ContainerFigure container = new ContainerFigure();
		if (closed && settings.commonFillType != ToolSettings.ftNone && numPoints >= 3) {
			container.add(new SolidPolygonFigure(settings.commonBackgroundColor, points, numPoints));
		}
		if (! closed || settings.commonFillType != ToolSettings.ftSolid || numPoints < 3) {
			for (int i = 0; i < numPoints - 1; ++i) {
				final Point a = points[i];
				final Point b = points[i + 1];
				container.add(new LineFigure(settings.commonForegroundColor, settings.commonBackgroundColor, settings.commonLineStyle,
					a.x, a.y, b.x, b.y));
			}
			if (closed) {
				final Point a = points[points.length - 1];
				final Point b = points[0];
				container.add(new LineFigure(settings.commonForegroundColor, settings.commonBackgroundColor, settings.commonLineStyle,
					a.x, a.y, b.x, b.y));
			}
		}
		return container;
	}