/* * 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 #include #include #include #include #include #include #include #include #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(); // this is protected because the object is deleted by the // Release() function instead of being deleted directly by // the user 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 // #ifndef WEBP_TRANSLATOR_H