mirror of
https://github.com/gnustep/libs-back.git
synced 2025-04-22 07:21:02 +00:00
* Source/cairo/CairoGState.m: Add support for image
interpolation setting in context. Patch by Josh Freeman <gnustep_lists@twilightedge.com> git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@38528 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
ec48a487bf
commit
af03e424c8
2 changed files with 22 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2015-05-22 Fred Kiefer <FredKiefer@gmx.de>
|
||||
|
||||
* Source/cairo/CairoGState.m: Add support for image interpolation
|
||||
setting in context.
|
||||
Patch by Josh Freeman <gnustep_lists@twilightedge.com>
|
||||
|
||||
2015-05-22 Fred Kiefer <FredKiefer@gmx.de>
|
||||
|
||||
* Source/gsc/GSGState.m (_fillRect:withPattern:): Add support for
|
||||
|
|
|
@ -101,6 +101,16 @@ static inline CGFloat floatToUserSpace(NSAffineTransform *ctm, double d)
|
|||
return (CGFloat)d;
|
||||
}
|
||||
|
||||
static inline cairo_filter_t cairoFilterFromNSImageInterpolation(NSImageInterpolation interpolation)
|
||||
{
|
||||
switch (interpolation)
|
||||
{
|
||||
case NSImageInterpolationNone: return CAIRO_FILTER_NEAREST;
|
||||
case NSImageInterpolationLow: return CAIRO_FILTER_FAST;
|
||||
case NSImageInterpolationHigh: return CAIRO_FILTER_BEST;
|
||||
default: return CAIRO_FILTER_GOOD;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@implementation CairoGState
|
||||
|
@ -1163,7 +1173,8 @@ _set_op(cairo_t *ct, NSCompositingOperation op)
|
|||
cairo_matrix_init_scale(&source_matrix, 1, -1);
|
||||
cairo_matrix_translate(&source_matrix, 0, -pixelsHigh);
|
||||
cairo_pattern_set_matrix(cpattern, &source_matrix);
|
||||
cairo_pattern_set_filter(cpattern, CAIRO_FILTER_BILINEAR);
|
||||
cairo_pattern_set_filter(cpattern,
|
||||
cairoFilterFromNSImageInterpolation([drawcontext imageInterpolation]));
|
||||
if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 6, 0))
|
||||
{
|
||||
cairo_pattern_set_extend(cpattern, CAIRO_EXTEND_PAD);
|
||||
|
@ -1339,7 +1350,8 @@ _set_op(cairo_t *ct, NSCompositingOperation op)
|
|||
//cairo_matrix_translate(&source_matrix, 0, -[_surface size].height);
|
||||
cairo_matrix_translate(&source_matrix, minx - x + dx, miny - y + dy - ssize.height);
|
||||
cairo_pattern_set_matrix(cpattern, &source_matrix);
|
||||
cairo_pattern_set_filter(cpattern, CAIRO_FILTER_BILINEAR);
|
||||
cairo_pattern_set_filter(cpattern,
|
||||
cairoFilterFromNSImageInterpolation([drawcontext imageInterpolation]));
|
||||
cairo_set_source(_ct, cpattern);
|
||||
cairo_pattern_destroy(cpattern);
|
||||
cairo_rectangle(_ct, x, y, width, height);
|
||||
|
@ -1431,7 +1443,8 @@ doesn't support to use the receiver cairo target as the source. */
|
|||
cairo_matrix_init_scale(&source_matrix, 1, -1);
|
||||
cairo_matrix_translate(&source_matrix, 0, -[source->_surface size].height);
|
||||
cairo_pattern_set_matrix(cpattern, &source_matrix);
|
||||
cairo_pattern_set_filter(cpattern, CAIRO_FILTER_BILINEAR);
|
||||
cairo_pattern_set_filter(cpattern,
|
||||
cairoFilterFromNSImageInterpolation([drawcontext imageInterpolation]));
|
||||
if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 6, 0))
|
||||
{
|
||||
cairo_pattern_set_extend(cpattern, CAIRO_EXTEND_PAD);
|
||||
|
|
Loading…
Reference in a new issue