private void initPrintWriter(StringBuilder sb) {

		Log.info("Entities = " + getData().getEntities().size());
		final boolean huge = getData().getEntities().size() > 800;

		sb.append("digraph unix {");
		for (String s : dotStrings) {
			sb.append(s);
		}
		sb.append("bgcolor=\"" + getAsHtml(getData().getSkinParam().getBackgroundColor()) + "\";");
		if (huge) {
			sb.append("size=\"400,400;\"");
		} else {
			sb.append("ratio=auto;");
			// sb.append("concentrate=true;");
		}
		// sb.append("ordering=out;");
		sb.append("compound=true;");
		final DotSplines dotSplines = getData().getSkinParam().getDotSplines();
		final GraphvizLayoutStrategy strategy = getData().getSkinParam().getStrategy();
		if (dotSplines == DotSplines.ORTHO) {
			sb.append("splines=ortho;");
		} else if (dotSplines == DotSplines.POLYLINE) {
			sb.append("splines=polyline;");
		} else if (strategy != GraphvizLayoutStrategy.DOT) {
			sb.append("splines=true;");
		}

		// if (strategy == GraphvizLayoutStrategy.NEATO) {
		// sb.append("overlap=false;");
		// }
		if (strategy != GraphvizLayoutStrategy.DOT) {
			sb.append("layout=" + strategy.name().toLowerCase() + ";");
			sb.append("overlap=false;");
		}

		sb.append("remincross=true;");
		sb.append("searchsize=500;");
		if (getData().getRankdir() == Rankdir.LEFT_TO_RIGHT) {
			sb.append("rankdir=LR;");
		}

		if (getData().getDpi() != 96) {
			sb.append("dpi=" + getData().getDpi() + ";");
			sb.append("imagescale=both;");
		}
	}