summaryrefslogtreecommitdiffstats
path: root/src/libs/dimg/README
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/dimg/README')
-rw-r--r--src/libs/dimg/README95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/libs/dimg/README b/src/libs/dimg/README
new file mode 100644
index 00000000..4b13f3fe
--- /dev/null
+++ b/src/libs/dimg/README
@@ -0,0 +1,95 @@
+
+---------------------------------------------------------------------------
+WHAT'S DIMG FRAMEWORK ?
+
+
+Original post from Renchi Raju on digiKam mailing list :
+
+[Digikam-devel] Imaging Library
+Renchi Raju renchi at pooh.tam.uiuc.edu
+Sun Jun 19 23:15:20 CEST 2005
+
+as you all know, we have been using imlib2 library for the 0.7 series. we
+have had a fairly large number of bugreports because of imlib2 (not
+imlib2's fault, but because of tdelibs's handling of ltdl). In addition,
+some imlib2 bugreports I reported to upstream have gone unfixed for long
+time now.
+
+Also, we need to think about 16bit imaging support. this won't come from
+imlib2 and neither from tqt. with qt4 there was hope of 16bit image
+support, but trolltech has made it clear that imaging apps forms only 0.1%
+of their customer base and they are not interested in providing custom
+support for them. so the only solution I see (without depending on
+imagemagick) is to roll our own library.
+
+i have been working on a imaging library for digikam, its called DImg.
+it doesn't aim to be a complete imaging library; it uses TQImage for
+rendering and for loading files which are not supported natively by it.
+some of the working/planned features:
+
+* Native Image Loaders, for some imageformats which are of interest to
+us: JPEG (complete), TIFF (a rudimentary one currently), PNG (planned), PPM
+(planned). for the rest tqt's qimage is used.
+
+* Metadata preservation: when a file is loaded, its metadata like XMP,
+IPTC, EXIF, JFIF are read and held in memory. now when you save back the
+file to the original file or to a different file, the metadata is
+automatically written (How, we have been handling it currently with
+imlib2 is on saving a file: we save the file to a temporary file, reread
+the exif info from the original file and then write to a second temporary
+file.)
+
+* Explicitly Shared Container format (see tqt docs): this is necessary for
+performance reasons.
+
+* 8bit and 16bit support: if the file format is 16 bit, it will load up
+the image in 16bit format (currently only 16bit tiff support) and all
+operations are done in 16 bit format, except when the rendering to screen
+is done, when its converted on the fly to a temporary 8bit image and then
+rendered.
+
+* Basic image manipulation: rotate, flip, color modifications, crop,
+scale (this has been ported from Imlib2 - originally ported by Mosfet, I
+added 16 bit scaling support and support for scaling of only a section of
+the image)
+
+* Rendering to Pixmap: using TQImage/QPixmap. (see above for rendering of
+16bit images).
+
+* Pixel format: the pixel format is different from TQImage/Imlib2 pixel
+format. In TQImage/Imlib2 the pixel data is stored as unsigned ints and to
+access the individual colors you need to use bit-shifting to ensure
+endian correctness. in DImg, the pixel data is stored as unsigned char.
+the color layout is B,G,R,A (blue, green, red, alpha)
+
+for 8bit images: you can access individual color components like this:
+
+uchar* pixels = image.bits();
+for (int i=0; i<image.width()*image.height(); i++)
+{
+ pixel[0] // blue
+ pixel[1] // green
+ pixel[2] // red
+ pixel[3] // alpha
+
+ pixel += 4; // go to next pixel
+}
+
+and for 16bit images:
+
+ushort* pixels = (ushort*)image.bits();
+for (int i=0; i<image.width()*image.height(); i++)
+{
+ pixel[0] // blue
+ pixel[1] // green
+ pixel[2] // red
+ pixel[3] // alpha
+
+ pixel += 4; // go to next pixel
+}
+
+the above is true for both big and little endian platforms. What this also
+means is that the pixel format is different from that of TQImage for big
+endian machines. Functions are provided if you want to get a copy of the
+DImg as a TQImage.
+