chromium/chrome/browser/chromeos/printing/doc/printer_flow_chart.dot

// This is the source file for printer_flow_chart.svg.
//
// If you make changes, update the .png with this command:
//
// dot -Tpng printer_flow_chart.dot > printer_flow_chart.png

strict digraph printer_flow {
	 // Source nodes
	 newrank=true;
	 {
	  rank=same;
	  NEW_USB_PRINTER [label="A new USB\nprinter appears"];
	  NEW_ZEROCONF_PRINTER [label="A new zeroconf\nprinter appears"];
	  NEW_USER_PRINTER [label="User adds\nprinter in settings"];
	  NEW_ENTERPRISE_PRINTER [label="A new enterprise\nprinter appears"];
  }

	// Ending nodes
	{
		rank=same;
		node [shape=doublecircle; margin=0];
		SAVED_PRINTERS  [label="In SAVED\nprinters list"];
		ENTERPRISE_PRINTERS [label="In ENTERPRISE\nprinters list"];
		AUTOMATIC_PRINTERS [label="In AUTOMATIC\nprinters list"];
		DISCOVERED_PRINTERS [label="In DISCOVERED\nprinters list"];
		DELETED [label="Deleted"; margin=.1];
	}

	AVAILABLE_AS_DISCOVERED [label="Available in settings\ndiscovery dialog";
                          	rank=2];

	CAN_AUTOCONFIGURE [label="Can be configured\nautomatically?";
	                   shape=diamond];
	CAN_AUTOCONFIGURE_YES [label="Yes"];
	CAN_AUTOCONFIGURE_NO [label="No"];

	USER_PRINTS [label="User prints\nusing printer"];
	USER_REMOVES_IN_SETTINGS [label="User removes\nin settings"];

	NEW_USB_PRINTER -> CAN_AUTOCONFIGURE;
	NEW_ZEROCONF_PRINTER -> CAN_AUTOCONFIGURE;
	NEW_ENTERPRISE_PRINTER -> ENTERPRISE_PRINTERS;

	CAN_AUTOCONFIGURE -> CAN_AUTOCONFIGURE_YES;
	CAN_AUTOCONFIGURE -> CAN_AUTOCONFIGURE_NO;

	CAN_AUTOCONFIGURE_YES -> AUTOMATIC_PRINTERS;
	CAN_AUTOCONFIGURE_NO -> DISCOVERED_PRINTERS;

	AUTOMATIC_PRINTERS -> USER_PRINTS;
	AUTOMATIC_PRINTERS -> AVAILABLE_AS_DISCOVERED;
	DISCOVERED_PRINTERS -> AVAILABLE_AS_DISCOVERED;

	AVAILABLE_AS_DISCOVERED -> NEW_USER_PRINTER;

	USER_PRINTS -> SAVED_PRINTERS;
	NEW_USER_PRINTER -> SAVED_PRINTERS;
	SAVED_PRINTERS -> USER_REMOVES_IN_SETTINGS;
	USER_REMOVES_IN_SETTINGS -> NEW_ZEROCONF_PRINTER;
	USER_REMOVES_IN_SETTINGS -> NEW_USB_PRINTER;
	USER_REMOVES_IN_SETTINGS -> DELETED;
}