;+
; NAME:
;	put_logo
; PURPOSE:
;	Adds logo to image
; CATEGORY:
;	sat/idl/util
; CALLING SEQUENCE:
	PRO put_logo, img, logo=logo, match_background=match_background
; INPUTS:
; OPTIONAL INPUT PARAMETERS:
; OUTPUTS:
; OPTIONAL OUTPUT PARAMETERS:
; INCLUDE:
	@compile_opt.pro		; On error, return to caller
; CALLS:
;	IsType, img_read
; PROCEDURE:
;	Crappy
; MODIFICATION HISTORY:
;	OCT-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
;-

InitVar, match_background, /key

IF NOT IsType(logo, /string) THEN RETURN

ul = strpos(logo,'ul:') EQ 0
ur = strpos(logo,'ur:') EQ 0
ll = strpos(logo,'ll:') EQ 0
lr = strpos(logo,'lr:') EQ 0

CASE ul OR ur OR ll OR lr OF
0: BEGIN
	name = logo
	ll = 1
END
1: name = strmid(logo,3)
ENDCASE

dim_img  = size(img,/dim)
true_img = size(img,/n_dim) EQ 3

CASE true_img OF
0: truedim_img = -1
1: truedim_img = (where(dim_img EQ 3))[0]
ENDCASE

IF NOT img_read(name,img_logo,red,green,blue,/silent,truedim=truedim_img+1) THEN RETURN

dim_logo  = size(img_logo,/dim)
true_logo = size(img_Logo,/n_dim) EQ 3

IF true_logo NE true_img THEN BEGIN

	IF true_logo THEN BEGIN
		message, /info, 'do not know how to put truecolor logo in 256-color image'
		RETURN
	ENDIF

	IF IsType(red  ,/undefined) THEN red   = bindgen(256)
	IF IsType(green,/undefined) THEN green = bindgen(256)
	IF IsType(blue ,/undefined) THEN blue  = bindgen(256)

	tmp_logo = img_logo
	img_logo = SuperArray(tmp_logo, after=truedim_img, 3)

	img_logo = SubArray(img_logo, dim=truedim_img, elem=0, replace=red  [tmp_logo])
	img_logo = SubArray(img_logo, dim=truedim_img, elem=1, replace=green[tmp_logo])
	img_logo = SubArray(img_logo, dim=truedim_img, elem=2, replace=blue [tmp_logo])

	dim_logo = size(img_logo,/dim)
	true_logo = 1

ENDIF

CASE true_img OF
0: BEGIN
	xdim = 0
	ydim = 1
END
1: BEGIN
	xdim = (truedim_img+1) mod 3
	ydim = (truedim_img+2) mod 3
END
ENDCASE

CASE 1 OF
ul: BEGIN
	x = 0
	y = dim_img[ydim]-dim_logo[ydim]
END
ur: BEGIN
	x = dim_img[xdim]-dim_logo[xdim]
	y = dim_img[ydim]-dim_logo[ydim]
END
ll: BEGIN
	x = 0
	y = 0
END
lr: BEGIN
	x = dim_img[xdim]-dim_logo[xdim]
	y = 0
END
ENDCASE

CASE truedim_img OF
-1: BEGIN
	IF match_background THEN	$
		IF abs(img_logo[0]-!p.background) GT !d.n_colors/2 THEN		$
			img_logo = max(img_logo)-img_logo
	img[x:x+dim_logo[xdim]-1,y:y+dim_logo[ydim]-1] = img_logo
END
 0: img[*,x:x+dim_logo[xdim]-1,y:y+dim_logo[ydim]-1] = img_logo
 1: img[x:x+dim_logo[xdim]-1,*,y:y+dim_logo[ydim]-1] = img_logo
 2: img[x:x+dim_logo[xdim]-1,y:y+dim_logo[ydim]-1,*] = img_logo
ENDCASE

RETURN  &  END
