From 0648489b9a2a40cd0961c6b743d1e8b98cd55899 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Fri, 17 Mar 2017 08:58:17 +0000 Subject: Fix the projective transformation matrix used for Xrender-based scaled image drawing. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12201 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx index a7b2ec560..ed30b2e36 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx @@ -828,7 +828,11 @@ int Fl_Xlib_Graphics_Driver::draw_scaled(Fl_Image *img, int XP, int YP, int WP, const Fl_Region clipr = fl_clip_region(); if (clipr) XRenderSetPictureClipRegion(fl_display, dst, clipr); - XTransform mat = {rgb->w()/float(WP),0,0,0,rgb->h()/float(HP),0,0,0,1}; + XTransform mat = {{ + { XDoubleToFixed( rgb->w()/double(WP) ), XDoubleToFixed( 0 ), XDoubleToFixed( 0 ) }, + { XDoubleToFixed( 0 ), XDoubleToFixed( rgb->h()/double(HP) ), XDoubleToFixed( 0 ) }, + { XDoubleToFixed( 0 ), XDoubleToFixed( 0 ), XDoubleToFixed( 1 ) } + }}; XRenderSetPictureTransform(fl_display, src, &mat); XRenderComposite(fl_display, rgb->d()%2==0 ? PictOpOver: PictOpSrc, src, None, dst, 0, 0, 0, 0, XP, YP, WP, HP); XRenderFreePicture(fl_display, src); -- cgit v1.2.3