Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

qgar::AbstractPbmPlusFile Class Reference
[Files]

#include <qgarlib/AbstractPbmPlusFile.H>

Inheritance diagram for qgar::AbstractPbmPlusFile:

qgar::AbstractFile qgar::PbmFile qgar::PgmFile List of all members.

Detailed Description

File containing an image in some PBM+ format.

Most of the code documented here is an adaptation of code from the PBM software package. Here is the copyright notice of this package:

 +------------------------------------------------------------------------+
 | Copyright (C) 1988 by Jef Poskanzer                                    |
 |                                                                        |
 | Permission to use, copy, modify, and distribute this software and its  |
 | documentation for any purpose and without fee is hereby granted,       |
 | provided that the above copyright notice appear in all copies and that |
 | both that copyright notice and this permission notice appear in        |
 | supporting documentation.  This software is provided "as is" without   |
 | express or implied warranty.                                           |
 +------------------------------------------------------------------------+
For more information about PBM, see the PBMPLUS home page.

Warning:
This is an abstract class. Pure virtual functions:
Author:
Karl Tombre
Date:
Jul, 3 2001 16:25
Since:
Qgar 1.0

Definition at line 121 of file AbstractPbmPlusFile.H.

Public Member Functions

Destructor
virtual ~AbstractPbmPlusFile ()
 Free the current row.
Access
int colCnt () const
 Get number of columns.
int rowCnt () const
 Get number of rows.
unsigned char * pRow ()
 Get current row.
Assignment
void setColCnt (int aCnt)
 Set number of columns.
void setRowCnt (int aCnt)
 Set number of rows.
Input
virtual void readRow ()=0
 Read a row from the file.
Output
virtual void writeRow ()=0
 Write a row into the file.
Access to file characteristics
std::fstream & fileStream ()
 Get file stream.
const char *const fileName () const
 Get file name.
QGEfileStatus fileStatus () const
 Get current file status.
Opening
virtual void openRONLY () throw (QgarErrorIO)
 Open in read-only mode.
virtual void openWONLY () throw (QgarErrorIO)
 Open in write-only mode.
virtual void openAPPEND () throw (QgarErrorIO)
 Open in append mode.
virtual void openRW () throw (QgarErrorIO)
 Open in read-write mode.
virtual void openRA () throw (QgarErrorIO)
 Open in read-append mode.
Closing
virtual void close ()
 Close the file.
Checking status
virtual void isOpenR () throw (QgarErrorUser)
 Abort if the file is not open in a mode allowing reading.
virtual void isOpenW () throw (QgarErrorUser)
 Abort if the file is not open in a mode allowing writing.
virtual void isOpenA () throw (QgarErrorUser)
 Abort if the file is not open in a mode allowing appending.
virtual void isOpenRW () throw (QgarErrorUser)
 Abort if the file is not open in read-write mode.
virtual void isOpenRA () throw (QgarErrorUser)
 Abort if the file is not open in readi-append mode.

Protected Member Functions

Constructors
Constructors belong to the protected section so that the class cannot be instantiated.

 AbstractPbmPlusFile (const char *aFileName, int aRowCnt, int aColCnt, QGEpbmFormat aFormat=QGE_PBM_RAW) throw (QgarErrorInvalidArg)
 Initialize with full data.
Input auxiliaries
virtual char getChar () throw (QgarErrorIO)
 Read a character from the file.
virtual int getInt () throw (QgarErrorIO)
 Read an integer from the file.
virtual unsigned char getRawByte () throw (QgarErrorIO)
 Read a raw byte from the file.
Memory space allocation
void newRow ()
 Allocate a new row.
Headers & footers
virtual void readHeader ()=0
 Read header of the file (pure virtual function).
virtual void writeHeader ()=0
 Write header of the file (pure virtual function).
virtual void writeFooter ()=0
 Write footer of the file (pure virtual function).

Protected Attributes

Representation of a file
QGEpbmFormat _format
 Format of the file.
int _rowCnt
 Number of rows of the image.
int _colCnt
 Number of columns of the image.
unsigned char * _pRow
 Pointer to current image row.
Representation of a file
char * _fileName
 File name.
QGEfileStatus _fileStatus
 File status.
std::fstream _fileStream
 Associated file stream.


Constructor & Destructor Documentation

qgar::AbstractPbmPlusFile::~AbstractPbmPlusFile  )  [virtual]
 

Free the current row.

Definition at line 108 of file AbstractPbmPlusFile.C.

References _pRow.

qgar::AbstractPbmPlusFile::AbstractPbmPlusFile const char *  aFileName,
int  aRowCnt,
int  aColCnt,
QGEpbmFormat  aFormat = QGE_PBM_RAW
throw (QgarErrorInvalidArg) [protected]
 

Initialize with full data.

Parameters:
aFileName name of the new file
aRowCnt number of rows of the corresponding image
aColCnt number of columns of the corresponding image
aFormat format of the image contained in the file (default raw)
Exceptions:
qgar::QgarErrorInvalidArg (bad image size)

Definition at line 72 of file AbstractPbmPlusFile.C.


Member Function Documentation

void qgar::AbstractFile::close  )  [virtual, inherited]
 

Close the file.

No effect is the file is already closed.

Warning:
If the file is currently open in write-only or read-write modes, a footer is written into the file using function qgar::AbstractFile::writeFooter.

Definition at line 251 of file AbstractFile.C.

References qgar::AbstractFile::_fileStatus, qgar::AbstractFile::_fileStream, qgar::QGE_FILE_STATUS_CLOSED, qgar::QGE_FILE_STATUS_READ_WRITE, qgar::QGE_FILE_STATUS_WRITE_ONLY, and qgar::AbstractFile::writeFooter().

Referenced by qgar::GenImage< T, CheckPolicy >::GenImage(), qgar::MapleFile::MapleFile(), qgar::AbstractFile::openAPPEND(), qgar::AbstractFile::openRA(), qgar::AbstractFile::openRONLY(), qgar::AbstractFile::openRW(), qgar::AbstractFile::openWONLY(), and qgar::GenImage< T, CheckPolicy >::save().

int qgar::AbstractPbmPlusFile::colCnt  )  const [inline]
 

Get number of columns.

Definition at line 328 of file AbstractPbmPlusFile.H.

References _colCnt.

Referenced by qgar::GenImage< T, CheckPolicy >::GenImage().

const char *const qgar::AbstractFile::fileName  )  const [inline, inherited]
 

Get file name.

Definition at line 395 of file AbstractFile.H.

References qgar::AbstractFile::_fileName.

QGEfileStatus qgar::AbstractFile::fileStatus  )  const [inline, inherited]
 

Get current file status.

Definition at line 404 of file AbstractFile.H.

References qgar::AbstractFile::_fileStatus.

std::fstream & qgar::AbstractFile::fileStream  )  [inline, inherited]
 

Get file stream.

When saving the stream, usual I/O operations apply to the associated file, depending on the opening mode.

Definition at line 386 of file AbstractFile.H.

References qgar::AbstractFile::_fileStream.

char qgar::AbstractPbmPlusFile::getChar  )  throw (QgarErrorIO) [protected, virtual]
 

Read a character from the file.

Exceptions:
qgar::QgarErrorIO (EOF while reading in file)

Definition at line 125 of file AbstractPbmPlusFile.C.

References qgar::AbstractFile::_fileName, and qgar::AbstractFile::_fileStream.

Referenced by qgar::PbmFile::getBit(), and getInt().

int qgar::AbstractPbmPlusFile::getInt  )  throw (QgarErrorIO) [protected, virtual]
 

Read an integer from the file.

Exceptions:
qgar::QgarErrorIO (error while reading in file: integer in [0,9] expected)

Definition at line 169 of file AbstractPbmPlusFile.C.

References qgar::AbstractFile::_fileName, and getChar().

Referenced by qgar::PgmFile::readHeader(), qgar::PbmFile::readHeader(), and qgar::PgmFile::readRow().

unsigned char qgar::AbstractPbmPlusFile::getRawByte  )  throw (QgarErrorIO) [protected, virtual]
 

Read a raw byte from the file.

Exceptions:
qgar::QgarErrorIO (EOF while reading in file)

Definition at line 207 of file AbstractPbmPlusFile.C.

References qgar::AbstractFile::_fileName, and qgar::AbstractFile::_fileStream.

Referenced by qgar::PgmFile::readRow(), and qgar::PbmFile::readRow().

void qgar::AbstractFile::isOpenA  )  throw (QgarErrorUser) [virtual, inherited]
 

Abort if the file is not open in a mode allowing appending.

Exceptions:
qgar::QgarErrorUser (file not open in append mode)

Definition at line 310 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, qgar::QGE_FILE_STATUS_APPEND, and qgar::QGE_FILE_STATUS_READ_APPEND.

void qgar::AbstractFile::isOpenR  )  throw (QgarErrorUser) [virtual, inherited]
 

Abort if the file is not open in a mode allowing reading.

Exceptions:
qgar::QgarErrorUser (file not open in read mode)

Definition at line 273 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, qgar::QGE_FILE_STATUS_APPEND, and qgar::QGE_FILE_STATUS_WRITE_ONLY.

Referenced by qgar::PgmFile::readRow(), and qgar::PbmFile::readRow().

void qgar::AbstractFile::isOpenRA  )  throw (QgarErrorUser) [virtual, inherited]
 

Abort if the file is not open in readi-append mode.

Exceptions:
qgar::QgarErrorUser (file not open in read/append mode)

Definition at line 347 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, and qgar::QGE_FILE_STATUS_READ_APPEND.

void qgar::AbstractFile::isOpenRW  )  throw (QgarErrorUser) [virtual, inherited]
 

Abort if the file is not open in read-write mode.

Exceptions:
qgar::QgarErrorUser (file not open in read/write mode)

Definition at line 329 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, and qgar::QGE_FILE_STATUS_READ_WRITE.

void qgar::AbstractFile::isOpenW  )  throw (QgarErrorUser) [virtual, inherited]
 

Abort if the file is not open in a mode allowing writing.

Exceptions:
qgar::QgarErrorUser (file not open in write mode)

Definition at line 292 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, and qgar::QGE_FILE_STATUS_READ_ONLY.

Referenced by qgar::TgifFile::write(), qgar::DxfFile::write(), qgar::PgmFile::writeRow(), and qgar::PbmFile::writeRow().

void qgar::AbstractPbmPlusFile::newRow  )  [protected]
 

Allocate a new row.

Definition at line 234 of file AbstractPbmPlusFile.C.

References _colCnt, and _pRow.

Referenced by qgar::PgmFile::readHeader(), qgar::PbmFile::readHeader(), qgar::PgmFile::writeHeader(), and qgar::PbmFile::writeHeader().

void qgar::AbstractFile::openAPPEND  )  throw (QgarErrorIO) [virtual, inherited]
 

Open in append mode.

The eventual content of the file is preserved and the file pointer is set to the end of the file.

Warning:
The file header is read using function qgar::AbstractFile::readHeader.
Exceptions:
qgar::QgarErrorIO (file cannot be opened)

Definition at line 166 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, qgar::AbstractFile::_fileStream, qgar::AbstractFile::close(), qgar::QGE_FILE_STATUS_APPEND, and qgar::AbstractFile::readHeader().

void qgar::AbstractFile::openRA  )  throw (QgarErrorIO) [virtual, inherited]
 

Open in read-append mode.

The file pointer is set to the end of the file.

Warning:
The file header is read using function qgar::AbstractFile::readHeader.
Exceptions:
qgar::QgarErrorIO (file cannot be opened)

Definition at line 223 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, qgar::AbstractFile::_fileStream, qgar::AbstractFile::close(), qgar::QGE_FILE_STATUS_READ_APPEND, and qgar::AbstractFile::readHeader().

void qgar::AbstractFile::openRONLY  )  throw (QgarErrorIO) [virtual, inherited]
 

Open in read-only mode.

The file pointer is set to the first character after the header.

Warning:
The file header is read using function qgar::AbstractFile::readHeader.
Exceptions:
qgar::QgarErrorIO (file cannot be opened)

Definition at line 107 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, qgar::AbstractFile::_fileStream, qgar::AbstractFile::close(), qgar::QGE_FILE_STATUS_READ_ONLY, and qgar::AbstractFile::readHeader().

Referenced by qgar::GenImage< T, CheckPolicy >::GenImage().

void qgar::AbstractFile::openRW  )  throw (QgarErrorIO) [virtual, inherited]
 

Open in read-write mode.

Warning:
The file is new and a header is written into the file using function qgar::AbstractFile::writeHeader. If a file with given name already exists, its content is lost.
Exceptions:
qgar::QgarErrorIO (file cannot be opened)

Definition at line 197 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, qgar::AbstractFile::_fileStream, qgar::AbstractFile::close(), qgar::QGE_FILE_STATUS_READ_WRITE, and qgar::AbstractFile::writeHeader().

void qgar::AbstractFile::openWONLY  )  throw (QgarErrorIO) [virtual, inherited]
 

Open in write-only mode.

Warning:
The file is new and a header is written into the file using function qgar::AbstractFile::writeHeader. If a file with given name already exists, its content is lost.
Exceptions:
qgar::QgarErrorIO (file cannot be opened)

Definition at line 136 of file AbstractFile.C.

References qgar::AbstractFile::_fileName, qgar::AbstractFile::_fileStatus, qgar::AbstractFile::_fileStream, qgar::AbstractFile::close(), qgar::QGE_FILE_STATUS_WRITE_ONLY, and qgar::AbstractFile::writeHeader().

Referenced by qgar::MapleFile::MapleFile(), and qgar::GenImage< T, CheckPolicy >::save().

unsigned char * qgar::AbstractPbmPlusFile::pRow  )  [inline]
 

Get current row.

Definition at line 346 of file AbstractPbmPlusFile.H.

References _pRow.

Referenced by qgar::GenImage< T, CheckPolicy >::GenImage(), qgar::PgmFile::readRow(), qgar::PbmFile::readRow(), qgar::GenImage< T, CheckPolicy >::save(), qgar::PgmFile::writeRow(), and qgar::PbmFile::writeRow().

virtual void qgar::AbstractFile::readHeader  )  [protected, pure virtual, inherited]
 

Read header of the file (pure virtual function).

Automatically performed when the file is opened for reading, appending or reading/appending.

Implemented in qgar::DxfFile, qgar::File, qgar::MapleFile, qgar::PbmFile, qgar::PgmFile, and qgar::TgifFile.

Referenced by qgar::AbstractFile::openAPPEND(), qgar::AbstractFile::openRA(), and qgar::AbstractFile::openRONLY().

virtual void qgar::AbstractPbmPlusFile::readRow  )  [pure virtual]
 

Read a row from the file.

Implemented in qgar::PbmFile, and qgar::PgmFile.

Referenced by qgar::GenImage< T, CheckPolicy >::GenImage().

int qgar::AbstractPbmPlusFile::rowCnt  )  const [inline]
 

Get number of rows.

Definition at line 337 of file AbstractPbmPlusFile.H.

References _rowCnt.

Referenced by qgar::GenImage< T, CheckPolicy >::GenImage().

void qgar::AbstractPbmPlusFile::setColCnt int  aCnt  )  [inline]
 

Set number of columns.

Parameters:
aCnt number to set

Definition at line 360 of file AbstractPbmPlusFile.H.

References _colCnt.

Referenced by qgar::GenImage< T, CheckPolicy >::save().

void qgar::AbstractPbmPlusFile::setRowCnt int  aCnt  )  [inline]
 

Set number of rows.

Parameters:
aCnt number to set

Definition at line 369 of file AbstractPbmPlusFile.H.

References _rowCnt.

Referenced by qgar::GenImage< T, CheckPolicy >::save().

virtual void qgar::AbstractFile::writeFooter  )  [protected, pure virtual, inherited]
 

Write footer of the file (pure virtual function).

Automatically performed when the file is closed.

Implemented in qgar::DxfFile, qgar::File, qgar::MapleFile, qgar::PbmFile, qgar::PgmFile, and qgar::TgifFile.

Referenced by qgar::AbstractFile::close().

virtual void qgar::AbstractFile::writeHeader  )  [protected, pure virtual, inherited]
 

Write header of the file (pure virtual function).

Automatically performed when the file is opened for writing only or reading/writing.

Implemented in qgar::DxfFile, qgar::File, qgar::MapleFile, qgar::PbmFile, qgar::PgmFile, and qgar::TgifFile.

Referenced by qgar::AbstractFile::openRW(), and qgar::AbstractFile::openWONLY().

virtual void qgar::AbstractPbmPlusFile::writeRow  )  [pure virtual]
 

Write a row into the file.

Implemented in qgar::PbmFile, and qgar::PgmFile.

Referenced by qgar::GenImage< T, CheckPolicy >::save().


Member Data Documentation

int qgar::AbstractPbmPlusFile::_colCnt [protected]
 

Number of columns of the image.

Definition at line 258 of file AbstractPbmPlusFile.H.

Referenced by colCnt(), newRow(), qgar::PgmFile::readHeader(), qgar::PbmFile::readHeader(), qgar::PgmFile::readRow(), qgar::PbmFile::readRow(), setColCnt(), qgar::PgmFile::writeHeader(), qgar::PbmFile::writeHeader(), qgar::PgmFile::writeRow(), and qgar::PbmFile::writeRow().

char* qgar::AbstractFile::_fileName [protected, inherited]
 

File name.

Definition at line 349 of file AbstractFile.H.

Referenced by qgar::AbstractFile::fileName(), qgar::PbmFile::getBit(), getChar(), getInt(), getRawByte(), qgar::AbstractFile::isOpenA(), qgar::AbstractFile::isOpenR(), qgar::AbstractFile::isOpenRA(), qgar::AbstractFile::isOpenRW(), qgar::AbstractFile::isOpenW(), qgar::AbstractFile::openAPPEND(), qgar::AbstractFile::openRA(), qgar::AbstractFile::openRONLY(), qgar::AbstractFile::openRW(), qgar::AbstractFile::openWONLY(), qgar::PgmFile::readHeader(), qgar::PbmFile::readHeader(), qgar::DxfFile::readHeader(), qgar::DxfFile::retrieveChainOrQgarPolyline(), and qgar::AbstractFile::~AbstractFile().

QGEfileStatus qgar::AbstractFile::_fileStatus [protected, inherited]
 

File status.

Definition at line 354 of file AbstractFile.H.

Referenced by qgar::AbstractFile::close(), qgar::AbstractFile::fileStatus(), qgar::AbstractFile::isOpenA(), qgar::AbstractFile::isOpenR(), qgar::AbstractFile::isOpenRA(), qgar::AbstractFile::isOpenRW(), qgar::AbstractFile::isOpenW(), qgar::AbstractFile::openAPPEND(), qgar::AbstractFile::openRA(), qgar::AbstractFile::openRONLY(), qgar::AbstractFile::openRW(), and qgar::AbstractFile::openWONLY().

std::fstream qgar::AbstractFile::_fileStream [protected, inherited]
 

Associated file stream.

Definition at line 359 of file AbstractFile.H.

Referenced by qgar::TgifFile::beginSavePoly(), qgar::AbstractFile::close(), qgar::TgifFile::endSavePoly(), qgar::AbstractFile::fileStream(), getChar(), getRawByte(), qgar::MapleFile::MapleFile(), qgar::AbstractFile::openAPPEND(), qgar::AbstractFile::openRA(), qgar::AbstractFile::openRONLY(), qgar::AbstractFile::openRW(), qgar::AbstractFile::openWONLY(), qgar::PgmFile::readHeader(), qgar::PbmFile::readHeader(), qgar::DxfFile::retrieveDxfGroup(), qgar::TgifFile::saveArc(), qgar::TgifFile::saveBox(), qgar::TgifFile::saveChain(), qgar::TgifFile::saveCircle(), qgar::DxfFile::saveDxfGroup(), qgar::TgifFile::savePoint(), qgar::TgifFile::savePolyline(), qgar::TgifFile::saveSegment(), qgar::TgifFile::writeHeader(), qgar::PgmFile::writeHeader(), qgar::PbmFile::writeHeader(), qgar::MapleFile::writeHeader(), qgar::DxfFile::writeHeader(), qgar::PgmFile::writeRow(), and qgar::PbmFile::writeRow().

QGEpbmFormat qgar::AbstractPbmPlusFile::_format [protected]
 

Format of the file.

Definition at line 248 of file AbstractPbmPlusFile.H.

Referenced by qgar::PgmFile::readHeader(), qgar::PbmFile::readHeader(), qgar::PgmFile::readRow(), qgar::PbmFile::readRow(), qgar::PgmFile::writeHeader(), qgar::PbmFile::writeHeader(), qgar::PgmFile::writeRow(), and qgar::PbmFile::writeRow().

unsigned char* qgar::AbstractPbmPlusFile::_pRow [protected]
 

Pointer to current image row.

Definition at line 263 of file AbstractPbmPlusFile.H.

Referenced by newRow(), pRow(), qgar::PgmFile::readRow(), qgar::PbmFile::readRow(), qgar::PgmFile::writeRow(), qgar::PbmFile::writeRow(), and ~AbstractPbmPlusFile().

int qgar::AbstractPbmPlusFile::_rowCnt [protected]
 

Number of rows of the image.

Definition at line 253 of file AbstractPbmPlusFile.H.

Referenced by qgar::PgmFile::readHeader(), qgar::PbmFile::readHeader(), rowCnt(), setRowCnt(), qgar::PgmFile::writeHeader(), and qgar::PbmFile::writeHeader().


The documentation for this class was generated from the following files: