View Raw SPL
/* read image file */
rimfname(fname)
{
        local orgname, fn, form;
        extern _riaspect, _riscales;

        /* set default name to appear in dialog box */
        if (argc > 0)
        {
                /* use input filename */
                setvar("_rifname", fname);
                setvar("_ripickdir", strrev(strfind(pathchar, strrev(_rifname))));
        }
        else
        {
                /* just define the variable */
                defvar("_rifname", "");
        }

        /* define start directory if it doesn't already exist */
        defvar("_ripickdir", "");

        /* define aspect if it doesn't already exist */
        defvar("_riaspect", -1);

        /* define scales if it doesn't already exist */
        defvar("_riscales", getscales);

        /* _pickfile_status == 1 if dialog was successful */
        setvar("_pickfile_status", 0);

        /* remember original name */
        orgname = _rifname;

        /* invoke dialog box */
        _mf("readimg.pan");

        if (_pickfile_status == 1)   /* dialog was successful */
        {
                /* remember default directory */
                setvar("_ripickdir", strrev(strfind(pathchar, strrev(_rifname))));

                if (strlen(_rifname) > 0)
                {
                        fn = sprintf('"%s"', _rifname);

                        if (_riaspect == -1)
                        {
                                form = sprintf("setwf(%s, 'Readimage(%s);scales(%d)')", _dwin, fn, _riscales);
                        }
                        else
                        {
                                form = sprintf("setwf(%s, 'Readimage(%s, %d);scales(%d)')", _dwin, fn, _riaspect, _riscales);
                        }

                        eval(form);
                }
        }
        else
        {
                /* reset to original name */
                if (strlen(orgname) > 0)
                {
                        setvar("_rifname", orgname);
                }
        }
}