gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnustep-cvs] r24140 - in /libs/gui/trunk: Headers/AppKit/ Source/


From: Adam Fedor
Subject: Re: [Gnustep-cvs] r24140 - in /libs/gui/trunk: Headers/AppKit/ Source/
Date: Tue, 21 Nov 2006 08:39:47 -0700

There's actually a ChangeLog file in the top level of each library (gui/ChangeLog) where you put your entries (adding them to the SVN commit comments is nice as well). Note also that ChangeLog entries should describe WHAT was changed, not WHY. You should put comments about why things were changed in the actual code so people can find them when they try to change the code again. See here

http://www.gnustep.org/developers/bugs.html

for more details.  Otherwise, thanks for all this work!

On Nov 20, 2006, at 11:36 PM, Mark Tracy wrote:

Author: tracy454
Date: Tue Nov 21 07:36:26 2006
New Revision: 24140

URL: http://svn.gna.org/viewcvs/gnustep?rev=24140&view=rev
Log:
Change Log
Mon. 20-Nov-2006 Mark Tracy <tracy454 at concentric dot net>
Many changes related to bitmap images

1.  NSBitmapImateRep attribute global strings were not defined
Fix: add definitions to externs.h, and declarations to NSBitmapImageRep.h Comment: Two strings defined in Cocoa were commented out: NSImageColorSyncData is proprietary to Apple, and NSImageEXIFData has no support elsewhere in GNUstep. I propose adding GSImageICCProfileData if and when color management
      is added to GNUstep.

2. LZW compression in TIFF was disabled for lack of a test of its availability
    Fix: Implement NSTiffIsCodecConfigured(codec) in tiff.m
Comment: As of libtiff-3.7.0, there is a function call in the API to test availability at runtime. For libtiff-3.6.0 (earlier?) there are macros #defined in tiffconf.h. The implementation check the library version at compile time, and uses one of the two methods. I have not tested the
      second method for lack of an installation of an old libtiff.

3.  -canCompressUsing: relied on a static list of capabilities
Fix: Use the new NSTiffIsCodecConfigured(codec) in NSBitmapImageRep.m Comment: The static list could be wrong, as it was on my system. Also
      eliminate the supports_lzw_compression flag.

4. +getTIFFCompressionTypes:count: relied on a static list of compressors. Fix: Use the new NSTiffIsCodecConfigured(codec) in NSBitmapImageRep.m Comment: Compares GNUstep supported compressors against actual availability. Also change the private instance methods _localFromCompressionType and _compressionTypeFromLocal to private class methods so that they can be used in -initWithTIFFImage:number: and -TIFFRepresentationUsingCompression:factor: and +getTIFFCompressionTypes:count: This is probably a clumsy implementation
      but it works.

5.  -setProperty:toValue: and -valueForProperty: were not implemented
Fix: Add a new instance variable NSMutableDictionary * _properties to NSBitmapImageRep.h and implemented accessors in NSBitmapImageRep.m. Patch -_initFromTIFFImage to set compression type and factor in _properties. Comment: This feature is used to pass options to and from JPEG, PNG, TIFF, and GIF in Cocoa, although the docs are kind of vague. In one case the Cocoa docs said the properties were set when reading a TIFF, but the implementation didn't; I chose to implement the docs. Cocoa does use properties when
      exporting bitmaps, so I implemented that.

6.  Checked and updated NSBitmapImageFileType in NSBitmapImageRep.h
    Fix: confirmed the enumeration values against Cocoa, and added
      NSJPEG2000FileType = 5
Comment: JPEG-2000 is not implemented, just reserved a space for it.

7.  -representationUsingType:properties: was not implemented
    Fix: Implement export of TIFF, JPEG, GIF and PNG in NSBitmapImage.m
Comment: See the change notes for JPEG, GIF, and PNG for more. BMP and JPEG-2000 are not implemented; they just log a message to that effect. As apparently Cocoa does it this way, if you pass nil for properties, it falls back to the internal _properties, and if that is empty, there are some safe defaults.

8. +representationfOfImageRepsInArray:UsingType:properties: was not implemented
    Fix: Partially implement in NSBitmapImageRep.m
    Comment: I just stole the incomplete code from
+TIFFRepresentationOfImageRepsInArray: since I have yet to find an explanation
      of how this really ought to work.

9.  JPEG export didn't handle alpha channel, properties or errors.
    Fix: Add -_JPEGRepresentationWithProperties:errorMessage: to
NSBitmapImageRep+JPEG.h and greatly rework Nicolas Roard's code in NSBitmapImageRep+JPEG.m. Patch -_initBitmapFromJPEG:errorMessage to
      write properties.
    Comment: Major rewrite of Nicolas Roard's JPEG export code.
To do: Support for planar bitmaps and support for colorspaces other than
      RGB(A).

10. PNG export not implemented
    Fix: Add -_PNGRepresentationWithProperties: to
      NSBitmapImageRep+PNG.h and implement NSBitmapImageRep+PNG.m
    Comment: No support yet for planar bitmaps. Only supports
NS*WhiteColorSpace and NS*RGBColorSpace. Does support alpha. Support for reading and writing NSImageGamma is experimental. In keeping with Cocoa, the property NSImageGamma ranges from 0.0 to 1.0; representing the range of minimum supported gamma to maximum supported gamma, in this case 1.0 to 2.5. This is in contrast to GNUstep where by convention the property
      would range from 0.0 to 255.0.
    To do: proper error message support

11. GIF export not implemented
    Fix: Add -_GIFRepresentationWithPropterties:errorMessage: to
      NSBitmapImageRep+GIF.h and implement in NSBitmapImageRep+GIF.m
Comments: Supports only RGB(A) colorspaces, but ignores alpha. Supports planar or interleaved bitmaps. Supports properties NSImageRGBColorTable.

12. -_initBitmapFromGIF:errorMessage: did not support transparency
Fix: Don't ignore control blocks in NSBitmapImageRep+GIF.m; check for
      transparency.
Comment: If a transparent color is found, it adds an alpha channel to the
      bitmap. Also, save the color table in properties.

13. -_initBitmapFromGIF:errorMessage: would show the last image in a
      multi-image GIF file
Fix: Break the parsing loop after the first image in NSBitmapImageRep+GIF.m Comment: Also check for frame duration, and set that property. There is not yet any support for animated GIF. This will require some additional
      infrastructure, and I won't do it unless asked.

Modified:
    libs/gui/trunk/Headers/AppKit/NSBitmapImageRep.h
    libs/gui/trunk/Source/NSBitmapImageRep+GIF.h
    libs/gui/trunk/Source/NSBitmapImageRep+GIF.m
    libs/gui/trunk/Source/NSBitmapImageRep+JPEG.h
    libs/gui/trunk/Source/NSBitmapImageRep+JPEG.m
    libs/gui/trunk/Source/NSBitmapImageRep+PNG.h
    libs/gui/trunk/Source/NSBitmapImageRep+PNG.m
    libs/gui/trunk/Source/NSBitmapImageRep.m
    libs/gui/trunk/Source/externs.m
    libs/gui/trunk/Source/nsimage-tiff.h
    libs/gui/trunk/Source/tiff.m


_______________________________________________
Gnustep-cvs mailing list
address@hidden
https://mail.gna.org/listinfo/gnustep-cvs






reply via email to

[Prev in Thread] Current Thread [Next in Thread]