140 lines
4.4 KiB
Objective-C
140 lines
4.4 KiB
Objective-C
/*
|
|
This file is part of Mitsuba, a physically based rendering system.
|
|
|
|
Copyright (c) 2007-2014 by Wenzel Jakob and others.
|
|
|
|
Mitsuba is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License Version 3
|
|
as published by the Free Software Foundation.
|
|
|
|
Mitsuba is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#if defined(__OBJC__)
|
|
#include <Cocoa/Cocoa.h>
|
|
#include <BWToolkitFramework/BWToolkitFramework.h>
|
|
#endif
|
|
#include "common.h"
|
|
|
|
class PreviewSettingsDlg;
|
|
|
|
#if defined(__OBJC__)
|
|
@interface CocoaRenderSettingsDlg : NSView < NSWindowDelegate >
|
|
{
|
|
IBOutlet NSPanel *panel;
|
|
IBOutlet BWTransparentPopUpButton *previewMethod;
|
|
IBOutlet BWTransparentPopUpButton *shadowMapResolution;
|
|
IBOutlet BWTransparentPopUpButton *toneMappingMethod;
|
|
IBOutlet BWTransparentSlider *pathLength;
|
|
IBOutlet BWTransparentSlider *clamping;
|
|
IBOutlet BWTransparentSlider *reinhardKey;
|
|
IBOutlet BWTransparentSlider *exposure;
|
|
IBOutlet BWTransparentSlider *gamma;
|
|
IBOutlet BWTransparentCheckbox *sRGB;
|
|
IBOutlet BWTransparentCheckbox *diffuseSourcesBox;
|
|
IBOutlet BWTransparentCheckbox *diffuseReceiversBox;
|
|
IBOutlet NSTextField *shadowMapLabel;
|
|
IBOutlet NSTextField *reinhardKeyLabel;
|
|
IBOutlet NSTextField *gammaLabel;
|
|
IBOutlet NSTextField *gammaValueLabel;
|
|
IBOutlet NSTextField *exposureLabel;
|
|
IBOutlet NSTextField *exposureValueLabel;
|
|
NSView *parent;
|
|
SceneContext *context;
|
|
PreviewSettingsDlg *delegate;
|
|
bool active;
|
|
bool previewEnabled;
|
|
}
|
|
- (id) initWithParentView: (NSView *) view andDelegate: (PreviewSettingsDlg *) del;
|
|
- (IBAction) previewMethodChanged: (id) sender;
|
|
- (IBAction) clampingChanged: (id) sender;
|
|
- (IBAction) pathLengthChanged: (id) sender;
|
|
- (IBAction) shadowMapResolutionChanged: (id) sender;
|
|
- (IBAction) toneMappingMethodChanged: (id) sender;
|
|
- (IBAction) reinhardKeyChanged: (id) sender;
|
|
- (IBAction) exposureChanged: (id) sender;
|
|
- (IBAction) gammaChanged: (id) sender;
|
|
- (IBAction) sRGBChanged: (id) sender;
|
|
- (IBAction) diffuseSourcesChanged: (id) sender;
|
|
- (IBAction) diffuseReceiversChanged: (id) sender;
|
|
- (IBAction) reset: (id) sender;
|
|
- (void) updateUI;
|
|
- (void) showAt: (NSPoint) point;
|
|
- (void) setPreviewEnabled: (BOOL) enabled;
|
|
@end
|
|
#else
|
|
class CocoaRenderSettingsDlg;
|
|
#endif
|
|
|
|
class PreviewSettingsDlg : public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
PreviewSettingsDlg(QWidget *parent);
|
|
virtual ~PreviewSettingsDlg();
|
|
|
|
void show();
|
|
void hide();
|
|
bool isVisible();
|
|
bool isActiveWindow() const;
|
|
void setContext(SceneContext *ctx);
|
|
void setPreviewEnabled(bool enabled);
|
|
public:
|
|
void triggerPreviewMethodChanged(EPreviewMethod method) {
|
|
emit previewMethodChanged(method);
|
|
}
|
|
void triggerToneMappingMethodChanged(EToneMappingMethod method) {
|
|
emit toneMappingMethodChanged(method);
|
|
}
|
|
void triggerClampingChanged(Float clamping) {
|
|
emit clampingChanged(clamping);
|
|
}
|
|
void triggerPathLengthChanged(int pathLength) {
|
|
emit pathLengthChanged(pathLength);
|
|
}
|
|
void triggerShadowMapResolutionChanged(int res) {
|
|
emit shadowMapResolutionChanged(res);
|
|
}
|
|
void triggerGammaChanged(bool srgb, Float gamma) {
|
|
emit gammaChanged(srgb, gamma);
|
|
}
|
|
void triggerExposureChanged(float exposure) {
|
|
emit exposureChanged(exposure);
|
|
}
|
|
void triggerReinhardKeyChanged(float key) {
|
|
emit reinhardKeyChanged(key);
|
|
}
|
|
void triggerReinhardBurnChanged(float burn) {
|
|
emit reinhardBurnChanged(burn);
|
|
}
|
|
void triggerDiffuseReceiversChanged(bool value) {
|
|
emit diffuseReceiversChanged(value);
|
|
}
|
|
void triggerDiffuseSourcesChanged(bool value) {
|
|
emit diffuseSourcesChanged(value);
|
|
}
|
|
void triggerClose() {
|
|
emit close();
|
|
}
|
|
signals:
|
|
void pathLengthChanged(int length);
|
|
void shadowMapResolutionChanged(int resolution);
|
|
void clampingChanged(Float clamping);
|
|
void exposureChanged(Float exposure);
|
|
void gammaChanged(bool srgb, Float gamma);
|
|
void previewMethodChanged(EPreviewMethod method);
|
|
void toneMappingMethodChanged(EToneMappingMethod method);
|
|
void reinhardKeyChanged(Float key);
|
|
void reinhardBurnChanged(Float burn);
|
|
void close();
|
|
void diffuseReceiversChanged(bool);
|
|
void diffuseSourcesChanged(bool);
|
|
private:
|
|
CocoaRenderSettingsDlg *m_dlg;
|
|
};
|