From 3c83bb159ecc7a6bb3cc790d508c6e1dbfebd07c Mon Sep 17 00:00:00 2001 From: "N.N." Date: Wed, 2 Mar 2005 02:48:57 +0000 Subject: Added GOP supoort svn path=/trunk/externals/unauthorized/; revision=2592 --- sonogram~/sonogram~.c | 153 +++++++++++++++++++++++++------------------------- 1 file changed, 76 insertions(+), 77 deletions(-) (limited to 'sonogram~/sonogram~.c') diff --git a/sonogram~/sonogram~.c b/sonogram~/sonogram~.c index 24a38a9..ff70ae1 100644 --- a/sonogram~/sonogram~.c +++ b/sonogram~/sonogram~.c @@ -37,25 +37,14 @@ #include #include #include - -#ifdef __APPLE__ -#include -#else #include -#endif - #include #include #ifdef UNIX #include #endif #ifdef NT -#define random rand -#include -static int usleep (unsigned int us) { - Sleep((long)(us/1000.)); - return 0; -} +#define M_PI 3.14159265358979323846 #endif #include @@ -382,10 +371,12 @@ static void sonogram_erase_block(t_sonogram *x, t_glist *glist, t_int bnumber ) static void *sonogram_do_update_part(void *tdata) { - t_sonogram *x = (t_sonogram*) tdata; - t_int si; - t_int nbpoints = 0; - t_float percentage = 0, opercentage = 0; + t_sonogram *x = (t_sonogram*) tdata; + t_int si; + t_int nbpoints = 0; + t_float percentage = 0, opercentage = 0; + t_canvas *canvas=glist_getcanvas(x->x_glist); + // loose synchro usleep( THREAD_SLEEP_TIME ); @@ -429,10 +420,10 @@ static void *sonogram_do_update_part(void *tdata) } // set borders in black - SYS_VGUI3(".x%x.c itemconfigure %xSONOGRAM -outline #000000\n", glist_getcanvas(x->x_glist), x); + SYS_VGUI3(".x%x.c itemconfigure %xSONOGRAM -outline #000000\n", canvas, x); if ( x->x_phaso ) { - SYS_VGUI3(".x%x.c itemconfigure %xPHASOGRAM -outline #000000\n", glist_getcanvas(x->x_glist), x); + SYS_VGUI3(".x%x.c itemconfigure %xPHASOGRAM -outline #000000\n", canvas, x); } // post("sonogram~ : child thread %d ended (nb_updated=%d)", (int)x->x_updatechild, x->x_nbupdated ); @@ -443,7 +434,8 @@ static void *sonogram_do_update_part(void *tdata) static void sonogram_update_part(t_sonogram *x, t_glist *glist, t_int bstart, t_int bend, t_int erase, t_int redraw, t_int keepframe) { - pthread_attr_t update_child_attr; + pthread_attr_t update_child_attr; + t_canvas *canvas=glist_getcanvas(glist); if ( x->x_graphic ) { @@ -467,44 +459,44 @@ static void sonogram_update_part(t_sonogram *x, t_glist *glist, t_int bstart, t_ // recreate the square if needed if ( ( bstart == 0 ) && ( bend == x->x_size-1 ) && !keepframe ) { - SYS_VGUI3(".x%x.c delete %xSONOGRAM\n", glist_getcanvas(glist), x ); + SYS_VGUI3(".x%x.c delete %xSONOGRAM\n", canvas, x ); SYS_VGUI7(".x%x.c create rectangle %d %d %d %d -fill #FFFFFF -tags %xSONOGRAM\n", glist_getcanvas(glist), x->x_xpos-1, x->x_ypos-1, x->x_xpos + x->x_size*x->x_zoom+1, x->x_ypos + x->x_blocksize/2*x->x_zoom+1, x); SYS_VGUI2("image delete SONIMAGE%x\n", x ); - SYS_VGUI3(".x%x.c delete ISONIMAGE%x\n", glist_getcanvas(glist), x ); + SYS_VGUI3(".x%x.c delete ISONIMAGE%x\n", canvas, x ); SYS_VGUI4("image create photo SONIMAGE%x -format gif -width %d -height %d\n", x, x->x_size*x->x_zoom, x->x_blocksize/2*x->x_zoom ); SYS_VGUI2("SONIMAGE%x blank\n", x); SYS_VGUI6(".x%x.c create image %d %d -image SONIMAGE%x -tags ISONIMAGE%x\n", - glist_getcanvas( x->x_glist ), x->x_xpos+((x->x_size*x->x_zoom)/2), + canvas, x->x_xpos+((x->x_size*x->x_zoom)/2), (x->x_ypos+((x->x_blocksize/2*x->x_zoom)/2)), x, x ); if ( x->x_phaso ) { - SYS_VGUI3(".x%x.c delete %xPHASOGRAM\n", glist_getcanvas(glist), x ); + SYS_VGUI3(".x%x.c delete %xPHASOGRAM\n", canvas, x ); SYS_VGUI7(".x%x.c create rectangle %d %d %d %d -fill #FFFFFF -tags %xPHASOGRAM\n", - glist_getcanvas(glist), x->x_xpos-1, x->x_ypos+x->x_blocksize/2*x->x_zoom+2, + canvas, x->x_xpos-1, x->x_ypos+x->x_blocksize/2*x->x_zoom+2, x->x_xpos + x->x_size*x->x_zoom +1, x->x_ypos + x->x_blocksize*x->x_zoom + 3, x); SYS_VGUI2("image delete FAZIMAGE%x\n", x ); - SYS_VGUI3(".x%x.c delete IFAZIMAGE%x\n", glist_getcanvas(glist), x ); + SYS_VGUI3(".x%x.c delete IFAZIMAGE%x\n", canvas, x ); SYS_VGUI4("image create photo FAZIMAGE%x -format gif -width %d -height %d\n", x, x->x_size*x->x_zoom, x->x_blocksize/2*x->x_zoom ); SYS_VGUI2("FAZIMAGE%x blank\n", x); SYS_VGUI6(".x%x.c create image %d %d -image FAZIMAGE%x -tags IFAZIMAGE%x\n", - glist_getcanvas( x->x_glist ), x->x_xpos+((x->x_size*x->x_zoom)/2), + canvas, x->x_xpos+((x->x_size*x->x_zoom)/2), x->x_ypos+3*((x->x_blocksize/2*x->x_zoom)/2)+2, x, x ); } - canvas_fixlinesfor( glist_getcanvas(x->x_glist), (t_text*)x ); + canvas_fixlinesfor( canvas, (t_text*)x ); } // set borders in red - SYS_VGUI3(".x%x.c itemconfigure %xSONOGRAM -outline #FF0000\n", glist_getcanvas(glist), x); + SYS_VGUI3(".x%x.c itemconfigure %xSONOGRAM -outline #FF0000\n", canvas, x); if ( x->x_phaso ) { - SYS_VGUI3(".x%x.c itemconfigure %xPHASOGRAM -outline #FF0000\n", glist_getcanvas(glist), x); + SYS_VGUI3(".x%x.c itemconfigure %xPHASOGRAM -outline #FF0000\n", canvas, x); } // launch update thread @@ -616,14 +608,16 @@ static void sonogram_paste( t_sonogram* x) /* paste phase at the drawing point */ static void sonogram_paste_phase( t_sonogram* x) { - t_int pxstart = (x->x_xdraw-x->x_xpos)/x->x_zoom; - t_int pystart = (x->x_ypos+x->x_blocksize/2*x->x_zoom+1-x->x_ydraw)/x->x_zoom+x->x_blocksize/2; - t_int cxs,cxe,cys,cye,si,fi; - t_float fspectrum, fdestspectrum; - t_float fphase, fdestphase; - t_float *icopy; - t_float *rcopy; - t_int copynd; + t_int pxstart = (x->x_xdraw-x->x_xpos)/x->x_zoom; + t_int pystart = (x->x_ypos+x->x_blocksize/2*x->x_zoom+1-x->x_ydraw)/x->x_zoom+x->x_blocksize/2; + t_int cxs,cxe,cys,cye,si,fi; + t_float fspectrum, fdestspectrum; + t_float fphase, fdestphase; + t_float *icopy; + t_float *rcopy; + t_int copynd; + t_canvas *canvas=glist_getcanvas(x->x_glist); + if ( x->x_xstartcapture > x->x_xendcapture ) { fi = x->x_xstartcapture; @@ -700,7 +694,7 @@ static void sonogram_paste_phase( t_sonogram* x) sonogram_update_part(x, x->x_glist, pxstart, pxstart+(si-1)-cxs, 0, 1, 1); // start a new capture - SYS_VGUI3( ".x%x.c delete %xCAPTURE\n", glist_getcanvas( x->x_glist ), x ); + SYS_VGUI3( ".x%x.c delete %xCAPTURE\n", canvas, x ); x->x_xstartcapture = x->x_xdraw; x->x_ystartcapture = x->x_ydraw; x->x_xendcapture = x->x_xdraw; @@ -710,13 +704,10 @@ static void sonogram_paste_phase( t_sonogram* x) static void sonogram_draw_new(t_sonogram *x, t_glist *glist) { - t_canvas *canvas=glist_getcanvas(glist); + t_canvas *canvas=glist_getcanvas(glist); - if ( x->x_xpos == -1 ) - { - x->x_xpos=x->x_obj.te_xpix; - x->x_ypos=x->x_obj.te_ypix; - } + x->x_xpos=text_xpix(&x->x_obj, glist); + x->x_ypos=text_ypix(&x->x_obj, glist); if ( x->x_graphic ) { SYS_VGUI7(".x%x.c create rectangle %d %d %d %d -fill #FFFFFF -tags %xSONOGRAM\n", @@ -728,12 +719,12 @@ static void sonogram_draw_new(t_sonogram *x, t_glist *glist) x, x->x_size*x->x_zoom, x->x_blocksize/2*x->x_zoom ); SYS_VGUI2("SONIMAGE%x blank\n", x); SYS_VGUI6(".x%x.c create image %d %d -image SONIMAGE%x -tags ISONIMAGE%x\n", - glist_getcanvas( x->x_glist ), x->x_xpos+((x->x_size*x->x_zoom)/2), + canvas, x->x_xpos+((x->x_size*x->x_zoom)/2), (x->x_ypos+((x->x_blocksize/2*x->x_zoom)/2)), x, x ); if ( x->x_phaso ) { SYS_VGUI7(".x%x.c create rectangle %d %d %d %d -fill #FFFFFF -tags %xPHASOGRAM\n", - glist_getcanvas(glist), x->x_xpos-1, x->x_ypos+x->x_blocksize/2*x->x_zoom+2, + canvas, x->x_xpos-1, x->x_ypos+x->x_blocksize/2*x->x_zoom+2, x->x_xpos + x->x_size*x->x_zoom +1, x->x_ypos + x->x_blocksize*x->x_zoom + 3, x); @@ -741,7 +732,7 @@ static void sonogram_draw_new(t_sonogram *x, t_glist *glist) x, x->x_size*x->x_zoom, x->x_blocksize/2*x->x_zoom ); SYS_VGUI2("FAZIMAGE%x blank\n", x); SYS_VGUI6(".x%x.c create image %d %d -image FAZIMAGE%x -tags IFAZIMAGE%x\n", - glist_getcanvas( x->x_glist ), x->x_xpos+((x->x_size*x->x_zoom)/2), + canvas, x->x_xpos+((x->x_size*x->x_zoom)/2), x->x_ypos+3*((x->x_blocksize/2*x->x_zoom)/2)+2, x, x ); } canvas_fixlinesfor( canvas, (t_text*)x ); @@ -750,20 +741,22 @@ static void sonogram_draw_new(t_sonogram *x, t_glist *glist) static void sonogram_draw_delete(t_sonogram *x, t_glist *glist) { + t_canvas *canvas=glist_getcanvas(glist); + if ( x->x_graphic && glist_isvisible( glist ) ) { - SYS_VGUI3( ".x%x.c delete %xCAPTURE\n", glist_getcanvas( glist ), x ); - SYS_VGUI3( ".x%x.c delete line %xREADSTART\n", glist_getcanvas( glist ), x); - SYS_VGUI3( ".x%x.c delete line %xREADEND\n", glist_getcanvas( glist ), x); - SYS_VGUI3( ".x%x.c delete line %xMODSTART\n", glist_getcanvas( glist ), x); - SYS_VGUI3( ".x%x.c delete line %xMODEND\n", glist_getcanvas( glist ), x); - SYS_VGUI3(".x%x.c delete %xSONOGRAM\n", glist_getcanvas( glist ), x ); - SYS_VGUI3(".x%x.c delete %xPHASOGRAM\n", glist_getcanvas( glist ), x ); - SYS_VGUI3(".x%x.c delete %xISONIMAGE\n", glist_getcanvas( glist ), x ); + SYS_VGUI3( ".x%x.c delete %xCAPTURE\n", canvas, x ); + SYS_VGUI3( ".x%x.c delete line %xREADSTART\n", canvas, x); + SYS_VGUI3( ".x%x.c delete line %xREADEND\n", canvas, x); + SYS_VGUI3( ".x%x.c delete line %xMODSTART\n", canvas, x); + SYS_VGUI3( ".x%x.c delete line %xMODEND\n", canvas, x); + SYS_VGUI3(".x%x.c delete %xSONOGRAM\n", canvas, x ); + SYS_VGUI3(".x%x.c delete %xPHASOGRAM\n", canvas, x ); + SYS_VGUI3(".x%x.c delete %xISONIMAGE\n", canvas, x ); SYS_VGUI2("image delete SONIMAGE%x\n", x ); if ( x->x_phaso ) { - SYS_VGUI3(".x%x.c delete %xIFAZIMAGE\n", glist_getcanvas( glist ), x ); + SYS_VGUI3(".x%x.c delete %xIFAZIMAGE\n", canvas, x ); SYS_VGUI2("image delete FAZIMAGE%x\n", x ); } } @@ -771,7 +764,7 @@ static void sonogram_draw_delete(t_sonogram *x, t_glist *glist) static void sonogram_draw_move(t_sonogram *x, t_glist *glist) { - t_canvas *canvas=glist_getcanvas(glist); + t_canvas *canvas=glist_getcanvas(glist); if ( x->x_graphic && glist_isvisible( x->x_glist ) ) { @@ -802,7 +795,7 @@ static void sonogram_draw_move(t_sonogram *x, t_glist *glist) static void sonogram_draw_select(t_sonogram* x,t_glist* glist) { - t_canvas *canvas=glist_getcanvas(glist); + t_canvas *canvas=glist_getcanvas(glist); if ( x->x_graphic && glist_isvisible( x->x_glist ) ) { @@ -958,7 +951,8 @@ static void sonogram_modify_point_phase( t_sonogram* x, t_int sample, t_int freq static void sonogram_motion(t_sonogram *x, t_floatarg dx, t_floatarg dy) { - int fdraw=0, sdraw=0; + t_int fdraw=0, sdraw=0; + t_canvas *canvas=glist_getcanvas(x->x_glist); // post( "sonogram_motion @ [%d,%d] dx=%f dy=%f alt=%d", x->x_xdraw, x->x_ydraw, dx, dy, x->x_alted ); if ( ( x->x_shifted || (x->x_alted==4) ) ) @@ -996,18 +990,19 @@ static void sonogram_motion(t_sonogram *x, t_floatarg dx, t_floatarg dy) (x->x_yendcapture+dy) <= x->x_ypos+x->x_blocksize*x->x_zoom ) { x->x_yendcapture += dy; } - SYS_VGUI3( ".x%x.c delete %xCAPTURE\n", glist_getcanvas( x->x_glist ), x ); + SYS_VGUI3( ".x%x.c delete %xCAPTURE\n", canvas, x ); SYS_VGUI7( ".x%x.c create rectangle %d %d %d %d -outline #0000FF -tags %xCAPTURE\n", - glist_getcanvas( x->x_glist ), x->x_xstartcapture, - x->x_ystartcapture, x->x_xendcapture, x->x_yendcapture, x ); + canvas, x->x_xstartcapture, x->x_ystartcapture, x->x_xendcapture, x->x_yendcapture, x ); } } static int sonogram_click(t_gobj *z, struct _glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { - t_sonogram* x = (t_sonogram *)z; - int si,fi; + t_sonogram* x = (t_sonogram *)z; + t_int si,fi; + t_canvas *canvas=glist_getcanvas(x->x_glist); + // post( "sonogram_click : x=%d y=%d doit=%d alt=%d, shift=%d", xpix, ypix, doit, alt, shift ); if ( x->x_aftermousedown == 1 && doit == 0) @@ -1090,7 +1085,7 @@ static int sonogram_click(t_gobj *z, struct _glist *glist, (x->x_xendcapture-x->x_xpos)/x->x_zoom, 0, 1, 1); } // start a new capture - SYS_VGUI3( ".x%x.c delete %xCAPTURE\n", glist_getcanvas( x->x_glist ), x ); + SYS_VGUI3( ".x%x.c delete %xCAPTURE\n", canvas, x ); x->x_xstartcapture = xpix; x->x_ystartcapture = ypix; x->x_xendcapture = xpix; @@ -1369,7 +1364,8 @@ static void sonogram_play(t_sonogram *x) /* setting the starting point for reading ( in percent ) */ static void sonogram_readstart(t_sonogram *x, t_floatarg fstart) { - t_float startpoint = fstart; + t_float startpoint = fstart; + t_canvas *canvas=glist_getcanvas(x->x_glist); if (startpoint < 0) startpoint = 0; if (startpoint > 100) startpoint = 100; @@ -1380,9 +1376,9 @@ static void sonogram_readstart(t_sonogram *x, t_floatarg fstart) if ( x->x_graphic && glist_isvisible( x->x_glist ) ) { SYS_VGUI3( ".x%x.c delete line %xREADSTART\n", - glist_getcanvas( x->x_glist ), x); + canvas, x); SYS_VGUI7( ".x%x.c create line %d %d %d %d -fill #FF0000 -tags %xREADSTART -width 3\n", - glist_getcanvas( x->x_glist ), x->x_xpos+(x->x_readstart*(x->x_size)/100 ), + canvas, x->x_xpos+(x->x_readstart*(x->x_size)/100 ), x->x_ypos, x->x_xpos+(x->x_readstart*(x->x_size)/100 ), x->x_ypos+x->x_blocksize*x->x_zoom, x ); } @@ -1391,7 +1387,8 @@ static void sonogram_readstart(t_sonogram *x, t_floatarg fstart) /* setting the starting point for modification ( in percent ) */ static void sonogram_modstart(t_sonogram *x, t_floatarg fstart) { - t_float startpoint = fstart; + t_float startpoint = fstart; + t_canvas *canvas=glist_getcanvas(x->x_glist); if (startpoint < 0) startpoint = 0; if (startpoint > 100) startpoint = 100; @@ -1404,9 +1401,9 @@ static void sonogram_modstart(t_sonogram *x, t_floatarg fstart) if ( x->x_graphic && glist_isvisible( x->x_glist ) ) { SYS_VGUI3( ".x%x.c delete line %xMODSTART\n", - glist_getcanvas( x->x_glist ), x); + canvas, x); SYS_VGUI7( ".x%x.c create line %d %d %d %d -fill #11E834 -tags %xMODSTART -width 3\n", - glist_getcanvas( x->x_glist ), x->x_xpos+(x->x_modstart*(x->x_size)/100 ), + canvas, x->x_xpos+(x->x_modstart*(x->x_size)/100 ), x->x_ypos, x->x_xpos+(x->x_modstart*(x->x_size)/100 ), x->x_ypos+x->x_blocksize*x->x_zoom, x ); } @@ -1433,7 +1430,8 @@ static void sonogram_enhancemode(t_sonogram *x, t_floatarg fenhancemode) /* setting the ending point for reading ( in percent ) */ static void sonogram_readend(t_sonogram *x, t_floatarg fend) { - t_float endpoint = fend; + t_float endpoint = fend; + t_canvas *canvas=glist_getcanvas(x->x_glist); if (endpoint < 0) endpoint = 0; if (endpoint > 100) endpoint = 100; @@ -1444,9 +1442,9 @@ static void sonogram_readend(t_sonogram *x, t_floatarg fend) if ( x->x_graphic && glist_isvisible( x->x_glist ) ) { SYS_VGUI3( ".x%x.c delete line %xREADEND\n", - glist_getcanvas( x->x_glist ), x); + canvas, x); SYS_VGUI7( ".x%x.c create line %d %d %d %d -fill #FF0000 -tags %xREADEND -width 3\n", - glist_getcanvas( x->x_glist ), x->x_xpos+(x->x_readend*(x->x_size)/100 ), + canvas, x->x_xpos+(x->x_readend*(x->x_size)/100 ), x->x_ypos, x->x_xpos+(x->x_readend*(x->x_size)/100 ), x->x_ypos+x->x_blocksize*x->x_zoom, x ); } @@ -1455,7 +1453,8 @@ static void sonogram_readend(t_sonogram *x, t_floatarg fend) /* setting the ending point for modification ( in percent ) */ static void sonogram_modend(t_sonogram *x, t_floatarg fend) { - t_float endpoint = fend; + t_float endpoint = fend; + t_canvas *canvas=glist_getcanvas(x->x_glist); if (endpoint < 0) endpoint = 0; if (endpoint > 100) endpoint = 100; @@ -1468,9 +1467,9 @@ static void sonogram_modend(t_sonogram *x, t_floatarg fend) if ( x->x_graphic && glist_isvisible( x->x_glist ) ) { SYS_VGUI3( ".x%x.c delete line %xMODEND\n", - glist_getcanvas( x->x_glist ), x); + canvas, x); SYS_VGUI7( ".x%x.c create line %d %d %d %d -fill #11E834 -tags %xMODEND -width 3\n", - glist_getcanvas( x->x_glist ), x->x_xpos+(x->x_modend*(x->x_size)/100 ), + canvas, x->x_xpos+(x->x_modend*(x->x_size)/100 ), x->x_ypos, x->x_xpos+(x->x_modend*(x->x_size)/100 ), x->x_ypos+x->x_blocksize*x->x_zoom, x ); } -- cgit v1.2.1