Mercurial > dwindows
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 { |