aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llimage/llpngwrapper.h
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:45:00 -0500
committerJacek Antonelli2008-08-15 23:45:00 -0500
commit5a0ae1117906416b8204e0cf1751f129f84bd447 (patch)
tree3f45be01280fcf078b96011db8a75003c3fa7be5 /linden/indra/llimage/llpngwrapper.h
parentSecond Life viewer sources 1.17.1.0 (diff)
downloadmeta-impy-5a0ae1117906416b8204e0cf1751f129f84bd447.zip
meta-impy-5a0ae1117906416b8204e0cf1751f129f84bd447.tar.gz
meta-impy-5a0ae1117906416b8204e0cf1751f129f84bd447.tar.bz2
meta-impy-5a0ae1117906416b8204e0cf1751f129f84bd447.tar.xz
Second Life viewer sources 1.17.2.0
Diffstat (limited to 'linden/indra/llimage/llpngwrapper.h')
-rw-r--r--linden/indra/llimage/llpngwrapper.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/linden/indra/llimage/llpngwrapper.h b/linden/indra/llimage/llpngwrapper.h
new file mode 100644
index 0000000..1b5b97f
--- /dev/null
+++ b/linden/indra/llimage/llpngwrapper.h
@@ -0,0 +1,102 @@
1/*
2 * @file llpngwrapper.h
3 *
4 * Copyright (c) 2007 Peekay Semyorka.
5 * Copyright (c) 2007-2007, Linden Research, Inc.
6 *
7 * Second Life Viewer Source Code
8 * The source code in this file ("Source Code") is provided by Linden Lab
9 * to you under the terms of the GNU General Public License, version 2.0
10 * ("GPL"), unless you have obtained a separate licensing agreement
11 * ("Other License"), formally executed by you and Linden Lab. Terms of
12 * the GPL can be found in doc/GPL-license.txt in this distribution, or
13 * online at http://secondlife.com/developers/opensource/gplv2
14 *
15 * There are special exceptions to the terms and conditions of the GPL as
16 * it is applied to this Source Code. View the full text of the exception
17 * in the file doc/FLOSS-exception.txt in this software distribution, or
18 * online at http://secondlife.com/developers/opensource/flossexception
19 *
20 * By copying, modifying or distributing this software, you acknowledge
21 * that you have read and understood your obligations described above,
22 * and agree to abide by those obligations.
23 *
24 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
25 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
26 * COMPLETENESS OR PERFORMANCE.
27 */
28
29#ifndef LL_LLPNGWRAPPER_H
30#define LL_LLPNGWRAPPER_H
31
32#include "libpng12/png.h"
33#include "llimage.h"
34
35class LLPngWrapper
36{
37public:
38 LLPngWrapper();
39 virtual ~LLPngWrapper();
40
41public:
42 struct ImageInfo
43 {
44 U16 mWidth;
45 U16 mHeight;
46 S8 mComponents;
47 };
48
49 BOOL isValidPng(U8* src);
50 BOOL readPng(U8* src, LLImageRaw* rawImage, ImageInfo *infop = NULL);
51 BOOL writePng(const LLImageRaw* rawImage, U8* dst);
52 U32 getFinalSize();
53 LLString getErrorMessage();
54
55protected:
56 void normalizeImage();
57 void updateMetaData();
58
59private:
60
61 // Structure for writing/reading PNG data to/from memory
62 // as opposed to using a file.
63 struct PngDataInfo
64 {
65 U8 *mData;
66 U32 mOffset;
67 };
68
69 static void writeFlush(png_structp png_ptr);
70 static void errorHandler(png_structp png_ptr, png_const_charp msg);
71 static void readDataCallback(png_structp png_ptr, png_bytep dest, png_size_t length);
72 static void writeDataCallback(png_structp png_ptr, png_bytep src, png_size_t length);
73
74 void releaseResources();
75
76 png_structp mReadPngPtr;
77 png_infop mReadInfoPtr;
78 png_structp mWritePngPtr;
79 png_infop mWriteInfoPtr;
80
81 U8 **mRowPointers;
82
83 png_uint_32 mWidth;
84 png_uint_32 mHeight;
85 S32 mBitDepth;
86 S32 mColorType;
87 S32 mChannels;
88 S32 mInterlaceType;
89 S32 mCompressionType;
90 S32 mFilterMethod;
91
92 U32 mFinalSize;
93
94 BOOL mHasBKGD;
95 png_color_16p mBackgroundColor;
96
97 F64 mGamma;
98
99 LLString mErrorMessage;
100};
101
102#endif