Add a slider to the settings view to allow adjusting the rendering output size.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30799 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Lotz
2009-05-18 21:25:34 +00:00
parent c6f2665631
commit 9d3da74dea
4 changed files with 80 additions and 7 deletions
@@ -44,6 +44,11 @@ static translation_format sOutputFormats[] = {
};
static TranSetting sDefaultSettings[] = {
{ HVIF_SETTING_RENDER_SIZE, TRAN_SETTING_INT32, 64 }
};
BTranslator *
make_nth_translator(int32 n, image_id image, uint32 flags, ...)
{
@@ -58,8 +63,9 @@ HVIFTranslator::HVIFTranslator()
HVIF_TRANSLATOR_VERSION, sInputFormats,
sizeof(sInputFormats) / sizeof(sInputFormats[0]), sOutputFormats,
sizeof(sOutputFormats) / sizeof(sOutputFormats[0]),
"HVIFTranslator_Settings", NULL, 0, B_TRANSLATOR_BITMAP,
HVIF_FORMAT_CODE)
"HVIFTranslator_Settings", sDefaultSettings,
sizeof(sDefaultSettings) / sizeof(sDefaultSettings[0]),
B_TRANSLATOR_BITMAP, HVIF_FORMAT_CODE)
{
}
@@ -134,7 +140,12 @@ HVIFTranslator::DerivedTranslate(BPositionIO *inSource,
return B_NO_TRANSLATOR;
}
BBitmap rendered(BRect(0, 0, 63, 63), B_BITMAP_NO_SERVER_LINK, B_RGBA32);
int32 renderSize = fSettings->SetGetInt32(HVIF_SETTING_RENDER_SIZE);
if (renderSize <= 0 || renderSize > 1024)
renderSize = 64;
BBitmap rendered(BRect(0, 0, renderSize - 1, renderSize - 1),
B_BITMAP_NO_SERVER_LINK, B_RGBA32);
if (BIconUtils::GetVectorIcon(buffer, size, &rendered) != B_OK) {
free(buffer);
return B_NO_TRANSLATOR;
@@ -158,5 +169,5 @@ BView *
HVIFTranslator::NewConfigView(TranslatorSettings *settings)
{
return new HVIFView(BRect(0, 0, 250, 150), "HVIFTranslator Settings",
B_FOLLOW_ALL, B_WILL_DRAW);
B_FOLLOW_ALL, B_WILL_DRAW, settings);
}
@@ -11,6 +11,7 @@
#include "BaseTranslator.h"
#define HVIF_TRANSLATOR_VERSION B_TRANSLATION_MAKE_VERSION(1, 0, 0)
#define HVIF_SETTING_RENDER_SIZE "hvif /renderSize"
class HVIFTranslator : public BaseTranslator {
public:
+52 -2
View File
@@ -9,14 +9,18 @@
#include "HVIFView.h"
#include "HVIFTranslator.h"
#include <String.h>
#include <StringView.h>
#include <stdio.h>
#define HVIF_SETTING_RENDER_SIZE_CHANGED 'rsch'
HVIFView::HVIFView(const BRect &frame, const char *name, uint32 resizeMode,
uint32 flags)
: BView(frame, name, resizeMode, flags)
uint32 flags, TranslatorSettings *settings)
: BView(frame, name, resizeMode, flags),
fSettings(settings)
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
@@ -50,4 +54,50 @@ HVIFView::HVIFView(const BRect &frame, const char *name, uint32 resizeMode,
B_UTF8_COPYRIGHT"2009 Haiku Inc.");
stringView->ResizeToPreferred();
AddChild(stringView);
rect.OffsetBy(0, height + 5);
int32 renderSize = fSettings->SetGetInt32(HVIF_SETTING_RENDER_SIZE);
BString label = "Render Size: ";
label << renderSize;
fRenderSize = new BSlider(rect, "renderSize", label.String(), NULL, 1, 32);
fRenderSize->ResizeToPreferred();
fRenderSize->SetValue(renderSize / 8);
fRenderSize->SetHashMarks(B_HASH_MARKS_BOTTOM);
fRenderSize->SetHashMarkCount(16);
fRenderSize->SetModificationMessage(
new BMessage(HVIF_SETTING_RENDER_SIZE_CHANGED));
AddChild(fRenderSize);
}
void
HVIFView::AttachedToWindow()
{
fRenderSize->SetTarget(this);
}
void
HVIFView::MessageReceived(BMessage *message)
{
switch (message->what) {
case HVIF_SETTING_RENDER_SIZE_CHANGED:
{
int32 value = fRenderSize->Value();
if (value <= 0 || value > 32)
break;
value *= 8;
fSettings->SetGetInt32(HVIF_SETTING_RENDER_SIZE, &value);
fSettings->SaveSettings();
BString newLabel = "Render Size: ";
newLabel << value;
fRenderSize->SetLabel(newLabel.String());
return;
}
}
BView::MessageReceived(message);
}
+12 -1
View File
@@ -8,12 +8,23 @@
#ifndef HVIF_VIEW_H
#define HVIF_VIEW_H
#include "TranslatorSettings.h"
#include <Slider.h>
#include <View.h>
class HVIFView : public BView {
public:
HVIFView(const BRect &frame, const char *name,
uint32 resizeMode, uint32 flags);
uint32 resizeMode, uint32 flags,
TranslatorSettings *settings);
virtual void AttachedToWindow();
virtual void MessageReceived(BMessage *message);
private:
BSlider * fRenderSize;
TranslatorSettings *fSettings;
};
#endif // HVIF_VIEW_H