ScriptVariant *ScriptVariant_Mod(ScriptVariant * svar, ScriptVariant * rightChild) { static ScriptVariant retvar; LONG l1, l2; if(ScriptVariant_IntegerValue(svar, &l1) == S_OK && ScriptVariant_IntegerValue(rightChild, &l2) == S_OK) { retvar.vt = VT_INTEGER; retvar.lVal = l1 % l2; } else { ScriptVariant_Init(&retvar); } return &retvar; }
HRESULT math_cos(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount) { LONG ltemp; if(SUCCEEDED(ScriptVariant_IntegerValue(varlist[0], <emp))) { ScriptVariant_ChangeType(*pretvar, VT_DECIMAL); (*pretvar)->dblVal = cos_table[(ltemp % 360 + 360) % 360]; return S_OK; } *pretvar = NULL; return E_FAIL; }
//strwidth(char string, int font); HRESULT openbor_strwidth(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount) { LONG ltemp; if(paramCount < 2 || varlist[0]->vt != VT_STR || FAILED(ScriptVariant_IntegerValue(varlist[1], <emp))) { goto strwidth_error; } ScriptVariant_ChangeType(*pretvar, VT_INTEGER); (*pretvar)->lVal = font_string_width((int)ltemp, (char *)StrCache_Get(varlist[0]->strVal)); return S_OK; strwidth_error: printf("Error, strwidth({string}, {font}): Invalid or missing parameter.\n"); *pretvar = NULL; return E_FAIL; }