100 lines
2.7 KiB
C
100 lines
2.7 KiB
C
|
/*
|
||
|
*
|
||
|
* Copyright (C) 1997-2011, OFFIS e.V.
|
||
|
* All rights reserved. See COPYRIGHT file for details.
|
||
|
*
|
||
|
* This software and supporting documentation were developed by
|
||
|
*
|
||
|
* OFFIS e.V.
|
||
|
* R&D Division Health
|
||
|
* Escherweg 2
|
||
|
* D-26121 Oldenburg, Germany
|
||
|
*
|
||
|
*
|
||
|
* Module: dcmjpeg
|
||
|
*
|
||
|
* Author: Norbert Olges, Marco Eichelberg
|
||
|
*
|
||
|
* Purpose: abstract base class for compression classes
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef DJENCABS_H
|
||
|
#define DJENCABS_H
|
||
|
|
||
|
#include "dcmtk/config/osconfig.h"
|
||
|
#include "dcmtk/dcmdata/dctypes.h"
|
||
|
#include "dcmtk/dcmimgle/diutils.h" /* for EP_Interpretation */
|
||
|
#include "dcmtk/dcmjpeg/djutils.h" /* for enums */
|
||
|
|
||
|
/** abstract base class for compression classes.
|
||
|
*/
|
||
|
class DCMTK_DCMJPEG_EXPORT DJEncoder
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
/// default constructor
|
||
|
DJEncoder()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/// destructor
|
||
|
virtual ~DJEncoder()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/** single frame compression routine for 16-bit raw pixel data.
|
||
|
* May only be called if bytesPerSample() == 2.
|
||
|
* @param columns columns of frame
|
||
|
* @param rows rows of frame
|
||
|
* @param interpr photometric interpretation of input frame
|
||
|
* @param samplesPerPixel samples per pixel of input frame
|
||
|
* @param image_buffer pointer to frame buffer
|
||
|
* @param to compressed frame returned in this parameter upon success
|
||
|
* @param length length of compressed frame (in bytes) returned in this parameter
|
||
|
* upon success; length guaranteed to be always even.
|
||
|
* @return EC_Normal if successful, an error code otherwise.
|
||
|
*/
|
||
|
virtual OFCondition encode(
|
||
|
Uint16 columns,
|
||
|
Uint16 rows,
|
||
|
EP_Interpretation interpr,
|
||
|
Uint16 samplesPerPixel,
|
||
|
Uint16 *image_buffer,
|
||
|
Uint8 *&to,
|
||
|
Uint32 &length) = 0;
|
||
|
|
||
|
/** single frame compression routine for 8-bit raw pixel data.
|
||
|
* May only be called if bytesPerSample() == 1.
|
||
|
* @param columns columns of frame
|
||
|
* @param rows rows of frame
|
||
|
* @param interpr photometric interpretation of input frame
|
||
|
* @param samplesPerPixel samples per pixel of input frame
|
||
|
* @param image_buffer pointer to frame buffer
|
||
|
* @param to compressed frame returned in this parameter upon success
|
||
|
* @param length length of compressed frame (in bytes) returned in this parameter
|
||
|
* upon success; length guaranteed to be always even.
|
||
|
* @return EC_Normal if successful, an error code otherwise.
|
||
|
*/
|
||
|
virtual OFCondition encode(
|
||
|
Uint16 columns,
|
||
|
Uint16 rows,
|
||
|
EP_Interpretation interpr,
|
||
|
Uint16 samplesPerPixel,
|
||
|
Uint8 *image_buffer,
|
||
|
Uint8 *&to,
|
||
|
Uint32 &length) = 0;
|
||
|
|
||
|
/** returns the number of bytes per sample that will be expected when encoding.
|
||
|
*/
|
||
|
virtual Uint16 bytesPerSample() const = 0;
|
||
|
|
||
|
/** returns the number of bits per sample that will be expected when encoding.
|
||
|
*/
|
||
|
virtual Uint16 bitsPerSample() const = 0;
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|