static void preview(FacetsControls *controls, FacetsArgs *args) { GwyDataField *dtheta, *dphi, *mask, *mfield = NULL; GwyContainer *data, *fdata; data = controls->mydata; fdata = controls->fdata; add_mask_field(GWY_DATA_VIEW(controls->view), NULL); add_mask_field(GWY_DATA_VIEW(controls->fview), &mask_color); mask = GWY_DATA_FIELD(gwy_container_get_object_by_name(data, "/0/mask")); dtheta = GWY_DATA_FIELD(gwy_container_get_object_by_name(fdata, "/theta")); dphi = GWY_DATA_FIELD(gwy_container_get_object_by_name(fdata, "/phi")); gwy_container_gis_object_by_name(fdata, "/1/mask", (GObject**)&mfield); gwy_data_field_mark_facets(dtheta, dphi, args->theta0, args->phi0, args->tolerance, mask); if (mfield && args->combine) { if (args->combine_type == GWY_MERGE_UNION) gwy_data_field_grains_add(mask, mfield); else if (args->combine_type == GWY_MERGE_INTERSECTION) gwy_data_field_grains_intersect(mask, mfield); } gwy_data_field_data_changed(mask); facets_mark_fdata(args, fdata); }
static void run_noninteractive(FacetsArgs *args, GwyContainer *data, GwyContainer *fdata, GwyDataField *dfield, GwyDataField *mfield, GQuark mquark) { GwyDataField *dtheta, *dphi, *mask; gwy_app_undo_qcheckpointv(data, 1, &mquark); mask = create_mask_field(dfield); dtheta = GWY_DATA_FIELD(gwy_container_get_object_by_name(fdata, "/theta")); dphi = GWY_DATA_FIELD(gwy_container_get_object_by_name(fdata, "/phi")); gwy_data_field_mark_facets(dtheta, dphi, args->theta0, args->phi0, args->tolerance, mask); if (mfield && args->combine) { if (args->combine_type == GWY_MERGE_UNION) gwy_data_field_grains_add(mfield, mask); else if (args->combine_type == GWY_MERGE_INTERSECTION) gwy_data_field_grains_intersect(mfield, mask); gwy_data_field_data_changed(mfield); } else if (mfield) { gwy_data_field_copy(mask, mfield, FALSE); gwy_data_field_data_changed(mfield); } else { gwy_container_set_object(data, mquark, mask); } g_object_unref(mask); }
static void run_noninteractive(FacetsArgs *args, GwyContainer *data, GwyContainer *fdata, GwyDataField *dfield, GwyDataField *mfield, GQuark mquark) { GwyDataField *dtheta, *dphi; gwy_app_undo_qcheckpointv(data, 1, &mquark); if (!mfield) { mfield = create_mask_field(dfield); gwy_container_set_object(data, mquark, mfield); g_object_unref(mfield); } dtheta = GWY_DATA_FIELD(gwy_container_get_object_by_name(fdata, "/theta")); dphi = GWY_DATA_FIELD(gwy_container_get_object_by_name(fdata, "/phi")); gwy_data_field_mark_facets(dtheta, dphi, args->theta0, args->phi0, args->tolerance, mfield); gwy_data_field_data_changed(mfield); }
static void preview(FacetsControls *controls, FacetsArgs *args) { GwyDataField *dtheta, *dphi, *dfield, *mfield; GwyContainer *data, *fdata; data = controls->mydata; fdata = controls->fdata; add_mask_layer(GWY_DATA_VIEW(controls->view), NULL); add_mask_layer(GWY_DATA_VIEW(controls->fview), &mask_color); dfield = GWY_DATA_FIELD(gwy_container_get_object_by_name(data, "/0/data")); mfield = GWY_DATA_FIELD(gwy_container_get_object_by_name(data, "/0/mask")); dtheta = GWY_DATA_FIELD(gwy_container_get_object_by_name(fdata, "/theta")); dphi = GWY_DATA_FIELD(gwy_container_get_object_by_name(fdata, "/phi")); gwy_data_field_mark_facets(dtheta, dphi, args->theta0, args->phi0, args->tolerance, mfield); gwy_data_field_data_changed(mfield); facets_mark_fdata(args, fdata); facets_invalidate(controls); }