73
74
NSZoneFree(NSDefaultMallocZone(), _base); \
76
static inline double doubleFromUserSpace(NSAffineTransform *ctm, double d)
77
static inline double doubleFromUserSpace(NSAffineTransform *ctm, CGFloat d)
126
- (NSString*) description
128
NSMutableString *description = [[[super description] mutableCopy] autorelease];
129
[description appendFormat: @" surface: %@",_surface];
130
[description appendFormat: @" context: %p",_ct];
131
return [[description copy] autorelease];
125
134
- (id) copyWithZone: (NSZone *)zone
127
136
CairoGState *copy = (CairoGState *)[super copyWithZone: zone];
677
687
- (void) _setPath
679
unsigned count = [path elementCount];
689
NSInteger count = [path elementCount];
681
691
SEL elmsel = @selector(elementAtIndex:associatedPoints:);
682
IMP elmidx = [path methodForSelector: elmsel];
692
NSBezierPathElement (*elmidx)(id, SEL, NSInteger, NSPoint*) =
693
(NSBezierPathElement (*)(id, SEL, NSInteger, NSPoint*))[path methodForSelector: elmsel];
684
695
// reset current cairo path
685
696
cairo_new_path(_ct);
992
1003
cairo_fill(_ct);
995
- (void) DPSimage: (NSAffineTransform *)matrix : (int)pixelsWide
996
: (int)pixelsHigh : (int)bitsPerSample
997
: (int)samplesPerPixel : (int)bitsPerPixel
998
: (int)bytesPerRow : (BOOL)isPlanar
1006
- (void) DPSimage: (NSAffineTransform *)matrix : (NSInteger)pixelsWide
1007
: (NSInteger)pixelsHigh : (NSInteger)bitsPerSample
1008
: (NSInteger)samplesPerPixel : (NSInteger)bitsPerPixel
1009
: (NSInteger)bytesPerRow : (BOOL)isPlanar
999
1010
: (BOOL)hasAlpha : (NSString *)colorSpaceName
1000
1011
: (const unsigned char *const[5])data
1159
1170
cairo_matrix_init_scale(&source_matrix, 1, -1);
1160
1171
cairo_matrix_translate(&source_matrix, 0, -pixelsHigh);
1161
1172
cairo_pattern_set_matrix(cpattern, &source_matrix);
1173
cairo_pattern_set_filter(cpattern, CAIRO_FILTER_BILINEAR);
1162
1174
if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 6, 0))
1164
1176
cairo_pattern_set_extend(cpattern, CAIRO_EXTEND_PAD);
1188
1200
device_color_t c;
1190
1202
cairo_save(_ct);
1195
// The underlying concept does not allow to determine if alpha is set or not.
1196
cairo_set_source_rgba(_ct, c.field[0], c.field[1], c.field[2], c.field[AINDEX]);
1204
#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 9, 4)
1205
if (GSCompositeHighlight == op)
1207
cairo_set_operator(_ct, CAIRO_OPERATOR_DIFFERENCE);
1208
cairo_set_source_rgb(_ct, 1, 1, 1);
1217
// The underlying concept does not allow to determine if alpha is set or not.
1218
cairo_set_source_rgba(_ct, c.field[0], c.field[1], c.field[2], c.field[AINDEX]);
1197
1221
// This is almost a rectclip::::, but the path stays unchanged.
1198
1222
path = [NSBezierPath bezierPathWithRect: aRect];
1199
1223
[path transformUsingAffineTransform: ctm];
1237
1261
cairo_pattern_t *cpattern;
1238
1262
cairo_matrix_t source_matrix;
1264
NSDebugMLLog(@"CairoGState", @"self: %@\n", self);
1240
1266
if (!_ct || !source->_ct)
1319
1345
//cairo_matrix_translate(&source_matrix, 0, -[_surface size].height);
1320
1346
cairo_matrix_translate(&source_matrix, minx - x + dx, miny - y + dy - ssize.height);
1321
1347
cairo_pattern_set_matrix(cpattern, &source_matrix);
1348
cairo_pattern_set_filter(cpattern, CAIRO_FILTER_BILINEAR);
1322
1349
cairo_set_source(_ct, cpattern);
1323
1350
cairo_pattern_destroy(cpattern);
1324
1351
cairo_rectangle(_ct, x, y, width, height);
1358
1385
cairo_matrix_t local_matrix;
1359
1386
cairo_matrix_t source_matrix;
1388
NSDebugMLLog(@"CairoGState", @"source: %@ fromRect: %@ toPoint: %@\n",
1390
NSStringFromRect(aRect),
1391
NSStringFromPoint(aPoint));
1361
1393
if (!_ct || !source->_ct)
1363
1395
NSLog(@"WARNING: -drawGState called with a NULL target context (%p) or source context (%p)",
1405
1437
cairo_matrix_init_scale(&source_matrix, 1, -1);
1406
1438
cairo_matrix_translate(&source_matrix, 0, -[source->_surface size].height);
1407
1439
cairo_pattern_set_matrix(cpattern, &source_matrix);
1440
cairo_pattern_set_filter(cpattern, CAIRO_FILTER_BILINEAR);
1408
1441
if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 6, 0))
1410
1443
cairo_pattern_set_extend(cpattern, CAIRO_EXTEND_PAD);
1611
NSString *colorSpaceName;
1579
1613
[gradient getColor: &color
1580
1614
location: &location
1582
red = [color redComponent];
1583
green = [color greenComponent];
1584
blue = [color blueComponent];
1585
alpha = [color alphaComponent];
1586
cairo_pattern_add_color_stop_rgba(cpattern, location,
1587
red, green, blue, alpha);
1617
colorSpaceName = [color colorSpaceName];
1618
if([NSCalibratedRGBColorSpace isEqualToString: colorSpaceName] ||
1619
[NSDeviceRGBColorSpace isEqualToString: colorSpaceName])
1621
red = [color redComponent];
1622
green = [color greenComponent];
1623
blue = [color blueComponent];
1624
alpha = [color alphaComponent];
1625
cairo_pattern_add_color_stop_rgba(cpattern, location,
1626
red, green, blue, alpha);
1628
else if([NSCalibratedWhiteColorSpace isEqualToString: colorSpaceName] ||
1629
[NSDeviceWhiteColorSpace isEqualToString: colorSpaceName] ||
1630
[NSCalibratedBlackColorSpace isEqualToString: colorSpaceName] ||
1631
[NSDeviceBlackColorSpace isEqualToString: colorSpaceName])
1633
red = [color whiteComponent];
1634
green = [color whiteComponent];
1635
blue = [color whiteComponent];
1636
alpha = [color alphaComponent];
1637
cairo_pattern_add_color_stop_rgba(cpattern, location,
1638
red, green, blue, alpha);
1642
NSLog(@"Cannot draw gradient for %@",colorSpaceName);
1590
1646
cairo_save(_ct);