#ifndef BASE_TRANSLATOR_H
#define BASE_TRANSLATOR_H
#include <ByteOrder.h>
#include <DataIO.h>
#include <GraphicsDefs.h>
#include <InterfaceDefs.h>
#include <Translator.h>
#include <TranslatorFormats.h>
#include <TranslationDefs.h>
#include <View.h>
#include "TranslatorSettings.h"
class BaseTranslator : public BTranslator {
public:
BaseTranslator(const char *name, const char *info,
const int32 version, const translation_format *inFormats,
int32 inCount, const translation_format *outFormats, int32 outCount,
const char *settingsFile, const TranSetting *defaults, int32 defCount,
uint32 tranGroup, uint32 tranType);
virtual const char *TranslatorName() const;
virtual const char *TranslatorInfo() const;
virtual int32 TranslatorVersion() const;
virtual const translation_format *InputFormats(int32 *out_count)
const;
virtual const translation_format *OutputFormats(int32 *out_count)
const;
virtual status_t Identify(BPositionIO *inSource,
const translation_format *inFormat, BMessage *ioExtension,
translator_info *outInfo, uint32 outType);
virtual status_t Translate(BPositionIO *inSource,
const translator_info *inInfo, BMessage *ioExtension,
uint32 outType, BPositionIO *outDestination);
virtual status_t GetConfigurationMessage(BMessage *ioExtension);
virtual status_t MakeConfigurationView(BMessage *ioExtension,
BView **outView, BRect *outExtent);
TranslatorSettings *AcquireSettings();
virtual status_t DerivedIdentify(BPositionIO *inSource,
const translation_format *inFormat, BMessage *ioExtension,
translator_info *outInfo, uint32 outType);
virtual status_t DerivedTranslate(BPositionIO *inSource,
const translator_info *inInfo, BMessage *ioExtension,
uint32 outType, BPositionIO *outDestination, int32 baseType);
virtual status_t DerivedCanHandleImageSize(float width, float height) const;
virtual BView *NewConfigView(TranslatorSettings *settings);
protected:
status_t BitsCheck(BPositionIO *inSource, BMessage *ioExtension,
uint32 &outType);
status_t BitsIdentify(BPositionIO *inSource,
const translation_format *inFormat, BMessage *ioExtension,
translator_info *outInfo, uint32 outType);
status_t identify_bits_header(BPositionIO *inSource,
translator_info *outInfo, TranslatorBitmap *pheader = NULL);
status_t BitsTranslate(BPositionIO *inSource,
const translator_info *inInfo, BMessage *ioExtension, uint32 outType,
BPositionIO *outDestination);
status_t translate_from_bits_to_bits(BPositionIO *inSource,
uint32 outType, BPositionIO *outDestination);
virtual ~BaseTranslator();
TranslatorSettings *fSettings;
private:
int32 fVersion;
char *fName;
char *fInfo;
const translation_format *fInputFormats;
int32 fInputCount;
const translation_format *fOutputFormats;
int32 fOutputCount;
uint32 fTranGroup;
uint32 fTranType;
};
void translate_direct_copy(BPositionIO *inSource, BPositionIO *outDestination);
#endif