Fawkes API
Fawkes Development Version
writer.cpp
1
2
/***************************************************************************
3
* writer.cpp - Writer interface
4
*
5
* Generated: Tue Mar 27 17:24:55 2007
6
* Copyright 2005-2007 Tim Niemueller [www.niemueller.de]
7
*
8
****************************************************************************/
9
10
/* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* (at your option) any later version. A runtime exception applies to
14
* this software (see LICENSE.GPL_WRE file mentioned below for details).
15
*
16
* This program is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* GNU Library General Public License for more details.
20
*
21
* Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22
*/
23
24
#include <core/exception.h>
25
#include <core/exceptions/system.h>
26
#include <fvutils/writers/writer.h>
27
28
#include <cstdio>
29
#include <cstdlib>
30
#include <cstring>
31
32
namespace
firevision {
33
34
/** @class Writer <fvutils/writers/writer.h>
35
* Interface to write images.
36
* The writer interface defines the general API for image writers. These
37
* writers are used to write images to files on your harddrive (like JPEGs,
38
* PNGs etc.).
39
*
40
* @author Tim Niemueller
41
*/
42
43
/** @fn void Writer::write()
44
* Write to file.
45
*/
46
47
/** @var Writer::filename
48
* The complete filename.
49
*/
50
51
/** @var Writer::basename
52
* The basename of the file.
53
*/
54
/** @var Writer::extension
55
* The extension of the file.
56
*/
57
/** @var Writer::width
58
* The width of the image.
59
*/
60
/** @var Writer::height
61
* The height of the image.
62
*/
63
/** @var Writer::cspace
64
* The colorspace of the image.
65
*/
66
/** @var Writer::buffer
67
* The image-buffer.
68
*/
69
70
/** Constructor.
71
* @param extension the file extension
72
*/
73
Writer::Writer
(
const
char
*extension)
74
{
75
basename
= 0;
76
filename
= 0;
77
78
this->extension = 0;
79
if
(0 !=
extension
) {
80
this->extension = strdup(
extension
);
81
}
82
83
width
= 0;
84
height
= 0;
85
cspace
= CS_UNKNOWN;
86
buffer
= 0;
87
}
88
89
/** Virtual empty destructor. */
90
Writer::~Writer
()
91
{
92
free(
filename
);
93
free(
basename
);
94
free(
extension
);
95
}
96
97
/** Set filename.
98
* @param filename name of file to write to. This can either be the complete filename
99
* (including) extension or the basename only in which case the extension is added.
100
*/
101
void
102
Writer::set_filename
(
const
char
*filename)
103
{
104
free(this->filename);
105
106
if
(0 != strstr(
filename
,
"."
)) {
107
this->filename = strdup(
filename
);
108
}
else
{
109
free(this->
basename
);
110
this->
basename
= strdup(
filename
);
111
112
// re-generate complete filename
113
if
(0 ==
extension
) {
114
throw
fawkes::Exception
(
"Extension not set"
);
115
}
116
117
if
(asprintf(&(this->filename),
"%s.%s"
,
basename
,
extension
) == -1) {
118
throw
fawkes::OutOfMemoryException
(
"Writer::set_filename(): asprintf() failed"
);
119
}
120
}
121
}
122
123
/** Set dimensions of image in pixels.
124
* @param width width of image in pixels
125
* @param height height of image in pixels.
126
*/
127
void
128
Writer::set_dimensions
(
unsigned
int
width,
unsigned
int
height)
129
{
130
this->width =
width
;
131
this->height =
height
;
132
}
133
134
/** Set image buffer.
135
* @param cspace color space of image
136
* @param buffer buffer of image
137
*/
138
void
139
Writer::set_buffer
(colorspace_t cspace,
unsigned
char
*buffer)
140
{
141
this->cspace =
cspace
;
142
this->buffer =
buffer
;
143
}
144
145
/** Set the filename extension for file written by this writer.
146
* @param extension the extension
147
*/
148
void
149
Writer::set_extension
(
const
char
*extension)
150
{
151
free(this->extension);
152
this->extension = strdup(
extension
);
153
154
// re-generate complete filename
155
free(this->filename);
156
this->filename = (
char
*)malloc(strlen(
basename
) + strlen(
extension
) + 1);
157
strcpy(
filename
,
basename
);
158
strcat(this->filename,
"."
);
159
strcat(
filename
,
extension
);
160
}
161
162
}
// end namespace firevision
firevision::Writer::buffer
unsigned char * buffer
Definition:
writer.h:66
firevision::Writer::set_filename
virtual void set_filename(const char *filename)
Set filename.
Definition:
writer.cpp:108
firevision::Writer::extension
char * extension
Definition:
writer.h:59
firevision::Writer::basename
char * basename
Definition:
writer.h:58
firevision::Writer::set_dimensions
virtual void set_dimensions(unsigned int width, unsigned int height)
Set dimensions of image in pixels.
Definition:
writer.cpp:134
firevision::Writer::cspace
colorspace_t cspace
Definition:
writer.h:64
firevision::Writer::set_buffer
virtual void set_buffer(colorspace_t cspace, unsigned char *buffer)
Set image buffer.
Definition:
writer.cpp:145
firevision::Writer::set_extension
virtual void set_extension(const char *extension)
Set the filename extension for file written by this writer.
Definition:
writer.cpp:155
firevision::Writer::~Writer
virtual ~Writer()
Virtual empty destructor.
Definition:
writer.cpp:96
firevision::Writer::filename
char * filename
Definition:
writer.h:57
fawkes::OutOfMemoryException
Definition:
system.h:37
firevision::Writer::Writer
Writer(const char *extension=0)
Constructor.
Definition:
writer.cpp:79
firevision::Writer::height
unsigned int height
Definition:
writer.h:62
firevision::Writer::width
unsigned int width
Definition:
writer.h:61
fawkes::Exception
Definition:
exception.h:41
src
libs
fvutils
writers
writer.cpp
Generated by
1.8.17