summaryrefslogtreecommitdiff
path: root/src/util/image.c
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2016-08-20 15:09:31 +0200
committerJörg Frings-Fürst <debian@jff-webhosting.net>2016-08-20 15:09:31 +0200
commit143bfc9f801c84428074312d661f8e08803df83b (patch)
tree59a8a447529bd9ce3807aa8bacef861dc5aafd70 /src/util/image.c
parent29a7aef998e975b42401cfa96d1b750d91eadf06 (diff)
Imported Upstream version 0.23.5upstream/0.23.5
Diffstat (limited to 'src/util/image.c')
-rw-r--r--src/util/image.c2701
1 files changed, 2701 insertions, 0 deletions
diff --git a/src/util/image.c b/src/util/image.c
new file mode 100644
index 0000000..2b415a8
--- /dev/null
+++ b/src/util/image.c
@@ -0,0 +1,2701 @@
+/* image.c generated by valac 0.32.1, the Vala compiler
+ * generated from image.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+/* XPM */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gdk/gdk.h>
+#include <cairo.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gtk/gtk.h>
+#include <float.h>
+#include <math.h>
+#include <gio/gio.h>
+
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+#define TYPE_DIMENSIONS (dimensions_get_type ())
+typedef struct _Dimensions Dimensions;
+
+#define TYPE_PIXEL_TRANSFORMER (pixel_transformer_get_type ())
+#define PIXEL_TRANSFORMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PIXEL_TRANSFORMER, PixelTransformer))
+#define PIXEL_TRANSFORMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PIXEL_TRANSFORMER, PixelTransformerClass))
+#define IS_PIXEL_TRANSFORMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PIXEL_TRANSFORMER))
+#define IS_PIXEL_TRANSFORMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PIXEL_TRANSFORMER))
+#define PIXEL_TRANSFORMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PIXEL_TRANSFORMER, PixelTransformerClass))
+
+typedef struct _PixelTransformer PixelTransformer;
+typedef struct _PixelTransformerClass PixelTransformerClass;
+
+#define TYPE_PIXEL_TRANSFORMATION (pixel_transformation_get_type ())
+#define PIXEL_TRANSFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PIXEL_TRANSFORMATION, PixelTransformation))
+#define PIXEL_TRANSFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PIXEL_TRANSFORMATION, PixelTransformationClass))
+#define IS_PIXEL_TRANSFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PIXEL_TRANSFORMATION))
+#define IS_PIXEL_TRANSFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PIXEL_TRANSFORMATION))
+#define PIXEL_TRANSFORMATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PIXEL_TRANSFORMATION, PixelTransformationClass))
+
+typedef struct _PixelTransformation PixelTransformation;
+typedef struct _PixelTransformationClass PixelTransformationClass;
+
+#define TYPE_RGB_TRANSFORMATION (rgb_transformation_get_type ())
+#define RGB_TRANSFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RGB_TRANSFORMATION, RGBTransformation))
+#define RGB_TRANSFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RGB_TRANSFORMATION, RGBTransformationClass))
+#define IS_RGB_TRANSFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RGB_TRANSFORMATION))
+#define IS_RGB_TRANSFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RGB_TRANSFORMATION))
+#define RGB_TRANSFORMATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RGB_TRANSFORMATION, RGBTransformationClass))
+
+typedef struct _RGBTransformation RGBTransformation;
+typedef struct _RGBTransformationClass RGBTransformationClass;
+
+#define TYPE_SATURATION_TRANSFORMATION (saturation_transformation_get_type ())
+#define SATURATION_TRANSFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SATURATION_TRANSFORMATION, SaturationTransformation))
+#define SATURATION_TRANSFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SATURATION_TRANSFORMATION, SaturationTransformationClass))
+#define IS_SATURATION_TRANSFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SATURATION_TRANSFORMATION))
+#define IS_SATURATION_TRANSFORMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SATURATION_TRANSFORMATION))
+#define SATURATION_TRANSFORMATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SATURATION_TRANSFORMATION, SaturationTransformationClass))
+
+typedef struct _SaturationTransformation SaturationTransformation;
+typedef struct _SaturationTransformationClass SaturationTransformationClass;
+#define _pixel_transformation_unref0(var) ((var == NULL) ? NULL : (var = (pixel_transformation_unref (var), NULL)))
+#define _pixel_transformer_unref0(var) ((var == NULL) ? NULL : (var = (pixel_transformer_unref (var), NULL)))
+#define _cairo_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_destroy (var), NULL)))
+#define _cairo_surface_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_surface_destroy (var), NULL)))
+
+#define TYPE_BOX (box_get_type ())
+typedef struct _Box Box;
+#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
+#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
+#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
+#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
+
+struct _Dimensions {
+ gint width;
+ gint height;
+};
+
+struct _Box {
+ gint left;
+ gint top;
+ gint right;
+ gint bottom;
+};
+
+
+
+gboolean is_color_parsable (const gchar* spec);
+void parse_color (const gchar* spec, GdkRGBA* result);
+void fetch_color (const gchar* spec, GdkRGBA* result);
+void set_source_color_from_string (cairo_t* ctx, const gchar* spec);
+#define MIN_SCALED_WIDTH 10
+#define MIN_SCALED_HEIGHT 10
+GdkPixbuf* get_placeholder_pixbuf (void);
+GdkPixbuf* scale_pixbuf (GdkPixbuf* pixbuf, gint scale, GdkInterpType interp, gboolean scale_up);
+GType dimensions_get_type (void) G_GNUC_CONST;
+Dimensions* dimensions_dup (const Dimensions* self);
+void dimensions_free (Dimensions* self);
+void dimensions_for_pixbuf (GdkPixbuf* pixbuf, Dimensions* result);
+void dimensions_get_scaled (Dimensions *self, gint scale, gboolean scale_up, Dimensions* result);
+void dimensions_with_min (Dimensions *self, gint min_width, gint min_height, Dimensions* result);
+GdkPixbuf* resize_pixbuf (GdkPixbuf* pixbuf, Dimensions* resized, GdkInterpType interp);
+#define DEGREE (G_PI / 180.0)
+void draw_rounded_corners_filled (cairo_t* ctx, Dimensions* dim, GdkPoint* origin, gdouble radius_proportion);
+void context_rounded_corners (cairo_t* cx, Dimensions* dim, GdkPoint* origin, gdouble radius_proportion);
+gint dimensions_minor_axis (Dimensions *self);
+guchar shift_color_byte (gint b, gint shift);
+void shift_colors (GdkPixbuf* pixbuf, gint red, gint green, gint blue, gint alpha);
+void dim_pixbuf (GdkPixbuf* pixbuf);
+gpointer pixel_transformer_ref (gpointer instance);
+void pixel_transformer_unref (gpointer instance);
+GParamSpec* param_spec_pixel_transformer (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_pixel_transformer (GValue* value, gpointer v_object);
+void value_take_pixel_transformer (GValue* value, gpointer v_object);
+gpointer value_get_pixel_transformer (const GValue* value);
+GType pixel_transformer_get_type (void) G_GNUC_CONST;
+PixelTransformer* pixel_transformer_new (void);
+PixelTransformer* pixel_transformer_construct (GType object_type);
+gpointer pixel_transformation_ref (gpointer instance);
+void pixel_transformation_unref (gpointer instance);
+GParamSpec* param_spec_pixel_transformation (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_pixel_transformation (GValue* value, gpointer v_object);
+void value_take_pixel_transformation (GValue* value, gpointer v_object);
+gpointer value_get_pixel_transformation (const GValue* value);
+GType pixel_transformation_get_type (void) G_GNUC_CONST;
+GType rgb_transformation_get_type (void) G_GNUC_CONST;
+GType saturation_transformation_get_type (void) G_GNUC_CONST;
+#define SATURATION_TRANSFORMATION_MIN_PARAMETER (-16.0f)
+SaturationTransformation* saturation_transformation_new (gfloat client_parameter);
+SaturationTransformation* saturation_transformation_construct (GType object_type, gfloat client_parameter);
+void pixel_transformer_attach_transformation (PixelTransformer* self, PixelTransformation* trans);
+void pixel_transformer_transform_pixbuf (PixelTransformer* self, GdkPixbuf* pixbuf, GCancellable* cancellable);
+gboolean coord_in_rectangle (gint x, gint y, GdkRectangle* rect);
+gboolean rectangles_equal (GdkRectangle* a, GdkRectangle* b);
+gchar* rectangle_to_string (GdkRectangle* rect);
+void clamp_rectangle (GdkRectangle* original, Dimensions* max, GdkRectangle* result);
+void scale_point (GdkPoint* p, gdouble factor, GdkPoint* result);
+void add_points (GdkPoint* p1, GdkPoint* p2, GdkPoint* result);
+void subtract_points (GdkPoint* p1, GdkPoint* p2, GdkPoint* result);
+void fix_cairo_pixbuf (GdkPixbuf* pixbuf);
+void compute_arb_rotated_size (gdouble src_width, gdouble src_height, gdouble angle, gdouble* dest_width, gdouble* dest_height);
+gdouble degrees_to_radians (gdouble theta);
+GdkPixbuf* rotate_arb (GdkPixbuf* source_pixbuf, gdouble angle);
+void rotate_point_arb (GdkPoint* source_point, gint img_w, gint img_h, gdouble angle, gboolean invert, GdkPoint* result);
+void derotate_point_arb (GdkPoint* source_point, gint img_w, gint img_h, gdouble angle, GdkPoint* result);
+GType box_get_type (void) G_GNUC_CONST;
+Box* box_dup (const Box* self);
+void box_free (Box* self);
+void clamp_inside_rotated_image (Box* src, gint img_w, gint img_h, gdouble angle_deg, gboolean preserve_geom, Box* result);
+void box_get_offset (Box *self, gint xofs, gint yofs, Box* result);
+void box_init (Box *self, gint left, gint top, gint right, gint bottom);
+
+const gchar* fallback_image_missing[103] = {"48 48 54 1 ", " c #6A6D67", ". c #6C6E69", "X c #72746F", "o c #747672", "O c #777974", "+ c #797B77", "@ c #7C7E7A", "# c #7F817C", "$ c #81837F", "% c #848682", "& c #878984", "* c #888A86", "= c #8C8D8A", "- c #8F908C", "; c #90928E", ": c #949591", "> c #969894", ", c #999B96", "< c #9C9E9A", "1 c #9FA09C", "2 c #A1A39E", "3 c #A4A6A2", "4 c #A6A9A4", "5 c #A9ABA6", "6 c #ACADA9", "7 c #AEB1AB", "8 c #B1B2AF", "9 c #B3B4B1", "0 c #B6B9B3", "q c #B9BCB6", "w c #BDBEBA", "e c #BEC2BB", "r c #C1C4BE", "t c #C5C5C2", "y c #C6C9C3", "u c #C9CCC6", "i c #CCCDCB", "p c #CED2CA", "a c #D2D6CE", "s c #D5D5D3", "d c #D7D8D5", "f c #D9D9D6", "g c #DCDCDA", "h c #DFE0DD", "j c #E0E0DE", "k c #E4E4E2", "l c #E7E8E5", "z c #E9E9E7", "x c #EDEDEC", "c c #EFF0EE", "v c #F1F1EF", "b c #F2F2F1", "n c #FFFFFF", "m c None", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmaaaaaaaaaasaisaaaaaaaaaaaaaaaaaaapppiipuuuuumm", "mannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnym", "manbbbbbbbbbvbbvvvvxvvvbvvvvvvvvccccccxxvxvxxnym", "manbt89898888988888888888999999999999999999txnrm", "manb6======================-;;=;;;;;;;;;;=:7znrm", "manv6&%%**%*%%%%*%%****=======;==;;;;=;=;==7znem", "manv4%%%%$%%%%%%%%%%%=****=======;==-======6znwm", "manx3%%#$$$$##%#$%%%*%**==========-=--=====6znqm", "manx1$@%#$@$###%%%%=****=*===--;;----====*=5lnqm", "manx<@@@@@@@@##%$%%%%****========-==-======5kn0m", "manz<@@@+@+@@@#$%%%%%=%=%===;=:=--------=-*4kn8m", "manz>O+O+O+@@@#$$%%%%========;;=--------=*=3kn9m", "mpnl:OOOOO+@@$##%%%%%=%=====;=;;--;-----===3kn8m", "munl;OooOOO@@@#$%%%%%======;;;;;:;;;;;---==1hn7m", "munl;oXoOO+@###$%%=%=======;::;::::;;---&#+-gn7m", "mynk*XXooOO+$$#$%%%%=%===;;:;:::::;:-$#XooX-fn5m", "mynk*XXOOO@@$$$$%%=%====;::::>::;*#OXXXXXXX*dn5m", "mrnk*oOO@@@#$$$$%=====::::>>>=%@OXOooXXXooo&dn3m", "mrnj*++@$$$$**$===-;;::>>:=@Ooo@XOOoo#o#OOO=fn3m", "menj*@#$$$$$**===;;:::=%@@@@@@O@#O#Oo#o#++@;gn2m", "menj*$$$$&**===;:;=*#@@@@@@@@@@@#######o##%>gn2m", "menh*$$%**===;=*%###########%@@@###$####$%=,gn1m", "m0nj=%***=**&$$$%$$$%$$%$$$$%$$$$$$$$$$%*;:2hn<m", "m0nj****&&&$$&&$%%%%%%%%%%%%%%%%$$*$%%%*;>13gn,m", "m0ng****&&&&&&&&&&&&*%*%*%%*%******%**-:,136kz;m", "m0nh***$&&&&&&&&&&&&%**********%*$***;:,1358r7*m", "m8ng*&&&&&&&&&*$&*&&&&$=$=$=&&&&&&**=:,<11>$65mm", "m7ng*&&&&&&&&&**&&&&&&**=$-$&&&&&&*-:,1..&1wi:mm", "m7ng&&&&&&&&=$*$&&&&&***$$$$&&&***=>,1<onxsi6*mm", "m6nf*&&&&&*&$***&&&&*$*$--$-&&&%*=;,13,:ztw9%mmm", "m5nf*%&&&&&&=$=$%*&&**%*$$&&&&**=>,225;5srw%mmmm", "m4nf3*&&**&&$-$-*******%$;&&*&*->,2365+ui7$mmmmm", "m3nsfffdddsddaffssssdassgaaaassddfgjg4wu;ommmmmm", "m3nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnvq3<$.mmmmmmm", "mm2211111,<,,,,,,>>>>:::;::;----=====@mmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"};
+
+gboolean is_color_parsable (const gchar* spec) {
+ gboolean result = FALSE;
+ GdkColor color = {0};
+ const gchar* _tmp0_ = NULL;
+ GdkColor _tmp1_ = {0};
+ gboolean _tmp2_ = FALSE;
+#line 117 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (spec != NULL, FALSE);
+#line 119 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = spec;
+#line 119 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = gdk_color_parse (_tmp0_, &_tmp1_);
+#line 119 "/home/jens/Source/shotwell/src/util/image.vala"
+ color = _tmp1_;
+#line 119 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp2_;
+#line 119 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 180 "image.c"
+}
+
+
+void parse_color (const gchar* spec, GdkRGBA* result) {
+ const gchar* _tmp0_ = NULL;
+ GdkRGBA _tmp1_ = {0};
+#line 122 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (spec != NULL);
+#line 123 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = spec;
+#line 123 "/home/jens/Source/shotwell/src/util/image.vala"
+ fetch_color (_tmp0_, &_tmp1_);
+#line 123 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = _tmp1_;
+#line 123 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 197 "image.c"
+}
+
+
+void fetch_color (const gchar* spec, GdkRGBA* result) {
+ GdkRGBA rgba = {0};
+ const gchar* _tmp0_ = NULL;
+ gboolean _tmp1_ = FALSE;
+#line 126 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (spec != NULL);
+#line 127 "/home/jens/Source/shotwell/src/util/image.vala"
+ memset (&rgba, 0, sizeof (GdkRGBA));
+#line 128 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = spec;
+#line 128 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = gdk_rgba_parse (&rgba, _tmp0_);
+#line 128 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (!_tmp1_) {
+#line 215 "image.c"
+ const gchar* _tmp2_ = NULL;
+#line 129 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = spec;
+#line 129 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_error ("image.vala:129: Can't parse color %s", _tmp2_);
+#line 221 "image.c"
+ }
+#line 131 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = rgba;
+#line 131 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 227 "image.c"
+}
+
+
+void set_source_color_from_string (cairo_t* ctx, const gchar* spec) {
+ GdkRGBA rgba = {0};
+ const gchar* _tmp0_ = NULL;
+ GdkRGBA _tmp1_ = {0};
+ cairo_t* _tmp2_ = NULL;
+ GdkRGBA _tmp3_ = {0};
+ gdouble _tmp4_ = 0.0;
+ GdkRGBA _tmp5_ = {0};
+ gdouble _tmp6_ = 0.0;
+ GdkRGBA _tmp7_ = {0};
+ gdouble _tmp8_ = 0.0;
+ GdkRGBA _tmp9_ = {0};
+ gdouble _tmp10_ = 0.0;
+#line 134 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (ctx != NULL);
+#line 134 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (spec != NULL);
+#line 135 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = spec;
+#line 135 "/home/jens/Source/shotwell/src/util/image.vala"
+ fetch_color (_tmp0_, &_tmp1_);
+#line 135 "/home/jens/Source/shotwell/src/util/image.vala"
+ rgba = _tmp1_;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = ctx;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = rgba;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = _tmp3_.red;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = rgba;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _tmp5_.green;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = rgba;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_.blue;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = rgba;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = _tmp9_.alpha;
+#line 136 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_set_source_rgba (_tmp2_, _tmp4_, _tmp6_, _tmp8_, _tmp10_);
+#line 274 "image.c"
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+#line 147 "/home/jens/Source/shotwell/src/util/image.vala"
+ return self ? g_object_ref (self) : NULL;
+#line 281 "image.c"
+}
+
+
+GdkPixbuf* get_placeholder_pixbuf (void) {
+ GdkPixbuf* result = NULL;
+ GdkPixbuf* pixbuf = NULL;
+ GError * _inner_error_ = NULL;
+#line 144 "/home/jens/Source/shotwell/src/util/image.vala"
+ pixbuf = NULL;
+#line 291 "image.c"
+ {
+ GtkIconTheme* icon_theme = NULL;
+ GtkIconTheme* _tmp0_ = NULL;
+ GtkIconTheme* _tmp1_ = NULL;
+ GdkPixbuf* _tmp2_ = NULL;
+ GdkPixbuf* _tmp3_ = NULL;
+ GdkPixbuf* _tmp4_ = NULL;
+#line 147 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = gtk_icon_theme_get_default ();
+#line 147 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 147 "/home/jens/Source/shotwell/src/util/image.vala"
+ icon_theme = _tmp1_;
+#line 148 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = gtk_icon_theme_load_icon (icon_theme, "image-missing", (gint) GTK_ICON_SIZE_DIALOG, 0, &_inner_error_);
+#line 148 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = _tmp3_;
+#line 148 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 148 "/home/jens/Source/shotwell/src/util/image.vala"
+ _g_object_unref0 (icon_theme);
+#line 313 "image.c"
+ goto __catch4_g_error;
+ }
+#line 148 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = _tmp2_;
+#line 148 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = NULL;
+#line 148 "/home/jens/Source/shotwell/src/util/image.vala"
+ _g_object_unref0 (pixbuf);
+#line 148 "/home/jens/Source/shotwell/src/util/image.vala"
+ pixbuf = _tmp4_;
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ _g_object_unref0 (_tmp2_);
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ _g_object_unref0 (icon_theme);
+#line 328 "image.c"
+ }
+ goto __finally4;
+ __catch4_g_error:
+ {
+ GError* _error_ = NULL;
+ GdkPixbuf* _tmp5_ = NULL;
+ GError* _tmp6_ = NULL;
+ const gchar* _tmp7_ = NULL;
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ _error_ = _inner_error_;
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ _inner_error_ = NULL;
+#line 151 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = gdk_pixbuf_new_from_xpm_data (fallback_image_missing);
+#line 151 "/home/jens/Source/shotwell/src/util/image.vala"
+ _g_object_unref0 (pixbuf);
+#line 151 "/home/jens/Source/shotwell/src/util/image.vala"
+ pixbuf = _tmp5_;
+#line 152 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _error_;
+#line 152 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = _tmp6_->message;
+#line 152 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_warning ("image.vala:152: Could not load icon from theme: %s", _tmp7_);
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ _g_error_free0 (_error_);
+#line 355 "image.c"
+ }
+ __finally4:
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ _g_object_unref0 (pixbuf);
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_clear_error (&_inner_error_);
+#line 146 "/home/jens/Source/shotwell/src/util/image.vala"
+ return NULL;
+#line 368 "image.c"
+ }
+#line 155 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = pixbuf;
+#line 155 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 374 "image.c"
+}
+
+
+GdkPixbuf* scale_pixbuf (GdkPixbuf* pixbuf, gint scale, GdkInterpType interp, gboolean scale_up) {
+ GdkPixbuf* result = NULL;
+ Dimensions original = {0};
+ GdkPixbuf* _tmp0_ = NULL;
+ Dimensions _tmp1_ = {0};
+ Dimensions scaled = {0};
+ gint _tmp2_ = 0;
+ gboolean _tmp3_ = FALSE;
+ Dimensions _tmp4_ = {0};
+ gboolean _tmp5_ = FALSE;
+ Dimensions _tmp6_ = {0};
+ gint _tmp7_ = 0;
+ Dimensions _tmp8_ = {0};
+ gint _tmp9_ = 0;
+ Dimensions _tmp16_ = {0};
+ GdkPixbuf* _tmp17_ = NULL;
+ Dimensions _tmp18_ = {0};
+ gint _tmp19_ = 0;
+ Dimensions _tmp20_ = {0};
+ gint _tmp21_ = 0;
+ GdkInterpType _tmp22_ = 0;
+ GdkPixbuf* _tmp23_ = NULL;
+#line 158 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL);
+#line 159 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = pixbuf;
+#line 159 "/home/jens/Source/shotwell/src/util/image.vala"
+ dimensions_for_pixbuf (_tmp0_, &_tmp1_);
+#line 159 "/home/jens/Source/shotwell/src/util/image.vala"
+ original = _tmp1_;
+#line 160 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = scale;
+#line 160 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = scale_up;
+#line 160 "/home/jens/Source/shotwell/src/util/image.vala"
+ dimensions_get_scaled (&original, _tmp2_, _tmp3_, &_tmp4_);
+#line 160 "/home/jens/Source/shotwell/src/util/image.vala"
+ scaled = _tmp4_;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = original;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = _tmp6_.width;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = scaled;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = _tmp8_.width;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp7_ == _tmp9_) {
+#line 426 "image.c"
+ Dimensions _tmp10_ = {0};
+ gint _tmp11_ = 0;
+ Dimensions _tmp12_ = {0};
+ gint _tmp13_ = 0;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = original;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = _tmp10_.height;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = scaled;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = _tmp12_.height;
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = _tmp11_ == _tmp13_;
+#line 441 "image.c"
+ } else {
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = FALSE;
+#line 445 "image.c"
+ }
+#line 161 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp5_) {
+#line 449 "image.c"
+ GdkPixbuf* _tmp14_ = NULL;
+ GdkPixbuf* _tmp15_ = NULL;
+#line 162 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = pixbuf;
+#line 162 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = _g_object_ref0 (_tmp14_);
+#line 162 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp15_;
+#line 162 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 460 "image.c"
+ }
+#line 165 "/home/jens/Source/shotwell/src/util/image.vala"
+ dimensions_with_min (&scaled, MIN_SCALED_WIDTH, MIN_SCALED_HEIGHT, &_tmp16_);
+#line 165 "/home/jens/Source/shotwell/src/util/image.vala"
+ scaled = _tmp16_;
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = pixbuf;
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = scaled;
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = _tmp18_.width;
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp20_ = scaled;
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp21_ = _tmp20_.height;
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp22_ = interp;
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp23_ = gdk_pixbuf_scale_simple (_tmp17_, _tmp19_, _tmp21_, _tmp22_);
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp23_;
+#line 167 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 484 "image.c"
+}
+
+
+GdkPixbuf* resize_pixbuf (GdkPixbuf* pixbuf, Dimensions* resized, GdkInterpType interp) {
+ GdkPixbuf* result = NULL;
+ Dimensions original = {0};
+ GdkPixbuf* _tmp0_ = NULL;
+ Dimensions _tmp1_ = {0};
+ gboolean _tmp2_ = FALSE;
+ Dimensions _tmp3_ = {0};
+ gint _tmp4_ = 0;
+ Dimensions _tmp5_ = {0};
+ gint _tmp6_ = 0;
+ Dimensions _tmp13_ = {0};
+ GdkPixbuf* _tmp14_ = NULL;
+ Dimensions _tmp15_ = {0};
+ gint _tmp16_ = 0;
+ Dimensions _tmp17_ = {0};
+ gint _tmp18_ = 0;
+ GdkInterpType _tmp19_ = 0;
+ GdkPixbuf* _tmp20_ = NULL;
+#line 170 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL);
+#line 170 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (resized != NULL, NULL);
+#line 171 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = pixbuf;
+#line 171 "/home/jens/Source/shotwell/src/util/image.vala"
+ dimensions_for_pixbuf (_tmp0_, &_tmp1_);
+#line 171 "/home/jens/Source/shotwell/src/util/image.vala"
+ original = _tmp1_;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = original;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = _tmp3_.width;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = *resized;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _tmp5_.width;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp4_ == _tmp6_) {
+#line 526 "image.c"
+ Dimensions _tmp7_ = {0};
+ gint _tmp8_ = 0;
+ Dimensions _tmp9_ = {0};
+ gint _tmp10_ = 0;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = original;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_.height;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = *resized;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = _tmp9_.height;
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = _tmp8_ == _tmp10_;
+#line 541 "image.c"
+ } else {
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = FALSE;
+#line 545 "image.c"
+ }
+#line 172 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp2_) {
+#line 549 "image.c"
+ GdkPixbuf* _tmp11_ = NULL;
+ GdkPixbuf* _tmp12_ = NULL;
+#line 173 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = pixbuf;
+#line 173 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = _g_object_ref0 (_tmp11_);
+#line 173 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp12_;
+#line 173 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 560 "image.c"
+ }
+#line 176 "/home/jens/Source/shotwell/src/util/image.vala"
+ dimensions_with_min (resized, MIN_SCALED_WIDTH, MIN_SCALED_HEIGHT, &_tmp13_);
+#line 176 "/home/jens/Source/shotwell/src/util/image.vala"
+ *resized = _tmp13_;
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = pixbuf;
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = *resized;
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = _tmp15_.width;
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = *resized;
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = _tmp17_.height;
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = interp;
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp20_ = gdk_pixbuf_scale_simple (_tmp14_, _tmp16_, _tmp18_, _tmp19_);
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp20_;
+#line 178 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 584 "image.c"
+}
+
+
+void draw_rounded_corners_filled (cairo_t* ctx, Dimensions* dim, GdkPoint* origin, gdouble radius_proportion) {
+ cairo_t* _tmp0_ = NULL;
+ Dimensions _tmp1_ = {0};
+ GdkPoint _tmp2_ = {0};
+ gdouble _tmp3_ = 0.0;
+ cairo_t* _tmp4_ = NULL;
+#line 183 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (ctx != NULL);
+#line 183 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (dim != NULL);
+#line 183 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (origin != NULL);
+#line 185 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = ctx;
+#line 185 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = *dim;
+#line 185 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = *origin;
+#line 185 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = radius_proportion;
+#line 185 "/home/jens/Source/shotwell/src/util/image.vala"
+ context_rounded_corners (_tmp0_, &_tmp1_, &_tmp2_, _tmp3_);
+#line 186 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = ctx;
+#line 186 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_paint (_tmp4_);
+#line 614 "image.c"
+}
+
+
+void context_rounded_corners (cairo_t* cx, Dimensions* dim, GdkPoint* origin, gdouble radius_proportion) {
+ gdouble _tmp0_ = 0.0;
+ gdouble _tmp1_ = 0.0;
+ gdouble left = 0.0;
+ GdkPoint _tmp2_ = {0};
+ gint _tmp3_ = 0;
+ gdouble top = 0.0;
+ GdkPoint _tmp4_ = {0};
+ gint _tmp5_ = 0;
+ gdouble right = 0.0;
+ GdkPoint _tmp6_ = {0};
+ gint _tmp7_ = 0;
+ Dimensions _tmp8_ = {0};
+ gint _tmp9_ = 0;
+ gdouble bottom = 0.0;
+ GdkPoint _tmp10_ = {0};
+ gint _tmp11_ = 0;
+ Dimensions _tmp12_ = {0};
+ gint _tmp13_ = 0;
+ gdouble radius = 0.0;
+ gint _tmp14_ = 0;
+ gdouble _tmp15_ = 0.0;
+ cairo_t* _tmp16_ = NULL;
+ cairo_t* _tmp17_ = NULL;
+ cairo_t* _tmp18_ = NULL;
+ cairo_t* _tmp19_ = NULL;
+ cairo_t* _tmp20_ = NULL;
+ cairo_t* _tmp21_ = NULL;
+#line 189 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (cx != NULL);
+#line 189 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (dim != NULL);
+#line 189 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (origin != NULL);
+#line 192 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = radius_proportion;
+#line 192 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = CLAMP (_tmp0_, 2.0, 100.0);
+#line 192 "/home/jens/Source/shotwell/src/util/image.vala"
+ radius_proportion = _tmp1_;
+#line 194 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = *origin;
+#line 194 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = _tmp2_.x;
+#line 194 "/home/jens/Source/shotwell/src/util/image.vala"
+ left = (gdouble) _tmp3_;
+#line 195 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = *origin;
+#line 195 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = _tmp4_.y;
+#line 195 "/home/jens/Source/shotwell/src/util/image.vala"
+ top = (gdouble) _tmp5_;
+#line 196 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = *origin;
+#line 196 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = _tmp6_.x;
+#line 196 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = *dim;
+#line 196 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = _tmp8_.width;
+#line 196 "/home/jens/Source/shotwell/src/util/image.vala"
+ right = (gdouble) (_tmp7_ + _tmp9_);
+#line 197 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = *origin;
+#line 197 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = _tmp10_.y;
+#line 197 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = *dim;
+#line 197 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = _tmp12_.height;
+#line 197 "/home/jens/Source/shotwell/src/util/image.vala"
+ bottom = (gdouble) (_tmp11_ + _tmp13_);
+#line 200 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = dimensions_minor_axis (dim);
+#line 200 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = radius_proportion;
+#line 200 "/home/jens/Source/shotwell/src/util/image.vala"
+ radius = ((gdouble) _tmp14_) / _tmp15_;
+#line 204 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = cx;
+#line 204 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_move_to (_tmp16_, left, top);
+#line 205 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = cx;
+#line 205 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_arc (_tmp17_, right - radius, top + radius, radius, -90 * DEGREE, 0 * DEGREE);
+#line 206 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = cx;
+#line 206 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_arc (_tmp18_, right - radius, bottom - radius, radius, 0 * DEGREE, 90 * DEGREE);
+#line 207 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = cx;
+#line 207 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_arc (_tmp19_, left + radius, bottom - radius, radius, 90 * DEGREE, 180 * DEGREE);
+#line 208 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp20_ = cx;
+#line 208 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_arc (_tmp20_, left + radius, top + radius, radius, 180 * DEGREE, 270 * DEGREE);
+#line 209 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp21_ = cx;
+#line 209 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_clip (_tmp21_);
+#line 720 "image.c"
+}
+
+
+inline guchar shift_color_byte (gint b, gint shift) {
+ guchar result = '\0';
+ gint _tmp0_ = 0;
+ gint _tmp1_ = 0;
+ gint _tmp2_ = 0;
+#line 213 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = b;
+#line 213 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = shift;
+#line 213 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = CLAMP (_tmp0_ + _tmp1_, 0, 255);
+#line 213 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = (guchar) _tmp2_;
+#line 213 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 739 "image.c"
+}
+
+
+void shift_colors (GdkPixbuf* pixbuf, gint red, gint green, gint blue, gint alpha) {
+ gboolean _tmp0_ = FALSE;
+ gint _tmp1_ = 0;
+ gboolean _tmp3_ = FALSE;
+ gint _tmp4_ = 0;
+ gboolean _tmp6_ = FALSE;
+ gint _tmp7_ = 0;
+ gboolean _tmp9_ = FALSE;
+ gint _tmp10_ = 0;
+ gint width = 0;
+ GdkPixbuf* _tmp12_ = NULL;
+ gint _tmp13_ = 0;
+ gint height = 0;
+ GdkPixbuf* _tmp14_ = NULL;
+ gint _tmp15_ = 0;
+ gint rowstride = 0;
+ GdkPixbuf* _tmp16_ = NULL;
+ gint _tmp17_ = 0;
+ gint channels = 0;
+ GdkPixbuf* _tmp18_ = NULL;
+ gint _tmp19_ = 0;
+ guchar* pixels = NULL;
+ GdkPixbuf* _tmp20_ = NULL;
+ guint8* _tmp21_ = NULL;
+ gint _tmp22_ = 0;
+ GdkPixbuf* _tmp23_ = NULL;
+ GdkColorspace _tmp24_ = 0;
+ GdkPixbuf* _tmp25_ = NULL;
+ gint _tmp26_ = 0;
+#line 216 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+#line 217 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = red;
+#line 217 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp1_ >= -255) {
+#line 778 "image.c"
+ gint _tmp2_ = 0;
+#line 217 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = red;
+#line 217 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = _tmp2_ <= 255;
+#line 784 "image.c"
+ } else {
+#line 217 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = FALSE;
+#line 788 "image.c"
+ }
+#line 217 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp0_, "red >= -255 && red <= 255");
+#line 218 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = green;
+#line 218 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp4_ >= -255) {
+#line 796 "image.c"
+ gint _tmp5_ = 0;
+#line 218 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = green;
+#line 218 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = _tmp5_ <= 255;
+#line 802 "image.c"
+ } else {
+#line 218 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = FALSE;
+#line 806 "image.c"
+ }
+#line 218 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp3_, "green >= -255 && green <= 255");
+#line 219 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = blue;
+#line 219 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp7_ >= -255) {
+#line 814 "image.c"
+ gint _tmp8_ = 0;
+#line 219 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = blue;
+#line 219 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _tmp8_ <= 255;
+#line 820 "image.c"
+ } else {
+#line 219 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = FALSE;
+#line 824 "image.c"
+ }
+#line 219 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp6_, "blue >= -255 && blue <= 255");
+#line 220 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = alpha;
+#line 220 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp10_ >= -255) {
+#line 832 "image.c"
+ gint _tmp11_ = 0;
+#line 220 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = alpha;
+#line 220 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = _tmp11_ <= 255;
+#line 838 "image.c"
+ } else {
+#line 220 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = FALSE;
+#line 842 "image.c"
+ }
+#line 220 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp9_, "alpha >= -255 && alpha <= 255");
+#line 222 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = pixbuf;
+#line 222 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = gdk_pixbuf_get_width (_tmp12_);
+#line 222 "/home/jens/Source/shotwell/src/util/image.vala"
+ width = _tmp13_;
+#line 223 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = pixbuf;
+#line 223 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = gdk_pixbuf_get_height (_tmp14_);
+#line 223 "/home/jens/Source/shotwell/src/util/image.vala"
+ height = _tmp15_;
+#line 224 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = pixbuf;
+#line 224 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = gdk_pixbuf_get_rowstride (_tmp16_);
+#line 224 "/home/jens/Source/shotwell/src/util/image.vala"
+ rowstride = _tmp17_;
+#line 225 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = pixbuf;
+#line 225 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = gdk_pixbuf_get_n_channels (_tmp18_);
+#line 225 "/home/jens/Source/shotwell/src/util/image.vala"
+ channels = _tmp19_;
+#line 226 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp20_ = pixbuf;
+#line 226 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp21_ = gdk_pixbuf_get_pixels (_tmp20_);
+#line 226 "/home/jens/Source/shotwell/src/util/image.vala"
+ pixels = _tmp21_;
+#line 228 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp22_ = channels;
+#line 228 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp22_ >= 3, "channels >= 3");
+#line 229 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp23_ = pixbuf;
+#line 229 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp24_ = gdk_pixbuf_get_colorspace (_tmp23_);
+#line 229 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp24_ == GDK_COLORSPACE_RGB, "pixbuf.get_colorspace() == Gdk.Colorspace.RGB");
+#line 230 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp25_ = pixbuf;
+#line 230 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp26_ = gdk_pixbuf_get_bits_per_sample (_tmp25_);
+#line 230 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp26_ == 8, "pixbuf.get_bits_per_sample() == 8");
+#line 892 "image.c"
+ {
+ gint y = 0;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ y = 0;
+#line 897 "image.c"
+ {
+ gboolean _tmp27_ = FALSE;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp27_ = TRUE;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ while (TRUE) {
+#line 904 "image.c"
+ gint _tmp29_ = 0;
+ gint _tmp30_ = 0;
+ gint y_offset = 0;
+ gint _tmp31_ = 0;
+ gint _tmp32_ = 0;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (!_tmp27_) {
+#line 912 "image.c"
+ gint _tmp28_ = 0;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp28_ = y;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ y = _tmp28_ + 1;
+#line 918 "image.c"
+ }
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp27_ = FALSE;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp29_ = y;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp30_ = height;
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (!(_tmp29_ < _tmp30_)) {
+#line 232 "/home/jens/Source/shotwell/src/util/image.vala"
+ break;
+#line 930 "image.c"
+ }
+#line 233 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp31_ = y;
+#line 233 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp32_ = rowstride;
+#line 233 "/home/jens/Source/shotwell/src/util/image.vala"
+ y_offset = _tmp31_ * _tmp32_;
+#line 938 "image.c"
+ {
+ gint x = 0;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ x = 0;
+#line 943 "image.c"
+ {
+ gboolean _tmp33_ = FALSE;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp33_ = TRUE;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ while (TRUE) {
+#line 950 "image.c"
+ gint _tmp35_ = 0;
+ gint _tmp36_ = 0;
+ gint offset = 0;
+ gint _tmp37_ = 0;
+ gint _tmp38_ = 0;
+ gint _tmp39_ = 0;
+ gint _tmp40_ = 0;
+ gint _tmp49_ = 0;
+ gint _tmp58_ = 0;
+ gboolean _tmp67_ = FALSE;
+ gint _tmp68_ = 0;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (!_tmp33_) {
+#line 964 "image.c"
+ gint _tmp34_ = 0;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp34_ = x;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ x = _tmp34_ + 1;
+#line 970 "image.c"
+ }
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp33_ = FALSE;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp35_ = x;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp36_ = width;
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (!(_tmp35_ < _tmp36_)) {
+#line 235 "/home/jens/Source/shotwell/src/util/image.vala"
+ break;
+#line 982 "image.c"
+ }
+#line 236 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp37_ = y_offset;
+#line 236 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp38_ = x;
+#line 236 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp39_ = channels;
+#line 236 "/home/jens/Source/shotwell/src/util/image.vala"
+ offset = _tmp37_ + (_tmp38_ * _tmp39_);
+#line 238 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp40_ = red;
+#line 238 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp40_ != 0) {
+#line 996 "image.c"
+ guchar* _tmp41_ = NULL;
+ gint _tmp42_ = 0;
+ guchar* _tmp43_ = NULL;
+ gint _tmp44_ = 0;
+ guchar _tmp45_ = '\0';
+ gint _tmp46_ = 0;
+ guchar _tmp47_ = '\0';
+ guchar _tmp48_ = '\0';
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp41_ = pixels;
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp42_ = offset;
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp43_ = pixels;
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp44_ = offset;
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp45_ = _tmp43_[_tmp44_];
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp46_ = red;
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp47_ = shift_color_byte ((gint) _tmp45_, _tmp46_);
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp41_[_tmp42_] = _tmp47_;
+#line 239 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp48_ = _tmp41_[_tmp42_];
+#line 1023 "image.c"
+ }
+#line 241 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp49_ = green;
+#line 241 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp49_ != 0) {
+#line 1029 "image.c"
+ guchar* _tmp50_ = NULL;
+ gint _tmp51_ = 0;
+ guchar* _tmp52_ = NULL;
+ gint _tmp53_ = 0;
+ guchar _tmp54_ = '\0';
+ gint _tmp55_ = 0;
+ guchar _tmp56_ = '\0';
+ guchar _tmp57_ = '\0';
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp50_ = pixels;
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp51_ = offset;
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp52_ = pixels;
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp53_ = offset;
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp54_ = _tmp52_[_tmp53_ + 1];
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp55_ = green;
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp56_ = shift_color_byte ((gint) _tmp54_, _tmp55_);
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp50_[_tmp51_ + 1] = _tmp56_;
+#line 242 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp57_ = _tmp50_[_tmp51_ + 1];
+#line 1056 "image.c"
+ }
+#line 244 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp58_ = blue;
+#line 244 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp58_ != 0) {
+#line 1062 "image.c"
+ guchar* _tmp59_ = NULL;
+ gint _tmp60_ = 0;
+ guchar* _tmp61_ = NULL;
+ gint _tmp62_ = 0;
+ guchar _tmp63_ = '\0';
+ gint _tmp64_ = 0;
+ guchar _tmp65_ = '\0';
+ guchar _tmp66_ = '\0';
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp59_ = pixels;
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp60_ = offset;
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp61_ = pixels;
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp62_ = offset;
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp63_ = _tmp61_[_tmp62_ + 2];
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp64_ = blue;
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp65_ = shift_color_byte ((gint) _tmp63_, _tmp64_);
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp59_[_tmp60_ + 2] = _tmp65_;
+#line 245 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp66_ = _tmp59_[_tmp60_ + 2];
+#line 1089 "image.c"
+ }
+#line 247 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp68_ = alpha;
+#line 247 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp68_ != 0) {
+#line 1095 "image.c"
+ gint _tmp69_ = 0;
+#line 247 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp69_ = channels;
+#line 247 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp67_ = _tmp69_ >= 4;
+#line 1101 "image.c"
+ } else {
+#line 247 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp67_ = FALSE;
+#line 1105 "image.c"
+ }
+#line 247 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp67_) {
+#line 1109 "image.c"
+ guchar* _tmp70_ = NULL;
+ gint _tmp71_ = 0;
+ guchar* _tmp72_ = NULL;
+ gint _tmp73_ = 0;
+ guchar _tmp74_ = '\0';
+ gint _tmp75_ = 0;
+ guchar _tmp76_ = '\0';
+ guchar _tmp77_ = '\0';
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp70_ = pixels;
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp71_ = offset;
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp72_ = pixels;
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp73_ = offset;
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp74_ = _tmp72_[_tmp73_ + 3];
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp75_ = alpha;
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp76_ = shift_color_byte ((gint) _tmp74_, _tmp75_);
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp70_[_tmp71_ + 3] = _tmp76_;
+#line 248 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp77_ = _tmp70_[_tmp71_ + 3];
+#line 1136 "image.c"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+void dim_pixbuf (GdkPixbuf* pixbuf) {
+ PixelTransformer* transformer = NULL;
+ PixelTransformer* _tmp0_ = NULL;
+ SaturationTransformation* sat = NULL;
+ SaturationTransformation* _tmp1_ = NULL;
+ GdkPixbuf* _tmp2_ = NULL;
+ GdkPixbuf* _tmp3_ = NULL;
+#line 253 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+#line 254 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = pixel_transformer_new ();
+#line 254 "/home/jens/Source/shotwell/src/util/image.vala"
+ transformer = _tmp0_;
+#line 255 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = saturation_transformation_new (SATURATION_TRANSFORMATION_MIN_PARAMETER);
+#line 255 "/home/jens/Source/shotwell/src/util/image.vala"
+ sat = _tmp1_;
+#line 256 "/home/jens/Source/shotwell/src/util/image.vala"
+ pixel_transformer_attach_transformation (transformer, G_TYPE_CHECK_INSTANCE_CAST (sat, TYPE_PIXEL_TRANSFORMATION, PixelTransformation));
+#line 257 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = pixbuf;
+#line 257 "/home/jens/Source/shotwell/src/util/image.vala"
+ pixel_transformer_transform_pixbuf (transformer, _tmp2_, NULL);
+#line 258 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = pixbuf;
+#line 258 "/home/jens/Source/shotwell/src/util/image.vala"
+ shift_colors (_tmp3_, 0, 0, 0, -100);
+#line 253 "/home/jens/Source/shotwell/src/util/image.vala"
+ _pixel_transformation_unref0 (sat);
+#line 253 "/home/jens/Source/shotwell/src/util/image.vala"
+ _pixel_transformer_unref0 (transformer);
+#line 1178 "image.c"
+}
+
+
+gboolean coord_in_rectangle (gint x, gint y, GdkRectangle* rect) {
+ gboolean result = FALSE;
+ gboolean _tmp0_ = FALSE;
+ gboolean _tmp1_ = FALSE;
+ gboolean _tmp2_ = FALSE;
+ gint _tmp3_ = 0;
+ GdkRectangle _tmp4_ = {0};
+ gint _tmp5_ = 0;
+#line 261 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (rect != NULL, FALSE);
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = x;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = *rect;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = _tmp4_.x;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp3_ >= _tmp5_) {
+#line 1200 "image.c"
+ gint _tmp6_ = 0;
+ GdkRectangle _tmp7_ = {0};
+ gint _tmp8_ = 0;
+ GdkRectangle _tmp9_ = {0};
+ gint _tmp10_ = 0;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = x;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = *rect;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_.x;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = *rect;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = _tmp9_.width;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = _tmp6_ < (_tmp8_ + _tmp10_);
+#line 1218 "image.c"
+ } else {
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = FALSE;
+#line 1222 "image.c"
+ }
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp2_) {
+#line 1226 "image.c"
+ gint _tmp11_ = 0;
+ GdkRectangle _tmp12_ = {0};
+ gint _tmp13_ = 0;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = y;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = *rect;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = _tmp12_.y;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = _tmp11_ >= _tmp13_;
+#line 1238 "image.c"
+ } else {
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = FALSE;
+#line 1242 "image.c"
+ }
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp1_) {
+#line 1246 "image.c"
+ gint _tmp14_ = 0;
+ GdkRectangle _tmp15_ = {0};
+ gint _tmp16_ = 0;
+ GdkRectangle _tmp17_ = {0};
+ gint _tmp18_ = 0;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = y;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = *rect;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = _tmp15_.y;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = *rect;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = _tmp17_.height;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = _tmp14_ <= (_tmp16_ + _tmp18_);
+#line 1264 "image.c"
+ } else {
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = FALSE;
+#line 1268 "image.c"
+ }
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp0_;
+#line 262 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 1274 "image.c"
+}
+
+
+gboolean rectangles_equal (GdkRectangle* a, GdkRectangle* b) {
+ gboolean result = FALSE;
+ gboolean _tmp0_ = FALSE;
+ gboolean _tmp1_ = FALSE;
+ gboolean _tmp2_ = FALSE;
+ GdkRectangle _tmp3_ = {0};
+ gint _tmp4_ = 0;
+ GdkRectangle _tmp5_ = {0};
+ gint _tmp6_ = 0;
+#line 265 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (a != NULL, FALSE);
+#line 265 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (b != NULL, FALSE);
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = *a;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = _tmp3_.x;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = *b;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _tmp5_.x;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp4_ == _tmp6_) {
+#line 1301 "image.c"
+ GdkRectangle _tmp7_ = {0};
+ gint _tmp8_ = 0;
+ GdkRectangle _tmp9_ = {0};
+ gint _tmp10_ = 0;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = *a;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_.y;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = *b;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = _tmp9_.y;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = _tmp8_ == _tmp10_;
+#line 1316 "image.c"
+ } else {
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = FALSE;
+#line 1320 "image.c"
+ }
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp2_) {
+#line 1324 "image.c"
+ GdkRectangle _tmp11_ = {0};
+ gint _tmp12_ = 0;
+ GdkRectangle _tmp13_ = {0};
+ gint _tmp14_ = 0;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = *a;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = _tmp11_.width;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = *b;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = _tmp13_.width;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = _tmp12_ == _tmp14_;
+#line 1339 "image.c"
+ } else {
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = FALSE;
+#line 1343 "image.c"
+ }
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp1_) {
+#line 1347 "image.c"
+ GdkRectangle _tmp15_ = {0};
+ gint _tmp16_ = 0;
+ GdkRectangle _tmp17_ = {0};
+ gint _tmp18_ = 0;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = *a;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = _tmp15_.height;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = *b;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = _tmp17_.height;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = _tmp16_ == _tmp18_;
+#line 1362 "image.c"
+ } else {
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = FALSE;
+#line 1366 "image.c"
+ }
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp0_;
+#line 266 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 1372 "image.c"
+}
+
+
+gchar* rectangle_to_string (GdkRectangle* rect) {
+ gchar* result = NULL;
+ GdkRectangle _tmp0_ = {0};
+ gint _tmp1_ = 0;
+ GdkRectangle _tmp2_ = {0};
+ gint _tmp3_ = 0;
+ GdkRectangle _tmp4_ = {0};
+ gint _tmp5_ = 0;
+ GdkRectangle _tmp6_ = {0};
+ gint _tmp7_ = 0;
+ gchar* _tmp8_ = NULL;
+#line 269 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (rect != NULL, NULL);
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = *rect;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = _tmp0_.x;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = *rect;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = _tmp2_.y;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = *rect;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = _tmp4_.width;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = *rect;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = _tmp6_.height;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = g_strdup_printf ("%d,%d %dx%d", _tmp1_, _tmp3_, _tmp5_, _tmp7_);
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp8_;
+#line 270 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 1411 "image.c"
+}
+
+
+void clamp_rectangle (GdkRectangle* original, Dimensions* max, GdkRectangle* result) {
+ GdkRectangle rect = {0};
+ GdkRectangle _tmp0_ = {0};
+ gint _tmp1_ = 0;
+ Dimensions _tmp2_ = {0};
+ gint _tmp3_ = 0;
+ gint _tmp4_ = 0;
+ GdkRectangle _tmp5_ = {0};
+ gint _tmp6_ = 0;
+ Dimensions _tmp7_ = {0};
+ gint _tmp8_ = 0;
+ gint _tmp9_ = 0;
+ GdkRectangle _tmp10_ = {0};
+ gint _tmp11_ = 0;
+ Dimensions _tmp12_ = {0};
+ gint _tmp13_ = 0;
+ gint _tmp14_ = 0;
+ GdkRectangle _tmp15_ = {0};
+ gint _tmp16_ = 0;
+ Dimensions _tmp17_ = {0};
+ gint _tmp18_ = 0;
+ gint _tmp19_ = 0;
+#line 273 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (original != NULL);
+#line 273 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (max != NULL);
+#line 274 "/home/jens/Source/shotwell/src/util/image.vala"
+ memset (&rect, 0, sizeof (GdkRectangle));
+#line 275 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = *original;
+#line 275 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = _tmp0_.x;
+#line 275 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = *max;
+#line 275 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = _tmp2_.width;
+#line 275 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = CLAMP (_tmp1_, 0, _tmp3_);
+#line 275 "/home/jens/Source/shotwell/src/util/image.vala"
+ rect.x = _tmp4_;
+#line 276 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = *original;
+#line 276 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _tmp5_.y;
+#line 276 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = *max;
+#line 276 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_.height;
+#line 276 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = CLAMP (_tmp6_, 0, _tmp8_);
+#line 276 "/home/jens/Source/shotwell/src/util/image.vala"
+ rect.y = _tmp9_;
+#line 277 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = *original;
+#line 277 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = _tmp10_.width;
+#line 277 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = *max;
+#line 277 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = _tmp12_.width;
+#line 277 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = CLAMP (_tmp11_, 0, _tmp13_);
+#line 277 "/home/jens/Source/shotwell/src/util/image.vala"
+ rect.width = _tmp14_;
+#line 278 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = *original;
+#line 278 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = _tmp15_.height;
+#line 278 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = *max;
+#line 278 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = _tmp17_.height;
+#line 278 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = CLAMP (_tmp16_, 0, _tmp18_);
+#line 278 "/home/jens/Source/shotwell/src/util/image.vala"
+ rect.height = _tmp19_;
+#line 280 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = rect;
+#line 280 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 1495 "image.c"
+}
+
+
+void scale_point (GdkPoint* p, gdouble factor, GdkPoint* result) {
+ GdkPoint _result_ = {0};
+ GdkPoint _tmp0_ = {0};
+ gdouble _tmp1_ = 0.0;
+ GdkPoint _tmp2_ = {0};
+ gint _tmp3_ = 0;
+ gdouble _tmp4_ = 0.0;
+ GdkPoint _tmp5_ = {0};
+ gint _tmp6_ = 0;
+#line 283 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (p != NULL);
+#line 284 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_.x = 0;
+#line 284 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_ = _tmp0_;
+#line 285 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = factor;
+#line 285 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = *p;
+#line 285 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = _tmp2_.x;
+#line 285 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_.x = (gint) ((_tmp1_ * _tmp3_) + 0.5);
+#line 286 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = factor;
+#line 286 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = *p;
+#line 286 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _tmp5_.y;
+#line 286 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_.y = (gint) ((_tmp4_ * _tmp6_) + 0.5);
+#line 288 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = _result_;
+#line 288 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 1534 "image.c"
+}
+
+
+void add_points (GdkPoint* p1, GdkPoint* p2, GdkPoint* result) {
+ GdkPoint _result_ = {0};
+ GdkPoint _tmp0_ = {0};
+ GdkPoint _tmp1_ = {0};
+ gint _tmp2_ = 0;
+ GdkPoint _tmp3_ = {0};
+ gint _tmp4_ = 0;
+ GdkPoint _tmp5_ = {0};
+ gint _tmp6_ = 0;
+ GdkPoint _tmp7_ = {0};
+ gint _tmp8_ = 0;
+#line 291 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (p1 != NULL);
+#line 291 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (p2 != NULL);
+#line 292 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_.x = 0;
+#line 292 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_ = _tmp0_;
+#line 293 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = *p1;
+#line 293 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = _tmp1_.x;
+#line 293 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = *p2;
+#line 293 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = _tmp3_.x;
+#line 293 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_.x = _tmp2_ + _tmp4_;
+#line 294 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = *p1;
+#line 294 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _tmp5_.y;
+#line 294 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = *p2;
+#line 294 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_.y;
+#line 294 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_.y = _tmp6_ + _tmp8_;
+#line 296 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = _result_;
+#line 296 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 1581 "image.c"
+}
+
+
+void subtract_points (GdkPoint* p1, GdkPoint* p2, GdkPoint* result) {
+ GdkPoint _result_ = {0};
+ GdkPoint _tmp0_ = {0};
+ GdkPoint _tmp1_ = {0};
+ gint _tmp2_ = 0;
+ GdkPoint _tmp3_ = {0};
+ gint _tmp4_ = 0;
+ GdkPoint _tmp5_ = {0};
+ gint _tmp6_ = 0;
+ GdkPoint _tmp7_ = {0};
+ gint _tmp8_ = 0;
+#line 299 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (p1 != NULL);
+#line 299 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (p2 != NULL);
+#line 300 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_.x = 0;
+#line 300 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_ = _tmp0_;
+#line 301 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = *p1;
+#line 301 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = _tmp1_.x;
+#line 301 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = *p2;
+#line 301 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = _tmp3_.x;
+#line 301 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_.x = _tmp2_ - _tmp4_;
+#line 302 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = *p1;
+#line 302 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = _tmp5_.y;
+#line 302 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = *p2;
+#line 302 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_.y;
+#line 302 "/home/jens/Source/shotwell/src/util/image.vala"
+ _result_.y = _tmp6_ - _tmp8_;
+#line 304 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = _result_;
+#line 304 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 1628 "image.c"
+}
+
+
+void fix_cairo_pixbuf (GdkPixbuf* pixbuf) {
+ guchar* gdk_pixels = NULL;
+ GdkPixbuf* _tmp0_ = NULL;
+ void* _tmp1_ = NULL;
+ void* _tmp2_ = NULL;
+#line 308 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+#line 309 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = pixbuf;
+#line 309 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = gdk_pixbuf_get_pixels (_tmp0_);
+#line 309 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = _tmp1_;
+#line 309 "/home/jens/Source/shotwell/src/util/image.vala"
+ gdk_pixels = _tmp2_;
+#line 1647 "image.c"
+ {
+ gint j = 0;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ j = 0;
+#line 1652 "image.c"
+ {
+ gboolean _tmp3_ = FALSE;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = TRUE;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ while (TRUE) {
+#line 1659 "image.c"
+ gint _tmp5_ = 0;
+ GdkPixbuf* _tmp6_ = NULL;
+ gint _tmp7_ = 0;
+ gint _tmp8_ = 0;
+ guchar* p = NULL;
+ guchar* _tmp9_ = NULL;
+ guchar* end = NULL;
+ guchar* _tmp10_ = NULL;
+ GdkPixbuf* _tmp11_ = NULL;
+ gint _tmp12_ = 0;
+ gint _tmp13_ = 0;
+ guchar* _tmp26_ = NULL;
+ GdkPixbuf* _tmp27_ = NULL;
+ gint _tmp28_ = 0;
+ gint _tmp29_ = 0;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (!_tmp3_) {
+#line 1677 "image.c"
+ gint _tmp4_ = 0;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = j;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ j = _tmp4_ + 1;
+#line 1683 "image.c"
+ }
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = FALSE;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = j;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = pixbuf;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = gdk_pixbuf_get_height (_tmp6_);
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_;
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (!(_tmp5_ < _tmp8_)) {
+#line 310 "/home/jens/Source/shotwell/src/util/image.vala"
+ break;
+#line 1699 "image.c"
+ }
+#line 311 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = gdk_pixels;
+#line 311 "/home/jens/Source/shotwell/src/util/image.vala"
+ p = _tmp9_;
+#line 312 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = p;
+#line 312 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = pixbuf;
+#line 312 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = gdk_pixbuf_get_width (_tmp11_);
+#line 312 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = _tmp12_;
+#line 312 "/home/jens/Source/shotwell/src/util/image.vala"
+ end = _tmp10_ + (4 * _tmp13_);
+#line 314 "/home/jens/Source/shotwell/src/util/image.vala"
+ while (TRUE) {
+#line 1717 "image.c"
+ guchar* _tmp14_ = NULL;
+ guchar* _tmp15_ = NULL;
+ guchar tmp = '\0';
+ guchar* _tmp16_ = NULL;
+ guchar _tmp17_ = '\0';
+ guchar* _tmp18_ = NULL;
+ guchar* _tmp19_ = NULL;
+ guchar _tmp20_ = '\0';
+ guchar _tmp21_ = '\0';
+ guchar* _tmp22_ = NULL;
+ guchar _tmp23_ = '\0';
+ guchar _tmp24_ = '\0';
+ guchar* _tmp25_ = NULL;
+#line 314 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = p;
+#line 314 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = end;
+#line 314 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (!(_tmp14_ < _tmp15_)) {
+#line 314 "/home/jens/Source/shotwell/src/util/image.vala"
+ break;
+#line 1739 "image.c"
+ }
+#line 315 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = p;
+#line 315 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = _tmp16_[0];
+#line 315 "/home/jens/Source/shotwell/src/util/image.vala"
+ tmp = _tmp17_;
+#line 317 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = p;
+#line 317 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = p;
+#line 317 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp20_ = _tmp19_[2];
+#line 317 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_[0] = _tmp20_;
+#line 317 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp21_ = _tmp18_[0];
+#line 318 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp22_ = p;
+#line 318 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp23_ = tmp;
+#line 318 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp22_[2] = _tmp23_;
+#line 318 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp24_ = _tmp22_[2];
+#line 325 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp25_ = p;
+#line 325 "/home/jens/Source/shotwell/src/util/image.vala"
+ p = _tmp25_ + 4;
+#line 1769 "image.c"
+ }
+#line 328 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp26_ = gdk_pixels;
+#line 328 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp27_ = pixbuf;
+#line 328 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp28_ = gdk_pixbuf_get_rowstride (_tmp27_);
+#line 328 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp29_ = _tmp28_;
+#line 328 "/home/jens/Source/shotwell/src/util/image.vala"
+ gdk_pixels = _tmp26_ + _tmp29_;
+#line 1781 "image.c"
+ }
+ }
+ }
+}
+
+
+/**
+ * Finds the size of the smallest axially-aligned rectangle that could contain
+ * a rectangle src_width by src_height, rotated by angle.
+ *
+ * @param src_width The width of the incoming rectangle.
+ * @param src_height The height of the incoming rectangle.
+ * @param angle The amount to rotate by, given in degrees.
+ * @param dest_width The width of the computed rectangle.
+ * @param dest_height The height of the computed rectangle.
+ */
+void compute_arb_rotated_size (gdouble src_width, gdouble src_height, gdouble angle, gdouble* dest_width, gdouble* dest_height) {
+ gdouble _vala_dest_width = 0.0;
+ gdouble _vala_dest_height = 0.0;
+ gdouble _tmp0_ = 0.0;
+ gdouble _tmp1_ = 0.0;
+ gdouble _tmp2_ = 0.0;
+ gdouble _tmp3_ = 0.0;
+ gdouble _tmp4_ = 0.0;
+ gdouble _tmp5_ = 0.0;
+ gdouble _tmp6_ = 0.0;
+ gdouble _tmp7_ = 0.0;
+ gdouble _tmp8_ = 0.0;
+ gdouble _tmp9_ = 0.0;
+ gdouble _tmp10_ = 0.0;
+ gdouble _tmp11_ = 0.0;
+ gdouble _tmp12_ = 0.0;
+ gdouble _tmp13_ = 0.0;
+ gdouble _tmp14_ = 0.0;
+ gdouble _tmp15_ = 0.0;
+#line 345 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = angle;
+#line 345 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = degrees_to_radians (_tmp0_);
+#line 345 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = fabs (_tmp1_);
+#line 345 "/home/jens/Source/shotwell/src/util/image.vala"
+ angle = _tmp2_;
+#line 346 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = angle;
+#line 346 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp3_ <= G_PI_2, "angle <= Math.PI_2");
+#line 347 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = src_width;
+#line 347 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = angle;
+#line 347 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = cos (_tmp5_);
+#line 347 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = src_height;
+#line 347 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = angle;
+#line 347 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = sin (_tmp8_);
+#line 347 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_dest_width = (_tmp4_ * _tmp6_) + (_tmp7_ * _tmp9_);
+#line 348 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = src_height;
+#line 348 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = angle;
+#line 348 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = cos (_tmp11_);
+#line 348 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = src_width;
+#line 348 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = angle;
+#line 348 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = sin (_tmp14_);
+#line 348 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_dest_height = (_tmp10_ * _tmp12_) + (_tmp13_ * _tmp15_);
+#line 342 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (dest_width) {
+#line 342 "/home/jens/Source/shotwell/src/util/image.vala"
+ *dest_width = _vala_dest_width;
+#line 1861 "image.c"
+ }
+#line 342 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (dest_height) {
+#line 342 "/home/jens/Source/shotwell/src/util/image.vala"
+ *dest_height = _vala_dest_height;
+#line 1867 "image.c"
+ }
+}
+
+
+/**
+ * @brief Rotates a pixbuf to an arbitrary angle, given in degrees, and returns the rotated pixbuf.
+ *
+ * @param source_pixbuf The source image that needs to be angled.
+ * @param angle The angle the source image should be rotated by.
+ */
+GdkPixbuf* rotate_arb (GdkPixbuf* source_pixbuf, gdouble angle) {
+ GdkPixbuf* result = NULL;
+ gdouble _tmp0_ = 0.0;
+ gdouble x_tmp = 0.0;
+ gdouble y_tmp = 0.0;
+ GdkPixbuf* _tmp3_ = NULL;
+ gint _tmp4_ = 0;
+ gint _tmp5_ = 0;
+ GdkPixbuf* _tmp6_ = NULL;
+ gint _tmp7_ = 0;
+ gint _tmp8_ = 0;
+ gdouble _tmp9_ = 0.0;
+ gdouble _tmp10_ = 0.0;
+ gdouble _tmp11_ = 0.0;
+ GdkPixbuf* dest_pixbuf = NULL;
+ gdouble _tmp12_ = 0.0;
+ gdouble _tmp13_ = 0.0;
+ gdouble _tmp14_ = 0.0;
+ gdouble _tmp15_ = 0.0;
+ GdkPixbuf* _tmp16_ = NULL;
+ cairo_format_t _tmp17_ = 0;
+ GdkPixbuf* _tmp18_ = NULL;
+ gboolean _tmp19_ = FALSE;
+ gboolean _tmp20_ = FALSE;
+ cairo_surface_t* surface = NULL;
+ GdkPixbuf* _tmp21_ = NULL;
+ void* _tmp22_ = NULL;
+ void* _tmp23_ = NULL;
+ GdkPixbuf* _tmp24_ = NULL;
+ gint _tmp25_ = 0;
+ gint _tmp26_ = 0;
+ GdkPixbuf* _tmp27_ = NULL;
+ gint _tmp28_ = 0;
+ gint _tmp29_ = 0;
+ GdkPixbuf* _tmp30_ = NULL;
+ gint _tmp31_ = 0;
+ gint _tmp32_ = 0;
+ cairo_surface_t* _tmp33_ = NULL;
+ cairo_t* context = NULL;
+ cairo_surface_t* _tmp34_ = NULL;
+ cairo_t* _tmp35_ = NULL;
+ cairo_t* _tmp36_ = NULL;
+ cairo_t* _tmp37_ = NULL;
+ GdkPixbuf* _tmp38_ = NULL;
+ gint _tmp39_ = 0;
+ gint _tmp40_ = 0;
+ GdkPixbuf* _tmp41_ = NULL;
+ gint _tmp42_ = 0;
+ gint _tmp43_ = 0;
+ cairo_t* _tmp44_ = NULL;
+ cairo_t* _tmp45_ = NULL;
+ GdkPixbuf* _tmp46_ = NULL;
+ gint _tmp47_ = 0;
+ gint _tmp48_ = 0;
+ GdkPixbuf* _tmp49_ = NULL;
+ gint _tmp50_ = 0;
+ gint _tmp51_ = 0;
+ cairo_t* _tmp52_ = NULL;
+ gdouble _tmp53_ = 0.0;
+ gdouble _tmp54_ = 0.0;
+ cairo_t* _tmp55_ = NULL;
+ GdkPixbuf* _tmp56_ = NULL;
+ gint _tmp57_ = 0;
+ gint _tmp58_ = 0;
+ GdkPixbuf* _tmp59_ = NULL;
+ gint _tmp60_ = 0;
+ gint _tmp61_ = 0;
+ cairo_t* _tmp62_ = NULL;
+ GdkPixbuf* _tmp63_ = NULL;
+ cairo_t* _tmp64_ = NULL;
+ cairo_pattern_t* _tmp65_ = NULL;
+ cairo_t* _tmp66_ = NULL;
+ GdkPixbuf* _tmp67_ = NULL;
+#line 357 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_val_if_fail (GDK_IS_PIXBUF (source_pixbuf), NULL);
+#line 361 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = angle;
+#line 361 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp0_ == 0.0) {
+#line 1957 "image.c"
+ GdkPixbuf* _tmp1_ = NULL;
+ GdkPixbuf* _tmp2_ = NULL;
+#line 362 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = source_pixbuf;
+#line 362 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 362 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = _tmp2_;
+#line 362 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 1968 "image.c"
+ }
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = source_pixbuf;
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = gdk_pixbuf_get_width (_tmp3_);
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = _tmp4_;
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = source_pixbuf;
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = gdk_pixbuf_get_height (_tmp6_);
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = _tmp7_;
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = angle;
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ compute_arb_rotated_size ((gdouble) _tmp5_, (gdouble) _tmp8_, _tmp9_, &_tmp10_, &_tmp11_);
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ x_tmp = _tmp10_;
+#line 369 "/home/jens/Source/shotwell/src/util/image.vala"
+ y_tmp = _tmp11_;
+#line 372 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = x_tmp;
+#line 372 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = round (_tmp12_);
+#line 372 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = y_tmp;
+#line 372 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = round (_tmp14_);
+#line 372 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, (gint) _tmp13_, (gint) _tmp15_);
+#line 372 "/home/jens/Source/shotwell/src/util/image.vala"
+ dest_pixbuf = _tmp16_;
+#line 377 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = source_pixbuf;
+#line 377 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = gdk_pixbuf_get_has_alpha (_tmp18_);
+#line 377 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp20_ = _tmp19_;
+#line 377 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp20_) {
+#line 377 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = CAIRO_FORMAT_ARGB32;
+#line 2012 "image.c"
+ } else {
+#line 377 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = CAIRO_FORMAT_RGB24;
+#line 2016 "image.c"
+ }
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp21_ = dest_pixbuf;
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp22_ = gdk_pixbuf_get_pixels (_tmp21_);
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp23_ = _tmp22_;
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp24_ = dest_pixbuf;
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp25_ = gdk_pixbuf_get_width (_tmp24_);
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp26_ = _tmp25_;
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp27_ = dest_pixbuf;
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp28_ = gdk_pixbuf_get_height (_tmp27_);
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp29_ = _tmp28_;
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp30_ = dest_pixbuf;
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp31_ = gdk_pixbuf_get_rowstride (_tmp30_);
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp32_ = _tmp31_;
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp33_ = cairo_image_surface_create_for_data ((guchar*) _tmp23_, _tmp17_, _tmp26_, _tmp29_, _tmp32_);
+#line 375 "/home/jens/Source/shotwell/src/util/image.vala"
+ surface = _tmp33_;
+#line 380 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp34_ = surface;
+#line 380 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp35_ = cairo_create (_tmp34_);
+#line 380 "/home/jens/Source/shotwell/src/util/image.vala"
+ context = _tmp35_;
+#line 382 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp36_ = context;
+#line 382 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_set_source_rgb (_tmp36_, (gdouble) 0, (gdouble) 0, (gdouble) 0);
+#line 383 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp37_ = context;
+#line 383 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp38_ = dest_pixbuf;
+#line 383 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp39_ = gdk_pixbuf_get_width (_tmp38_);
+#line 383 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp40_ = _tmp39_;
+#line 383 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp41_ = dest_pixbuf;
+#line 383 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp42_ = gdk_pixbuf_get_height (_tmp41_);
+#line 383 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp43_ = _tmp42_;
+#line 383 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_rectangle (_tmp37_, (gdouble) 0, (gdouble) 0, (gdouble) _tmp40_, (gdouble) _tmp43_);
+#line 384 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp44_ = context;
+#line 384 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_fill (_tmp44_);
+#line 386 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp45_ = context;
+#line 386 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp46_ = dest_pixbuf;
+#line 386 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp47_ = gdk_pixbuf_get_width (_tmp46_);
+#line 386 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp48_ = _tmp47_;
+#line 386 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp49_ = dest_pixbuf;
+#line 386 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp50_ = gdk_pixbuf_get_height (_tmp49_);
+#line 386 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp51_ = _tmp50_;
+#line 386 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_translate (_tmp45_, (gdouble) (_tmp48_ / 2), (gdouble) (_tmp51_ / 2));
+#line 387 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp52_ = context;
+#line 387 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp53_ = angle;
+#line 387 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp54_ = degrees_to_radians (_tmp53_);
+#line 387 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_rotate (_tmp52_, _tmp54_);
+#line 388 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp55_ = context;
+#line 388 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp56_ = source_pixbuf;
+#line 388 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp57_ = gdk_pixbuf_get_width (_tmp56_);
+#line 388 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp58_ = _tmp57_;
+#line 388 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp59_ = source_pixbuf;
+#line 388 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp60_ = gdk_pixbuf_get_height (_tmp59_);
+#line 388 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp61_ = _tmp60_;
+#line 388 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_translate (_tmp55_, (gdouble) ((-_tmp58_) / 2), (gdouble) ((-_tmp61_) / 2));
+#line 390 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp62_ = context;
+#line 390 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp63_ = source_pixbuf;
+#line 390 "/home/jens/Source/shotwell/src/util/image.vala"
+ gdk_cairo_set_source_pixbuf (_tmp62_, _tmp63_, (gdouble) 0, (gdouble) 0);
+#line 391 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp64_ = context;
+#line 391 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp65_ = cairo_get_source (_tmp64_);
+#line 391 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_pattern_set_filter (_tmp65_, CAIRO_FILTER_BEST);
+#line 392 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp66_ = context;
+#line 392 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_paint (_tmp66_);
+#line 396 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp67_ = dest_pixbuf;
+#line 396 "/home/jens/Source/shotwell/src/util/image.vala"
+ fix_cairo_pixbuf (_tmp67_);
+#line 398 "/home/jens/Source/shotwell/src/util/image.vala"
+ result = dest_pixbuf;
+#line 398 "/home/jens/Source/shotwell/src/util/image.vala"
+ _cairo_destroy0 (context);
+#line 398 "/home/jens/Source/shotwell/src/util/image.vala"
+ _cairo_surface_destroy0 (surface);
+#line 398 "/home/jens/Source/shotwell/src/util/image.vala"
+ return result;
+#line 2144 "image.c"
+}
+
+
+/**
+ * @brief Rotates a point around the upper left corner of an image to an arbitrary angle,
+ * given in degrees, and returns the rotated point, translated such that it, along with its attendant
+ * image, are in positive x, positive y.
+ *
+ * @note May be subject to slight inaccuracy as Gdk points' coordinates may only be in whole pixels,
+ * so the fractional component is lost.
+ *
+ * @param source_point The point to be rotated and scaled.
+ * @param img_w The width of the source image (unrotated).
+ * @param img_h The height of the source image (unrotated).
+ * @param angle The angle the source image is to be rotated by to straighten it.
+ */
+void rotate_point_arb (GdkPoint* source_point, gint img_w, gint img_h, gdouble angle, gboolean invert, GdkPoint* result) {
+ gdouble _tmp0_ = 0.0;
+ gdouble dest_width = 0.0;
+ gdouble dest_height = 0.0;
+ gint _tmp2_ = 0;
+ gint _tmp3_ = 0;
+ gdouble _tmp4_ = 0.0;
+ gdouble _tmp5_ = 0.0;
+ gdouble _tmp6_ = 0.0;
+ cairo_matrix_t matrix = {0};
+ gdouble _tmp7_ = 0.0;
+ gdouble _tmp8_ = 0.0;
+ gdouble _tmp9_ = 0.0;
+ gdouble _tmp10_ = 0.0;
+ gint _tmp11_ = 0;
+ gint _tmp12_ = 0;
+ gboolean _tmp13_ = FALSE;
+ gdouble dest_x = 0.0;
+ GdkPoint _tmp15_ = {0};
+ gint _tmp16_ = 0;
+ gdouble dest_y = 0.0;
+ GdkPoint _tmp17_ = {0};
+ gint _tmp18_ = 0;
+ gdouble _tmp19_ = 0.0;
+ gdouble _tmp20_ = 0.0;
+ GdkPoint _tmp21_ = {0};
+#line 414 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (source_point != NULL);
+#line 417 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = angle;
+#line 417 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp0_ == 0.0) {
+#line 2193 "image.c"
+ GdkPoint _tmp1_ = {0};
+#line 419 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = *source_point;
+#line 419 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = _tmp1_;
+#line 419 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 2201 "image.c"
+ }
+#line 424 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = img_w;
+#line 424 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = img_h;
+#line 424 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_ = angle;
+#line 424 "/home/jens/Source/shotwell/src/util/image.vala"
+ compute_arb_rotated_size ((gdouble) _tmp2_, (gdouble) _tmp3_, _tmp4_, &_tmp5_, &_tmp6_);
+#line 424 "/home/jens/Source/shotwell/src/util/image.vala"
+ dest_width = _tmp5_;
+#line 424 "/home/jens/Source/shotwell/src/util/image.vala"
+ dest_height = _tmp6_;
+#line 426 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_matrix_init_identity (&matrix);
+#line 427 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = dest_width;
+#line 427 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp8_ = dest_height;
+#line 427 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_matrix_translate (&matrix, _tmp7_ / 2, _tmp8_ / 2);
+#line 428 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = angle;
+#line 428 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = degrees_to_radians (_tmp9_);
+#line 428 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_matrix_rotate (&matrix, _tmp10_);
+#line 429 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = img_w;
+#line 429 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = img_h;
+#line 429 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_matrix_translate (&matrix, (gdouble) ((-_tmp11_) / 2), (gdouble) ((-_tmp12_) / 2));
+#line 430 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_ = invert;
+#line 430 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp13_) {
+#line 2239 "image.c"
+ cairo_status_t _tmp14_ = 0;
+#line 431 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = cairo_matrix_invert (&matrix);
+#line 431 "/home/jens/Source/shotwell/src/util/image.vala"
+ _vala_assert (_tmp14_ == CAIRO_STATUS_SUCCESS, "matrix.invert() == Cairo.Status.SUCCESS");
+#line 2245 "image.c"
+ }
+#line 433 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = *source_point;
+#line 433 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = _tmp15_.x;
+#line 433 "/home/jens/Source/shotwell/src/util/image.vala"
+ dest_x = (gdouble) _tmp16_;
+#line 434 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp17_ = *source_point;
+#line 434 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = _tmp17_.y;
+#line 434 "/home/jens/Source/shotwell/src/util/image.vala"
+ dest_y = (gdouble) _tmp18_;
+#line 435 "/home/jens/Source/shotwell/src/util/image.vala"
+ cairo_matrix_transform_point (&matrix, &dest_x, &dest_y);
+#line 437 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = dest_x;
+#line 437 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp20_ = dest_y;
+#line 437 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp21_.x = (gint) _tmp19_;
+#line 437 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp21_.y = (gint) _tmp20_;
+#line 437 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = _tmp21_;
+#line 437 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 2273 "image.c"
+}
+
+
+/**
+ * @brief <u>De</u>rotates a point around the upper left corner of an image from an arbitrary angle,
+ * given in degrees, and returns the de-rotated point, taking into account any translation necessary
+ * to make sure all of the rotated image stays in positive x, positive y.
+ *
+ * @note May be subject to slight inaccuracy as Gdk points' coordinates may only be in whole pixels,
+ * so the fractional component is lost.
+ *
+ * @param source_point The point to be de-rotated.
+ * @param img_w The width of the source image (unrotated).
+ * @param img_h The height of the source image (unrotated).
+ * @param angle The angle the source image is to be rotated by to straighten it.
+ */
+void derotate_point_arb (GdkPoint* source_point, gint img_w, gint img_h, gdouble angle, GdkPoint* result) {
+ GdkPoint _tmp0_ = {0};
+ gint _tmp1_ = 0;
+ gint _tmp2_ = 0;
+ gdouble _tmp3_ = 0.0;
+ GdkPoint _tmp4_ = {0};
+#line 453 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (source_point != NULL);
+#line 454 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = *source_point;
+#line 454 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = img_w;
+#line 454 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = img_h;
+#line 454 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = angle;
+#line 454 "/home/jens/Source/shotwell/src/util/image.vala"
+ rotate_point_arb (&_tmp0_, _tmp1_, _tmp2_, _tmp3_, TRUE, &_tmp4_);
+#line 454 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = _tmp4_;
+#line 454 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 2312 "image.c"
+}
+
+
+void clamp_inside_rotated_image (Box* src, gint img_w, gint img_h, gdouble angle_deg, gboolean preserve_geom, Box* result) {
+ GdkPoint top_left = {0};
+ Box _tmp0_ = {0};
+ gint _tmp1_ = 0;
+ Box _tmp2_ = {0};
+ gint _tmp3_ = 0;
+ GdkPoint _tmp4_ = {0};
+ gint _tmp5_ = 0;
+ gint _tmp6_ = 0;
+ gdouble _tmp7_ = 0.0;
+ GdkPoint _tmp8_ = {0};
+ GdkPoint top_right = {0};
+ Box _tmp9_ = {0};
+ gint _tmp10_ = 0;
+ Box _tmp11_ = {0};
+ gint _tmp12_ = 0;
+ GdkPoint _tmp13_ = {0};
+ gint _tmp14_ = 0;
+ gint _tmp15_ = 0;
+ gdouble _tmp16_ = 0.0;
+ GdkPoint _tmp17_ = {0};
+ GdkPoint bottom_left = {0};
+ Box _tmp18_ = {0};
+ gint _tmp19_ = 0;
+ Box _tmp20_ = {0};
+ gint _tmp21_ = 0;
+ GdkPoint _tmp22_ = {0};
+ gint _tmp23_ = 0;
+ gint _tmp24_ = 0;
+ gdouble _tmp25_ = 0.0;
+ GdkPoint _tmp26_ = {0};
+ GdkPoint bottom_right = {0};
+ Box _tmp27_ = {0};
+ gint _tmp28_ = 0;
+ Box _tmp29_ = {0};
+ gint _tmp30_ = 0;
+ GdkPoint _tmp31_ = {0};
+ gint _tmp32_ = 0;
+ gint _tmp33_ = 0;
+ gdouble _tmp34_ = 0.0;
+ GdkPoint _tmp35_ = {0};
+ gdouble angle = 0.0;
+ gdouble _tmp36_ = 0.0;
+ gdouble _tmp37_ = 0.0;
+ gint top_offset = 0;
+ gint bottom_offset = 0;
+ gint left_offset = 0;
+ gint right_offset = 0;
+ gint top = 0;
+ GdkPoint _tmp38_ = {0};
+ gint _tmp39_ = 0;
+ GdkPoint _tmp40_ = {0};
+ gint _tmp41_ = 0;
+ gint _tmp42_ = 0;
+ gint _tmp43_ = 0;
+ gint bottom = 0;
+ GdkPoint _tmp47_ = {0};
+ gint _tmp48_ = 0;
+ GdkPoint _tmp49_ = {0};
+ gint _tmp50_ = 0;
+ gint _tmp51_ = 0;
+ gint _tmp52_ = 0;
+ gint _tmp53_ = 0;
+ gint left = 0;
+ GdkPoint _tmp58_ = {0};
+ gint _tmp59_ = 0;
+ GdkPoint _tmp60_ = {0};
+ gint _tmp61_ = 0;
+ gint _tmp62_ = 0;
+ gint _tmp63_ = 0;
+ gint right = 0;
+ GdkPoint _tmp67_ = {0};
+ gint _tmp68_ = 0;
+ GdkPoint _tmp69_ = {0};
+ gint _tmp70_ = 0;
+ gint _tmp71_ = 0;
+ gint _tmp72_ = 0;
+ gint _tmp73_ = 0;
+ Box _tmp78_ = {0};
+ gboolean _tmp79_ = FALSE;
+#line 459 "/home/jens/Source/shotwell/src/util/image.vala"
+ g_return_if_fail (src != NULL);
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp0_ = *src;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp1_ = _tmp0_.left;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp2_ = *src;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp3_ = _tmp2_.top;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_.x = _tmp1_;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp4_.y = _tmp3_;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp5_ = img_w;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp6_ = img_h;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp7_ = angle_deg;
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ derotate_point_arb (&_tmp4_, _tmp5_, _tmp6_, _tmp7_, &_tmp8_);
+#line 462 "/home/jens/Source/shotwell/src/util/image.vala"
+ top_left = _tmp8_;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp9_ = *src;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp10_ = _tmp9_.right;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp11_ = *src;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp12_ = _tmp11_.top;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_.x = _tmp10_;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp13_.y = _tmp12_;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp14_ = img_w;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp15_ = img_h;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp16_ = angle_deg;
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ derotate_point_arb (&_tmp13_, _tmp14_, _tmp15_, _tmp16_, &_tmp17_);
+#line 463 "/home/jens/Source/shotwell/src/util/image.vala"
+ top_right = _tmp17_;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp18_ = *src;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp19_ = _tmp18_.left;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp20_ = *src;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp21_ = _tmp20_.bottom;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp22_.x = _tmp19_;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp22_.y = _tmp21_;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp23_ = img_w;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp24_ = img_h;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp25_ = angle_deg;
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ derotate_point_arb (&_tmp22_, _tmp23_, _tmp24_, _tmp25_, &_tmp26_);
+#line 464 "/home/jens/Source/shotwell/src/util/image.vala"
+ bottom_left = _tmp26_;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp27_ = *src;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp28_ = _tmp27_.right;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp29_ = *src;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp30_ = _tmp29_.bottom;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp31_.x = _tmp28_;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp31_.y = _tmp30_;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp32_ = img_w;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp33_ = img_h;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp34_ = angle_deg;
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ derotate_point_arb (&_tmp31_, _tmp32_, _tmp33_, _tmp34_, &_tmp35_);
+#line 465 "/home/jens/Source/shotwell/src/util/image.vala"
+ bottom_right = _tmp35_;
+#line 467 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp36_ = angle_deg;
+#line 467 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp37_ = degrees_to_radians (_tmp36_);
+#line 467 "/home/jens/Source/shotwell/src/util/image.vala"
+ angle = _tmp37_;
+#line 468 "/home/jens/Source/shotwell/src/util/image.vala"
+ top_offset = 0;
+#line 468 "/home/jens/Source/shotwell/src/util/image.vala"
+ bottom_offset = 0;
+#line 468 "/home/jens/Source/shotwell/src/util/image.vala"
+ left_offset = 0;
+#line 468 "/home/jens/Source/shotwell/src/util/image.vala"
+ right_offset = 0;
+#line 470 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp38_ = top_left;
+#line 470 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp39_ = _tmp38_.y;
+#line 470 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp40_ = top_right;
+#line 470 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp41_ = _tmp40_.y;
+#line 470 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp42_ = MIN (_tmp39_, _tmp41_);
+#line 470 "/home/jens/Source/shotwell/src/util/image.vala"
+ top = _tmp42_;
+#line 471 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp43_ = top;
+#line 471 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp43_ < 0) {
+#line 2516 "image.c"
+ gint _tmp44_ = 0;
+ gdouble _tmp45_ = 0.0;
+ gdouble _tmp46_ = 0.0;
+#line 472 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp44_ = top;
+#line 472 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp45_ = angle;
+#line 472 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp46_ = cos (_tmp45_);
+#line 472 "/home/jens/Source/shotwell/src/util/image.vala"
+ top_offset = (gint) ((0 - _tmp44_) * _tmp46_);
+#line 2528 "image.c"
+ }
+#line 474 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp47_ = bottom_left;
+#line 474 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp48_ = _tmp47_.y;
+#line 474 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp49_ = bottom_right;
+#line 474 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp50_ = _tmp49_.y;
+#line 474 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp51_ = MAX (_tmp48_, _tmp50_);
+#line 474 "/home/jens/Source/shotwell/src/util/image.vala"
+ bottom = _tmp51_;
+#line 475 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp52_ = bottom;
+#line 475 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp53_ = img_h;
+#line 475 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp52_ > _tmp53_) {
+#line 2548 "image.c"
+ gint _tmp54_ = 0;
+ gint _tmp55_ = 0;
+ gdouble _tmp56_ = 0.0;
+ gdouble _tmp57_ = 0.0;
+#line 476 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp54_ = img_h;
+#line 476 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp55_ = bottom;
+#line 476 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp56_ = angle;
+#line 476 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp57_ = cos (_tmp56_);
+#line 476 "/home/jens/Source/shotwell/src/util/image.vala"
+ bottom_offset = (gint) ((_tmp54_ - _tmp55_) * _tmp57_);
+#line 2563 "image.c"
+ }
+#line 478 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp58_ = top_left;
+#line 478 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp59_ = _tmp58_.x;
+#line 478 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp60_ = bottom_left;
+#line 478 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp61_ = _tmp60_.x;
+#line 478 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp62_ = MIN (_tmp59_, _tmp61_);
+#line 478 "/home/jens/Source/shotwell/src/util/image.vala"
+ left = _tmp62_;
+#line 479 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp63_ = left;
+#line 479 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp63_ < 0) {
+#line 2581 "image.c"
+ gint _tmp64_ = 0;
+ gdouble _tmp65_ = 0.0;
+ gdouble _tmp66_ = 0.0;
+#line 480 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp64_ = left;
+#line 480 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp65_ = angle;
+#line 480 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp66_ = cos (_tmp65_);
+#line 480 "/home/jens/Source/shotwell/src/util/image.vala"
+ left_offset = (gint) ((0 - _tmp64_) * _tmp66_);
+#line 2593 "image.c"
+ }
+#line 482 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp67_ = top_right;
+#line 482 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp68_ = _tmp67_.x;
+#line 482 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp69_ = bottom_right;
+#line 482 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp70_ = _tmp69_.x;
+#line 482 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp71_ = MAX (_tmp68_, _tmp70_);
+#line 482 "/home/jens/Source/shotwell/src/util/image.vala"
+ right = _tmp71_;
+#line 483 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp72_ = right;
+#line 483 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp73_ = img_w;
+#line 483 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp72_ > _tmp73_) {
+#line 2613 "image.c"
+ gint _tmp74_ = 0;
+ gint _tmp75_ = 0;
+ gdouble _tmp76_ = 0.0;
+ gdouble _tmp77_ = 0.0;
+#line 484 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp74_ = img_w;
+#line 484 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp75_ = right;
+#line 484 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp76_ = angle;
+#line 484 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp77_ = cos (_tmp76_);
+#line 484 "/home/jens/Source/shotwell/src/util/image.vala"
+ right_offset = (gint) ((_tmp74_ - _tmp75_) * _tmp77_);
+#line 2628 "image.c"
+ }
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp79_ = preserve_geom;
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ if (_tmp79_) {
+#line 2634 "image.c"
+ gint _tmp80_ = 0;
+ gint _tmp81_ = 0;
+ gint _tmp82_ = 0;
+ gint _tmp83_ = 0;
+ Box _tmp84_ = {0};
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp80_ = left_offset;
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp81_ = right_offset;
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp82_ = top_offset;
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp83_ = bottom_offset;
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ box_get_offset (src, _tmp80_ + _tmp81_, _tmp82_ + _tmp83_, &_tmp84_);
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp78_ = _tmp84_;
+#line 2652 "image.c"
+ } else {
+ Box _tmp85_ = {0};
+ gint _tmp86_ = 0;
+ gint _tmp87_ = 0;
+ Box _tmp88_ = {0};
+ gint _tmp89_ = 0;
+ gint _tmp90_ = 0;
+ Box _tmp91_ = {0};
+ gint _tmp92_ = 0;
+ gint _tmp93_ = 0;
+ Box _tmp94_ = {0};
+ gint _tmp95_ = 0;
+ gint _tmp96_ = 0;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp85_ = *src;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp86_ = _tmp85_.left;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp87_ = left_offset;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp88_ = *src;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp89_ = _tmp88_.top;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp90_ = top_offset;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp91_ = *src;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp92_ = _tmp91_.right;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp93_ = right_offset;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp94_ = *src;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp95_ = _tmp94_.bottom;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ _tmp96_ = bottom_offset;
+#line 487 "/home/jens/Source/shotwell/src/util/image.vala"
+ box_init (&_tmp78_, _tmp86_ + _tmp87_, _tmp89_ + _tmp90_, _tmp92_ + _tmp93_, _tmp95_ + _tmp96_);
+#line 2692 "image.c"
+ }
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ *result = _tmp78_;
+#line 486 "/home/jens/Source/shotwell/src/util/image.vala"
+ return;
+#line 2698 "image.c"
+}
+
+
+