From 608a156784f3c31eaba3347277d09c659dd1fee9 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 3 Feb 2012 11:45:13 +0000 Subject: [PATCH] 3DRender prefernces: Remove image, add drop down. * Add a drop down to force a rendering engine. * This is cosmetic and doesn't do anything (yet) * We actually are a preference panel now! --- src/preferences/3drendering/3DRendering.rdef | 2 - src/preferences/3drendering/Jamfile | 1 - src/preferences/3drendering/LogoView.cpp | 71 ------------------- src/preferences/3drendering/LogoView.h | 28 -------- src/preferences/3drendering/OpenGLView.cpp | 26 +++++-- src/preferences/3drendering/OpenGLView.h | 7 ++ src/preferences/3drendering/logo.png | Bin 14773 -> 0 bytes 7 files changed, 27 insertions(+), 108 deletions(-) delete mode 100644 src/preferences/3drendering/LogoView.cpp delete mode 100644 src/preferences/3drendering/LogoView.h delete mode 100644 src/preferences/3drendering/logo.png diff --git a/src/preferences/3drendering/3DRendering.rdef b/src/preferences/3drendering/3DRendering.rdef index f2539b1103..b4aa9086ce 100644 --- a/src/preferences/3drendering/3DRendering.rdef +++ b/src/preferences/3drendering/3DRendering.rdef @@ -17,8 +17,6 @@ resource app_version { long_info = "3D Rendering ©2009-2012 Haiku, Inc." }; -resource(1, "logo.png") #'PNG ' import "logo.png"; - resource vector_icon { $"6E636966060500020006023B10B737F036BA1A993D466848C719BEBE20009192" $"92FFD5D5D5020016023900000000000000003EE0004AE00048E0005EF884C702" diff --git a/src/preferences/3drendering/Jamfile b/src/preferences/3drendering/Jamfile index bed8510826..bc3f07f467 100644 --- a/src/preferences/3drendering/Jamfile +++ b/src/preferences/3drendering/Jamfile @@ -17,7 +17,6 @@ local sources = ExtensionsList.cpp ExtensionsView.cpp InfoView.cpp - LogoView.cpp ; Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; diff --git a/src/preferences/3drendering/LogoView.cpp b/src/preferences/3drendering/LogoView.cpp deleted file mode 100644 index 4095ca3c60..0000000000 --- a/src/preferences/3drendering/LogoView.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2009 Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Authors: - * Stephan Aßmus - * Artur Wyszynski - */ - -#include "LogoView.h" - -#include -#include -#include -#include -#include - - -LogoView::LogoView() - : - BView("LogoView", B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE, NULL), - fLogo(NULL) -{ - SetViewColor(255, 255, 255); - fLogo = BTranslationUtils::GetBitmap(B_PNG_FORMAT, "logo.png"); - if (fLogo) { - SetExplicitMinSize( - BSize(fLogo->Bounds().Width(), fLogo->Bounds().Height() + 6)); - } -} - - -LogoView::~LogoView() -{ - delete fLogo; -} - - -void -LogoView::Draw(BRect update) -{ - if (!fLogo) - return; - - BRect bounds(Bounds()); - BPoint placement; - placement.x = (bounds.left + bounds.right - fLogo->Bounds().Width()) / 2; - placement.y = (bounds.top + bounds.bottom - fLogo->Bounds().Height()) / 2; - - DrawBitmap(fLogo, placement); - rgb_color borderColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_3_TINT); - SetHighColor(borderColor); - StrokeLine(bounds.LeftBottom(), bounds.RightBottom()); -} - - -void -LogoView::GetPreferredSize(float* _width, float* _height) -{ - float width = 0.0; - float height = 0.0; - if (fLogo) { - width = fLogo->Bounds().Width(); - height = fLogo->Bounds().Height(); - } - if (_width) - *_width = width; - if (_height) - *_height = height; -} diff --git a/src/preferences/3drendering/LogoView.h b/src/preferences/3drendering/LogoView.h deleted file mode 100644 index 700f1df653..0000000000 --- a/src/preferences/3drendering/LogoView.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2009 Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Authors: - * Stephan Aßmus - * Artur Wyszynski - */ - -#ifndef LOGO_VIEW_H -#define LOGO_VIEW_H - - -#include - -class LogoView : public BView { -public: - LogoView(); - virtual ~LogoView(); - - virtual void Draw(BRect update); - virtual void GetPreferredSize(float* _width, float* _height); - -private: - BBitmap* fLogo; -}; - -#endif /* LOGO_VIEW_H */ diff --git a/src/preferences/3drendering/OpenGLView.cpp b/src/preferences/3drendering/OpenGLView.cpp index fd676b34a3..3b34504568 100644 --- a/src/preferences/3drendering/OpenGLView.cpp +++ b/src/preferences/3drendering/OpenGLView.cpp @@ -13,13 +13,13 @@ #include #include +#include #include #include #include "CapabilitiesView.h" #include "ExtensionsView.h" #include "InfoView.h" -#include "LogoView.h" OpenGLView::OpenGLView() @@ -34,7 +34,21 @@ OpenGLView::OpenGLView() glView->LockGL(); - LogoView *logoView = new LogoView(); + BMenu* menu = new BMenu("Automatic"); + menu->SetRadioMode(true); + menu->SetLabelFromMarked(true); + menu->AddItem(new BMenuItem("Automatic", + new BMessage(MENU_AUTO_MESSAGE))); + menu->AddSeparatorItem(); + menu->AddItem(new BMenuItem("Force Software Rasterizer", + new BMessage(MENU_SWRAST_MESSAGE))); + menu->AddItem(new BMenuItem("Force Gallium Software Pipe", + new BMessage(MENU_SWPIPE_MESSAGE))); + menu->AddItem(new BMenuItem("Force Gallium LLVM Pipe", + new BMessage(MENU_SWLLVM_MESSAGE))); + BMenuField* menuField = new BMenuField("renderer", + "3D Rendering Engine:", menu); + menuField->SetEnabled(false); BTabView *tabView = new BTabView("tab view", B_WIDTH_FROM_LABEL); tabView->AddTab(new InfoView()); @@ -45,12 +59,12 @@ OpenGLView::OpenGLView() GroupLayout()->SetSpacing(0); BLayoutBuilder::Group<>(this) - .SetInsets(0, 0, 0, 0) - .Add(logoView) + .SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING, + B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING) + .Add(menuField) .AddGroup(B_HORIZONTAL) .Add(tabView) - .SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING, - B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING); + .SetInsets(0, B_USE_DEFAULT_SPACING, 0, 0); } diff --git a/src/preferences/3drendering/OpenGLView.h b/src/preferences/3drendering/OpenGLView.h index 58263df201..479e3cd571 100644 --- a/src/preferences/3drendering/OpenGLView.h +++ b/src/preferences/3drendering/OpenGLView.h @@ -13,6 +13,13 @@ #include + +#define MENU_AUTO_MESSAGE 'auto' +#define MENU_SWRAST_MESSAGE 'swrt' +#define MENU_SWPIPE_MESSAGE 'swpi' +#define MENU_SWLLVM_MESSAGE 'swll' + + class OpenGLView : public BGroupView { public: OpenGLView(); diff --git a/src/preferences/3drendering/logo.png b/src/preferences/3drendering/logo.png deleted file mode 100644 index 6f865484afcae0f7a4f21b6e5fff5eddd79ae109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14773 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 g-?wk(1&>&m>