pro spd_ui_draw_object::addAxisTitle, model, titleobj, subtitleobj, titlemargin, placetitle, dir, titleorientation, showtitle, pt1, pt2, lazytitles
compile_opt idl2,hidden
zstack = .1
if ~obj_valid(titleobj) && ~obj_valid(subtitleobj) then return
showtitle = obj_valid(titleobj) && showtitle
showsubtitle = obj_valid(subtitleobj) && showtitle
if dir eq 1 then begin
orient = ~titleorientation
endif else begin
orient = titleorientation
endelse
if titleorientation eq 0 then begin
baseline = [1,0,0]
updir = [0,1,0]
endif else begin
baseline = [0,1,0]
updir = [-1,0,0]
endelse
if orient eq 0 then begin
halign = 0.5
valign = ~(placetitle xor dir)
endif else begin
valign = 1.0
halign = ~placetitle
endelse
if showtitle then begin
titleobj->getproperty, value=titletext, size=titlesize
if keyword_set(lazytitles) then begin
titletext = strjoin(strsplit(titletext,'_',/extract),'!c')
endif
titlesplit = strsplit(titletext,'!c|!C',/extract,/regex,count=numlines)
endif else numlines = 0
if showsubtitle then begin
subtitleobj->getproperty, value=subtitletext, size=subtitlesize
if keyword_set(lazytitles) then begin
subtitletext = strjoin(strsplit(subtitletext,'_',/extract),'!c')
endif
subtitlesplit = strsplit(subtitletext,'!c|!C',/extract,/regex,count=numsublines)
endif else numsublines=0
if showtitle then begin
titleobj->getProperty, size=titlesize, value=titletext, color=titlecolor
titlesize = titlesize > 1
titleFont = titleobj->getGrFont()
titleFont->setProperty,size=titlesize*self->getZoom()
if showsubtitle then begin
subtitleobj->getProperty, size=subtitlesize
endif else subtitlesize=titlesize
subtitlesize +=1
titlesize += 1
offset1 = (dir xor placetitle)*subtitlesize*numsublines*pt1
offset2 = (dir eq 1) ? titlesize*numlines*pt2 : -titlesize*numlines*pt2
if orient eq 0 then begin
loc1 = .5D
loc2 = -(titlemargin*pt1+offset1)
endif else begin
loc1 = .5D + offset2
loc2 = -(titlemargin*pt1)
endelse
if placetitle eq 1 then begin
loc2 = 1 - loc2
endif
if dir eq 1 then begin
loc = [loc2,loc1,zstack]
endif else begin
loc = [loc1,loc2,zstack]
endelse
if keyword_set(lazytitles) then begin
titletext = strjoin(strsplit(titletext,'_',/extract),'!c')
endif
titlegrText = obj_new('IDLgrText', titletext,$
font=titleFont,$
color=self->convertColor(titlecolor),$
location=loc,$
alignment=hAlign,$
vertical_alignment=valign,$
baseline=baseline,$
recompute_dimensions=0,$
enable_formatting=1, $
updir=updir)
model->add,titlegrText
endif
if showsubtitle then begin
subtitleobj->getProperty, size=subtitlesize, value=subtitletext, color=subtitlecolor
if showtitle then begin
titleobj->getProperty, size=titlesize
endif else titlesize=subtitlesize
titlesize = titlesize > 1
subtitlesize = subtitlesize > 1
titlesize+=1
subtitleFont = subtitleobj->getGrFont()
subtitleFont->setProperty, size=subtitlesize*self->getZoom()
subtitlesize +=1
offset1 = (~(dir xor placetitle))*titlesize*numlines*pt1
offset2 = (dir eq 1) ? subtitlesize*numsublines*pt2 : -subtitlesize*numsublines*pt2
if orient eq 0 then begin
loc1 = .5D
loc2 = -(titlemargin*pt1+offset1)
endif else begin
loc1 = .5D
loc2 = -(titlemargin*pt1)
endelse
if placetitle eq 1 then begin
loc2 = 1 - loc2
endif
if dir eq 1 then begin
loc = [loc2,loc1,zstack]
endif else begin
loc = [loc1,loc2,zstack]
endelse
if keyword_set(lazytitles) then begin
subtitletext = strjoin(strsplit(subtitletext,'_',/extract),'!c')
endif
subtitlegrText = obj_new('IDLgrText', subtitletext,$
font=subtitleFont,$
color=self->convertColor(subtitlecolor),$
location=loc,$
alignment=hAlign,$
vertical_alignment=valign,$
baseline=baseline,$
recompute_dimensions=0,$
enable_formatting=1, $
updir=updir)
model->add,subtitlegrText
endif
end