# PLWin.itk
# Geoffrey Furnish
# 18 September 1995
#
# @> [incr Tk] revamp of the old itcl PLWin class.
###############################################################################

eval package require $pl_itk_package_name

itcl::class PLWin {
    inherit itk::Widget

    protected variable hull
    protected variable width 20c
    protected variable height 15c
    protected variable plwin

    constructor {args} {
	set hull $itk_component(hull)

	eval itk_initialize $args

	uplevel \#0 plframe $hull.plwin $args -width $width -height $height
	set plwin $hull.plwin
	pack $plwin -side bottom -expand 1 -fill both
    }

    itk_option define -width width Width 20c {
	set width $itk_option(-width)
    }

    itk_option define -height height Height 15c {
	set height $itk_option(-height)
    }

# We add this one just so that user code can be oblivious as to
# whether or not it is driving a PLWin object, or just a plframe.  In
# other words, Tcl code which works fine on a plframe or the "loopback
# widget", can work unmodified with the PLWin [incr Tcl] object.

    method cmd {args} {
	eval $plwin cmd $args
    }

# Attempt to allow control of double buffering on widgets.

    method db {args} {
	eval $plwin db $args
    }

# Command which aren't generated by pltclgen, and so aren't done by
# plitclgen either.

    method plcont {args} {
	eval $plwin cmd plcont $args
    }

    method plshade {args} {
	eval $plwin cmd plshade $args
    }

    method plrandd {args} {
        eval $plwin cmd plrandd $args
    }

# From here on down, we just insert what comes out of plitclgen (file
# gen.itcl).  If you don't like the handling of one of these for some
# reason, then add the method name to the ignore list in plitclgen,
# and provide an explicit coding, ABOVE THIS LINE.

    method pl_setcontlabelformat {args} {
        eval $plwin cmd pl_setcontlabelformat $args
    }

    method pl_setcontlabelparam {args} {
        eval $plwin cmd pl_setcontlabelparam $args
    }

    method pladv {args} {
        eval $plwin cmd pladv $args
    }

    method plarc {args} {
        eval $plwin cmd plarc $args
    }

    method plaxes {args} {
        eval $plwin cmd plaxes $args
    }

    method plbin {args} {
        eval $plwin cmd plbin $args
    }

    method plbop {args} {
        eval $plwin cmd plbop $args
    }

    method plbox {args} {
        eval $plwin cmd plbox $args
    }

    method plbox3 {args} {
        eval $plwin cmd plbox3 $args
    }

    method plbtime {args} {
        eval $plwin cmd plbtime $args
    }

    method plcalc_world {args} {
        eval $plwin cmd plcalc_world $args
    }

    method plclear {args} {
        eval $plwin cmd plclear $args
    }

    method plcol0 {args} {
        eval $plwin cmd plcol0 $args
    }

    method plcol1 {args} {
        eval $plwin cmd plcol1 $args
    }

    method plconfigtime {args} {
        eval $plwin cmd plconfigtime $args
    }

    method plcpstrm {args} {
        eval $plwin cmd plcpstrm $args
    }

    method plctime {args} {
        eval $plwin cmd plctime $args
    }

    method pldid2pc {args} {
        eval $plwin cmd pldid2pc $args
    }

    method pldip2dc {args} {
        eval $plwin cmd pldip2dc $args
    }

    method plenv {args} {
        eval $plwin cmd plenv $args
    }

    method plenv0 {args} {
        eval $plwin cmd plenv0 $args
    }

    method pleop {args} {
        eval $plwin cmd pleop $args
    }

    method plerrx {args} {
        eval $plwin cmd plerrx $args
    }

    method plerry {args} {
        eval $plwin cmd plerry $args
    }

    method plfill {args} {
        eval $plwin cmd plfill $args
    }

    method plfill3 {args} {
        eval $plwin cmd plfill3 $args
    }

    method plflush {args} {
        eval $plwin cmd plflush $args
    }

    method plfont {args} {
        eval $plwin cmd plfont $args
    }

    method plfontld {args} {
        eval $plwin cmd plfontld $args
    }

    method plgchr {args} {
        eval $plwin cmd plgchr $args
    }

    method plgcmap1_range {args} {
        eval $plwin cmd plgcmap1_range $args
    }

    method plgcol0 {args} {
        eval $plwin cmd plgcol0 $args
    }

    method plgcol0a {args} {
        eval $plwin cmd plgcol0a $args
    }

    method plgcolbg {args} {
        eval $plwin cmd plgcolbg $args
    }

    method plgcolbga {args} {
        eval $plwin cmd plgcolbga $args
    }

    method plgcompression {args} {
        eval $plwin cmd plgcompression $args
    }

    method plgdev {args} {
        eval $plwin cmd plgdev $args
    }

    method plgdidev {args} {
        eval $plwin cmd plgdidev $args
    }

    method plgdiori {args} {
        eval $plwin cmd plgdiori $args
    }

    method plgdiplt {args} {
        eval $plwin cmd plgdiplt $args
    }

    method plgesc {args} {
        eval $plwin cmd plgesc $args
    }

    method plgfci {args} {
        eval $plwin cmd plgfci $args
    }

    method plgfnam {args} {
        eval $plwin cmd plgfnam $args
    }

    method plgfont {args} {
        eval $plwin cmd plgfont $args
    }

    method plglevel {args} {
        eval $plwin cmd plglevel $args
    }

    method plgpage {args} {
        eval $plwin cmd plgpage $args
    }

    method plgra {args} {
        eval $plwin cmd plgra $args
    }

    method plgradient {args} {
        eval $plwin cmd plgradient $args
    }

    method plgspa {args} {
        eval $plwin cmd plgspa $args
    }

    method plgstrm {args} {
        eval $plwin cmd plgstrm $args
    }

    method plgver {args} {
        eval $plwin cmd plgver $args
    }

    method plgvpd {args} {
        eval $plwin cmd plgvpd $args
    }

    method plgvpw {args} {
        eval $plwin cmd plgvpw $args
    }

    method plgxax {args} {
        eval $plwin cmd plgxax $args
    }

    method plgyax {args} {
        eval $plwin cmd plgyax $args
    }

    method plgzax {args} {
        eval $plwin cmd plgzax $args
    }

    method plhist {args} {
        eval $plwin cmd plhist $args
    }

    method plhlsrgb {args} {
        eval $plwin cmd plhlsrgb $args
    }

    method plinit {args} {
        eval $plwin cmd plinit $args
    }

    method pljoin {args} {
        eval $plwin cmd pljoin $args
    }

    method pllab {args} {
        eval $plwin cmd pllab $args
    }

    method pllightsource {args} {
        eval $plwin cmd pllightsource $args
    }

    method plline {args} {
        eval $plwin cmd plline $args
    }

    method plline3 {args} {
        eval $plwin cmd plline3 $args
    }

    method pllsty {args} {
        eval $plwin cmd pllsty $args
    }

    method plmkstrm {args} {
        eval $plwin cmd plmkstrm $args
    }

    method plmtex {args} {
        eval $plwin cmd plmtex $args
    }

    method plmtex3 {args} {
        eval $plwin cmd plmtex3 $args
    }

    method plpat {args} {
        eval $plwin cmd plpat $args
    }

    method plpath {args} {
        eval $plwin cmd plpath $args
    }

    method plpoin {args} {
        eval $plwin cmd plpoin $args
    }

    method plpoin3 {args} {
        eval $plwin cmd plpoin3 $args
    }

    method plpoly3 {args} {
        eval $plwin cmd plpoly3 $args
    }

    method plprec {args} {
        eval $plwin cmd plprec $args
    }

    method plpsty {args} {
        eval $plwin cmd plpsty $args
    }

    method plptex {args} {
        eval $plwin cmd plptex $args
    }

    method plptex3 {args} {
        eval $plwin cmd plptex3 $args
    }

    method plreplot {args} {
        eval $plwin cmd plreplot $args
    }

    method plrgbhls {args} {
        eval $plwin cmd plrgbhls $args
    }

    method plschr {args} {
        eval $plwin cmd plschr $args
    }

    method plscmap0 {args} {
        eval $plwin cmd plscmap0 $args
    }

    method plscmap0a {args} {
        eval $plwin cmd plscmap0a $args
    }

    method plscmap0n {args} {
        eval $plwin cmd plscmap0n $args
    }

    method plscmap1 {args} {
        eval $plwin cmd plscmap1 $args
    }

    method plscmap1a {args} {
        eval $plwin cmd plscmap1a $args
    }

    method plscmap1l {args} {
        eval $plwin cmd plscmap1l $args
    }

    method plscmap1la {args} {
        eval $plwin cmd plscmap1la $args
    }

    method plscmap1n {args} {
        eval $plwin cmd plscmap1n $args
    }

    method plscmap1_range {args} {
        eval $plwin cmd plscmap1_range $args
    }

    method plscol0 {args} {
        eval $plwin cmd plscol0 $args
    }

    method plscol0a {args} {
        eval $plwin cmd plscol0a $args
    }

    method plscolbg {args} {
        eval $plwin cmd plscolbg $args
    }

    method plscolbga {args} {
        eval $plwin cmd plscolbga $args
    }

    method plscolor {args} {
        eval $plwin cmd plscolor $args
    }

    method plscompression {args} {
        eval $plwin cmd plscompression $args
    }

    method plsdev {args} {
        eval $plwin cmd plsdev $args
    }

    method plsdidev {args} {
        eval $plwin cmd plsdidev $args
    }

    method plsdimap {args} {
        eval $plwin cmd plsdimap $args
    }

    method plsdiori {args} {
        eval $plwin cmd plsdiori $args
    }

    method plsdiplt {args} {
        eval $plwin cmd plsdiplt $args
    }

    method plsdiplz {args} {
        eval $plwin cmd plsdiplz $args
    }

    method plseed {args} {
        eval $plwin cmd plseed $args
    }

    method plsesc {args} {
        eval $plwin cmd plsesc $args
    }

    method plsfci {args} {
        eval $plwin cmd plsfci $args
    }

    method plsfont {args} {
        eval $plwin cmd plsfont $args
    }

    method plsmaj {args} {
        eval $plwin cmd plsmaj $args
    }

    method plsmin {args} {
        eval $plwin cmd plsmin $args
    }

    method plsori {args} {
        eval $plwin cmd plsori $args
    }

    method plspage {args} {
        eval $plwin cmd plspage $args
    }

    method plspal0 {args} {
        eval $plwin cmd plspal0 $args
    }

    method plspal1 {args} {
        eval $plwin cmd plspal1 $args
    }

    method plspause {args} {
        eval $plwin cmd plspause $args
    }

    method plssub {args} {
        eval $plwin cmd plssub $args
    }

    method plssym {args} {
        eval $plwin cmd plssym $args
    }

    method plstar {args} {
        eval $plwin cmd plstar $args
    }

    method plstart {args} {
        eval $plwin cmd plstart $args
    }

    method plstring {args} {
        eval $plwin cmd plstring $args
    }

    method plstring3 {args} {
        eval $plwin cmd plstring3 $args
    }

    method plstripa {args} {
        eval $plwin cmd plstripa $args
    }

    method plstripd {args} {
        eval $plwin cmd plstripd $args
    }

    method plstyl {args} {
        eval $plwin cmd plstyl $args
    }

    method plsvpa {args} {
        eval $plwin cmd plsvpa $args
    }

    method plsxax {args} {
        eval $plwin cmd plsxax $args
    }

    method plsyax {args} {
        eval $plwin cmd plsyax $args
    }

    method plsym {args} {
        eval $plwin cmd plsym $args
    }

    method plszax {args} {
        eval $plwin cmd plszax $args
    }

    method pltext {args} {
        eval $plwin cmd pltext $args
    }

    method pltimefmt {args} {
        eval $plwin cmd pltimefmt $args
    }

    method plvasp {args} {
        eval $plwin cmd plvasp $args
    }

    method plvpas {args} {
        eval $plwin cmd plvpas $args
    }

    method plvpor {args} {
        eval $plwin cmd plvpor $args
    }

    method plvsta {args} {
        eval $plwin cmd plvsta $args
    }

    method plw3d {args} {
        eval $plwin cmd plw3d $args
    }

    method plwidth {args} {
        eval $plwin cmd plwidth $args
    }

    method plwind {args} {
        eval $plwin cmd plwind $args
    }

    method plxormod {args} {
        eval $plwin cmd plxormod $args
    }

}
