/** * gwy_data_view_set_alpha_layer: * @data_view: A #GwyDataView. * @layer: A layer to be used as the alpha layer for @data_view. * * Plugs @layer to @data_view as the alpha layer. * * If another alpha layer is present, it's unplugged. * * The layer must not be a vector layer. It can be %NULL, meaning no alpha * layer is to be used. **/ void gwy_data_view_set_alpha_layer(GwyDataView *data_view, GwyPixmapLayer *layer) { g_return_if_fail(!layer || GWY_IS_PIXMAP_LAYER(layer)); gwy_data_view_set_layer(data_view, &data_view->alpha_layer, GWY_DATA_VIEW_LAYER(layer)); gwy_data_view_update(data_view); }
static void gwy_pixmap_layer_finalize(GObject *object) { GwyPixmapLayer *layer; gwy_debug(""); g_return_if_fail(GWY_IS_PIXMAP_LAYER(object)); layer = GWY_PIXMAP_LAYER(object); gwy_object_unref(layer->pixbuf); G_OBJECT_CLASS(parent_class)->finalize(object); }
/** * gwy_set_data_preview_size: * @data_view: A data view used for module preview. * @max_size: Maximum allowed @data_view size (width and height). * * Sets up data view zoom to not exceed specified size. * * Before calling this function, data keys have be set, data fields and layers * have to be present and physically square mode set in the container. * Sizing of both pixel-wise square and physically square displays is performed * correctly. * * Since: 2.7 **/ void gwy_set_data_preview_size(GwyDataView *data_view, gint max_size) { GwyContainer *container; GwyDataField *data_field; GwyPixmapLayer *layer; gdouble zoomval, scale, xreal, yreal; gboolean realsquare; gint xres, yres; const gchar *prefix; gchar *key; g_return_if_fail(GWY_IS_DATA_VIEW(data_view)); g_return_if_fail(max_size >= 2); container = gwy_data_view_get_data(data_view); g_return_if_fail(GWY_IS_CONTAINER(container)); layer = gwy_data_view_get_base_layer(data_view); g_return_if_fail(GWY_IS_PIXMAP_LAYER(layer)); prefix = gwy_pixmap_layer_get_data_key(layer); g_return_if_fail(prefix); data_field = gwy_container_get_object_by_name(container, prefix); g_return_if_fail(GWY_IS_DATA_FIELD(data_field)); prefix = gwy_data_view_get_data_prefix(data_view); g_return_if_fail(prefix); key = g_strconcat(prefix, "/realsquare", NULL); realsquare = FALSE; gwy_container_gis_boolean_by_name(container, key, &realsquare); g_free(key); xres = gwy_data_field_get_xres(data_field); yres = gwy_data_field_get_yres(data_field); if (!realsquare) zoomval = max_size/(gdouble)MAX(xres, yres); else { xreal = gwy_data_field_get_xreal(data_field); yreal = gwy_data_field_get_yreal(data_field); scale = MAX(xres/xreal, yres/yreal); zoomval = max_size/(scale*MAX(xreal, yreal)); } gwy_data_view_set_zoom(data_view, zoomval); }