static void save_mask_color(GtkWidget *color_button, GwyContainer *data) { GwyRGBA rgba; gwy_color_button_get_color(GWY_COLOR_BUTTON(color_button), &rgba); gwy_rgba_store_to_container(&rgba, data, "/0/mask"); }
static void load_mask_color(GtkWidget *color_button, GwyContainer *data) { GwyRGBA rgba; if (!gwy_rgba_get_from_container(&rgba, data, "/0/mask")) { gwy_rgba_get_from_container(&rgba, gwy_app_settings_get(), "/mask"); gwy_rgba_store_to_container(&rgba, data, "/0/mask"); } gwy_color_button_set_color(GWY_COLOR_BUTTON(color_button), &rgba); }
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 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"); } }