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 preview(GEdgeControls *controls, GEdgeArgs *args) { GwyDataField *mask, *dfield; GwyPixmapLayer *layer; dfield = GWY_DATA_FIELD(gwy_container_get_object_by_name(controls->mydata, "/0/data")); /* Set up the mask */ if (!gwy_container_gis_object_by_name(controls->mydata, "/0/mask", &mask)) { mask = create_mask_field(dfield); gwy_container_set_object_by_name(controls->mydata, "/0/mask", mask); g_object_unref(mask); layer = gwy_layer_mask_new(); gwy_pixmap_layer_set_data_key(layer, "/0/mask"); gwy_layer_mask_set_color_key(GWY_LAYER_MASK(layer), "/0/mask"); gwy_data_view_set_alpha_layer(GWY_DATA_VIEW(controls->view), layer); } gwy_data_field_copy(dfield, mask, FALSE); gedge_process(dfield, mask, args); gwy_data_field_data_changed(mask); }
static void run_noninteractive(GEdgeArgs *args, GwyContainer *data, GwyDataField *dfield, GQuark mquark) { GwyDataField *mfield; gwy_app_undo_qcheckpointv(data, 1, &mquark); mfield = create_mask_field(dfield); gedge_process(dfield, mfield, args); gwy_container_set_object(data, mquark, mfield); g_object_unref(mfield); }
static void add_mask_field(GwyDataView *view, const GwyRGBA *color) { GwyContainer *data; GwyDataField *mfield, *dfield; data = gwy_data_view_get_data(view); if (gwy_container_gis_object_by_name(data, "/0/mask", &mfield)) return; gwy_container_gis_object_by_name(data, "/0/data", &dfield); mfield = create_mask_field(dfield); gwy_container_set_object_by_name(data, "/0/mask", mfield); g_object_unref(mfield); if (color) gwy_rgba_store_to_container(color, data, "/0/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 add_mask_layer(GwyDataView *view, const GwyRGBA *color) { GwyContainer *data; GwyDataField *mfield, *dfield; GwyPixmapLayer *layer; data = gwy_data_view_get_data(view); if (!gwy_container_gis_object_by_name(data, "/0/mask", &mfield)) { gwy_container_gis_object_by_name(data, "/0/data", &dfield); mfield = create_mask_field(dfield); gwy_container_set_object_by_name(data, "/0/mask", mfield); g_object_unref(mfield); layer = gwy_layer_mask_new(); gwy_pixmap_layer_set_data_key(layer, "/0/mask"); gwy_layer_mask_set_color_key(GWY_LAYER_MASK(layer), "/0/mask"); gwy_data_view_set_alpha_layer(view, layer); if (color) gwy_rgba_store_to_container(color, data, "/0/mask"); } }