PRO NRH_PLOT_REF, edge, CADRE=cadre, LIMB=limb, ANNOTATION=annotation, $
	NOERASE=noerase, AXIS=Axis, CHARSIZE=Charsize

;+ ***********************************************************************
; NAME:
;	NRH_PLOT_REF
;
; PURPOSE:
;	Cette procedure trace le cardre, le soleil optique et met les
;	annotations pour une image servant a la superposition de contours
;	ou de points
;
; CATEGORY:
;	Visualisation
;
; CALLING SEQUENCE:
;	NRH_PLOT_REF, edge
;
; INPUTS:
;	EDGE	Limites du trace en rayon solaire [est, ouest, nord, sud]
;
; KEYWORD PARAMETERS:
;	CADRE		Trace du cadre
;	LIMB		Trace du limbe
;	ANNOTATION	Anotation du cadre
;	NOERASE
;	AXIS		Label des axes X, Y si present
;	CHARSIZE	Dimension des caracteres (0.8par defaut)
;
; OUTPUTS:
;	Non
;
; COMMON BLOCKS:
;	Non
;
; PROCEDURE:
;	
;
; EXAMPLE:
;	Please provide a simple example here
;
; MODIFICATION HISTORY:
;	Ecrit par: J Bonmartin (obspm.fr) le 07/08/98 d'apres
; 		10 janvier 1997, KLK; derniere modification: 22 mai 1997
;	Le 06/10/98 (JB)
;	     Rajoute XSTYLE, YSTYLE dans AXIS, pour ajuster la graduation
;	Le 08/08/99 rajout des Keywords AXIS et CHARSIZE
;-*******************************************************************

; Largeur du cadre a tracer
IF !P.MULTI(1) LE 0 THEN nbtrx=1 ELSE nbtrx = !P.MULTI(1)
IF !P.MULTI(2) LE 0 THEN nbtry=1 ELSE nbtry = !P.MULTI(2)
width = !d.x_vsize/nbtrx
height = !d.y_vsize/nbtry

scale = ( edge(2)-edge(0) ) / ( edge(3)-edge(1) )

fract = 0.8	; fraction de la fenetre reservee au trace
xsize = fract * width
IF scale LT 1. THEN xsize = scale * xsize
ysize = xsize / scale

IF ysize GT fract*height THEN BEGIN
	corr = fract*height / ysize
	ysize = fract*height
	xsize = scale*ysize
ENDIF

	; Numeros de la ligne et de la colonne du trace
IF !P.MULTI(1) GT 0 OR !P.MULTI(2) GT 0 THEN BEGIN
	IF !P.MULTI(0) EQ 0 THEN ntrace = 0 ELSE $
		ntrace = nbtrx*nbtry - !P.MULTI(0)
	nlig = ntrace / nbtrx
	ncol = ntrace-nlig*nbtrx
ENDIF ELSE BEGIN
	nlig = 0 & ncol = 0
ENDELSE

; positions des coins inferieur gauche et superieur droit du trace
lmargin = .5*(width-xsize)
bmargin = .5*(height-ysize)
x0 = ncol*width + lmargin
y0 = (nbtry-nlig-1)*height + bmargin
position = [x0, y0, x0+xsize, y0+ysize]

; Trace du cadre
;IF NOT KEYWORD_SET(NEWPAGE) THEN !P.MULTI(0) = !P.MULTI(0) + 1
tickann = [' ', ' ']
IF KEYWORD_SET( CADRE ) THEN $	; Tracer le cadre
	PLOT, [edge(0), edge(2)], [edge(1), edge(3)], POSITION = position, $
		XSTYLE=1, YSTYLE=1, xticks=1, yticks=1, $
		xtickn=tickann, ytickn = tickann, /DEVICE, /NODATA, $
			NOERASE=noerase $
ELSE $				; Etablir coordonnees sans tracer le cadre
	PLOT, [edge(0), edge(2)], [edge(1), edge(3)], POSITION = position, $
		xstyle=5, ystyle=5, xticks=1, yticks=1, xtickn=tickann, $
		ytickn = tickann, /DEVICE, /NODATA, NOERASE=noerase

IF KEYWORD_SET( ANNOTATION) THEN BEGIN
	IF NOT KEYWORD_SET (CHARSIZE) THEN CHARSIZE = 0.8
	IF KEYWORD_SET (AXIS) THEN BEGIN
			xtitle = "East - west [solar radii]" 
			ytitle = "South - north [solar radii]" 
	END ELSE BEGIN
			XTITLE = ''& YTITLE = ''
	ENDELSE
	AXIS, XAXIS=1, TICKLEN=-0.02, xtitle = xtitle,$
		CHARSIZE= Charsize,Xstyle=1,Ystyle=1
	AXIS, YAXIS=0, ticklen=-0.02, ytitle = ytitle,$
		CHARSIZE= Charsize,Xstyle=1,Ystyle=1
ENDIF

; Trace du limbe 
IF KEYWORD_SET(limb) THEN OPLOT_CIRCLE, 1

END

