Isis 3.0 Object Programmers' Reference
Home
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
JP2Exporter.cpp
1
#include "
JP2Exporter.h
"
2
3
#include "
Buffer.h
"
4
#include "
FileName.h
"
5
#include "
IException.h
"
6
#include "
IString.h
"
7
#include "
JP2Encoder.h
"
8
9
using namespace
Isis;
10
11
12
namespace
Isis {
16
JP2Exporter::JP2Exporter
() :
StreamExporter
() {
17
m_encoder
= NULL;
18
m_buffer
= NULL;
19
20
setExtension
(
"jp2"
);
21
}
22
23
27
JP2Exporter::~JP2Exporter
() {
28
delete
m_encoder
;
29
m_encoder
= NULL;
30
31
delete
[]
m_buffer
;
32
m_buffer
= NULL;
33
}
34
35
40
void
JP2Exporter::createBuffer
() {
41
PixelType
type =
pixelType
();
42
int
mult = (type == Isis::UnsignedByte) ? 1 : 2;
43
44
m_buffer
=
new
char
* [
bands
()];
45
for
(
int
i = 0; i <
bands
(); i++)
46
m_buffer
[i] =
new
char
[
samples
() * mult];
47
}
48
49
57
void
JP2Exporter::write
(
FileName
outputName,
int
quality) {
58
PixelType
type =
pixelType
();
59
m_encoder
=
new
JP2Encoder
(
60
outputName.expanded(),
samples
(),
lines
(),
bands
(), type);
61
m_encoder
->
OpenFile
();
62
63
ImageExporter::write
(outputName, quality);
64
}
65
66
74
void
JP2Exporter::setBuffer
(
int
s,
int
b,
int
dn)
const
{
75
PixelType
type =
pixelType
();
76
switch
(type) {
77
case
UnsignedByte:
78
((
unsigned
char
*)
m_buffer
[b])[s] = (
unsigned
char) dn;
79
break
;
80
case
SignedWord:
81
((
short
int
*)
m_buffer
[b])[s] = (
short
int) dn;
82
break
;
83
case
UnsignedWord:
84
((
short
unsigned
int
*)
m_buffer
[b])[s] = (
short
unsigned
int) dn;
85
break
;
86
default
:
87
throw
IException
(
IException::Programmer
,
88
"Invalid pixel type for data ["
+
toString
(type) +
"]"
,
89
_FILEINFO_
);
90
}
91
}
92
93
99
void
JP2Exporter::writeLine
(
int
l)
const
{
100
PixelType
type =
pixelType
();
101
if
(type == Isis::UnsignedByte)
102
m_encoder
->
Write
((
unsigned
char
**)
m_buffer
);
103
else
104
m_encoder
->
Write
((
short
int
**)
m_buffer
);
105
}
106
107
115
bool
JP2Exporter::canWriteFormat
(QString format) {
116
return
format ==
"jp2"
;
117
}
118
};
119