;******************************************************************************
;* File name: ql_zoomi.pro                                                    *
;*                                                                            *
;* Content  : 	ql_zoomi_event                                                *
;*              ql_zoomi_trt                                                  * 
;*                                                                            *
;*                                                                            *
;* Date		Author		Comment                                       *
;* -------------------------------------------------------------------------- *
;* 07-11-95	E.PETIT		Creation                                      *
;*                                                                            *
;******************************************************************************

;***
;##############################################################################
;#Function  name   : ql_zoomi_event                                           #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Purpose          : manage image zoom events                                 #
;##############################################################################

PRO ql_zoomi_event, ev           
  ;============================================================================
  ;                       Common Block in use
  ;============================================================================
  COMMON zoomi_com
  COMMON curr_data_i_com

  ;============================================================================
  ;                       Initialization
  ;============================================================================

  ;============================================================================
  ;                       Processing 
  ;============================================================================

;help, ev, /str

  CASE ev.id OF


    zi_done_bt: BEGIN
      WDELETE, draw_pixmap
      WDELETE, zoom_pixmap
      WIDGET_CONTROL, ev.top, /DESTROY
    END

    ELSE: BEGIN
      tmp = '('+STRING (ev.x0, FORMAT='(I4.4)') +',' + STRING (ev.y0, FORMAT='(I4.4)')+')
      tmp = 'Lower Left corner coordinates: '+tmp
      WIDGET_CONTROL, zi_ll_lbl ,SET_VALUE=tmp

      CASE ev.src OF
        'I': BEGIN
           xdev = (ev.x<curr_dctrl_i.x.nb_dot-1)>0
           ydev = (ev.y<curr_dctrl_i.y.nb_dot-1)>0
           tmp = STRING (xdev, FORMAT='(I4.4)') +',' + STRING (ydev, FORMAT='(I4.4)')
           WIDGET_CONTROL, zi_ii_dev_lbl ,SET_VALUE=tmp
                                                                      
           xdata  = curr_dctrl_i.x.plot_min + $
            (xdev*(curr_dctrl_i.x.plot_max-curr_dctrl_i.x.plot_min))/(curr_dctrl_i.x.plot_sz-1)
           ydata    = curr_dctrl_i.y.plot_min + $
            (ydev*(curr_dctrl_i.y.plot_max-curr_dctrl_i.y.plot_min))/(curr_dctrl_i.y.plot_sz-1)
           tmp = STRING (xdata, FORMAT='(F10.3)') +',' + STRING (ydata, FORMAT='(F10.3)')
           WIDGET_CONTROL, zi_ii_dat_lbl ,SET_VALUE=tmp

           tmp = 'Data ('+STRING (xdev,FORMAT='(I4.4)')+','+STRING(ydev,FORMAT='(I4.4)')+'): '
           WIDGET_CONTROL,zi_ii_val_prp,SET_VALUE=tmp
           dataval = curr_data_i(xdev,ydev)
           tmp = STRING (dataval, FORMAT='(F10.3)')
           WIDGET_CONTROL, zi_ii_val_lbl ,SET_VALUE=tmp           
         END

        'Z': BEGIN

           xdev = (((FLOAT(ev.x)/FLOAT(ev.scale))+FLOAT(ev.x0))<(curr_dctrl_i.x.nb_dot-1))>0
           ydev = (((FLOAT(ev.y)/FLOAT(ev.scale))+FLOAT(ev.y0))<(curr_dctrl_i.y.nb_dot-1))>0
           tmp = STRING (xdev, FORMAT='(F10.3)') +',' + STRING (ydev, FORMAT='(F10.3)')
           WIDGET_CONTROL, zi_zi_dev_lbl ,SET_VALUE=tmp

           xdata  = curr_dctrl_i.x.plot_min + $
            (xdev*(curr_dctrl_i.x.plot_max-curr_dctrl_i.x.plot_min))/(curr_dctrl_i.x.plot_sz-1)
           ydata    = curr_dctrl_i.y.plot_min + $
            (ydev*(curr_dctrl_i.y.plot_max-curr_dctrl_i.y.plot_min))/(curr_dctrl_i.y.plot_sz-1)
           tmp = STRING (xdata, FORMAT='(F10.3)') +',' + STRING (ydata, FORMAT='(F10.3)')
           WIDGET_CONTROL, zi_zi_dat_lbl ,SET_VALUE=tmp

           xdevpix = ROUND(xdev)
           ydevpix = ROUND(ydev)
           tmp = 'Data ('+STRING (xdevpix,FORMAT='(I4.4)')+','+STRING(ydevpix,FORMAT='(I4.4)')+'): '
           WIDGET_CONTROL,zi_zi_val_prp,SET_VALUE=tmp
           dataval = curr_data_i(xdevpix,ydevpix)
           tmp = STRING (dataval, FORMAT='(F10.3)')
           WIDGET_CONTROL, zi_zi_val_lbl ,SET_VALUE=tmp           

         END


         ELSE:

      ENDCASE
    END 
  ENDCASE
END

;***
;##############################################################################
;#Function  name   : ql_zoomi_trt                                             #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Purpose          : manage image zoom                                        #
;##############################################################################

PRO QL_ZOOMI_TRT, ev
  ;============================================================================
  ;                       Common Block in use
  ;============================================================================
  COMMON curr_data_i_com    
  COMMON const_com
  COMMON zoomi_com

  ;===============================================================================
  ;                               Initialization
  ;===============================================================================

  ;===============================================================================
  ;                                Processing
  ;===============================================================================
  WIDGET_CONTROL, /HOURGLASS
  zi_base = WIDGET_BASE (TITLE='QL Zoom', XOFFSET=745, YOFFSET=475, $
	    /COLUMN,/MODAL)
    zi_cw_base =WIDGET_BASE (zi_base,/ROW)
    zcoord_base = WIDGET_BASE (zi_base,/ROW)
    zcmd_base = WIDGET_BASE (zi_base,/COLUMN)

  zi_cw      = QL_CW_ZOOM (zi_cw_base                               , $
                          /TRACK                                    , $ 
                          SCALE = 4                                 , $
                          RETAIN = 2                                , $
                          XSIZE = curr_dctrl_i.x.nb_dot             , $
                          YSIZE = curr_dctrl_i.y.nb_dot             , $
                          X_SCROLL_SIZE = curr_dctrl_i.x.nb_dot<512 , $
                          Y_SCROLL_SIZE = curr_dctrl_i.y.nb_dot<512 , $
                          X_ZSIZE = 256                             , $
                          Y_ZSIZE = 256 )                           


  col1_base = WIDGET_BASE (zcoord_base, /COLUMN, /FRAME)
    ret = WIDGET_LABEL (col1_base, VALUE='Initial Image current values')
    ret = WIDGET_LABEL (col1_base, VALUE=' ')
    ret = WIDGET_LABEL (col1_base, VALUE=' ')

    dummy = WIDGET_BASE (col1_base, /ROW)
    ret = WIDGET_LABEL (dummy, VALUE='X dev ,Y dev    : ', FONT=Hd_Font_Bold)
    tmp = STRING (0, FORMAT='(I4.4)') +',' + STRING (0, FORMAT='(I4.4)')
    zi_ii_dev_lbl = WIDGET_LABEL (dummy, VALUE=tmp, FONT=Hd_Font)

    dummy = WIDGET_BASE (col1_base, /ROW)
    ret = WIDGET_LABEL (dummy,VALUE='X data,Y data   : ', FONT=Hd_Font_Bold)
    tmp = STRING (0, FORMAT='(F10.3)') +',' + STRING (0, FORMAT='(F10.3)')
    zi_ii_dat_lbl = WIDGET_LABEL (dummy, VALUE=tmp, FONT=Hd_Font)

    dummy = WIDGET_BASE (col1_base, /ROW)
    zi_ii_val_prp = WIDGET_LABEL (dummy, VALUE='Data (0000,0000): ', FONT=Hd_Font_Bold)
    tmp = STRING (0, FORMAT='(F10.3)')
    zi_ii_val_lbl = WIDGET_LABEL (dummy, VALUE=tmp, FONT=Hd_Font)


  col2_base = WIDGET_BASE (zcoord_base, /COLUM, /FRAME)
    ret = WIDGET_LABEL (col2_base, VALUE='Zoomed Image current values')
    zi_ll_lbl = WIDGET_LABEL (col2_base, VALUE='Lower Left corner coordinates: (0000,0000)')
    ret = WIDGET_LABEL (col2_base, VALUE=' ')

    dummy = WIDGET_BASE (col2_base, /ROW)
    ret = WIDGET_LABEL (dummy, VALUE='X dev,Y dev     : ', FONT=Hd_Font_Bold)
    tmp = STRING (0, FORMAT='(F10.3)') +',' + STRING (0, FORMAT='(F10.3)')
    zi_zi_dev_lbl = WIDGET_LABEL (dummy, VALUE=tmp, FONT=Hd_Font)

    dummy = WIDGET_BASE (col2_base, /ROW)
    ret = WIDGET_LABEL (dummy, VALUE='X data, Y data  : ', FONT=Hd_Font_Bold)
    tmp = STRING (0, FORMAT='(F10.3)') +',' + STRING (0, FORMAT='(F10.3)')
    zi_zi_dat_lbl = WIDGET_LABEL (dummy, VALUE=tmp, FONT=Hd_Font)

    dummy = WIDGET_BASE (col2_base, /ROW)
    zi_zi_val_prp = WIDGET_LABEL (dummy, VALUE='Data (0000,0000): ', FONT=Hd_Font_Bold)
    tmp = STRING (0, FORMAT='(F10.3)')
    zi_zi_val_lbl = WIDGET_LABEL (dummy, VALUE=tmp, FONT=Hd_Font)


  zi_done_bt = WIDGET_BUTTON (zcmd_base, VALUE='DONE')

  WIDGET_CONTROL, zi_base, /REALIZE
  WIDGET_CONTROL, zi_cw, SET_VALUE=curr_data_i


  XMANAGER, 'ql_zoomi', zi_base

 END
