Files
UnrealEngineUWP/Engine/Source/Editor/LevelEditor/Private/HighresScreenshotUI.h
Martin Mittring 97ee86291e UE-19859 Remove debug/show rendering features on shipping
I did the first part, lock some showflags to be 0 or 1 in SHIPPING
If this causes problems for some applications (e.g. using showflag as scalability which they shouldn't) the user needs to update the code.
or we remove the lock from that showflag.
For editor or non shipping features it's fine to use the SetSHOWFLAGNAME() calls, they become NOPS in SHIPPING.

This is a performance optimization (when  used in inner loop) and prepares for removing more

[CL 2673126 by Martin Mittring in Main branch]
2015-08-28 17:18:26 -04:00

175 lines
4.9 KiB
C++

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "SlateBasics.h"
#include "Slate/SceneViewport.h"
#include "HighResScreenshot.h"
class SHighResScreenshotDialog : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SHighResScreenshotDialog ){}
SLATE_END_ARGS()
void Construct( const FArguments& InArgs );
SHighResScreenshotDialog();
virtual ~SHighResScreenshotDialog()
{
Window.Reset();
}
void SetWindow( TSharedPtr<SWindow> InWindow )
{
Window = InWindow;
}
void SetCaptureRegionWidget(TSharedPtr<class SCaptureRegionWidget> InCaptureRegionWidget)
{
CaptureRegionWidget = InCaptureRegionWidget;
}
void SetCaptureRegion(const FIntRect& InCaptureRegion)
{
Config.UnscaledCaptureRegion = InCaptureRegion;
auto ConfigViewport = Config.TargetViewport.Pin();
if (ConfigViewport.IsValid())
{
ConfigViewport->Invalidate();
}
}
FHighResScreenshotConfig& GetConfig()
{
return Config;
}
TSharedPtr<class SCaptureRegionWidget> GetCaptureRegionWidget()
{
return CaptureRegionWidget;
}
static TWeakPtr<class SWindow> OpenDialog(const TSharedPtr<FSceneViewport>& InViewport, TSharedPtr<SCaptureRegionWidget> InCaptureRegionWidget = TSharedPtr<class SCaptureRegionWidget>());
private:
FReply OnCaptureClicked();
FReply OnSelectCaptureRegionClicked();
FReply OnSelectCaptureCancelRegionClicked();
FReply OnSelectCaptureAcceptRegionClicked();
FReply OnSetFullViewportCaptureRegionClicked();
FReply OnSetCameraSafeAreaCaptureRegionClicked();
bool IsSetCameraSafeAreaCaptureRegionEnabled() const;
void OnResolutionMultiplierChanged( float NewValue, ETextCommit::Type CommitInfo )
{
NewValue = FMath::Clamp(NewValue, FHighResScreenshotConfig::MinResolutionMultipler, FHighResScreenshotConfig::MaxResolutionMultipler);
Config.ResolutionMultiplier = NewValue;
Config.ResolutionMultiplierScale = (NewValue - FHighResScreenshotConfig::MinResolutionMultipler) / (FHighResScreenshotConfig::MaxResolutionMultipler - FHighResScreenshotConfig::MinResolutionMultipler);
}
void OnResolutionMultiplierSliderChanged( float NewValue )
{
Config.ResolutionMultiplierScale = NewValue;
Config.ResolutionMultiplier = FMath::RoundToFloat(FMath::Lerp(FHighResScreenshotConfig::MinResolutionMultipler, FHighResScreenshotConfig::MaxResolutionMultipler, NewValue));
}
void OnMaskEnabledChanged( ECheckBoxState NewValue )
{
Config.bMaskEnabled = (NewValue == ECheckBoxState::Checked);
auto ConfigViewport = Config.TargetViewport.Pin();
if (ConfigViewport.IsValid())
{
ConfigViewport->GetClient()->GetEngineShowFlags()->SetHighResScreenshotMask(Config.bMaskEnabled);
ConfigViewport->Invalidate();
}
}
void OnHDREnabledChanged(ECheckBoxState NewValue)
{
Config.SetHDRCapture(NewValue == ECheckBoxState::Checked);
auto ConfigViewport = Config.TargetViewport.Pin();
if (ConfigViewport.IsValid())
{
ConfigViewport->Invalidate();
}
}
void OnBufferVisualizationDumpEnabledChanged(ECheckBoxState NewValue)
{
bool bEnabled = (NewValue == ECheckBoxState::Checked);
Config.bDumpBufferVisualizationTargets = bEnabled;
SetHDRUIEnableState(bEnabled);
}
EVisibility GetSpecifyCaptureRegionVisibility() const
{
return bCaptureRegionControlsVisible ? EVisibility::Hidden : EVisibility::Visible;
}
EVisibility GetCaptureRegionControlsVisibility() const
{
return bCaptureRegionControlsVisible ? EVisibility::Visible : EVisibility::Hidden;
}
void SetCaptureRegionControlsVisibility(bool bVisible)
{
bCaptureRegionControlsVisible = bVisible;
}
TOptional<float> GetResolutionMultiplier() const
{
return TOptional<float>(Config.ResolutionMultiplier);
}
float GetResolutionMultiplierSlider() const
{
return Config.ResolutionMultiplierScale;
}
ECheckBoxState GetMaskEnabled() const
{
return Config.bMaskEnabled ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
ECheckBoxState GetHDRCheckboxUIState() const
{
return Config.bCaptureHDR ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
ECheckBoxState GetBufferVisualizationDumpEnabled() const
{
return Config.bDumpBufferVisualizationTargets ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
bool IsCaptureRegionEditingAvailable() const
{
return CaptureRegionWidget.IsValid();
}
void SetHDRUIEnableState(bool bEnable)
{
HDRCheckBox->SetEnabled(bEnable);
HDRLabel->SetEnabled(bEnable);
}
static void WindowClosedHandler(const TSharedRef<SWindow>& InWindow);
static void ResetViewport();
TSharedPtr<SWindow> Window;
TSharedPtr<class SCaptureRegionWidget> CaptureRegionWidget;
TSharedPtr<SButton> CaptureRegionButton;
TSharedPtr<SHorizontalBox> RegionCaptureActiveControlRoot;
TSharedPtr<SCheckBox> HDRCheckBox;
TSharedPtr<STextBlock> HDRLabel;
FHighResScreenshotConfig& Config;
bool bCaptureRegionControlsVisible;
static TWeakPtr<SWindow> CurrentWindow;
static TWeakPtr<SHighResScreenshotDialog> CurrentDialog;
static bool bMaskVisualizationWasEnabled;
};