On Tue, Sep 16, 2014 at 08:51:12AM +0200, Mathias Müller wrote:
> 
> I tried so, but it still doesn't show up with an image center at (0,0). The 
> same data shows a center at (0,0) in the fft module.
> 
> thats how I fetch real data and generate the fft data and display them:
> 
> 
> [code]
> gwy_app_data_browser_get_current(GWY_APP_DATA_FIELD, &data_field, 0);
> 
> data_field_fft_r = gwy_data_field_new_alike(data_field, FALSE);
> gwy_data_field_2dfft(data_field,NULL,data_field_fft_r,data_field_fft_i,GWY_WINDOWING_NONE,GWY_TRANSFORM_DIRECTION_FORWARD,GWY_INTERPOLATION_ROUND,TRUE,1)
>  ;
> gwy_data_field_fft_postprocess(data_field_fft_r,TRUE) ;
> gwy_data_field_data_changed(data_field_fft_r);
> 
> data[1] = gwy_container_new();
> data_view[1] = GWY_DATA_VIEW(gwy_data_view_new(data[1]));
> gwy_data_view_set_data_prefix(data_view[1], "/0/data");
> gwy_container_set_boolean_by_name(data[1], "/0/data/realsquare", TRUE);       
> gwy_container_set_int32_by_name(data[1], "/0/base/range-type", 
> GWY_LAYER_BASIC_RANGE_FIXED);
> gdouble min, max ;
> gwy_data_field_get_min_max (data_field_fft_r,&min,&max);
> gwy_container_set_double_by_name(data[1], "/0/base/min", 0.1*max); 
> gwy_container_set_double_by_name(data[1], "/0/base/max", 0.2*max);
> 
> 
> g_assert( widget = GTK_WIDGET(gtk_builder_get_object(builder, "viewport2")) );
> gtk_container_add(GTK_CONTAINER(widget), GTK_WIDGET(data_view[1]));
> [/code]

I attach compilable module that shows the 0,0 frequency origin in the
centre for me.  I have no idea what you may be doing differently.

Regards,

Yeti

#include <libgwyddion/gwymacros.h>
#include <libprocess/gwyprocess.h>
#include <libgwydgets/gwydgets.h>
#include <libgwymodule/gwymodule-process.h>
#include <app/gwyapp.h>

static gboolean module_register(void);
static void     fft_test       (GwyContainer *container,
                                GwyRunType mode);

static GwyModuleInfo module_info = {
    GWY_MODULE_ABI_VERSION,
    &module_register,
    "FFT postprocess test",
    "X",
    "0.0",
    "X",
    "2014",
};

GWY_MODULE_QUERY(module_info)

static gboolean
module_register(void)
{
    gwy_process_func_register("fft_test",
                              (GwyProcessFunc)&fft_test,
                              "/_Test/_FFT Test",
                              NULL,
                              GWY_RUN_IMMEDIATE,
                              GWY_MENU_FLAG_DATA,
                              "X");

    return TRUE;
}

static void
fft_test(GwyContainer *data, GwyRunType run)
{
    GtkWidget *window;
    GwyDataField *data_field, *data_field_fft_r, *data_field_fft_i;
    GwyPixmapLayer *layer;
    gdouble min, max;
    GwyDataView *data_view;
    GwyContainer *mydata;

    gwy_app_data_browser_get_current(GWY_APP_DATA_FIELD, &data_field, 0);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    data_field_fft_r = gwy_data_field_new_alike(data_field, FALSE);
    data_field_fft_i = gwy_data_field_new_alike(data_field, FALSE);
    gwy_data_field_2dfft(data_field, NULL, data_field_fft_r, data_field_fft_i,
                         GWY_WINDOWING_NONE, GWY_TRANSFORM_DIRECTION_FORWARD,
                         GWY_INTERPOLATION_ROUND, TRUE, 1);
    gwy_data_field_fft_postprocess(data_field_fft_r, TRUE);
    gwy_data_field_data_changed(data_field_fft_r);

    mydata = gwy_container_new();
    gwy_container_set_object_by_name(mydata, "/0/data", data_field_fft_r);

    data_view = GWY_DATA_VIEW(gwy_data_view_new(mydata));
    gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(data_view));
    g_object_unref(mydata);

    gwy_data_view_set_data_prefix(data_view, "/0/data");
    gwy_container_set_boolean_by_name(mydata, "/0/data/realsquare", TRUE);

    layer = gwy_layer_basic_new();
    gwy_data_view_set_base_layer(GWY_DATA_VIEW(data_view), layer);
    gwy_pixmap_layer_set_data_key(layer, "/0/data");
    /* Not necessary for test.
    gwy_layer_basic_set_min_max_key(GWY_LAYER_BASIC(layer), "/0/base");
    gwy_layer_basic_set_range_type_key(GWY_LAYER_BASIC(layer),
                                       "/0/base/range-type");

    gwy_container_set_int32_by_name(mydata, "/0/base/range-type",
                                    GWY_LAYER_BASIC_RANGE_FIXED);
    gwy_data_field_get_min_max(data_field_fft_r, &min, &max);
    gwy_container_set_double_by_name(mydata, "/0/base/min", 0.1 * max);
    gwy_container_set_double_by_name(mydata, "/0/base/max", 0.2 * max);
    */
    g_object_unref(data_field_fft_r);
    g_object_unref(data_field_fft_i);

    gtk_window_set_modal(GTK_WINDOW(window), TRUE);
    gtk_widget_show_all(window);
}

/* vim: set cin et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce.
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
Gwyddion-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gwyddion-users

Reply via email to