示例#1
0
static GByteArray*
gwy_3d_setup_serialize(GObject *serializable,
                       GByteArray *buffer)
{
    Gwy3DSetup *setup;

    gwy_debug("");
    g_return_val_if_fail(GWY_IS_3D_SETUP(serializable), NULL);

    setup = GWY_3D_SETUP(serializable);
    {
        GwySerializeSpec spec[] = {
            { 'i', "projection", &setup->projection, NULL, },
            { 'i', "visualization", &setup->visualization, NULL, },
            { 'b', "axes-visible", &setup->axes_visible, NULL, },
            { 'b', "labels-visible", &setup->labels_visible, NULL, },
            { 'd', "rotation-x", &setup->rotation_x, NULL, },
            { 'd', "rotation-y", &setup->rotation_y, NULL, },
            { 'd', "scale", &setup->scale, NULL, },
            { 'd', "z-scale", &setup->z_scale, NULL, },
            { 'd', "light-phi", &setup->light_phi, NULL, },
            { 'd', "light-theta", &setup->light_theta, NULL, },
        };

        return gwy_serialize_pack_object_struct(buffer,
                                                GWY_3D_SETUP_TYPE_NAME,
                                                G_N_ELEMENTS(spec), spec);
    }
}
示例#2
0
static GByteArray*
gwy_graph_curve_model_serialize(GObject *object,
                                GByteArray *buffer)
{
    GwyGraphCurveModel *gcmodel;

    gwy_debug("");
    g_return_val_if_fail(GWY_IS_GRAPH_CURVE_MODEL(object), NULL);

    gcmodel = GWY_GRAPH_CURVE_MODEL(object);
    {
        GwySerializeSpec spec[] = {
            { 'D', "xdata", &gcmodel->xdata, &gcmodel->n },
            { 'D', "ydata", &gcmodel->ydata, &gcmodel->n },
            { 's', "description", &gcmodel->description->str, NULL },
            { 'd', "color.red", &gcmodel->color.r, NULL },
            { 'd', "color.green", &gcmodel->color.g, NULL },
            { 'd', "color.blue", &gcmodel->color.b, NULL },
            { 'i', "type", &gcmodel->type, NULL },
            { 'i', "point_type", &gcmodel->point_type, NULL },
            { 'i', "point_size", &gcmodel->point_size, NULL },
            { 'i', "line_style", &gcmodel->line_style, NULL },
            { 'i', "line_size", &gcmodel->line_size, NULL },
        };

        return gwy_serialize_pack_object_struct(buffer,
                                                GWY_GRAPH_CURVE_MODEL_TYPE_NAME,
                                                G_N_ELEMENTS(spec), spec);
    }
}
示例#3
0
static GByteArray*
gwy_spectra_serialize(GObject *obj,
                      GByteArray *buffer)
{
    GwySpectra *spectra;
    GwyDataLine **curves;
    gdouble *coords;
    guint32 *selected;
    guint32 ncurves, ncoords, nselected;
    GByteArray *retval;

    gwy_debug("");
    g_return_val_if_fail(GWY_IS_SPECTRA(obj), NULL);

    spectra = GWY_SPECTRA(obj);
    if (!spectra->si_unit_xy)
        spectra->si_unit_xy = gwy_si_unit_new(NULL);

    separate_arrays(spectra->spectra,
                    &ncurves, &curves,
                    &ncoords, &coords,
                    &nselected, &selected);

    {
        GwySerializeSpec spec[] = {
            { 's', "title",       &spectra->title,       NULL,       },
            { 'o', "si_unit_xy",  &spectra->si_unit_xy,  NULL,       },
            { 'D', "coords",      &coords,               &ncoords,   },
            { 'I', "selected",    &selected,             &nselected, },
            { 'O', "data",        &curves,               &ncurves,   },
            { 's', "spec_xlabel", &spectra->spec_xlabel, NULL,       },
            { 's', "spec_ylabel", &spectra->spec_ylabel, NULL,       },
        };
        guint nspec = fix_serialisation_spec(spec);

        retval = gwy_serialize_pack_object_struct(buffer,
                                                  GWY_SPECTRA_TYPE_NAME,
                                                  nspec, spec);
    }
    g_free(curves);
    g_free(coords);
    g_free(selected);

    return retval;
}
示例#4
0
static GByteArray*
gwy_string_list_serialize(GObject *obj,
                      GByteArray *buffer)
{
    GwyStringList *strlist;
    GByteArray *retval;
    GPtrArray *strings;

    g_return_val_if_fail(GWY_IS_STRING_LIST(obj), NULL);

    strlist = GWY_STRING_LIST(obj);
    strings = (GPtrArray*)strlist->strings;
    {
        guint32 len = strings->len;
        GwySerializeSpec spec[] = {
            { 'S', "strings", &strings->pdata, &len, },
        };
        retval = gwy_serialize_pack_object_struct(buffer,
                                                  GWY_STRING_LIST_TYPE_NAME,
                                                  G_N_ELEMENTS(spec), spec);
        return retval;
    }
}
示例#5
0
static GByteArray*
gwy_surface_serialize(GObject *obj,
                      GByteArray *buffer)
{
    GwySurface *surface;
    guint32 datasize;

    g_return_val_if_fail(GWY_IS_SURFACE(obj), NULL);

    surface = GWY_SURFACE(obj);
    ensure_units(surface);
    datasize = 3*surface->n;
    {
        GwySerializeSpec spec[] = {
            { 'o', "si_unit_xy", &surface->priv->si_unit_xy, NULL, },
            { 'o', "si_unit_z", &surface->priv->si_unit_z, NULL, },
            { 'D', "data", &surface->data, &datasize, },
        };
        return gwy_serialize_pack_object_struct(buffer,
                                                GWY_SURFACE_TYPE_NAME,
                                                G_N_ELEMENTS(spec), spec);
    }
}
示例#6
0
static GByteArray*
gwy_si_unit_serialize(GObject *obj,
                      GByteArray *buffer)
{
    GwySIUnit *si_unit;
    GByteArray *retval;

    g_return_val_if_fail(GWY_IS_SI_UNIT(obj), NULL);

    si_unit = GWY_SI_UNIT(obj);
    {
        gchar *unitstr = gwy_si_unit_get_string(si_unit,
                                                GWY_SI_UNIT_FORMAT_PLAIN);
        GwySerializeSpec spec[] = {
            { 's', "unitstr", &unitstr, NULL, },
        };
        gwy_debug("unitstr = <%s>", unitstr);
        retval = gwy_serialize_pack_object_struct(buffer,
                                                  GWY_SI_UNIT_TYPE_NAME,
                                                  G_N_ELEMENTS(spec), spec);
        g_free(unitstr);
        return retval;
    }
}