summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-11-25 20:39:34 +0000
committerAshod Nakashian <ashod.nakashian@collabora.co.uk>2016-07-12 22:06:29 -0400
commitd9861ae80e005dda2837611e840f8d63b0f00e21 (patch)
tree0ca69b12444b19c0b3340aed893fbe22a2b53d2e /vcl
parent4113f2c083873d606d90e687c57d9270ea7fb3bb (diff)
gtk3: use cairo to do drawAlphaBitmap with scaling
now we're beautiful Change-Id: If688a89c3a65b7f9bb01890f8ddc81fc6cc8c2b8 (cherry picked from commit db884459a0e250122f8bbcc906107ce424f1e955)
Diffstat (limited to 'vcl')
-rw-r--r--vcl/headless/svpgdi.cxx14
1 files changed, 5 insertions, 9 deletions
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index dcac77ade9d7..d1fc52b03571 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -158,12 +158,6 @@ bool SvpSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, const SalBitmap& rS
return false;
}
- if (rTR.mnSrcWidth != rTR.mnDestWidth || rTR.mnSrcHeight != rTR.mnDestHeight)
- {
- SAL_WARN("vcl.gdi", "unsupported SvpSalGraphics::drawAlphaBitmap scale case");
- return false;
- }
-
cairo_surface_t* source = nullptr;
const SvpSalBitmap& rSrc = static_cast<const SvpSalBitmap&>(rSourceBitmap);
@@ -261,13 +255,15 @@ bool SvpSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, const SalBitmap& rS
cairo_rectangle(cr, rTR.mnDestX, rTR.mnDestY, rTR.mnDestWidth, rTR.mnDestHeight);
- cairo_set_source_surface(cr, source, rTR.mnDestX - rTR.mnSrcX, rTR.mnDestY - rTR.mnSrcY);
-
if (xDamageTracker)
extents = getFillDamage(cr);
cairo_clip(cr);
- cairo_mask_surface(cr, mask, rTR.mnDestX - rTR.mnSrcX, rTR.mnDestY - rTR.mnSrcY);
+
+ cairo_translate(cr, rTR.mnDestX, rTR.mnDestY);
+ cairo_scale(cr, (double)(rTR.mnDestWidth)/rTR.mnSrcWidth, ((double)rTR.mnDestHeight)/rTR.mnSrcHeight);
+ cairo_set_source_surface(cr, source, -rTR.mnSrcX, -rTR.mnSrcY);
+ cairo_mask_surface(cr, mask, -rTR.mnSrcX, -rTR.mnSrcY);
cairo_surface_flush(cairo_get_target(cr));
cairo_surface_destroy(mask);