Get the color of a trace on a graph

Average rating
(0 votes)

Paste the code below into an Igor procedure file and compile. Here is an example of how to use the code:

Make test
Display test
print GetTraceColor("Graph0", "test")
  65535,0,0
ModifyGraph rgb=(0,0,39168)
print GetTraceColor("Graph0", "test")
  0,0,39168

//**
// Get the RGB triplet representing the color of a trace on a graph.
//
// @param graphName
// 	A string containing the name of the graph.
// @param traceName
// 	A string containing the name of the trace.
// @return
// 	A string containing a comma separated list with the red, green,
// 	and blue numeric values of the specified trace, or if there was
// 	an error an empty string will be returned.
//*
Function/S GetTraceColor(graphName, traceName)
	String graphName
	String traceName
 
	if (WinType(graphName) != 1)
		printf "There is not a graph named %s.\r", graphName
		return ""
	endif
 
	String info = TraceInfo(graphName, traceName, 0)
	if (strlen(info) <= 0)
		printf "There is not a trace named %s on graph %s.\r", traceName, graphName
		return ""
	endif
 
	String traceRecreation = info[strsearch(info, "RECREATION", 1), strlen(info) - 1]
	String traceColors = StringByKey("rgb(x)", traceRecreation, "=", ";")
 
	// Remove parenthesis from string.
	traceColors = RemoveEnding(traceColors[1, strlen(traceColors) - 1], ")")
	return traceColors				
End

Back to top