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

Reply via email to