DYT/Tool/3rdParty_x64/include/dcmtk/dcmjpeg/djencabs.h
2024-11-22 23:19:31 +08:00

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