!-------------------------------------------------
!  SLpack module
!-------------------------------------------------
module slpack
  use dcl_common
  interface DclSetFrameSize
     module procedure slform, slsize
  end interface DclSetFrameSize
  contains
!-----------------------------------------------------------------------
!主要ルーチン
    subroutine DclInitLayout(xmax,ymax,factor) !初期化
      real, intent(in) :: xmax, ymax, factor
      call slinit(xmax,ymax,factor)
    end subroutine

    subroutine DclDivideFrame(cform,ix,iy) !フレームの分割
      character(len=1), intent(in) :: cform  !方向を指定
      integer,   intent(in) :: ix          !X方向, Y方向の分割数
      integer,   intent(in) :: iy
      call sldiv(cform,ix,iy)
    end subroutine

    subroutine DclSetFrameMargin(left, right, bottom, top)   !マージンの設定． 
      real,      intent(in) :: left, right, bottom, top
      call slmgn(left, right, bottom, top)
    end subroutine

    subroutine DclSetAspectRatio(rx,ry)  !縦横比の設定．   
      real,      intent(in) :: rx,ry  !フレームの縦横比を与える
      call slrat(rx,ry)
    end subroutine

    subroutine DclSetFrameTitle(title,side,x_position,y_position,height,nt)
      character(len=*), intent(in) :: title
      character(len=1), intent(in) :: side
      real,             intent(in) :: x_position, y_position 
      real,             intent(in) :: height
      integer,          intent(in) :: nt         !何番目の文字列かを指定する
      call slsttl(title,side,x_position,y_position,height,nt) 
    end subroutine
!--------------------------------------------------------------------
!作画境界
    subroutine DclDrawViewPortFrame(index)  !ビューポートの枠を描く．
      integer,   intent(in) :: index  !線分のラインインデクス 
      call slpvpr(index)
    end subroutine

    subroutine DclDrawDeviceWindowFrame(index)  !ウインドウの枠を描く
      integer,   intent(in) :: index  !線分のラインインデクス 
      call slpwwr(index)
    end subroutine

    subroutine DclDrawDeviceViewPortFrame(index)  !最大作画領域の枠を描
      integer,   intent(in) :: index    !線分のラインインデクス 
      call slpwvr(index) 
    end subroutine

    subroutine DclDrawViewPortCorner(index,size)  !ビューポートのコーナーマークを描く
      integer,   intent(in) :: index    !線分のラインインデクス 
      real,      intent(in) :: size    !コーナーマークの長さ
      call slpvpc(index,size)
    end subroutine                             

    subroutine DclDrawDeviceWindowCorner(index,size)  !ウインドウのコーナーマークを描く
      integer,   intent(in) :: index    !線分のラインインデクス 
      real,      intent(in) :: size     !コーナーマークの長さ
      call slpwwc(index,size)
    end subroutine

    subroutine DclDrawDeviceViewPortCorner(index,size) 
      integer,   intent(in) :: index  !線分のラインインデクス 
      real,      intent(in) :: size    !コーナーマークの長さ
      call slpwvc(index,size)
    end subroutine

end module

