Exemplo n.º 1
0
static void exciter_draw_move(t_exciter *x, t_glist *glist)
{
    t_canvas *canvas=glist_getcanvas(glist);
    t_int polyray = ( x->x_height / x->x_nbevents) / 2;
    t_int ei, gi;

    SYS_VGUI7(".x%lx.c coords %xLINE %d %d %d %d \n",
              canvas, x, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist),
              text_xpix(&x->x_obj, glist)+x->x_width, text_ypix(&x->x_obj, glist)+x->x_height
             );
    SYS_VGUI5(".x%lx.c coords %xLOWERCAPTION %d %d\n",
              canvas, x, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist) + x->x_height + 10 );
    SYS_VGUI5(".x%lx.c coords %xHIGHERCAPTION %d %d\n",
              canvas, x, text_xpix(&x->x_obj, glist) + x->x_width, text_ypix(&x->x_obj, glist) + x->x_height + 10);
    SYS_VGUI7(".x%lx.c coords %xIN %d %d %d %d\n",
              canvas, x, text_xpix(&x->x_obj, glist),
              text_ypix(&x->x_obj, glist) - 2,
              text_xpix(&x->x_obj, glist) + 5,
              text_ypix(&x->x_obj, glist)
             );
    if ( x->x_nbevents > 1 )
    {
        for ( ei=0; ei<x->x_nbevents; ei++ )
        {
            SYS_VGUI8(".x%lx.c coords %xOUT%d %d %d %d %d\n",
                      canvas, x, ei, text_xpix(&x->x_obj, glist) + ( ei * (x->x_width - 5) )/ (x->x_nbevents-1),
                      text_ypix(&x->x_obj, glist) + x->x_height,
                      text_xpix(&x->x_obj, glist) + ( ei * (x->x_width - 5) )/ (x->x_nbevents-1) + 5,
                      text_ypix(&x->x_obj, glist) + x->x_height + 2
                     );
        }
    }
    else
    {
        SYS_VGUI8(".x%lx.c coords %xOUT%d %d %d %d %d\n",
                  canvas, x, 0, text_xpix(&x->x_obj, glist),
                  text_ypix(&x->x_obj, glist) + x->x_height,
                  text_xpix(&x->x_obj, glist) + 5,
                  text_ypix(&x->x_obj, glist) + x->x_height + 2
                 );
    }
    for ( ei=0; ei<x->x_nbevents; ei++ )
    {
        for ( gi=0; gi<(x->x_width/EXCITER_PIXEL_GRAIN); gi++ )
        {
            SYS_VGUI13(".x%lx.c coords %xEVENT%.4d%.4d %d %d %d %d %d %d %d %d\n",
                       canvas, x, gi, ei,
                       text_xpix(&x->x_obj, glist) + gi*EXCITER_PIXEL_GRAIN,
                       text_ypix(&x->x_obj, glist) + x->x_height - (ei+1)*x->x_height/x->x_nbevents + 2*polyray,
                       text_xpix(&x->x_obj, glist) + gi*EXCITER_PIXEL_GRAIN + polyray,
                       text_ypix(&x->x_obj, glist) + x->x_height - (ei+1)*x->x_height/x->x_nbevents + polyray,
                       text_xpix(&x->x_obj, glist) + gi*EXCITER_PIXEL_GRAIN + 2*polyray,
                       text_ypix(&x->x_obj, glist) + x->x_height - (ei+1)*x->x_height/x->x_nbevents,
                       text_xpix(&x->x_obj, glist) + gi*EXCITER_PIXEL_GRAIN + polyray,
                       text_ypix(&x->x_obj, glist) + x->x_height - (ei+1)*x->x_height/x->x_nbevents - polyray
                      );
        }
    }
    canvas_fixlinesfor( canvas, (t_text*)x );
}
Exemplo n.º 2
0
static void scrolllist_update(t_scrolllist *x, t_glist *glist)
{
  t_canvas *canvas=glist_getcanvas(glist);
  t_int i;

    // just in case we got confused
    if ( x->x_firstseen < 0 ) x->x_firstseen=0;
    if ( x->x_lastseen > x->x_capacity-1 ) x->x_lastseen=x->x_capacity-1;

    // display the content of text items
    for ( i=x->x_firstseen; i<=x->x_lastseen; i++ )
    {
       // display the entry if displayable
       if ( ( (i-x->x_firstseen)*x->x_charheight < x->x_height ) && ( x->x_items[i] != NULL ) )
       {
          SYS_VGUI11(".x%x.c create text %d %d -fill %s -activefill %s -width %d -text \"%s\" -anchor w -font %s -tags %xITEM%d\n",
                    canvas,
                    text_xpix(&x->x_obj, glist)+5,
                    text_ypix(&x->x_obj, glist)+5+(i-x->x_firstseen)*x->x_charheight,
                    x->x_fgcolor,
                    x->x_secolor,
                    x->x_width,
                    x->x_items[i],
                    x->x_font,
                    x, i );
        }
        if ( ( x->x_itemselected >= x->x_firstseen ) && ( x->x_itemselected <= x->x_lastseen ) )
        {
          SYS_VGUI5(".x%x.c itemconfigure %xITEM%d -fill %s\n", 
                     canvas, x, x->x_itemselected, x->x_secolor); 
        }
    }
}
Exemplo n.º 3
0
static void scrolllist_seek(t_scrolllist *x, t_floatarg fseeked)
{
 t_int iout=0;
 t_canvas *canvas=glist_getcanvas(x->x_glist);

   if ( fseeked < 0 )
   {
      post( "scrolllist : wrong searched file : %f", fseeked );
      return;
   }
   if ( x->x_nitems == 0 ) return;

   iout = (t_int)fseeked % (x->x_nitems);
   SYS_VGUI5(".x%x.c itemconfigure %xITEM%d -fill %s\n", canvas, x, x->x_itemselected, x->x_fgcolor); 
   x->x_itemselected = iout;
   SYS_VGUI5(".x%x.c itemconfigure %xITEM%d -fill %s\n", canvas, x, x->x_itemselected, x->x_secolor); 
   scrolllist_output_current(x);
}
Exemplo n.º 4
0
static int scrolllist_click(t_gobj *z, struct _glist *glist,
		   int xpix, int ypix, int shift, int alt, int dbl, int doit)
{
 t_scrolllist* x = (t_scrolllist *)z;
 t_canvas *canvas=glist_getcanvas(x->x_glist);
 t_int xoffset;

    if (doit) 
    {
      // deselect previously selected item
      SYS_VGUI5(".x%x.c itemconfigure %xITEM%d -fill %s\n", 
                 canvas, x, x->x_itemselected, x->x_fgcolor); 
      x->x_itemselected = x->x_firstseen + (ypix-text_ypix(&x->x_obj, glist))/x->x_charheight;
      SYS_VGUI5(".x%x.c itemconfigure %xITEM%d -fill %s\n", 
                 canvas, x, x->x_itemselected, x->x_secolor); 
      // post( "scrolllist : selected item : %d", x->x_itemselected );
      if ( x->x_items && ( x->x_itemselected < x->x_nitems ) )
      {
         xoffset=(xpix-text_xpix(&x->x_obj, glist));
         if ( xoffset <= (t_int)( x->x_width*4/5 ) )
         {
           scrolllist_output_current(x);
           scrolllist_erase( x, x->x_glist );
           scrolllist_update( x, glist );
         }
         else
         {
           x->x_itemselected=-1;
         }
      }
      x->x_glist = glist;
      glist_grab( glist, &x->x_obj.te_g, (t_glistmotionfn)scrolllist_motion,
                  NULL, xpix, ypix ); 
    }
    return (1);
}
Exemplo n.º 5
0
static void exciter_draw_new(t_exciter *x, t_glist *glist)
{
    t_canvas *canvas=glist_getcanvas(glist);
    t_int ei;

    SYS_VGUI7(".x%lx.c create rectangle %d %d %d %d -outline #000000 -fill #902181 -tags %xLINE\n",
              canvas, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist),
              text_xpix(&x->x_obj, glist)+x->x_width, text_ypix(&x->x_obj, glist)+x->x_height,
              x);
    SYS_VGUI5(".x%lx.c create text %d %d -font -*-courier-bold--normal--10-* -text \"0 s\" -tags %xLOWERCAPTION\n",
              canvas, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist) + x->x_height + 10, x );
    SYS_VGUI6(".x%lx.c create text %d %d -font -*-courier-bold--normal--10-* -text \"%.2f s\" -tags %xHIGHERCAPTION\n",
              canvas, text_xpix(&x->x_obj, glist) + x->x_width, text_ypix(&x->x_obj, glist) + x->x_height + 10,
              x->x_width/EXCITER_PIXEL_GRAIN*x->x_timegrain , x);
    SYS_VGUI7(".x%lx.c create rectangle %d %d %d %d -outline #000000 -fill #000000 -tags %xIN\n",
              canvas, text_xpix(&x->x_obj, glist),
              text_ypix(&x->x_obj, glist) - 2,
              text_xpix(&x->x_obj, glist) + 5,
              text_ypix(&x->x_obj, glist) ,
              x);
    if ( x->x_nbevents > 1 )
    {
        for ( ei=0; ei<x->x_nbevents; ei++ )
        {
            SYS_VGUI8(".x%lx.c create rectangle %d %d %d %d -outline #000000 -fill #000000 -tags %xOUT%d\n",
                      canvas, text_xpix(&x->x_obj, glist) + ( ei * (x->x_width - 5) )/ (x->x_nbevents-1),
                      text_ypix(&x->x_obj, glist) + x->x_height,
                      text_xpix(&x->x_obj, glist) + ( ei * (x->x_width - 5) )/ (x->x_nbevents-1) + 5,
                      text_ypix(&x->x_obj, glist) + x->x_height + 2,
                      x, ei);
        }
    }
    else
    {
        SYS_VGUI8(".x%lx.c create rectangle %d %d %d %d -outline #000000 -fill #000000 -tags %xOUT%d\n",
                  canvas, text_xpix(&x->x_obj, glist),
                  text_ypix(&x->x_obj, glist) + x->x_height,
                  text_xpix(&x->x_obj, glist) + 5,
                  text_ypix(&x->x_obj, glist) + x->x_height + 2,
                  x, 0);
    }
    canvas_fixlinesfor( canvas, (t_text*)x );
}
Exemplo n.º 6
0
static t_int *exciter_perform(t_int *w)
{
    t_int ei, gi;
    t_int gstart, gend;
    t_exciter* x = (t_exciter*)(w[1]);
    struct timeval tv;
    struct timezone tz;
    long long looptime = 0L;
    double preltime = x->x_reltime;
    t_canvas *canvas=glist_getcanvas(x->x_glist);

    if ( x->x_started )
    {
        // get current time in ms
        gettimeofday( &tv, &tz );
        looptime = tv.tv_sec*1000 + tv.tv_usec/1000;
        if ( x->x_plooptime == 0L )
        {
            x->x_plooptime = looptime;
        }
        x->x_reltime += ( looptime - x->x_plooptime );
        if ( x->x_reltime > x->x_looplength )
        {
            if ( x->x_loop )
            {
                // post( "exciter : restarting loop" );
                x->x_reltime = 0;
                preltime = 0;
                x->x_gindex = -1;
            }
            else
            {
                // post( "exciter : end of the loop" );
                x->x_reltime = 0;
                x->x_started = 0;
            }
        }
        gstart = preltime/(x->x_timegrain*1000);
        gend = x->x_reltime/(x->x_timegrain*1000);

        // prevent overflow due to long long precision
        if ( gstart > x->x_width/EXCITER_PIXEL_GRAIN-1 ) gstart = x->x_width/EXCITER_PIXEL_GRAIN-1;
        if ( gstart < 0 ) gstart = 0;
        if ( gend > x->x_width/EXCITER_PIXEL_GRAIN-1 ) gend = x->x_width/EXCITER_PIXEL_GRAIN-1 ;
        if ( gend < 0 ) gend = 0;
        if ( gstart > x->x_gindex )
        {
            // post( "exciter : focus slice : (%d,%d)", gstart, gend );
            for ( gi=x->x_gindex+1; gi<=gend; gi++ )
            {
                for ( ei=0; ei<x->x_nbevents; ei++ )
                {
                    if ( *(x->x_sbangs+ei*(x->x_width/EXCITER_PIXEL_GRAIN)+gi ) == 1 )
                    {
                        outlet_bang( x->x_bangs[ ei ] );
                        SYS_VGUI5(".x%lx.c itemconfigure %xEVENT%.4d%.4d -fill #00FF00\n",
                                  canvas, x, gi, ei);
                    }
                }
            }
            // unfocus previous events
            if ( gstart >= x->x_width/EXCITER_PIXEL_GRAIN - 1)
                gstart = x->x_width/EXCITER_PIXEL_GRAIN; // not too proud of this one
            // post( "exciter : unfocus slice : (%d,%d)", x->x_gindex, gstart-1 );
            for ( gi=x->x_gindex; gi<gstart; gi++ )
            {
                for ( ei=0; ei<x->x_nbevents; ei++ )
                {
                    if ( *(x->x_sbangs+ei*(x->x_width/EXCITER_PIXEL_GRAIN)+gi ) == 1 )
                    {
                        SYS_VGUI5(".x%lx.c itemconfigure %xEVENT%.4d%.4d -fill #FFFFFF\n",
                                  canvas, x, gi, ei);
                    }
                }
            }
            x->x_gindex = gend;
        }
    }

    x->x_plooptime = looptime;
    return (w+2);
}
Exemplo n.º 7
0
/* delete an event */
static void exciter_delete_gem(t_exciter *x, t_glist *glist, t_int ix, t_int iy)
{
    t_canvas *canvas=glist_getcanvas(glist);

    SYS_VGUI5(".x%lx.c delete %xEVENT%.4d%.4d\n", canvas, x, ix, iy );
}