• Alan Third's avatar
    Add native image rotation and cropping · 610fb73a
    Alan Third authored
    * lisp/image.el (image--get-imagemagick-and-warn): Only fallback to
    ImageMagick if native transforms aren't available.
    * src/dispextern.h (INIT_MATRIX, COPY_MATRIX, MULT_MATRICES): New
    macros for matrix manipulation.
    (HAVE_NATIVE_SCALING, HAVE_NATIVE_TRANSFORMS): Rename and change all
    relevant locations.
    * src/image.c (x_set_image_rotation):
    (x_set_transform): New functions.
    (x_set_image_size): Use transform matrix for resizing under X and NS.
    (x_set_image_crop): New function.
    (lookup_image): Use the new transform functions.
    (Fimage_scaling_p, Fimage_transforms_p): Rename and update all
    callers.
    * src/nsimage.m (ns_load_image): Remove rotation code.
    (ns_image_set_transform): New function.
    ([EmacsImage dealloc]): Release the saved transform.
    ([EmacsImage rotate:]): Remove unneeded method.
    ([EmacsImage setTransform:]): New method.
    * src/nsterm.h (EmacsImage): Add transform property and update method
    definitions.
    * src/nsterm.m (ns_dumpglyphs_image): Use the transform to draw the
    image correctly.
    * src/xterm.c (x_composite_image): Use PictOpSrc as we don't care
    about alpha values here.
    * doc/lispref/display.texi (Image Descriptors): Add :rotation.
    (ImageMagick Images): Remove :rotation.
    610fb73a