void *LCD_menu(void *p, long x, long y, long font) { void *res; EnterCallback(); res = rLCD(p,(short)x,(short)y, 16*CHAR_WIDTH+2*BORDER_WIDTH, 2*CHAR_HEIGHT+2*BORDER_HEIGHT); ExitCallback(); return (res); }
void Menu_EnterCurrentItem(void) { if ((CurrentMenuItem == &NULL_MENU) || (CurrentMenuItem == NULL)) return; void (*EnterCallback)(void) = MENU_ITEM_READ_POINTER(&CurrentMenuItem->EnterCallback); if (EnterCallback) EnterCallback(); }
void LCD_font(Lcd *x, long font, long size) { Atom a[2]; EnterCallback(); SETLONG(a,font); SETLONG(a+1,size); defer(x,(method)LCD_dofont,0L,2,a); ExitCallback(); }
void LCD_MoveTo(Lcd *x, long deltaX, long deltaY) { Atom a[2]; EnterCallback(); SETLONG(a,deltaX); SETLONG(a+1,deltaY); defer(x,(method)LCD_doMoveTo,0L,2,a); ExitCallback(); }
void LCD_free(Lcd *x) { EnterCallback(); if (x->screen) freebytes(x->screen,(short)sizeof(char)*(x->cols*x->rows)); if (x->lcd_region) DisposeRgn(x->lcd_region); box_free((void *)x); ExitCallback(); }
void LCD_dolinesegment(Lcd *x, Symbol *s, short argc, Atom *argv) { PaletteHandle pH; RGBColor fColor; GrafPort *gp; RgnHandle cur; long fromx,fromy,tox,toy,color; short save; EnterCallback(); fromx = argv->a_w.w_long; fromy = (argv+1)->a_w.w_long; tox = (argv+2)->a_w.w_long; toy = (argv+3)->a_w.w_long; color = (argv+4)->a_w.w_long; #ifdef debug post("Segment"); #endif gp = patcher_setport(x->lcd_box.b_patcher); if (gp) { if (!box_nodraw((void *)x)) { // save=lockout_set(1); MoveTo(x->lcd_box.b_rect.left+1+(short)fromx,x->lcd_box.b_rect.top+1+(short)fromy); x->lcd_where.h = (short)fromx; x->lcd_where.v = (short)fromy; if (color) x->lcd_pIndex = (short)color & (numPaletteColors-1); cur = NewRgn(); GetClip(cur); SetClip(x->lcd_region); setUpPalette(x,&fColor,&pH); // LCD_MoveTo(x,(long)(x->lcd_where.h),(long)(x->lcd_where.v)); LineTo(x->lcd_box.b_rect.left+1+(short)tox,x->lcd_box.b_rect.top+1+(short)toy); x->lcd_where.h = (short)tox; x->lcd_where.v = (short)toy; restorePalette(x,&fColor,&pH); SetClip(cur); DisposeRgn(cur); // lockout_set(save); } SetPort(gp); } ExitCallback(); }
/*------------------------------------ cmd_Count ---*/ Pvoid cmd_Count(QtPtr xx) { EnterCallback(); #if defined(TRACE_MESSAGES) LOG_POST_1("Count") #endif /* TRACE_MESSAGES */ if (xx) outlet_int(xx->fResultOut, long(xx->fMovieCount)); ExitMaxMessageHandler() } /* cmd_Count */
void LCD_debug(Lcd *x) { EnterCallback(); x->lcd_debug = !x->lcd_debug; if (x->lcd_debug) post("LCD debug on"); else post("LCD debug off"); ExitCallback(); }
void LCD_doascii(Lcd *x, Symbol *s, short argc, Atom *argv) { short i; char stng[256]; EnterCallback(); stng[1] = '\0'; for (i=0;i<argc;i++) { switch(argv[i].a_type) { case A_LONG: switch (stng[0] = (char)argv[i].a_w.w_long) { case BACKSPACE: stng[0] = 32; x->lcd_col--; x->lcd_col = MINMAX(x->lcd_col,0,x->cols-1); LCD_drawTxt(x,stng); x->lcd_col--; x->lcd_col = MINMAX(x->lcd_col,0,x->cols-1); break; case CR: x->lcd_row++; x->lcd_row = MINMAX(x->lcd_row,0,x->rows-1); x->lcd_col = 0; break; case LEFT_ARROW: x->lcd_col--; x->lcd_col = MINMAX(x->lcd_col,0,x->cols-1); break; case RIGHT_ARROW: x->lcd_col++; x->lcd_col = MINMAX(x->lcd_col,0,x->cols-1); break; case UP_ARROW: x->lcd_row--; x->lcd_row = MINMAX(x->lcd_row,0,x->rows-1); break; case DOWN_ARROW: x->lcd_row++; x->lcd_row = MINMAX(x->lcd_row,0,x->rows-1); break; default: LCD_drawTxt(x,stng); break; } break; case A_SYM: case A_FLOAT: break; } } ExitCallback(); }
/*------------------------------------ cmd_End ---*/ Pvoid cmd_End(QtPtr xx) { EnterCallback(); #if defined(TRACE_MESSAGES) LOG_POST_1("End") #endif /* TRACE_MESSAGES */ if (xx) defer(xx, reinterpret_cast<method>(deferred_End), NULL_PTR, 0, NULL_PTR); ExitMaxMessageHandler() } /* cmd_End */
void ottcp_assist (OTTCP *x, void *box, long msg, long arg, char *dstString) { EnterCallback(); if (msg==ASSIST_INLET) { sprintf(dstString, "nbytes, delim..."); } else if (msg==ASSIST_OUTLET) { sprintf(dstString, "binary buffers"); } else { post("е ottcp_assist: unrecognized message %ld", msg); } ExitCallback(); }
void ottcp_ErrorReporting(OTTCP *x, long yesno) { EnterCallback(); if (yesno == 0) { post("OTTCP: Turning off error reporting. What you don't know can't hurt you."); x->o_errorreporting = 0; } else { post("OTTCP: Turning on error reporting."); x->o_errorreporting = 1; } ExitCallback(); }
/*------------------------------------ cmd_Int ---*/ Pvoid cmd_Int(SpeakPtr xx, long msg) { EnterCallback(); if (xx) { clearDataBuffer(*xx->fBuffer); addLongToBuffer(OUR_NAME, *xx->fBuffer, msg); transmitBuffer(xx); } ExitMaxMessageHandler() } /* cmd_Int */
/*------------------------------------ cmd_Mute ---*/ Pvoid cmd_Mute(QtPtr xx, long muting) { EnterCallback(); #if defined(TRACE_MESSAGES) LOG_POST_1("Mute") #endif /* TRACE_MESSAGES */ if (xx) defer(xx, reinterpret_cast<method>(deferred_Mute), reinterpret_cast<PSymbol>(muting), 0, NULL_PTR); ExitMaxMessageHandler() } /* cmd_Mute */
void LCD_frameRect(Lcd *x, long left, long top, long right, long bottom, long color) { Atom a[5]; EnterCallback(); SETLONG(a,left); SETLONG(a+1,top); SETLONG(a+2,right); SETLONG(a+3,bottom); SETLONG(a+4,color); defer(x,(method)LCD_doframeRect,0L,5,a); ExitCallback(); }
void LCD_linesegment(Lcd *x, long fromx, long fromy, long tox, long toy, long color) { Atom a[5]; EnterCallback(); SETLONG(a,fromx); SETLONG(a+1,fromy); SETLONG(a+2,tox); SETLONG(a+3,toy); SETLONG(a+4,color); defer(x,(method)LCD_dolinesegment,0L,5,a); ExitCallback(); }
/*------------------------------------ cmd_Volumeq ---*/ Pvoid cmd_Volumeq(SpeakPtr xx) { EnterCallback(); if (xx && xx->fSpeaker) { Atom response[1]; Fixed volume; GetSpeechInfo(xx->fSpeaker, soVolume, &volume); SETFLOAT(response, float(Fix2X(volume))); outlet_anything(xx->fResultOut, gVolumeSymbol, 1, response); } ExitMaxMessageHandler() } /* cmd_Volumeq */
/*------------------------------------ cmd_VoiceMax ---*/ Pvoid cmd_VoiceMax(SpeakPtr xx) { EnterCallback(); if (xx) { Atom response[1]; short voiceCount; CountVoices(&voiceCount); SETLONG(response, long(voiceCount)); outlet_anything(xx->fResultOut, gVoiceMaxSymbol, 1, response); } ExitMaxMessageHandler() } /* cmd_VoiceMax */
void LCD_doframeOval(Lcd *x, Symbol *s, short argc, Atom *argv) { long left, top, right, bottom, color; PaletteHandle pH; RGBColor fColor; GrafPort *gp; RgnHandle cur; Rect b,r; EnterCallback(); // I'm suspicious of (argv++)->thing in Code Warrior left = argv->a_w.w_long; top = (argv+1)->a_w.w_long; right = (argv+2)->a_w.w_long; bottom = (argv+3)->a_w.w_long; color = (argv+4)->a_w.w_long; #ifdef debug post("frameOval"); #endif gp = patcher_setport(x->lcd_box.b_patcher); if (gp) { if (!box_nodraw((void *)x)) { if (color) // sde 11/1 x->lcd_pIndex = (short)color & (numPaletteColors-1); cur = NewRgn(); GetClip(cur); SetClip(x->lcd_region); setUpPalette(x,&fColor,&pH); r = x->lcd_box.b_rect; b.left = r.left + (short)left; b.top = r.top + (short)top; b.right = r.left + (short)right; b.bottom = r.top + (short)bottom; FrameOval(&b); restorePalette(x,&fColor,&pH); SetClip(cur); DisposeRgn(cur); } SetPort(gp); } ExitCallback(); }
/*------------------------------------ cmd_Listen ---*/ Pvoid cmd_Listen(FidgetPtr xx, PSymbol onOff) { EnterCallback(); if (xx) { if (onOff == gOffSymbol) xx->fReportEvents = false; else if (onOff == gOnSymbol) xx->fReportEvents = true; else if (onOff == gEmptySymbol) xx->fReportEvents = (! xx->fReportEvents); } ExitMaxMessageHandler() } /* cmd_Listen */
/*------------------------------------ cmd_Verbose ---*/ Pvoid cmd_Verbose(RcxControlPtr xx, PSymbol onOff) { EnterCallback(); if (xx) { if (onOff == gOffSymbol) xx->fVerbose = false; else if (onOff == gOnSymbol) xx->fVerbose = true; else if (onOff == gEmptySymbol) xx->fVerbose = (! xx->fVerbose); } ExitMaxMessageHandler() } /* cmd_Verbose */
void LCD_dofont(Lcd *x, Symbol *s, short argc, Atom *argv) { long font, size; /* check patcher font settings */ GrafPtr sp,pp; short sFont,sSize; EnterCallback(); font = argv->a_w.w_long; size = (argv+1)->a_w.w_long; x->font = (short)font; x->f_size = (short)size; if (sp=patcher_setport(x->lcd_box.b_patcher)){ GetPort(&pp); if (!font&&!size){ x->font = pp->txFont; x->f_size = pp->txSize; } else{ sFont = pp->txFont; sSize = pp->txSize; TextFont(font); TextSize(size); } #ifdef debug post("font:%d size:%d",x->font,x->f_size); #endif LCD_calcfont(x); LCD_resize(x); if (font||size){ TextFont(sFont); TextSize(sSize); } SetPort(sp); } else { /* note that this needs to be calced later */ x->f_width = -1; x->f_ascent = -1; x->f_descent = -1; x->f_height = -1; x->f_lineSpace = -1; } ExitCallback(); }
void myobject_int(MyObject *x, long n) { EnterCallback(); x->m_value = n+3; // store a value inside the object outlet_int(x->m_out,x->m_value); // and send it out ExitCallback(); }
void myobject_bang(MyObject *x) { EnterCallback(); // necessary on 68K for methods that use global variables // or Max functions. #defined to nothing on PowerPC outlet_int(x->m_out,x->m_value); // send stored value out an outlet ExitCallback(); // undoes EnterCallback }
/*------------------------------------ cmd_Rate ---*/ Pvoid cmd_Rate(QtPtr xx, long numerator, long denominator) { Atom avRate[2]; EnterCallback(); #if defined(TRACE_MESSAGES) LOG_POST_1("Rate") #endif /* TRACE_MESSAGES */ SETLONG(avRate, numerator); SETLONG(avRate + 1, denominator); if (xx) defer(xx, reinterpret_cast<method>(deferred_Rate), NULL_PTR, 2, avRate); ExitMaxMessageHandler() } /* cmd_Rate */
/*------------------------------------ cmd_Anything ---*/ Pvoid cmd_Anything(RcxControlPtr xx, PSymbol message, short argc, PAtom argv) { EnterCallback(); LOG_ERROR_2(OUTPUT_PREFIX "Unknown message '%s' seen", message->s_name) outlet_bang(xx->fErrorBangOut); for (short ii = 0; ii < argc; ++ii) { switch (argv[ii].a_type) { case A_LONG: LOG_POST_3(" argument %hd is a long (%ld)", ii, argv[ii].a_w.w_long) break; case A_SYM: LOG_POST_3(" argument %hd is a symbol (%s)", ii, argv[ii].a_w.w_sym->s_name) break; case A_FLOAT: LOG_POST_3(" argument %hd is a float (%g)", ii, double(argv[ii].a_w.w_float)) break; case A_SEMI: LOG_POST_2(" argument %hd is a semicolon", ii) break; case A_COMMA: LOG_POST_2(" argument %hd is a comma", ii) break; case A_DOLLAR: LOG_POST_2(" argument %hd is a dollar sign", ii) break; default: LOG_POST_3(" argument %hd is an unknown type (%hd)", ii, argv[ii].a_type) break; } } ExitMaxMessageHandler() } /* cmd_Anything */
void LCD_save(Lcd *x, void *w) { Rect *r; EnterCallback(); r = &x->lcd_box.b_rect; if (x->lcd_box.b_hidden) { binbuf_vinsert(w,"ssssllll", gensym("#P"),gensym("hidden"),gensym("user"), gensym("LCD"), (long)(r->left), (long)(r->top), (long)(r->right - r->left), (long)(r->bottom - r->top)); } else { binbuf_vinsert(w,"sssllll", gensym("#P"),gensym("user"), gensym("LCD"), (long)(r->left), (long)(r->top), (long)(r->right - r->left), (long)(r->bottom - r->top)); } ExitCallback(); }
void *LCD_new(Symbol *sym, short argc, Atom *argv) { void *patcher; short x,y,w,s; void *res; EnterCallback(); patcher = argv[0].a_w.w_obj; x = (short)argv[1].a_w.w_long; y = (short)argv[2].a_w.w_long; w = (short)argv[3].a_w.w_long; s = (short)argv[4].a_w.w_long; res = rLCD(patcher,x,y,w,s); ExitCallback(); return (res); }
/*------------------------------------ deferred_End ---*/ static Pvoid deferred_End(QtPtr xx) { EnterCallback(); if (xx->fCurrentMovie) { GoToEndOfMovie(xx->fCurrentMovie); SetMovieActive(xx->fCurrentMovie, TRUE); xx->fStopSignalled = true; /* pretend that we reached the end normally */ qtAdjustController(xx); } else { LOG_ERROR_1(OUTPUT_PREFIX "no movies loaded") SignalError(xx); } ExitMaxMessageHandler() } /* deferred_End */
static void ottcp_connect(OTTCP *x, Symbol *hostName, long port) { OSStatus s; InetHost host; EnterCallback(); if (LookUpInetHost(hostName->s_name, &host) == 0) { post("е OTTCP: can't understand host \"%s\"; not connecting", hostName->s_name); return; } x->o_inetHostName = hostName->s_name; x->o_inetPort = port; x->o_inetHost = host; change_connection(x); ExitCallback(); }