• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • kimgio
 

kimgio

rgb.h
00001 // kimgio module for SGI images
00002 //
00003 // Copyright (C) 2004  Melchior FRANZ  <mfranz@kde.org>
00004 //
00005 // This program is free software; you can redistribute it and/or
00006 // modify it under the terms of the Lesser GNU General Public License as
00007 // published by the Free Software Foundation; either version 2 of the
00008 // License, or (at your option) any later version.
00009 
00010 
00011 #ifndef KIMG_RGB_H
00012 #define KIMG_RGB_H
00013 
00014 #include <tqmap.h>
00015 #include <tqptrvector.h>
00016 
00017 
00018 class TQImage;
00019 class TQImageIO;
00020 
00021 extern "C" {
00022 void kimgio_rgb_read(TQImageIO *);
00023 void kimgio_rgb_write(TQImageIO *);
00024 }
00025 
00026 
00027 class RLEData : public TQMemArray<uchar> {
00028 public:
00029     RLEData() {}
00030     RLEData(const uchar *d, uint l, uint o) : m_offset(o) { duplicate(d, l); }
00031     bool operator<(const RLEData&) const;
00032     void write(TQDataStream& s);
00033     void print(TQString) const;             // TODO remove
00034     uint offset() { return m_offset; }
00035 private:
00036     uint            m_offset;
00037 };
00038 
00039 
00040 class RLEMap : public TQMap<RLEData, uint> {
00041 public:
00042     RLEMap() : m_counter(0), m_offset(0) {}
00043     uint insert(const uchar *d, uint l);
00044     TQPtrVector<RLEData> vector();
00045     void setBaseOffset(uint o) { m_offset = o; }
00046 private:
00047     uint            m_counter;
00048     uint            m_offset;
00049 };
00050 
00051 
00052 class SGIImage {
00053 public:
00054     SGIImage(TQImageIO *);
00055     ~SGIImage();
00056 
00057     bool readImage(TQImage&);
00058     bool writeImage(TQImage&);
00059 
00060 private:
00061     enum { NORMAL, DITHERED, SCREEN, COLORMAP };        // colormap
00062     TQImageIO       *m_io;
00063     TQIODevice      *m_dev;
00064     TQDataStream        m_stream;
00065 
00066     TQ_UINT8            m_rle;
00067     TQ_UINT8            m_bpc;
00068     TQ_UINT16       m_dim;
00069     TQ_UINT16       m_xsize;
00070     TQ_UINT16       m_ysize;
00071     TQ_UINT16       m_zsize;
00072     TQ_UINT32       m_pixmin;
00073     TQ_UINT32       m_pixmax;
00074     char            m_imagename[80];
00075     TQ_UINT32       m_colormap;
00076 
00077     TQ_UINT32       *m_starttab;
00078     TQ_UINT32       *m_lengthtab;
00079     TQByteArray     m_data;
00080     TQByteArray::Iterator   m_pos;
00081     RLEMap          m_rlemap;
00082     TQPtrVector<RLEData>    m_rlevector;
00083     uint            m_numrows;
00084 
00085     bool readData(TQImage&);
00086     bool getRow(uchar *dest);
00087 
00088     void writeHeader();
00089     void writeRle();
00090     void writeVerbatim(const TQImage&);
00091     bool scanData(const TQImage&);
00092     uint compact(uchar *, uchar *);
00093     uchar intensity(uchar);
00094 };
00095 
00096 #endif
00097 

kimgio

Skip menu "kimgio"
  • Main Page
  • File List
  • Related Pages

kimgio

Skip menu "kimgio"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for kimgio by doxygen 1.7.6.1
This website is maintained by Timothy Pearson.