diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llimage/llimagejpeg.h |
Print done when done.
Diffstat (limited to 'indra/llimage/llimagejpeg.h')
-rw-r--r-- | indra/llimage/llimagejpeg.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/indra/llimage/llimagejpeg.h b/indra/llimage/llimagejpeg.h new file mode 100644 index 0000000000..5684e3720f --- /dev/null +++ b/indra/llimage/llimagejpeg.h @@ -0,0 +1,63 @@ +/** + * @file llimagejpeg.h + * @brief This class compresses and decompresses JPEG files + * + * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LL_LLIMAGEJPEG_H +#define LL_LLIMAGEJPEG_H + +#include <setjmp.h> + +#include "llimage.h" + +extern "C" { +#include "jpeglib/jinclude.h" +#include "jpeglib/jpeglib.h" +#include "jpeglib/jerror.h" +} + +class LLImageJPEG : public LLImageFormatted +{ +protected: + virtual ~LLImageJPEG(); + +public: + LLImageJPEG(); + + /*virtual*/ BOOL updateData(); + /*virtual*/ BOOL decode(LLImageRaw* raw_image, F32 time=0.0); + /*virtual*/ BOOL encode(const LLImageRaw* raw_image, F32 time=0.0); + + void setEncodeQuality( S32 q ) { mEncodeQuality = q; } // on a scale from 1 to 100 + S32 getEncodeQuality() { return mEncodeQuality; } + + // Callbacks registered with jpeglib + static void encodeInitDestination ( j_compress_ptr cinfo ); + static boolean encodeEmptyOutputBuffer(j_compress_ptr cinfo); + static void encodeTermDestination(j_compress_ptr cinfo); + + static void decodeInitSource(j_decompress_ptr cinfo); + static boolean decodeFillInputBuffer(j_decompress_ptr cinfo); + static void decodeSkipInputData(j_decompress_ptr cinfo, long num_bytes); + static void decodeTermSource(j_decompress_ptr cinfo); + + + static void errorExit(j_common_ptr cinfo); + static void errorEmitMessage(j_common_ptr cinfo, int msg_level); + static void errorOutputMessage(j_common_ptr cinfo); + + static BOOL decompress(LLImageJPEG* imagep); + +protected: + U8* mOutputBuffer; // temp buffer used during encoding + S32 mOutputBufferSize; // bytes in mOuputBuffer + + S32 mEncodeQuality; // on a scale from 1 to 100 + + jmp_buf mSetjmpBuffer; // To allow the library to abort. +}; + +#endif // LL_LLIMAGEJPEG_H |