A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 736 lines 19 kB view raw
1/* Copyright (c) 1997-1999 Miller Puckette. 2 * For information on usage and redistribution, and for a DISCLAIMER OF ALL 3 * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ 4 5/* g_7_guis.c written by Thomas Musil (c) IEM KUG Graz Austria 2000-2001 */ 6/* thanks to Miller Puckette, Guenther Geiger and Krzystof Czaja */ 7 8 9#ifdef ROCKBOX 10#include "plugin.h" 11#include "../../pdbox.h" 12#include "m_pd.h" 13#include "g_canvas.h" 14#include "g_all_guis.h" 15#define snprintf rb->snprintf 16#else /* ROCKBOX */ 17#include <stdlib.h> 18#include <string.h> 19#include <stdio.h> 20#include <ctype.h> 21#include "m_pd.h" 22#include "g_canvas.h" 23#include "t_tk.h" 24#include "g_all_guis.h" 25#include <math.h> 26 27#ifdef MSW 28#include <io.h> 29#else 30#include <unistd.h> 31#endif 32#endif /* ROCKBOX */ 33 34/* #define GGEE_HSLIDER_COMPATIBLE */ 35 36/*------------------ global varaibles -------------------------*/ 37 38int iemgui_color_hex[]= 39{ 40 16579836, 10526880, 4210752, 16572640, 16572608, 41 16579784, 14220504, 14220540, 14476540, 16308476, 42 14737632, 8158332, 2105376, 16525352, 16559172, 43 15263784, 1370132, 2684148, 3952892, 16003312, 44 12369084, 6316128, 0, 9177096, 5779456, 45 7874580, 2641940, 17488, 5256, 5767248 46}; 47 48int iemgui_vu_db2i[]= 49{ 50 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 51 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 52 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 55 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 57 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 58 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 59 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 60 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 61 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 62 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 63 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64 9, 9, 9, 9, 9,10,10,10,10,10, 65 11,11,11,11,11,12,12,12,12,12, 66 13,13,13,13,14,14,14,14,15,15, 67 15,15,16,16,16,16,17,17,17,18, 68 18,18,19,19,19,20,20,20,21,21, 69 22,22,23,23,24,24,25,26,27,28, 70 29,30,31,32,33,33,34,34,35,35, 71 36,36,37,37,37,38,38,38,39,39, 72 39,39,39,39,40,40 73}; 74 75int iemgui_vu_col[]= 76{ 77 0,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, 78 15,15,15,15,15,15,15,15,15,15,14,14,13,13,13,13,13,13,13,13,13,13,13,19,19,19 79}; 80 81char *iemgui_vu_scale_str[]= 82{ 83 "", 84 "<-99", 85 "", 86 "", 87 "", 88 "-50", 89 "", 90 "", 91 "", 92 "-30", 93 "", 94 "", 95 "", 96 "-20", 97 "", 98 "", 99 "", 100 "-12", 101 "", 102 "", 103 "", 104 "-6", 105 "", 106 "", 107 "", 108 "-2", 109 "", 110 "", 111 "", 112 "-0dB", 113 "", 114 "", 115 "", 116 "+2", 117 "", 118 "", 119 "", 120 "+6", 121 "", 122 "", 123 "", 124 ">+12", 125 "", 126 "", 127 "", 128 "", 129 "", 130}; 131 132 133/*------------------ global functions -------------------------*/ 134 135 136int iemgui_clip_size(int size) 137{ 138 if(size < IEM_GUI_MINSIZE) 139 size = IEM_GUI_MINSIZE; 140 return(size); 141} 142 143int iemgui_clip_font(int size) 144{ 145 if(size < IEM_FONT_MINSIZE) 146 size = IEM_FONT_MINSIZE; 147 return(size); 148} 149 150int iemgui_modulo_color(int col) 151{ 152 while(col >= IEM_GUI_MAX_COLOR) 153 col -= IEM_GUI_MAX_COLOR; 154 while(col < 0) 155 col += IEM_GUI_MAX_COLOR; 156 return(col); 157} 158 159t_symbol *iemgui_raute2dollar(t_symbol *s) 160{ 161 if (s->s_name[0] == '#') 162 { 163 char buf[MAXPDSTRING]; 164 strncpy(buf, s->s_name, MAXPDSTRING); 165 buf[MAXPDSTRING-1] = 0; 166 buf[0] = '$'; 167 return (gensym(buf)); 168 } 169 else return (s); 170} 171 172t_symbol *iemgui_dollar2raute(t_symbol *s) 173{ 174 if (s->s_name[0] == '$') 175 { 176 char buf[MAXPDSTRING]; 177 strncpy(buf, s->s_name, MAXPDSTRING); 178 buf[MAXPDSTRING-1] = 0; 179 buf[0] = '#'; 180 return (gensym(buf)); 181 } 182 else return (s); 183} 184 185void iemgui_verify_snd_ne_rcv(t_iemgui *iemgui) 186{ 187 iemgui->x_fsf.x_put_in2out = 1; 188 if(iemgui->x_fsf.x_snd_able && iemgui->x_fsf.x_rcv_able) 189 { 190 if(!strcmp(iemgui->x_snd->s_name, iemgui->x_rcv->s_name)) 191 iemgui->x_fsf.x_put_in2out = 0; 192 } 193} 194 195t_symbol *iemgui_new_dogetname(t_iemgui *iemgui, int indx, t_atom *argv) 196{ 197#ifdef ROCKBOX 198 (void) iemgui; 199#endif 200 if (IS_A_SYMBOL(argv, indx)) 201 return (atom_getsymbolarg(indx, 100000, argv)); 202 else if (IS_A_FLOAT(argv, indx)) 203 { 204 char str[80]; 205#ifdef ROCKBOX 206 snprintf(str, sizeof(str), "%d", 207 (int) atom_getintarg(indx, 100000, argv)); 208#else 209 sprintf(str, "%d", (int)atom_getintarg(indx, 100000, argv)); 210#endif 211 return (gensym(str)); 212 } 213 else return (gensym("empty")); 214} 215 216void iemgui_new_getnames(t_iemgui *iemgui, int indx, t_atom *argv) 217{ 218 if (argv) 219 { 220 iemgui->x_snd = iemgui_new_dogetname(iemgui, indx, argv); 221 iemgui->x_rcv = iemgui_new_dogetname(iemgui, indx+1, argv); 222 iemgui->x_lab = iemgui_new_dogetname(iemgui, indx+2, argv); 223 } 224 else iemgui->x_snd = iemgui->x_rcv = iemgui->x_lab = gensym("empty"); 225 iemgui->x_snd_unexpanded = iemgui->x_rcv_unexpanded = 226 iemgui->x_lab_unexpanded = 0; 227 iemgui->x_binbufindex = indx; 228 iemgui->x_labelbindex = indx + 3; 229} 230 231 /* convert symbols in "$" form to the expanded symbols */ 232void iemgui_all_dollararg2sym(t_iemgui *iemgui, t_symbol **srlsym) 233{ 234 /* save unexpanded ones for later */ 235 iemgui->x_snd_unexpanded = srlsym[0]; 236 iemgui->x_rcv_unexpanded = srlsym[1]; 237 iemgui->x_lab_unexpanded = srlsym[2]; 238 srlsym[0] = canvas_realizedollar(iemgui->x_glist, srlsym[0]); 239 srlsym[1] = canvas_realizedollar(iemgui->x_glist, srlsym[1]); 240 srlsym[2] = canvas_realizedollar(iemgui->x_glist, srlsym[2]); 241} 242 243 /* initialize a single symbol in unexpanded form. We reach into the 244 binbuf to grab them; if there's nothing there, set it to the 245 fallback; if still nothing, set to "empty". */ 246static void iemgui_init_sym2dollararg(t_iemgui *iemgui, t_symbol **symp, 247 int indx, t_symbol *fallback) 248{ 249 if (!*symp) 250 { 251 t_binbuf *b = iemgui->x_obj.ob_binbuf; 252 if (binbuf_getnatom(b) > indx) 253 { 254 char buf[80]; 255 atom_string(binbuf_getvec(b) + indx, buf, 80); 256 *symp = gensym(buf); 257 } 258 else if (fallback) 259 *symp = fallback; 260 else *symp = gensym("empty"); 261 } 262} 263 264 /* get the unexpanded versions of the symbols; initialize them if 265 necessary. */ 266void iemgui_all_sym2dollararg(t_iemgui *iemgui, t_symbol **srlsym) 267{ 268 iemgui_init_sym2dollararg(iemgui, &iemgui->x_snd_unexpanded, 269 iemgui->x_binbufindex+1, iemgui->x_snd); 270 iemgui_init_sym2dollararg(iemgui, &iemgui->x_rcv_unexpanded, 271 iemgui->x_binbufindex+2, iemgui->x_rcv); 272 iemgui_init_sym2dollararg(iemgui, &iemgui->x_lab_unexpanded, 273 iemgui->x_labelbindex, iemgui->x_lab); 274 srlsym[0] = iemgui->x_snd_unexpanded; 275 srlsym[1] = iemgui->x_rcv_unexpanded; 276 srlsym[2] = iemgui->x_lab_unexpanded; 277} 278 279void iemgui_first_dollararg2sym(t_iemgui *iemgui, t_symbol **srlsym) 280{ 281#ifdef ROCKBOX 282 (void) iemgui; 283 (void) srlsym; 284#endif 285 /* delete this function */ 286} 287 288void iemgui_all_col2save(t_iemgui *iemgui, int *bflcol) 289{ 290 bflcol[0] = -1 - (((0xfc0000 & iemgui->x_bcol) >> 6)| 291 ((0xfc00 & iemgui->x_bcol) >> 4)|((0xfc & iemgui->x_bcol) >> 2)); 292 bflcol[1] = -1 - (((0xfc0000 & iemgui->x_fcol) >> 6)| 293 ((0xfc00 & iemgui->x_fcol) >> 4)|((0xfc & iemgui->x_fcol) >> 2)); 294 bflcol[2] = -1 - (((0xfc0000 & iemgui->x_lcol) >> 6)| 295 ((0xfc00 & iemgui->x_lcol) >> 4)|((0xfc & iemgui->x_lcol) >> 2)); 296} 297 298void iemgui_all_colfromload(t_iemgui *iemgui, int *bflcol) 299{ 300 if(bflcol[0] < 0) 301 { 302 bflcol[0] = -1 - bflcol[0]; 303 iemgui->x_bcol = ((bflcol[0] & 0x3f000) << 6)|((bflcol[0] & 0xfc0) << 4)| 304 ((bflcol[0] & 0x3f) << 2); 305 } 306 else 307 { 308 bflcol[0] = iemgui_modulo_color(bflcol[0]); 309 iemgui->x_bcol = iemgui_color_hex[bflcol[0]]; 310 } 311 if(bflcol[1] < 0) 312 { 313 bflcol[1] = -1 - bflcol[1]; 314 iemgui->x_fcol = ((bflcol[1] & 0x3f000) << 6)|((bflcol[1] & 0xfc0) << 4)| 315 ((bflcol[1] & 0x3f) << 2); 316 } 317 else 318 { 319 bflcol[1] = iemgui_modulo_color(bflcol[1]); 320 iemgui->x_fcol = iemgui_color_hex[bflcol[1]]; 321 } 322 if(bflcol[2] < 0) 323 { 324 bflcol[2] = -1 - bflcol[2]; 325 iemgui->x_lcol = ((bflcol[2] & 0x3f000) << 6)|((bflcol[2] & 0xfc0) << 4)| 326 ((bflcol[2] & 0x3f) << 2); 327 } 328 else 329 { 330 bflcol[2] = iemgui_modulo_color(bflcol[2]); 331 iemgui->x_lcol = iemgui_color_hex[bflcol[2]]; 332 } 333} 334 335int iemgui_compatible_col(int i) 336{ 337 int j; 338 339 if(i >= 0) 340 { 341 j = iemgui_modulo_color(i); 342 return(iemgui_color_hex[(j)]); 343 } 344 else 345 return((-1 -i)&0xffffff); 346} 347 348void iemgui_all_dollar2raute(t_symbol **srlsym) 349{ 350 srlsym[0] = iemgui_dollar2raute(srlsym[0]); 351 srlsym[1] = iemgui_dollar2raute(srlsym[1]); 352 srlsym[2] = iemgui_dollar2raute(srlsym[2]); 353} 354 355void iemgui_all_raute2dollar(t_symbol **srlsym) 356{ 357 srlsym[0] = iemgui_raute2dollar(srlsym[0]); 358 srlsym[1] = iemgui_raute2dollar(srlsym[1]); 359 srlsym[2] = iemgui_raute2dollar(srlsym[2]); 360} 361 362void iemgui_send(void *x, t_iemgui *iemgui, t_symbol *s) 363{ 364 t_symbol *snd; 365#ifdef ROCKBOX 366 int sndable=1, oldsndrcvable=0; 367#else 368 int pargc, tail_len, nth_arg, sndable=1, oldsndrcvable=0; 369 t_atom *pargv; 370#endif 371 372 if(iemgui->x_fsf.x_rcv_able) 373 oldsndrcvable += IEM_GUI_OLD_RCV_FLAG; 374 if(iemgui->x_fsf.x_snd_able) 375 oldsndrcvable += IEM_GUI_OLD_SND_FLAG; 376 377 if(!strcmp(s->s_name, "empty")) sndable = 0; 378 snd = iemgui_raute2dollar(s); 379 iemgui->x_snd_unexpanded = snd; 380 iemgui->x_snd = snd = canvas_realizedollar(iemgui->x_glist, snd); 381 post("send: before %s, after %s", iemgui->x_snd_unexpanded->s_name, 382 iemgui->x_snd->s_name); 383 384 iemgui->x_fsf.x_snd_able = sndable; 385 iemgui_verify_snd_ne_rcv(iemgui); 386 (*iemgui->x_draw)(x, iemgui->x_glist, IEM_GUI_DRAW_MODE_IO + oldsndrcvable); 387} 388 389void iemgui_receive(void *x, t_iemgui *iemgui, t_symbol *s) 390{ 391 t_symbol *rcv; 392#ifdef ROCKBOX 393 int rcvable=1, oldsndrcvable=0; 394#else 395 int pargc, tail_len, nth_arg, rcvable=1, oldsndrcvable=0; 396 t_atom *pargv; 397#endif 398 399 if(iemgui->x_fsf.x_rcv_able) 400 oldsndrcvable += IEM_GUI_OLD_RCV_FLAG; 401 if(iemgui->x_fsf.x_snd_able) 402 oldsndrcvable += IEM_GUI_OLD_SND_FLAG; 403 404 if(!strcmp(s->s_name, "empty")) rcvable = 0; 405 rcv = iemgui_raute2dollar(s); 406 iemgui->x_rcv_unexpanded = rcv; 407 iemgui->x_rcv = rcv = canvas_realizedollar(iemgui->x_glist, rcv); 408 if(rcvable) 409 { 410 if(strcmp(rcv->s_name, iemgui->x_rcv->s_name)) 411 { 412 if(iemgui->x_fsf.x_rcv_able) 413 pd_unbind(&iemgui->x_obj.ob_pd, iemgui->x_rcv); 414 iemgui->x_rcv = rcv; 415 pd_bind(&iemgui->x_obj.ob_pd, iemgui->x_rcv); 416 } 417 } 418 else if(!rcvable && iemgui->x_fsf.x_rcv_able) 419 { 420 pd_unbind(&iemgui->x_obj.ob_pd, iemgui->x_rcv); 421 iemgui->x_rcv = rcv; 422 } 423 iemgui->x_fsf.x_rcv_able = rcvable; 424 iemgui_verify_snd_ne_rcv(iemgui); 425 (*iemgui->x_draw)(x, iemgui->x_glist, IEM_GUI_DRAW_MODE_IO + oldsndrcvable); 426} 427 428void iemgui_label(void *x, t_iemgui *iemgui, t_symbol *s) 429{ 430 t_symbol *lab; 431#ifndef ROCKBOX 432 int pargc, tail_len, nth_arg; 433 t_atom *pargv; 434#endif 435 436#ifdef ROCKBOX 437 (void) x; 438#endif 439 440 lab = iemgui_raute2dollar(s); 441 iemgui->x_lab_unexpanded = lab; 442 iemgui->x_lab = lab = canvas_realizedollar(iemgui->x_glist, lab); 443 444#ifndef ROCKBOX 445 if(glist_isvisible(iemgui->x_glist)) 446 sys_vgui(".x%x.c itemconfigure %xLABEL -text {%s} \n", 447 glist_getcanvas(iemgui->x_glist), x, 448 strcmp(s->s_name, "empty")?iemgui->x_lab->s_name:""); 449#endif 450} 451 452void iemgui_label_pos(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av) 453{ 454#ifdef ROCKBOX 455 (void) x; 456 (void) s; 457#endif 458 459 iemgui->x_ldx = (int)atom_getintarg(0, ac, av); 460 iemgui->x_ldy = (int)atom_getintarg(1, ac, av); 461 462#ifndef ROCKBOX 463 if(glist_isvisible(iemgui->x_glist)) 464 sys_vgui(".x%x.c coords %xLABEL %d %d\n", 465 glist_getcanvas(iemgui->x_glist), x, 466 iemgui->x_obj.te_xpix+iemgui->x_ldx, 467 iemgui->x_obj.te_ypix+iemgui->x_ldy); 468#endif 469} 470 471void iemgui_label_font(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av) 472{ 473 int f = (int)atom_getintarg(0, ac, av); 474 475#ifdef ROCKBOX 476 (void) x; 477 (void) s; 478#endif 479 480 if(f == 1) strcpy(iemgui->x_font, "helvetica"); 481 else if(f == 2) strcpy(iemgui->x_font, "times"); 482 else 483 { 484 f = 0; 485 strcpy(iemgui->x_font, "courier"); 486 } 487 iemgui->x_fsf.x_font_style = f; 488 f = (int)atom_getintarg(1, ac, av); 489 if(f < 4) 490 f = 4; 491 iemgui->x_fontsize = f; 492#ifndef ROCKBOX 493 if(glist_isvisible(iemgui->x_glist)) 494 sys_vgui(".x%x.c itemconfigure %xLABEL -font {%s %d bold}\n", 495 glist_getcanvas(iemgui->x_glist), x, iemgui->x_font, iemgui->x_fontsize); 496#endif 497} 498 499void iemgui_size(void *x, t_iemgui *iemgui) 500{ 501 if(glist_isvisible(iemgui->x_glist)) 502 { 503 (*iemgui->x_draw)(x, iemgui->x_glist, IEM_GUI_DRAW_MODE_MOVE); 504 canvas_fixlinesfor(glist_getcanvas(iemgui->x_glist), (t_text*)x); 505 } 506} 507 508void iemgui_delta(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av) 509{ 510#ifdef ROCKBOX 511 (void) s; 512#endif 513 iemgui->x_obj.te_xpix += (int)atom_getintarg(0, ac, av); 514 iemgui->x_obj.te_ypix += (int)atom_getintarg(1, ac, av); 515 if(glist_isvisible(iemgui->x_glist)) 516 { 517 (*iemgui->x_draw)(x, iemgui->x_glist, IEM_GUI_DRAW_MODE_MOVE); 518 canvas_fixlinesfor(glist_getcanvas(iemgui->x_glist), (t_text*)x); 519 } 520} 521 522void iemgui_pos(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av) 523{ 524#ifdef ROCKBOX 525 (void) s; 526#endif 527 iemgui->x_obj.te_xpix = (int)atom_getintarg(0, ac, av); 528 iemgui->x_obj.te_ypix = (int)atom_getintarg(1, ac, av); 529 if(glist_isvisible(iemgui->x_glist)) 530 { 531 (*iemgui->x_draw)(x, iemgui->x_glist, IEM_GUI_DRAW_MODE_MOVE); 532 canvas_fixlinesfor(glist_getcanvas(iemgui->x_glist), (t_text*)x); 533 } 534} 535 536void iemgui_color(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *av) 537{ 538#ifdef ROCKBOX 539 (void) s; 540#endif 541 iemgui->x_bcol = iemgui_compatible_col(atom_getintarg(0, ac, av)); 542 if(ac > 2) 543 { 544 iemgui->x_fcol = iemgui_compatible_col(atom_getintarg(1, ac, av)); 545 iemgui->x_lcol = iemgui_compatible_col(atom_getintarg(2, ac, av)); 546 } 547 else 548 iemgui->x_lcol = iemgui_compatible_col(atom_getintarg(1, ac, av)); 549 if(glist_isvisible(iemgui->x_glist)) 550 (*iemgui->x_draw)(x, iemgui->x_glist, IEM_GUI_DRAW_MODE_CONFIG); 551} 552 553void iemgui_displace(t_gobj *z, t_glist *glist, int dx, int dy) 554{ 555 t_iemguidummy *x = (t_iemguidummy *)z; 556 557 x->x_gui.x_obj.te_xpix += dx; 558 x->x_gui.x_obj.te_ypix += dy; 559 (*x->x_gui.x_draw)((void *)z, glist, IEM_GUI_DRAW_MODE_MOVE); 560 canvas_fixlinesfor(glist_getcanvas(glist), (t_text *)z); 561} 562 563void iemgui_select(t_gobj *z, t_glist *glist, int selected) 564{ 565 t_iemguidummy *x = (t_iemguidummy *)z; 566 567 x->x_gui.x_fsf.x_selected = selected; 568 (*x->x_gui.x_draw)((void *)z, glist, IEM_GUI_DRAW_MODE_SELECT); 569} 570 571void iemgui_delete(t_gobj *z, t_glist *glist) 572{ 573 canvas_deletelinesfor(glist, (t_text *)z); 574} 575 576void iemgui_vis(t_gobj *z, t_glist *glist, int vis) 577{ 578 t_iemguidummy *x = (t_iemguidummy *)z; 579 580 if (vis) 581 (*x->x_gui.x_draw)((void *)z, glist, IEM_GUI_DRAW_MODE_NEW); 582 else 583 (*x->x_gui.x_draw)((void *)z, glist, IEM_GUI_DRAW_MODE_ERASE); 584} 585 586void iemgui_save(t_iemgui *iemgui, t_symbol **srl, int *bflcol) 587{ 588 srl[0] = iemgui->x_snd; 589 srl[1] = iemgui->x_rcv; 590 srl[2] = iemgui->x_lab; 591 iemgui_all_sym2dollararg(iemgui, srl); 592 iemgui_all_col2save(iemgui, bflcol); 593} 594 595void iemgui_properties(t_iemgui *iemgui, t_symbol **srl) 596{ 597 srl[0] = iemgui->x_snd; 598 srl[1] = iemgui->x_rcv; 599 srl[2] = iemgui->x_lab; 600 iemgui_all_sym2dollararg(iemgui, srl); 601 iemgui_all_dollar2raute(srl); 602} 603 604int iemgui_dialog(t_iemgui *iemgui, t_symbol **srl, int argc, t_atom *argv) 605{ 606 char str[144]; 607 int init = (int)atom_getintarg(5, argc, argv); 608 int ldx = (int)atom_getintarg(10, argc, argv); 609 int ldy = (int)atom_getintarg(11, argc, argv); 610 int f = (int)atom_getintarg(12, argc, argv); 611 int fs = (int)atom_getintarg(13, argc, argv); 612 int bcol = (int)atom_getintarg(14, argc, argv); 613 int fcol = (int)atom_getintarg(15, argc, argv); 614 int lcol = (int)atom_getintarg(16, argc, argv); 615 int sndable=1, rcvable=1, oldsndrcvable=0; 616 617 if(iemgui->x_fsf.x_rcv_able) 618 oldsndrcvable += IEM_GUI_OLD_RCV_FLAG; 619 if(iemgui->x_fsf.x_snd_able) 620 oldsndrcvable += IEM_GUI_OLD_SND_FLAG; 621 if(IS_A_SYMBOL(argv,7)) 622 srl[0] = atom_getsymbolarg(7, argc, argv); 623 else if(IS_A_FLOAT(argv,7)) 624 { 625#ifdef ROCKBOX 626 snprintf(str, sizeof(str), "%d", (int) atom_getintarg(7, argc, argv)); 627#else 628 sprintf(str, "%d", (int)atom_getintarg(7, argc, argv)); 629#endif 630 srl[0] = gensym(str); 631 } 632 if(IS_A_SYMBOL(argv,8)) 633 srl[1] = atom_getsymbolarg(8, argc, argv); 634 else if(IS_A_FLOAT(argv,8)) 635 { 636#ifdef ROCKBOX 637 snprintf(str, sizeof(str), "%d", (int) atom_getintarg(8, argc, argv)); 638#else 639 sprintf(str, "%d", (int)atom_getintarg(8, argc, argv)); 640#endif 641 srl[1] = gensym(str); 642 } 643 if(IS_A_SYMBOL(argv,9)) 644 srl[2] = atom_getsymbolarg(9, argc, argv); 645 else if(IS_A_FLOAT(argv,9)) 646 { 647#ifdef ROCKBOX 648 snprintf(str, sizeof(str), "%d", (int) atom_getintarg(9, argc, argv)); 649#else 650 sprintf(str, "%d", (int)atom_getintarg(9, argc, argv)); 651#endif 652 srl[2] = gensym(str); 653 } 654 if(init != 0) init = 1; 655 iemgui->x_isa.x_loadinit = init; 656 if(!strcmp(srl[0]->s_name, "empty")) sndable = 0; 657 if(!strcmp(srl[1]->s_name, "empty")) rcvable = 0; 658 iemgui_all_raute2dollar(srl); 659 iemgui_all_dollararg2sym(iemgui, srl); 660 if(rcvable) 661 { 662 if(strcmp(srl[1]->s_name, iemgui->x_rcv->s_name)) 663 { 664 if(iemgui->x_fsf.x_rcv_able) 665 pd_unbind(&iemgui->x_obj.ob_pd, iemgui->x_rcv); 666 iemgui->x_rcv = srl[1]; 667 pd_bind(&iemgui->x_obj.ob_pd, iemgui->x_rcv); 668 } 669 } 670 else if(!rcvable && iemgui->x_fsf.x_rcv_able) 671 { 672 pd_unbind(&iemgui->x_obj.ob_pd, iemgui->x_rcv); 673 iemgui->x_rcv = srl[1]; 674 } 675 iemgui->x_snd = srl[0]; 676 iemgui->x_fsf.x_snd_able = sndable; 677 iemgui->x_fsf.x_rcv_able = rcvable; 678 iemgui->x_lcol = lcol & 0xffffff; 679 iemgui->x_fcol = fcol & 0xffffff; 680 iemgui->x_bcol = bcol & 0xffffff; 681 iemgui->x_lab = srl[2]; 682 iemgui->x_ldx = ldx; 683 iemgui->x_ldy = ldy; 684 if(f == 1) strcpy(iemgui->x_font, "helvetica"); 685 else if(f == 2) strcpy(iemgui->x_font, "times"); 686 else 687 { 688 f = 0; 689 strcpy(iemgui->x_font, "courier"); 690 } 691 iemgui->x_fsf.x_font_style = f; 692 if(fs < 4) 693 fs = 4; 694 iemgui->x_fontsize = fs; 695 iemgui_verify_snd_ne_rcv(iemgui); 696 return(oldsndrcvable); 697} 698 699void iem_inttosymargs(t_iem_init_symargs *symargp, int n) 700{ 701 memset(symargp, 0, sizeof(*symargp)); 702 symargp->x_loadinit = (n >> 0); 703 symargp->x_scale = (n >> 20); 704 symargp->x_flashed = 0; 705 symargp->x_locked = 0; 706 symargp->x_reverse = 0; 707 symargp->dummy = 0; 708} 709 710int iem_symargstoint(t_iem_init_symargs *symargp) 711{ 712 return ( 713 (((symargp->x_loadinit & 1) << 0) | 714 ((symargp->x_scale & 1) << 20))); 715} 716 717void iem_inttofstyle(t_iem_fstyle_flags *fstylep, int n) 718{ 719 memset(fstylep, 0, sizeof(*fstylep)); 720 fstylep->x_font_style = (n >> 0); 721 fstylep->x_shiftdown = 0; 722 fstylep->x_selected = 0; 723 fstylep->x_finemoved = 0; 724 fstylep->x_put_in2out = 0; 725 fstylep->x_change = 0; 726 fstylep->x_thick = 0; 727 fstylep->x_lin0_log1 = 0; 728 fstylep->x_steady = 0; 729 fstylep->dummy = 0; 730} 731 732int iem_fstyletoint(t_iem_fstyle_flags *fstylep) 733{ 734 return ((fstylep->x_font_style << 0) & 63); 735} 736