mirror of https://github.com/GNOME/gimp.git
app: handle GimpImageViewable in GimpViewRendererImage
Allow using a GimpImageViewable as the source for a GimpViewRenderer, by allowing GimpViewRendererImage to handle this type of viewables.
This commit is contained in:
parent
bce4d32d75
commit
f90da765b5
|
@ -30,6 +30,7 @@
|
||||||
#include "core/gimpgradient.h"
|
#include "core/gimpgradient.h"
|
||||||
#include "core/gimpimage.h"
|
#include "core/gimpimage.h"
|
||||||
#include "core/gimpimagefile.h"
|
#include "core/gimpimagefile.h"
|
||||||
|
#include "core/gimpimageviewable.h"
|
||||||
#include "core/gimplayer.h"
|
#include "core/gimplayer.h"
|
||||||
#include "core/gimppalette.h"
|
#include "core/gimppalette.h"
|
||||||
|
|
||||||
|
@ -62,7 +63,8 @@ gimp_view_renderer_type_from_viewable_type (GType viewable_type)
|
||||||
{
|
{
|
||||||
type = GIMP_TYPE_VIEW_RENDERER_BUFFER;
|
type = GIMP_TYPE_VIEW_RENDERER_BUFFER;
|
||||||
}
|
}
|
||||||
else if (g_type_is_a (viewable_type, GIMP_TYPE_IMAGE))
|
else if (g_type_is_a (viewable_type, GIMP_TYPE_IMAGE) ||
|
||||||
|
g_type_is_a (viewable_type, GIMP_TYPE_IMAGE_VIEWABLE))
|
||||||
{
|
{
|
||||||
type = GIMP_TYPE_VIEW_RENDERER_IMAGE;
|
type = GIMP_TYPE_VIEW_RENDERER_IMAGE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "widgets-types.h"
|
#include "widgets-types.h"
|
||||||
|
|
||||||
#include "core/gimpimage.h"
|
#include "core/gimpimage.h"
|
||||||
|
#include "core/gimpimageviewable.h"
|
||||||
#include "core/gimptempbuf.h"
|
#include "core/gimptempbuf.h"
|
||||||
|
|
||||||
#include "gimpviewrendererimage.h"
|
#include "gimpviewrendererimage.h"
|
||||||
|
@ -62,8 +63,26 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
|
||||||
GtkWidget *widget)
|
GtkWidget *widget)
|
||||||
{
|
{
|
||||||
GimpViewRendererImage *rendererimage = GIMP_VIEW_RENDERER_IMAGE (renderer);
|
GimpViewRendererImage *rendererimage = GIMP_VIEW_RENDERER_IMAGE (renderer);
|
||||||
GimpImage *image = GIMP_IMAGE (renderer->viewable);
|
GimpImage *image;
|
||||||
const gchar *icon_name;
|
const gchar *icon_name;
|
||||||
|
gint width;
|
||||||
|
gint height;
|
||||||
|
|
||||||
|
if (GIMP_IS_IMAGE (renderer->viewable))
|
||||||
|
{
|
||||||
|
image = GIMP_IMAGE (renderer->viewable);
|
||||||
|
}
|
||||||
|
else if (GIMP_IS_IMAGE_VIEWABLE (renderer->viewable))
|
||||||
|
{
|
||||||
|
image = gimp_image_viewable_get_image (
|
||||||
|
GIMP_IMAGE_VIEWABLE (renderer->viewable));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_return_if_reached ();
|
||||||
|
}
|
||||||
|
|
||||||
|
gimp_viewable_get_size (renderer->viewable, &width, &height);
|
||||||
|
|
||||||
/* The conditions checked here are mostly a hack to hide the fact that
|
/* The conditions checked here are mostly a hack to hide the fact that
|
||||||
* we are creating the channel preview from the image preview and turning
|
* we are creating the channel preview from the image preview and turning
|
||||||
|
@ -82,8 +101,8 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
|
||||||
|
|
||||||
gimp_image_get_resolution (image, &xres, &yres);
|
gimp_image_get_resolution (image, &xres, &yres);
|
||||||
|
|
||||||
gimp_viewable_calc_preview_size (gimp_image_get_width (image),
|
gimp_viewable_calc_preview_size (width,
|
||||||
gimp_image_get_height (image),
|
height,
|
||||||
renderer->width,
|
renderer->width,
|
||||||
renderer->height,
|
renderer->height,
|
||||||
renderer->dot_for_dot,
|
renderer->dot_for_dot,
|
||||||
|
@ -99,8 +118,7 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
|
||||||
|
|
||||||
temp_buf = gimp_viewable_get_new_preview (renderer->viewable,
|
temp_buf = gimp_viewable_get_new_preview (renderer->viewable,
|
||||||
renderer->context,
|
renderer->context,
|
||||||
gimp_image_get_width (image),
|
width, height);
|
||||||
gimp_image_get_height (image));
|
|
||||||
|
|
||||||
if (temp_buf)
|
if (temp_buf)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue