| libpgf 7.21.2 PGF - Progressive Graphics File

Subband.h
Go to the documentation of this file.
1 /*
2 * The Progressive Graphics File; http://www.libpgf.org
3 *
4 * $Date: 2006-06-04 22:05:59 +0200 (So, 04 Jun 2006) $
5 * $Revision: 229 $
6 *
7 * This file Copyright (C) 2006 xeraina GmbH, Switzerland
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE
11 * as published by the Free Software Foundation; either version 2.1
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 */
23
28
29 #ifndef PGF_SUBBAND_H
30 #define PGF_SUBBAND_H
31
32 #include "PGFtypes.h"
33
34 class CEncoder;
35 class CDecoder;
36 class CRoiIndices;
37
42 class CSubband {
43 friend class CWaveletTransform;
44 friend class CRoiIndices;
45
46 public:
49 CSubband();
50
53 ~CSubband();
54
58 bool AllocMemory();
59
62 void FreeMemory();
63
72 void ExtractTile(CEncoder& encoder, bool tile = false, UINT32 tileX = 0, UINT32 tileY = 0);
73
82 void PlaceTile(CDecoder& decoder, int quantParam, bool tile = false, UINT32 tileX = 0, UINT32 tileY = 0);
83
89 void Quantize(int quantParam);
90
96 void Dequantize(int quantParam);
97
102 void SetData(UINT32 pos, DataT v) { ASSERT(pos < m_size); m_data[pos] = v; }
103
107 DataT* GetBuffer() { return m_data; }
108
113 DataT GetData(UINT32 pos) const { ASSERT(pos < m_size); return m_data[pos]; }
114
118 int GetLevel() const { return m_level; }
119
123 int GetHeight() const { return m_height; }
124
128 int GetWidth() const { return m_width; }
129
135 Orientation GetOrientation() const { return m_orientation; }
136
137 #ifdef __PGFROISUPPORT__
138 void IncBuffRow(UINT32 pos) { m_dataPos = pos + BufferWidth(); }
142
143 #endif
144
145 private:
146 void Initialize(UINT32 width, UINT32 height, int level, Orientation orient);
147 void WriteBuffer(DataT val) { ASSERT(m_dataPos < m_size); m_data[m_dataPos++] = val; }
148 void SetBuffer(DataT* b) { ASSERT(b); m_data = b; }
149 DataT ReadBuffer() { ASSERT(m_dataPos < m_size); return m_data[m_dataPos++]; }
150
151 UINT32 GetBuffPos() const { return m_dataPos; }
152
153 #ifdef __PGFROISUPPORT__
154 UINT32 BufferWidth() const { return m_ROI.Width(); }
155 void TilePosition(UINT32 tileX, UINT32 tileY, UINT32& left, UINT32& top, UINT32& w, UINT32& h) const;
156 void TileIndex(bool topLeft, UINT32 xPos, UINT32 yPos, UINT32& tileX, UINT32& tileY, UINT32& x, UINT32& y) const;
157 const PGFRect& GetAlignedROI() const { return m_ROI; }
158 void SetNTiles(UINT32 nTiles) { m_nTiles = nTiles; }
159 void SetAlignedROI(const PGFRect& roi);
160 void InitBuffPos(UINT32 left = 0, UINT32 top = 0) { m_dataPos = top*BufferWidth() + left; ASSERT(m_dataPos < m_size); }
161 #else
162 void InitBuffPos() { m_dataPos = 0; }
163 #endif
164
165 private:
166 UINT32 m_width;
167 UINT32 m_height;
168 UINT32 m_size;
169 int m_level;
170 Orientation m_orientation;
171 UINT32 m_dataPos;
172 DataT* m_data;
173
174 #ifdef __PGFROISUPPORT__
175 PGFRect m_ROI;
176 UINT32 m_nTiles;
177 #endif
178 };
179
180 #endif //PGF_SUBBAND_H
CSubband::m_data
DataT * m_data
buffer
Definition: Subband.h:172
CSubband::Dequantize
void Dequantize(int quantParam)
Definition: Subband.cpp:154
CSubband::GetOrientation
Orientation GetOrientation() const
Definition: Subband.h:135
CSubband::GetBuffer
DataT * GetBuffer()
Definition: Subband.h:107
CSubband::m_width
UINT32 m_width
width in pixels
Definition: Subband.h:166
CSubband::GetData
DataT GetData(UINT32 pos) const
Definition: Subband.h:113
CSubband::ExtractTile
void ExtractTile(CEncoder &encoder, bool tile=false, UINT32 tileX=0, UINT32 tileY=0)
Definition: Subband.cpp:177
DataT
INT32 DataT
Definition: PGFtypes.h:268
CSubband::SetBuffer
void SetBuffer(DataT *b)
Definition: Subband.h:148
CSubband::m_height
UINT32 m_height
height in pixels
Definition: Subband.h:167
CSubband::~CSubband
~CSubband()
Destructor.
Definition: Subband.cpp:51
CSubband::AllocMemory
bool AllocMemory()
Definition: Subband.cpp:77
CSubband::Initialize
void Initialize(UINT32 width, UINT32 height, int level, Orientation orient)
Definition: Subband.cpp:57
CSubband::GetLevel
int GetLevel() const
Definition: Subband.h:118
CSubband::GetBuffPos
UINT32 GetBuffPos() const
Definition: Subband.h:151
CSubband::CSubband
CSubband()
Standard constructor.
Definition: Subband.cpp:35
Orientation
Orientation
Definition: PGFtypes.h:99
CSubband
Wavelet channel class.
Definition: Subband.h:42
CWaveletTransform
PGF wavelet transform.
Definition: WaveletTransform.h:55
CSubband::InitBuffPos
void InitBuffPos()
Definition: Subband.h:162
CSubband::GetHeight
int GetHeight() const
Definition: Subband.h:123
CSubband::ReadBuffer
DataT ReadBuffer()
Definition: Subband.h:149
CSubband::PlaceTile
void PlaceTile(CDecoder &decoder, int quantParam, bool tile=false, UINT32 tileX=0, UINT32 tileY=0)
Definition: Subband.cpp:203
CDecoder
PGF decoder.
Definition: Decoder.h:46
CSubband::m_size
UINT32 m_size
size of data buffer m_data
Definition: Subband.h:168
CSubband::FreeMemory
void FreeMemory()
Delete the memory buffer of this subband.
Definition: Subband.cpp:101
CSubband::Quantize
void Quantize(int quantParam)
Definition: Subband.cpp:112
PGFtypes.h
PGF definitions.
CSubband::CRoiIndices
friend class CRoiIndices
Definition: Subband.h:44
CSubband::WriteBuffer
void WriteBuffer(DataT val)
Definition: Subband.h:147
CSubband::m_level
int m_level
recursion level
Definition: Subband.h:169
PGFRect
Rectangle.
Definition: PGFtypes.h:224
CSubband::m_dataPos
UINT32 m_dataPos
current position in m_data
Definition: Subband.h:171
CSubband::GetWidth
int GetWidth() const
Definition: Subband.h:128
CSubband::SetData
void SetData(UINT32 pos, DataT v)
Definition: Subband.h:102
CSubband::m_orientation
Orientation m_orientation
0=LL, 1=HL, 2=LH, 3=HH L=lowpass filtered, H=highpass filterd
Definition: Subband.h:170
CEncoder
PGF encoder.
Definition: Encoder.h:46