* Copyright 2010-2017, Haiku. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Philippe Houdoin
*/
#ifndef WEBP_TRANSLATOR_H
#define WEBP_TRANSLATOR_H
#include <ByteOrder.h>
#include <DataIO.h>
#include <File.h>
#include <fs_attr.h>
#include <GraphicsDefs.h>
#include <InterfaceDefs.h>
#include <TranslationDefs.h>
#include <Translator.h>
#include <TranslatorFormats.h>
#include "BaseTranslator.h"
#define WEBP_TRANSLATOR_VERSION B_TRANSLATION_MAKE_VERSION(0,6,0)
#define WEBP_IMAGE_FORMAT 'WebP'
#define WEBP_SETTING_QUALITY "quality"
#define WEBP_SETTING_PRESET "preset"
#define WEBP_SETTING_SHARPNESS "sharpness"
#define WEBP_SETTING_METHOD "method"
#define WEBP_SETTING_PREPROCESSING "preprocessing"
#define WEBP_IN_QUALITY 0.90
#define WEBP_IN_CAPABILITY 0.90
#define WEBP_OUT_QUALITY 0.90
#define WEBP_OUT_CAPABILITY 0.5
#define BITS_IN_QUALITY 0.8
#define BITS_IN_CAPABILITY 0.6
#define BITS_OUT_QUALITY 0.5
#define BITS_OUT_CAPABILITY 0.4
struct WebPPicture;
class WebPTranslator : public BaseTranslator {
public:
WebPTranslator();
virtual status_t DerivedIdentify(BPositionIO* stream,
const translation_format* format,
BMessage* settings, translator_info* info,
uint32 outType);
virtual status_t DerivedTranslate(BPositionIO* stream,
const translator_info* info,
BMessage* settings, uint32 outType,
BPositionIO* target, int32 baseType);
virtual BView* NewConfigView(TranslatorSettings* settings);
protected:
virtual ~WebPTranslator();
private:
status_t _TranslateFromBits(BPositionIO* stream,
BMessage* settings, uint32 outType,
BPositionIO* target);
status_t _TranslateFromWebP(BPositionIO* stream,
BMessage* settings, uint32 outType,
BPositionIO* target);
static int _EncodedWriter(const uint8_t* data,
size_t dataSize,
const WebPPicture* const picture);
};
#endif