コード例 #1
0
ファイル: files.c プロジェクト: astrotycoon/grace
int getdata(Quark *gr, char *fn, int settype, int load_type)
{
    FILE *fp;
    int retval;
    GraceApp *gapp = gapp_from_quark(gr);
    ascii_data adata;
    
    fp = gapp_openr(gapp, fn, SOURCE_DISK);
    if (fp == NULL) {
	return RETURN_FAILURE;
    }

    adata.label = fn;
    adata.load_type = load_type;
    adata.settype = settype;
    
    retval = uniread(gr, fp, NULL, store_cb, &adata);

    gapp_close(fp);
    
    if (load_type != LOAD_BLOCK) {
        autoscale_graph(gr, gapp->rt->autoscale_onread);
    }

    return retval;
}
コード例 #2
0
ファイル: graceapp.c プロジェクト: mariusal/grace
void runtime_free(RunTime *rt)
{
    int i;
    
    if (!rt) {
        return;
    }
    
    for (i = 0; i < rt->num_print_dests; i++) {
        PrintDest *pd = &rt->print_dests[i];
        int j;
        xfree(pd->name);
        xfree(pd->inst);
        xfree(pd->printer);
        for (j = 0; j < pd->nogroups; j++) {
            PrintOptGroup *og = &pd->ogroups[j];
            int k;
            xfree(og->name);
            xfree(og->text);
            for (k = 0; k < og->nopts; k++) {
                PrintOption *po = &og->opts[k];
                xfree(po->name);
                xfree(po->text);
                dict_free(po->choices);
            }
            xfree(og->opts);
        }
        xfree(pd->ogroups);
    }
    xfree(rt->print_dests);
    
    xfree(rt->print_cmd);
    xfree(rt->gapp_editor);
    xfree(rt->help_viewer);
    xfree(rt->workingdir);

    if (rt->resfp) {
        gapp_close(rt->resfp);
    }
    
    xfree(rt);
}
コード例 #3
0
ファイル: fourier.c プロジェクト: armando-2011/grace
static void save_wisdom(void){
    char *final_wisdom;

    final_wisdom = fftw_export_wisdom_to_string();
    
    if (!initial_wisdom ||
        strings_are_equal(initial_wisdom, final_wisdom) != TRUE) {
        FILE *wf;
        wf = gapp_openw(gapp, wisdom_file);
        if (wf) {
            fftw_export_wisdom_to_file(wf);
            gapp_close(wf);
        }
    } 
    
    fftw_free(final_wisdom);
    if (initial_wisdom) {
        fftw_free(initial_wisdom);
    }
}
コード例 #4
0
ファイル: fourier.c プロジェクト: armando-2011/grace
static void init_wisdom(void)
{
    static int wisdom_inited = FALSE;
    
    if (!wisdom_inited)  {
        char *ram_cache_wisdom;
        
        wisdom_inited = TRUE;
        wisdom_file      = getenv("GRACE_FFTW_WISDOM_FILE");
        ram_cache_wisdom = getenv("GRACE_FFTW_RAM_WISDOM");

        if (ram_cache_wisdom) {
            sscanf(ram_cache_wisdom, "%d", &using_wisdom);
        }

        /* turn on wisdom if it is requested even without persistent storage */
        if (wisdom_file && wisdom_file[0] ) {
            /* if a file was specified in GRACE_FFTW_WISDOM_FILE, try to read it */
            FILE *wf;
            fftw_status fstat;
            
            wf = gapp_openr(gapp, wisdom_file, SOURCE_DISK);
            if (wf) {
	        fstat = fftw_import_wisdom_from_file(wf);
	        gapp_close(wf);
	        initial_wisdom = fftw_export_wisdom_to_string();
            } else {
                initial_wisdom = NULL;
            }
            
            atexit(save_wisdom);
            
            /* if a file is specified, always use wisdom */
            using_wisdom = TRUE;
        }
    }
}
コード例 #5
0
ファイル: files.c プロジェクト: astrotycoon/grace
/*
 * read data to the set from a file overriding the current contents
 */
int update_set_from_file(Quark *pset)
{
    int retval;
    Dataset *dsp;
    
    dsp = set_get_dataset(pset);
    
    if (!dsp) {
        retval = RETURN_FAILURE;
    } else {
        FILE *fp;
        RunTime *rt = rt_from_quark(pset);
        
        fp = gapp_openr(gapp_from_quark(pset), dsp->hotfile, dsp->hotsrc);
        
        killsetdata(pset);
        rt->curtype = set_get_type(pset);
        retval = uniread(get_parent_project(pset), fp, LOAD_SINGLE, dsp->hotfile);

        gapp_close(fp);
    }
    
    return retval;
}
コード例 #6
0
ファイル: graceapp.c プロジェクト: mariusal/grace
/*
 * If writing to a file, check to see if it exists
 */
void do_hardcopy(const GProject *gp)
{
    Quark *project = gproject_get_top(gp);
    GraceApp *gapp = gapp_from_quark(project);
    RunTime *rt;
    Canvas *canvas;
    char fname[GR_MAXPATHLEN];
    view v;
    double vx, vy;
    int truncated_out, res;
    FILE *prstream;
    
    if (!gapp) {
        return;
    }
    
    rt = gapp->rt;
    canvas = grace_get_canvas(gapp->grace);
    
    if (get_ptofile(gapp)) {
        if (string_is_empty(rt->print_file)) {
            Device_entry *dev = get_device_props(canvas, rt->hdevice);
            sprintf(rt->print_file, "%s.%s",
                QIDSTR(project), dev->fext);
        }
        strcpy(fname, rt->print_file);
        prstream = gapp_openw(gapp, fname);
    } else {
        strcpy(fname, "gappXXXXXX");
        prstream = gapp_tmpfile(fname);
    }
    
    if (prstream == NULL) {
        return;
    }
    
    canvas_set_prstream(canvas, prstream); 
    
    select_device(canvas, rt->hdevice);
    
    res = gproject_render(gp);
    
    gapp_close(prstream);
    
    if (res != RETURN_SUCCESS) {
        return;
    }
    
    get_bbox(canvas, BBOX_TYPE_GLOB, &v);
    project_get_viewport(project, &vx, &vy);
    if (v.xv1 < 0.0 - VP_EPSILON || v.xv2 > vx + VP_EPSILON ||
        v.yv1 < 0.0 - VP_EPSILON || v.yv2 > vy + VP_EPSILON) {
        truncated_out = TRUE;
    } else {
        truncated_out = FALSE;
    }
    
    if (get_ptofile(gapp) == FALSE) {
        if (truncated_out == FALSE ||
            yesno("Printout is truncated. Continue?", NULL, NULL, NULL)) {
            gapp_print(gapp, fname);
#ifndef PRINT_CMD_UNLINKS
            remove(fname);
#endif
        }
    } else {
        if (truncated_out == TRUE) {
            errmsg("Output is truncated - tune device dimensions");
        }
    }
}