Author: fredkiefer
Date: Fri May 22 23:28:20 2015
New Revision: 38528
URL: http://svn.gna.org/viewcvs/gnustep?rev=38528&view=rev
Log:
* Source/cairo/CairoGState.m: Add support for image
interpolation setting in context.
Patch by Josh Freeman <[email protected]>
Modified:
libs/back/trunk/ChangeLog
libs/back/trunk/Source/cairo/CairoGState.m
Modified: libs/back/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/libs/back/trunk/ChangeLog?rev=38528&r1=38527&r2=38528&view=diff
==============================================================================
--- libs/back/trunk/ChangeLog (original)
+++ libs/back/trunk/ChangeLog Fri May 22 23:28:20 2015
@@ -1,3 +1,9 @@
+2015-05-22 Fred Kiefer <[email protected]>
+
+ * Source/cairo/CairoGState.m: Add support for image interpolation
+ setting in context.
+ Patch by Josh Freeman <[email protected]>
+
2015-05-22 Fred Kiefer <[email protected]>
* Source/gsc/GSGState.m (_fillRect:withPattern:): Add support for
Modified: libs/back/trunk/Source/cairo/CairoGState.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/back/trunk/Source/cairo/CairoGState.m?rev=38528&r1=38527&r2=38528&view=diff
==============================================================================
--- libs/back/trunk/Source/cairo/CairoGState.m (original)
+++ libs/back/trunk/Source/cairo/CairoGState.m Fri May 22 23:28:20 2015
@@ -101,6 +101,16 @@
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 @@
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 @@
//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 @@
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);
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs