Commit graph

159 commits

Author SHA1 Message Date
ericwa
0ef27026f5 * Source/NSImage.m (_cacheForRep:): Don't assume rep is non-nil. This should fix
locking focus on an image with no representations.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33827 72102866-910b-0410-8b05-ffd578937521
2011-09-09 19:49:08 +00:00
gcasa
ce9ccdea4f Correction for compilation error. NSSizesEqual should have been NSEqualSizes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33820 72102866-910b-0410-8b05-ffd578937521
2011-09-08 20:13:42 +00:00
ericwa
ae291881d9 * Source/NSImage.m: Throw an exception if you attempt to lock focus on an image with
size (0, 0)
* Source/NSCachedImageRep.m: Throw an exception if you attempt to create a cached
image rep with a size of (0, 0).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33819 72102866-910b-0410-8b05-ffd578937521
2011-09-08 18:42:31 +00:00
fredkiefer
c7329d89dc Correct last commit to use && instead of ||.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33788 72102866-910b-0410-8b05-ffd578937521
2011-08-26 07:35:41 +00:00
rmottola
b1b1d1522f check that the array of reps is populated, not just non-nil
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33786 72102866-910b-0410-8b05-ffd578937521
2011-08-25 15:20:45 +00:00
ericwa
4f8b7abade * Source/NSImage.m (-setSize:): Don't invalidate the cache anymore,
because we now cache the entire representation and not the rep scaled
to the image's size.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33770 72102866-910b-0410-8b05-ffd578937521
2011-08-20 18:37:52 +00:00
ericwa
769a504f37 * Source/NSImage.m: Reinstate use of the cached image rep, but only
on backends supporting GSdraw: (cairo).  This means we don't have to
create a window for every call to draw an image, and gives me a 5-10x
speedup for image drawing.
* Source/NSCachedImageRep.m: Implement private method
-nativeDrawInRect:.. which is called by NSImageRep's
-drawInRect:fromRect:..., and efficiently draw the cached rep
using GSdraw:. Also make some changes so cached image reps can have a
DPI != 72.
* Headers/AppKit/NSCachedImageRep.h: New private init method that lets
you specify diferent pixel size and point size.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33765 72102866-910b-0410-8b05-ffd578937521
2011-08-19 19:06:41 +00:00
ericwa
f3a9150d7c * Headers/AppKit/NSImageRep.h: Add
-drawInRect:fromRect:operation:fraction:respectFlipped:hints: method
* Source/NSImage.m:
* Source/NSImageRep.m: Refactor drawing code from NSImage to NSImageRep.
This should cause no functionlity change, but it lets NSImageRep
subclasses implement more efficient versions of -drawInRect:fromRect:...
that don't involve the (expensive) drawing of the image in a temporary
offscreen window and then drawing from there on to the destination surface.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33764 72102866-910b-0410-8b05-ffd578937521
2011-08-18 23:57:50 +00:00
ericwa
8d20ff6316 * Source/NSImage.m (GSResolutionOfImageRep): Specify behaviour when the
rep has a size of zero, or is a vector rep. Prevent division by 0.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33742 72102866-910b-0410-8b05-ffd578937521
2011-08-15 20:19:21 +00:00
ericwa
8bc31a2ed9 * Source/NSImage.m (-nativeDrawInRect:...): Deal with a zero rep size
* Source/NSCustomImageRep.m:
- Don't retain the delegate (matching OS X)
- Remove unnecessary flip checks from -drawAtPoint: and -drawInRect:
  to match the code in NSImageRep
- Fix a mistake when setting the ctm scale factor


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33741 72102866-910b-0410-8b05-ffd578937521
2011-08-15 20:11:11 +00:00
ericwa
fe973031d4 * Source/NSImage.m: Implement
-[NSImage drawInRect:fromRect:operation:fraction:respectFlipped:hints:


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33571 72102866-910b-0410-8b05-ffd578937521
2011-07-16 02:09:06 +00:00
ericwa
258333d209 * Source/NSImage.m (-nativeDrawInRect:...): Fix two bugs
demonstrated in GSTest:
- drawing an image in a flipped view with -drawInRect:... wasn't
  working, and
- drawing a vector rep in a dest rect larger than the point
  size of the rep was resulting in blurry output.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33570 72102866-910b-0410-8b05-ffd578937521
2011-07-16 01:23:40 +00:00
fredkiefer
5c93b41e6d Replace direct use of the isa pointer with a call to object_getClass()
to make David happy.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33545 72102866-910b-0410-8b05-ffd578937521
2011-07-14 07:17:24 +00:00
fredkiefer
f859a92508 * Source/NSImage.m (-nativeDrawInRect:...): Compute the rep size
after the nil test.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33513 72102866-910b-0410-8b05-ffd578937521
2011-07-11 09:41:47 +00:00
ericwa
ad79d99943 * Source/NSImage.m: Use -bestRepresentationForRect:context:hints: in
-guiDrawInRect:... as well.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33308 72102866-910b-0410-8b05-ffd578937521
2011-06-15 02:04:33 +00:00
ericwa
5da6d52508 * Source/NSImage.m: Implement -bestRepresentationForRect:context:hints:,
which chooses the smallest rep larger than or equal to the provided size.

Modify -nativeDrawInRect:... to use the above method for choosing a rep.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33304 72102866-910b-0410-8b05-ffd578937521
2011-06-14 19:00:23 +00:00
ericwa
f77fd386f4 * Source/NSImage.m (-guiDrawInRect:...): Handle dstRect with a zero size
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33303 72102866-910b-0410-8b05-ffd578937521
2011-06-14 18:31:35 +00:00
ericwa
b31f48569c * Source/NSImage.m: Remove unnecessary DPSgsave/DPSgrestore I added
earlier in -nativeDrawInRect:... and replace them with saving/restoring
the transformation matrix. The DPSgsave/DPSgrestore were causing problems
when drawing images with a non-rectangular clipping area.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33300 72102866-910b-0410-8b05-ffd578937521
2011-06-14 16:27:38 +00:00
ericwa
38d3783263 * Source/NSImage.m: Tidy the -composite*/-dissolve* methods
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33299 72102866-910b-0410-8b05-ffd578937521
2011-06-14 06:08:40 +00:00
ericwa
4090cafa25 * Source/NSImage.m: Completely overhaul the best rep selection.
It should now be very close to the algorithm described in the cocoa
drawing guide, and fixes numerous bugs with the old code.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33295 72102866-910b-0410-8b05-ffd578937521
2011-06-13 22:32:28 +00:00
wlux
f10f10e1ca Improve implementation of NSImage -bestRepresentationForDevice: for
images with multiple representations and fix a related bug.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33211 72102866-910b-0410-8b05-ffd578937521
2011-05-31 07:35:57 +00:00
ericwa
b1cca9952a * Source/NSImage.m (-nativeDrawInRect:...): Fix drawing images
with a source rect smaller than the entire image. This was a mistake
left by my last commit to this method.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33135 72102866-910b-0410-8b05-ffd578937521
2011-05-26 20:50:50 +00:00
ericwa
99bd5d4243 * Source/NSScreen.m: Use -userSpaceScaleFactor to calculate
NSDeviceResolution
* Source/NSImage.m: Implement -_bestRep:withResolutionMatch:
* Images/common_Dimple.tiff:
* Images/common_3DArrowRight.tiff: Add to these images
a second 'page' at 4x the original resolution which I drew.

If you use GSScaleFactor > 1 then the high resolution version
of these images should be used.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@32975 72102866-910b-0410-8b05-ffd578937521
2011-05-04 01:33:21 +00:00
ericwa
a0317c6ad6 * Source/NSImage.m (-nativeDrawInRect:...): Fix a bug in my recent change
here which mis-positioned images.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@32921 72102866-910b-0410-8b05-ffd578937521
2011-04-21 23:21:44 +00:00
ericwa
b145e686b0 * Source/NSImage.m (-nativeDrawInRect:...): Make the cache window
large enough so that detail is preserved when drawing using a scale factor
larger than 1. This change should only improve output quality but not
affect image drawing otherwise.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@32917 72102866-910b-0410-8b05-ffd578937521
2011-04-21 05:46:06 +00:00
ericwa
544d0d8058 * Source/NSImage.m (-compositeToPoint:fromRect:operation:fraction:):
New simple implementation which calls
-drawAtPoint:fromRect:operation:fraction:.
Also respects the user space scale factor.
* Source/NSImage.m (-guiDrawInRect:fromRect:operation:fraction):
Remove a special case which called -compositeToPoint:..., which would
cause an infinite loop when combined with the above change.

Also avoid using -drawRepresentation:inRect: because -drawInRect:...
is supposed to fill the destination rect regardless of the setting
of -scalesWhenResized. This is a change borrowed from
-nativeDrawInRect:...


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@32895 72102866-910b-0410-8b05-ffd578937521
2011-04-18 23:12:28 +00:00
fredkiefer
895bea4b23 Small changes found by static analyser.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@32434 72102866-910b-0410-8b05-ffd578937521
2011-03-02 21:30:18 +00:00
fredkiefer
475f2d07aa Remove dead assignments found by static code analysis.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@32022 72102866-910b-0410-8b05-ffd578937521
2011-02-09 22:20:00 +00:00
fredkiefer
30240921b4 First batch of corrections based on David's static analysis.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@31337 72102866-910b-0410-8b05-ffd578937521
2010-09-12 16:34:22 +00:00
gcasa
42bbcde0a9 * Source/GSTheme.m: remove forward declaration for _setArchiveByName
from NSImage category.
	* Source/NSImage.m: Added code in _setImage:forName: to archive
	by name instead.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@31075 72102866-910b-0410-8b05-ffd578937521
2010-08-03 21:11:00 +00:00
gcasa
7c984daa0b 2010-07-22 19:35-EDT Gregory John Casamento <greg.casamento@gmail.com>
* Source/GSTheme.m: Call method _setArchiveByName: with YES so that
	images loaded by a theme will not be persisted as image data, but
	rather as references.  This will avoid an issue with saving theme
	images when saving files in Gorm while a theme is loaded.
	* Source/NSImage.m: Added method _setArchiveByName:.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@31021 72102866-910b-0410-8b05-ffd578937521
2010-07-22 23:27:36 +00:00
qmathe
0eee79f7b5 Fixed many drawing issues (many ones being related to the flipping).
See bug report #27782

In particular, fixed -[NSImage drawXXX] and -[NSImage composite/dissolveXXX] 
methods to work exactly as Cocoa when the Cairo backend is used.
Added a new draw operator (in addition to composite) to the backend. Cairo is 
the only backend that implements it for now.
Eliminated as many flipping checks as possible.

Warning: Untested with the winlib backend. 
You must update, recompile and install both Back and Gui.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@30523 72102866-910b-0410-8b05-ffd578937521
2010-06-01 11:04:36 +00:00
rfm
68a1850fd5 Attempt fix for Riccardos's latest issue.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@30328 72102866-910b-0410-8b05-ffd578937521
2010-05-09 06:55:33 +00:00
fredkiefer
cec34abb20 Remove compiler warnings from clang.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@30117 72102866-910b-0410-8b05-ffd578937521
2010-04-10 17:48:46 +00:00
rmottola
7268a24443 make extension checking case insensitive
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@29310 72102866-910b-0410-8b05-ffd578937521
2010-01-17 23:37:11 +00:00
espectador
fd57feed5b Fixed bug #28580
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@29292 72102866-910b-0410-8b05-ffd578937521
2010-01-16 05:22:02 +00:00
fredkiefer
81a8907f45 Fix small bug in last commit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28996 72102866-910b-0410-8b05-ffd578937521
2009-11-13 07:51:58 +00:00
rfm
c5a5827272 fix copy/dealloc of named images
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28993 72102866-910b-0410-8b05-ffd578937521
2009-11-12 12:44:40 +00:00
fredkiefer
6197db8247 Switch to the new shared composite and dissolve drawing code.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28933 72102866-910b-0410-8b05-ffd578937521
2009-11-01 22:43:20 +00:00
fredkiefer
b3aacde1c3 Remove usage of NSDeallocateObject
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28789 72102866-910b-0410-8b05-ffd578937521
2009-10-10 14:10:52 +00:00
rfm
c560ba5eb2 Fix bug setting name of an image which already has a name. Added thread safety
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28743 72102866-910b-0410-8b05-ffd578937521
2009-09-27 08:54:03 +00:00
rfm
726ab25f1e revert last change and do proper fix.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28652 72102866-910b-0410-8b05-ffd578937521
2009-09-10 11:02:17 +00:00
rfm
e91677691b Fix error returning named images
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28566 72102866-910b-0410-8b05-ffd578937521
2009-08-28 13:04:15 +00:00
rfm
81659ffe9f cast to fix warning
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28560 72102866-910b-0410-8b05-ffd578937521
2009-08-28 05:02:24 +00:00
rfm
e1cdeb9825 theme system image fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28554 72102866-910b-0410-8b05-ffd578937521
2009-08-27 06:03:16 +00:00
rfm
365fab266c Reorganize location of theme proxy code. Add some more comments too.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@27831 72102866-910b-0410-8b05-ffd578937521
2009-02-10 14:32:08 +00:00
rfm
63df2fd582 add missing header line
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@27813 72102866-910b-0410-8b05-ffd578937521
2009-02-08 13:37:02 +00:00
rfm
d2e84c6da0 Use proxies for named images so that changes to images are nstantly reflected
when you change themes.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@27810 72102866-910b-0410-8b05-ffd578937521
2009-02-08 11:02:57 +00:00
wlux
6e29b26d1c Fix invalid return statements between NS_DURING and NS_HANDLER in
Source/NSImage.m.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@27643 72102866-910b-0410-8b05-ffd578937521
2009-01-20 20:18:22 +00:00
fredkiefer
2d61169c80 Draw the background colour even when it is the clear colour.
(Fixes issue on xlib backend)


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@27302 72102866-910b-0410-8b05-ffd578937521
2008-12-16 08:00:29 +00:00