static status toRBG(Int *r, Int *g, Int *b, Name model) { if ( isDefault(*r) || isDefault(*g) || isDefault(*b) ) fail; if ( model == NAME_hsv ) { int ih = valInt(*r) % 360; int is = valInt(*g); int iv = valInt(*b); float R,G,B; if ( is > 100 ) return errorPce(*g, NAME_unexpectedType, CtoType("0..100")); if ( iv > 100 ) return errorPce(*g, NAME_unexpectedType, CtoType("0..100")); if ( ih < 0 ) ih += 360; HSVToRGB((float)ih/360.0, (float)is/100.0, (float)iv/100.0, &R, &G, &B); *r = toInt((int)(R*65535)); *g = toInt((int)(G*65535)); *b = toInt((int)(B*65535)); } succeed; }
answer(m); fail; } else if ( instanceOfObject(list, ClassChain) ) { Chain ch = list; Cell cell; Method m; for_cell(cell, ch) { if ( (m = getMethodMethodList(cell->value, sel)) ) answer(m); } fail; } else { errorPce(list, NAME_unexpectedType, CtoType("method|chain")); fail; } } static Method getCatchAllMethodGoal(PceGoal g) { Class cl = g->class; Method m, *mp; if ( !cl ) cl = classOfObject(g->receiver); mp = ((g->flags & PCE_GF_SEND) ? (Method *)&cl->send_catch_all : (Method *)&cl->get_catch_all);