void GrSWMaskHelper::compressTextureData(GrTexture *texture, const GrSurfaceDesc& desc) { SkASSERT(GrPixelConfigIsCompressed(desc.fConfig)); SkASSERT(fmt_to_config(fCompressedFormat) == desc.fConfig); SkAutoDataUnref cmpData(SkTextureCompressor::CompressBitmapToFormat(fBM, fCompressedFormat)); SkASSERT(cmpData); this->sendTextureData(texture, desc, cmpData->data(), 0); }
struct ListNode* ListSearchNext(struct ListNode* List, struct ListNode* StartNode, Data dat, int (*cmpData)(const void*, const void*)) { struct ListNode* CurrentNode = StartNode; while(CurrentNode != List) { if(cmpData( (const void*)(&(CurrentNode->value)), (const void*)(&dat)) == 0) return CurrentNode; else CurrentNode = CurrentNode->next; } return NULL; }
void* SimulationResultsCmp_compareResults(const char *filename, const char *reffilename, const char *resultfilename, double reltol, double abstol, void *vars) { char **cmpvars=NULL; char **cmpdiffvars=NULL; unsigned int vardiffindx=0; unsigned int ncmpvars = 0; void *allvars,*cmpvar,*res; unsigned int i,size,size_ref,len,oldlen,j,k; char *var,*var1,*var2; DataField time,timeref,data,dataref; DiffDataField ddf; const char *msg[2] = {"",""}; ddf.data=NULL; ddf.n=0; oldlen = 0; len = 1; /* open files */ /* fprintf(stderr, "Open File %s\n", filename); */ if (UNKNOWN_PLOT == SimulationResultsImpl__openFile(filename,&simresglob_c)) return mk_cons(mk_scon("Error Open File!"),mk_nil()); /* fprintf(stderr, "Open File %s\n", reffilename); */ if (UNKNOWN_PLOT == SimulationResultsImpl__openFile(reffilename,&simresglob_ref)) return mk_cons(mk_scon("Error Open RefFile!"),mk_nil()); size = SimulationResultsImpl__readSimulationResultSize(filename,&simresglob_c); /* fprintf(stderr, "Read size of File %s size= %d\n", filename,size); */ size_ref = SimulationResultsImpl__readSimulationResultSize(reffilename,&simresglob_ref); /* fprintf(stderr, "Read size of File %s size= %d\n", reffilename,size_ref); */ /* get vars to compare */ cmpvars = getVars(vars,&ncmpvars); /* if no var compare all vars */ if (ncmpvars==0){ allvars = SimulationResultsImpl__readVars(filename,&simresglob_c); cmpvars = getVars(vars,&ncmpvars); if (ncmpvars==0) return mk_cons(mk_scon("Error Get Vars!"),mk_nil()); } cmpdiffvars = (char**)malloc(sizeof(char*)*(ncmpvars)); /* fprintf(stderr, "Compare Vars:\n"); /* /* for(i=0;i<ncmpvars;i++) fprintf(stderr, "Var: %s\n", cmpvars[i]); */ /* get time */ /* fprintf(stderr, "get time\n"); */ time = getData("time",filename,size,&simresglob_c); if (time.n==0) { time = getData("Time",filename,size,&simresglob_c); if (time.n==0){ /* fprintf(stderr, "Cannot get var time\n"); */ return mk_cons(mk_scon("Error get time!"),mk_nil()); } } /* fprintf(stderr, "get reftime\n"); */ timeref = getData("time",reffilename,size_ref,&simresglob_ref); if (timeref.n==0) { timeref = getData("Time",reffilename,size_ref,&simresglob_ref); if (timeref.n==0){ /* fprintf(stderr, "Cannot get var reftime\n"); */ return mk_cons(mk_scon("Error get ref time!"),mk_nil()); } } var1=NULL; var2=NULL; /* compare vars */ /* fprintf(stderr, "compare vars\n"); */ for (i=0;i<ncmpvars;i++) { var = cmpvars[i]; len = strlen(var); if (oldlen < len) { if (var1) free(var1); var1 = (char*) malloc(len+1); oldlen = len; } memset(var1,0,len); k = 0; for (j=0;j<len;j++) { if (var[j] !='\"' ) { var1[k] = var[j]; k +=1; } } /* fprintf(stderr, "compare var: %s\n",var); */ /* check if in ref_file */ dataref = getData(var1,reffilename,size_ref,&simresglob_ref); if (dataref.n==0) { if (var2) free(var2); var2 = (char*) malloc(len+1); strncpy(var2,var1,len+1); fixDerInName(var2,len); fixCommaInName(&var2,len); dataref = getData(var2,reffilename,size_ref,&simresglob_ref); if (dataref.n==0) { fprintf(stderr, "Get Data of Var %s from file %s failed\n",var,reffilename); c_add_message(-1, ErrorType_scripting, ErrorLevel_warning, "Get Data of Var failed!\n", msg, 0); continue; } } /* check if in file */ data = getData(var1,filename,size,&simresglob_c); if (data.n==0) { fixDerInName(var1,len); fixCommaInName(&var1,len); data = getData(var1,filename,size,&simresglob_c); if (data.n==0) { if (data.data) free(data.data); fprintf(stderr, "Get Data of Var %s from file %s failed\n",var,filename); c_add_message(-1, ErrorType_scripting, ErrorLevel_warning, "Get Data of Var failed!\n", msg, 0); continue; } } /* compare */ vardiffindx = cmpData(var,&time,&timeref,&data,&dataref,reltol,abstol,&ddf,cmpdiffvars,vardiffindx); /* free */ if (dataref.data) free(dataref.data); if (data.data) free(data.data); } if (writeLogFile(resultfilename,&ddf,filename,reffilename,reltol,abstol)) { c_add_message(-1, ErrorType_scripting, ErrorLevel_warning, "Cannot write result file!\n", msg, 0); } if (ddf.n > 0){ /* fprintf(stderr, "diff: %d\n",ddf.n); */ /* for (i=0;i<vardiffindx;i++) fprintf(stderr, "diffVar: %s\n",cmpdiffvars[i]); */ res = mk_nil(); for (i=0;i<vardiffindx;i++){ res = (void*)mk_cons(mk_scon(cmpdiffvars[i]),res); } res = mk_cons(mk_scon("Files not Equal!"),res); c_add_message(-1, ErrorType_scripting, ErrorLevel_warning, "Files not Equal\n", msg, 0); } else res = mk_cons(mk_scon("Files Equal!"),mk_nil()); if (var1) free(var1); if (var2) free(var2); if (ddf.data) free(ddf.data); if(cmpvars) free(cmpvars); if (time.data) free(time.data); if (timeref.data) free(timeref.data); if (cmpdiffvars) free(cmpdiffvars); /* close files */ SimulationResultsImpl__close(&simresglob_c); SimulationResultsImpl__close(&simresglob_ref); return res; }