# TODO: Add comment
# 
# Author: E.Korsching 30.11.2011, R.Voss
###############################################################################



color.set <- function(color="default", example=F, colorcode=F){
	# change the standard 8 color  palette  of R  to  a 16 color palette
	# reset by: color="default" [cmd behind: palette("default")]
	# R color scheme: see p.55 - R graphics - Paul Murrell  or  the web
	# color: choose color scheme for palette,  example=T: will plot some filled circles, lines and text
	# colorcode=T: create a color scheme for a image legend 
	# rv 2002 -- ek 2005,2010,2011
	
	if(!color=="default"){
	switch(color,
		greenRed = palette(c("#00FF00","#11EE00","#22DD00","#33CC00","#44BB00","#55AA00","#669900","#778800",
						"#887700","#996600","#AA5500","#BB4400","#CC3200","#DD2100","#EE1000","#FF0000")),
						#green: low, red: high
		greenBlackRed = palette(c("#00FF00","#00DD00","#00BB00","#009900","#007700","#005500","#003200","#001000",
						"#100000","#320000","#540000","#760000","#990000","#BB0000","#DD0000","#FF0000")),
						#green: low, black: average, red: high
		blueWhiteRed = palette(c("#0000FF","#2222FF","#4444FF","#6666FF","#8888FF","#AAAAFF","#CCCCFF","#EEEEFF",
						"#FFEEEE","#FFCCCC","#FFAAAA","#FF8888","#FF6565","#FF4343","#FF2121","#FF0000")),
						#blue: low, red: high
		whiteRed = palette(c("#FFFFFF","#FFEEEE","#FFDDDD","#FFCCCC","#FFBBBB","#FFAAAA","#FF9999","#FF8888",
						"#FF7777","#FF6666","#FF5555","#FF4444","#FF3232","#FF2121","#FF1010","#FF0000")),
						#white: low, red: high
		blackRed = palette(c("#000000","#110000","#220000","#330000","#440000","#550000","#660000","#770000",
						"#880000","#990000","#AA0000","#BB0000","#CC0000","#DD0000","#EE0000","#FF0000")),
						#black: low, red: high
		blueRed = palette(c("#0000FF","#1100EE","#2200DD","#3300CC","#4400BB","#5500AA","#660099","#770088",
						"#880077","#990066","#AA0055","#BB0044","#CC0032","#DD0021","#EE0010","#FF0000")),
						#blue: low, red: high
		rainbow = palette(c("#FF0000FF","#FF6000FF","#FFBF00FF","#DFFF00FF","#80FF00FF","#20FF00FF","#00FF40FF","#00FF9FFF",
						"#00FFFFFF","#009FFFFF","#0040FFFF","#2000FFFF","#8000FFFF","#DF00FFFF","#FF00BFFF","#FF0060FF")),
						#red,yellow,green,blue,purple,red
		cgh = palette(c("#00FF00","#22FF00","#44FF00","#66FF00","#88FF00","#AAFF00","#CCFF00","#EEFF00",
						"#FFEE00","#FFCC00","#FFAA00","#FF8800","#FF6500","#FF4300","#FF2100","#FF0000")),
						#green: loss, yellow: normal, red: gain (blue: amplicon)
		grey = palette(c("#000000","#111111","#222222","#323232","#434343","#545454","#656565","#767676",
						"#878787","#979797","#A8A8A8","#B9B9B9","#CACACA","#DBDBDB","#ECECEC","#FFFFFF")),
						#last step FCFCFC by divisor
		blueYellow = palette(c("#0000FF","#1111EE","#2222DD","#3333CC","#4444BB","#5555AA","#666699","#777788",
						"#888877","#999966","#AAAA55","#BBBB44","#CCCC32","#DDDD21","#EEEE10","#FFFF00")),
						#blue,yellow
		blueWhiteYellow = palette(c("#0000FF","#2222FF","#4444FF","#6666FF","#8888FF","#AAAAFF","#CCCCFF","#EEEEFF",
						"#FFFFEE","#FFFFCC","#FFFFAA","#FFFF88","#FFFF65","#FFFF43","#FFFF21","#FFFF00"))
						#blue,white,yellow
	)
	}else{
		palette("default")
	}
	
	if(example){	
		oldpar <- par(no.readonly=TRUE)
		par(mar=c(7,5,5,4))
		
		plot(x=0,y=0,xlim=c(-5,20),ylim=c(-5,20),type="n",
				xlab=deparse(substitute(plot(0,0,xlim=c(-5,20),ylim=c(-5,20),type="n",xlab=xlab,main=paste("Color set:",x)))),
				ylab="colorRamp",
				main=paste("Color set:",color))
		
		x <- 1:16
		y <- 1:16
		for(i in 1:16){	
			points(x[i],y[i],pch=i,col=i,cex=4)
			points(x[i],y[i]-3,pch=16,col=i,cex=4)
			segments(x[i],y[i]-3,16,-3,col=i,lty=i)
			text(x[i],y[i]+2,i)
			text(x[i],y[i]-5,i,col=i)
		}
		
		z <- "plot options:"
		z <- paste(z, "\nmargins for plot area: par(mar=c(7,5,5,4))")
		z <- paste(z, "\nplot area x1,x2,y1,y2: par(fig=c(0,0.5,0,0.5))")
		z <- paste(z, "\nlabel style, parallel,horiz.,perpent.: las=0,1,2")
		z <- paste(z, "\nplot type square box: pty=", deparse(substitute("s")))
		z <- paste(z, "\nadjust (align)text: par(adj=0,0.5,1)")
		z <- paste(z, "\nplot character: pch=1...16")
		z <- paste(z, "\nline width: lwd=0.5")
		text(-5, 15, z, adj = 0, cex=0.8)
		
		par(oldpar)
	}
	
	if(colorcode){
		#make plot area
		plot(x=0,y=0,xlim=c(0,2),ylim=c(0,17),type="n",axes="F",xlab="",ylab="")
		
		#plot
		for(i in 1:16){
			plot.bar.point.segment(x=1,height=1,width=1,col=i,density=-1,horiz=F,at=i,lwd=0.1,type="bar")
		}
	}
}

#color.set(color="blueWhiteRed", example=T, colorcode=F)
#color.set(color="blueWhiteRed", example=F, colorcode=T)

#color.set(color="whiteRed", example=T, colorcode=F)
#color.set(color="blackRed", example=T, colorcode=F)
#color.set(color="blueRed", example=T, colorcode=F)
#color.set(color="cgh", example=T, colorcode=F)
#color.set(color="grey", example=T, colorcode=F)
#color.set(color="rainbow", example=T, colorcode=F)
#color.set(color="blueYellow", example=T, colorcode=F)
#color.set(color="blueWhiteYellow", example=T, colorcode=F)

#color.set(color="default", example=T, colorcode=F)


####create sets

##generate palette
#palette()
#a.pal <- colorRampPalette(c("green", "red"),space = "rgb")	#create function
#a.pal <- colorRampPalette(c("green", "black", "red"),space = "rgb")	#create function
#a.pal(16)	#generate palette colors
#a.pal(250)	#generate palette colors

##set palette
#(palette(palette.blue.white.red(16)))	# brackets at beginning and end: print previous content of palette and the sets new content
##test
#for(i in 1:16){ cat(" ",palette()[i]) }
#require(grDevices)
#pie(rep(1,16), col=palette())	#pie(rep(1,n), col=heat.colors(n))
##reset palette
#palette("default")
#pie(rep(1,8), col=palette())	#test again
##
#gray(seq(0,1,0.066))
#rainbow(255)





