View Raw SPL
/*****************************************************************************
*                                                                            *
*   SETSYMBOLOFFSET.SPL  Copyright (C) 2011 DSP Development Corporation      *
*                               All Rights Reserved                          *
*                                                                            *
*   Author:      Randy Race                                                  *
*                                                                            *
*   Synopsis:    Sets the starting sample a symbol plot                      *
*                                                                            *
*   Revisions:   31 Jan 2011  RRR  Creation                                  *
*                                                                            *
*****************************************************************************/

#include 

#if @HELP_SETSYMBOLOFFSET

    SETSYMBOLOFFSET

    Purpose: Sets the start sample for a symbol plot.

    Syntax:  SETSYMBOLOFFSET(series, offset, item)

                series - Optional, a series. Defaults to current window

                offset - An integer, the symbol offset.

                  item - Optional, an integer. The series number if the 
                         target is a Window with more than one series.
                         Defaults to 1.

    Returns: Nothing, sets the symbol offset for a series.

    Example:
             W1: 1..20;setsym(14);setsymbolinterval(5);setsymboloffset(3)

             W1 contains a 20 point series where a circle is used as a 
             symbol plotted every 5 points starting a the 3rd point

    Remarks:
             The SYMBOLOFFSET only takes effect if SYMBOLINTERVAL > 1.

    See Also:
             Getsymbol
             Getsymbolinterval
             Getsymboloffset
             Getsymbolsize
             Setsymbol
             Setsymbolinterval
             Setsymbolsize
#endif


/* set the symbol offset */
setsymboloffset(s, offset, item, member)
{
        local sym, intv;

        (s, offset, item, member) = setsymboloffset_parse_args(s, offset, item, member);

        if (isstring(s)) s = refwindow(w0);

        sym  = getsymbol(s, 0, item, member);
        intv = getsymbolinterval(s, item, member);

        setsymbol(s, sym, item, intv, offset, member);
}


setsymboloffset_parse_args(s, offset, item, member)
{
        if (argc < 4)
        {
                if (argc < 3)
                {
                        if (argc < 2)
                        {
                                if (argc < 1) s = "";
                                
                                offset = -1;
                        }
                        
                        item = -1;
                }
                
                member = -1;
        }

        if (isscalar(s))
        {
                member = item;
                item   = offset;
                offset   = s;
                s      = "";
        }

        if (item < 0)   item   = 1;
        if (offset < 0) offset = 0;
        
        return(s, offset, item, member);
}