* Switch to B_RGB24 output format
* Renamed everything after WebP, as it turns out the official name is case-sensitive. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39505 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
399227b7b5
commit
e4f8681e79
|
@ -8,7 +8,7 @@
|
|||
|
||||
|
||||
#include "ConfigView.h"
|
||||
#include "WEBPTranslator.h"
|
||||
#include "WebPTranslator.h"
|
||||
|
||||
#include <StringView.h>
|
||||
#include <CheckBox.h>
|
||||
|
|
|
@ -6,11 +6,11 @@ SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) shared ] ;
|
|||
SubDirHdrs [ FDirName $(SUBDIR) webp ] ;
|
||||
|
||||
|
||||
Translator WEBPTranslator :
|
||||
Translator WebPTranslator :
|
||||
|
||||
main.cpp
|
||||
|
||||
WEBPTranslator.cpp
|
||||
WebPTranslator.cpp
|
||||
ConfigView.cpp
|
||||
|
||||
bits.c
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
|
||||
|
||||
#include "WEBPTranslator.h"
|
||||
#include "WebPTranslator.h"
|
||||
#include "ConfigView.h"
|
||||
|
||||
#include "decode.h"
|
||||
|
@ -48,7 +48,7 @@ translation_format sInputFormats[] = {
|
|||
WEBP_IN_QUALITY,
|
||||
WEBP_IN_CAPABILITY,
|
||||
"image/webp",
|
||||
"WEBP image"
|
||||
"WebP image"
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -60,7 +60,7 @@ translation_format sOutputFormats[] = {
|
|||
BITS_OUT_QUALITY,
|
||||
BITS_OUT_CAPABILITY,
|
||||
"image/x-be-bitmap",
|
||||
"Be Bitmap Format (WEBPTranslator)"
|
||||
"Be Bitmap Format (WebPTranslator)"
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -78,25 +78,25 @@ const uint32 kNumDefaultSettings = sizeof(sDefaultSettings) / sizeof(TranSetting
|
|||
// #pragma mark -
|
||||
|
||||
|
||||
WEBPTranslator::WEBPTranslator()
|
||||
: BaseTranslator("WEBP images", "WEBP image translator",
|
||||
WebPTranslator::WebPTranslator()
|
||||
: BaseTranslator("WebP images", "WebP image translator",
|
||||
WEBP_TRANSLATOR_VERSION,
|
||||
sInputFormats, kNumInputFormats,
|
||||
sOutputFormats, kNumOutputFormats,
|
||||
"WEBPTranslator_Settings",
|
||||
"WebPTranslator_Settings",
|
||||
sDefaultSettings, kNumDefaultSettings,
|
||||
B_TRANSLATOR_BITMAP, WEBP_IMAGE_FORMAT)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
WEBPTranslator::~WEBPTranslator()
|
||||
WebPTranslator::~WebPTranslator()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
WEBPTranslator::DerivedIdentify(BPositionIO *stream,
|
||||
WebPTranslator::DerivedIdentify(BPositionIO *stream,
|
||||
const translation_format *format, BMessage *settings,
|
||||
translator_info *info, uint32 outType)
|
||||
{
|
||||
|
@ -121,7 +121,7 @@ WEBPTranslator::DerivedIdentify(BPositionIO *stream,
|
|||
info->group = B_TRANSLATOR_BITMAP;
|
||||
info->quality = WEBP_IN_QUALITY;
|
||||
info->capability = WEBP_IN_CAPABILITY;
|
||||
snprintf(info->name, sizeof(info->name), "WEBP image");
|
||||
snprintf(info->name, sizeof(info->name), "WebP image");
|
||||
strcpy(info->MIME, "image/webp");
|
||||
|
||||
return B_OK;
|
||||
|
@ -129,7 +129,7 @@ WEBPTranslator::DerivedIdentify(BPositionIO *stream,
|
|||
|
||||
|
||||
status_t
|
||||
WEBPTranslator::DerivedTranslate(BPositionIO *stream,
|
||||
WebPTranslator::DerivedTranslate(BPositionIO *stream,
|
||||
const translator_info *info, BMessage *settings,
|
||||
uint32 outType, BPositionIO *target, int32 baseType)
|
||||
{
|
||||
|
@ -162,7 +162,7 @@ WEBPTranslator::DerivedTranslate(BPositionIO *stream,
|
|||
printf("WebPDecodeRGB(%p, %lld) failed.\n", streamData, streamSize);
|
||||
return B_ILLEGAL_DATA;
|
||||
}
|
||||
printf("WebPDecodeRGB(%p, %lld) succeed: %d x %d WEBP image decoded.\n",
|
||||
printf("WebPDecodeRGB(%p, %lld) succeed: %d x %d WebP image decoded.\n",
|
||||
streamData, streamSize, width, height);
|
||||
|
||||
FreeAllocation _(out);
|
||||
|
@ -172,9 +172,9 @@ WEBPTranslator::DerivedTranslate(BPositionIO *stream,
|
|||
TranslatorBitmap bitmapHeader;
|
||||
bitmapHeader.magic = B_TRANSLATOR_BITMAP;
|
||||
bitmapHeader.bounds.Set(0, 0, width - 1, height - 1);
|
||||
bitmapHeader.rowBytes = width * 4;
|
||||
bitmapHeader.colors = B_RGB32;
|
||||
bitmapHeader.dataSize = width * 4 * height;
|
||||
bitmapHeader.rowBytes = width * 3;
|
||||
bitmapHeader.colors = B_RGB24;
|
||||
bitmapHeader.dataSize = width * 3 * height;
|
||||
|
||||
// write out Be's Bitmap header
|
||||
swap_data(B_UINT32_TYPE, &bitmapHeader, sizeof(TranslatorBitmap),
|
||||
|
@ -192,28 +192,19 @@ WEBPTranslator::DerivedTranslate(BPositionIO *stream,
|
|||
|
||||
if (headerOnly)
|
||||
return B_OK;
|
||||
/*
|
||||
bytesWritten = target->Write(out, dataSize);
|
||||
if (bytesWritten < B_OK)
|
||||
return bytesWritten;
|
||||
|
||||
if (bytesWritten != (ssize_t)dataSize)
|
||||
return B_IO_ERROR;
|
||||
*/
|
||||
|
||||
uint32 dataLeft = dataSize;
|
||||
uint8* p = out;
|
||||
uint8 rgb[4] = { 0, 0, 0, 255};
|
||||
uint8 rgb[3];
|
||||
while (dataLeft) {
|
||||
rgb[0] = *(p+2);
|
||||
rgb[1] = *(p+1);
|
||||
rgb[2] = *(p);
|
||||
|
||||
bytesWritten = target->Write(rgb, 4);
|
||||
bytesWritten = target->Write(rgb, 3);
|
||||
if (bytesWritten < B_OK)
|
||||
return bytesWritten;
|
||||
|
||||
if (bytesWritten != 4)
|
||||
if (bytesWritten != 3)
|
||||
return B_IO_ERROR;
|
||||
|
||||
p += 3;
|
||||
|
@ -226,7 +217,7 @@ WEBPTranslator::DerivedTranslate(BPositionIO *stream,
|
|||
|
||||
|
||||
BView *
|
||||
WEBPTranslator::NewConfigView(TranslatorSettings *settings)
|
||||
WebPTranslator::NewConfigView(TranslatorSettings *settings)
|
||||
{
|
||||
return new ConfigView();
|
||||
}
|
||||
|
@ -241,5 +232,5 @@ make_nth_translator(int32 n, image_id you, uint32 flags, ...)
|
|||
if (n != 0)
|
||||
return NULL;
|
||||
|
||||
return new WEBPTranslator();
|
||||
return new WebPTranslator();
|
||||
}
|
|
@ -21,7 +21,7 @@
|
|||
#include "BaseTranslator.h"
|
||||
|
||||
#define WEBP_TRANSLATOR_VERSION B_TRANSLATION_MAKE_VERSION(0,1,0)
|
||||
#define WEBP_IMAGE_FORMAT 'WEBP'
|
||||
#define WEBP_IMAGE_FORMAT 'WebP'
|
||||
|
||||
#define WEBP_IN_QUALITY 0.90
|
||||
#define WEBP_IN_CAPABILITY 0.90
|
||||
|
@ -29,9 +29,9 @@
|
|||
#define BITS_OUT_QUALITY 1
|
||||
#define BITS_OUT_CAPABILITY 0.9
|
||||
|
||||
class WEBPTranslator : public BaseTranslator {
|
||||
class WebPTranslator : public BaseTranslator {
|
||||
public:
|
||||
WEBPTranslator();
|
||||
WebPTranslator();
|
||||
|
||||
virtual status_t DerivedIdentify(BPositionIO *inSource,
|
||||
const translation_format *inFormat, BMessage *ioExtension,
|
||||
|
@ -44,17 +44,10 @@ public:
|
|||
virtual BView *NewConfigView(TranslatorSettings *settings);
|
||||
|
||||
protected:
|
||||
virtual ~WEBPTranslator();
|
||||
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 translate_from_bits(BPositionIO *inSource, uint32 outType,
|
||||
BPositionIO *outDestination);
|
||||
|
||||
status_t translate_from_tiff(BPositionIO *inSource, BMessage *ioExtension,
|
||||
uint32 outType, BPositionIO *outDestination);
|
||||
};
|
||||
|
||||
#endif // #ifndef WEBP_TRANSLATOR_H
|
|
@ -8,15 +8,16 @@
|
|||
|
||||
|
||||
#include <Application.h>
|
||||
#include "WEBPTranslator.h"
|
||||
|
||||
#include "WebPTranslator.h"
|
||||
#include "TranslatorWindow.h"
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
BApplication app("application/x-vnd.Haiku-WEBPTranslator");
|
||||
if (LaunchTranslatorWindow(new WEBPTranslator,
|
||||
"WEBP Settings") != B_OK)
|
||||
BApplication app("application/x-vnd.Haiku-WebPTranslator");
|
||||
if (LaunchTranslatorWindow(new WebPTranslator,
|
||||
"WebP Settings") != B_OK)
|
||||
return 1;
|
||||
|
||||
app.Run();
|
||||
|
|
|
@ -5,7 +5,7 @@ resource(1, "META:TYPE") "image/webp";
|
|||
|
||||
resource(2, "META:SNIFF_RULE") "0.50 (\"RIFF????WEBP\" & 0xffffffff00000000ffffffff)";
|
||||
|
||||
resource(3, "META:S:DESC") #'MSDC' "WEBP image";
|
||||
resource(3, "META:S:DESC") #'MSDC' "WebP image";
|
||||
|
||||
resource(4, "META:EXTENS") message(234) {
|
||||
"extensions" = "webp",
|
||||
|
|
Loading…
Reference in New Issue