comparison mac/dw.m @ 1779:f77b76c86d19

Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher... So test for methods and keep using compositeToPoint on 10.5 and use drawInRect on 10.6+.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 19 Jul 2012 06:01:30 +0000
parents e71ab68198ce
children d056a50196a9
comparison
equal deleted inserted replaced
1778:e71ab68198ce 1779:f77b76c86d19
1594 { 1594 {
1595 if(image != nil) 1595 if(image != nil)
1596 { 1596 {
1597 NSSize imageSize; 1597 NSSize imageSize;
1598 NSRect imageFrame; 1598 NSRect imageFrame;
1599 SEL sdir = NSSelectorFromString(@"drawInRect:fromRect:operation:fraction:respectFlipped:hints:");
1599 1600
1600 imageSize = [image size]; 1601 imageSize = [image size];
1601 NSDivideRect(cellFrame, &imageFrame, &cellFrame, 3 + imageSize.width, NSMinXEdge); 1602 NSDivideRect(cellFrame, &imageFrame, &cellFrame, 3 + imageSize.width, NSMinXEdge);
1602 if ([self drawsBackground]) 1603 if ([self drawsBackground])
1603 { 1604 {
1604 [[self backgroundColor] set]; 1605 [[self backgroundColor] set];
1605 NSRectFill(imageFrame); 1606 NSRectFill(imageFrame);
1606 } 1607 }
1607 imageFrame.origin.x += 3; 1608 imageFrame.origin.x += 3;
1608 imageFrame.size = imageSize; 1609 imageFrame.size = imageSize;
1609 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
1610 1610
1611 [image drawInRect:imageFrame fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil]; 1611 /* New method for 10.6 and later */
1612 if([image respondsToSelector:sdir])
1613 {
1614 IMP idir = [image methodForSelector:sdir];
1615
1616 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
1617
1618 idir(image, sdir, imageFrame, NSZeroRect, NSCompositeSourceOver, 1.0, YES, nil);
1619 }
1620 else
1621 {
1622 /* Old method for 10.5 */
1623 SEL sctp = NSSelectorFromString(@"compositeToPoint:operation:");
1624
1625 if ([controlView isFlipped])
1626 imageFrame.origin.y += ceil((cellFrame.size.height + imageFrame.size.height) / 2);
1627 else
1628 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
1629
1630 if([image respondsToSelector:sctp])
1631 {
1632 IMP ictp = [image methodForSelector:sctp];
1633
1634 ictp(image, sctp, imageFrame.origin, NSCompositeSourceOver);
1635 }
1636 }
1612 } 1637 }
1613 [super drawWithFrame:cellFrame inView:controlView]; 1638 [super drawWithFrame:cellFrame inView:controlView];
1614 } 1639 }
1615 -(NSSize)cellSize 1640 -(NSSize)cellSize
1616 { 1641 {