Files
UnrealEngineUWP/Engine/Source/Runtime/AppFramework/Private/Widgets/Testing/STestSuite.cpp

5976 lines
199 KiB
C++
Raw Normal View History

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "Widgets/Testing/STestSuite.h"
#include "HAL/PlatformProcess.h"
#include "Misc/Paths.h"
#include "Misc/Attribute.h"
#include "Modules/ModuleManager.h"
#include "InputCoreTypes.h"
#include "SlateGlobals.h"
#include "Layout/Visibility.h"
#include "Types/ISlateMetaData.h"
#include "Layout/Margin.h"
#include "Math/TransformCalculus2D.h"
#include "Rendering/SlateLayoutTransform.h"
#include "Animation/CurveHandle.h"
#include "Animation/CurveSequence.h"
#include "Styling/SlateColor.h"
#include "Textures/SlateShaderResource.h"
#include "Fonts/SlateFontInfo.h"
#include "Fonts/FontMeasure.h"
#include "Brushes/SlateDynamicImageBrush.h"
#include "Brushes/SlateImageBrush.h"
#include "Styling/SlateStyle.h"
#include "Input/Events.h"
#include "Input/Reply.h"
#include "Rendering/RenderingCommon.h"
#include "Rendering/DrawElements.h"
#include "Widgets/SWidget.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "Widgets/SCompoundWidget.h"
#include "Widgets/SBoxPanel.h"
#include "Widgets/SOverlay.h"
#include "Styling/SlateTypes.h"
#include "Styling/CoreStyle.h"
#include "Widgets/SWindow.h"
#include "Widgets/SUserWidget.h"
#include "Layout/WidgetPath.h"
#include "SlateOptMacros.h"
#include "Framework/Application/MenuStack.h"
#include "Framework/Application/SlateApplication.h"
#include "Textures/SlateIcon.h"
#include "Framework/Commands/InputChord.h"
#include "Framework/Commands/Commands.h"
#include "Framework/Commands/UICommandList.h"
#include "Framework/Text/TextRange.h"
#include "Framework/Text/IRun.h"
#include "Framework/Text/TextLayout.h"
#include "Framework/Text/ISlateRun.h"
#include "Framework/Text/SlateTextRun.h"
#include "Framework/Text/SlateHyperlinkRun.h"
#include "Framework/Text/SlateWidgetRun.h"
#include "Widgets/Layout/SFxWidget.h"
#include "Widgets/Layout/SBorder.h"
#include "Widgets/Layout/SSpacer.h"
#include "Widgets/Images/SImage.h"
#include "Widgets/Text/STextBlock.h"
#include "Framework/Text/ITextDecorator.h"
#include "Framework/Text/TextDecorators.h"
#include "Widgets/Text/SRichTextBlock.h"
#include "Widgets/Layout/SBox.h"
#include "Widgets/Layout/SGridPanel.h"
#include "Widgets/Layout/SUniformGridPanel.h"
#include "Framework/MultiBox/MultiBoxBuilder.h"
#include "Widgets/Input/SMultiLineEditableTextBox.h"
#include "Widgets/Input/SEditableText.h"
#include "Widgets/Input/SEditableTextBox.h"
#include "Widgets/Input/SButton.h"
#include "Widgets/SToolTip.h"
#include "Widgets/Notifications/SErrorText.h"
#include "Widgets/Input/SComboButton.h"
#include "Widgets/Layout/SSplitter.h"
#include "Widgets/Views/STableViewBase.h"
#include "Widgets/Views/STableRow.h"
#include "Widgets/Views/SListView.h"
#include "Widgets/Layout/SScrollBox.h"
#include "Widgets/Colors/SColorBlock.h"
#include "Widgets/Input/SCheckBox.h"
#include "Widgets/Input/SSpinBox.h"
#include "Widgets/Input/SComboBox.h"
#include "Framework/Docking/WorkspaceItem.h"
#include "Framework/Docking/TabManager.h"
#if !UE_BUILD_SHIPPING
Added the ability to take, save, and load widget snapshots via the widget reflector (Epic Friday) Major changes: - The widget reflector UI now uses tabs. The hierarchy and stats views have been moved to tabs, and new tabs have been added to support picking widgets from a snapshot. - The widget reflector node trees are no longer using UObject types. The idea here was to make the serialization easier, but it didn't work and I ended up using JSON instead. - When you take or load a widget snapshot, you're now shown the screenshot of the window associated with that snapshot, and are able to pick widgets from it as you would do with a live tree. API changes: - The tab spawners for the widget reflector and atlas visualizers are now registered automatically when the SlateReflector module is loaded. These are now the only way to create these windows. - The tabbed layout within the widget reflector has made it impossible to create the widget reflector unless spawned via a tab manager. To this end, the following functions have been removed from ISlateReflectorModule: - GetWidgetReflector - GetAtlasVisualizer - GetTextureAtlasVisualizer - GetFontAtlasVisualizer - These functions used to be used to create a raw widget reflector or atlas viewer widget. - If you were doing this because you were placing it into your own window, you can take advantage of the fact that the widget reflector tab spawner is always available, and use the global tab manager to create your window and place a spawned widget reflector tab inside it - SummonPerfTestSuite in SPerfSuite.cpp provides an example of this. - If you were doing this in the handler of your own widget reflector tab spawner, you can either just use the standard widget reflector tab spawner instead (you need to load the SlateReflector module once, and then "WidgetReflector" will be available to spawn via the global tab manager), or you can just use the DisplayWidgetReflector function of ISlateReflectorModule (which will internally do the same thing). [CL 2661609 by Jamie Dale in Main branch]
2015-08-19 16:30:27 -04:00
#include "ISlateReflectorModule.h"
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "Framework/Testing/STableViewTesting.h"
#include "Widgets/Input/SSearchBox.h"
#include "Widgets/Input/SVolumeControl.h"
#include "Widgets/Input/STextEntryPopup.h"
#include "Widgets/Notifications/SNotificationList.h"
#include "Widgets/Input/SNumericEntryBox.h"
#include "Widgets/Layout/SDPIScaler.h"
#include "Widgets/Text/SInlineEditableTextBlock.h"
#include "Widgets/Docking/SDockTab.h"
#include "Framework/Testing/SLayoutExample.h"
#include "Framework/Testing/SWidgetGallery.h"
#include "Framework/Testing/TestStyle.h"
#include "Framework/Text/RichTextLayoutMarshaller.h"
#include "Framework/Text/SyntaxHighlighterTextLayoutMarshaller.h"
#include "Widgets/Layout/SScissorRectBox.h"
#include "Math/TransformCalculus3D.h"
#include "Widgets/Layout/SResponsiveGridPanel.h"
#include "Widgets/Colors/SColorPicker.h"
#include "Widgets/Notifications/INotificationWidget.h"
#include "Widgets/SInvalidationPanel.h"
#define LOCTEXT_NAMESPACE "STestSuite"
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
namespace
{
/**
* A set of syntax tests for transform calculus to ensure that the basic primitives are supported properly.
* Does NOT test for correctness, purely syntax!
*/
bool TestTransformCalculus()
{
float uniScale = 5.8f;
FVector trans(5, 6, 7);
FQuat quat(FVector(1, 2, 3).GetSafeNormal(), 33.5f);
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
FRotator rot(7, 8, 9);
FMatrix mat = FRotationMatrix::Make(rot);
// Identity casts
const float& uniScale2 = TransformCast<float>(uniScale);
const FVector& trans2 = TransformCast<FVector>(trans);
const FQuat& quat2 = TransformCast<FQuat>(quat);
const FRotator& rot2 = TransformCast<FRotator>(rot);
const FMatrix& mat2 = TransformCast<FMatrix>(mat);
// rotation casts
auto quat3 = TransformCast<FQuat>(rot);
auto rot3 = TransformCast<FRotator>(quat);
// PVS-Studio complains about double initialization, but that's something we're testing
// so we disable the warning:
rot3 = TransformCast<FRotator>(mat); //-V519
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
// higher level transform casts
auto mat3 = TransformCast<FMatrix>(uniScale);
mat3 = TransformCast<FMatrix>(trans);
mat3 = TransformCast<FMatrix>(quat);
mat3 = TransformCast<FMatrix>(rot);
// basic concatenation
auto uniScale4 = Concatenate(uniScale, uniScale2);
auto trans4 = Concatenate(trans, trans2);
auto quat4 = Concatenate(quat, quat2);
auto rot4 = Concatenate(rot, rot2);
auto mat4 = Concatenate(mat, mat2);
// matrix conversion
FMatrix mat5;
FQuat quat5;
mat5 = Concatenate(uniScale4, trans4);
mat5 = Concatenate(trans4, uniScale4);
mat5 = Concatenate(uniScale4, quat4);
mat5 = Concatenate(quat4, uniScale4);
mat5 = Concatenate(uniScale4, rot4);
mat5 = Concatenate(rot4, uniScale4);
mat5 = Concatenate(uniScale4, mat4);
mat5 = Concatenate(mat4, uniScale4);
mat5 = Concatenate(trans4, quat4);
mat5 = Concatenate(quat4, trans4);
mat5 = Concatenate(trans4, rot4);
mat5 = Concatenate(rot4, trans4);
mat5 = Concatenate(trans4, mat4);
mat5 = Concatenate(mat4, trans4);
quat5 = Concatenate(quat4, rot4);
quat5 = Concatenate(rot4, quat4); //-V519
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
mat5 = Concatenate(quat4, mat4);
mat5 = Concatenate(mat4, quat4);
mat5 = Concatenate(rot4, mat4);
mat5 = Concatenate(mat4, rot4);
mat5 = Concatenate(Inverse(trans), rot, trans);
mat5 = Concatenate(Inverse(trans), rot, uniScale, trans);
FScale2D scale2D(1.4f, 3.2f);
FShear2D shear2D(-3.5f, -4.6f);
FVector2D trans2D(7, 8);
FQuat2D rot2D(1.4f);
FMatrix2x2 mat2D(5, 6, 7, 8);
FSlateLayoutTransform transformLayout(uniScale, trans2D);
FSlateRenderTransform transform2D = ::Concatenate(FScale2D(2, 4), FShear2D(0.5, 2), FQuat2D(FMath::DegreesToRadians(45.0f)), FVector2D(5, 7));
// Identity casts
const FScale2D& scale2D2 = TransformCast<FScale2D>(scale2D);
const FShear2D& shear2D2 = TransformCast<FShear2D>(shear2D);
const FVector2D& trans2D2 = TransformCast<FVector2D>(trans2D);
const FQuat2D& rot2D2 = TransformCast<FQuat2D>(rot2D);
const FMatrix2x2& mat2D2 = TransformCast<FMatrix2x2>(mat2D);
const FSlateLayoutTransform& transformLayout2 = TransformCast<FSlateLayoutTransform>(transformLayout);
const FSlateRenderTransform& transform2D2 = TransformCast<FSlateRenderTransform>(transform2D);
auto scale2D3 = Concatenate(scale2D, scale2D);
auto shear2D3 = Concatenate(shear2D, shear2D);
auto trans2D3 = Concatenate(trans2D, trans2D);
auto rot2D3 = Concatenate(rot2D, rot2D);
auto mat2D3 = Concatenate(mat2D, mat2D);
auto transformLayout3 = Concatenate(transformLayout, transformLayout);
auto transform2D3 = Concatenate(transform2D, transform2D);
// higher level transform casts
transformLayout3 = TransformCast<FSlateLayoutTransform>(uniScale);
transformLayout3 = TransformCast<FSlateLayoutTransform>(trans2D);
transform2D3 = TransformCast<FSlateRenderTransform>(uniScale);
transform2D3 = TransformCast<FSlateRenderTransform>(scale2D);
transform2D3 = TransformCast<FSlateRenderTransform>(shear2D);
transform2D3 = TransformCast<FSlateRenderTransform>(trans2D);
transform2D3 = TransformCast<FSlateRenderTransform>(rot2D);
transform2D3 = TransformCast<FSlateRenderTransform>(mat2D);
transform2D3 = TransformCast<FSlateRenderTransform>(transformLayout);
// basic concatenation
scale2D3 = Concatenate(uniScale, scale2D);
scale2D3 = Concatenate(scale2D, uniScale);
auto transformLayout4 = Concatenate(transformLayout, transformLayout);
transformLayout4 = Concatenate(uniScale, trans2D);
transformLayout4 = Concatenate(trans2D, uniScale);
transformLayout4 = Concatenate(uniScale, transformLayout);
transformLayout4 = Concatenate(trans2D, transformLayout);
transformLayout4 = Concatenate(transformLayout, uniScale);
transformLayout4 = Concatenate(transformLayout, trans2D);
auto transform2D4 = Concatenate(transform2D, transform2D);
transform2D4 = Concatenate(trans2D, scale2D);
transform2D4 = Concatenate(trans2D, shear2D);
transform2D4 = Concatenate(trans2D, rot2D);
transform2D4 = Concatenate(trans2D, mat2D);
transform2D4 = Concatenate(trans2D, transform2D);
transform2D4 = Concatenate(scale2D, transformLayout);
transform2D4 = Concatenate(scale2D, transform2D);
transform2D4 = Concatenate(shear2D, transformLayout);
transform2D4 = Concatenate(shear2D, transform2D);
transform2D4 = Concatenate(rot2D, transformLayout);
transform2D4 = Concatenate(rot2D, transform2D);
transform2D4 = Concatenate(mat2D, transformLayout);
transform2D4 = Concatenate(mat2D, transform2D);
transform2D4 = Concatenate(transformLayout, transform2D);
transform2D4 = Concatenate(scale2D, trans2D);
transform2D4 = Concatenate(shear2D, trans2D);
transform2D4 = Concatenate(rot2D, trans2D);
transform2D4 = Concatenate(mat2D, trans2D);
transform2D4 = Concatenate(transform2D, trans2D);
transform2D4 = Concatenate(transformLayout, scale2D);
transform2D4 = Concatenate(transform2D, scale2D);
transform2D4 = Concatenate(transformLayout, shear2D);
transform2D4 = Concatenate(transform2D, shear2D);
transform2D4 = Concatenate(transformLayout, rot2D);
transform2D4 = Concatenate(transform2D, rot2D);
transform2D4 = Concatenate(transformLayout, mat2D);
transform2D4 = Concatenate(transform2D, mat2D);
transform2D4 = Concatenate(transform2D, transformLayout);
auto mat2D4 = Concatenate(scale2D, shear2D);
mat2D4 = Concatenate(scale2D, rot2D);
mat2D4 = Concatenate(scale2D, mat2D);
mat2D4 = Concatenate(shear2D, scale2D);
mat2D4 = Concatenate(rot2D, scale2D);
mat2D4 = Concatenate(mat2D, scale2D);
mat2D4 = Concatenate(shear2D, rot2D);
mat2D4 = Concatenate(shear2D, mat2D);
mat2D4 = Concatenate(rot2D, shear2D);
mat2D4 = Concatenate(mat2D, shear2D);
mat2D4 = Concatenate(rot2D, mat2D);
mat2D4 = Concatenate(mat2D, rot2D);
{
auto matRot = Concatenate(FRotationMatrix::Make(FRotator(0.0f, 17.5f, 0.0f)), FRotationMatrix::Make(FRotator(12.4f, 5.7f, 29.0f)));
auto quatRot = Concatenate(FQuat(FRotator(0.0f, 17.5f, 0.0f)), FQuat(FRotator(12.4f, 5.7f, 29.0f)));
FVector vec(3.0f, 4.0f, 5.0f);
auto matRotRes = TransformPoint(matRot, vec);
auto quatRotRes = TransformPoint(quatRot, vec);
}
return true;
}
bool bTestTransformCalculus = TestTransformCalculus();
}
struct FOnPaintHandlerParams
{
const FGeometry& Geometry;
const FSlateRect& ClippingRect;
FSlateWindowElementList& OutDrawElements;
const int32 Layer;
const bool bEnabled;
FOnPaintHandlerParams( const FGeometry& InGeometry, const FSlateRect& InClippingRect, FSlateWindowElementList& InOutDrawElements, int32 InLayer, bool bInEnabled )
: Geometry( InGeometry )
, ClippingRect( InClippingRect )
, OutDrawElements( InOutDrawElements )
, Layer( InLayer )
, bEnabled( bInEnabled )
{
}
};
/** Delegate type for allowing custom OnPaint handlers */
DECLARE_DELEGATE_RetVal_OneParam(
int32,
FOnPaintHandler,
const FOnPaintHandlerParams& );
/** Widget with a handler for OnPaint; convenient for testing various DrawPrimitives. */
class SCustomPaintWidget : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SCustomPaintWidget )
: _OnPaintHandler()
{}
SLATE_EVENT( FOnPaintHandler, OnPaintHandler )
SLATE_END_ARGS()
/**
* Construct this widget
*
* @param InArgs The declaration data for this widget
*/
void Construct(const FArguments& InArgs)
{
OnPaintHandler = InArgs._OnPaintHandler;
}
virtual FVector2D ComputeDesiredSize(float) const override
{
return FVector2D(128, 128);
}
virtual int32 OnPaint( const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyClippingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled ) const override
{
if( OnPaintHandler.IsBound() )
{
FOnPaintHandlerParams Params( AllottedGeometry, MyClippingRect, OutDrawElements, LayerId, bParentEnabled && IsEnabled() );
OnPaintHandler.Execute( Params );
}
else
{
FSlateDrawElement::MakeDebugQuad(
OutDrawElements,
LayerId,
AllottedGeometry.ToPaintGeometry(),
MyClippingRect
);
}
return SCompoundWidget::OnPaint( Args, AllottedGeometry, MyClippingRect, OutDrawElements, LayerId, InWidgetStyle, bParentEnabled && IsEnabled() );
}
private:
FOnPaintHandler OnPaintHandler;
};
class SDynamicBrushTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SDynamicBrushTest ){}
SLATE_END_ARGS()
void Construct( const FArguments& InArgs )
{
ChildSlot
[
SNew( SVerticalBox )
+ SVerticalBox::Slot()
.FillHeight(1.0f)
.HAlign( HAlign_Left )
.VAlign( VAlign_Top )
[
SNew( SBorder )
[
SNew( SBox )
.WidthOverride( 128 )
.HeightOverride( 128 )
[
SNew( SImage )
.Image( this, &SDynamicBrushTest::GetImage )
]
]
]
+ SVerticalBox::Slot()
.FillHeight(.2f)
.HAlign( HAlign_Left )
[
SNew( SHorizontalBox )
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew( SEditableTextBox )
.Text( this, &SDynamicBrushTest::GetFilenameText )
.HintText( LOCTEXT("DynamicBrushTestLabel", "Type in full path to an image (png)") )
.OnTextCommitted( this, &SDynamicBrushTest::LoadImage )
]
+ SHorizontalBox::Slot()
.AutoWidth()
.Padding( 2.0f )
.VAlign( VAlign_Center )
[
SNew( SButton )
.ContentPadding( 1.0f )
.Text( LOCTEXT("ResetLabel", "Reset") )
.OnClicked( this, &SDynamicBrushTest::Reset )
]
]
];
}
~SDynamicBrushTest()
{
Reset();
}
private:
const FSlateBrush* GetImage() const
{
return DynamicBrush.IsValid() ? DynamicBrush.Get() : FCoreStyle::Get().GetBrush("Checkerboard");
}
void LoadImage( const FText& Text, ETextCommit::Type CommitType )
{
FilenameText = Text;
FString Filename = Text.ToString();
// Note Slate will append the extension automatically so remove the extension
FName BrushName( *FPaths::GetBaseFilename( Filename, false ) );
DynamicBrush = MakeShareable( new FSlateDynamicImageBrush( BrushName, FVector2D(128,128) ) );
}
FReply Reset()
{
FilenameText = FText::GetEmpty();
DynamicBrush.Reset();
return FReply::Handled();
}
FText GetFilenameText() const
{
return FilenameText;
}
private:
TSharedPtr<FSlateDynamicImageBrush> DynamicBrush;
FText FilenameText;
};
/** Test the draw elements . */
class SElementTesting : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SElementTesting ){}
SLATE_END_ARGS()
/**
* Construct the widget
*
* @param InArgs Declartion from which to construct the widget
*/
void Construct(const FArguments& InArgs)
{
FontScale = 1.0f;
// Arrange a bunch of DrawElement tester widgets in a vertical stack.
// Use custom OnPaint handlers.
this->ChildSlot
[
SNew( SVerticalBox )
+ SVerticalBox::Slot()
.AutoHeight()
.HAlign( HAlign_Right )
[
SNew( SButton )
.Text( LOCTEXT("DisableButton", "Disable") )
.OnClicked( this, &SElementTesting::OnDisableClicked )
]
+SVerticalBox::Slot()
.FillHeight(1)
[
SAssignNew( VerticalBox, SVerticalBox )
+ SVerticalBox::Slot()
.FillHeight(1)
[
SNew( SCustomPaintWidget )
.OnPaintHandler( this, &SElementTesting::TestBoxElement )
]
+ SVerticalBox::Slot()
.FillHeight(1)
[
SNew( SVerticalBox )
+ SVerticalBox::Slot()
.AutoHeight()
.HAlign(HAlign_Left)
.Padding( 4.0f )
[
SNew( SSpinBox<float> )
.Delta( .1f )
.Value( this, &SElementTesting::GetFontScale )
.OnValueChanged( this, &SElementTesting::OnScaleValueChanged )
]
+ SVerticalBox::Slot()
.FillHeight( 1.0f )
[
SNew( SCustomPaintWidget )
.OnPaintHandler( this, &SElementTesting::TestTextElement )
]
]
+ SVerticalBox::Slot()
.FillHeight(1)
[
SNew( SCustomPaintWidget )
.OnPaintHandler( this, &SElementTesting::TestGradientElement )
]
+ SVerticalBox::Slot()
.FillHeight(1)
[
SNew( SCustomPaintWidget )
.OnPaintHandler( this, &SElementTesting::TestSplineElement )
]
+ SVerticalBox::Slot()
.FillHeight(3)
[
SNew( SCustomPaintWidget )
.OnPaintHandler( this, &SElementTesting::TestRotation )
]
+ SVerticalBox::Slot()
.FillHeight(3)
[
SNew(SCustomPaintWidget)
.OnPaintHandler(this, &SElementTesting::TestCustomVerts)
]
+ SVerticalBox::Slot()
.FillHeight(3)
[
SNew( SDynamicBrushTest )
]
]
];
}
---- Merging with SlateDev branch ---- Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI. While asleep, Slate will skip the Tick & Paint pass for that frame entirely. - There are TWO ways to "wake" Slate and cause a Tick/Paint pass: 1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active. - Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick. 2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked. - The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action. - Examples include animation, async operations that update periodically, progress updates, loading bars, etc. - An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before. - An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick() - There are THREE ways to unregister an active tick: 1. Return EActiveTickReturnType::StopTicking from the active tick function 2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick() 3. Destroy the widget responsible for the active tick - Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar - There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed. - The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f) - The FCurveSequence API has been updated to work with the active tick system - Playing a curve sequence now requires that you pass the widget being animated by the sequence - The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete - GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end. [CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
virtual void Tick( const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime ) override
{
CenterRotation += InDeltaTime*.3;
if( CenterRotation > 2*PI)
{
CenterRotation-= 2*PI;
}
OuterRotation += (InDeltaTime *1.5);
if( OuterRotation > 2*PI)
{
OuterRotation-= 2*PI;
}
}
SElementTesting()
{
CenterRotation = 0;
OuterRotation = 0;
}
private:
TSharedPtr<SVerticalBox> VerticalBox;
float FontScale;
float CenterRotation;
float OuterRotation;
FReply OnDisableClicked()
{
VerticalBox->SetEnabled( !VerticalBox->IsEnabled() );
return FReply::Handled();
}
void OnScaleValueChanged( float NewScale )
{
FontScale = NewScale;
}
float GetFontScale() const
{
return FontScale;
}
int32 TestBoxElement( const FOnPaintHandlerParams& InParams )
{
const FSlateBrush* StyleInfo = FTestStyle::Get().GetDefaultBrush();
FSlateDrawElement::MakeBox(
InParams.OutDrawElements,
InParams.Layer,
InParams.Geometry.ToPaintGeometry(),
StyleInfo,
InParams.ClippingRect,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect
);
return InParams.Layer;
}
int32 TestTextElement( const FOnPaintHandlerParams& InParams )
{
const FText Text = LOCTEXT("TestText", "The quick brown fox jumps over the lazy dog 0123456789");
const FString FontName( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Regular.ttf" ) );
uint32 FontSize = 14;
Copying //UE4/WEX-Staging to Dev-Main (//UE4/Dev-Main) =================== MAJOR FEATURES + CHANGES =================== Change 3123735 on 2016/09/13 by Josh.Markiewicz #UE4 - added FNames for some common online features to be refactored later #codereview david.nikdel Change 3123608 on 2016/09/13 by Josh.Markiewicz #OSS - refactor FUniqueNetIdRepl to derive from FUniqueNetIdWrapper and clean up redundant code #codereview david.nikdel Change 3120074 on 2016/09/09 by David.Nikdel #Analytics: Move log message to more correct location Change 3120073 on 2016/09/09 by David.Nikdel #Analytics: Adjustments to ET.DroppedSubmission per Wes's feedback - Don't try to restore events at all if caching is disabled (but do log the error) - Stop accumulating events (even the ET.DroppedSubmission event) at 1024 cached to defend against run away accumulation #CodeReview: Wes.Hunt Change 3119959 on 2016/09/09 by Peter.Sauerbrei update to engine to provide the generic chunk install when one is not implemented or requested #rb none Change 3119378 on 2016/09/09 by David.Nikdel #Analytics #ET: Added a config option to not drop events in the event of a failure to flush. - Events are re-added to the queue (may result in some reordering but timestamps will still be there) in the event of a failure - Also appending an ET.DroppedSubmission event in this case so we can track how often clients fail. Has HTTP_STATUS and URL attributes. - Events accumulate within a given application run but no attempt is made to persist across crashes etc. #CodeReview: Wes.Hunt Change 3118773 on 2016/09/08 by Peter.Sauerbrei bring over fix for missing debug information in IOS executables #rb none Change 3118574 on 2016/09/08 by Peter.Sauerbrei pulled over architecture fix for IOS from Main #rb none Change 3117672 on 2016/09/08 by Steve.Allison Adding 3544_iPadMini3_ChAIRQA Change 3116529 on 2016/09/07 by Josh.Markiewicz #UE4 - reverted started IOS purchase/store work from default engine OSS plugins #codereview david.nikdel Change 3116010 on 2016/09/07 by Josh.Markiewicz #WEX - Copying //WEX/Dev-Mobile to Dev-Main (//WEX/Dev-Main) to get OnlineSubsystemiOS changes Change 3114411 on 2016/09/06 by Peter.Sauerbrei fix for deploying movies to the correct directory #rb none Change 3113944 on 2016/09/06 by Peter.Sauerbrei addition of resave packages command to UAT #rb none Change 3112948 on 2016/09/02 by Nathan.Green #WEX - Fixing file length on Android so that we can write out stats files (change is being submitted into Dev-Mobile by Chris Babcock) #CodeReview: Chance.Lyon, David.Nikdel Change 3112567 on 2016/09/02 by Josh.Markiewicz #UE4 - fixed possible exception when checking directories that don't exist (copy of CL#3099217) #rb ben.marsh Change 3112055 on 2016/09/02 by Chance.Lyon #WEX - Merging mobile branch changes into main Change 3108827 on 2016/08/31 by Peter.Sauerbrei fix for warning #rb none Change 3105012 on 2016/08/29 by Peter.Sauerbrei enable ICMP for Android #rb none Change 3103322 on 2016/08/26 by David.Nikdel #WEX: Fix for clang warnings in Font Outline code #CodeReview: Matt.Kuhlenschmidt Change 3102935 on 2016/08/26 by David.Nikdel Merging CL 3102878 from //UE4/Dev-Editor/Engine/... to //WEX/Main/Engine/... ------ Added support for outline fonts - An outline size (in slate units), optional material and optional fill color can be specified with each font info. - Outlines do not contribute to measurement directly so the text measuring and shaping methods have been modified to account for outlines - Fixed a bug where font materials do not work properly if part of the font's rendered glyphs were in a different atlas #CodeReview: Matt.Kuhlenschmidt, Matt.Hancy, Peter.Sauerbrei Change 3102541 on 2016/08/26 by Peter.Sauerbrei fix for build warning on Mac and IOS #rb none Change 3101820 on 2016/08/25 by Peter.Sauerbrei Moved the online changes to the plugins directory #rb none Change 3101808 on 2016/08/25 by Peter.Sauerbrei Merging using WEX_Main_to_UE4_WEX_Staging bringing in UE4 engine 4.14 #rb none Change 3097879 on 2016/08/23 by David.Nikdel #Analytics #OSS: Adjusted cohort selection algorithm and test cases Change 3096606 on 2016/08/22 by Nathan.Green #WEX - Adding bAllowWindowResize, bAllowClose, bAllowMaximize, and bAllowMinimize boolean to GeneralProjectSettings - Preventing us from resizing the window for the time being (in the future we may only allow along aspect ratio resizing) #CodeReview: Chance.Lyon, David.Nikdel Change 3094946 on 2016/08/19 by David.Nikdel #OSS - Added FUserOnlineAccountMcp::SelectCohort Change 3094942 on 2016/08/19 by David.Nikdel #UE4 - Made FMD5 const-correct Change 3092494 on 2016/08/17 by Nathan.Green #WEX - Making sure we never build zip64 instead of zip #CodeReview: Chance.Lyon, David.Nikdel, Chris.Babcock Change 3090760 on 2016/08/16 by Michael.Trepka Copy of CL 3089133 Fix for task bar displayed over the fullscreen window on Windows 10 with Anniversary Update Change 3090759 on 2016/08/16 by Michael.Trepka Copy of CL 3078927 Updated WindowTitleBarArea widget to not override window zone in fullscreen mode, to prevent window from being moved. That required adding separate handling for double click in fullscreen, as it's no longer handled by window action. Change 3087872 on 2016/08/12 by Josh.Markiewicz #UE4 - cleaned up IOS store/purchase interface (first pass, minus IAP restore) #codereview david.nikdel, josh.adams Change 3084182 on 2016/08/10 by Peter.Sauerbrei revert out the OpenGL shader compression code #rb none Change 3082565 on 2016/08/09 by Ben.Marsh Fix building with VS2015 update 3. Change 3082557 on 2016/08/09 by Ben.Marsh Fix UBT makefile being invalidated to update adaptive unity build settings, even if that module happens to not include that file in a unity file. Keep a list of all files included by unity files as well as files in the working set. #codereview Mike.Fricker, Michael.Noland Change 3082456 on 2016/08/09 by Josh.Markiewicz #UE4 - fixed typo Change 3082439 on 2016/08/09 by Josh.Markiewicz #UE4 - added CanMakePurchase call to IOS Change 3081905 on 2016/08/09 by Michael.Noland Editor: Made the text colors and font size in the output log configurable in the editor appearance settings (no changes to default values ... yet) #codereview matt.kuhlenschmidt Change 3080932 on 2016/08/08 by Josh.Markiewicz #UE4 - New IOS purchasing/store interface v2 - added interfaces to main IOS subsystem - added proper destruction of interfaces to Shutdown of IOS - moved FStoreKitHelper to its own file -- extended it for new v2 (improvements forthcoming) - MCPCatalogHelper returns bogus user id for IOS app store #codereview josh.adams, david.nikdel #tests very basic IAP stuff so far Change 3080217 on 2016/08/07 by Michael.Noland Engine: Prevented a startup warning when SpectatorClass is nullptr, as not all games require a spectator pawn - Also reduced the number of GetWorld() calls in APlayerController::SpawnSpectatorPawn() Change 3080046 on 2016/08/06 by Michael.Noland Engine: Moved where scissor rect reset happens for custom slate drawables to avoid a conflict with an existing fix in another branch #codereview matt.kuhlenschmidt Change 3080032 on 2016/08/06 by Michael.Noland UMG: Fixed a bug where screen-mode UWidgetComponent widgets were drawn incorrectly offset in splitscreen or with aspect-ratio constrained cameras #codereview nick.darnell, marc.audy Change 3080031 on 2016/08/06 by Michael.Noland Engine: Add the option to return player viewport-relative positions to ProjectWorldLocationToScreenWithDistance, ProjectWorldLocationToScreen, and ProjectWorldToScreen, which is useful if the position is going to be used for widgets in splitscreen or with aspect-ratio constrained cameras #codereview nick.darnell, marc.audy Change 3080029 on 2016/08/06 by Michael.Noland Engine: Fixed a bug where the debug console and other debug rendering would be an incorrect size (based on the last player viewport) and also be partially clipped (depending on what in Slate rendered previously) - This fixes issues with the console being offset and clipped when using aspect ratio constrained cameras or split screen #codereview matt.kuhlenschmidt Change 3079656 on 2016/08/05 by Josh.Markiewicz #WEX - basic IOS changes to project - added OnlineSubsystemIOS - added some default settings - removed GoogleVR from project #codereview david.nikdel Change 3078971 on 2016/08/05 by Steve.Allison Updating to match check-in for UE4 Main @ CL 3078968 Change 3078025 on 2016/08/04 by Michael.Trepka Copy of CLs 3073978 and 3075931 - More reliable way of checking if the cursor should be changed to resize cursor in bordeless window mode - On Windows, lock the cursor to the center of the rect if the cursor is hidden to avoid problems with borderless window's round corners not treated as part of the window. Change 3075415 on 2016/08/03 by Peter.Sauerbrei reduce the metal command buffers Change 3071457 on 2016/07/31 by David.Hunt #WEX Blueprint indexing @Pete: This change and anything in Engine/Content can be stomped by any engine integration. This is just to help with not having to resave all of these to udpate a few of our own content blueprints for search indexing. #CodeReview Peter.Sauerbrei, Steve.Allison, David.Nikdel Change 3068661 on 2016/07/28 by Josh.Markiewicz #WEX - changed the max number of possible UObjects allowed by a factor of 10 to reduce the memory footprint #codereview david.nikdel, peter.sauerbrei Change 3068500 on 2016/07/28 by David.Nikdel #OSSMCP: Use correct HttpRequest creation method to respect game service config Change 3066945 on 2016/07/27 by David.Nikdel Reproduced CL 3063869 from Michael.Noland >> Engine: Added a cvar (t.FPSChart.OpenFolderOnDump) to control whether or not FPS charts automatically open the profiling folder when stopfpschart is executed, which can be useful to avoid a bunch of open >> windows while doing automated testing #CodeReview: Michael.Noland #JIRA: WEX-2342 Change 3063495 on 2016/07/25 by Michael.Trepka Copy of CL 3063426 Borderless window support improvements: - the cursor changes to resize when hovering over the window edge - added a way for widgets to register a delegate that's called when window actions occur (maximize, restore, etc.) - used window action notification for WindowTitleBarArea to improve how toggling fullscreen on double click is handled Change 3063431 on 2016/07/25 by Michael.Trepka Copy of CL 3063057 - Use round corners for windows with no system title bar and border only in windowed mode. Change 3062654 on 2016/07/23 by Michael.Trepka Copy of CL 3046975 and 3056204 - Support for making the game window borderless (no system border or title bar). Disabled by default. Enabling requires adding bUseBorderlessWindow=True to [/Script/EngineSettings.GeneralProjectSettings] in DefaultGame.ini. The game using this is responsible for adding WindowTitleBarArea widget to its UI, as well as window minimize/maximize/close buttons. Change 3062647 on 2016/07/23 by Michael.Trepka Copy of CL 3029211 - Added a setting (on by default) to make the game window preserve its content's aspect ratio while being resized by user Change 3062646 on 2016/07/23 by Michael.Trepka Copy of CLs 3039855, 3042644 and 3042911 - Added an option to toggle fullscreen with F11 key in addition to Alt+Enter Change 3062638 on 2016/07/23 by Michael.Trepka Copy of CL 3038201 and CL 3046803 -Added WindowTitleBarArea widget Change 3062056 on 2016/07/22 by Peter.Sauerbrei addition of optimization for ios compile times Change 3054586 on 2016/07/18 by Nathan.Green #WEX - Adding tags around my engine level change #CodeReview: Chance.Lyon, David.Nikdel Change 3054581 on 2016/07/18 by Nathan.Green #WEX - Removing previous change, making all buttons ignore space bar and enter as we don't really care about that functionality #JIRA: WEX-2256 #CodeReview: Chance.Lyon, Colin.Pyle, David.Nikdel Change 3048243 on 2016/07/13 by Steve.Allison This one actually has the changes from rev4 Change 3046649 on 2016/07/12 by Steve.Allison Updating to match provision in UE4 Main @ CL 3046262 Change 3046127 on 2016/07/12 by Ian.Fox #UE4, #OnlineSubSystem - Hotfix in the ExpirationDate field early so we can update the OGF plugin #codereview David.Nikdel Change 3034707 on 2016/06/30 by Peter.Sauerbrei update provision to go with latest certificate #rb none Change 3031429 on 2016/06/28 by David.Nikdel #WEX: porting an engine change we depend on in latest OGF (pre integrate) Change 3030084 on 2016/06/27 by David.Nikdel #GameCatalog: Add code to export attributes in itemGrants #CodeReview: Scott.Bowen Change 3030073 on 2016/06/27 by David.Nikdel #Json: Make JsonObjectWrapper play nice with serialization and Import/Export Text #CodeReview: Scott.Bowen Change 3030029 on 2016/06/27 by David.Nikdel #WEX: Fix for FJsonObjectWrapper::ImportTextItem (use FParse::QuotedString to read from Buffer) #CodeReview: Scott.Bowen Change 3029740 on 2016/06/27 by David.Nikdel #OGF #JsonObjectWrapper - Add attributes to catalog grants @ScottB - I didn't get a chance to test this today. Things are crazy for PS+. All the code should already be there on the backend though. Here's a shelf in case you need it asap #CodeReview: Scott.Bowen Change 3028704 on 2016/06/27 by Ian.Fox Duplicating 3027482 from //Orion/Main Read TaggedPropertyRedirects from all config files to allow plugins to register property redirectors You'll need this before you grab the latest OGF or your catalog prices will go away, so here it is now #ue4 #rb David.Nikdel #tests none Change 3021448 on 2016/06/21 by Peter.Sauerbrei potential fix for android apk size issue Change 3020999 on 2016/06/21 by David.Nikdel #WEX: Likely fix for WEX-1610 #CodeReview: Chance.Lyon Change 3008450 on 2016/06/09 by Colin.Pyle #PF - WEX-1737, WEX-1744 - Adding the ability to set new layers in widget components - WidgetComponents are now blueprintable - New blueprint for the level marker menu widget components - Map marker menus are now in a layer above other widget components Change 3007804 on 2016/06/09 by Peter.Sauerbrei fix for build set up failure Change 3007292 on 2016/06/09 by Peter.Sauerbrei add the WEX e-mail stuff back in, seems to have gotten lost in the transition Change 3004478 on 2016/06/07 by Peter.Sauerbrei for now have the cooker respect the bCookAll flag in the project settings. Change 3000256 on 2016/06/03 by Peter.Sauerbrei fix for iOS compile warning Change 2998304 on 2016/06/02 by Nathan.Green #PF - Fixing Windowed Mode #CodeReview: Chance.Lyon, Colin.Pyle, Peter.Sauerbrei Change 2994269 on 2016/05/31 by Peter.Sauerbrei Merging //depot/UE4-WEX/... to //WEX/Main/... Change 2987181 on 2016/05/23 by Peter.Sauerbrei Merging //UE4/WEX-Staging/.p4ignore.txt //UE4/WEX-Staging/Engine/... //UE4/WEX-Staging/GenerateProjectFiles.bat //UE4/WEX-Staging/GenerateProjectFiles.command //UE4/WEX-Staging/GenerateProjectFiles.sh //UE4/WEX-Staging/UE4Games.uprojectdirs //UE4/WEX-Staging/WEX/... to //WEX/Main/... Change 2984959 on 2016/05/20 by Peter.Sauerbrei re-applying HSL engine change #PF PF-292 - Make sure to regenerate the list when you open the recipe view - Fixes cases where you buy an item in the store then return to evolve Change 2984957 on 2016/05/20 by Peter.Sauerbrei re-apply engine change from HSL #PF PF-33 - Check if we are in BeginDestroyed on Animation updates, possibly fixes a crash on level transition - Make interactive items play their mouseover animations - Heroes make the screen shake if they are on cooldown, we should figure out how to remove that on PC Change 2984956 on 2016/05/20 by Peter.Sauerbrei re-apply HSL change #PF PF-11 - Remove simulated touch with the mouse - Add Right-click support to the game - Right click now does the special attack Change 2984345 on 2016/05/19 by Peter.Sauerbrei Copying //UE4/WEX-Staging/... to //WEX/Main/... This should reset the merge history Change 2981872 on 2016/05/18 by Peter.Sauerbrei fixes for IOS build of WEX Change 2980734 on 2016/05/17 by Peter.Sauerbrei Copying //depot/UE4-WEX/... to //WEX/Main/... Populating WEX stream from old depot at CL2979954 #lockdown nick.penwarden [CL 3129012 by Peter Sauerbrei in Main branch]
2016-09-16 17:07:30 -04:00
FSlateFontInfo FontInfo(FontName, FontSize);
FontInfo.OutlineSettings.OutlineColor = FLinearColor::Blue;
FontInfo.OutlineSettings.OutlineSize = 2;
FSlateDrawElement::MakeText(
InParams.OutDrawElements,
InParams.Layer,
InParams.Geometry.ToPaintGeometry(FVector2D(0,0), InParams.Geometry.Size, FontScale),
Text.ToString(),
Copying //UE4/WEX-Staging to Dev-Main (//UE4/Dev-Main) =================== MAJOR FEATURES + CHANGES =================== Change 3123735 on 2016/09/13 by Josh.Markiewicz #UE4 - added FNames for some common online features to be refactored later #codereview david.nikdel Change 3123608 on 2016/09/13 by Josh.Markiewicz #OSS - refactor FUniqueNetIdRepl to derive from FUniqueNetIdWrapper and clean up redundant code #codereview david.nikdel Change 3120074 on 2016/09/09 by David.Nikdel #Analytics: Move log message to more correct location Change 3120073 on 2016/09/09 by David.Nikdel #Analytics: Adjustments to ET.DroppedSubmission per Wes's feedback - Don't try to restore events at all if caching is disabled (but do log the error) - Stop accumulating events (even the ET.DroppedSubmission event) at 1024 cached to defend against run away accumulation #CodeReview: Wes.Hunt Change 3119959 on 2016/09/09 by Peter.Sauerbrei update to engine to provide the generic chunk install when one is not implemented or requested #rb none Change 3119378 on 2016/09/09 by David.Nikdel #Analytics #ET: Added a config option to not drop events in the event of a failure to flush. - Events are re-added to the queue (may result in some reordering but timestamps will still be there) in the event of a failure - Also appending an ET.DroppedSubmission event in this case so we can track how often clients fail. Has HTTP_STATUS and URL attributes. - Events accumulate within a given application run but no attempt is made to persist across crashes etc. #CodeReview: Wes.Hunt Change 3118773 on 2016/09/08 by Peter.Sauerbrei bring over fix for missing debug information in IOS executables #rb none Change 3118574 on 2016/09/08 by Peter.Sauerbrei pulled over architecture fix for IOS from Main #rb none Change 3117672 on 2016/09/08 by Steve.Allison Adding 3544_iPadMini3_ChAIRQA Change 3116529 on 2016/09/07 by Josh.Markiewicz #UE4 - reverted started IOS purchase/store work from default engine OSS plugins #codereview david.nikdel Change 3116010 on 2016/09/07 by Josh.Markiewicz #WEX - Copying //WEX/Dev-Mobile to Dev-Main (//WEX/Dev-Main) to get OnlineSubsystemiOS changes Change 3114411 on 2016/09/06 by Peter.Sauerbrei fix for deploying movies to the correct directory #rb none Change 3113944 on 2016/09/06 by Peter.Sauerbrei addition of resave packages command to UAT #rb none Change 3112948 on 2016/09/02 by Nathan.Green #WEX - Fixing file length on Android so that we can write out stats files (change is being submitted into Dev-Mobile by Chris Babcock) #CodeReview: Chance.Lyon, David.Nikdel Change 3112567 on 2016/09/02 by Josh.Markiewicz #UE4 - fixed possible exception when checking directories that don't exist (copy of CL#3099217) #rb ben.marsh Change 3112055 on 2016/09/02 by Chance.Lyon #WEX - Merging mobile branch changes into main Change 3108827 on 2016/08/31 by Peter.Sauerbrei fix for warning #rb none Change 3105012 on 2016/08/29 by Peter.Sauerbrei enable ICMP for Android #rb none Change 3103322 on 2016/08/26 by David.Nikdel #WEX: Fix for clang warnings in Font Outline code #CodeReview: Matt.Kuhlenschmidt Change 3102935 on 2016/08/26 by David.Nikdel Merging CL 3102878 from //UE4/Dev-Editor/Engine/... to //WEX/Main/Engine/... ------ Added support for outline fonts - An outline size (in slate units), optional material and optional fill color can be specified with each font info. - Outlines do not contribute to measurement directly so the text measuring and shaping methods have been modified to account for outlines - Fixed a bug where font materials do not work properly if part of the font's rendered glyphs were in a different atlas #CodeReview: Matt.Kuhlenschmidt, Matt.Hancy, Peter.Sauerbrei Change 3102541 on 2016/08/26 by Peter.Sauerbrei fix for build warning on Mac and IOS #rb none Change 3101820 on 2016/08/25 by Peter.Sauerbrei Moved the online changes to the plugins directory #rb none Change 3101808 on 2016/08/25 by Peter.Sauerbrei Merging using WEX_Main_to_UE4_WEX_Staging bringing in UE4 engine 4.14 #rb none Change 3097879 on 2016/08/23 by David.Nikdel #Analytics #OSS: Adjusted cohort selection algorithm and test cases Change 3096606 on 2016/08/22 by Nathan.Green #WEX - Adding bAllowWindowResize, bAllowClose, bAllowMaximize, and bAllowMinimize boolean to GeneralProjectSettings - Preventing us from resizing the window for the time being (in the future we may only allow along aspect ratio resizing) #CodeReview: Chance.Lyon, David.Nikdel Change 3094946 on 2016/08/19 by David.Nikdel #OSS - Added FUserOnlineAccountMcp::SelectCohort Change 3094942 on 2016/08/19 by David.Nikdel #UE4 - Made FMD5 const-correct Change 3092494 on 2016/08/17 by Nathan.Green #WEX - Making sure we never build zip64 instead of zip #CodeReview: Chance.Lyon, David.Nikdel, Chris.Babcock Change 3090760 on 2016/08/16 by Michael.Trepka Copy of CL 3089133 Fix for task bar displayed over the fullscreen window on Windows 10 with Anniversary Update Change 3090759 on 2016/08/16 by Michael.Trepka Copy of CL 3078927 Updated WindowTitleBarArea widget to not override window zone in fullscreen mode, to prevent window from being moved. That required adding separate handling for double click in fullscreen, as it's no longer handled by window action. Change 3087872 on 2016/08/12 by Josh.Markiewicz #UE4 - cleaned up IOS store/purchase interface (first pass, minus IAP restore) #codereview david.nikdel, josh.adams Change 3084182 on 2016/08/10 by Peter.Sauerbrei revert out the OpenGL shader compression code #rb none Change 3082565 on 2016/08/09 by Ben.Marsh Fix building with VS2015 update 3. Change 3082557 on 2016/08/09 by Ben.Marsh Fix UBT makefile being invalidated to update adaptive unity build settings, even if that module happens to not include that file in a unity file. Keep a list of all files included by unity files as well as files in the working set. #codereview Mike.Fricker, Michael.Noland Change 3082456 on 2016/08/09 by Josh.Markiewicz #UE4 - fixed typo Change 3082439 on 2016/08/09 by Josh.Markiewicz #UE4 - added CanMakePurchase call to IOS Change 3081905 on 2016/08/09 by Michael.Noland Editor: Made the text colors and font size in the output log configurable in the editor appearance settings (no changes to default values ... yet) #codereview matt.kuhlenschmidt Change 3080932 on 2016/08/08 by Josh.Markiewicz #UE4 - New IOS purchasing/store interface v2 - added interfaces to main IOS subsystem - added proper destruction of interfaces to Shutdown of IOS - moved FStoreKitHelper to its own file -- extended it for new v2 (improvements forthcoming) - MCPCatalogHelper returns bogus user id for IOS app store #codereview josh.adams, david.nikdel #tests very basic IAP stuff so far Change 3080217 on 2016/08/07 by Michael.Noland Engine: Prevented a startup warning when SpectatorClass is nullptr, as not all games require a spectator pawn - Also reduced the number of GetWorld() calls in APlayerController::SpawnSpectatorPawn() Change 3080046 on 2016/08/06 by Michael.Noland Engine: Moved where scissor rect reset happens for custom slate drawables to avoid a conflict with an existing fix in another branch #codereview matt.kuhlenschmidt Change 3080032 on 2016/08/06 by Michael.Noland UMG: Fixed a bug where screen-mode UWidgetComponent widgets were drawn incorrectly offset in splitscreen or with aspect-ratio constrained cameras #codereview nick.darnell, marc.audy Change 3080031 on 2016/08/06 by Michael.Noland Engine: Add the option to return player viewport-relative positions to ProjectWorldLocationToScreenWithDistance, ProjectWorldLocationToScreen, and ProjectWorldToScreen, which is useful if the position is going to be used for widgets in splitscreen or with aspect-ratio constrained cameras #codereview nick.darnell, marc.audy Change 3080029 on 2016/08/06 by Michael.Noland Engine: Fixed a bug where the debug console and other debug rendering would be an incorrect size (based on the last player viewport) and also be partially clipped (depending on what in Slate rendered previously) - This fixes issues with the console being offset and clipped when using aspect ratio constrained cameras or split screen #codereview matt.kuhlenschmidt Change 3079656 on 2016/08/05 by Josh.Markiewicz #WEX - basic IOS changes to project - added OnlineSubsystemIOS - added some default settings - removed GoogleVR from project #codereview david.nikdel Change 3078971 on 2016/08/05 by Steve.Allison Updating to match check-in for UE4 Main @ CL 3078968 Change 3078025 on 2016/08/04 by Michael.Trepka Copy of CLs 3073978 and 3075931 - More reliable way of checking if the cursor should be changed to resize cursor in bordeless window mode - On Windows, lock the cursor to the center of the rect if the cursor is hidden to avoid problems with borderless window's round corners not treated as part of the window. Change 3075415 on 2016/08/03 by Peter.Sauerbrei reduce the metal command buffers Change 3071457 on 2016/07/31 by David.Hunt #WEX Blueprint indexing @Pete: This change and anything in Engine/Content can be stomped by any engine integration. This is just to help with not having to resave all of these to udpate a few of our own content blueprints for search indexing. #CodeReview Peter.Sauerbrei, Steve.Allison, David.Nikdel Change 3068661 on 2016/07/28 by Josh.Markiewicz #WEX - changed the max number of possible UObjects allowed by a factor of 10 to reduce the memory footprint #codereview david.nikdel, peter.sauerbrei Change 3068500 on 2016/07/28 by David.Nikdel #OSSMCP: Use correct HttpRequest creation method to respect game service config Change 3066945 on 2016/07/27 by David.Nikdel Reproduced CL 3063869 from Michael.Noland >> Engine: Added a cvar (t.FPSChart.OpenFolderOnDump) to control whether or not FPS charts automatically open the profiling folder when stopfpschart is executed, which can be useful to avoid a bunch of open >> windows while doing automated testing #CodeReview: Michael.Noland #JIRA: WEX-2342 Change 3063495 on 2016/07/25 by Michael.Trepka Copy of CL 3063426 Borderless window support improvements: - the cursor changes to resize when hovering over the window edge - added a way for widgets to register a delegate that's called when window actions occur (maximize, restore, etc.) - used window action notification for WindowTitleBarArea to improve how toggling fullscreen on double click is handled Change 3063431 on 2016/07/25 by Michael.Trepka Copy of CL 3063057 - Use round corners for windows with no system title bar and border only in windowed mode. Change 3062654 on 2016/07/23 by Michael.Trepka Copy of CL 3046975 and 3056204 - Support for making the game window borderless (no system border or title bar). Disabled by default. Enabling requires adding bUseBorderlessWindow=True to [/Script/EngineSettings.GeneralProjectSettings] in DefaultGame.ini. The game using this is responsible for adding WindowTitleBarArea widget to its UI, as well as window minimize/maximize/close buttons. Change 3062647 on 2016/07/23 by Michael.Trepka Copy of CL 3029211 - Added a setting (on by default) to make the game window preserve its content's aspect ratio while being resized by user Change 3062646 on 2016/07/23 by Michael.Trepka Copy of CLs 3039855, 3042644 and 3042911 - Added an option to toggle fullscreen with F11 key in addition to Alt+Enter Change 3062638 on 2016/07/23 by Michael.Trepka Copy of CL 3038201 and CL 3046803 -Added WindowTitleBarArea widget Change 3062056 on 2016/07/22 by Peter.Sauerbrei addition of optimization for ios compile times Change 3054586 on 2016/07/18 by Nathan.Green #WEX - Adding tags around my engine level change #CodeReview: Chance.Lyon, David.Nikdel Change 3054581 on 2016/07/18 by Nathan.Green #WEX - Removing previous change, making all buttons ignore space bar and enter as we don't really care about that functionality #JIRA: WEX-2256 #CodeReview: Chance.Lyon, Colin.Pyle, David.Nikdel Change 3048243 on 2016/07/13 by Steve.Allison This one actually has the changes from rev4 Change 3046649 on 2016/07/12 by Steve.Allison Updating to match provision in UE4 Main @ CL 3046262 Change 3046127 on 2016/07/12 by Ian.Fox #UE4, #OnlineSubSystem - Hotfix in the ExpirationDate field early so we can update the OGF plugin #codereview David.Nikdel Change 3034707 on 2016/06/30 by Peter.Sauerbrei update provision to go with latest certificate #rb none Change 3031429 on 2016/06/28 by David.Nikdel #WEX: porting an engine change we depend on in latest OGF (pre integrate) Change 3030084 on 2016/06/27 by David.Nikdel #GameCatalog: Add code to export attributes in itemGrants #CodeReview: Scott.Bowen Change 3030073 on 2016/06/27 by David.Nikdel #Json: Make JsonObjectWrapper play nice with serialization and Import/Export Text #CodeReview: Scott.Bowen Change 3030029 on 2016/06/27 by David.Nikdel #WEX: Fix for FJsonObjectWrapper::ImportTextItem (use FParse::QuotedString to read from Buffer) #CodeReview: Scott.Bowen Change 3029740 on 2016/06/27 by David.Nikdel #OGF #JsonObjectWrapper - Add attributes to catalog grants @ScottB - I didn't get a chance to test this today. Things are crazy for PS+. All the code should already be there on the backend though. Here's a shelf in case you need it asap #CodeReview: Scott.Bowen Change 3028704 on 2016/06/27 by Ian.Fox Duplicating 3027482 from //Orion/Main Read TaggedPropertyRedirects from all config files to allow plugins to register property redirectors You'll need this before you grab the latest OGF or your catalog prices will go away, so here it is now #ue4 #rb David.Nikdel #tests none Change 3021448 on 2016/06/21 by Peter.Sauerbrei potential fix for android apk size issue Change 3020999 on 2016/06/21 by David.Nikdel #WEX: Likely fix for WEX-1610 #CodeReview: Chance.Lyon Change 3008450 on 2016/06/09 by Colin.Pyle #PF - WEX-1737, WEX-1744 - Adding the ability to set new layers in widget components - WidgetComponents are now blueprintable - New blueprint for the level marker menu widget components - Map marker menus are now in a layer above other widget components Change 3007804 on 2016/06/09 by Peter.Sauerbrei fix for build set up failure Change 3007292 on 2016/06/09 by Peter.Sauerbrei add the WEX e-mail stuff back in, seems to have gotten lost in the transition Change 3004478 on 2016/06/07 by Peter.Sauerbrei for now have the cooker respect the bCookAll flag in the project settings. Change 3000256 on 2016/06/03 by Peter.Sauerbrei fix for iOS compile warning Change 2998304 on 2016/06/02 by Nathan.Green #PF - Fixing Windowed Mode #CodeReview: Chance.Lyon, Colin.Pyle, Peter.Sauerbrei Change 2994269 on 2016/05/31 by Peter.Sauerbrei Merging //depot/UE4-WEX/... to //WEX/Main/... Change 2987181 on 2016/05/23 by Peter.Sauerbrei Merging //UE4/WEX-Staging/.p4ignore.txt //UE4/WEX-Staging/Engine/... //UE4/WEX-Staging/GenerateProjectFiles.bat //UE4/WEX-Staging/GenerateProjectFiles.command //UE4/WEX-Staging/GenerateProjectFiles.sh //UE4/WEX-Staging/UE4Games.uprojectdirs //UE4/WEX-Staging/WEX/... to //WEX/Main/... Change 2984959 on 2016/05/20 by Peter.Sauerbrei re-applying HSL engine change #PF PF-292 - Make sure to regenerate the list when you open the recipe view - Fixes cases where you buy an item in the store then return to evolve Change 2984957 on 2016/05/20 by Peter.Sauerbrei re-apply engine change from HSL #PF PF-33 - Check if we are in BeginDestroyed on Animation updates, possibly fixes a crash on level transition - Make interactive items play their mouseover animations - Heroes make the screen shake if they are on cooldown, we should figure out how to remove that on PC Change 2984956 on 2016/05/20 by Peter.Sauerbrei re-apply HSL change #PF PF-11 - Remove simulated touch with the mouse - Add Right-click support to the game - Right click now does the special attack Change 2984345 on 2016/05/19 by Peter.Sauerbrei Copying //UE4/WEX-Staging/... to //WEX/Main/... This should reset the merge history Change 2981872 on 2016/05/18 by Peter.Sauerbrei fixes for IOS build of WEX Change 2980734 on 2016/05/17 by Peter.Sauerbrei Copying //depot/UE4-WEX/... to //WEX/Main/... Populating WEX stream from old depot at CL2979954 #lockdown nick.penwarden [CL 3129012 by Peter Sauerbrei in Main branch]
2016-09-16 17:07:30 -04:00
FontInfo,
InParams.ClippingRect,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect,
FColor( 255, 255, 255 )
);
return InParams.Layer;
}
int32 TestGradientElement( const FOnPaintHandlerParams& InParams )
{
TArray<FSlateGradientStop> GradientStops;
GradientStops.Add( FSlateGradientStop(FVector2D(InParams.Geometry.Size.X*.1f, 0), FColor::Yellow) );
GradientStops.Add( FSlateGradientStop( FVector2D(InParams.Geometry.Size.X*.25f,0), FColor::Magenta ) );
GradientStops.Add( FSlateGradientStop( FVector2D(InParams.Geometry.Size.X*.75f,0), FColor::Blue ) );
GradientStops.Add( FSlateGradientStop( FVector2D(InParams.Geometry.Size.X*0.9f,0), FColor::Green) );
FSlateDrawElement::MakeGradient(
InParams.OutDrawElements,
InParams.Layer,
InParams.Geometry.ToPaintGeometry(),
GradientStops,
Orient_Vertical,
InParams.ClippingRect,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect
);
return InParams.Layer;
}
int32 TestSplineElement( const FOnPaintHandlerParams& InParams )
{
const FVector2D Start(10,10);
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
const FVector2D StartDir(InParams.Geometry.Size.X * 1000 / 600,0);
const FVector2D End(InParams.Geometry.Size.X/4, InParams.Geometry.Size.Y-10);
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
const FVector2D EndDir(InParams.Geometry.Size.X * 1000 / 600,0);
FSlateDrawElement::MakeSpline(
InParams.OutDrawElements,
InParams.Layer,
InParams.Geometry.ToPaintGeometry(),
Start, StartDir,
End, EndDir,
InParams.ClippingRect,
4.0f,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect,
FColor::White
);
FVector2D LineStart = FVector2D( InParams.Geometry.Size.X/4, 10.0f );
TArray<FVector2D> LinePoints;
LinePoints.Add( LineStart );
LinePoints.Add( LineStart + FVector2D( 100.0f, 50.0f ) );
LinePoints.Add( LineStart + FVector2D( 200.0f, 10.0f ) );
LinePoints.Add( LineStart + FVector2D( 300.0f, 50.0f ) );
LinePoints.Add( LineStart + FVector2D( 400.0f, 10.0f ) );
FSlateDrawElement::MakeLines(
InParams.OutDrawElements,
InParams.Layer,
InParams.Geometry.ToPaintGeometry(),
LinePoints,
InParams.ClippingRect,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect,
FColor::Magenta
);
LineStart = LinePoints[ LinePoints.Num() - 1 ] + FVector2D(50,10);
LinePoints.Empty();
for( float I = 0; I < 10*PI; I+=.1f)
{
LinePoints.Add( LineStart + FVector2D( I*15 , 15*FMath::Sin( I ) ) );
}
static FColor Color = FColor::MakeRandomColor();
FSlateDrawElement::MakeLines(
InParams.OutDrawElements,
InParams.Layer,
InParams.Geometry.ToPaintGeometry(),
LinePoints,
InParams.ClippingRect,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect,
Color );
return InParams.Layer;
}
void MakeRotationExample( const FOnPaintHandlerParams& InParams )
{
const FSlateBrush* CenterBrush = FTestStyle::Get().GetBrush("TestRotation40px");
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
const FSlateBrush* TestBrush = FTestStyle::Get().GetBrush("TestRotation20px");
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
const FVector2D LocalPos = FVector2D(50,50);
const FVector2D LocalSize = CenterBrush->ImageSize;
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
FSlateLayoutTransform CenterLayoutTransform(LocalPos);
// Make a box that rotates around its center. Note if you don't specify the rotation point or rotation space
// it defaults to rotating about the center of the box. ERotationSpace::RelativeToElement is used by default in this case.
// If any rotation point is specified in that space, is relative to the element (0,0 is the upper left of the element)
{
FSlateDrawElement::MakeRotatedBox(
InParams.OutDrawElements,
InParams.Layer,
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
InParams.Geometry.ToPaintGeometry( LocalSize, CenterLayoutTransform ),
CenterBrush,
InParams.ClippingRect,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect,
CenterRotation
);
}
// Make a box that rotates around the center of the previous box
{
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
FSlateLayoutTransform OrbitLayoutTransform(LocalPos + LocalSize);
const FVector2D LocalCenterOfRotation = (LocalPos + (LocalPos+LocalSize))*.5f;
const FVector2D RelativeOrbitPos = TransformPoint(Inverse(OrbitLayoutTransform), LocalCenterOfRotation);
FSlateDrawElement::MakeRotatedBox(
InParams.OutDrawElements,
InParams.Layer,
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
InParams.Geometry.ToPaintGeometry( TestBrush->ImageSize, OrbitLayoutTransform ),
TestBrush,
InParams.ClippingRect,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect,
OuterRotation,
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
RelativeOrbitPos);
}
}
int32 TestRotation( const FOnPaintHandlerParams& InParams )
{
const FSlateBrush* StyleInfo = FCoreStyle::Get().GetBrush("FocusRectangle");
FSlateDrawElement::MakeBox(
InParams.OutDrawElements,
InParams.Layer,
InParams.Geometry.ToPaintGeometry(),
StyleInfo,
InParams.ClippingRect,
InParams.bEnabled ? ESlateDrawEffect::None : ESlateDrawEffect::DisabledEffect
);
MakeRotationExample( InParams );
return InParams.Layer;
}
int32 TestCustomVerts(const FOnPaintHandlerParams& InParams)
{
const float Radius = FMath::Min(InParams.Geometry.Size.X, InParams.Geometry.Size.Y)*0.5f;
const FVector2D Center = InParams.Geometry.AbsolutePosition + InParams.Geometry.Size*0.5f;
const FSlateBrush* MyBrush = FCoreStyle::Get().GetBrush("ColorWheel.HueValueCircle");
// @todo this is not the correct way to do this
FSlateShaderResourceProxy *ResourceProxy = FSlateDataPayload::ResourceManager->GetShaderResource(*MyBrush);
FSlateResourceHandle Handle = FSlateApplication::Get().GetRenderer()->GetResourceHandle( *MyBrush );
FVector2D UVCenter = FVector2D::ZeroVector;
FVector2D UVRadius = FVector2D(1,1);
if (ResourceProxy != nullptr)
{
UVRadius = 0.5f*ResourceProxy->SizeUV;
UVCenter = ResourceProxy->StartUV + UVRadius;
}
// Make a triangle fan in the area allotted
const int NumTris = 12;
TArray<FSlateVertex> Verts;
Verts.Reserve(NumTris*3);
// Center Vertex
Verts.AddZeroed();
{
FSlateVertex& NewVert = Verts.Last();
NewVert.Position[0] = Center.X;
NewVert.Position[1] = Center.Y;
NewVert.TexCoords[0] = UVCenter.X;
NewVert.TexCoords[1] = UVCenter.Y;
NewVert.TexCoords[2] = NewVert.TexCoords[3] = 1.0f;
NewVert.Color = FColor::White;
NewVert.ClipRect = FSlateRotatedRect(InParams.ClippingRect);
}
for (int i = 0; i < NumTris; ++i)
{
Verts.AddZeroed();
{
const float Angle = (2*PI*i) / NumTris;
const FVector2D EdgeDirection(FMath::Cos(Angle), FMath::Sin(Angle));
const FVector2D Edge(Radius*EdgeDirection);
FSlateVertex& NewVert = Verts.Last();
NewVert.Position[0] = Center.X + Edge.X;
NewVert.Position[1] = Center.Y + Edge.Y;
NewVert.TexCoords[0] = UVCenter.X + UVRadius.X*EdgeDirection.X;
NewVert.TexCoords[1] = UVCenter.Y + UVRadius.Y*EdgeDirection.Y;
NewVert.TexCoords[2] = NewVert.TexCoords[3] = 1.0f;
NewVert.Color = FColor::White;
NewVert.ClipRect = FSlateRotatedRect(InParams.ClippingRect);
}
}
TArray<SlateIndex> Indexes;
for (int i = 1; i <= NumTris; ++i)
{
Indexes.Add(0);
Indexes.Add(i);
Indexes.Add( (i+1 > 12) ? (1) : (i+1) );
}
FSlateDrawElement::MakeCustomVerts(InParams.OutDrawElements, InParams.Layer, Handle, Verts, Indexes, nullptr, 0, 0);
return InParams.Layer;
}
};
class SDocumentsTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SDocumentsTest ){}
SLATE_END_ARGS()
struct FDocumentInfo
{
FDocumentInfo( const FText& InDisplayName )
: DisplayName( InDisplayName )
{
}
FText DisplayName;
};
void Construct( const FArguments& InArgs, FTabManager* InTabManager )
{
TabManager = InTabManager;
{
Documents.Add( MakeShareable( new FDocumentInfo( LOCTEXT("Document01", "Document 1") ) ) );
Documents.Add( MakeShareable( new FDocumentInfo( LOCTEXT("Document02", "Document 2") ) ) );
Documents.Add( MakeShareable( new FDocumentInfo( LOCTEXT("Document03", "Document 3") ) ) );
Documents.Add( MakeShareable( new FDocumentInfo( LOCTEXT("Document04", "Document 4") ) ) );
Documents.Add( MakeShareable( new FDocumentInfo( LOCTEXT("Document05", "Document 5") ) ) );
}
bButtonOneVisible = true;
this->ChildSlot
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
[
SNew(SListView< TSharedRef<FDocumentInfo> >)
.ItemHeight(24)
.SelectionMode(ESelectionMode::None)
.ListItemsSource( &Documents )
.OnGenerateRow( this, &SDocumentsTest::GenerateListRow )
]
+ SVerticalBox::Slot() .HAlign(HAlign_Center) .VAlign(VAlign_Center)
[
SNew(SButton)
.ContentPadding(20).HAlign(HAlign_Center).VAlign(VAlign_Center)
[
SNew(SButton)
.RenderTransform( FSlateRenderTransform( Concatenate( FVector2D(20.0f, 20.0f), FQuat2D(-PI/12.0f) ) ) )
.ContentPadding(20).HAlign(HAlign_Center).VAlign(VAlign_Center)
[
SNew(SButton)
.RenderTransform( FSlateRenderTransform( Concatenate( FVector2D(20.0f, 20.0f), FQuat2D(-PI/12.0f) ) ) )
.ContentPadding(20).HAlign(HAlign_Center).VAlign(VAlign_Center)
[
SNew(SButton)
.IsEnabled(false)
.RenderTransform( FSlateRenderTransform( Concatenate( FVector2D(20.0f, 20.0f), FQuat2D(-PI/12.0f) ) ) )
.ContentPadding(20).HAlign(HAlign_Center).VAlign(VAlign_Center)
[
SNew(SButton)
.RenderTransform( FSlateRenderTransform( Concatenate( FVector2D(20.0f, 20.0f), FQuat2D(-PI/12.0f) ) ) )
.ContentPadding(20).HAlign(HAlign_Center).VAlign(VAlign_Center)
[
SNew(STextBlock)
.Text(NSLOCTEXT("x","ClickMe","ClickMe!"))
]
]
]
]
]
]
+ SVerticalBox::Slot()
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
[
SNew(SButton)
.Visibility( this, &SDocumentsTest::GetButtonOneVisibility )
.Text(LOCTEXT("Button1", "Button One"))
.OnClicked(this, &SDocumentsTest::ToggleButtonOneVisibility)
]
+ SHorizontalBox::Slot()
[
SNew(SButton)
.Text(LOCTEXT("Button2", "Button Two"))
.OnClicked(this, &SDocumentsTest::ToggleButtonOneVisibility)
]
]
];
}
TSharedRef<ITableRow> GenerateListRow(TSharedRef< FDocumentInfo > InItem, const TSharedRef<STableViewBase>& OwnerTable)
{
return SNew( STableRow< TSharedRef<FDocumentInfo> >, OwnerTable )
[
SNew(SButton)
.OnClicked( FOnClicked::CreateSP( this, &SDocumentsTest::SummonDocumentButtonClicked, InItem ) )
.Text( InItem->DisplayName )
];
}
FReply SummonDocumentButtonClicked( TSharedRef<FDocumentInfo> DocumentName )
{
TabManager->InsertNewDocumentTab
(
"DocTest", FTabManager::ESearchPreference::RequireClosedTab,
SNew( SDockTab )
.Label( DocumentName->DisplayName )
.TabRole( ETabRole::DocumentTab )
[
SNew(SBox)
.HAlign(HAlign_Center) .VAlign(VAlign_Center)
[
SNew(STextBlock)
.Text( DocumentName->DisplayName )
]
]
.TabWellContentRight()
[
SNew(STextBlock).Text( LOCTEXT("DocumentRightContentLabel", "Right Content") )
]
);
return FReply::Handled();
}
EVisibility GetButtonOneVisibility() const
{
return bButtonOneVisible ? EVisibility::Visible : EVisibility::Collapsed;
}
FReply ToggleButtonOneVisibility()
{
bButtonOneVisible = !bButtonOneVisible;
return FReply::Handled();
}
FTabManager* TabManager;
TArray< TSharedRef<FDocumentInfo> > Documents;
bool bButtonOneVisible;
};
class SSplitterTest : public SCompoundWidget
{
/** Visibility state and mutators. */
struct FVisibilityCycler
{
public:
FVisibilityCycler()
: TheVisibility(EVisibility::Visible)
{
}
EVisibility GetVisibility() const
{
return TheVisibility;
}
FReply CycleVisibility()
{
TheVisibility = NextVisibilityState(TheVisibility);
return FReply::Handled();
}
protected:
static EVisibility NextVisibilityState( const EVisibility InVisibility )
{
if (InVisibility == EVisibility::Visible)
{
return EVisibility::Hidden;
}
else if (InVisibility == EVisibility::Hidden)
{
return EVisibility::Collapsed;
}
else if ( InVisibility == EVisibility::Collapsed )
{
return EVisibility::Visible;
}
else
{
return EVisibility::Visible;
}
}
EVisibility TheVisibility;
};
public:
SLATE_BEGIN_ARGS( SSplitterTest ){}
SLATE_END_ARGS()
/**
* Construct the widget
*
* @param InArgs Declartion from which to construct the widget
*/
void Construct(const FArguments& InArgs)
{
this->ChildSlot
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
.Padding(5)
.HAlign(HAlign_Center)
[
// BUTTONS for toggling layout visibility
// (Arranged in a mini-layout version of the splitters below)
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SButton)
.Text( LOCTEXT("Col0Row0Visibility", "Col0Row0 Visibility") )
.OnClicked( Col0Row0Vis, &FVisibilityCycler::CycleVisibility )
]
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SButton)
.Text( LOCTEXT("Col0Row1Visibility", "Col0Row1 Visibility") )
.OnClicked( Col0Row1Vis, &FVisibilityCycler::CycleVisibility )
]
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SButton)
.Text( LOCTEXT("Col0Row2Visibility", "Col0Row2 Visibility") )
.OnClicked( Col0Row2Vis, &FVisibilityCycler::CycleVisibility )
]
]
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
.Text( LOCTEXT("CenterVisibility", "CenterVis Visibility") )
.OnClicked( CenterVis, &FVisibilityCycler::CycleVisibility )
]
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SButton)
.Text( LOCTEXT("Col2Row0Visibility", "Col2Row0 Visibility") )
.OnClicked( Col2Row0Vis, &FVisibilityCycler::CycleVisibility )
]
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SButton)
.Text( LOCTEXT("Col2Row1Visibility", "Col2Row1 Visibility") )
.OnClicked( Col2Row1Vis, &FVisibilityCycler::CycleVisibility )
]
]
]
+ SVerticalBox::Slot()
. FillHeight(1)
[
// SPLITTERS
SAssignNew(TopLeveSplitter, SSplitter)
.ResizeMode( ESplitterResizeMode::Fill )
+ SSplitter::Slot()
[
SAssignNew(Nested0, SSplitter)
.Orientation(Orient_Vertical)
.ResizeMode( ESplitterResizeMode::Fill )
+SSplitter::Slot()
[
SNew(SBorder)
.Visibility(Col0Row0Vis, &FVisibilityCycler::GetVisibility)
[
SNew(STextBlock)
.Text( LOCTEXT("Col0Row0", "Col 0 Row 0") )
]
]
+SSplitter::Slot()
[
SNew(SBorder)
.Visibility(Col0Row1Vis, &FVisibilityCycler::GetVisibility)
[
SNew(STextBlock) .Text( LOCTEXT("Col0Row1", "Col 0 Row 1") )
]
]
+SSplitter::Slot()
[
SNew(SBorder)
.Visibility(Col0Row2Vis, &FVisibilityCycler::GetVisibility)
[
SNew(STextBlock) .Text( LOCTEXT("Col0Row2", "Col 0 Row 2") )
]
]
]
+ SSplitter::Slot()
. SizeRule( SSplitter::SizeToContent )
[
SNew(SBorder)
.Visibility(CenterVis, &FVisibilityCycler::GetVisibility)
.Padding( 5.0f )
[
SNew(SButton)
.OnClicked( this, &SSplitterTest::FlipTopLevelSplitter )
.Text( LOCTEXT("Re-orient", "Re-orient") )
]
]
+ SSplitter::Slot()
[
SAssignNew(Nested1, SSplitter)
.Orientation(Orient_Vertical)
.ResizeMode( ESplitterResizeMode::Fill )
+SSplitter::Slot()
[
SNew(SBorder)
.Visibility(Col2Row0Vis, &FVisibilityCycler::GetVisibility)
[
SNew(STextBlock) .Text( LOCTEXT("Col2Row0", "Col 2 Row 0") )
]
]
+SSplitter::Slot()
[
SNew(SBorder)
.Visibility(Col2Row1Vis, &FVisibilityCycler::GetVisibility)
[
SNew(STextBlock) .Text( LOCTEXT("Col2Row1", "Col 1 Row 1") )
]
]
]
]
];
}
SSplitterTest()
: Col0Row0Vis( new FVisibilityCycler() )
, Col0Row1Vis( new FVisibilityCycler() )
, Col0Row2Vis( new FVisibilityCycler() )
, CenterVis( new FVisibilityCycler() )
, Col2Row0Vis( new FVisibilityCycler() )
, Col2Row1Vis( new FVisibilityCycler() )
{
}
protected:
FReply FlipTopLevelSplitter()
{
TopLeveSplitter->SetOrientation( TopLeveSplitter->GetOrientation() == Orient_Horizontal ? Orient_Vertical : Orient_Horizontal );
Nested0->SetOrientation( Nested0->GetOrientation() == Orient_Horizontal ? Orient_Vertical : Orient_Horizontal );
Nested1->SetOrientation( Nested1->GetOrientation() == Orient_Horizontal ? Orient_Vertical : Orient_Horizontal );
return FReply::Handled();
}
// Visibility states for the various cells within the splitter test.
TSharedRef<FVisibilityCycler> Col0Row0Vis;
TSharedRef<FVisibilityCycler> Col0Row1Vis;
TSharedRef<FVisibilityCycler> Col0Row2Vis;
TSharedRef<FVisibilityCycler> CenterVis;
TSharedRef<FVisibilityCycler> Col2Row0Vis;
TSharedRef<FVisibilityCycler> Col2Row1Vis;
TSharedPtr<SSplitter> TopLeveSplitter;
TSharedPtr<SSplitter> Nested0;
TSharedPtr<SSplitter> Nested1;
};
#if WITH_FANCY_TEXT
class SMultiLineEditingTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS( SMultiLineEditingTest )
{}
SLATE_END_ARGS()
void Construct( const FArguments& InArgs )
{
bIsReadOnly = false;
MultilineEditableText = LOCTEXT( "MultiLineTextTest", "He has refused his Assent to Laws, the most wholesome and necessary for the public good.\nHe has forbidden his Governors to pass Laws of immediate and pressing importance, unless suspended in their operation till his Assent should be obtained; and when so suspended, he has utterly neglected to attend to them.\nHe has refused to pass other Laws for the accommodation of large districts of people, unless those people would relinquish the right of Representation in the Legislature, a right inestimable to them and formidable to tyrants only.\n\nHe has called together legislative bodies at places unusual, uncomfortable, and distant from the depository of their public Records, for the sole purpose of fatiguing them into compliance with his measures.\nHe has dissolved Representative Houses repeatedly, for opposing with manly firmness his invasions on the rights of the people.\nHe has refused for a long time, after such dissolutions, to cause others to be elected; whereby the Legislative powers, incapable of Annihilation, have returned to the People at large for their exercise; the State remaining in the mean time exposed to all the dangers of invasion from without, and convulsions within.\nHe has endeavoured to prevent the population of these States; for that purpose obstructing the Laws for Naturalization of Foreigners; refusing to pass others to encourage their migrations hither, and raising the conditions of new Appropriations of Lands.\n" );
this->ChildSlot
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.FillHeight( 1 )
[
SNew( SHorizontalBox )
+ SHorizontalBox::Slot()
.AutoWidth()
.VAlign( VAlign_Top )
.Padding( 2 )
[
SNew( SVerticalBox )
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew( STextBlock )
.Text( LOCTEXT( "MultiLineTextWrapAt600px", "Multi-line editable text wrapping at 600px" ) )
]
+ SVerticalBox::Slot()
[
SNew( SMultiLineEditableTextBox )
.Text( this, &SMultiLineEditingTest::GetMultilineEditableText )
.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT( "Slate/Fonts/Roboto-Regular.ttf" ), 12 ) )
.Justification( ETextJustify::Center )
.LineHeightPercentage( 2.0f )
.OnTextCommitted( this, &SMultiLineEditingTest::HandleMultilineEditableTextCommitted )
.WrapTextAt( 600.0f )
]
]
+ SHorizontalBox::Slot()
.FillWidth( 1 )
.Padding( 2 )
[
SNew( SVerticalBox )
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew( SHorizontalBox )
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew( STextBlock )
.Text( LOCTEXT( "MultiLineTextAutoWrap", "Multi-line editable text auto-wrapping" ) )
]
+SHorizontalBox::Slot()
.HAlign(HAlign_Right)
[
SNew( SCheckBox )
.IsChecked(this, &SMultiLineEditingTest::IsReadOnlyChecked)
.OnCheckStateChanged(this, &SMultiLineEditingTest::OnReadOnlyCheckedStateChanged)
[
SNew( STextBlock )
.Text( LOCTEXT( "MultiLineTextReadOnly", "Read-only?" ) )
]
]
]
+ SVerticalBox::Slot()
[
SNew( SMultiLineEditableTextBox )
.Margin( 10 )
.Text( MultilineEditableText )
.IsReadOnly( this, &SMultiLineEditingTest::IsReadOnly )
//.Justification(ETextJustify::Right)
.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT( "Slate/Fonts/Roboto-Regular.ttf" ), 12 ) )
.AutoWrapText( true )
.HintText( LOCTEXT( "TypehereTextHint", "Type Here" ) )
]
]
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew( SHorizontalBox )
+ SHorizontalBox::Slot()
.VAlign( VAlign_Top )
.Padding( 2 )
[
SNew( SVerticalBox )
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew( STextBlock )
.Text( LOCTEXT( "MultiLineTextNoWrap", "Multi-line editable text without wrapping" ) )
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew( SHorizontalBox )
+ SHorizontalBox::Slot()
[
SNew( SMultiLineEditableTextBox )
.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT( "Slate/Fonts/Roboto-Regular.ttf" ), 12 ) )
.HintText( LOCTEXT("MultiLineHintText", "This is hint line 1\nThis is hint line 2") )
//.WrapTextAt(300.0f)
//.Justification( ETextJustify::Right )
]
]
]
]
];
}
private:
FText GetMultilineEditableText() const
{
return MultilineEditableText;
}
void HandleMultilineEditableTextCommitted( const FText& Text, ETextCommit::Type Type )
{
MultilineEditableText = Text;
}
bool IsReadOnly() const
{
return bIsReadOnly;
}
ECheckBoxState IsReadOnlyChecked() const
{
return (bIsReadOnly) ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
void OnReadOnlyCheckedStateChanged(ECheckBoxState InState)
{
bIsReadOnly = (InState == ECheckBoxState::Checked);
}
bool bIsReadOnly;
FText MultilineEditableText;
};
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
struct RichTextHelper
{
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
static FText GetAliceInWonderland()
{
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
return FText::FromString(
TEXT("The <a id=\"browser\" href=\"http://en.wikipedia.org/wiki/Dormouse_(Alice%27s_Adventures_in_Wonderland)\" style=\"RichText.Interactive.Text.Hyperlink\">Dormouse</> had closed its eyes by this time, and was going off into a doze; but, on being pinched by the Hatter, it woke up again with a little shriek, and went on: '<RichText.Interactive.Text.Dialogue>-that begins with an M, such as </><a id=\"browser\" href=\"http://en.wikipedia.org/wiki/Mousetrap_(weapon)\" style=\"RichText.Interactive.Text.DialogueHyperlink\">mouse-traps</><RichText.Interactive.Text.Dialogue>, and the moon, and memory, and muchness-you know you say things are \"much of a muchness\"-did you ever see such a thing as a drawing of a muchness?</>'")
TEXT("\n\n")
TEXT("'<RichText.Interactive.Text.Dialogue>Really, now you ask me,</>' said <a id=\"browser\" href=\"http://en.wikipedia.org/wiki/Alice_(Alice%27s_Adventures_in_Wonderland)\" style=\"RichText.Interactive.Text.Hyperlink\">Alice</>, very much confused, '<RichText.Interactive.Text.Dialogue>I don't think-</>'")
TEXT("\n\n")
TEXT("'<RichText.Interactive.Text.Dialogue>Then you shouldn't talk,</>' said the <a id=\"browser\" href=\"http://en.wikipedia.org/wiki/The_Hatter\" style=\"RichText.Interactive.Text.Hyperlink\">Hatter</>.")
TEXT("\n\n")
TEXT("This piece of rudeness was more than <a id=\"browser\" href=\"http://en.wikipedia.org/wiki/Alice_(Alice%27s_Adventures_in_Wonderland)\" style=\"RichText.Interactive.Text.Hyperlink\">Alice</> could bear: she got up in great disgust, and walked off; the <a id=\"browser\" href=\"http://en.wikipedia.org/wiki/Dormouse_(Alice%27s_Adventures_in_Wonderland)\" style=\"RichText.Interactive.Text.Hyperlink\">Dormouse</> fell asleep instantly, and neither of the others took the least notice of her going, though she looked back once or twice, half hoping that they would call after her: the last time she saw them, they were trying to put the <a id=\"browser\" href=\"http://en.wikipedia.org/wiki/Dormouse_(Alice%27s_Adventures_in_Wonderland)\" style=\"RichText.Interactive.Text.Hyperlink\">Dormouse</> into the teapot.")
TEXT("\n\n")
TEXT("'<RichText.Interactive.Text.Dialogue>At any rate I'll never go </><RichText.Interactive.Text.StrongDialogue>THERE</><RichText.Interactive.Text.Dialogue> again!</>' said <a id=\"browser\" href=\"http://en.wikipedia.org/wiki/Alice_(Alice%27s_Adventures_in_Wonderland)\" style=\"RichText.Interactive.Text.Hyperlink\">Alice</> as she picked her way through the wood. '<RichText.Interactive.Text.Dialogue>It's the stupidest tea-party I ever was at in all my life!</>'")
TEXT("\n\n")
TEXT("Just as she said this, she noticed that one of the trees had a door leading right into it. '<RichText.Interactive.Text.Dialogue>That's very curious!</>' she thought. '<RichText.Interactive.Text.Dialogue>But everything's curious today. I think I may as well go in at once.</>' And in she went.")
TEXT("\n\n")
TEXT("Once more she found herself in the long hall, and close to the little glass table. '<RichText.Interactive.Text.Dialogue>Now, I'll manage better this time,</>' she said to herself, and began by taking the little golden key, and unlocking the door that led into the garden. Then she went to work nibbling at the mushroom (she had kept a piece of it in her pocket) till she was about a foot high: then she walked down the little passage: and THEN-she found herself at last in the beautiful garden, among the bright flower-beds and the cool fountains.")
TEXT("\n\n")
TEXT("A large rose-tree stood near the entrance of the garden: the roses growing on it were white, but there were three gardeners at it, busily painting them red. <a id=\"browser\" href=\"http://en.wikipedia.org/wiki/Alice_(Alice%27s_Adventures_in_Wonderland)\" style=\"RichText.Interactive.Text.Hyperlink\">Alice</> thought this a very curious thing, and she went nearer to watch them, and just as she came up to them she heard one of them say, '<RichText.Interactive.Text.Dialogue>Look out now, Five! Don't go splashing paint over me like that!</>'")
TEXT("\n\n")
TEXT("'<RichText.Interactive.Text.Dialogue>I couldn't help it,</>' said Five, in a sulky tone; '<RichText.Interactive.Text.Dialogue>Seven jogged my elbow.</>'")
TEXT("\n\n")
TEXT("On which Seven looked up and said, '<RichText.Interactive.Text.Dialogue>That's right, Five! Always lay the blame on others!</>'")
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
TEXT("\n\n"));
}
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
static FText GetTheWarOfTheWorlds_Part1()
{
return FText::FromString(
TEXT("When we had finished eating we went softly upstairs to my study, and I looked again out of the open window. In one night the valley had become a valley of ashes. The fires had dwindled now. Where flames had been there were now streamers of smoke; but the countless ruins of shattered and gutted houses and blasted and blackened trees that the night had hidden stood out now gaunt and terrible in the pitiless light of dawn. Yet here and there some object had had the luck to escape--a white railway signal here, the end of a greenhouse there, white and fresh amid the wreckage. Never before in the history of warfare had destruction been so indiscriminate and so universal. And shining with the growing light of the east, three of the metallic giants stood about the pit, their cowls rotating as though they were surveying the desolation they had made.")
TEXT("\n\n")
TEXT("It seemed to me that the pit had been enlarged, and ever and again puffs of vivid green vapour streamed up and out of it towards the brightening dawn--streamed up, whirled, broke, and vanished.")
TEXT("\n\n")
TEXT("Beyond were the pillars of fire about Chobham. They became pillars of bloodshot smoke at the first touch of day.")
TEXT("\n\n")
TEXT("As the dawn grew brighter we withdrew from the window from which we had watched the Martians, and went very quietly downstairs.")
TEXT("\n\n")
TEXT("The artilleryman agreed with me that the house was no place to stay in. He proposed, he said, to make his way Londonward, and thence rejoin his battery--No. 12, of the Horse Artillery. My plan was to return at once to Leatherhead; and so greatly had the strength of the Martians impressed me that I had determined to take my wife to Newhaven, and go with her out of the country forthwith. For I already perceived clearly that the country about London must inevitably be the scene of a disastrous struggle before such creatures as these could be destroyed.")
TEXT("\n\n")
TEXT("Between us and Leatherhead, however, lay the third cylinder, with its guarding giants. Had I been alone, I think I should have taken my chance and struck across country. But the artilleryman dissuaded me: \"It's no kindness to the right sort of wife,\" he said, \"to make her a widow\"; and in the end I agreed to go with him, under cover of the woods, northward as far as Street Cobham before I parted with him. Thence I would make a big detour by Epsom to reach Leatherhead.")
TEXT("\n\n")
TEXT("I should have started at once, but my companion had been in active service and he knew better than that. He made me ransack the house for a flask, which he filled with whiskey; and we lined every available pocket with packets of biscuits and slices of meat. Then we crept out of the house, and ran as quickly as we could down the ill-made road by which I had come overnight. The houses seemed deserted. In the road lay a group of three charred bodies close together, struck dead by the Heat-Ray; and here and there were things that people had dropped--a clock, a slipper, a silver spoon, and the like poor valuables. At the corner turning up towards the post office a little cart, filled with boxes and furniture, and horseless, heeled over on a broken wheel. A cash box had been hastily smashed open and thrown under the debris.")
TEXT("\n\n")
TEXT("Except the lodge at the Orphanage, which was still on fire, none of the houses had suffered very greatly here. The Heat-Ray had shaved the chimney tops and passed. Yet, save ourselves, there did not seem to be a living soul on Maybury Hill. The majority of the inhabitants had escaped, I suppose, by way of the Old Woking road--the road I had taken when I drove to Leatherhead--or they had hidden.")
TEXT("\n\n")
TEXT("We went down the lane, by the body of the man in black, sodden now from the overnight hail, and broke into the woods at the foot of the hill. We pushed through these towards the railway without meeting a soul. The woods across the line were but the scarred and blackened ruins of woods; for the most part the trees had fallen, but a certain proportion still stood, dismal grey stems, with dark brown foliage instead of green.")
TEXT("\n\n")
TEXT("On our side the fire had done no more than scorch the nearer trees; it had failed to secure its footing. In one place the woodmen had been at work on Saturday; trees, felled and freshly trimmed, lay in a clearing, with heaps of sawdust by the sawing-machine and its engine. Hard by was a temporary hut, deserted. There was not a breath of wind this morning, and everything was strangely still. Even the birds were hushed, and as we hurried along I and the artilleryman talked in whispers and looked now and again over our shoulders. Once or twice we stopped to listen.")
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
TEXT("\n\n"));
}
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
static FText GetTheWarOfTheWorlds_Part2()
{
return FText::FromString(
TEXT("And beyond, over the blue hills that rise southward of the river, the glittering Martians went to and fro, calmly and methodically spreading their poison cloud over this patch of country and then over that, laying it again with their steam jets when it had served its purpose, and taking possession of the conquered country. They do not seem to have aimed at extermination so much as at complete demoralisation and the destruction of any opposition. They exploded any stores of powder they came upon, cut every telegraph, and wrecked the railways here and there. They were hamstringing mankind. They seemed in no hurry to extend the field of their operations, and did not come beyond the central part of London all that day. It is possible that a very considerable number of people in London stuck to their houses through Monday morning. Certain it is that many died at home suffocated by the Black Smoke.")
TEXT("\n\n")
TEXT("Until about midday the Pool of London was an astonishing scene. Steamboats and shipping of all sorts lay there, tempted by the enormous sums of money offered by fugitives, and it is said that many who swam out to these vessels were thrust off with boathooks and drowned. About one o'clock in the afternoon the thinning remnant of a cloud of the black vapour appeared between the arches of Blackfriars Bridge. At that the Pool became a scene of mad confusion, fighting, and collision, and for some time a multitude of boats and barges jammed in the northern arch of the Tower Bridge, and the sailors and lightermen had to fight savagely against the people who swarmed upon them from the riverfront. People were actually clambering down the piers of the bridge from above.")
TEXT("\n\n")
TEXT("When, an hour later, a Martian appeared beyond the Clock Tower and waded down the river, nothing but wreckage floated above Limehouse.")
TEXT("\n\n")
TEXT("Of the falling of the fifth cylinder I have presently to tell. The sixth star fell at Wimbledon. My brother, keeping watch beside the women in the chaise in a meadow, saw the green flash of it far beyond the hills. On Tuesday the little party, still set upon getting across the sea, made its way through the swarming country towards Colchester. The news that the Martians were now in possession of the whole of London was confirmed. They had been seen at Highgate, and even, it was said, at Neasden. But they did not come into my brother's view until the morrow.")
TEXT("\n\n")
TEXT("That day the scattered multitudes began to realise the urgent need of provisions. As they grew hungry the rights of property ceased to be regarded. Farmers were out to defend their cattle-sheds, granaries, and ripening root crops with arms in their hands. A number of people now, like my brother, had their faces eastward, and there were some desperate souls even going back towards London to get food. These were chiefly people from the northern suburbs, whose knowledge of the Black Smoke came by hearsay. He heard that about half the members of the government had gathered at Birmingham, and that enormous quantities of high explosives were being prepared to be used in automatic mines across the Midland counties.")
TEXT("\n\n")
TEXT("He was also told that the Midland Railway Company had replaced the desertions of the first day's panic, had resumed traffic, and was running northward trains from St. Albans to relieve the congestion of the home counties. There was also a placard in Chipping Ongar announcing that large stores of flour were available in the northern towns and that within twenty-four hours bread would be distributed among the starving people in the neighbourhood. But this intelligence did not deter him from the plan of escape he had formed, and the three pressed eastward all day, and heard no more of the bread distribution than this promise. Nor, as a matter of fact, did anyone else hear more of it. That night fell the seventh star, falling upon Primrose Hill. It fell while Miss Elphinstone was watching, for she took that duty alternately with my brother. She saw it.")
TEXT("\n\n")
TEXT("On Wednesday the three fugitives--they had passed the night in a field of unripe wheat--reached Chelmsford, and there a body of the inhabitants, calling itself the Committee of Public Supply, seized the pony as provisions, and would give nothing in exchange for it but the promise of a share in it the next day. Here there were rumours of Martians at Epping, and news of the destruction of Waltham Abbey Powder Mills in a vain attempt to blow up one of the invaders.")
TEXT("\n\n")
TEXT("People were watching for Martians here from the church towers. My brother, very luckily for him as it chanced, preferred to push on at once to the coast rather than wait for food, although all three of them were very hungry. By midday they passed through Tillingham, which, strangely enough, seemed to be quite silent and deserted, save for a few furtive plunderers hunting for food. Near Tillingham they suddenly came in sight of the sea, and the most amazing crowd of shipping of all sorts that it is possible to imagine.")
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
TEXT("\n\n"));
}
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
static FText GetTheWarOfTheWorlds_Part3()
{
return FText::FromString(
TEXT("They saw the gaunt figures separating and rising out of the water as they retreated shoreward, and one of them raised the camera-like generator of the Heat-Ray. He held it pointing obliquely downward, and a bank of steam sprang from the water at its touch. It must have driven through the iron of the ship's side like a white-hot iron rod through paper.")
TEXT("\n\n")
TEXT("But no one heeded that very much. At the sight of the Martian's collapse the captain on the bridge yelled inarticulately, and all the crowding passengers on the steamer's stern shouted together. And then they yelled again. For, surging out beyond the white tumult, drove something long and black, the flames streaming from its middle parts, its ventilators and funnels spouting fire.")
TEXT("\n\n")
TEXT("She was alive still; the steering gear, it seems, was intact and her engines working. She headed straight for a second Martian, and was within a hundred yards of him when the Heat-Ray came to bear. Then with a violent thud, a blinding flash, her decks, her funnels, leaped upward. The Martian staggered with the violence of her explosion, and in another moment the flaming wreckage, still driving forward with the impetus of its pace, had struck him and crumpled him up like a thing of cardboard. My brother shouted involuntarily. A boiling tumult of steam hid everything again.")
TEXT("\n\n")
TEXT("\"Two!\" yelled the captain.")
TEXT("\n\n")
TEXT("Everyone was shouting. The whole steamer from end to end rang with frantic cheering that was taken up first by one and then by all in the crowding multitude of ships and boats that was driving out to sea.")
TEXT("\n\n")
TEXT("The little vessel continued to beat its way seaward, and the ironclads receded slowly towards the coast, which was hidden still by a marbled bank of vapour, part steam, part black gas, eddying and combining in the strangest way. The fleet of refugees was scattering to the northeast; several smacks were sailing between the ironclads and the steamboat. After a time, and before they reached the sinking cloud bank, the warships turned northward, and then abruptly went about and passed into the thickening haze of evening southward. The coast grew faint, and at last indistinguishable amid the low banks of clouds that were gathering about the sinking sun.")
TEXT("\n\n")
TEXT("Then suddenly out of the golden haze of the sunset came the vibration of guns, and a form of black shadows moving. Everyone struggled to the rail of the steamer and peered into the blinding furnace of the west, but nothing was to be distinguished clearly. A mass of smoke rose slanting and barred the face of the sun. The steamboat throbbed on its way through an interminable suspense.")
TEXT("\n\n")
TEXT("The sun sank into grey clouds, the sky flushed and darkened, the evening star trembled into sight. It was deep twilight when the captain cried out and pointed. My brother strained his eyes. Something rushed up into the sky out of the greyness--rushed slantingly upward and very swiftly into the luminous clearness above the clouds in the western sky; something flat and broad, and very large, that swept round in a vast curve, grew smaller, sank slowly, and vanished again into the grey mystery of the night. And as it flew it rained down darkness upon the land.")
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
TEXT("\n\n"));
}
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
static FText GetAroundTheWorldIn80Days_Rainbow()
{
return FText::FromString(
TEXT("<Rainbow.Text.Red>\"</><Rainbow.Text.Orange>I</> <Rainbow.Text.Yellow>know</> <Rainbow.Text.Green>it;</> <Rainbow.Text.Blue>I</> <Rainbow.Text.Red>don't</> <Rainbow.Text.Orange>blame</> <Rainbow.Text.Yellow>you.</> <Rainbow.Text.Green>We</> <Rainbow.Text.Blue>start</> <Rainbow.Text.Red>for</> <Rainbow.Text.Orange>Dover</> <Rainbow.Text.Yellow>and</> <Rainbow.Text.Green>Calais</> <Rainbow.Text.Blue>in</> <Rainbow.Text.Red>ten</> <Rainbow.Text.Orange>minutes.</>\"")
TEXT("\n\n")
TEXT("<Rainbow.Text.Yellow>A</> <Rainbow.Text.Green>puzzled</> <Rainbow.Text.Blue>grin</> <Rainbow.Text.Red>overspread</> <Rainbow.Text.Orange>Passepartout's</> <Rainbow.Text.Yellow>round</> <Rainbow.Text.Green>face;</> <Rainbow.Text.Blue>clearly</> <Rainbow.Text.Red>he</> <Rainbow.Text.Orange>had</> <Rainbow.Text.Yellow>not</> <Rainbow.Text.Green>comprehended</> <Rainbow.Text.Blue>his</> <Rainbow.Text.Red>master.</>")
TEXT("\n\n")
TEXT("<Rainbow.Text.Orange>\"</><Rainbow.Text.Yellow>Monsieur</> <Rainbow.Text.Green>is</> <Rainbow.Text.Blue>going</> <Rainbow.Text.Red>to</> <Rainbow.Text.Orange>leave</> <Rainbow.Text.Yellow>home?</><Rainbow.Text.Green>\"</>")
TEXT("\n\n")
TEXT("<Rainbow.Text.Blue>\"</><Rainbow.Text.Red>Yes,</><Rainbow.Text.Orange>\"</> <Rainbow.Text.Yellow>returned</> <Rainbow.Text.Green>Phileas</> <Rainbow.Text.Blue>Fogg.</> <Rainbow.Text.Red>\"</><Rainbow.Text.Orange>We</> <Rainbow.Text.Yellow>are</> <Rainbow.Text.Green>going</> <Rainbow.Text.Blue>round</> <Rainbow.Text.Red>the</> <Rainbow.Text.Yellow>world.</><Rainbow.Text.Green>\"</>")
TEXT("\n\n")
TEXT("<Rainbow.Text.Blue>Passepartout</> <Rainbow.Text.Red>opened</> <Rainbow.Text.Orange>wide</> <Rainbow.Text.Yellow>his</> <Rainbow.Text.Green>eyes,</> <Rainbow.Text.Blue>raised</> <Rainbow.Text.Red>his</> <Rainbow.Text.Orange>eyebrows,</> <Rainbow.Text.Yellow>held</> <Rainbow.Text.Green>up</> <Rainbow.Text.Blue>his</> <Rainbow.Text.Red>hands,</> <Rainbow.Text.Orange>and</> <Rainbow.Text.Yellow>seemed</> <Rainbow.Text.Green>about</> <Rainbow.Text.Blue>to</> <Rainbow.Text.Red>collapse,</> <Rainbow.Text.Orange>so</> <Rainbow.Text.Yellow>overcome</> <Rainbow.Text.Green>was</> <Rainbow.Text.Blue>he</> <Rainbow.Text.Red>with</> <Rainbow.Text.Orange>stupefied</> <Rainbow.Text.Yellow>astonishment.</>")
TEXT("\n\n")
TEXT("<Rainbow.Text.Green>\"</><Rainbow.Text.Blue>Round</> <Rainbow.Text.Red>the</> <Rainbow.Text.Orange>world!</><Rainbow.Text.Yellow>\"</> <Rainbow.Text.Green>he</> <Rainbow.Text.Blue>murmured.</>")
TEXT("\n\n")
TEXT("<Rainbow.Text.Red>\"</><Rainbow.Text.Orange>In</> <Rainbow.Text.Yellow>eighty</> <Rainbow.Text.Green>days,</><Rainbow.Text.Blue>\"</> <Rainbow.Text.Red>responded</> <Rainbow.Text.Yellow>Mr. Fogg.</> <Rainbow.Text.Green>\"</><Rainbow.Text.Blue>So</> <Rainbow.Text.Red>we</> <Rainbow.Text.Yellow>haven't</> <Rainbow.Text.Green>a</> <Rainbow.Text.Blue>moment</> <Rainbow.Text.Red>to</> <Rainbow.Text.Orange>lose.</><Rainbow.Text.Yellow>\"</>")
TEXT("\n\n")
TEXT("<Rainbow.Text.Green>\"</><Rainbow.Text.Blue>But</> <Rainbow.Text.Red>the</> <Rainbow.Text.Yellow>trunks?</><Rainbow.Text.Green>\"</> <Rainbow.Text.Blue>gasped</> <Rainbow.Text.Red>Passepartout,</> <Rainbow.Text.Yellow>unconsciously</> <Rainbow.Text.Green>swaying</> <Rainbow.Text.Blue>his</> <Rainbow.Text.Red>head</> <Rainbow.Text.Yellow>from</> <Rainbow.Text.Green>right</> <Rainbow.Text.Blue>to</> <Rainbow.Text.Red>left.</>")
TEXT("<Rainbow.Text.Orange>\"</><Rainbow.Text.Yellow>We'll</> <Rainbow.Text.Green>have</> <Rainbow.Text.Blue>no</> <Rainbow.Text.Red>trunks;</> <Rainbow.Text.Orange>only</> <Rainbow.Text.Yellow>a</> <Rainbow.Text.Green>carpet-bag,</> <Rainbow.Text.Blue>with</> <Rainbow.Text.Red>two</> <Rainbow.Text.Yellow>shirts</> <Rainbow.Text.Green>and</> <Rainbow.Text.Blue>three</> <Rainbow.Text.Red>pairs</> <Rainbow.Text.Orange>of</> <Rainbow.Text.Yellow>stockings</> <Rainbow.Text.Green>for</> <Rainbow.Text.Blue>me,</> <Rainbow.Text.Red>and</> <Rainbow.Text.Orange>the</> <Rainbow.Text.Yellow>same</> <Rainbow.Text.Green>for</> <Rainbow.Text.Blue>you.</> <Rainbow.Text.Red>We'll</> <Rainbow.Text.Orange>buy</> <Rainbow.Text.Yellow>our</> <Rainbow.Text.Green>clothes</> <Rainbow.Text.Blue>on</> <Rainbow.Text.Red>the</> <Rainbow.Text.Orange>way.</> <Rainbow.Text.Yellow>Bring</> <Rainbow.Text.Green>down</> <Rainbow.Text.Blue>my</> <Rainbow.Text.Red>mackintosh</> <Rainbow.Text.Orange>and</> <Rainbow.Text.Yellow>traveling-cloak,</> <Rainbow.Text.Green>and</> <Rainbow.Text.Blue>some</> <Rainbow.Text.Red>stout</> <Rainbow.Text.Yellow>shoes,</> <Rainbow.Text.Green>though</> <Rainbow.Text.Blue>we</> <Rainbow.Text.Red>shall</> <Rainbow.Text.Orange>do</> <Rainbow.Text.Yellow>little</> <Rainbow.Text.Green>walking.</> <Rainbow.Text.Blue>Make haste!</><Rainbow.Text.Red>\"</>")
TEXT("\n\n")
TEXT("<Rainbow.Text.Orange>Passepartout</> <Rainbow.Text.Yellow>tried</> <Rainbow.Text.Green>to</> <Rainbow.Text.Blue>reply,</> <Rainbow.Text.Red>but</> <Rainbow.Text.Orange>could</> <Rainbow.Text.Yellow>not.</> <Rainbow.Text.Green>He</> <Rainbow.Text.Blue>went</> <Rainbow.Text.Red>out,</> <Rainbow.Text.Orange>mounted</> <Rainbow.Text.Yellow>to</> <Rainbow.Text.Green>his</> <Rainbow.Text.Blue>own</> <Rainbow.Text.Red>room,</> <Rainbow.Text.Orange>fell</> <Rainbow.Text.Yellow>into</> <Rainbow.Text.Green>a</> <Rainbow.Text.Blue>chair,</> <Rainbow.Text.Red>and</> <Rainbow.Text.Orange>muttered:</> <Rainbow.Text.Yellow>\"</><Rainbow.Text.Green>That's</> <Rainbow.Text.Blue>good,</> <Rainbow.Text.Red>that</> <Rainbow.Text.Orange>is!</> <Rainbow.Text.Yellow>And</> <Rainbow.Text.Green>I,</> <Rainbow.Text.Blue>who</> <Rainbow.Text.Red>wanted</> <Rainbow.Text.Orange>to</> <Rainbow.Text.Yellow>remain</> <Rainbow.Text.Green>quiet!</><Rainbow.Text.Blue>\"</>")
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
TEXT("\n\n"));
}
static void OnBrowserLinkClicked(const FSlateHyperlinkRun::FMetadata& Metadata, TSharedRef<SWidget> ParentWidget)
{
const FString* url = Metadata.Find(TEXT("href"));
if(url)
{
FPlatformProcess::LaunchURL(**url, nullptr, nullptr);
}
else
{
SpawnProClickerPopUp(LOCTEXT("FailedToFindUrlPopUpMessage", "Sorry this hyperlink is not <RichText.Tagline.TextHighlight>configured incorrectly</>!"), ParentWidget);
}
}
static void SpawnProClickerPopUp(const FText& Text, TSharedRef<SWidget> ParentWidget)
{
TSharedRef<SWidget> Widget =
SNew(SBorder).Padding(10).BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.Background"))
[
SNew(SRichTextBlock)
.Text(Text)
.TextStyle(FTestStyle::Get(), "RichText.Tagline.Text")
.DecoratorStyleSet(&FTestStyle::Get())
.Justification(ETextJustify::Center)
];
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
FSlateApplication::Get().PushMenu(
ParentWidget, // Parent widget should be TestSuite, not the menu thats open or it will be closed when the menu is dismissed
FWidgetPath(),
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
Widget,
FSlateApplication::Get().GetCursorPos(), // summon location
FPopupTransitionEffect(FPopupTransitionEffect::ContextMenu)
);
}
};
class SRichTextTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SRichTextTest ){}
SLATE_END_ARGS()
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct(const FArguments& InArgs)
{
WrapWidth = 600;
bShouldWrap = true;
LineHeight = 1.0f;
Margin = FMargin( 20 );
JustificationTypeOptions.Empty();
JustificationTypeOptions.Add( MakeShareable( new FString( TEXT("Left") ) ) );
JustificationTypeOptions.Add( MakeShareable( new FString( TEXT("Center") ) ) );
JustificationTypeOptions.Add( MakeShareable( new FString( TEXT("Right") ) ) );
Justification = ETextJustify::Left;
//// Drop shadow border
//SNew(SBorder)
// .Padding( 5.0f )
// .BorderImage( FCoreStyle::Get().GetBrush("BoxShadow") )
// [
this->ChildSlot
[
SNew( SScrollBox )
+SScrollBox::Slot()
[
SNew( SBorder )
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Background" ) )
[
SNew( SVerticalBox )
+ SVerticalBox::Slot().AutoHeight() .Padding(0)
[
SNew( SBorder )
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Tagline.Background" ) )
.Padding(0)
[
SNew( SRichTextBlock )
.Text( LOCTEXT("RichTextHeader05", "This is a text heavy page that has been created to show the performance and capabilities of Slate's <RichText.Tagline.TextHighlight>SRichTextBlock</>.") )
.TextStyle( FTestStyle::Get(), "RichText.Tagline.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 800 )
.Justification( ETextJustify::Center )
.Margin( FMargin(20) )
]
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(20)
[
SNew( SRichTextBlock )
.Text( LOCTEXT("RichText.HowItWorks", "<RichText.Header>What does it do?</>\n\nThe SRichTextBlock uses a concept called Decorators to introduce new font styles, images, animation and even whole interactive widgets inline with the text.\n\nSlate comes with a couple Decorators out of the box:\n\n \u2022 <RichText.Text.Fancy>Text</> Decorator\n \u2022 <img src=\"RichText.ImageDecorator\"/> Image Decorator\n \u2022 <RichText.WidgetDecorator>Widget</> Decorator\n \u2022 <a id=\"HyperlinkDecorator\" style=\"RichText.Hyperlink\">Hyperlink</> Decorator\n\n<RichText.Header>What about options?</>\n\nOf course you can always introduce your own Decorators by implementing ITextDecorator. This will give you full customization in how your text or widget is styled. \n\nBesides the power of Decorators the SRichTextBlock comes equipped with Margin support, Left-Center-Right Text Justification, a Line Height Scalar and Highlighting.\n\n<RichText.Header>How does the markup work?</>\n\nWell the markup parser is customizable so you can adjust the markup anyway you'd like by providing your own parser. The parser that comes with Slate though uses a syntax very similar to xml.\n\n \u2022 &lt;TextBlockStyleName>Your text content&lt;/>\n \u2022 &lt;img src=\"SlateBrushStyleName\"/>\n \u2022 &lt;a id=\"YourCustomId\"/>Your hyperlink text&lt;/>\n\nIf you ever want to use the markup syntax as actual text you can escape the markup using xml style escapes. For example:\n\n \u2022 < &amp;lt;\n \u2022 > &amp;gt;\n \u2022 \" &amp;quot;\n\nBut you only need to escape these characters when a set of them match actual syntax so this isn't generally an issue.\n\n<RichText.Header>Are there any catches?</>\n\nThere are still plenty of things the SRichTextBlock doesn't currently support. The most notable lacking feature is not having the ability to flow text around images or widgets. ") )
.TextStyle( FTestStyle::Get(), "RichText.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 600 )
+ SRichTextBlock::ImageDecorator()
+ SRichTextBlock::HyperlinkDecorator( TEXT("HyperlinkDecorator"), this, &SRichTextTest::OnHyperlinkDecoratorClicked )
+ SRichTextBlock::WidgetDecorator( TEXT("RichText.WidgetDecorator"), this, &SRichTextTest::OnCreateWidgetDecoratorWidget )
]
+ SVerticalBox::Slot().AutoHeight() .Padding(0)
[
SNew( SBorder )
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Tagline.Background" ) )
.Padding(0)
[
SNew( SRichTextBlock )
.Text( LOCTEXT("RichTextHeader01", "Here is an <RichText.Tagline.TextHighlight>interactive example</> of the different <RichText.Tagline.TextHighlight>SRichTextBlock</> features in action!") )
.TextStyle( FTestStyle::Get(), "RichText.Tagline.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 800 )
.Justification( ETextJustify::Center )
.Margin( FMargin(20) )
]
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(20)
[
SNew( SHorizontalBox )
+SHorizontalBox::Slot() .Padding( 5, 0 )
[
SNew( SBorder )
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Interactive.Details.Background" ) )
.Padding( 10 )
[
SNew( SBox )
.WidthOverride( 400 )
[
SNew( SGridPanel )
.FillColumn( 1, 1.0f )
+ SGridPanel::Slot( 0, 0 ) .ColumnSpan( 2 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.MarginHeader", "Margin") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 0, 1 ) .Padding( 20,0,5,0 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.LeftMargin", "Left") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 1, 1 ) .Padding(0, 5)
[
SNew( SSpinBox<float> )
.MinValue(0.0f)
.MaxValue(65536.0f)
.MaxSliderValue(100.0f)
.Delta(0.25f)
.Value(this, &SRichTextTest::GetLeftMargin)
.OnValueChanged(this, &SRichTextTest::SetLeftMargin)
.Font( FTestStyle::Get().GetFontStyle("RichText.Interactive.Details.Value.Text") )
]
+ SGridPanel::Slot( 0, 2 ) .Padding( 20,0,5,0 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.TopMargin", "Top") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 1, 2 ) .Padding(0, 5)
[
SNew( SSpinBox<float> )
.MinValue(0.0f)
.MaxValue(65536.0f)
.MaxSliderValue(100.0f)
.Delta(0.25f)
.Value(this, &SRichTextTest::GetTopMargin)
.OnValueChanged(this, &SRichTextTest::SetTopMargin)
.Font( FTestStyle::Get().GetFontStyle("RichText.Interactive.Details.Value.Text") )
]
+ SGridPanel::Slot( 0, 3 ) .Padding( 20,0,5,0 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.RightMargin", "Right") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 1, 3 ) .Padding(0, 5)
[
SNew( SSpinBox<float> )
.MinValue(0.0f)
.MaxValue(65536.0f)
.MaxSliderValue(100.0f)
.Delta(0.25f)
.Value(this, &SRichTextTest::GetRightMargin)
.OnValueChanged(this, &SRichTextTest::SetRightMargin)
.Font( FTestStyle::Get().GetFontStyle("RichText.Interactive.Details.Value.Text") )
]
+ SGridPanel::Slot( 0, 4 ) .Padding( 20,0,5,0 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.BottomMargin", "Bottom") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 1, 4 ) .Padding(0, 5)
[
SNew( SSpinBox<float> )
.MinValue(0.0f)
.MaxValue(65536.0f)
.MaxSliderValue(100.0f)
.Delta(0.25f)
.Value(this, &SRichTextTest::GetBottomMargin)
.OnValueChanged(this, &SRichTextTest::SetBottomMargin)
.Font( FTestStyle::Get().GetFontStyle("RichText.Interactive.Details.Value.Text") )
]
+ SGridPanel::Slot( 0, 5 ) .Padding( 0,0,5,0 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.ShouldWrap", "Should Wrap") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 1, 5 ) .Padding(0, 5)
.ColumnSpan(2)
[
SNew( SCheckBox )
.IsChecked( this, &SRichTextTest::ShouldWrapRichText )
.OnCheckStateChanged( this, &SRichTextTest::ShouldWrapRichTextChanged )
.Style( FTestStyle::Get(), "RichText.Interactive.Details.Checkbox" )
]
+ SGridPanel::Slot( 0, 6 ) .Padding( 0,0,5,0 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.WrapWidth", "Wrap Width") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 1, 6 ) .Padding(0, 5)
[
SNew( SSpinBox<float> )
.MinValue(1.0f)
.MaxValue(800.0f)
.MinSliderValue(1.0f)
.MaxSliderValue(800.0f)
.Delta(1.0f)
.Value(this, &SRichTextTest::GetWrapWidth)
.OnValueChanged(this, &SRichTextTest::SetWrapWidth)
.Font( FTestStyle::Get().GetFontStyle("RichText.Interactive.Details.Value.Text") )
]
+ SGridPanel::Slot( 0, 7 ) .Padding( 0,0,5,0 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.TextJustify", "Text Justify") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 1, 7 ) .Padding(0, 5)
[
SNew( SComboBox< TSharedPtr< FString > > )
.OptionsSource( &JustificationTypeOptions )
.OnSelectionChanged( this, &SRichTextTest::JustificationComboBoxSelectionChanged )
.OnGenerateWidget( this, &SRichTextTest::MakeWidgetFromJustificationOption )
[
SNew( STextBlock ) .Text( this, &SRichTextTest::JustificationGetSelectedText ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Value.Text" )
]
]
+ SGridPanel::Slot( 0, 8 ) .Padding( 0,0,5,0 ) .VAlign(VAlign_Center)
[
SNew( SRichTextBlock ) .Text( LOCTEXT("RichText.LineHeight", "Line Height") ) .TextStyle( FTestStyle::Get(), "RichText.Interactive.Details.Name.Text" )
]
+ SGridPanel::Slot( 1, 8 ) .Padding(0, 5)
[
SNew( SSpinBox<float> )
.MinValue(0.1f)
.MaxValue(5.0f)
.MinSliderValue(0.1f)
.MaxSliderValue(5)
.Value(this, &SRichTextTest::GetLineHeight)
.OnValueChanged(this, &SRichTextTest::SetLineHeight)
.Font( FTestStyle::Get().GetFontStyle("RichText.Interactive.Details.Value.Text") )
]
]
]
]
+SHorizontalBox::Slot() .AutoWidth() .HAlign(HAlign_Center)
[
SNew( SBox ).WidthOverride( 800 ) .HAlign(HAlign_Center)
[
SNew( SVerticalBox )
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Right) .VAlign(VAlign_Center) .Padding( 5, 5 )
[
SNew( SHorizontalBox )
+ SHorizontalBox::Slot() .MaxWidth( 300 )
[
SNew( SSearchBox )
.OnTextChanged( this, &SRichTextTest::OnTextChanged )
]
]
+ SVerticalBox::Slot()
[
SNew(SBorder)
.Padding( 5.0f )
.BorderImage( FCoreStyle::Get().GetBrush("BoxShadow") )
[
SNew( SBorder ) .Padding( 2 ) .HAlign(HAlign_Center)
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Background" ) )
[
SAssignNew( InteractiveRichText, SRichTextBlock )
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
.Text( RichTextHelper::GetAliceInWonderland() )
.TextStyle( FTestStyle::Get(), "RichText.Interactive.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.Margin( this, &SRichTextTest::GetRichTextMargin )
.WrapTextAt( this, &SRichTextTest::GetRichTextWrapWidthValue )
.Justification( this, &SRichTextTest::JustificationGetSelected )
.LineHeightPercentage( this, &SRichTextTest::GetLineHeight )
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
+ SRichTextBlock::HyperlinkDecorator( TEXT("browser"), FSlateHyperlinkRun::FOnClick::CreateStatic( &RichTextHelper::OnBrowserLinkClicked, AsShared() ) )
]
]
]
]
]
+SHorizontalBox::Slot() .FillWidth( 1.0f )
]
+ SVerticalBox::Slot().AutoHeight() .Padding(0)
[
SNew( SBorder )
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Tagline.Background" ) )
.Padding(0)
[
SNew( SRichTextBlock)
.Text( LOCTEXT("RichTextHeader02", "Here's a bunch of text just to <RichText.Tagline.TextHighlight>measure performance</>.") )
.TextStyle( FTestStyle::Get(), "RichText.Tagline.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 800 )
.Justification( ETextJustify::Center )
.Margin( FMargin(20) )
]
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(20)
[
SNew( SHorizontalBox )
+ SHorizontalBox::Slot()
[
SNew( SRichTextBlock)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
.Text( RichTextHelper::GetTheWarOfTheWorlds_Part1() )
.TextStyle( FTestStyle::Get(), "TheWarOfTheWorlds.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 266 )
]
+ SHorizontalBox::Slot() .Padding( 25, 0 )
[
SNew( SRichTextBlock)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
.Text( RichTextHelper::GetTheWarOfTheWorlds_Part2() )
.TextStyle( FTestStyle::Get(), "TheWarOfTheWorlds.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 266 )
]
+ SHorizontalBox::Slot()
[
SNew( SRichTextBlock)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
.Text( RichTextHelper::GetTheWarOfTheWorlds_Part3() )
.TextStyle( FTestStyle::Get(), "TheWarOfTheWorlds.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 266 )
]
]
+ SVerticalBox::Slot().AutoHeight() .Padding(0)
[
SNew( SBorder )
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Tagline.Background" ) )
.Padding(0)
[
SNew( SRichTextBlock)
.Text( LOCTEXT("RichTextHeader03", "Here's a bunch of text in rainbow colors!\n<RichText.Tagline.SubtleText>Also to measure </><RichText.Tagline.SubtleTextHighlight>performance</><RichText.Tagline.SubtleText>, why else?</> ") )
.TextStyle( FTestStyle::Get(), "RichText.Tagline.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 800 )
.Justification( ETextJustify::Center )
.Margin( FMargin(20) )
]
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(20)
[
SNew( SHorizontalBox )
+ SHorizontalBox::Slot()
[
SNew( SRichTextBlock)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
.Text( RichTextHelper::GetAroundTheWorldIn80Days_Rainbow() )
.TextStyle( FTestStyle::Get(), "Rainbow.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 600 )
]
]
+ SVerticalBox::Slot().AutoHeight() .Padding(0)
[
SNew( SBox )
.WidthOverride( 800 )
.HeightOverride( 200 )
[
SNew( SBorder )
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Tagline.Background" ) )
.Padding(0)
[
SNew( SRichTextBlock)
.Text( LOCTEXT("RichTextHeader04", "That's all <RichText.Tagline.TextHighlight>folks</>. Hope you enjoyed this page about <RichText.Tagline.TextHighlight>SRichTextBlock</>!") )
.TextStyle( FTestStyle::Get(), "RichText.Tagline.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
.WrapTextAt( 800 )
.Justification( ETextJustify::Center )
.Margin( FMargin(20) )
]
]
]
]
]
];
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
FSlateWidgetRun::FWidgetRunInfo OnCreateWidgetDecoratorWidget( const FTextRunInfo& RunInfo, const ISlateStyle* Style ) const
{
TSharedRef< SWidget > Widget = SNew( SButton ) .OnClicked( this, &SRichTextTest::OnWidgetDecoratorClicked )
.ToolTip(
SNew( SToolTip )
.BorderImage( FTestStyle::Get().GetBrush( "RichText.Tagline.Background" ) )
[
SNew( SRichTextBlock )
.Text( LOCTEXT("WidgetDecoratorTooltip", " With the <RichText.TextHighlight>Widget Decorator</> you can <RichText.TextHighlight>inline any widget</> in your text!") )
.TextStyle( FTestStyle::Get(), "RichText.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
]
)
[
SNew( SRichTextBlock )
.Text( RunInfo.Content )
.TextStyle( FTestStyle::Get(), "RichText.Text" )
.DecoratorStyleSet( &FTestStyle::Get() )
];
TSharedRef< FSlateFontMeasure > FontMeasure = FSlateApplication::Get().GetRenderer()->GetFontMeasureService();
int16 Baseline = FontMeasure->GetBaseline( FTestStyle::Get().GetWidgetStyle<FTextBlockStyle>( "RichText.Text" ).Font );
return FSlateWidgetRun::FWidgetRunInfo( Widget, Baseline - 3 );
}
FReply OnWidgetDecoratorClicked()
{
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
RichTextHelper::SpawnProClickerPopUp( LOCTEXT("WidgetDecoratorExamplePopUpMessage", "I don't really do anything. <RichText.Tagline.TextHighlight>Sorry</>."), AsShared() );
return FReply::Handled();
}
void OnHyperlinkDecoratorClicked( const FSlateHyperlinkRun::FMetadata& Metadata )
{
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
RichTextHelper::SpawnProClickerPopUp( LOCTEXT("HyperlinkDecoratorExamplePopUpMessage", "You're a <RichText.Tagline.TextHighlight>pro</> at clicking!"), AsShared() );
}
void OnTextChanged( const FText& NewText )
{
InteractiveRichText->SetHighlightText( NewText );
}
float GetLeftMargin() const
{
return Margin.Left;
}
void SetLeftMargin( float Value )
{
Margin.Left = Value;
}
float GetTopMargin() const
{
return Margin.Top;
}
void SetTopMargin( float Value )
{
Margin.Top = Value;
}
float GetRightMargin() const
{
return Margin.Right;
}
void SetRightMargin( float Value )
{
Margin.Right = Value;
}
float GetBottomMargin() const
{
return Margin.Bottom;
}
void SetBottomMargin( float Value )
{
Margin.Bottom = Value;
}
FMargin GetRichTextMargin() const
{
return Margin;
}
TSharedRef<SWidget> MakeWidgetFromJustificationOption( TSharedPtr< FString > Value )
{
return SNew(STextBlock) .Text( JustificationGetText( Value ) );
}
void JustificationComboBoxSelectionChanged( TSharedPtr< FString > Value, ESelectInfo::Type SelectInfo )
{
if ( *Value == TEXT("Left") )
{
Justification = ETextJustify::Left;
}
else if ( *Value == TEXT("Center") )
{
Justification = ETextJustify::Center;
}
else if ( *Value == TEXT("Right") )
{
Justification = ETextJustify::Right;
}
}
FText JustificationGetSelectedText() const
{
FText Text;
if ( Justification == ETextJustify::Left )
{
Text = LOCTEXT("TextJustify::Left", "Left");
}
else if ( Justification == ETextJustify::Center )
{
Text = LOCTEXT("TextJustify::Center", "Center");
}
else if ( Justification == ETextJustify::Right )
{
Text = LOCTEXT("TextJustify::Right", "Right");
}
return Text;
}
ETextJustify::Type JustificationGetSelected() const
{
return Justification;
}
FText JustificationGetText( TSharedPtr< FString > Value ) const
{
FText Text;
if ( *Value == TEXT("Left") )
{
Text = LOCTEXT("TextJustify::Left", "Left");
}
else if ( *Value == TEXT("Center") )
{
Text = LOCTEXT("TextJustify::Center", "Center");
}
else if ( *Value == TEXT("Right") )
{
Text = LOCTEXT("TextJustify::Right", "Right");
}
return Text;
}
float GetWrapWidth() const
{
return WrapWidth;
}
void SetWrapWidth( float Value )
{
WrapWidth = Value;
}
ECheckBoxState ShouldWrapRichText() const
{
return bShouldWrap ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
void ShouldWrapRichTextChanged( ECheckBoxState CheckState )
{
bShouldWrap = CheckState == ECheckBoxState::Checked ? true : false;
}
float GetRichTextWrapWidthValue() const
{
if ( bShouldWrap )
{
return WrapWidth;
}
return 0;
}
float GetLineHeight() const
{
return LineHeight;
}
void SetLineHeight( float NewValue )
{
LineHeight = NewValue;
}
private:
float WrapWidth;
bool bShouldWrap;
FMargin Margin;
ETextJustify::Type Justification;
TArray< TSharedPtr< FString > > JustificationTypeOptions;
float LineHeight;
TSharedPtr< SRichTextBlock > InteractiveRichText;
};
#endif //WITH_FANCY_TEXT
class STextEditTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( STextEditTest ){}
SLATE_END_ARGS()
/**
* Construct the widget
*
* @param InArgs Declaration from which to construct the widget
*/
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct(const FArguments& InArgs)
{
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2888098 on 3/1/2016 by Nick.Darnell Adding back the SetWidgetToFocusOnActivate call and deprecating it. Will need to also do this in 4.11. #lockdown Nick.Penwarden Change 2851669 on 2016/02/01 by Alexis.Matte #jira UE-25928 Skeletal mesh import now support _skinXX that are not sequential. Static mesh was already supporting non sequential _skinxx ordering #codereview nick.darnell Change 2851672 on 2016/02/01 by Alexis.Matte #jira UE-25971 The proxy camera mesh is now properly reset to zero #codereview nick.darnell Change 2851675 on 2016/02/01 by Alexis.Matte #jira UE-25525 Update the tooltips #codereview nick.darnell Change 2851764 on 2016/02/01 by Alexis.Matte #jira UE-25595 The fbx plus and minus icons are now brighter #codereview nick.darnell Change 2852116 on 2016/02/01 by Bob.Tellez #UE4 Submitting pull request 2013 from GitHub (Pull request 2013). Thanks for the fix hoelzl! Fix file selection when reimporting curve from moved CSV file When reimporting a data curve after moving the CSV file from which it was generated, the file selection dialog does not present an option to select CVS files. This patch fixes the issue by assigning the correct 'SupportedClass' value for `UReimportCurveFactory` instances. #codereview Nick.Darnell #JIRA UE-26247 #2013 Change 2852375 on 2016/02/02 by Richard.TalbotWatkin Spline component improvements: added facility to not restore component instance cache after the construction script has run, so the points can act as inputs to the construction script. Created a new property bInputSplinePointsToConstructionScript for that. Added SetUpVectorAtSplinePoint, and corrected some bugs. #jira UE-24931 - Set Location at Spline Point doesn't do anything Change 2852726 on 2016/02/02 by Richard.TalbotWatkin Fixed FPropertyChangedEvent::GetArrayIndex when called from PostEditChangeProperty. #jira UE-25316 - PropertyChangedEvent.GetArrayIndex broken #codereview Robert.Manuszewski Change 2853152 on 2016/02/02 by Jamie.Dale Fixed multi-line editable texts not updating their font when changed in UMG Also made all the SetStyle functions use the default if they're passed null (to match SEditableTextBox), and tidied up some of the property panel layout when editing styles. #codereview Chris.Wood Change 2853220 on 2016/02/02 by Alexis.Matte #jira UE-26303 We now apply the scene option transform to the vertex of meshes instead of the root node of the scene. This allow re-alignment of the mesh to go with animation. #codereview nick.darnell Change 2853282 on 2016/02/02 by Alexis.Matte Back out changelist 2853220 Change 2854211 on 2016/02/03 by Nick.Darnell Widget Reflector - Limit the minimum scale that can be applied to something more reasonable 50%, instead of 10%. Change 2854216 on 2016/02/03 by Nick.Darnell Scene Viewport - The scene viewport handles application scale better now, allowing click locations to be interepreted correctly and transformed into pixel hit location, rather than local space widget location, which may not match. Change 2854220 on 2016/02/03 by Nick.Darnell Slate - Allowing mousewheel or gesture to be routed directly for a widget path like has been done for other mouse events, this permits more kinds of mouse like actions in a VR environment onto widgets in the scene. (not actually hooked up to do it, but this now permits it at the slate level to be done correctly). Change 2854449 on 2016/02/03 by Alexis.Matte -Fix the fbx import options, for the scene transform value that was not apply correctly -Add an inspector on the scene import option in the reimport dialog Change 2855659 on 2016/02/04 by Alexis.Matte -Fix the bake pivot when there is a hierarchy, we now accumulate the pivot effect in the hierarchy to place the object at the correct place. #codereview nick.darnell Change 2855922 on 2016/02/04 by Alexis.Matte #jira UE-26303 The animation is now align with the imported skeletal mesh, the bakepivot is also supported #codereview nick.darnell Change 2856989 on 2016/02/05 by Jamie.Dale Some improvements to the source code loc gatherer * We now strip any comments out of any pre-processor tokens before we start handling them. * Fixed a case where "#if defined" and "#elif defined" would parse incorrectly. * Fixed a case where "#define LOCTEXT_NAMESPACE" and "#define LOC_DEFINE_REGION" may not be paired correctly with their corresponding "#undef". [CL 2888106 by Nick Darnell in Main branch]
2016-03-01 15:17:24 -05:00
bIsPassword = true;
InlineEditableText = LOCTEXT( "TestingInlineEditableTextBlock", "Testing inline editable text block!" );
Animation = FCurveSequence(0, 5);
---- Merging with SlateDev branch ---- Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI. While asleep, Slate will skip the Tick & Paint pass for that frame entirely. - There are TWO ways to "wake" Slate and cause a Tick/Paint pass: 1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active. - Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick. 2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked. - The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action. - Examples include animation, async operations that update periodically, progress updates, loading bars, etc. - An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before. - An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick() - There are THREE ways to unregister an active tick: 1. Return EActiveTickReturnType::StopTicking from the active tick function 2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick() 3. Destroy the widget responsible for the active tick - Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar - There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed. - The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f) - The FCurveSequence API has been updated to work with the active tick system - Playing a curve sequence now requires that you pass the widget being animated by the sequence - The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete - GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end. [CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
Animation.Play(this->AsShared(), true);
this->ChildSlot
[
SNew( SScrollBox )
+SScrollBox::Slot()
[
SNew( SVerticalBox )
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(5)
[
SAssignNew( EditableText, SEditableText )
.Text( LOCTEXT( "TestingTextControl", "Testing editable text control (no box)" ) )
.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Regular.ttf" ), 12 ) )
.HintText(LOCTEXT("TestingTextControlHint", "Hint Text"))
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(5)
[
SNew( SEditableTextBox )
.Text( LOCTEXT( "TestingReadOnlyTextBox", "Read only editable text box (with tool tip!)" ) )
.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Regular.ttf" ), 20 ) )
.IsReadOnly( true )
.ToolTipText( LOCTEXT("TestingReadOnlyTextBox_Tooltip", "Testing tool tip for editable text!") )
.HintText(LOCTEXT("TestingReadOnlyTextBoxHint", "Hint Text") )
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(5)
[
SNew( SEditableTextBox )
.Text( LOCTEXT( "TestingLongText", "Here is an editable text box with a very long initial string. Useful to test scrolling. Remember, this editable text box has many features, such as cursor navigation, text selection with either the mouse or keyboard, and cut, copy and paste. You can even undo and redo just how you'd expect to." ) )
.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Bold.ttf" ), 13 ) )
.HintText(LOCTEXT("TestingLongTextHint", "Hint Text"))
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(5)
[
SNew( SEditableTextBox )
.Text( LOCTEXT( "TestingBigTextBigMargin", "Big text, big margin!" ) )
.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Bold.ttf" ), 40 ) )
.RevertTextOnEscape( true )
.BackgroundColor( this, &STextEditTest::GetLoopingColor )
.HintText(LOCTEXT("TestingBigTextMarginHint", "Hint Text"))
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .Padding(5)
[
SAssignNew(InlineEditableTextBlock, SInlineEditableTextBlock)
.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Regular.ttf" ), 12 ) )
.Text( InlineEditableText )
.OnTextCommitted( this, &STextEditTest::InlineEditableTextCommited )
.ToolTipText( LOCTEXT("TestingInlineEditableTextBlock_Tooltip", "Testing tool tip for inline editable text block!") )
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .VAlign(VAlign_Center) .Padding( 5 )
[
SAssignNew( SearchBox, SSearchBox )
//.Text( LOCTEXT("TestingSearchBox", "Testing search boxes tool tip") )
//.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Bold.ttf" ), 12 ) )
.ToolTipText( LOCTEXT("TestingSearchBox_Tooltip", "Testing search boxes") )
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .VAlign(VAlign_Center) .Padding( 5 )
[
SAssignNew( NumericInput, SEditableTextBox )
.Text( LOCTEXT( "NumericInput", "This should be a number" ) )
.OnTextChanged( this, &STextEditTest::OnNumericInputTextChanged )
.RevertTextOnEscape( true )
.HintText(LOCTEXT("NumericInputHint", "Enter a number"))
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .VAlign(VAlign_Center) .Padding( 5 )
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
. HAlign(HAlign_Center)
[
SNew(SButton)
.Text( LOCTEXT("PopupTest", "PopUp Test") )
.OnClicked( this, &STextEditTest::LaunchPopUp_OnClicked )
]
]
+SVerticalBox::Slot().AutoHeight() .VAlign(VAlign_Bottom) .Padding(0,20,0,0)
[
SAssignNew(ErrorText, SErrorText)
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .VAlign(VAlign_Center) .Padding( 5 )
[
SNew( SEditableTextBox )
.Text( LOCTEXT( "CustomContextMenuInput", "This text box has a custom context menu" ) )
.RevertTextOnEscape( true )
.HintText(LOCTEXT("CustomContextMenuHint", "Custom context menu..."))
.OnContextMenuOpening( this, &STextEditTest::OnCustomContextMenuOpening )
]
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .VAlign(VAlign_Center) .Padding( 5 )
[
SNew( SEditableTextBox )
.Text( LOCTEXT( "DisabledContextMenuInput", "This text box has no context menu" ) )
.RevertTextOnEscape( true )
.HintText(LOCTEXT("DisabledContextMenuHint", "No context menu..."))
.OnContextMenuOpening(this, &STextEditTest::OnDisabledContextMenuOpening)
]
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2888098 on 3/1/2016 by Nick.Darnell Adding back the SetWidgetToFocusOnActivate call and deprecating it. Will need to also do this in 4.11. #lockdown Nick.Penwarden Change 2851669 on 2016/02/01 by Alexis.Matte #jira UE-25928 Skeletal mesh import now support _skinXX that are not sequential. Static mesh was already supporting non sequential _skinxx ordering #codereview nick.darnell Change 2851672 on 2016/02/01 by Alexis.Matte #jira UE-25971 The proxy camera mesh is now properly reset to zero #codereview nick.darnell Change 2851675 on 2016/02/01 by Alexis.Matte #jira UE-25525 Update the tooltips #codereview nick.darnell Change 2851764 on 2016/02/01 by Alexis.Matte #jira UE-25595 The fbx plus and minus icons are now brighter #codereview nick.darnell Change 2852116 on 2016/02/01 by Bob.Tellez #UE4 Submitting pull request 2013 from GitHub (Pull request 2013). Thanks for the fix hoelzl! Fix file selection when reimporting curve from moved CSV file When reimporting a data curve after moving the CSV file from which it was generated, the file selection dialog does not present an option to select CVS files. This patch fixes the issue by assigning the correct 'SupportedClass' value for `UReimportCurveFactory` instances. #codereview Nick.Darnell #JIRA UE-26247 #2013 Change 2852375 on 2016/02/02 by Richard.TalbotWatkin Spline component improvements: added facility to not restore component instance cache after the construction script has run, so the points can act as inputs to the construction script. Created a new property bInputSplinePointsToConstructionScript for that. Added SetUpVectorAtSplinePoint, and corrected some bugs. #jira UE-24931 - Set Location at Spline Point doesn't do anything Change 2852726 on 2016/02/02 by Richard.TalbotWatkin Fixed FPropertyChangedEvent::GetArrayIndex when called from PostEditChangeProperty. #jira UE-25316 - PropertyChangedEvent.GetArrayIndex broken #codereview Robert.Manuszewski Change 2853152 on 2016/02/02 by Jamie.Dale Fixed multi-line editable texts not updating their font when changed in UMG Also made all the SetStyle functions use the default if they're passed null (to match SEditableTextBox), and tidied up some of the property panel layout when editing styles. #codereview Chris.Wood Change 2853220 on 2016/02/02 by Alexis.Matte #jira UE-26303 We now apply the scene option transform to the vertex of meshes instead of the root node of the scene. This allow re-alignment of the mesh to go with animation. #codereview nick.darnell Change 2853282 on 2016/02/02 by Alexis.Matte Back out changelist 2853220 Change 2854211 on 2016/02/03 by Nick.Darnell Widget Reflector - Limit the minimum scale that can be applied to something more reasonable 50%, instead of 10%. Change 2854216 on 2016/02/03 by Nick.Darnell Scene Viewport - The scene viewport handles application scale better now, allowing click locations to be interepreted correctly and transformed into pixel hit location, rather than local space widget location, which may not match. Change 2854220 on 2016/02/03 by Nick.Darnell Slate - Allowing mousewheel or gesture to be routed directly for a widget path like has been done for other mouse events, this permits more kinds of mouse like actions in a VR environment onto widgets in the scene. (not actually hooked up to do it, but this now permits it at the slate level to be done correctly). Change 2854449 on 2016/02/03 by Alexis.Matte -Fix the fbx import options, for the scene transform value that was not apply correctly -Add an inspector on the scene import option in the reimport dialog Change 2855659 on 2016/02/04 by Alexis.Matte -Fix the bake pivot when there is a hierarchy, we now accumulate the pivot effect in the hierarchy to place the object at the correct place. #codereview nick.darnell Change 2855922 on 2016/02/04 by Alexis.Matte #jira UE-26303 The animation is now align with the imported skeletal mesh, the bakepivot is also supported #codereview nick.darnell Change 2856989 on 2016/02/05 by Jamie.Dale Some improvements to the source code loc gatherer * We now strip any comments out of any pre-processor tokens before we start handling them. * Fixed a case where "#if defined" and "#elif defined" would parse incorrectly. * Fixed a case where "#define LOCTEXT_NAMESPACE" and "#define LOC_DEFINE_REGION" may not be paired correctly with their corresponding "#undef". [CL 2888106 by Nick Darnell in Main branch]
2016-03-01 15:17:24 -05:00
+ SVerticalBox::Slot().AutoHeight() .HAlign(HAlign_Center) .VAlign(VAlign_Center) .Padding( 5 )
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SEditableTextBox)
.IsPassword(this, &STextEditTest::IsPassword)
.RevertTextOnEscape(true)
.MinDesiredWidth(400)
.HintText(LOCTEXT("EditablePasswordHintText", "This text box can be a password"))
]
+SHorizontalBox::Slot()
.AutoWidth()
.Padding(FMargin(4, 0))
[
SNew(SCheckBox)
.IsChecked(this, &STextEditTest::GetPasswordCheckState)
.OnCheckStateChanged(this, &STextEditTest::OnPasswordCheckStateChanged)
[
SNew(STextBlock)
.Text(LOCTEXT("PasswordCheckBoxText", "Password?"))
]
]
]
]
];
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
void FocusDefaultWidget()
{
// Set focus to the editable text, so the user doesn't have to click initially to type
FWidgetPath WidgetToFocusPath;
FSlateApplication::Get().GeneratePathToWidgetUnchecked( EditableText.ToSharedRef(), WidgetToFocusPath );
FSlateApplication::Get().SetKeyboardFocus( WidgetToFocusPath, EFocusCause::SetDirectly );
}
void InlineEditableTextCommited(const FText& NewText, ETextCommit::Type CommitType )
{
InlineEditableText = NewText;
InlineEditableTextBlock->SetText( InlineEditableText );
}
void OnNumericInputTextChanged( const FText& NewText )
{
const FText Error = (NewText.IsNumeric())
? FText::GetEmpty()
: FText::Format( LOCTEXT("NotANumberWarning", "'{0}' is not a number"), NewText );
ErrorText->SetError( Error );
NumericInput->SetError( Error );
}
TSharedPtr<SWidget> OnCustomContextMenuOpening()
{
return SNew(SBorder)
.Padding(5.0f)
.BorderImage(FCoreStyle::Get().GetBrush("BoxShadow"))
[
SNew(STextBlock)
.Text(LOCTEXT("CustomContextMenuContent", "This context menu content is just a text block"))
];
}
TSharedPtr<SWidget> OnDisabledContextMenuOpening()
{
return TSharedPtr<SWidget>();
}
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2888098 on 3/1/2016 by Nick.Darnell Adding back the SetWidgetToFocusOnActivate call and deprecating it. Will need to also do this in 4.11. #lockdown Nick.Penwarden Change 2851669 on 2016/02/01 by Alexis.Matte #jira UE-25928 Skeletal mesh import now support _skinXX that are not sequential. Static mesh was already supporting non sequential _skinxx ordering #codereview nick.darnell Change 2851672 on 2016/02/01 by Alexis.Matte #jira UE-25971 The proxy camera mesh is now properly reset to zero #codereview nick.darnell Change 2851675 on 2016/02/01 by Alexis.Matte #jira UE-25525 Update the tooltips #codereview nick.darnell Change 2851764 on 2016/02/01 by Alexis.Matte #jira UE-25595 The fbx plus and minus icons are now brighter #codereview nick.darnell Change 2852116 on 2016/02/01 by Bob.Tellez #UE4 Submitting pull request 2013 from GitHub (Pull request 2013). Thanks for the fix hoelzl! Fix file selection when reimporting curve from moved CSV file When reimporting a data curve after moving the CSV file from which it was generated, the file selection dialog does not present an option to select CVS files. This patch fixes the issue by assigning the correct 'SupportedClass' value for `UReimportCurveFactory` instances. #codereview Nick.Darnell #JIRA UE-26247 #2013 Change 2852375 on 2016/02/02 by Richard.TalbotWatkin Spline component improvements: added facility to not restore component instance cache after the construction script has run, so the points can act as inputs to the construction script. Created a new property bInputSplinePointsToConstructionScript for that. Added SetUpVectorAtSplinePoint, and corrected some bugs. #jira UE-24931 - Set Location at Spline Point doesn't do anything Change 2852726 on 2016/02/02 by Richard.TalbotWatkin Fixed FPropertyChangedEvent::GetArrayIndex when called from PostEditChangeProperty. #jira UE-25316 - PropertyChangedEvent.GetArrayIndex broken #codereview Robert.Manuszewski Change 2853152 on 2016/02/02 by Jamie.Dale Fixed multi-line editable texts not updating their font when changed in UMG Also made all the SetStyle functions use the default if they're passed null (to match SEditableTextBox), and tidied up some of the property panel layout when editing styles. #codereview Chris.Wood Change 2853220 on 2016/02/02 by Alexis.Matte #jira UE-26303 We now apply the scene option transform to the vertex of meshes instead of the root node of the scene. This allow re-alignment of the mesh to go with animation. #codereview nick.darnell Change 2853282 on 2016/02/02 by Alexis.Matte Back out changelist 2853220 Change 2854211 on 2016/02/03 by Nick.Darnell Widget Reflector - Limit the minimum scale that can be applied to something more reasonable 50%, instead of 10%. Change 2854216 on 2016/02/03 by Nick.Darnell Scene Viewport - The scene viewport handles application scale better now, allowing click locations to be interepreted correctly and transformed into pixel hit location, rather than local space widget location, which may not match. Change 2854220 on 2016/02/03 by Nick.Darnell Slate - Allowing mousewheel or gesture to be routed directly for a widget path like has been done for other mouse events, this permits more kinds of mouse like actions in a VR environment onto widgets in the scene. (not actually hooked up to do it, but this now permits it at the slate level to be done correctly). Change 2854449 on 2016/02/03 by Alexis.Matte -Fix the fbx import options, for the scene transform value that was not apply correctly -Add an inspector on the scene import option in the reimport dialog Change 2855659 on 2016/02/04 by Alexis.Matte -Fix the bake pivot when there is a hierarchy, we now accumulate the pivot effect in the hierarchy to place the object at the correct place. #codereview nick.darnell Change 2855922 on 2016/02/04 by Alexis.Matte #jira UE-26303 The animation is now align with the imported skeletal mesh, the bakepivot is also supported #codereview nick.darnell Change 2856989 on 2016/02/05 by Jamie.Dale Some improvements to the source code loc gatherer * We now strip any comments out of any pre-processor tokens before we start handling them. * Fixed a case where "#if defined" and "#elif defined" would parse incorrectly. * Fixed a case where "#define LOCTEXT_NAMESPACE" and "#define LOC_DEFINE_REGION" may not be paired correctly with their corresponding "#undef". [CL 2888106 by Nick Darnell in Main branch]
2016-03-01 15:17:24 -05:00
bool IsPassword() const
{
return bIsPassword;
}
ECheckBoxState GetPasswordCheckState() const
{
return bIsPassword ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
void OnPasswordCheckStateChanged(ECheckBoxState NewState)
{
bIsPassword = NewState == ECheckBoxState::Checked;
}
void ClearSearchBox()
{
SearchBox->SetText( FText::GetEmpty() );
}
FSlateColor GetLoopingColor() const
{
---- Merging with SlateDev branch ---- Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI. While asleep, Slate will skip the Tick & Paint pass for that frame entirely. - There are TWO ways to "wake" Slate and cause a Tick/Paint pass: 1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active. - Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick. 2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked. - The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action. - Examples include animation, async operations that update periodically, progress updates, loading bars, etc. - An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before. - An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick() - There are THREE ways to unregister an active tick: 1. Return EActiveTickReturnType::StopTicking from the active tick function 2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick() 3. Destroy the widget responsible for the active tick - Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar - There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed. - The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f) - The FCurveSequence API has been updated to work with the active tick system - Playing a curve sequence now requires that you pass the widget being animated by the sequence - The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete - GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end. [CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
return FLinearColor( 360*Animation.GetLerp(), 0.8f, 1.0f).HSVToLinearRGB();
}
FReply LaunchPopUp_OnClicked ()
{
FText DefaultText( LOCTEXT("EnterThreeChars", "Enter a three character string") );
TSharedRef<STextEntryPopup> TextEntry = SAssignNew( PopupInput, STextEntryPopup )
.Label( DefaultText )
.ClearKeyboardFocusOnCommit ( false )
.OnTextChanged( this, &STextEditTest::OnPopupTextChanged )
.OnTextCommitted( this, &STextEditTest::OnPopupTextCommitted )
.HintText( DefaultText );
PopupMenu = FSlateApplication::Get().PushMenu(
AsShared(), // Parent widget should be TestSyuite, not the menu thats open or it will be closed when the menu is dismissed
FWidgetPath(),
TextEntry,
FSlateApplication::Get().GetCursorPos(), // summon location
FPopupTransitionEffect( FPopupTransitionEffect::TypeInPopup )
);
return FReply::Handled();
}
void OnPopupTextChanged (const FText& NewText)
{
const FText Error = ( NewText.ToString().Len() == 3 )
? FText::GetEmpty()
: FText::Format( LOCTEXT("ThreeCharsError", "'{0}' is not three characters"), NewText);
ErrorText->SetError( Error );
PopupInput->SetError( Error );
}
void OnPopupTextCommitted( const FText& NewText, ETextCommit::Type CommitInfo )
{
if ( (CommitInfo == ETextCommit::OnEnter) && (NewText.ToString().Len() == 3) )
{
// manually close menu on validated committal
if (PopupMenu.IsValid())
{
PopupMenu.Pin()->Dismiss();
}
}
}
protected:
TSharedPtr< SEditableText > EditableText;
TSharedPtr<SEditableTextBox> SearchBox;
FCurveSequence Animation;
TSharedPtr<SErrorText> ErrorText;
TSharedPtr<SEditableTextBox> NumericInput;
#if WITH_FANCY_TEXT
TSharedPtr<SRichTextBlock> RichTextBlock;
#endif //WITH_FANCY_TEXT
TSharedPtr<STextEntryPopup> PopupInput;
TWeakPtr<IMenu> PopupMenu;
TSharedPtr<SInlineEditableTextBlock> InlineEditableTextBlock;
FText InlineEditableText;
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2888098 on 3/1/2016 by Nick.Darnell Adding back the SetWidgetToFocusOnActivate call and deprecating it. Will need to also do this in 4.11. #lockdown Nick.Penwarden Change 2851669 on 2016/02/01 by Alexis.Matte #jira UE-25928 Skeletal mesh import now support _skinXX that are not sequential. Static mesh was already supporting non sequential _skinxx ordering #codereview nick.darnell Change 2851672 on 2016/02/01 by Alexis.Matte #jira UE-25971 The proxy camera mesh is now properly reset to zero #codereview nick.darnell Change 2851675 on 2016/02/01 by Alexis.Matte #jira UE-25525 Update the tooltips #codereview nick.darnell Change 2851764 on 2016/02/01 by Alexis.Matte #jira UE-25595 The fbx plus and minus icons are now brighter #codereview nick.darnell Change 2852116 on 2016/02/01 by Bob.Tellez #UE4 Submitting pull request 2013 from GitHub (Pull request 2013). Thanks for the fix hoelzl! Fix file selection when reimporting curve from moved CSV file When reimporting a data curve after moving the CSV file from which it was generated, the file selection dialog does not present an option to select CVS files. This patch fixes the issue by assigning the correct 'SupportedClass' value for `UReimportCurveFactory` instances. #codereview Nick.Darnell #JIRA UE-26247 #2013 Change 2852375 on 2016/02/02 by Richard.TalbotWatkin Spline component improvements: added facility to not restore component instance cache after the construction script has run, so the points can act as inputs to the construction script. Created a new property bInputSplinePointsToConstructionScript for that. Added SetUpVectorAtSplinePoint, and corrected some bugs. #jira UE-24931 - Set Location at Spline Point doesn't do anything Change 2852726 on 2016/02/02 by Richard.TalbotWatkin Fixed FPropertyChangedEvent::GetArrayIndex when called from PostEditChangeProperty. #jira UE-25316 - PropertyChangedEvent.GetArrayIndex broken #codereview Robert.Manuszewski Change 2853152 on 2016/02/02 by Jamie.Dale Fixed multi-line editable texts not updating their font when changed in UMG Also made all the SetStyle functions use the default if they're passed null (to match SEditableTextBox), and tidied up some of the property panel layout when editing styles. #codereview Chris.Wood Change 2853220 on 2016/02/02 by Alexis.Matte #jira UE-26303 We now apply the scene option transform to the vertex of meshes instead of the root node of the scene. This allow re-alignment of the mesh to go with animation. #codereview nick.darnell Change 2853282 on 2016/02/02 by Alexis.Matte Back out changelist 2853220 Change 2854211 on 2016/02/03 by Nick.Darnell Widget Reflector - Limit the minimum scale that can be applied to something more reasonable 50%, instead of 10%. Change 2854216 on 2016/02/03 by Nick.Darnell Scene Viewport - The scene viewport handles application scale better now, allowing click locations to be interepreted correctly and transformed into pixel hit location, rather than local space widget location, which may not match. Change 2854220 on 2016/02/03 by Nick.Darnell Slate - Allowing mousewheel or gesture to be routed directly for a widget path like has been done for other mouse events, this permits more kinds of mouse like actions in a VR environment onto widgets in the scene. (not actually hooked up to do it, but this now permits it at the slate level to be done correctly). Change 2854449 on 2016/02/03 by Alexis.Matte -Fix the fbx import options, for the scene transform value that was not apply correctly -Add an inspector on the scene import option in the reimport dialog Change 2855659 on 2016/02/04 by Alexis.Matte -Fix the bake pivot when there is a hierarchy, we now accumulate the pivot effect in the hierarchy to place the object at the correct place. #codereview nick.darnell Change 2855922 on 2016/02/04 by Alexis.Matte #jira UE-26303 The animation is now align with the imported skeletal mesh, the bakepivot is also supported #codereview nick.darnell Change 2856989 on 2016/02/05 by Jamie.Dale Some improvements to the source code loc gatherer * We now strip any comments out of any pre-processor tokens before we start handling them. * Fixed a case where "#if defined" and "#elif defined" would parse incorrectly. * Fixed a case where "#define LOCTEXT_NAMESPACE" and "#define LOC_DEFINE_REGION" may not be paired correctly with their corresponding "#undef". [CL 2888106 by Nick Darnell in Main branch]
2016-03-01 15:17:24 -05:00
bool bIsPassword;
};
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
#if WITH_FANCY_TEXT
/**
* This is used in conjunction with the TextStyle decorator to allow arbitrary styling of text within a rich-text editor
* This struct defines a set of known font families, as well as providing some utility functions for converting the text style to and from a text layout run
*/
struct FTextStyles
{
/** Flags controlling which TTF or OTF font should be picked from the given font family */
struct EFontStyle
{
typedef uint8 Flags;
enum Flag
{
Regular = 0,
Bold = 1<<0,
Italic = 1<<1,
};
};
/** This struct defines a font family, which combines multiple TTF or OTF fonts into a single group, allowing text to be styled as bold or italic */
struct FFontFamily
{
FFontFamily(FText InDisplayName, FName InFamilyName, FName InRegularFont, FName InBoldFont, FName InItalicFont, FName InBoldItalicFont)
: DisplayName(InDisplayName)
, FamilyName(InFamilyName)
, RegularFont(InRegularFont)
, BoldFont(InBoldFont)
, ItalicFont(InItalicFont)
, BoldItalicFont(InBoldItalicFont)
{
}
/** Name used for this font family in the UI */
FText DisplayName;
/** Named used to identify this family from the TextStyle decorator */
FName FamilyName;
/** File paths to the fonts on disk */
FName RegularFont;
FName BoldFont;
FName ItalicFont;
FName BoldItalicFont;
};
/** Convert the given text style into run meta-information, so that valid source rich-text formatting can be generated for it */
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
static FRunInfo CreateRunInfo(const TSharedPtr<FFontFamily>& InFontFamily, const uint16 InFontSize, const EFontStyle::Flags InFontStyle, const FLinearColor& InFontColor)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
FString FontStyleString;
if(InFontStyle == EFontStyle::Regular)
{
FontStyleString = TEXT("Regular");
}
else
{
if(InFontStyle & EFontStyle::Bold)
{
FontStyleString += "Bold";
}
if(InFontStyle & EFontStyle::Italic)
{
FontStyleString += "Italic";
}
}
FRunInfo RunInfo(TEXT("TextStyle"));
RunInfo.MetaData.Add(TEXT("FontFamily"), InFontFamily->FamilyName.ToString());
RunInfo.MetaData.Add(TEXT("FontSize"), FString::FromInt(InFontSize));
RunInfo.MetaData.Add(TEXT("FontStyle"), FontStyleString);
RunInfo.MetaData.Add(TEXT("FontColor"), InFontColor.ToString());
return RunInfo;
}
/** Explode some run meta-information back out into its component text style parts */
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
void ExplodeRunInfo(const FRunInfo& InRunInfo, TSharedPtr<FFontFamily>& OutFontFamily, uint16& OutFontSize, EFontStyle::Flags& OutFontStyle, FLinearColor& OutFontColor) const
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
check(AvailableFontFamilies.Num());
const FString* const FontFamilyString = InRunInfo.MetaData.Find(TEXT("FontFamily"));
if(FontFamilyString)
{
OutFontFamily = FindFontFamily(FName(**FontFamilyString));
}
if(!OutFontFamily.IsValid())
{
OutFontFamily = AvailableFontFamilies[0];
}
OutFontSize = 11;
const FString* const FontSizeString = InRunInfo.MetaData.Find(TEXT("FontSize"));
if(FontSizeString)
{
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
OutFontSize = static_cast<uint16>(FPlatformString::Atoi(**FontSizeString));
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
}
OutFontStyle = EFontStyle::Regular;
const FString* const FontStyleString = InRunInfo.MetaData.Find(TEXT("FontStyle"));
if(FontStyleString)
{
if(*FontStyleString == TEXT("Bold"))
{
OutFontStyle = EFontStyle::Bold;
}
else if(*FontStyleString == TEXT("Italic"))
{
OutFontStyle = EFontStyle::Italic;
}
else if(*FontStyleString == TEXT("BoldItalic"))
{
OutFontStyle = EFontStyle::Bold | EFontStyle::Italic;
}
}
OutFontColor = FLinearColor::Black;
const FString* const FontColorString = InRunInfo.MetaData.Find(TEXT("FontColor"));
if(FontColorString && !OutFontColor.InitFromString(*FontColorString))
{
OutFontColor = FLinearColor::Black;
}
}
/** Convert the given text style into a text block style for use by Slate */
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
static FTextBlockStyle CreateTextBlockStyle(const TSharedPtr<FFontFamily>& InFontFamily, const uint16 InFontSize, const EFontStyle::Flags InFontStyle, const FLinearColor& InFontColor)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
FName FontName = InFontFamily->RegularFont;
if((InFontStyle & EFontStyle::Bold) && (InFontStyle & EFontStyle::Italic))
{
FontName = InFontFamily->BoldItalicFont;
}
else if(InFontStyle & EFontStyle::Bold)
{
FontName = InFontFamily->BoldFont;
}
else if(InFontStyle & EFontStyle::Italic)
{
FontName = InFontFamily->ItalicFont;
}
FTextBlockStyle TextBlockStyle;
TextBlockStyle.SetFontName(FontName);
TextBlockStyle.SetFontSize(InFontSize);
TextBlockStyle.SetColorAndOpacity(InFontColor);
return TextBlockStyle;
}
/** Convert the given run meta-information into a text block style for use by Slate */
FTextBlockStyle CreateTextBlockStyle(const FRunInfo& InRunInfo) const
{
TSharedPtr<FFontFamily> FontFamily;
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
uint16 FontSize;
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
EFontStyle::Flags FontStyle;
FLinearColor FontColor;
ExplodeRunInfo(InRunInfo, FontFamily, FontSize, FontStyle, FontColor);
return CreateTextBlockStyle(FontFamily, FontSize, FontStyle, FontColor);
}
/** Try and find a font family with the given name */
TSharedPtr<FFontFamily> FindFontFamily(const FName InFamilyName) const
{
const TSharedPtr<FFontFamily>* const FoundFontFamily = AvailableFontFamilies.FindByPredicate([InFamilyName](TSharedPtr<FFontFamily>& Entry) -> bool
{
return Entry->FamilyName == InFamilyName;
});
return (FoundFontFamily) ? *FoundFontFamily : nullptr;
}
TArray<TSharedPtr<FFontFamily>> AvailableFontFamilies;
};
/**
* This is a custom decorator used to allow arbitrary styling of text within a rich-text editor
* This is required since normal text styling can only work with known styles from a given Slate style-set
*/
class FTextStyleDecoratorTest : public ITextDecorator
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
public:
static TSharedRef<FTextStyleDecoratorTest> Create(FTextStyles* const InTextStyles)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
return MakeShareable(new FTextStyleDecoratorTest(InTextStyles));
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
}
virtual ~FTextStyleDecoratorTest()
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
}
virtual bool Supports(const FTextRunParseResults& RunParseResult, const FString& Text) const override
{
return (RunParseResult.Name == TEXT("TextStyle"));
}
virtual TSharedRef<ISlateRun> Create(const TSharedRef<FTextLayout>& TextLayout, const FTextRunParseResults& RunParseResult, const FString& OriginalText, const TSharedRef<FString>& InOutModelText, const ISlateStyle* Style) override
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
FRunInfo RunInfo(RunParseResult.Name);
for(const TPair<FString, FTextRange>& Pair : RunParseResult.MetaData)
{
RunInfo.MetaData.Add(Pair.Key, OriginalText.Mid(Pair.Value.BeginIndex, Pair.Value.EndIndex - Pair.Value.BeginIndex));
}
FTextRange ModelRange;
ModelRange.BeginIndex = InOutModelText->Len();
*InOutModelText += OriginalText.Mid(RunParseResult.ContentRange.BeginIndex, RunParseResult.ContentRange.EndIndex - RunParseResult.ContentRange.BeginIndex);
ModelRange.EndIndex = InOutModelText->Len();
return FSlateTextRun::Create(RunInfo, InOutModelText, TextStyles->CreateTextBlockStyle(RunInfo), ModelRange);
}
private:
FTextStyleDecoratorTest(FTextStyles* const InTextStyles)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
: TextStyles(InTextStyles)
{
}
FTextStyles* TextStyles;
};
class SRichTextEditTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SRichTextEditTest ){}
SLATE_END_ARGS()
/**
* Construct the widget
*
* @param InArgs Declaration from which to construct the widget
*/
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct(const FArguments& InArgs)
{
// Define and add the "Roboto" font family
TextStyles.AvailableFontFamilies.Emplace(MakeShareable(new FTextStyles::FFontFamily(
LOCTEXT("RobotoFontFamily", "Roboto"),
TEXT("Roboto"),
FName(*(FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Regular.ttf"))),
FName(*(FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Bold.ttf"))),
FName(*(FPaths::EngineContentDir() / TEXT("Slate/Testing/Fonts/Roboto-Italic.ttf"))),
FName(*(FPaths::EngineContentDir() / TEXT("Slate/Testing/Fonts/Roboto-BoldItalic.ttf")))
)));
// Set some sensible defaults (these also match the default text style of "RichText.Editor.Text"
ActiveFontFamily = TextStyles.AvailableFontFamilies[0];
FontSize = 11;
FontStyle = FTextStyles::EFontStyle::Regular;
FontColor = FLinearColor::Black;
// Define the example text
// Both of our demo editors display this same text, but the text marshallers display it differently
RichEditableText = FText::FromString(
TEXT("<TextStyle FontFamily=\"Roboto\" FontSize=\"11\" FontStyle=\"Regular\" FontColor=\"(R=0.000000,G=0.000000,B=0.000000,A=1.000000)\">This is some regular text!</>")
TEXT("\n")
TEXT("<TextStyle FontFamily=\"Roboto\" FontSize=\"11\" FontStyle=\"Italic\" FontColor=\"(R=0.000000,G=0.000000,B=0.000000,A=1.000000)\">This is some italic text!</>")
TEXT("\n")
TEXT("<TextStyle FontFamily=\"Roboto\" FontSize=\"11\" FontStyle=\"Bold\" FontColor=\"(R=0.000000,G=0.000000,B=0.000000,A=1.000000)\">This is some bold text!</>")
TEXT("\n")
TEXT("<TextStyle FontFamily=\"Roboto\" FontSize=\"11\" FontStyle=\"BoldItalic\" FontColor=\"(R=0.000000,G=0.000000,B=0.000000,A=1.000000)\">This is some bold-italic text!</>")
TEXT("\n")
TEXT("<TextStyle FontFamily=\"Roboto\" FontSize=\"26\" FontStyle=\"BoldItalic\" FontColor=\"(R=1.000000,G=0.457315,B=0.164297,A=1.000000)\">This </><TextStyle FontFamily=\"Roboto\" FontSize=\"21\" FontStyle=\"Italic\" FontColor=\"(R=0.331120,G=0.348415,B=1.000000,A=1.000000)\">is </><TextStyle FontFamily=\"Roboto\" FontSize=\"21\" FontStyle=\"Bold\" FontColor=\"(R=1.000000,G=0.195252,B=0.137910,A=1.000000)\">some </><TextStyle FontFamily=\"Roboto\" FontSize=\"18\" FontStyle=\"BoldItalic\" FontColor=\"(R=1.000000,G=0.167594,B=0.566043,A=1.000000)\">crazy </><TextStyle FontFamily=\"Roboto\" FontSize=\"14\" FontStyle=\"Italic\" FontColor=\"(R=0.175489,G=0.695000,B=0.169137,A=1.000000)\">text!</>")
TEXT("\n")
TEXT("<TextStyle FontFamily=\"Roboto\" FontSize=\"11\" FontStyle=\"Regular\" FontColor=\"(R=0.000000,G=0.000000,B=0.000000,A=1.000000)\">This is a hyperlink: </><a id=\"browser\" href=\"https://www.unrealengine.com/\" style=\"RichText.Editor.Hyperlink\">Unreal Engine</><TextStyle FontFamily=\"Roboto\" FontSize=\"11\" FontStyle=\"Regular\" FontColor=\"(R=0.000000,G=0.000000,B=0.000000,A=1.000000)\"></>")
);
// The rich-text marshaller will be used with the rich-text editor...
TSharedRef<FRichTextLayoutMarshaller> RichTextMarshaller = FRichTextLayoutMarshaller::Create(
TArray<TSharedRef<ITextDecorator>>(),
&FTestStyle::Get()
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
);
// ... so we also need to add some decorators to handle the things we want to demo
OnHyperlinkClicked = FSlateHyperlinkRun::FOnClick::CreateStatic(&RichTextHelper::OnBrowserLinkClicked, AsShared());
RichTextMarshaller->AppendInlineDecorator(FHyperlinkDecorator::Create(TEXT("browser"), OnHyperlinkClicked));
RichTextMarshaller->AppendInlineDecorator(FTextStyleDecoratorTest::Create(&TextStyles));
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
// The syntax highlighter marshaller is self contained, so doesn't need any extra configuration
SyntaxHighlighterMarshaller = FRichTextSyntaxHighlighterTextLayoutMarshaller::Create(
FRichTextSyntaxHighlighterTextLayoutMarshaller::FSyntaxTextStyle()
);
this->ChildSlot
[
SNew(SScrollBox)
+SScrollBox::Slot()
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Background"))
[
SNew(SVerticalBox)
// Demo title
+SVerticalBox::Slot()
.AutoHeight()
.Padding(0)
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.Background"))
.Padding(0)
[
SNew(SRichTextBlock)
.Text(LOCTEXT("RichTextEdit.Header01", "This WYSIWYG editor has been created to show the flexibility of Slate's <RichText.Tagline.TextHighlight>SMultiLineEditableText</>"))
.TextStyle(FTestStyle::Get(), "RichText.Tagline.Text")
.DecoratorStyleSet(&FTestStyle::Get())
.AutoWrapText(true)
.Justification(ETextJustify::Center)
.Margin(FMargin(20))
]
]
// Demo description
+SVerticalBox::Slot()
.AutoHeight()
.Padding(0)
[
SNew(SRichTextBlock)
.Text(LOCTEXT("RichTextEdit.HowItWorks", "<RichText.TextHighlight>SMultiLineEditableText</> utilizes the power of text marshallers to control how the source text is displayed, and the two editors below are demonstrating the <RichText.TextHighlight>FRichTextLayoutMarshaller</> and <RichText.TextHighlight>FRichTextSyntaxHighlighterTextLayoutMarshaller</> implementations.\n\nYou can use the toolbar to control the style of the text in the rich-text editor, or you can directly edit the source text (demonstrating live injection of style information) to update the rich-text view."))
.TextStyle(FTestStyle::Get(), "RichText.Text")
.DecoratorStyleSet(&FTestStyle::Get())
.AutoWrapText(true)
.Margin(FMargin(40, 20))
]
// Rich-text editor
+SVerticalBox::Slot()
.AutoHeight()
.Padding(FMargin(25, 0))
[
SNew(SBorder)
.Padding(5.0f)
.BorderImage(FCoreStyle::Get().GetBrush("BoxShadow"))
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Interactive.Details.Background"))
.Padding(FMargin(4))
[
// Rich-text editor toolbar
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 4.0f))
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.RoundedBackground"))
.Padding(FMargin(4))
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SComboBox<TSharedPtr<FTextStyles::FFontFamily>>)
.ComboBoxStyle(FTestStyle::Get(), "RichText.Toolbar.ComboBox")
.OptionsSource(&TextStyles.AvailableFontFamilies)
.OnSelectionChanged(this, &SRichTextEditTest::OnActiveFontFamilyChanged)
.OnGenerateWidget(this, &SRichTextEditTest::GenerateFontFamilyComboEntry)
.InitiallySelectedItem(ActiveFontFamily)
[
SNew(SBox)
.Padding(FMargin(0.0f, 0.0f, 2.0f, 0.0f))
[
SNew(STextBlock)
.Text(this, &SRichTextEditTest::GetActiveFontFamilyName)
]
]
]
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SBox)
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
.MinDesiredWidth(24)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
[
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
SNew(SNumericEntryBox<uint16>)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
.Value(this, &SRichTextEditTest::GetFontSize)
.OnValueCommitted(this, &SRichTextEditTest::SetFontSize)
]
]
+SHorizontalBox::Slot()
.AutoWidth()
.Padding(FMargin(4.0f, 0.0f, 0.0f, 0.0f))
[
SNew(SCheckBox)
.Style(FTestStyle::Get(), "RichText.Toolbar.ToggleButtonCheckbox")
.IsChecked(this, &SRichTextEditTest::IsFontStyleBold)
.OnCheckStateChanged(this, &SRichTextEditTest::OnFontStyleBoldChanged)
[
SNew(SBox)
.WidthOverride(24)
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
[
SNew(STextBlock)
.TextStyle(FTestStyle::Get(), "RichText.Toolbar.BoldText")
.Text(LOCTEXT("BoldLabel", "B"))
]
]
]
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SCheckBox)
.Style(FTestStyle::Get(), "RichText.Toolbar.ToggleButtonCheckbox")
.IsChecked(this, &SRichTextEditTest::IsFontStyleItalic)
.OnCheckStateChanged(this, &SRichTextEditTest::OnFontStyleItalicChanged)
[
SNew(SBox)
.WidthOverride(24)
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
[
SNew(STextBlock)
.TextStyle(FTestStyle::Get(), "RichText.Toolbar.ItalicText")
.Text(LOCTEXT("ItalicLabel", "I"))
]
]
]
+SHorizontalBox::Slot()
.Padding(FMargin(4.0f, 0.0f, 0.0f, 0.0f))
.AutoWidth()
[
SNew(SButton)
.ButtonStyle(FTestStyle::Get(), "RichText.Toolbar.Button")
.OnClicked(this, &SRichTextEditTest::OpenFontColorPicker)
[
SNew(SOverlay)
+SOverlay::Slot()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 4.0f))
.HAlign(HAlign_Center)
.VAlign(VAlign_Bottom)
[
SNew(STextBlock)
.TextStyle(FTestStyle::Get(), "RichText.Toolbar.BoldText")
.Text(LOCTEXT("ColorLabel", "A"))
]
+SOverlay::Slot()
.HAlign(HAlign_Center)
.VAlign(VAlign_Bottom)
[
SNew(SColorBlock)
.Color(this, &SRichTextEditTest::GetFontColor)
.Size(FVector2D(20.0f, 6.0f))
]
]
]
+SHorizontalBox::Slot()
.Padding(FMargin(4.0f, 0.0f, 0.0f, 0.0f))
.AutoWidth()
[
SAssignNew(HyperlinkComboButton, SComboButton)
.ComboButtonStyle(FTestStyle::Get(), "RichText.Toolbar.ComboButton")
.HasDownArrow(false)
.OnComboBoxOpened(this, &SRichTextEditTest::HandleHyperlinkComboOpened)
.ButtonContent()
[
SNew(SBox)
.WidthOverride(20)
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
[
SNew(SImage)
.Image(FTestStyle::Get().GetBrush("RichText.Toolbar.HyperlinkImage"))
]
]
.MenuContent()
[
SNew(SGridPanel)
.FillColumn(1, 1.0f)
+SGridPanel::Slot(0, 0)
.HAlign(HAlign_Right)
.Padding(FMargin(2.0f))
[
SNew(STextBlock)
.TextStyle(FTestStyle::Get(), "RichText.Toolbar.Text")
.Text(LOCTEXT("HyperlinkNameLabel", "Name:"))
]
+SGridPanel::Slot(1, 0)
.Padding(FMargin(2.0f))
[
SNew(SBox)
.WidthOverride(300)
[
SAssignNew(HyperlinkNameTextBox, SEditableTextBox)
]
]
+SGridPanel::Slot(0, 1)
.HAlign(HAlign_Right)
.Padding(FMargin(2.0f))
[
SNew(STextBlock)
.TextStyle(FTestStyle::Get(), "RichText.Toolbar.Text")
.Text(LOCTEXT("HyperlinkURLLabel", "URL:"))
]
+SGridPanel::Slot(1, 1)
.Padding(FMargin(2.0f))
[
SNew(SBox)
.WidthOverride(300)
[
SAssignNew(HyperlinkURLTextBox, SEditableTextBox)
]
]
+SGridPanel::Slot(0, 2)
.HAlign(HAlign_Right)
.Padding(FMargin(2.0f))
.ColumnSpan(2)
[
SNew(SButton)
.ButtonStyle(FTestStyle::Get(), "RichText.Toolbar.Button")
.OnClicked(this, &SRichTextEditTest::HandleInsertHyperlinkClicked)
[
SNew(STextBlock)
.TextStyle(FTestStyle::Get(), "RichText.Toolbar.Text")
.Text(LOCTEXT("HyperlinkInsertLabel", "Insert Hyperlink"))
]
]
]
]
]
]
+SVerticalBox::Slot()
.AutoHeight()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 0.0f))
[
SAssignNew(RichEditableTextBox, SMultiLineEditableTextBox)
.Font(FTestStyle::Get().GetWidgetStyle<FTextBlockStyle>("RichText.Editor.Text").Font)
.Text(this, &SRichTextEditTest::GetRichEditableText)
.OnTextChanged(this, &SRichTextEditTest::HandleRichEditableTextChanged)
.OnTextCommitted(this, &SRichTextEditTest::HandleRichEditableTextCommitted)
.OnCursorMoved(this, &SRichTextEditTest::HandleRichEditableTextCursorMoved)
.Marshaller(RichTextMarshaller)
.ClearTextSelectionOnFocusLoss(false)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
.AutoWrapText(true)
.Margin(4)
.LineHeightPercentage(1.1f)
]
]
]
]
// Source text editor
+SVerticalBox::Slot()
.AutoHeight()
.Padding(FMargin(25, 0, 25, 25))
[
SNew(SBorder)
.Padding(5.0f)
.BorderImage(FCoreStyle::Get().GetBrush("BoxShadow"))
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Interactive.Details.Background"))
.Padding(FMargin(4))
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 4.0f))
[
SNew(SMultiLineEditableTextBox)
.Text(this, &SRichTextEditTest::GetRichEditableText)
.OnTextChanged(this, &SRichTextEditTest::HandleRichEditableTextChanged)
.OnTextCommitted(this, &SRichTextEditTest::HandleRichEditableTextCommitted)
.Marshaller(SyntaxHighlighterMarshaller)
.AutoWrapText(true)
.Margin(4)
.LineHeightPercentage(1.1f)
]
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.RoundedBackground"))
.Padding(FMargin(4))
.HAlign(HAlign_Right)
[
SNew(SCheckBox)
.Style(FTestStyle::Get(), "RichText.Toolbar.Checkbox")
.IsChecked(this, &SRichTextEditTest::IsEnableSyntaxHighlightingChecked)
.OnCheckStateChanged(this, &SRichTextEditTest::OnEnableSyntaxHighlightingChanged)
[
SNew(STextBlock)
.TextStyle(FTestStyle::Get(), "RichText.Toolbar.Text")
.Text(LOCTEXT("EnableSyntaxHighlightingLabel", "Enable Syntax Highlighting"))
]
]
]
]
]
]
]
]
];
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
protected:
FText GetRichEditableText() const
{
return RichEditableText;
}
void HandleRichEditableTextChanged(const FText& Text)
{
RichEditableText = Text;
}
void HandleRichEditableTextCommitted(const FText& Text, ETextCommit::Type Type)
{
RichEditableText = Text;
}
void HandleRichEditableTextCursorMoved(const FTextLocation& NewCursorPosition )
{
// We can use GetRunUnderCursor to query the style of the text under the cursor
// We can then use this to update the toolbar
TSharedPtr<const IRun> Run = RichEditableTextBox->GetRunUnderCursor();
if(Run.IsValid() && Run->GetRunInfo().Name == TEXT("TextStyle"))
{
TextStyles.ExplodeRunInfo(Run->GetRunInfo(), ActiveFontFamily, FontSize, FontStyle, FontColor);
}
}
FText GetActiveFontFamilyName() const
{
return ActiveFontFamily->DisplayName;
}
void OnActiveFontFamilyChanged(TSharedPtr<FTextStyles::FFontFamily> NewValue, ESelectInfo::Type)
{
ActiveFontFamily = NewValue;
StyleSelectedText();
}
TSharedRef<SWidget> GenerateFontFamilyComboEntry(TSharedPtr<FTextStyles::FFontFamily> SourceEntry)
{
return SNew(STextBlock).Text(SourceEntry->DisplayName);
}
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
TOptional<uint16> GetFontSize() const
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
return FontSize;
}
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
void SetFontSize(uint16 NewValue, ETextCommit::Type)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
FontSize = NewValue;
StyleSelectedText();
}
ECheckBoxState IsFontStyleBold() const
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
return (FontStyle & FTextStyles::EFontStyle::Bold) ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
}
void OnFontStyleBoldChanged(ECheckBoxState InState)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
if(InState == ECheckBoxState::Checked)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
FontStyle |= FTextStyles::EFontStyle::Bold;
}
else
{
FontStyle &= ~FTextStyles::EFontStyle::Bold;
}
StyleSelectedText();
}
ECheckBoxState IsFontStyleItalic() const
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
return (FontStyle & FTextStyles::EFontStyle::Italic) ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
}
void OnFontStyleItalicChanged(ECheckBoxState InState)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
if(InState == ECheckBoxState::Checked)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
FontStyle |= FTextStyles::EFontStyle::Italic;
}
else
{
FontStyle &= ~FTextStyles::EFontStyle::Italic;
}
StyleSelectedText();
}
FLinearColor GetFontColor() const
{
return FontColor;
}
void SetFontColor(FLinearColor NewValue)
{
FontColor = NewValue;
StyleSelectedText();
}
FReply OpenFontColorPicker()
{
FColorPickerArgs PickerArgs;
PickerArgs.bOnlyRefreshOnMouseUp = true;
PickerArgs.ParentWidget = AsShared();
PickerArgs.bUseAlpha = false;
PickerArgs.bOnlyRefreshOnOk = false;
PickerArgs.OnColorCommitted = FOnLinearColorValueChanged::CreateSP(this, &SRichTextEditTest::SetFontColor);
PickerArgs.OnColorPickerCancelled = FOnColorPickerCancelled::CreateSP(this, &SRichTextEditTest::SetFontColor);
PickerArgs.InitialColorOverride = FontColor;
OpenColorPicker(PickerArgs);
return FReply::Handled();
}
void StyleSelectedText()
{
// Apply the current style to the selected text
// If no text is selected, then a new (empty) run will be inserted with the appropriate style
const FRunInfo RunInfo = TextStyles.CreateRunInfo(ActiveFontFamily, FontSize, FontStyle, FontColor);
const FTextBlockStyle TextBlockStyle = TextStyles.CreateTextBlockStyle(ActiveFontFamily, FontSize, FontStyle, FontColor);
RichEditableTextBox->ApplyToSelection(RunInfo, TextBlockStyle);
FSlateApplication::Get().SetKeyboardFocus(RichEditableTextBox, EFocusCause::SetDirectly);
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
}
void HandleHyperlinkComboOpened()
{
// Read any currently selected text, and use this as the default name of the hyperlink
FString SelectedText = RichEditableTextBox->GetSelectedText().ToString();
for(int32 SelectedTextIndex = 0; SelectedTextIndex < SelectedText.Len(); ++SelectedTextIndex)
{
if(FChar::IsLinebreak(SelectedText[SelectedTextIndex]))
{
SelectedText = SelectedText.Left(SelectedTextIndex);
break;
}
}
HyperlinkNameTextBox->SetText(FText::FromString(SelectedText));
// We can use GetRunUnderCursor to query whether the cursor is currently over a hyperlink
// If it is, we can use that as the default URL for the hyperlink
TSharedPtr<const IRun> Run = RichEditableTextBox->GetRunUnderCursor();
if(Run.IsValid() && Run->GetRunInfo().Name == TEXT("a"))
{
const FString* const URLUnderCursor = Run->GetRunInfo().MetaData.Find(TEXT("href"));
HyperlinkURLTextBox->SetText((URLUnderCursor) ? FText::FromString(*URLUnderCursor) : FText());
}
else
{
HyperlinkURLTextBox->SetText(FText());
}
}
FReply HandleInsertHyperlinkClicked()
{
HyperlinkComboButton->SetIsOpen(false);
const FText& Name = HyperlinkNameTextBox->GetText();
const FText& URL = HyperlinkURLTextBox->GetText();
// Create the correct meta-information for this run, so that valid source rich-text formatting can be generated for it
FRunInfo RunInfo(TEXT("a"));
RunInfo.MetaData.Add(TEXT("id"), TEXT("browser"));
RunInfo.MetaData.Add(TEXT("href"), URL.ToString());
RunInfo.MetaData.Add(TEXT("style"), TEXT("RichText.Editor.Hyperlink"));
// Create the new run, and then insert it at the cursor position
TSharedRef<FSlateHyperlinkRun> HyperlinkRun = FSlateHyperlinkRun::Create(
RunInfo,
MakeShareable(new FString(Name.ToString())),
FTestStyle::Get().GetWidgetStyle<FHyperlinkStyle>(FName(TEXT("RichText.Editor.Hyperlink"))),
OnHyperlinkClicked,
FSlateHyperlinkRun::FOnGenerateTooltip(),
FSlateHyperlinkRun::FOnGetTooltipText()
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
);
RichEditableTextBox->InsertRunAtCursor(HyperlinkRun);
return FReply::Handled();
}
ECheckBoxState IsEnableSyntaxHighlightingChecked() const
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
return (SyntaxHighlighterMarshaller->IsSyntaxHighlightingEnabled()) ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
}
void OnEnableSyntaxHighlightingChanged(ECheckBoxState InState)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
{
SyntaxHighlighterMarshaller->EnableSyntaxHighlighting(InState == ECheckBoxState::Checked);
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
}
protected:
FText RichEditableText;
TSharedPtr<SMultiLineEditableTextBox> RichEditableTextBox;
TSharedPtr<FSyntaxHighlighterTextLayoutMarshaller> SyntaxHighlighterMarshaller;
FSlateHyperlinkRun::FOnClick OnHyperlinkClicked;
TSharedPtr<SComboButton> HyperlinkComboButton;
TSharedPtr<SEditableTextBox> HyperlinkNameTextBox;
TSharedPtr<SEditableTextBox> HyperlinkURLTextBox;
FTextStyles TextStyles;
TSharedPtr<FTextStyles::FFontFamily> ActiveFontFamily;
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden Change 2889481 on 2016/03/02 by Richard.TalbotWatkin Fixed socket preview component in Static Mesh Editor so that it remains correctly attached if the socket is renamed (Contributed by Manny-MADE). PR #2094 #jira UE-27338 - GitHub 2094 : BUGFIX: Socket preview component broken in Static Mesh Editor FSlateAtlasedTextureResource Made changes to the Perforce source control provider so that operations can be cancelled with immediate effect if there is an issue connecting to the server. #jira UE-24632 - "Updating file(s) source control status..." dialog doesn't allow Cancel #RB Thomas.Sarkanen Change 2890359 on 2016/03/02 by Nick.Darnell Jira Mirroring - Adding some tools for matching gits sha to perforce commits. Also adding the program for scraping jira issues and pushing them elsewhere. Change 2892008 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813475 Change 2892086 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2813457 Change 2892117 on 2016/03/03 by Richard.TalbotWatkin Back out changelist 2812830 Change 2892316 on 2016/03/03 by Richard.TalbotWatkin Fixed conversion of brushes to volumes so that the original transform isn't lost. #jira UE-24404 - Convert Actor from BSP to volume can affect the actor transform Change 2892765 on 2016/03/03 by Andrew.Rodham Changed public facing level editor classes to use ILevelEditor instead of SLevelEditor #codereview Mike.Fricker Change 2894154 on 2016/03/04 by Richard.TalbotWatkin Fixed error in USplineComponent::GetSegmentLength when the segment is linear or constant. Change 2894481 on 2016/03/04 by Cody.Albert #jira UE-27830 Fixed mismatched layout name Change 2896339 on 2016/03/06 by Richard.TalbotWatkin Fixed undo issues in texture paint mode. #jira UE-21206 - Texture Painting bugs Change 2896713 on 2016/03/07 by Joe.Conley Replacing #ifndef with #pragma once Change 2896955 on 2016/03/07 by Cody.Albert #jira UE-27711 Added initialization for LastHighlightInteractionTime Change 2898895 on 2016/03/08 by Richard.TalbotWatkin More optimizations to editing actors with a large number of components. Improved performance when executing construction scripts. #jira UE-24821 - Blueprints with thousands of components perform very badly when selected in the Level Viewport Change 2900770 on 2016/03/09 by Joe.Conley Change #ifndef to #pragma once for headers under Runtime/Engine/Public Change 2900835 on 2016/03/09 by Richard.TalbotWatkin Fixed issues with scrolling items into view in STileView. Also fixed bugs in STileView::ReGenerateItems. #jira UE-20441 - Hitting F2 to rename an asset in the Content Browser moves the asset out of view if the CB is at default size and location #jira UE-20807 - Browse to Asset in Content Browser focuses just on the text #codereview Nick.Atamas Change 2900837 on 2016/03/09 by Richard.TalbotWatkin Added an OnKeyDownHandler to SSearchBox and SAssetSearchBox so that functionality for handling keypresses which is normally handled by SEditableText can be overridden. Added custom behavior to SAssetPicker and SAssetSearchBox so that up/down cursor keys can be used to change focus from the text box to the menu. #jira UE-20567 - UX Regression on Open Asset Panel This also addresses a similar issue with the auto-complete popup in the Content Browser search bar. Change 2900847 on 2016/03/09 by Richard.TalbotWatkin Fixed include dependency. Change 2900951 on 2016/03/09 by Richard.TalbotWatkin Fixed non-dependent name lookup for superclass member access. Change 2901325 on 2016/03/09 by Jamie.Dale PR #2107: Output Log Filtering (Contributed by phoboz-net) Change 2901391 on 2016/03/09 by Jamie.Dale Some more output log filter improvements We now defer the search until you finish typing, and the filter list itself now uses toggle buttons (like the content browser) so that you can toggle multiple filters without having to re-open the menu. Change 2901736 on 2016/03/09 by Alexis.Matte #jira UE-14632 Export staticmeshactor which are base on blueprint class as a blueprint instead of exporting it as an actor. #codereview nick.darnell Change 2903162 on 2016/03/10 by Alexis.Matte Fbx scene importer, Fix crash when changing the material base path in the material tab page #codereview nick.darnell Change 2903903 on 2016/03/10 by Richard.TalbotWatkin Fixed crash when attempting to paste an object from the level viewport into the content browser. #jira UE-26100 - Crash when attempting to copy an object from the world into the content browser Change 2903947 on 2016/03/10 by Richard.TalbotWatkin [CL 2937134 by Nick Darnell in Main branch]
2016-04-07 16:16:52 -04:00
uint16 FontSize;
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
FTextStyles::EFontStyle::Flags FontStyle;
FLinearColor FontColor;
};
#endif //WITH_FANCY_TEXT
/** Demonstrates the brokenness of our current approach to trading smoothness for sharpness. */
class SLayoutRoundingTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS(SLayoutRoundingTest)
{}
SLATE_END_ARGS()
static TSharedRef<SWidget> MakeRow(int32 NumWidgets)
{
TSharedRef<SHorizontalBox> HBox = SNew(SHorizontalBox);
for (int ColIndex=0; ColIndex < NumWidgets; ++ColIndex)
{
HBox->AddSlot()
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
[
SNew(SImage)
.ColorAndOpacity(FLinearColor(1,1,1,0.5f))
.Image( FCoreStyle::Get().GetBrush("GenericWhiteBox") )
];
}
return HBox;
}
void Construct( const FArguments& InArgs )
{
TSharedRef<SVerticalBox> VBox = SNew(SVerticalBox);
for (int RowIndex=0; RowIndex < 15; ++RowIndex)
{
VBox->AddSlot()
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
[
MakeRow(15)
];
}
this->ChildSlot
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.FillWidth(1.17)
+SHorizontalBox::Slot()
.FillWidth(1.0f)
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.FillHeight(1.17)
+SVerticalBox::Slot()
.FillHeight(1)
[
VBox
]
]
];
}
};
/**
* A list of commands for the multibox test
*/
class FMultiBoxTestCommandList : public TCommands<FMultiBoxTestCommandList>
{
public:
FMultiBoxTestCommandList()
: TCommands<FMultiBoxTestCommandList>( "MultiBoxTest", LOCTEXT("MultiboxTest", "Multibox Test"), NAME_None, FTestStyle::Get().GetStyleSetName() )
{
}
public:
TSharedPtr<FUICommandInfo> FirstCommandInfo;
TSharedPtr<FUICommandInfo> SecondCommandInfo;
TSharedPtr<FUICommandInfo> ThirdCommandInfo;
TSharedPtr<FUICommandInfo> FourthCommandInfo;
TSharedPtr<FUICommandInfo> FifthCommandInfo;
TSharedPtr<FUICommandInfo> SixthCommandInfo;
TSharedPtr<FUICommandInfo> SeventhCommandInfo;
TSharedPtr<FUICommandInfo> EighthCommandInfo;
public:
void RegisterCommands()
{
UI_COMMAND( FirstCommandInfo, "First Test", "This is the first test menu item", EUserInterfaceActionType::ToggleButton, FInputChord() );
UI_COMMAND( SecondCommandInfo, "Second Test", "This is the second test menu item. Shows a keybinding", EUserInterfaceActionType::ToggleButton, FInputChord( EModifierKey::Shift, EKeys::A ) );
UI_COMMAND( ThirdCommandInfo, "Third Test", "This is the thrid test menu item", EUserInterfaceActionType::ToggleButton, FInputChord() );
UI_COMMAND( FourthCommandInfo, "Fourth Test", "This is the fourth test menu item", EUserInterfaceActionType::ToggleButton, FInputChord() );
UI_COMMAND( FifthCommandInfo, "Fifth Test", "This is the fifth test menu item", EUserInterfaceActionType::ToggleButton, FInputChord() );
UI_COMMAND( SixthCommandInfo, "Sixth Test", "This is the sixth test menu item. Shows a keybinding", EUserInterfaceActionType::ToggleButton, FInputChord() );
UI_COMMAND( SeventhCommandInfo, "Seventh Test", "This is the seventh test menu item", EUserInterfaceActionType::ToggleButton, FInputChord() );
UI_COMMAND( EighthCommandInfo, "Eighth Test", "This is the eighth test menu item", EUserInterfaceActionType::ToggleButton, FInputChord() );
}
};
class FMenus
{
public:
static void FillMenu1Entries( FMenuBuilder& MenuBuilder )
{
MenuBuilder.BeginSection("Menu1Entries");
{
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().FirstCommandInfo );
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().SecondCommandInfo );
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().ThirdCommandInfo );
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().FourthCommandInfo );
}
MenuBuilder.EndSection();
MenuBuilder.BeginSection("Menu1Entries2");
{
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().FifthCommandInfo );
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().SixthCommandInfo );
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().SeventhCommandInfo );
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().EighthCommandInfo );
}
MenuBuilder.EndSection();
MenuBuilder.BeginSection("Menu1Entries3");
{
MenuBuilder.AddSubMenu( LOCTEXT("SubMenu", "Sub Menu"), LOCTEXT("OpensASubmenu", "Opens a submenu"), FNewMenuDelegate::CreateStatic( &FMenus::FillSubMenuEntries ) );
MenuBuilder.AddSubMenu( LOCTEXT("SubMenu2IsALittleLonger", "Sub Menu 2 is a little longer"), LOCTEXT("OpensASubmenu", "Opens a submenu"), FNewMenuDelegate::CreateStatic( &FMenus::FillSubMenuEntries ) );
}
MenuBuilder.EndSection();
MenuBuilder.BeginSection("Menu1Entries4");
{
MenuBuilder.AddWidget(SNew(SVolumeControl), LOCTEXT("Volume", "Volume"));
}
MenuBuilder.EndSection();
}
static void FillMenu2Entries( FMenuBuilder& MenuBuilder )
{
MenuBuilder.AddEditableText( LOCTEXT("EditableItem", "Editable Item" ), LOCTEXT("EditableItem_ToolTip", "You can edit this item's text" ), FSlateIcon(), LOCTEXT("DefaultEditableText", "Edit Me!" )) ;
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().FirstCommandInfo );
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().SecondCommandInfo );
MenuBuilder.AddSubMenu( LOCTEXT("SubMenu", "Sub Menu"), LOCTEXT("OpensASubmenu", "Opens a submenu"), FNewMenuDelegate::CreateStatic( &FMenus::FillSubMenuEntries ) );
MenuBuilder.AddSubMenu( LOCTEXT("SubMenu2IsALittleLonger", "Sub Menu 2 is a little longer"), LOCTEXT("OpensASubmenu", "Opens a submenu"), FNewMenuDelegate::CreateStatic( &FMenus::FillSubMenuEntries ) );
}
protected:
static void FillSubMenuEntries( FMenuBuilder& MenuBuilder )
{
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().FirstCommandInfo );
MenuBuilder.AddMenuEntry( FMultiBoxTestCommandList::Get().SecondCommandInfo );
MenuBuilder.AddSubMenu( LOCTEXT("SubMenu", "Sub Menu"), LOCTEXT("OpensASubmenu", "Opens a submenu"), FNewMenuDelegate::CreateStatic( &FMenus::FillSubMenuEntries ) );
MenuBuilder.AddSubMenu( LOCTEXT("SubMenu2IsALittleLonger", "Sub Menu 2 is a little longer"), LOCTEXT("OpensASubmenu", "Opens a submenu"), FNewMenuDelegate::CreateStatic( &FMenus::FillSubMenuEntries ) );
}
};
class SMultiBoxTest
: public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SMultiBoxTest ){}
SLATE_END_ARGS()
SMultiBoxTest()
: CommandList( new FUICommandList() )
{}
/**
* Construct this widget
*
* @param InArgs The declaration data for this widget
*/
void Construct( const FArguments& InArgs )
{
ButtonStates.Reset();
ButtonStates.AddZeroed( 8 );
struct Local
{
static bool IsButtonEnabled( int32 ButtonIndex )
{
return true;
}
static void OnButtonPressed( int32 ButtonIndex )
{
const bool NewState = !ButtonStates[ ButtonIndex ];
ButtonStates[ ButtonIndex ] = NewState;
}
static bool IsButtonChecked( int32 ButtonIndex )
{
return ButtonStates[ ButtonIndex ];
}
};
FMultiBoxTestCommandList::Register();
CommandList->MapAction(
FMultiBoxTestCommandList::Get().FirstCommandInfo,
FExecuteAction::CreateStatic( &Local::OnButtonPressed, 0),
FCanExecuteAction::CreateStatic( &Local::IsButtonEnabled, 0 ),
FIsActionChecked::CreateStatic( &Local::IsButtonChecked, 0 )
);
CommandList->MapAction(
FMultiBoxTestCommandList::Get().SecondCommandInfo,
FExecuteAction::CreateStatic( &Local::OnButtonPressed, 1 ),
FCanExecuteAction::CreateStatic( &Local::IsButtonEnabled, 1 ),
FIsActionChecked::CreateStatic( &Local::IsButtonChecked, 1 )
);
CommandList->MapAction(
FMultiBoxTestCommandList::Get().ThirdCommandInfo,
FExecuteAction::CreateStatic( &Local::OnButtonPressed, 2 ),
FCanExecuteAction::CreateStatic( &Local::IsButtonEnabled, 2 ),
FIsActionChecked::CreateStatic( &Local::IsButtonChecked, 2 )
);
CommandList->MapAction(
FMultiBoxTestCommandList::Get().FourthCommandInfo,
FExecuteAction::CreateStatic( &Local::OnButtonPressed, 3 ),
FCanExecuteAction::CreateStatic( &Local::IsButtonEnabled, 3 ),
FIsActionChecked::CreateStatic( &Local::IsButtonChecked, 3 )
);
CommandList->MapAction(
FMultiBoxTestCommandList::Get().FifthCommandInfo,
FExecuteAction::CreateStatic( &Local::OnButtonPressed, 4 ),
FCanExecuteAction::CreateStatic( &Local::IsButtonEnabled, 4 ),
FIsActionChecked::CreateStatic( &Local::IsButtonChecked, 4 )
);
CommandList->MapAction(
FMultiBoxTestCommandList::Get().SixthCommandInfo,
FExecuteAction::CreateStatic( &Local::OnButtonPressed, 5 ),
FCanExecuteAction::CreateStatic( &Local::IsButtonEnabled, 5 ),
FIsActionChecked::CreateStatic( &Local::IsButtonChecked, 5 )
);
CommandList->MapAction(
FMultiBoxTestCommandList::Get().SeventhCommandInfo,
FExecuteAction::CreateStatic( &Local::OnButtonPressed, 6 ),
FCanExecuteAction::CreateStatic( &Local::IsButtonEnabled, 6 ),
FIsActionChecked::CreateStatic( &Local::IsButtonChecked, 6 )
);
CommandList->MapAction(
FMultiBoxTestCommandList::Get().EighthCommandInfo,
FExecuteAction::CreateStatic( &Local::OnButtonPressed, 7 ),
FCanExecuteAction::CreateStatic( &Local::IsButtonEnabled, 7 ),
FIsActionChecked::CreateStatic( &Local::IsButtonChecked, 7 )
);
FMenuBarBuilder MenuBarBuilder( CommandList );
{
MenuBarBuilder.AddPullDownMenu( LOCTEXT("Menu1", "Menu 1"), LOCTEXT("OpensMenu1", "Opens Menu 1"), FNewMenuDelegate::CreateStatic( &FMenus::FillMenu1Entries ) );
MenuBarBuilder.AddPullDownMenu( LOCTEXT("Menu2", "Menu 2"), LOCTEXT("OpensMenu2", "Opens Menu 2"), FNewMenuDelegate::CreateStatic( &FMenus::FillMenu2Entries ) );
}
this->ChildSlot
[
SNew( SVerticalBox )
+SVerticalBox::Slot()
.AutoHeight()
[
MenuBarBuilder.MakeWidget()
]
];
}
protected:
TSharedRef< FUICommandList > CommandList;
static TArray<bool> ButtonStates;
};
TArray<bool> SMultiBoxTest::ButtonStates;
class SAnimTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS( SAnimTest ){}
SLATE_END_ARGS()
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct( const FArguments& InArgs )
{
this->ChildSlot
. HAlign( HAlign_Fill )
. VAlign( VAlign_Fill)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
.Padding( 3 )
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(STextBlock)
. Text( LOCTEXT("AnimTestDurationLabel", "Duration: ") )
]
+ SHorizontalBox::Slot()
.AutoWidth()
.Padding(0,0,5,0)
[
SNew(SSpinBox<float>)
. MinValue(0.0f)
. MaxValue(2.0f)
. Delta(0.01f)
. Value( this, &SAnimTest::GetAnimTime )
. OnValueChanged( this, &SAnimTest::AnimTime_OnChanged )
]
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
. Text( LOCTEXT("AnimTestPlayButtonLabel", "Play Animation") )
. OnClicked( this, &SAnimTest::PlayAnimation_OnClicked )
]
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
. Text( LOCTEXT("AnimTestReverseButtonLabel", "Reverse") )
. OnClicked( this, &SAnimTest::Reverse_OnClicked )
]
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
. Text( LOCTEXT("AnimTestPlayReverseButtonLabel", "PlayReverse") )
. OnClicked( this, &SAnimTest::PlayReverse_OnClicked )
]
]
+ SVerticalBox::Slot()
. FillHeight(1)
[
SNew(SBorder)
. ContentScale( this, &SAnimTest::GetContentScale )
. HAlign(HAlign_Center)
. VAlign(VAlign_Center)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
. HAlign(HAlign_Fill)
. VAlign(VAlign_Top)
[
// TITLE AREA
SNew(SBorder)
. Cursor( EMouseCursor::CardinalCross )
. Padding( 3 )
. HAlign(HAlign_Center)
[
SNew(STextBlock)
. Text( LOCTEXT("AnimTestLabel", "Animation Testing") )
. ColorAndOpacity( this, &SAnimTest::GetContentColor )
]
]
+ SVerticalBox::Slot()
. FillHeight(1)
. HAlign(HAlign_Fill)
. VAlign(VAlign_Fill)
[
// NODE CONTENT AREA
SNew(SBorder)
. HAlign(HAlign_Fill)
. VAlign(VAlign_Fill)
. Padding( FMargin(3.0f) )
. ColorAndOpacity( this, &SAnimTest::GetContentColorAsLinearColor )
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
. HAlign(HAlign_Left)
[
// LEFT
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
. HAlign(HAlign_Center)
[
SNew(SImage)
. Image( FCoreStyle::Get().GetBrush( TEXT("DefaultAppIcon") ) )
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SButton)
. Text( LOCTEXT("ButtonTestLabel", "Button Test") )
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(STextBlock)
. Text( LOCTEXT("GenericTextItemTestLabel", "Generic Text Item") )
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SButton)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SImage) .Image( FCoreStyle::Get().GetBrush( TEXT("DefaultAppIcon") ) )
]
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(STextBlock) .Text( LOCTEXT("ButtonTextLabel", "Button with content") )
]
]
]
]
+ SHorizontalBox::Slot()
. FillWidth(1)
. Padding(5)
[
// MIDDLE
SNew(SSpacer)
]
+ SHorizontalBox::Slot()
.AutoWidth()
. HAlign(HAlign_Right)
[
// RIGHT
SNew(SImage) . Image( FTestStyle::Get().GetBrush( TEXT("GammaReference") ) )
]
]
]
]
]
];
// Set the default Animation duration.
AnimTime_OnChanged(0.15f);
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
FReply PlayAnimation_OnClicked()
{
---- Merging with SlateDev branch ---- Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI. While asleep, Slate will skip the Tick & Paint pass for that frame entirely. - There are TWO ways to "wake" Slate and cause a Tick/Paint pass: 1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active. - Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick. 2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked. - The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action. - Examples include animation, async operations that update periodically, progress updates, loading bars, etc. - An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before. - An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick() - There are THREE ways to unregister an active tick: 1. Return EActiveTickReturnType::StopTicking from the active tick function 2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick() 3. Destroy the widget responsible for the active tick - Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar - There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed. - The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f) - The FCurveSequence API has been updated to work with the active tick system - Playing a curve sequence now requires that you pass the widget being animated by the sequence - The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete - GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end. [CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
SpawnAnimation.Play(this->AsShared());
return FReply::Handled();
}
FReply Reverse_OnClicked()
{
SpawnAnimation.Reverse();
return FReply::Handled();
}
FReply PlayReverse_OnClicked()
{
---- Merging with SlateDev branch ---- Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI. While asleep, Slate will skip the Tick & Paint pass for that frame entirely. - There are TWO ways to "wake" Slate and cause a Tick/Paint pass: 1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active. - Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick. 2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked. - The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action. - Examples include animation, async operations that update periodically, progress updates, loading bars, etc. - An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before. - An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick() - There are THREE ways to unregister an active tick: 1. Return EActiveTickReturnType::StopTicking from the active tick function 2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick() 3. Destroy the widget responsible for the active tick - Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar - There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed. - The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f) - The FCurveSequence API has been updated to work with the active tick system - Playing a curve sequence now requires that you pass the widget being animated by the sequence - The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete - GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end. [CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
SpawnAnimation.PlayReverse(this->AsShared());
return FReply::Handled();
}
float GetAnimTime() const
{
return AnimTime;
}
void AnimTime_OnChanged( float InNewValue )
{
AnimTime = InNewValue;
// Create the animation
SpawnAnimation = FCurveSequence();
{
ZoomCurve = SpawnAnimation.AddCurve(0, AnimTime);
FadeCurve = SpawnAnimation.AddCurve(AnimTime, AnimTime);
}
}
FSlateColor GetContentColor() const
{
return GetContentColorAsLinearColor();
}
FLinearColor GetContentColorAsLinearColor() const
{
return FMath::Lerp( FLinearColor(1,1,1,0), FLinearColor(1,1,1,1), FadeCurve.GetLerp() );
}
FVector2D GetContentScale() const
{
const float ZoomValue = ZoomCurve.GetLerp();
return FVector2D(ZoomValue, ZoomValue);
}
float AnimTime;
FCurveSequence SpawnAnimation;
FCurveHandle ZoomCurve;
FCurveHandle FadeCurve;
};
class SFxTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS( SFxTest )
{}
SLATE_END_ARGS()
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct( const FArguments& InArgs )
{
RenderScale = 1.0f;
RenderScaleOrigin = FVector2D(0.5f, 0.5f);
LayoutScale = 1.0f;
VisualOffset = FVector2D::ZeroVector;
FxWidgetIgnoreClippingState = ECheckBoxState::Checked;
this->ChildSlot
[
SNew(SVerticalBox)
+SVerticalBox::Slot() .AutoHeight()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
[
SNew(SGridPanel)
.FillColumn(1, 1.0f)
+SGridPanel::Slot(0,0) .HAlign(HAlign_Right)
[
SNew(STextBlock)
.Text( LOCTEXT("FxTextVisualScaleLabel", "Visual Scale:") )
]
+SGridPanel::Slot(1,0) .Padding(2)
[
SNew(SSpinBox<float>)
.MinValue(0.1f) .MaxValue(20.0f)
.Value(this, &SFxTest::GetRenderScale)
.OnValueChanged(this, &SFxTest::OnRenderScaleChanged)
]
+SGridPanel::Slot(0,1) .HAlign(HAlign_Right)
[
SNew(STextBlock)
.Text( LOCTEXT("FxTextVisualScaleOriginLabel", "Visual Scale Origin:") )
]
+SGridPanel::Slot(1,1)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot() .Padding(2)
[
SNew(SSpinBox<float>)
.MinValue(0.0f) .MaxValue(1.0f)
.Value(this, &SFxTest::GetRenderScaleOriginX)
.OnValueChanged(this, &SFxTest::OnRenderScaleChangedX)
]
+SHorizontalBox::Slot() .Padding(2)
[
SNew(SSpinBox<float>)
.MinValue(0.0f) .MaxValue(1.0f)
.Value(this, &SFxTest::GetRenderScaleOriginY)
.OnValueChanged(this, &SFxTest::OnRenderScaleChangedY)
]
]
+SGridPanel::Slot(0,2) .HAlign(HAlign_Right)
[
SNew(STextBlock)
.Text( LOCTEXT("FxTextLayoutScaleLabel", "Layout Scale:") )
]
+SGridPanel::Slot(1,2) .Padding(2)
[
SNew(SSpinBox<float>)
.MinValue(0.1f) .MaxValue(20.0f)
.Value(this, &SFxTest::GetLayoutScale)
.OnValueChanged(this, &SFxTest::OnLayoutScaleChanged)
]
+SGridPanel::Slot(0,3) .HAlign(HAlign_Right)
[
SNew(STextBlock)
.Text( LOCTEXT("FxTextVisualOffsetLabel", "Visual Offset:") )
]
+SGridPanel::Slot(1,3)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot() .Padding(2)
[
SNew(SSpinBox<float>)
.MinValue(-10.0f) .MaxValue(10.0f)
.Value(this, &SFxTest::GetVisualOffsetOriginX)
.OnValueChanged(this, &SFxTest::OnVisualOffsetChangedX)
]
+SHorizontalBox::Slot() .Padding(2)
[
SNew(SSpinBox<float>)
.MinValue(-10.0f) .MaxValue(10.0f)
.Value(this, &SFxTest::GetVisualOffsetOriginY)
.OnValueChanged(this, &SFxTest::OnVisualOffsetChangedY)
]
]
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
+SGridPanel::Slot(0, 4) .Padding(2)
[
SNew(SCheckBox)
.IsChecked( this, &SFxTest::GetFxWidgetIgnoreClippingState )
.OnCheckStateChanged( this, &SFxTest::OnFxWidgetIgnoreClippingChanged )
[
SNew(STextBlock)
.Text( LOCTEXT("IgnoreClipping", "Ignore Clipping") )
]
]
]
+SHorizontalBox::Slot()
[
SNew(SUniformGridPanel)
+SUniformGridPanel::Slot(0,0)
[
SNew(SButton)
[
SNew(STextBlock) .Text(LOCTEXT("FxTextZoomFadeOutLabel", "Zoom Fade Out"))
]
]
+SUniformGridPanel::Slot(1,0)
[
SNew(SButton)
[
SNew(STextBlock) .Text(LOCTEXT("FxTextFadeInFromLeftLabel", "Fade in From Left"))
]
]
+SUniformGridPanel::Slot(1,1)
[
SNew(SButton)
[
SNew(STextBlock) .Text(LOCTEXT("FxTextFadeInFromRightLabel", "Fade in From Right"))
]
]
]
]
+SVerticalBox::Slot() .AutoHeight() .HAlign(HAlign_Center) .Padding(20)
[
SNew(SBorder)
[
SNew(SFxWidget)
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
.IgnoreClipping(this, &SFxTest::GetFxWidgetIgnoreClipping)
.RenderScale( this, &SFxTest::GetRenderScale )
.RenderScaleOrigin( this, &SFxTest::GetRenderScaleOrigin )
.LayoutScale( this, &SFxTest::GetLayoutScale )
.VisualOffset( this, &SFxTest::GetVisualOffset )
[
SNew(SBorder)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot() .AutoWidth()
[
SNew(SImage)
.Image(FTestStyle::Get().GetBrush("UE4Icon"))
]
+SHorizontalBox::Slot() .AutoWidth()
[
SNew(SButton)
.Text( LOCTEXT("FxTextContentLabel", "Click Me!" ) )
]
]
]
]
]
];
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
bool GetFxWidgetIgnoreClipping() const { return FxWidgetIgnoreClippingState == ECheckBoxState::Checked; }
ECheckBoxState GetFxWidgetIgnoreClippingState() const { return FxWidgetIgnoreClippingState; }
void OnFxWidgetIgnoreClippingChanged( ECheckBoxState InValue ) { FxWidgetIgnoreClippingState = InValue; }
ECheckBoxState FxWidgetIgnoreClippingState;
float GetRenderScale() const { return RenderScale; }
void OnRenderScaleChanged( float InValue ) { RenderScale = InValue; }
float RenderScale;
FVector2D GetRenderScaleOrigin() const { return RenderScaleOrigin; }
float GetRenderScaleOriginX() const { return RenderScaleOrigin.X; }
float GetRenderScaleOriginY() const { return RenderScaleOrigin.Y; }
void OnRenderScaleChangedX( float InValue ) { RenderScaleOrigin.X = InValue; }
void OnRenderScaleChangedY( float InValue ) { RenderScaleOrigin.Y = InValue; }
FVector2D RenderScaleOrigin;
float GetLayoutScale() const { return LayoutScale; }
void OnLayoutScaleChanged( float InValue ) { LayoutScale = InValue; }
float LayoutScale;
FVector2D GetVisualOffset() const { return VisualOffset; }
float GetVisualOffsetOriginX() const { return VisualOffset.X; }
float GetVisualOffsetOriginY() const { return VisualOffset.Y; }
void OnVisualOffsetChangedX( float InValue ) { VisualOffset.X = InValue; }
void OnVisualOffsetChangedY( float InValue ) { VisualOffset.Y = InValue; }
FVector2D VisualOffset;
};
class SDPIScalingTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS(SDPIScalingTest)
{}
SLATE_END_ARGS()
void Construct( const FArguments& InArgs )
{
DPIScale = 1.0f;
this->ChildSlot
.Padding(10)
[
SNew(SVerticalBox)
+SVerticalBox::Slot() .AutoHeight() .Padding( 5 )
[
SNew(SSpinBox<float>)
.Value( this, &SDPIScalingTest::GetDPIScale )
.OnValueChanged( this, &SDPIScalingTest::SetDPIScale )
]
+SVerticalBox::Slot() .AutoHeight() .Padding( 5 )
[
SNew(SCheckBox)
.IsChecked( this, &SDPIScalingTest::IsFillChecked )
.OnCheckStateChanged( this, &SDPIScalingTest::OnFillChecked )
[
SNew(STextBlock)
.Text( LOCTEXT("DpiScalingFillSpaceLabel", "Fill Space") )
]
]
+SVerticalBox::Slot()
.AutoHeight()
.Padding( 5 )
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.Expose( ScalerSlot )
[
SNew(SDPIScaler)
.DPIScale( this, &SDPIScalingTest::GetDPIScale )
[
SNew(SBorder)
.BorderImage( FCoreStyle::Get().GetBrush("ToolPanel.GroupBorder") )
.Padding(5)
[
SNew(STextBlock)
.Text( LOCTEXT("DpiScalingTextLabel", "I am DPI scaled!") )
]
]
]
];
}
float GetDPIScale() const
{
return DPIScale;
}
void SetDPIScale( float InScale )
{
DPIScale = InScale;
}
ECheckBoxState IsFillChecked() const
{
const bool bIsFilling = (ScalerSlot->HAlignment == HAlign_Fill);
return (bIsFilling)
? ECheckBoxState::Checked
: ECheckBoxState::Unchecked;
}
void OnFillChecked(ECheckBoxState InValue)
{
ScalerSlot->HAlign( (InValue == ECheckBoxState::Checked) ? HAlign_Fill : HAlign_Center );
ScalerSlot->VAlign( (InValue == ECheckBoxState::Checked) ? VAlign_Fill : VAlign_Center );
}
float DPIScale;
SVerticalBox::FSlot* ScalerSlot;
};
class SInvalidationTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS(SInvalidationTest)
{}
SLATE_END_ARGS()
void Construct(const FArguments& InArgs)
{
ChildSlot
.Padding(10)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
[
SAssignNew(CachePanel1, SInvalidationPanel)
.Visibility(EVisibility::Visible)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(STextBlock)
.Text(LOCTEXT("StaticText", "This text is static and cached."))
]
]
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SButton)
.Text(LOCTEXT("InvalidateManually", "Manually Invalidate"))
.OnClicked(this, &SInvalidationTest::ManuallyInvalidatePanel1)
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SInvalidationPanel)
.Visibility(EVisibility::Visible)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(STextBlock)
Copying //UE4/Dev-Platform to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2719147 on 2015/10/07 by Mark.Satterthwaite Allow the shader cache to perform some precompilation synchronously on load before falling back to asynchronous compilation to balance load times against total time spent precompiling. Added a stat to the group that reports how long the precompile has been running until it completes so it is easier to track. Change 2719182 on 2015/10/07 by Mark.Satterthwaite Refactor the ShaderCache's internal data structures and change the way we handle recording whether a particular predraw state has been submitted to try and make it more efficient. Change 2719185 on 2015/10/07 by Mark.Satterthwaite Merging CL #2717701: Try and fix random crashes on Mac when manipulating bound-shader-states caused by ShaderCache potentially providing a bogus shader state pointer on exit from predraw. Change 2719434 on 2015/10/07 by Mark.Satterthwaite Make sure that Mac ensures reports have a source context and a sane callstack when sent to the crash-reports server. Change 2724764 on 2015/10/12 by Josh.Adams [Initial AppleTV support] Merging //depot/YakBranch/... to //UE4/Dev-Platform/... Change 2726266 on 2015/10/13 by Lee.Clark PS4 - Calc reserve size required for DMA copy when using unsafe command buffers Change 2726401 on 2015/10/13 by Mark.Satterthwaite Merging CL #2716418: Fix UE-15228 'Crash Report Client doesn't restart into project editor on Mac' by reporting the original command line supplied by LaunchMac, not the modified one that strips the project name. The CRC can then relaunch as expected. #jira UE-15228 Change 2726421 on 2015/10/13 by Lee.Clark PS4 - Don't try to clear invalid targets Change 2727040 on 2015/10/13 by Michael.Trepka Merging CL 2724777 - Fixed splash screen rendering for images with DPI different than 72 Change 2729783 on 2015/10/15 by Keith.Judge Fix huge memory leak in Test/Shipping configurations, caused because I am a numpty. Change 2729847 on 2015/10/15 by Mark.Satterthwaite Merging CL #2729846: On OS X unconstrain windows from the dimension of the parent display when in Windowed mode - it is OK for them to be larger in this case. They do need to be repositioned if on the Primary display so that they don't creep under the menu bar and become unmovable/unclosable and Fullscreen windows still need to be constrained to a single display. We can now take screenshots of windows that are larger than the display & not get grey bars beyond the cutoff. #jira UE-21992 Change 2729865 on 2015/10/15 by Keith.Judge Fast semantics - Finish up resource transitions, adding resource decompression where appropriate and using non-fast clears where we can't determine the resource transition. Change 2729897 on 2015/10/15 by Keith.Judge Fast Semantics - Make sure all GetData() calls are made safe with GPU fences. Change 2729972 on 2015/10/15 by Keith.Judge Removed the last vestiges of ID3D11DeviceContext/ID3D11DeviceContext1 from the Xbox RHI. Everything now uses ID3D11DeviceContextX directly. This should be marginally quicker as it stops a double call to ClearState(). Change 2731503 on 2015/10/16 by Keith.Judge Added _XDK_VERSION to the DDC key for textures, which should solve the issue of the tiling mode changing in August XDK (and future changes Microsoft may inflict). Change 2731596 on 2015/10/16 by Keith.Judge Fast Semantics - Add deferred resource deletion queue to make deleted resources be actually deleted a number of frames later so that the GPU is definitely finished with them. Hooked up the temporary SRVs for dynamic VBs as a first step. Change 2731928 on 2015/10/16 by Michael.Trepka PR #1659: Mac/Build.sh handles additional arguments (Contributed by judgeaxl) Change 2731934 on 2015/10/16 by Michael.Trepka PR #1618: added clang 3.7.0 -Wshift-negative-value ignore in JpegImageWrapper.cpp (Contributed by bsekura) Change 2732018 on 2015/10/16 by Mark.Satterthwaite Emit a shader code cache for each platforms requested shader formats, this is separate to the targeted formats as not all can or need to be cached. - The implementation extends the ShaderCache's hooks in FShaderResource's serialisation function to capture the required shaders. - Each target platform has its own list of cached shader formats, analogous to the list of targeted RHIs. Presently only the Mac implements this. - Code cached shaders are now compressed (for size) to reduce the overhead associated with keeping all the shader code around - this works esp. well for text-based formats like GLSL. Change 2732365 on 2015/10/16 by Josh.Adams - Packaging a TVOS .ipa now works (still haven't tried any of the Editor integration like Launch On) Change 2733170 on 2015/10/18 by Terence.Burns Fix for Android IAP query not returning entire inventory. Change 2733174 on 2015/10/18 by Terence.Burns Fix Movie player issue where wait for movie to finish isnt being respected. Seems a stray bUserCanceled event flag was causing this not to be observed. Added some verbose logging to apple movie player. Change 2733488 on 2015/10/19 by Mark.Satterthwaite Added the ability to merge the .ushadercache files used by the ShaderCache to store shader & draw state information. - Fixed a bug that would cause invalid shader membership and draw state information to be logged. - Added a separate command-line tool to merge shader cache files, currently Mac-only but in theory should work on other platforms too. Change 2735226 on 2015/10/20 by Mark.Satterthwaite Fix temporal AA rendering on GL/Mac OS X - you can't rely on EyeAdaptation values unless SM5 is available so only perform that code on SM5 & we must correctly clamp saturate(NaN) to 0 as the current hlslcc won't do that for us (& is required by the HLSL spec). The latter used to be clamped in the AA_ALPHA && AA_VELOCITY_WEIGHTING code block that was removed recently. #jira UE-21214 #jira UE-19913 Change 2736722 on 2015/10/21 by Daniel.Lamb Improved performance of cooking stats system. Change 2737172 on 2015/10/21 by Daniel.Lamb Improved cooking stats performance for ddc stats.
2015-12-10 16:56:55 -05:00
.Text(LOCTEXT("StaticTextSupportInput", "Support Input"))
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SBorder)
.Padding(10)
[
SNew(SButton)
.Text(LOCTEXT("CachedClickable", "I'm Cached - But Clickable"))
]
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SBorder)
.Padding(10)
[
SNew(SButton)
.ForceVolatile(true)
.Text(LOCTEXT("VolatileClickable", "Volatile - But Clickable"))
]
]
]
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SInvalidationPanel)
.CacheRelativeTransforms(true)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(STextBlock)
.Text(LOCTEXT("RelativeCacheMessage", "I cache relative transforms. Moving the window has no effect on me, woo!"))
]
]
]
];
}
private:
FReply ManuallyInvalidatePanel1()
{
CachePanel1->InvalidateCache();
return FReply::Handled();
}
private:
TSharedPtr<SInvalidationPanel> CachePanel1;
};
class SGammaTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS(SGammaTest)
{}
SLATE_END_ARGS()
void Construct(const FArguments& InArgs)
{
FColor Orange(200, 80, 15);
ChildSlot
.Padding(10)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SColorBlock)
.Color(Orange)
]
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(STextBlock)
.Text(FText::FromString(Orange.ToString()))
]
]
];
}
};
class SColorPickerTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(SColorPickerTest)
: _Color(FLinearColor(1, 1, 1, 0.5f))
{}
SLATE_ATTRIBUTE(FLinearColor, Color)
SLATE_END_ARGS()
void Construct(const FArguments& InArgs)
{
Color = InArgs._Color;
this->ChildSlot
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
.Text( LOCTEXT("ColorPickerTest-EditColorLabel", "Edit Color") )
.ContentPadding( 5 )
.OnClicked( this, &SColorPickerTest::OpenColorPicker )
]
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
.Text( LOCTEXT("ColorPickerTest-EditNoAlphaColorLabel", "Edit NoAlpha Color") )
.ContentPadding( 5 )
.OnClicked( this, &SColorPickerTest::OpenColorPickerNoAlpha )
]
+SHorizontalBox::Slot().AutoWidth() .Padding(5)
[
SAssignNew(OutputTextBlock, STextBlock)
]
]
];
UpdateColor(Color.Get());
}
protected:
FReply OpenColorPicker()
{
TSharedRef<SWindow> NewSlateWindow = FSlateApplication::Get().AddWindow(
SNew(SWindow)
.Title(LOCTEXT("ColorPickerTest-WindowTitle-StandardColor", "Standard Color"))
.ClientSize(SColorPicker::DEFAULT_WINDOW_SIZE)
);
TSharedPtr<SColorPicker> ColorPicker = SNew(SColorPicker)
.TargetColorAttribute(this, &SColorPickerTest::GetColor)
.OnColorCommitted( this, &SColorPickerTest::UpdateColor )
.ParentWindow(NewSlateWindow);
NewSlateWindow->SetContent(ColorPicker.ToSharedRef());
return FReply::Handled();
}
FReply OpenColorPickerNoAlpha()
{
TSharedRef<SWindow> NewSlateWindow = FSlateApplication::Get().AddWindow(
SNew(SWindow)
.Title(LOCTEXT("ColorPickerTest-WindowTitle-NoAlphaColor", "No Alpha Color"))
.ClientSize(SColorPicker::DEFAULT_WINDOW_SIZE)
);
TSharedPtr<SColorPicker> ColorPicker = SNew(SColorPicker)
.UseAlpha(false)
.TargetColorAttribute(this, &SColorPickerTest::GetColor)
.OnColorCommitted( this, &SColorPickerTest::UpdateColor )
.ParentWindow(NewSlateWindow);
NewSlateWindow->SetContent(ColorPicker.ToSharedRef());
return FReply::Handled();
}
FLinearColor GetColor() const
{
return Color.Get();
}
void UpdateColor(FLinearColor NewColor)
{
Color.Set(NewColor);
OutputTextBlock->SetText( FText::FromString(Color.Get().ToFColor(false).ToString()) );
}
TAttribute<FLinearColor> Color;
TSharedPtr<STextBlock> OutputTextBlock;
};
class STestNotificationWidget : public SCompoundWidget, public INotificationWidget
{
public:
SLATE_BEGIN_ARGS(STestNotificationWidget){}
SLATE_END_ARGS()
void Construct(const FArguments& InArgs)
{
ChildSlot
[
SNew(SBorder)
.Padding(15.0f)
.BorderImage(FCoreStyle::Get().GetBrush("NotificationList.ItemBackground"))
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SImage)
.Image(FTestStyle::Get().GetBrush("UE4Icon"))
]
+ SHorizontalBox::Slot()
.Padding(FMargin(15.0f, 0.0f, 0.0f, 0.0f))
[
SNew(STextBlock)
Copying //UE4/Dev-Platform to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2719147 on 2015/10/07 by Mark.Satterthwaite Allow the shader cache to perform some precompilation synchronously on load before falling back to asynchronous compilation to balance load times against total time spent precompiling. Added a stat to the group that reports how long the precompile has been running until it completes so it is easier to track. Change 2719182 on 2015/10/07 by Mark.Satterthwaite Refactor the ShaderCache's internal data structures and change the way we handle recording whether a particular predraw state has been submitted to try and make it more efficient. Change 2719185 on 2015/10/07 by Mark.Satterthwaite Merging CL #2717701: Try and fix random crashes on Mac when manipulating bound-shader-states caused by ShaderCache potentially providing a bogus shader state pointer on exit from predraw. Change 2719434 on 2015/10/07 by Mark.Satterthwaite Make sure that Mac ensures reports have a source context and a sane callstack when sent to the crash-reports server. Change 2724764 on 2015/10/12 by Josh.Adams [Initial AppleTV support] Merging //depot/YakBranch/... to //UE4/Dev-Platform/... Change 2726266 on 2015/10/13 by Lee.Clark PS4 - Calc reserve size required for DMA copy when using unsafe command buffers Change 2726401 on 2015/10/13 by Mark.Satterthwaite Merging CL #2716418: Fix UE-15228 'Crash Report Client doesn't restart into project editor on Mac' by reporting the original command line supplied by LaunchMac, not the modified one that strips the project name. The CRC can then relaunch as expected. #jira UE-15228 Change 2726421 on 2015/10/13 by Lee.Clark PS4 - Don't try to clear invalid targets Change 2727040 on 2015/10/13 by Michael.Trepka Merging CL 2724777 - Fixed splash screen rendering for images with DPI different than 72 Change 2729783 on 2015/10/15 by Keith.Judge Fix huge memory leak in Test/Shipping configurations, caused because I am a numpty. Change 2729847 on 2015/10/15 by Mark.Satterthwaite Merging CL #2729846: On OS X unconstrain windows from the dimension of the parent display when in Windowed mode - it is OK for them to be larger in this case. They do need to be repositioned if on the Primary display so that they don't creep under the menu bar and become unmovable/unclosable and Fullscreen windows still need to be constrained to a single display. We can now take screenshots of windows that are larger than the display & not get grey bars beyond the cutoff. #jira UE-21992 Change 2729865 on 2015/10/15 by Keith.Judge Fast semantics - Finish up resource transitions, adding resource decompression where appropriate and using non-fast clears where we can't determine the resource transition. Change 2729897 on 2015/10/15 by Keith.Judge Fast Semantics - Make sure all GetData() calls are made safe with GPU fences. Change 2729972 on 2015/10/15 by Keith.Judge Removed the last vestiges of ID3D11DeviceContext/ID3D11DeviceContext1 from the Xbox RHI. Everything now uses ID3D11DeviceContextX directly. This should be marginally quicker as it stops a double call to ClearState(). Change 2731503 on 2015/10/16 by Keith.Judge Added _XDK_VERSION to the DDC key for textures, which should solve the issue of the tiling mode changing in August XDK (and future changes Microsoft may inflict). Change 2731596 on 2015/10/16 by Keith.Judge Fast Semantics - Add deferred resource deletion queue to make deleted resources be actually deleted a number of frames later so that the GPU is definitely finished with them. Hooked up the temporary SRVs for dynamic VBs as a first step. Change 2731928 on 2015/10/16 by Michael.Trepka PR #1659: Mac/Build.sh handles additional arguments (Contributed by judgeaxl) Change 2731934 on 2015/10/16 by Michael.Trepka PR #1618: added clang 3.7.0 -Wshift-negative-value ignore in JpegImageWrapper.cpp (Contributed by bsekura) Change 2732018 on 2015/10/16 by Mark.Satterthwaite Emit a shader code cache for each platforms requested shader formats, this is separate to the targeted formats as not all can or need to be cached. - The implementation extends the ShaderCache's hooks in FShaderResource's serialisation function to capture the required shaders. - Each target platform has its own list of cached shader formats, analogous to the list of targeted RHIs. Presently only the Mac implements this. - Code cached shaders are now compressed (for size) to reduce the overhead associated with keeping all the shader code around - this works esp. well for text-based formats like GLSL. Change 2732365 on 2015/10/16 by Josh.Adams - Packaging a TVOS .ipa now works (still haven't tried any of the Editor integration like Launch On) Change 2733170 on 2015/10/18 by Terence.Burns Fix for Android IAP query not returning entire inventory. Change 2733174 on 2015/10/18 by Terence.Burns Fix Movie player issue where wait for movie to finish isnt being respected. Seems a stray bUserCanceled event flag was causing this not to be observed. Added some verbose logging to apple movie player. Change 2733488 on 2015/10/19 by Mark.Satterthwaite Added the ability to merge the .ushadercache files used by the ShaderCache to store shader & draw state information. - Fixed a bug that would cause invalid shader membership and draw state information to be logged. - Added a separate command-line tool to merge shader cache files, currently Mac-only but in theory should work on other platforms too. Change 2735226 on 2015/10/20 by Mark.Satterthwaite Fix temporal AA rendering on GL/Mac OS X - you can't rely on EyeAdaptation values unless SM5 is available so only perform that code on SM5 & we must correctly clamp saturate(NaN) to 0 as the current hlslcc won't do that for us (& is required by the HLSL spec). The latter used to be clamped in the AA_ALPHA && AA_VELOCITY_WEIGHTING code block that was removed recently. #jira UE-21214 #jira UE-19913 Change 2736722 on 2015/10/21 by Daniel.Lamb Improved performance of cooking stats system. Change 2737172 on 2015/10/21 by Daniel.Lamb Improved cooking stats performance for ddc stats.
2015-12-10 16:56:55 -05:00
.Text(LOCTEXT("TestingBigNotificationText", "Big notififcation text!"))
.Font(FSlateFontInfo(FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Bold.ttf"), 30))
]
+ SHorizontalBox::Slot()
.Padding(FMargin(15.0f, 0.0f, 0.0f, 0.0f))
[
SNew(SButton)
.Text(LOCTEXT("TestButtonInNotificaiton", "Button Test"))
]
]
];
}
virtual void OnSetCompletionState(SNotificationItem::ECompletionState State) override
{
}
virtual TSharedRef< SWidget > AsWidget() override
{
return SharedThis(this);
}
};
class SNotificationListTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(SNotificationListTest){}
SLATE_END_ARGS()
void Construct(const FArguments& InArgs)
{
bUseLargeFont = true;
bAddDummyButtons = false;
bAddDummyCheckBox = false;
bAddDummyHyperlink = false;
DummyCheckBoxState = ECheckBoxState::Unchecked;
this->ChildSlot
[
SNew(SOverlay)
+SOverlay::Slot()
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot().AutoWidth()
[
SNew(SButton)
.OnClicked(this, &SNotificationListTest::SpawnNotification1)
.Text( LOCTEXT("NotificationListTest-SpawnNotification1Label", "Spawn Notification1" ) )
]
+SHorizontalBox::Slot().AutoWidth()
[
SNew(SButton)
.OnClicked(this, &SNotificationListTest::SpawnNotification2)
.Text( LOCTEXT("NotificationListTest-SpawnNotification2Label", "Spawn Notification2") )
]
+ SHorizontalBox::Slot().AutoWidth()
[
SNew(SButton)
.OnClicked(this, &SNotificationListTest::SpawnCustomNotification)
.Text(LOCTEXT("NotificationListTest-SpawnCustomNotificationLabel", "Spawn Custom Notification"))
]
+SHorizontalBox::Slot().AutoWidth()
[
SNew(SButton)
.OnClicked(this, &SNotificationListTest::SpawnPendingNotification)
.Text( LOCTEXT("NotificationListTest-SpawnPendingNotificationLabel", "Spawn Pending Notification") )
]
+SHorizontalBox::Slot().AutoWidth()
[
SNew(SButton)
.OnClicked(this, &SNotificationListTest::FinishPendingNotification_Success)
.Text( LOCTEXT("NotificationListTest-FinishPendingNotificationSuccessLabel", "Finish Pending Notification - Success") )
]
+SHorizontalBox::Slot().AutoWidth()
[
SNew(SButton)
.OnClicked(this, &SNotificationListTest::FinishPendingNotification_Fail)
.Text( LOCTEXT("NotificationListTest-FinishPendingNotificationFailLabel", "Finish Pending Notification - Fail") )
]
]
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SCheckBox)
.IsChecked(this, &SNotificationListTest::IsUseLargeFontChecked)
.OnCheckStateChanged(this, &SNotificationListTest::OnUseLargeFontCheckStateChanged)
[
SNew(STextBlock)
.Text( LOCTEXT("NotificationListTest-UseLargeFont", "Use Large Font" ) )
]
]
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SCheckBox)
.IsChecked(this, &SNotificationListTest::IsAddDummyButtonsChecked)
.OnCheckStateChanged(this, &SNotificationListTest::OnAddDummyButtonsCheckStateChanged)
[
SNew(STextBlock)
.Text( LOCTEXT("NotificationListTest-AddDummyButtons", "Add Dummy Buttons" ) )
]
]
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SCheckBox)
.IsChecked(this, &SNotificationListTest::IsAddDummyCheckBoxChecked)
.OnCheckStateChanged(this, &SNotificationListTest::OnAddDummyCheckBoxCheckStateChanged)
[
SNew(STextBlock)
.Text( LOCTEXT("NotificationListTest-AddDummyCheckBox", "Add Dummy Check Box" ) )
]
]
+SVerticalBox::Slot()
.AutoHeight()
[
SNew(SCheckBox)
.IsChecked(this, &SNotificationListTest::IsAddDummyHyperlinkChecked)
.OnCheckStateChanged(this, &SNotificationListTest::OnAddDummyHyperlinkCheckStateChanged)
[
SNew(STextBlock)
.Text( LOCTEXT("NotificationListTest-AddDummyHyperlink", "Add Dummy Hyperlink" ) )
]
]
]
+SOverlay::Slot()
.HAlign(HAlign_Right)
.VAlign(VAlign_Bottom)
.Padding(15)
[
SAssignNew(NotificationListPtr, SNotificationList)
.Visibility(EVisibility::SelfHitTestInvisible)
]
];
}
protected:
ECheckBoxState IsUseLargeFontChecked() const
{
return bUseLargeFont ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
void OnUseLargeFontCheckStateChanged(ECheckBoxState NewState)
{
bUseLargeFont = (NewState == ECheckBoxState::Checked);
}
ECheckBoxState IsAddDummyButtonsChecked() const
{
return bAddDummyButtons ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
void OnAddDummyButtonsCheckStateChanged(ECheckBoxState NewState)
{
bAddDummyButtons = (NewState == ECheckBoxState::Checked);
}
ECheckBoxState IsAddDummyCheckBoxChecked() const
{
return bAddDummyCheckBox ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
void OnAddDummyCheckBoxCheckStateChanged(ECheckBoxState NewState)
{
bAddDummyCheckBox = (NewState == ECheckBoxState::Checked);
}
ECheckBoxState IsAddDummyHyperlinkChecked() const
{
return bAddDummyHyperlink ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
void OnAddDummyHyperlinkCheckStateChanged(ECheckBoxState NewState)
{
bAddDummyHyperlink = (NewState == ECheckBoxState::Checked);
}
void SetNotificationInfoFlags(FNotificationInfo& Info)
{
// Dummy callback for buttons and hyperlinks
struct Local
{
static void Dummy()
{
}
};
const FSimpleDelegate DummyDelegate = FSimpleDelegate::CreateStatic(&Local::Dummy);
Info.bUseLargeFont = bUseLargeFont;
if(bAddDummyButtons)
{
Info.ButtonDetails.Add(FNotificationButtonInfo(LOCTEXT("NotificationListTest-DummyButton1Text", "Dummy Button 1"), FText(), DummyDelegate, SNotificationItem::CS_None));
Info.ButtonDetails.Add(FNotificationButtonInfo(LOCTEXT("NotificationListTest-DummyButton2Text", "Dummy Button 2"), FText(), DummyDelegate, SNotificationItem::CS_None));
Info.ButtonDetails.Add(FNotificationButtonInfo(LOCTEXT("NotificationListTest-DummyPendingButton1Text", "Dummy Pending Button 1"), FText(), DummyDelegate, SNotificationItem::CS_Pending));
Info.ButtonDetails.Add(FNotificationButtonInfo(LOCTEXT("NotificationListTest-DummyPendingButton2Text", "Dummy Pending Button 2"), FText(), DummyDelegate, SNotificationItem::CS_Pending));
Info.ButtonDetails.Add(FNotificationButtonInfo(LOCTEXT("NotificationListTest-DummySuccessButton1Text", "Dummy Success Button 1"), FText(), DummyDelegate, SNotificationItem::CS_Success));
Info.ButtonDetails.Add(FNotificationButtonInfo(LOCTEXT("NotificationListTest-DummySuccessButton2Text", "Dummy Success Button 2"), FText(), DummyDelegate, SNotificationItem::CS_Success));
Info.ButtonDetails.Add(FNotificationButtonInfo(LOCTEXT("NotificationListTest-DummyFailButton1Text", "Dummy Fail Button 1"), FText(), DummyDelegate, SNotificationItem::CS_Fail));
Info.ButtonDetails.Add(FNotificationButtonInfo(LOCTEXT("NotificationListTest-DummyFailButton2Text", "Dummy Fail Button 2"), FText(), DummyDelegate, SNotificationItem::CS_Fail));
}
if(bAddDummyCheckBox)
{
Info.CheckBoxState = TAttribute<ECheckBoxState>(this, &SNotificationListTest::GetDummyCheckBoxState);
Info.CheckBoxStateChanged = FOnCheckStateChanged::CreateSP(this, &SNotificationListTest::OnDummyCheckBoxStateChanged);
Info.CheckBoxText = LOCTEXT("NotificationListTest-DummyCheckBoxText", "Dummy Check Box");
}
if(bAddDummyHyperlink)
{
Info.Hyperlink = DummyDelegate;
Info.HyperlinkText = LOCTEXT("NotificationListTest-DummyHyperlinkText", "Dummy Hyperlink");
}
}
ECheckBoxState GetDummyCheckBoxState() const
{
return DummyCheckBoxState;
}
void OnDummyCheckBoxStateChanged(ECheckBoxState NewState)
{
DummyCheckBoxState = NewState;
}
FReply SpawnNotification1()
{
FNotificationInfo Info( LOCTEXT("TestNotification01", "A Notification" ));
SetNotificationInfoFlags(Info);
NotificationListPtr->AddNotification(Info);
return FReply::Handled();
}
FReply SpawnNotification2()
{
FNotificationInfo Info( LOCTEXT("TestNotification02", "Another Notification" ));
SetNotificationInfoFlags(Info);
NotificationListPtr->AddNotification(Info);
return FReply::Handled();
}
FReply SpawnCustomNotification()
{
FNotificationInfo Info(SNew(STestNotificationWidget));
Info.bFireAndForget = true;
Info.ExpireDuration = 3.0f;
Info.FadeOutDuration = 3.0f;
SetNotificationInfoFlags(Info);
NotificationListPtr->AddNotification(Info);
return FReply::Handled();
}
FReply SpawnPendingNotification()
{
if ( PendingProgressPtr.IsValid() )
{
PendingProgressPtr.Pin()->ExpireAndFadeout();
}
FNotificationInfo Info(LOCTEXT("TestNotificationInProgress", "Operation In Progress" ));
SetNotificationInfoFlags(Info);
Info.bFireAndForget = false;
PendingProgressPtr = NotificationListPtr->AddNotification(Info);
PendingProgressPtr.Pin()->SetCompletionState(SNotificationItem::CS_Pending);
return FReply::Handled();
}
FReply FinishPendingNotification_Success()
{
TSharedPtr<SNotificationItem> NotificationItem = PendingProgressPtr.Pin();
if ( NotificationItem.IsValid() )
{
NotificationItem->SetText( LOCTEXT("TestNotificationSuccess", "Operation Successful!") );
NotificationItem->SetCompletionState(SNotificationItem::CS_Success);
NotificationItem->ExpireAndFadeout();
PendingProgressPtr.Reset();
}
return FReply::Handled();
}
FReply FinishPendingNotification_Fail()
{
TSharedPtr<SNotificationItem> NotificationItem = PendingProgressPtr.Pin();
if ( NotificationItem.IsValid() )
{
NotificationItem->SetText( LOCTEXT("TestNotificationFailure", "Operation Failed...") );
NotificationItem->SetCompletionState(SNotificationItem::CS_Fail);
NotificationItem->ExpireAndFadeout();
PendingProgressPtr.Reset();
}
return FReply::Handled();
}
/** Should we use the larger bolder font to display the message? */
bool bUseLargeFont;
/** Should we add dummy buttons to the notifications? */
bool bAddDummyButtons;
/** Should we add a dummy check box to the notifications? */
bool bAddDummyCheckBox;
/** Should we add a dummy hyperlink to the notifications? */
bool bAddDummyHyperlink;
/** The list of active system messages */
TSharedPtr<SNotificationList> NotificationListPtr;
/** The pending progress message */
TWeakPtr<SNotificationItem> PendingProgressPtr;
/** If showing a dummy check box, this maintains its state in the UI */
ECheckBoxState DummyCheckBoxState;
};
class SGridPanelTest : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(SGridPanelTest)
{}
SLATE_END_ARGS()
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct( const FArguments& InArgs )
{
this->ChildSlot
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.FillHeight(1)
[
SNew(SGridPanel)
.FillColumn(1, 1.0f)
.FillColumn(2, 2.0f)
+SGridPanel::Slot(0,0)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label01", "There once was a man from Nantucket") )
]
+SGridPanel::Slot(0,1)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label02", "who kept all his cash in a bucket.") )
]
+SGridPanel::Slot(0,2)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label03", "But his daughter, named Nan,") )
]
+SGridPanel::Slot(0,3)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label04", "Ran away with a man") )
]
+SGridPanel::Slot(0,4)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label05", "And as for the bucket, Nantucket.") )
]
+SGridPanel::Slot(1,1)
.ColumnSpan(2)
[
SNew(SBorder)
[
SNew(STextBlock).Text( LOCTEXT("GridPanelTest-Colspan1Label", "Colspan = 1") )
]
]
+SGridPanel::Slot(1,2)
[
SNew(SBorder)
[
SNew(STextBlock).Text( LOCTEXT("GridPanelTest-Stretch1Label", "Stretch = 1"))
]
]
+SGridPanel::Slot(2,3)
[
SNew(SBorder)
[
SNew(STextBlock).Text( LOCTEXT("GridPanelTest-Stretch2Label", "Stretch = 2"))
]
]
]
+SVerticalBox::Slot()
.FillHeight(1)
[
SNew(SGridPanel)
.FillRow(1, 1.0f)
.FillRow(2, 2.0f)
+SGridPanel::Slot(0,0)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label01", "There once was a man from Nantucket") )
]
+SGridPanel::Slot(0,1)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label02", "who kept all his cash in a bucket.") )
]
+SGridPanel::Slot(0,2)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label03", "But his daughter, named Nan,") )
]
+SGridPanel::Slot(0,3)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label04", "Ran away with a man") )
]
+SGridPanel::Slot(0,4)
[
SNew(STextBlock)
.Text( LOCTEXT("GridPanelTest-Label05", "And as for the bucket, Nantucket.") )
]
+SGridPanel::Slot(1,1)
.RowSpan(2)
[
SNew(SBorder)
[
SNew(STextBlock).Text( LOCTEXT("GridPanelTest-Rowspan2Label", "RowSpan = 2!"))
]
]
+SGridPanel::Slot(2,1)
[
SNew(SBorder)
[
SNew(STextBlock).Text( LOCTEXT("GridPanelTest-Stretch1Label", "Stretch = 1"))
]
]
+SGridPanel::Slot(3,2)
[
SNew(SBorder)
[
SNew(STextBlock).Text( LOCTEXT("GridPanelTest-Stretch2Label", "Stretch = 2"))
]
]
]
+SVerticalBox::Slot()
.FillHeight(1)
];
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
};
class SResponsiveGridPanelTestWidget : public SUserWidget
{
public:
SLATE_USER_ARGS(SResponsiveGridPanelTestWidget)
{}
SLATE_END_ARGS()
virtual void Construct(const FArguments& InArgs) = 0;
};
class SResponsiveGridPanelTestWidgetImpl : public SResponsiveGridPanelTestWidget
{
public:
virtual void Construct(const FArguments& InArgs) override;
private:
TSharedRef<SWidget> ConstructBox(const FString& Text) const;
};
TSharedRef<SWidget> SResponsiveGridPanelTestWidgetImpl::ConstructBox(const FString& Text) const
{
return
SNew(SBorder)
.Padding(1)
.BorderImage(FTestStyle::Get().GetBrush("Gray"))
[
SNew(SBorder)
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.Padding(10)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.Background"))
[
SNew(STextBlock).Text(FText::FromString(Text))
]
];
}
void SResponsiveGridPanelTestWidgetImpl::Construct(const FArguments& InArgs)
{
TSharedPtr<SResponsiveGridPanel> GridPanel;
SUserWidget::Construct(SUserWidget::FArguments()
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Background"))
.ForegroundColor(FLinearColor::Black)
[
SNew(SScrollBox)
+ SScrollBox::Slot()
[
SNew(SBox)
.Padding(FMargin(50, 10))
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.DarkBackground"))
.Padding(10.0f)
[
SAssignNew(GridPanel, SResponsiveGridPanel, 12)
.ColumnGutter(5)
.RowGutter(5)
]
]
]
+ SScrollBox::Slot()
.Padding(0, 20, 0, 0)
[
SNew(SBox)
.Padding(FMargin(50, 10))
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.DarkBackground"))
.Padding(10.0f)
[
SNew(SResponsiveGridPanel, 12)
.ColumnGutter(5)
.RowGutter(5)
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 8)
.ColumnSpan(SResponsiveGridSize::Mobile, 12)
[
ConstructBox(TEXT(".mobile-col-12 .desktop-col-8"))
]
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 .desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 .desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 .desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 .desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(2)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6"))
]
+ SResponsiveGridPanel::Slot(2)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6"))
]
]
]
]
+ SScrollBox::Slot()
.Padding(0, 20, 0, 0)
[
SNew(SBox)
.Padding(FMargin(50, 10))
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.DarkBackground"))
.Padding(10.0f)
[
SNew(SResponsiveGridPanel, 12)
.ColumnGutter(5)
.RowGutter(5)
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 8)
.ColumnSpan(SResponsiveGridSize::Tablet, 6)
.ColumnSpan(SResponsiveGridSize::Mobile, 12)
[
ConstructBox(TEXT(".mobile-col-12 .tablet-col-6 .desktop-col-8"))
]
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 .desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::Tablet, 4)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 .tablet-col-4"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::Tablet, 4)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 .tablet-col-4"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::Tablet, 4)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 .tablet-col-4"))
]
]
]
]
+ SScrollBox::Slot()
.Padding(0, 20, 0, 0)
[
SNew(SBox)
.Padding(FMargin(50, 10))
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.DarkBackground"))
.Padding(10.0f)
[
SNew(SResponsiveGridPanel, 12)
.ColumnGutter(5)
.RowGutter(5)
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::Mobile, 9)
[
ConstructBox(TEXT(".mobile-col-9"))
]
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::Mobile, 4)
[
ConstructBox(TEXT(".mobile-col-4 \nSince 9 + 4 = 13 > 12, this 4 column wide slot\ngets wrapped onto a new line as one contiguous unit."))
]
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::Mobile, 6)
[
ConstructBox(TEXT(".mobile-col-6 \nSubsequent columns continue along the new line."))
]
]
]
]
+ SScrollBox::Slot()
.Padding(0, 20, 0, 0)
[
SNew(SBox)
.Padding(FMargin(50, 10))
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.DarkBackground"))
.Padding(10.0f)
[
SNew(SResponsiveGridPanel, 12)
.ColumnGutter(5)
.RowGutter(5)
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
[
ConstructBox(TEXT(".desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4, 4)
[
ConstructBox(TEXT(".desktop-col-4-offset-4"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 3, 3)
[
ConstructBox(TEXT(".desktop-col-3-offset-3"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 3, 3)
[
ConstructBox(TEXT(".desktop-col-3-offset-3"))
]
+ SResponsiveGridPanel::Slot(2)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 6, 3)
[
ConstructBox(TEXT(".desktop-col-6-offset-3"))
]
]
]
]
+ SScrollBox::Slot()
.Padding(0, 20, 0, 0)
[
SNew(SBox)
.Padding(FMargin(50, 10))
.HeightOverride(800)
[
SNew(SBorder)
.BorderImage(FTestStyle::Get().GetBrush("RichText.Tagline.DarkBackground"))
.Padding(10.0f)
[
SNew(SResponsiveGridPanel, 12)
.ColumnGutter(5)
.RowGutter(5)
.FillRow(1, 1.0f)
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
[
ConstructBox(TEXT(".desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
[
ConstructBox(TEXT(".desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
[
ConstructBox(TEXT(".desktop-col-4"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 3)
.ColumnSpan(SResponsiveGridSize::Mobile, 0)
[
ConstructBox(TEXT(".desktop-col-3"))
]
+ SResponsiveGridPanel::Slot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 9)
[
ConstructBox(TEXT(".desktop-col-9"))
]
+ SResponsiveGridPanel::Slot(2)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 6, 3)
[
ConstructBox(TEXT(".desktop-col-6-offset-3"))
]
]
]
]
]
]);
for (int32 Index = 0; Index < 12; ++Index)
{
GridPanel->AddSlot(0)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 1)
[
ConstructBox(TEXT(".desktop-col-1"))
];
}
GridPanel->AddSlot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 8)
[
ConstructBox(TEXT(".desktop-col-8"))
];
GridPanel->AddSlot(1)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
[
ConstructBox(TEXT(".desktop-col-4"))
];
for (int32 Index = 0; Index < 3; ++Index)
{
GridPanel->AddSlot(2)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 4)
[
ConstructBox(TEXT(".desktop-col-4"))
];
}
for (int32 Index = 0; Index < 2; ++Index)
{
GridPanel->AddSlot(3)
.ColumnSpan(SResponsiveGridSize::MediumDevice, 6)
[
ConstructBox(TEXT(".desktop-col-6"))
];
}
}
TSharedRef<SResponsiveGridPanelTestWidget> SResponsiveGridPanelTestWidget::New()
{
return MakeShareable(new SResponsiveGridPanelTestWidgetImpl());
}
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
/**
* User Widget wrapper for a this widget. Legacy as this widget used to be in a separate header.
*/
class SRenderTransformManipulatorWidget : public SUserWidget
{
public:
SLATE_USER_ARGS(SRenderTransformManipulatorWidget)
{}
SLATE_END_ARGS()
virtual void Construct(const FArguments& InArgs) = 0;
};
namespace
{
float RotDeg = 0.0f;
FScale2D Scale;
FShear2D Shear;
FQuat2D Rot;
FVector2D Offset(0,0);
}
class SRenderTransformManipulatorWidgetImpl : public SRenderTransformManipulatorWidget
{
public:
virtual void Construct(const FArguments& InArgs) override;
TSharedPtr<SImage> ImageWidget;
private:
static const ISlateStyle& GetStyle()
{
static FSlateStyleSet Style("RenderTransformManipulatorStyle");
static bool IsInit = false;
if (!IsInit)
{
check(IsInGameThread());
Style.SetContentRoot(FPaths::EngineContentDir() / TEXT("Slate"));
Style.Set("UE4Icon", new FSlateImageBrush(Style.RootToContentDir(TEXT("Testing/UE4Icon.png")), FVector2D(50, 50)));
IsInit = true;
}
return Style;
}
};
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
/**
* Global access here because we need other translation units to access this function.
*/
TOptional<FSlateRenderTransform> GetTestRenderTransform()
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
{
return TransformCast<FSlateRenderTransform>(Concatenate(Shear, Scale, Rot));
}
FVector2D GetTestRenderTransformPivot()
{
return Offset;
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
}
void SRenderTransformManipulatorWidgetImpl::Construct(const FArguments& InArgs)
{
SUserWidget::Construct(SUserWidget::FArguments()
[
SNew(SVerticalBox)
+ SVerticalBox::Slot().Padding(4)
[
SAssignNew(ImageWidget, SImage)
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
.Image(GetStyle().GetBrush("UE4Icon"))
]
+ SVerticalBox::Slot().AutoHeight().Padding(4)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
[
SNew(STextBlock).Text(LOCTEXT("RD", "Rotation degrees"))
]
+ SHorizontalBox::Slot().HAlign(HAlign_Fill)
[
SNew(SSpinBox<float>)
.MinValue(0.0f)
.MaxValue(360.0f)
.OnValueChanged_Static([](float val) { RotDeg = val; Rot = FQuat2D(FMath::DegreesToRadians(val)); })
.Value_Static([] { return RotDeg; })
]
]
+ SVerticalBox::Slot().AutoHeight().Padding(4)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
[
SNew(STextBlock).Text(LOCTEXT("XO", "X Offset"))
]
+ SHorizontalBox::Slot().HAlign(HAlign_Fill)
[
SNew(SSpinBox<float>)
.MinValue(-2.0f)
.MaxValue(2.0f)
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
.OnValueChanged_Static([](float val) { Offset.X = val; })
.Value_Static([] { return Offset.X; })
]
]
+ SVerticalBox::Slot().AutoHeight().Padding(4)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
[
SNew(STextBlock).Text(LOCTEXT("YO", "Y Offset"))
]
+ SHorizontalBox::Slot().HAlign(HAlign_Fill)
[
SNew(SSpinBox<float>)
.MinValue(-2.0f)
.MaxValue(2.0f)
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
.OnValueChanged_Static([](float val) { Offset.Y = val; })
.Value_Static([] { return Offset.Y; })
]
]
+ SVerticalBox::Slot().AutoHeight().Padding(4)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
[
SNew(STextBlock).Text(LOCTEXT("XS", "X Scale"))
]
+ SHorizontalBox::Slot().HAlign(HAlign_Fill)
[
SNew(SSpinBox<float>)
.MinValue(-10.0f)
.MaxValue(10.0f)
.OnValueChanged_Static([](float val) { Scale = FScale2D(val, Scale.GetVector().Y); })
.Value_Static([] { return Scale.GetVector().X; })
]
]
+ SVerticalBox::Slot().AutoHeight().Padding(4)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
[
SNew(STextBlock).Text(LOCTEXT("YS", "Y Scale"))
]
+ SHorizontalBox::Slot().HAlign(HAlign_Fill)
[
SNew(SSpinBox<float>)
.MinValue(-10.0f)
.MaxValue(10.0f)
.OnValueChanged_Static([](float val) { Scale = FScale2D(Scale.GetVector().X, val); })
.Value_Static([] { return Scale.GetVector().Y; })
]
]
+ SVerticalBox::Slot().AutoHeight().Padding(4)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
[
SNew(STextBlock).Text(LOCTEXT("XSH", "X Shear"))
]
+ SHorizontalBox::Slot().HAlign(HAlign_Fill)
[
SNew(SSpinBox<float>)
.MinValue(-4.f)
.MaxValue(4.f)
.OnValueChanged_Static([](float val) { Shear = FShear2D(val, Shear.GetVector().Y); })
.Value_Static([] { return Shear.GetVector().X; })
]
]
+ SVerticalBox::Slot().AutoHeight().Padding(4)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
[
SNew(STextBlock).Text(LOCTEXT("YSH", "Y Shear"))
]
+ SHorizontalBox::Slot().HAlign(HAlign_Fill)
[
SNew(SSpinBox<float>)
.MinValue(-4.f)
.MaxValue(4.f)
.OnValueChanged_Static([](float val) { Shear = FShear2D(Shear.GetVector().X, val); })
.Value_Static([] { return Shear.GetVector().Y; })
]
]
]
);
}
/**
* New implementation for the User Widget idiom.
*/
TSharedRef<SRenderTransformManipulatorWidget> SRenderTransformManipulatorWidget::New()
{
return MakeShareable(new SRenderTransformManipulatorWidgetImpl());
}
static TSharedPtr<FTabManager> TestSuite1TabManager;
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
TSharedRef<SDockTab> SpawnTab(const FSpawnTabArgs& Args, FName TabIdentifier)
{
if (TabIdentifier == FName(TEXT("AnimationTestTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("AnimationTestTabLabel", "Animation Test") )
. ToolTip
(
SNew(SToolTip)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
.Padding( 2.0f )
[
SNew(SImage)
.Image( FCoreStyle::Get().GetBrush( TEXT("DefaultAppIcon") ) )
]
+SHorizontalBox::Slot()
.AutoWidth()
.VAlign( VAlign_Center )
[
SNew(STextBlock)
.Text( ( LOCTEXT("AnimationTestLabel", "Bring up some test for animation.") ) )
]
]
)
[
SNew(SScissorRectBox)
[
SNew(SVerticalBox)
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
+SVerticalBox::Slot()
[
SNew(SAnimTest)
]
+SVerticalBox::Slot()
[
SNew(SFxTest)
]
]
];
}
else if ( TabIdentifier == FName("DocumentsTestTab") )
{
FTabManager* TabManagerRef = &(TestSuite1TabManager.ToSharedRef().Get());
return
SNew(SDockTab)
.Label( NSLOCTEXT("TestSuite1", "DocumentsTab", "Documents") )
[
SNew(SScissorRectBox)
[
SNew( SDocumentsTest, TabManagerRef )
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
.AddMetaData<FTagMetaData>(FTagMetaData("DocumentSpawner"))
]
];
}
else if (TabIdentifier == FName(TEXT("TableViewTestTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("ListViewTestTab", "ListView Test") )
. ToolTipText( LOCTEXT( "ListViewTestToolTip", "Switches to the List View test tab, which allows you to test list widgets in Slate." ) )
[
SNew(SScissorRectBox)
[
MakeTableViewTesting()
]
];
}
else if (TabIdentifier == FName(TEXT("LayoutExampleTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("LayoutExampleTab", "Layout Example") )
. ToolTipText( LOCTEXT( "LayoutExampleTabToolTip", "Switches to the Layout Example tab, which shows off examples of various Slate layout primitives." ) )
[
SNew(SScissorRectBox)
[
MakeLayoutExample()
]
];
}
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
#if WITH_FANCY_TEXT
else if (TabIdentifier == FName(TEXT("RichTextTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("RichTextTestTab", "Rich Text") )
[
SNew(SScissorRectBox)
[
SNew( SRichTextTest )
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if ( TabIdentifier == FName( TEXT( "MultiLineEditTab" ) ) )
{
return SNew(SDockTab)
. Label( LOCTEXT("MultiLineEditTab", "MultiLine Edit") )
[
SNew(SScissorRectBox)
[
#if WITH_FANCY_TEXT
SNew( SMultiLineEditingTest )
#else
SNew( SSpacer )
#endif //WITH_FANCY_TEXT
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
#endif //WITH_FANCY_TEXT
else if (TabIdentifier == FName(TEXT("EditableTextTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("EditableTextTestTab", "Editable Text") )
. ToolTipText( LOCTEXT( "EditableTextTestTabToolTip", "Switches to the Editable Text tab, where you can test the various inline text editing controls." ) )
[
SNew(SScissorRectBox)
[
SNew( STextEditTest )
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
#if WITH_FANCY_TEXT
else if (TabIdentifier == FName(TEXT("RichEditableTextTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("RichEditableTextTestTab", "Rich Editable Text") )
. ToolTipText( LOCTEXT( "RichEditableTextTestTabToolTip", "Switches to the Rich Editable Text tab, where you can test the various rich editable text features." ) )
[
SNew(SScissorRectBox)
[
SNew( SRichTextEditTest )
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
];
}
#endif //WITH_FANCY_TEXT
else if (TabIdentifier == FName("LayoutRoundingTab"))
{
return SNew(SDockTab)
. Label( LOCTEXT("LayoutRoundingTab", "Layout Rounding") )
[
SNew(SScissorRectBox)
[
SNew( SLayoutRoundingTest )
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if (TabIdentifier == FName(TEXT("ElementTestsTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("ElementTestsTab", "Element Tests") )
. ToolTipText( LOCTEXT( "ElementTestsTabToolTip", "Switches to the Element Tests tab, which allows you to view various rendering-related features of Slate." ) )
[
SNew(SScissorRectBox)
[
SNew( SElementTesting )
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if (TabIdentifier == FName(TEXT("SplitterTestTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("SplitterTestTab", "Splitter Test") )
. ToolTipText( LOCTEXT( "SplitterTestTabToolTip", "Switches to the Splitter Test tab, which you can use to test splitters." ) )
[
SNew(SScissorRectBox)
[
SNew( SSplitterTest )
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if (TabIdentifier == FName(TEXT("MultiBoxTestTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("MultiBoxTextTab", "MultiBox Text") )
. ToolTipText( LOCTEXT( "MultiBoxTextTabToolTip", "Switches to the MultiBox tab, where you can test out MultiBoxes and MultiBlocks." ) )
[
SNew(SScissorRectBox)
[
SNew( SMultiBoxTest )
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if (TabIdentifier == FName(TEXT("ColorPickerTestTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("ColorPickerTestTab", "Color Picker Test") )
. ToolTipText( LOCTEXT( "ColorPickerTestTabToolTip", "Switches to the Color Picker tab, where you can test out the color picker." ) )
[
SNew(SScissorRectBox)
[
SNew(SColorPickerTest)
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if (TabIdentifier == "DPIScalingTest")
{
return SNew(SDockTab)
[
SNew(SScissorRectBox)
[
SNew(SDPIScalingTest)
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if ( TabIdentifier == FName(TEXT("InvalidationTest")) )
{
return SNew(SDockTab)
[
SNew(SScissorRectBox)
[
SNew(SInvalidationTest)
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if ( TabIdentifier == FName(TEXT("GammaTest")) )
{
return SNew(SDockTab)
[
SNew(SGammaTest)
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
];
}
else if (TabIdentifier == FName(TEXT("NotificationListTestTab")))
{
return SNew(SDockTab)
. Label( LOCTEXT("NotificationListTestTab", "Notification List Test") )
. ToolTipText( LOCTEXT( "NotificationListTestTabToolTip", "Switches to the Notification List tab, where you can test out the notification list." ) )
[
SNew(SScissorRectBox)
[
SNew(SNotificationListTest)
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else if (TabIdentifier == FName("GridPanelTest"))
{
return SNew(SDockTab)
[
SNew(SScissorRectBox)
[
SNew(SGridPanelTest)
.RenderTransform_Static(&::GetTestRenderTransform)
.RenderTransformPivot_Static(&::GetTestRenderTransformPivot)
]
];
}
else
{
ensure(false);
return SNew(SDockTab);
}
}
TSharedRef<SDockTab> SpawnResponsiveGrid(const FSpawnTabArgs& Args)
{
TSharedRef<SDockTab> ResponsiveGridTab =
SNew(SDockTab)
.Label(LOCTEXT("ResponsiveGridTabLabel", "Responsive Grid"))
.ToolTipText(LOCTEXT("ResponsiveGridTabToolTip", ""));
ResponsiveGridTab->SetContent
(
SNew(SResponsiveGridPanelTestWidget)
);
return ResponsiveGridTab;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
namespace TestSuiteMenu
{
TSharedRef<FWorkspaceItem> MenuRoot = FWorkspaceItem::NewGroup(NSLOCTEXT("TestSuite", "MenuRoot", "MenuRoot") );
TSharedRef<FWorkspaceItem> SuiteTabs = MenuRoot->AddGroup( NSLOCTEXT("TestSuite", "SuiteTabs", "Test Suite Tabs") );
TSharedRef<FWorkspaceItem> NestedCategory = SuiteTabs->AddGroup( NSLOCTEXT("TestSuite", "NestedCategory", "Nested") );
TSharedRef<FWorkspaceItem> DeveloperCategory = MenuRoot->AddGroup( NSLOCTEXT("TestSuite", "DeveloperCategory", "Developer") );
}
TSharedRef<SDockTab> SpawnTestSuite1( const FSpawnTabArgs& Args )
{
TSharedRef<FTabManager::FLayout> Layout = FTabManager::NewLayout( "TestSuite1_Layout" )
->AddArea
(
// The primary area will be restored and returned as a widget.
// Unlike other areas it will not get its own window.
// This allows the caller to explicitly place the primary area somewhere in the widget hierarchy.
FTabManager::NewPrimaryArea()
->Split
(
//The first cell in the primary area will be occupied by a stack of tabs.
// They are all opened.
FTabManager::NewStack()
->SetSizeCoefficient(0.35f)
->AddTab("LayoutExampleTab", ETabState::OpenedTab)
->AddTab("DocumentsTestTab", ETabState::OpenedTab)
)
->Split
(
// We can subdivide a cell further by using an additional splitter
FTabManager::NewSplitter()
->SetOrientation( Orient_Vertical )
->SetSizeCoefficient(0.65f)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.25f)
->AddTab("MultiBoxTestTab", ETabState::OpenedTab)
->AddTab("ResponsiveGrid", ETabState::OpenedTab)
// The DocTest tab will be closed by default.
->AddTab("DocTest", ETabState::ClosedTab)
)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.75f)
#if PLATFORM_SUPPORTS_MULTIPLE_NATIVE_WINDOWS
->AddTab("TableViewTestTab", ETabState::OpenedTab)
#endif
->AddTab("LayoutRoundingTab", ETabState::OpenedTab)
->AddTab("EditableTextTab", ETabState::OpenedTab)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
#if WITH_FANCY_TEXT
->AddTab("RichTextTab", ETabState::OpenedTab)
->AddTab("MultiLineEditTab", ETabState::OpenedTab)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
->AddTab("RichEditableTextTab", ETabState::OpenedTab)
->AddTab("WebBrowserTab", ETabState::OpenedTab)
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
#endif //WITH_FANCY_TEXT
)
)
)
#if PLATFORM_SUPPORTS_MULTIPLE_NATIVE_WINDOWS
->AddArea
(
FTabManager::NewArea(320,240)
->SetWindow( FVector2D(600, 50), false )
->Split
(
FTabManager::NewStack()
->AddTab("SplitterTestTab", ETabState::ClosedTab)
)
)
#endif
;
TSharedRef<SDockTab> TestSuite1Tab =
SNew(SDockTab)
. TabRole( ETabRole::MajorTab )
. Label( LOCTEXT("TestSuite1TabLabel", "Test Suite 1") )
. ToolTipText( LOCTEXT( "TestSuite1TabToolTip", "The App for the first Test Suite." ) );
TestSuite1TabManager = FGlobalTabmanager::Get()->NewTabManager(TestSuite1Tab);
TestSuite1TabManager->RegisterTabSpawner( "LayoutExampleTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("LayoutExampleTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "LayoutExampleTab", "Layout Example") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite1TabManager->RegisterTabSpawner( "SplitterTestTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("SplitterTestTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "SplitterTestTab", "Splitter Test") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite1TabManager->RegisterTabSpawner( "EditableTextTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("EditableTextTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "EditableTextTab", "Editable Text Test") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite1TabManager->RegisterTabSpawner( "RichTextTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("RichTextTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "RichTextTab", "Rich Text Test") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite1TabManager->RegisterTabSpawner( "MultiLineEditTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName( "MultiLineEditTab" ) ) )
.SetDisplayName( NSLOCTEXT( "TestSuite1", "MultiLineEditTab", "Multiline Edit" ) )
.SetGroup( TestSuiteMenu::SuiteTabs );
Added support for SMultiLineEditableText to edit rich-text TTP# 336464 - Editor: Finish the Multiline Editable Text Block Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout. There are three types of text marshallers currently implemented: * Plain-text * Rich-text * Syntax highlighting Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works. Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs. To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features: * Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller. * A toolbar to allow you to control the style of the selected text. * A button to allow you to insert a hyperlink into the document. The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved. Miscellaneous fixes: * Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt). * Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges). * Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges). * Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges). * Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt). * Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt). ReviewedBy Justin.Sargent [CL 2246838 by Jamie Dale in Main branch]
2014-08-07 06:46:11 -04:00
TestSuite1TabManager->RegisterTabSpawner( "RichEditableTextTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("RichEditableTextTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "RichEditableTextTab", "Rich Editable Text Test") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite1TabManager->RegisterTabSpawner( "LayoutRoundingTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("LayoutRoundingTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "LayoutRoundingTab", "Layout Rounding") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite1TabManager->RegisterTabSpawner("ResponsiveGrid", FOnSpawnTab::CreateStatic(&SpawnResponsiveGrid))
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite1TabManager->RegisterTabSpawner( "MultiBoxTestTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("MultiBoxTestTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "MultiBoxTestTab", "MultiBox Test") )
.SetGroup(TestSuiteMenu::NestedCategory);
TestSuite1TabManager->RegisterTabSpawner( "TableViewTestTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("TableViewTestTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "TableViewTestTab", "TableView Test") )
.SetGroup(TestSuiteMenu::NestedCategory);
TestSuite1TabManager->RegisterTabSpawner( "DocumentsTestTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("DocumentsTestTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "DocumentsTestTab", "Document Spawner") );
FMenuBarBuilder MenuBarBuilder = FMenuBarBuilder( TSharedPtr<FUICommandList>() );
MenuBarBuilder.AddPullDownMenu(
NSLOCTEXT("TestSuite", "WindowMenuLabel", "Window"),
NSLOCTEXT("TestSuite", "WindowMenuToolTip", ""),
FNewMenuDelegate::CreateSP(TestSuite1TabManager.ToSharedRef(), &FTabManager::PopulateTabSpawnerMenu, TestSuiteMenu::MenuRoot));
TestSuite1Tab->SetContent
(
SNew( SVerticalBox )
+SVerticalBox::Slot()
.AutoHeight()
[
MenuBarBuilder.MakeWidget()
]
+SVerticalBox::Slot()
.FillHeight( 1.0f )
[
TestSuite1TabManager->RestoreFrom(Layout, Args.GetOwnerWindow() ).ToSharedRef()
]
);
return TestSuite1Tab;
}
static TSharedPtr<FTabManager> TestSuite2TabManager;
TSharedRef<SDockTab> SpawnTestSuite2( const FSpawnTabArgs& Args )
{
TSharedRef<FTabManager::FLayout> Layout = FTabManager::NewLayout( "TestSuite2_Layout" )
->AddArea
(
FTabManager::NewPrimaryArea()
->Split
(
FTabManager::NewStack()
->AddTab("AnimationTestTab", ETabState::OpenedTab)
->AddTab("ElementTestsTab", ETabState::OpenedTab)
->AddTab("ColorPickerTestTab", ETabState::OpenedTab)
->AddTab("NotificationListTestTab", ETabState::OpenedTab)
->AddTab("GridPanelTest", ETabState::OpenedTab)
->AddTab("DPIScalingTest", ETabState::OpenedTab)
->AddTab("InvalidationTest", ETabState::OpenedTab)
->AddTab("GammaTest", ETabState::OpenedTab)
)
);
TSharedRef<SDockTab> TestSuite2Tab =
SNew(SDockTab)
. TabRole( ETabRole::MajorTab )
. Label( LOCTEXT("TestSuite2TabLabel", "Test Suite 2") )
. ToolTipText( LOCTEXT("TestSuite2TabToolTip", "The App for the first Test Suite." ) );
TestSuite2TabManager = FGlobalTabmanager::Get()->NewTabManager( TestSuite2Tab );
{
TestSuite2TabManager->RegisterTabSpawner( "AnimationTestTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("AnimationTestTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "AnimationTestTab", "Animation Test") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite2TabManager->RegisterTabSpawner( "ElementTestsTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("ElementTestsTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "ElementTestsTab", "Elements Test") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite2TabManager->RegisterTabSpawner( "ColorPickerTestTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("ColorPickerTestTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "ColorPickerTestTab", "Color Picker Test") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite2TabManager->RegisterTabSpawner( "NotificationListTestTab", FOnSpawnTab::CreateStatic( &SpawnTab, FName("NotificationListTestTab") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "NotificationListTestTab", "Notifications Test") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite2TabManager->RegisterTabSpawner( "GridPanelTest", FOnSpawnTab::CreateStatic( &SpawnTab, FName("GridPanelTest") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "GridPanelTest", "Grid Panel") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite2TabManager->RegisterTabSpawner( "DPIScalingTest", FOnSpawnTab::CreateStatic( &SpawnTab, FName("DPIScalingTest") ) )
.SetDisplayName( NSLOCTEXT("TestSuite1", "DPIScalingTest", "DPI Scaling") )
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite2TabManager->RegisterTabSpawner("InvalidationTest", FOnSpawnTab::CreateStatic(&SpawnTab, FName("InvalidationTest")))
.SetDisplayName(NSLOCTEXT("TestSuite1", "InvalidationTest", "Invalidtion"))
.SetGroup(TestSuiteMenu::SuiteTabs);
TestSuite2TabManager->RegisterTabSpawner("GammaTest", FOnSpawnTab::CreateStatic(&SpawnTab, FName("GammaTest")))
.SetDisplayName(NSLOCTEXT("TestSuite1", "GammaTest", "Gamma"))
.SetGroup(TestSuiteMenu::SuiteTabs);
}
FMenuBarBuilder MenuBarBuilder = FMenuBarBuilder( TSharedPtr<FUICommandList>() );
MenuBarBuilder.AddPullDownMenu(
NSLOCTEXT("TestSuite", "WindowMenuLabel", "Window"),
FText::GetEmpty(),
FNewMenuDelegate::CreateSP(TestSuite2TabManager.ToSharedRef(), &FTabManager::PopulateTabSpawnerMenu, TestSuiteMenu::MenuRoot));
TestSuite2Tab->SetContent
(
SNew( SVerticalBox )
+SVerticalBox::Slot()
.AutoHeight()
[
MenuBarBuilder.MakeWidget()
]
+SVerticalBox::Slot()
.FillHeight( 1.0f )
[
TestSuite2TabManager->RestoreFrom( Layout, Args.GetOwnerWindow() ).ToSharedRef()
]
);
return TestSuite2Tab;
}
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN #BUN UnrealMath updates * added RotationAboutPointMatrix * Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming). * Simplified the implementation of FQuat::MakeFromEuler. Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry). #BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header. Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN Remove unncessary use of FGeometry. Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus changes * Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff. * FSlateLayoutTransform is scale then translate now instead of translate then scale. * TransformPosition -> TransformPoint * Added a version of Concatenate taking 4 transforms. * Update docs. Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN Adjustments to Slate headers and PCH Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN Transform calculus support for SlateRects Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN #BUN SWindow changes * Added GetLocalToScreenTransform. (Screen space == Desktop space) ** Basically contains the ApplicationScale and Window offset from the desktop. * Added GetLocalToWindowTransform (Window space == Desktop space without the window offset) * Added GetClientRectInScreen ** Allows code to know exactly WHERE the client rect is in the window. * Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above. * SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work. ** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for. ** MenuAnchors that that create new SWindows still do no correctly account for scale. Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos: * restore pixel snapping. * handle clipping in the presence of rotation. Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN Use a better method to get the window's rectangle. Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN Add 2D version of TransformVector to SlateTransform. Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC. Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN Font cache fixes for padding. * Add 1 pixel of padding around all fonts. * Fix font cache to properly handle padding * Fix font cache to handle texture elements of zero size with non-zero padding. Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Updated FSlateTextureAtlas padding logic. * Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles: * NoPadding - don't apply any padding (used to be Padding == 0). * DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1). * PadWithZero - expand 1-pixel border and fill it with zeros (new style). * removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering. * Also the existing code didn't actually handle Padding > 1. * FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother. Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN TransformCalculus tweak. * Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead. Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added a full suite of transform types for 2D transformations that are transform calculus aware: * FSlateScale2D * FSlateShear2D * FSlateQuat2D * FSlateMatrix2x2 Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform. FSlateTransform is now implemented in terms of a decomposed Matrix3x2. Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN Remove 4x4 matrix from FSlateTransform Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN FSlateTransform -> FSlateRenderTransform. Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Moved TransformCalculus into Core/Math. * Split into TransformCalculus, 2D, and 3D support. * FSlateRenderTransform is now just a typedef. * Renamed 2D transform types to remove "Slate" from their name. Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN Restore funky logic in deprecated FGeometry::MakeChild implementations. * legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly. * Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space. * This fixes the NodePanels to properly handle zooming around the mouse cursor point. Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN remove local layout transform storage from FGeometry. Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN Update Declarative syntax support to call it RenderTransform instead of Transform. Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Add GetBottomRight function to FSlateRect. Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN SThrobber now supports render transforms. Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well). Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN Clipping widgets now works under render transforms, FPaintGeometry legacy fixes. * Expanded FSlateVertex by 2 bytes to pass in local position. * Change clipcoords to be passed in local space. * Remove WorldPosition interpolator. Replaced by LocalPosition interpolator. FPaintGeometry fixes * FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space. * FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work. * Removed a legacy ctor of FPaintGeoemtry that was not being used. Misc: * Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction. * Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet! * Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it. * Removed /*WindowSpace*/ Size member from SlateDrawElement. * SlateDrawElement::GetRotationPoint vastly simplified by using Local space. * Moved slate cycle counters back to the top of the function in ElementBatcher. * Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile. Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN SSlider no longer uses MakeRotatedBox, correctly handles render transforms. * Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox. * Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform. Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN Slate clipping now done in window space again. * This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors. * Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size. * Moved some more common transform work into FSlateVertex constructor to save duplication. * Removed construction of local clip rect as it's no longer needed except for text rendering. * Hoisted construction of local clip rect out of the text drawing character loop (whoops). * Precompute InverseLayoutTransform in draw code as we use that a lot now. * Fixed OGL renderer to work. Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding. Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN Fixing HitTest 2.0 to work with latest code. * Added AppendTransform to FGeometry to preserve immutability of the struct. Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN Fixing Slate RHI Renderer to use new screenspace clipping with render transforms. Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children. Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess. Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added LayoutGeometry class. Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible. Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same. Added support for MakeChild using FLayoutGeometry. Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether. Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating. Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN More 2D transform cleanup. * Removed a bunch of todo comments from the code, and converted them to more of a final form for main. * #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry. * #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it. Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN Clean up more stuff in FPaintGeometry. * #BUN Removed ToSlateRect and Identity(). * Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it. * Removed a bunch of todo comments and converted them to a more final form. Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN Add support for Concatenate with 5 transforms. Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN #BUN Added an OffsetBy function to FSlateRect Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing. Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN HitTest 2.0 now works with render transforms. #codereview:matt.kuhlenschmidt,nick.atamas [CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
TSharedRef<SDockTab> SpawnRenderTransformManipulator( const FSpawnTabArgs& Args )
{
TSharedRef<SDockTab> RenderTransformManipulatorTab =
SNew(SDockTab)
.TabRole(ETabRole::MajorTab)
.Label(LOCTEXT("RenderTransformTabLabel", "Render Transform"))
.ToolTipText(LOCTEXT("RenderTransformTabToolTip", "Allows manipulating the render transform of all test tabs at a global level."));
RenderTransformManipulatorTab->SetContent
(
SNew( SRenderTransformManipulatorWidget )
);
return RenderTransformManipulatorTab;
}
TSharedRef<SDockTab> SpawnWidgetGallery(const FSpawnTabArgs& Args)
{
return SNew(SDockTab)
.TabRole(ETabRole::NomadTab)
.Label(LOCTEXT("WidgetGalleryTab", "Widget Gallery"))
.ToolTipText(LOCTEXT("WidgetGalleryTabTextToolTip", "Switch to the widget gallery."))
[
SNew(SScissorRectBox)
[
MakeWidgetGallery()
]
];
}
void RestoreSlateTestSuite()
{
Added the ability to take, save, and load widget snapshots via the widget reflector (Epic Friday) Major changes: - The widget reflector UI now uses tabs. The hierarchy and stats views have been moved to tabs, and new tabs have been added to support picking widgets from a snapshot. - The widget reflector node trees are no longer using UObject types. The idea here was to make the serialization easier, but it didn't work and I ended up using JSON instead. - When you take or load a widget snapshot, you're now shown the screenshot of the window associated with that snapshot, and are able to pick widgets from it as you would do with a live tree. API changes: - The tab spawners for the widget reflector and atlas visualizers are now registered automatically when the SlateReflector module is loaded. These are now the only way to create these windows. - The tabbed layout within the widget reflector has made it impossible to create the widget reflector unless spawned via a tab manager. To this end, the following functions have been removed from ISlateReflectorModule: - GetWidgetReflector - GetAtlasVisualizer - GetTextureAtlasVisualizer - GetFontAtlasVisualizer - These functions used to be used to create a raw widget reflector or atlas viewer widget. - If you were doing this because you were placing it into your own window, you can take advantage of the fact that the widget reflector tab spawner is always available, and use the global tab manager to create your window and place a spawned widget reflector tab inside it - SummonPerfTestSuite in SPerfSuite.cpp provides an example of this. - If you were doing this in the handler of your own widget reflector tab spawner, you can either just use the standard widget reflector tab spawner instead (you need to load the SlateReflector module once, and then "WidgetReflector" will be available to spawn via the global tab manager), or you can just use the DisplayWidgetReflector function of ISlateReflectorModule (which will internally do the same thing). [CL 2661609 by Jamie Dale in Main branch]
2015-08-19 16:30:27 -04:00
// Need to load this module so we have the widget reflector tab available
FModuleManager::LoadModuleChecked<ISlateReflectorModule>("SlateReflector");
FTestStyle::ResetToDefault();
FGlobalTabmanager::Get()->RegisterTabSpawner("TestSuite1", FOnSpawnTab::CreateStatic( &SpawnTestSuite1 ) );
FGlobalTabmanager::Get()->RegisterTabSpawner("TestSuite2", FOnSpawnTab::CreateStatic( &SpawnTestSuite2 ) );
FGlobalTabmanager::Get()->RegisterTabSpawner("RenderTransformManipulator", FOnSpawnTab::CreateStatic(&SpawnRenderTransformManipulator));
FGlobalTabmanager::Get()->RegisterNomadTabSpawner("WidgetGalleryTab", FOnSpawnTab::CreateStatic(&SpawnWidgetGallery))
.SetDisplayName(LOCTEXT("WidgetGalleryTab", "Widget Gallery"))
.SetGroup(TestSuiteMenu::MenuRoot);
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 2948319 on 2016/04/19 by Nick.Shin update zlib to v1.2.8 part 1 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2948661 on 2016/04/19 by Nick.Shin keep using old zlibs until they are recompiled with the newer version Change 2948737 on 2016/04/19 by Nick.Shin build warning fix Change 2949334 on 2016/04/20 by Nick.Shin fix library path for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set... Change 2951556 on 2016/04/21 by Nick.Shin static libs double checked #jira UE-29674 - Editor fails to open in Dev-Platform Change 2951559 on 2016/04/21 by Nick.Shin static libs double checked forgot these files - they were in another changelist #jira UE-29674 - Editor fails to open in Dev-Platform Change 2952411 on 2016/04/22 by Nick.Shin add win32 build targets for zlib openssl libcurl libwebsockets part 1 of 2: these are the C# build scripts Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login Change 3118163 on 2016/09/08 by Josh.Adams perm test 2, not a useful file at all Change 3121142 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3121150 on 2016/09/12 by Daniel.Lamb Added warning logs to help track down issue UE-33453. Change 3121201 on 2016/09/12 by Keith.Judge Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix. Change 3121302 on 2016/09/12 by Joe.Graf Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors Change 3121379 on 2016/09/12 by Dmitry.Rekman Linux: only link libraries that export needed symbols (UE-35720). - Fixes very long startup times of modular builds. - Includes PR #2778 by slonopotamus. #jira UE-35720 Change 3121383 on 2016/09/12 by Dmitry.Rekman Linux: added some missing _API declarations on symbols used externally. - Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't). Change 3121456 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3122939 on 2016/09/13 by Luke.Thatcher [PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service. - Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone. Change 3123040 on 2016/09/13 by Brent.Pease + Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now. Change 3123664 on 2016/09/13 by Nick.Shin this was originally checked into: release 4.13.1 bringing here to dev-platform -- original submit comments -- first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing" next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop jira UE-35363 - Huge game window when launching onto Safari 9.1.2 Change 3125282 on 2016/09/14 by Michael.Trepka Fixed iOS and tvOS code indexing in Xcode project Change 3126812 on 2016/09/15 by Josh.Adams Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes: - Added Parse function to JsonObject.cs to be able to parse a string - Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU() - Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME - Converted the PS4MallocCrash class into a generic one (that Wolf is now also using) - Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread - Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere - Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects - Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever) - Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool. - Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini) - Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain. - Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening - Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct. - Renamed a UT copy of a global function to not linker-conflict - Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4. - Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists) - Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority() - Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads? - Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move. Change 3126842 on 2016/09/15 by Michael.Trepka Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation. Change 3126956 on 2016/09/15 by Michael.Trepka Added support for compiling Vulkan shaders for Android on Mac Change 3127206 on 2016/09/15 by Michael.Trepka PR #2604: Remove some warnings. (Contributed by reapazor) Change 3127324 on 2016/09/15 by Michael.Trepka Allow third party dylibs on Mac to be loaded from plugin subfolders Change 3127924 on 2016/09/16 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3128369 on 2016/09/16 by Nick.Shin zlib 1.2.8 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128377 on 2016/09/16 by Nick.Shin openssl 1_0_2h headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128383 on 2016/09/16 by Nick.Shin libcurl 7_48_0 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128384 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128464 on 2016/09/16 by Nick.Shin webRTC rev.12643 NOTE: VS2015 - only Win64 is available - Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment NOTE: VS2013 - not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist - also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways FUTURE NOTE: - will continue to try to get VS2015 Win32 functional - and am working on trying to get VS2013 tested headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128500 on 2016/09/16 by Nick.Shin zlib 1.2.8 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128504 on 2016/09/16 by Nick.Shin openssl 1_0_2h - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128506 on 2016/09/16 by Nick.Shin libcurl 7_48_0 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128508 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128513 on 2016/09/16 by Nick.Shin webRTC rev.12643 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128602 on 2016/09/16 by Nick.Shin webRTC rev.9862 - Win64 VS2013 NOTE: - not tested (i'm working on getting a VS2013 pro license) - checking in for testing purposes WARNING: - VS2013 is no longer supported by webRTC latest headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128605 on 2016/09/16 by Nick.Shin re-enabling updated ThirdParySoftware libs: - zlib (v.1.2.8) - openssl (1.0.2h) - libcurl (7_48_0) - libwebsocket (v.1.7.4) - webRTC (rev.12643) to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build... Change 3128651 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 Change 3128704 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 - this time actually compiling it... Change 3128825 on 2016/09/16 by Dmitry.Rekman Linux: proper fix for too slow startup times (UE-35967). - Pull request #2793 by slonopotamus. - Now without stripping dependencies on libraries specified before. - Contains a work around for ld bug <2.25. Change 3128972 on 2016/09/16 by Nick.Shin fix to local build error. Change 3129283 on 2016/09/16 by Brent.Pease + Add Android local notification support based on existing system used for iOS + Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release Change 3129494 on 2016/09/17 by Nick.Shin fix CIS build errors Change 3129503 on 2016/09/17 by Dmitry.Rekman Fix Linux build (case sensitivity issue). Change 3129514 on 2016/09/17 by Nick.Shin fix CIS build errors for consoles - missing zlib include path special thanks to Dmitry.Rekman for pointing me in the right direction Change 3129647 on 2016/09/17 by Dmitry.Rekman Linux: fix non-unity build. Change 3131043 on 2016/09/19 by Nick.Shin archiving build instructions/steps when building: - zlib (v.1.2.8) win: #3128369 osx: #3128500 - openssl (1.0.2h) win: #3128377 osx: #3128504 - libcurl (7_48_0) win: #3128383 osx: #3128506 - libwebsocket (v.1.7.4) win: #3128384 osx: #3128508 - webRTC win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP osx: #3128513 Change 3132801 on 2016/09/20 by Dmitry.Rekman Linux: support specifying default OpenGL version via configs (UE-34777). - The first targeted RHI is going to be used. Change 3132905 on 2016/09/20 by Josh.Adams - Fixed up some paths with the WolfPlat rename Change 3133148 on 2016/09/20 by Josh.Adams - Only show UT EULA if PLATFORM_DESKTOP Change 3133152 on 2016/09/20 by Josh.Adams - Beginning support for applets. Disabled unless you have a special SDK with applet support. Change 3133169 on 2016/09/20 by Josh.Adams - Fixed issue with Wolf access but no SDK installed Change 3133344 on 2016/09/20 by Daniel.Lamb Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile. Added new flag to limit number of concurrent shader compiles. #test Cook QAGame, Cook Paragon Change 3133345 on 2016/09/20 by Daniel.Lamb FRedirectCollector collects string asset references all the time when running the editor. #test Cook paragon cook QAGame. Change 3133852 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. Change 3133875 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2) Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'. Change 3134544 on 2016/09/21 by Josh.Adams - Reduced UT textures for Wolf Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick FPS4Time::SystemTime now calculates the local machine time, instead of UTC. #jira UE-35170 Change 3135036 on 2016/09/21 by Michael.Trepka Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32 Change 3135292 on 2016/09/21 by Jeff.Campeau Change include order to favor the XDK edition specific headers where available. Change 3136414 on 2016/09/22 by Josh.Adams - Fixed a checkf() that had the case reversed #jira ue-36311 Change 3137082 on 2016/09/22 by Dmitry.Rekman Added support for Linux installed builds to 4.14 Change 3137220 on 2016/09/22 by Dmitry.Rekman Linux: do not rebuild hlslcc on each setup. - Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary. Change 3137227 on 2016/09/22 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3137259 on 2016/09/22 by Dmitry.Rekman Linux installed build: fix CIS (missed one .csproj) Change 3137290 on 2016/09/22 by Dmitry.Rekman Linux installed builds: fix for the resulting directory. Change 3137291 on 2016/09/22 by Chris.Babcock Restore texture filtering mode properly when movie played on Android #jira UE-36342 #ue4 #android Change 3137376 on 2016/09/22 by Dmitry.Rekman Linux: re-enabled crash handler stack smash protection. - Race condition in FRunnableThreadPThread has been previously fixed. Change 3138498 on 2016/09/23 by Dmitry.Rekman Linux: add missed package for installed builds. - mono-devel package for resgen2. Change 3138523 on 2016/09/23 by Dmitry.Rekman Linux: Update hlslcc now that we're not rebuilding it each time. Change 3138658 on 2016/09/23 by Josh.Adams - Moved UT's Social Plugin into NotForLicensees Change 3139042 on 2016/09/23 by Dmitry.Rekman Linux: more robust check of installed packages. - Also added mono-devel to the list of packages installed on 14.04. Change 3139674 on 2016/09/26 by Dmitry.Rekman Fix crash when editing widget blueprints (UE-35185). - Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping. - Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795). Change 3140203 on 2016/09/26 by Josh.Adams - Wolf Fix for SHIPPING Change 3140206 on 2016/09/26 by Josh.Adams - NEX work, still in progress Change 3140276 on 2016/09/26 by Josh.Adams - Fixed Wolf compile error Change 3140485 on 2016/09/26 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3140570 on 2016/09/26 by Dmitry.Rekman SDL2: Delete obsolete files. - We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space. Change 3140577 on 2016/09/26 by Dmitry.Rekman Fix CudaTest monolithic build. - Not the best fix, the better fix is to build against bundled libc++. Change 3141184 on 2016/09/27 by Keith.Judge Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert. #jira UE-35973 Change 3141623 on 2016/09/27 by Chris.Babcock Support hiding virtual keyboard on Android #jira UE-34201 #ue4 #android Change 3141887 on 2016/09/27 by Joe.Graf Added support for additional plugin directories that are specified by the .uproject file New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins Change 3141916 on 2016/09/27 by Josh.Adams - Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925) Change 3141926 on 2016/09/27 by Josh.Adams - Support for skipping Wolf user selector (-nologinui) Change 3141938 on 2016/09/27 by Chris.Babcock Allow Android media player to seek past 999ms (contributed by rcywongaa) #jira UE-36453 #PR #2797 #ue4 #android Change 3142207 on 2016/09/27 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3142219 on 2016/09/27 by Josh.Adams - Wolf PhysX 3.4 libs and includes Change 3142220 on 2016/09/27 by Josh.Adams - File that had to be fixed up after main merge (missed adding it to the huge integrate CL) Change 3142314 on 2016/09/27 by Chase.McAllister #jira UE-35011 fixes to some assets to remove redundancies/output log spam Change 3142510 on 2016/09/27 by Daniel.Lamb Fixed up resave lightmaps commandlet so that world transforms don't get applied twice. #jira UE-35942 Change 3142650 on 2016/09/27 by Chris.Babcock Android support for Linux by yaakuro - requires CodeWorks for Android Linux installed and OpenJDK 1.8 - need to set Android SDK paths manually in Project Settings #jira UE-32752 #jira UE-32753 #PR #2564 #PR #2565 #ue4 #android #linux Change 3142802 on 2016/09/27 by Dmitry.Rekman Upgrade to SDL 2.0.5-ish (still technically 2.0.4). - Upstream revision 10374:dccf51aee79b. - Merged all our changes hopefully. Change 3143075 on 2016/09/28 by Luke.Thatcher [RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro. #jira UE-33077 Change 3143219 on 2016/09/28 by Daniel.Lamb Added new is compiling function which tells you if it's really compiling instead of lying. If def out additional logging for debugging shader compilation issue for 4.14 release. Change 3143428 on 2016/09/28 by Luke.Thatcher [PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061 Change 3143488 on 2016/09/28 by Daniel.Lamb Changed defaults for skip cooking editor content to true. Change 3143526 on 2016/09/28 by Daniel.Lamb Increased the concurrent shader compile limit while in the cooker. #test Cook paragon Change 3143874 on 2016/09/28 by Chris.Babcock Read Android environment variables from .bashrc on Linux #jira UE-36565 #ue4 #android #linux Change 3143911 on 2016/09/28 by Dmitry.Rekman Fix SDL EGL API binding (UE-18979). - Contains PR #1398 by x414e54. - Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade. Change 3143929 on 2016/09/28 by Daniel.Lamb Removed some more temporary logging. #test Cook paragon Change 3143959 on 2016/09/28 by Jeff.Campeau Media Player for Xbox One Change 3143997 on 2016/09/28 by Dmitry.Rekman Linux: faster linking in Debug. - Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating. Change 3144004 on 2016/09/28 by Dmitry.Rekman Linux: make SCW dump core on crash in debug builds. - If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space). Change 3144007 on 2016/09/28 by Dmitry.Rekman Linux: Allow equals character in command line parameter value (UE-26406). - PR #2019 by bozzaro. - Allows passing parameters like -Switch=Key=Value. Change 3144042 on 2016/09/28 by Jeff.Campeau Add tag for DX12 support being experimental in target settings. #jira UE-36150 Change 3144068 on 2016/09/28 by Dmitry.Rekman Linux: enable using xgConsole in UAT (UE-28096). - PR #2144 by bozzaro. - Picks correct xgConsole binary. - Allegedly fixes crash in CombineXGEItemFile on mono. Change 3144120 on 2016/09/28 by Michael.Trepka Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/... Change 3144172 on 2016/09/28 by Chris.Babcock Add libpng 1.5.27 for Android #jira UE-36573 #ue4 #android Change 3144318 on 2016/09/28 by Chris.Babcock Correct logic for checking .bashrc on Linux #ue4 #android Change 3144331 on 2016/09/28 by Dmitry.Rekman Linux: repair ARM server builds. - Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1). Change 3144354 on 2016/09/28 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) this is intermediate, not fully working Change 3144368 on 2016/09/28 by Josh.Adams - Moved the new Social files into NFL Change 3144395 on 2016/09/28 by Chris.Babcock Add missing functions for AndroidWebBrowserWindow #ue4 #android Change 3144417 on 2016/09/28 by Josh.Adams - Probable fix for FWebBrowserWindow missing virtuals Change 3144438 on 2016/09/28 by Jeff.Campeau XDK updated to 160802 Change 3144569 on 2016/09/29 by Dmitry.Rekman Linux: allow a selectable clock source (UE-36564). - The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew. - Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there. #tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm). Change 3145108 on 2016/09/29 by Joe.Graf Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools) Change 3145245 on 2016/09/29 by Joe.Graf #wolf Checking in removal of plugin use on Win64 per Josh's request Change 3145514 on 2016/09/29 by Will.Fissler Updated Mac Info.plist files to disable high DPI on macOS 10.12 Change 3145538 on 2016/09/29 by Josh.Adams - Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots. Change 3145540 on 2016/09/29 by Josh.Adams - Fix for checking some Wolf dev tool installation existence - Fix for various Wolf build issues - Fix for Wolf devices not showing up in Launch on Change 3145542 on 2016/09/29 by Josh.Adams - Pulled over Wolf changes from Wolf branch into Dev-Platform Change 3145572 on 2016/09/29 by Josh.Adams - Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people. #jira UE-36591 Change 3145769 on 2016/09/29 by Chris.Babcock Remove duplicate platforms from deploy list in UFE #jira UE-36636 #ue4 Change 3146061 on 2016/09/29 by Chris.Babcock Linux: be less spammy in log when launching external procs #jira UE-36638 #ue4 #linux Change 3146208 on 2016/09/29 by Dmitry.Rekman Linux: fix PhysX crash (UE-36613). - PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above. - This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun. #jira UE-36613 Change 3146476 on 2016/09/30 by Josh.Adams - Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose Change 3146554 on 2016/09/30 by Josh.Adams - Removed another wolf secret log Change 3146626 on 2016/09/30 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3146712 on 2016/09/30 by Josh.Adams - Fixed case for building Android on Linux #jira #UE-36652 Change 3146844 on 2016/09/30 by Josh.Adams - Removed ES2 shader compiling from TVOS, and force Metal compiling #jira UE-36306 Change 3146865 on 2016/09/30 by Daniel.Lamb Removed temp logging for materials #test Launch on paragon Change 3146874 on 2016/09/30 by Dmitry.Rekman Linux: add rpath for libTextureConverter.so (UE-36620). Change 3147030 on 2016/09/30 by Josh.Adams - Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks #jira UE-36623 Change 3147151 on 2016/09/30 by Josh.Adams - Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling? Change 3147621 on 2016/09/30 by Michael.Trepka Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac Change 3147712 on 2016/09/30 by Josh.Adams - Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform. #jira UE-36225 Change 3147725 on 2016/09/30 by Josh.Adams - Fixed yet another Wolf log for people with Wolf access but no SDK [CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
const float DPIScaleFactor = FPlatformMisc::GetDPIScaleFactorAtPoint(10, 10);
TSharedRef<FTabManager::FLayout> Layout = FTabManager::NewLayout( "SlateTestSuite_Layout" )
->AddArea
(
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 2948319 on 2016/04/19 by Nick.Shin update zlib to v1.2.8 part 1 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2948661 on 2016/04/19 by Nick.Shin keep using old zlibs until they are recompiled with the newer version Change 2948737 on 2016/04/19 by Nick.Shin build warning fix Change 2949334 on 2016/04/20 by Nick.Shin fix library path for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set... Change 2951556 on 2016/04/21 by Nick.Shin static libs double checked #jira UE-29674 - Editor fails to open in Dev-Platform Change 2951559 on 2016/04/21 by Nick.Shin static libs double checked forgot these files - they were in another changelist #jira UE-29674 - Editor fails to open in Dev-Platform Change 2952411 on 2016/04/22 by Nick.Shin add win32 build targets for zlib openssl libcurl libwebsockets part 1 of 2: these are the C# build scripts Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login Change 3118163 on 2016/09/08 by Josh.Adams perm test 2, not a useful file at all Change 3121142 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3121150 on 2016/09/12 by Daniel.Lamb Added warning logs to help track down issue UE-33453. Change 3121201 on 2016/09/12 by Keith.Judge Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix. Change 3121302 on 2016/09/12 by Joe.Graf Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors Change 3121379 on 2016/09/12 by Dmitry.Rekman Linux: only link libraries that export needed symbols (UE-35720). - Fixes very long startup times of modular builds. - Includes PR #2778 by slonopotamus. #jira UE-35720 Change 3121383 on 2016/09/12 by Dmitry.Rekman Linux: added some missing _API declarations on symbols used externally. - Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't). Change 3121456 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3122939 on 2016/09/13 by Luke.Thatcher [PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service. - Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone. Change 3123040 on 2016/09/13 by Brent.Pease + Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now. Change 3123664 on 2016/09/13 by Nick.Shin this was originally checked into: release 4.13.1 bringing here to dev-platform -- original submit comments -- first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing" next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop jira UE-35363 - Huge game window when launching onto Safari 9.1.2 Change 3125282 on 2016/09/14 by Michael.Trepka Fixed iOS and tvOS code indexing in Xcode project Change 3126812 on 2016/09/15 by Josh.Adams Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes: - Added Parse function to JsonObject.cs to be able to parse a string - Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU() - Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME - Converted the PS4MallocCrash class into a generic one (that Wolf is now also using) - Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread - Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere - Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects - Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever) - Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool. - Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini) - Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain. - Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening - Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct. - Renamed a UT copy of a global function to not linker-conflict - Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4. - Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists) - Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority() - Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads? - Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move. Change 3126842 on 2016/09/15 by Michael.Trepka Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation. Change 3126956 on 2016/09/15 by Michael.Trepka Added support for compiling Vulkan shaders for Android on Mac Change 3127206 on 2016/09/15 by Michael.Trepka PR #2604: Remove some warnings. (Contributed by reapazor) Change 3127324 on 2016/09/15 by Michael.Trepka Allow third party dylibs on Mac to be loaded from plugin subfolders Change 3127924 on 2016/09/16 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3128369 on 2016/09/16 by Nick.Shin zlib 1.2.8 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128377 on 2016/09/16 by Nick.Shin openssl 1_0_2h headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128383 on 2016/09/16 by Nick.Shin libcurl 7_48_0 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128384 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128464 on 2016/09/16 by Nick.Shin webRTC rev.12643 NOTE: VS2015 - only Win64 is available - Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment NOTE: VS2013 - not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist - also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways FUTURE NOTE: - will continue to try to get VS2015 Win32 functional - and am working on trying to get VS2013 tested headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128500 on 2016/09/16 by Nick.Shin zlib 1.2.8 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128504 on 2016/09/16 by Nick.Shin openssl 1_0_2h - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128506 on 2016/09/16 by Nick.Shin libcurl 7_48_0 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128508 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128513 on 2016/09/16 by Nick.Shin webRTC rev.12643 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128602 on 2016/09/16 by Nick.Shin webRTC rev.9862 - Win64 VS2013 NOTE: - not tested (i'm working on getting a VS2013 pro license) - checking in for testing purposes WARNING: - VS2013 is no longer supported by webRTC latest headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128605 on 2016/09/16 by Nick.Shin re-enabling updated ThirdParySoftware libs: - zlib (v.1.2.8) - openssl (1.0.2h) - libcurl (7_48_0) - libwebsocket (v.1.7.4) - webRTC (rev.12643) to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build... Change 3128651 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 Change 3128704 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 - this time actually compiling it... Change 3128825 on 2016/09/16 by Dmitry.Rekman Linux: proper fix for too slow startup times (UE-35967). - Pull request #2793 by slonopotamus. - Now without stripping dependencies on libraries specified before. - Contains a work around for ld bug <2.25. Change 3128972 on 2016/09/16 by Nick.Shin fix to local build error. Change 3129283 on 2016/09/16 by Brent.Pease + Add Android local notification support based on existing system used for iOS + Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release Change 3129494 on 2016/09/17 by Nick.Shin fix CIS build errors Change 3129503 on 2016/09/17 by Dmitry.Rekman Fix Linux build (case sensitivity issue). Change 3129514 on 2016/09/17 by Nick.Shin fix CIS build errors for consoles - missing zlib include path special thanks to Dmitry.Rekman for pointing me in the right direction Change 3129647 on 2016/09/17 by Dmitry.Rekman Linux: fix non-unity build. Change 3131043 on 2016/09/19 by Nick.Shin archiving build instructions/steps when building: - zlib (v.1.2.8) win: #3128369 osx: #3128500 - openssl (1.0.2h) win: #3128377 osx: #3128504 - libcurl (7_48_0) win: #3128383 osx: #3128506 - libwebsocket (v.1.7.4) win: #3128384 osx: #3128508 - webRTC win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP osx: #3128513 Change 3132801 on 2016/09/20 by Dmitry.Rekman Linux: support specifying default OpenGL version via configs (UE-34777). - The first targeted RHI is going to be used. Change 3132905 on 2016/09/20 by Josh.Adams - Fixed up some paths with the WolfPlat rename Change 3133148 on 2016/09/20 by Josh.Adams - Only show UT EULA if PLATFORM_DESKTOP Change 3133152 on 2016/09/20 by Josh.Adams - Beginning support for applets. Disabled unless you have a special SDK with applet support. Change 3133169 on 2016/09/20 by Josh.Adams - Fixed issue with Wolf access but no SDK installed Change 3133344 on 2016/09/20 by Daniel.Lamb Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile. Added new flag to limit number of concurrent shader compiles. #test Cook QAGame, Cook Paragon Change 3133345 on 2016/09/20 by Daniel.Lamb FRedirectCollector collects string asset references all the time when running the editor. #test Cook paragon cook QAGame. Change 3133852 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. Change 3133875 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2) Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'. Change 3134544 on 2016/09/21 by Josh.Adams - Reduced UT textures for Wolf Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick FPS4Time::SystemTime now calculates the local machine time, instead of UTC. #jira UE-35170 Change 3135036 on 2016/09/21 by Michael.Trepka Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32 Change 3135292 on 2016/09/21 by Jeff.Campeau Change include order to favor the XDK edition specific headers where available. Change 3136414 on 2016/09/22 by Josh.Adams - Fixed a checkf() that had the case reversed #jira ue-36311 Change 3137082 on 2016/09/22 by Dmitry.Rekman Added support for Linux installed builds to 4.14 Change 3137220 on 2016/09/22 by Dmitry.Rekman Linux: do not rebuild hlslcc on each setup. - Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary. Change 3137227 on 2016/09/22 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3137259 on 2016/09/22 by Dmitry.Rekman Linux installed build: fix CIS (missed one .csproj) Change 3137290 on 2016/09/22 by Dmitry.Rekman Linux installed builds: fix for the resulting directory. Change 3137291 on 2016/09/22 by Chris.Babcock Restore texture filtering mode properly when movie played on Android #jira UE-36342 #ue4 #android Change 3137376 on 2016/09/22 by Dmitry.Rekman Linux: re-enabled crash handler stack smash protection. - Race condition in FRunnableThreadPThread has been previously fixed. Change 3138498 on 2016/09/23 by Dmitry.Rekman Linux: add missed package for installed builds. - mono-devel package for resgen2. Change 3138523 on 2016/09/23 by Dmitry.Rekman Linux: Update hlslcc now that we're not rebuilding it each time. Change 3138658 on 2016/09/23 by Josh.Adams - Moved UT's Social Plugin into NotForLicensees Change 3139042 on 2016/09/23 by Dmitry.Rekman Linux: more robust check of installed packages. - Also added mono-devel to the list of packages installed on 14.04. Change 3139674 on 2016/09/26 by Dmitry.Rekman Fix crash when editing widget blueprints (UE-35185). - Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping. - Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795). Change 3140203 on 2016/09/26 by Josh.Adams - Wolf Fix for SHIPPING Change 3140206 on 2016/09/26 by Josh.Adams - NEX work, still in progress Change 3140276 on 2016/09/26 by Josh.Adams - Fixed Wolf compile error Change 3140485 on 2016/09/26 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3140570 on 2016/09/26 by Dmitry.Rekman SDL2: Delete obsolete files. - We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space. Change 3140577 on 2016/09/26 by Dmitry.Rekman Fix CudaTest monolithic build. - Not the best fix, the better fix is to build against bundled libc++. Change 3141184 on 2016/09/27 by Keith.Judge Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert. #jira UE-35973 Change 3141623 on 2016/09/27 by Chris.Babcock Support hiding virtual keyboard on Android #jira UE-34201 #ue4 #android Change 3141887 on 2016/09/27 by Joe.Graf Added support for additional plugin directories that are specified by the .uproject file New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins Change 3141916 on 2016/09/27 by Josh.Adams - Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925) Change 3141926 on 2016/09/27 by Josh.Adams - Support for skipping Wolf user selector (-nologinui) Change 3141938 on 2016/09/27 by Chris.Babcock Allow Android media player to seek past 999ms (contributed by rcywongaa) #jira UE-36453 #PR #2797 #ue4 #android Change 3142207 on 2016/09/27 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3142219 on 2016/09/27 by Josh.Adams - Wolf PhysX 3.4 libs and includes Change 3142220 on 2016/09/27 by Josh.Adams - File that had to be fixed up after main merge (missed adding it to the huge integrate CL) Change 3142314 on 2016/09/27 by Chase.McAllister #jira UE-35011 fixes to some assets to remove redundancies/output log spam Change 3142510 on 2016/09/27 by Daniel.Lamb Fixed up resave lightmaps commandlet so that world transforms don't get applied twice. #jira UE-35942 Change 3142650 on 2016/09/27 by Chris.Babcock Android support for Linux by yaakuro - requires CodeWorks for Android Linux installed and OpenJDK 1.8 - need to set Android SDK paths manually in Project Settings #jira UE-32752 #jira UE-32753 #PR #2564 #PR #2565 #ue4 #android #linux Change 3142802 on 2016/09/27 by Dmitry.Rekman Upgrade to SDL 2.0.5-ish (still technically 2.0.4). - Upstream revision 10374:dccf51aee79b. - Merged all our changes hopefully. Change 3143075 on 2016/09/28 by Luke.Thatcher [RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro. #jira UE-33077 Change 3143219 on 2016/09/28 by Daniel.Lamb Added new is compiling function which tells you if it's really compiling instead of lying. If def out additional logging for debugging shader compilation issue for 4.14 release. Change 3143428 on 2016/09/28 by Luke.Thatcher [PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061 Change 3143488 on 2016/09/28 by Daniel.Lamb Changed defaults for skip cooking editor content to true. Change 3143526 on 2016/09/28 by Daniel.Lamb Increased the concurrent shader compile limit while in the cooker. #test Cook paragon Change 3143874 on 2016/09/28 by Chris.Babcock Read Android environment variables from .bashrc on Linux #jira UE-36565 #ue4 #android #linux Change 3143911 on 2016/09/28 by Dmitry.Rekman Fix SDL EGL API binding (UE-18979). - Contains PR #1398 by x414e54. - Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade. Change 3143929 on 2016/09/28 by Daniel.Lamb Removed some more temporary logging. #test Cook paragon Change 3143959 on 2016/09/28 by Jeff.Campeau Media Player for Xbox One Change 3143997 on 2016/09/28 by Dmitry.Rekman Linux: faster linking in Debug. - Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating. Change 3144004 on 2016/09/28 by Dmitry.Rekman Linux: make SCW dump core on crash in debug builds. - If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space). Change 3144007 on 2016/09/28 by Dmitry.Rekman Linux: Allow equals character in command line parameter value (UE-26406). - PR #2019 by bozzaro. - Allows passing parameters like -Switch=Key=Value. Change 3144042 on 2016/09/28 by Jeff.Campeau Add tag for DX12 support being experimental in target settings. #jira UE-36150 Change 3144068 on 2016/09/28 by Dmitry.Rekman Linux: enable using xgConsole in UAT (UE-28096). - PR #2144 by bozzaro. - Picks correct xgConsole binary. - Allegedly fixes crash in CombineXGEItemFile on mono. Change 3144120 on 2016/09/28 by Michael.Trepka Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/... Change 3144172 on 2016/09/28 by Chris.Babcock Add libpng 1.5.27 for Android #jira UE-36573 #ue4 #android Change 3144318 on 2016/09/28 by Chris.Babcock Correct logic for checking .bashrc on Linux #ue4 #android Change 3144331 on 2016/09/28 by Dmitry.Rekman Linux: repair ARM server builds. - Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1). Change 3144354 on 2016/09/28 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) this is intermediate, not fully working Change 3144368 on 2016/09/28 by Josh.Adams - Moved the new Social files into NFL Change 3144395 on 2016/09/28 by Chris.Babcock Add missing functions for AndroidWebBrowserWindow #ue4 #android Change 3144417 on 2016/09/28 by Josh.Adams - Probable fix for FWebBrowserWindow missing virtuals Change 3144438 on 2016/09/28 by Jeff.Campeau XDK updated to 160802 Change 3144569 on 2016/09/29 by Dmitry.Rekman Linux: allow a selectable clock source (UE-36564). - The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew. - Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there. #tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm). Change 3145108 on 2016/09/29 by Joe.Graf Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools) Change 3145245 on 2016/09/29 by Joe.Graf #wolf Checking in removal of plugin use on Win64 per Josh's request Change 3145514 on 2016/09/29 by Will.Fissler Updated Mac Info.plist files to disable high DPI on macOS 10.12 Change 3145538 on 2016/09/29 by Josh.Adams - Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots. Change 3145540 on 2016/09/29 by Josh.Adams - Fix for checking some Wolf dev tool installation existence - Fix for various Wolf build issues - Fix for Wolf devices not showing up in Launch on Change 3145542 on 2016/09/29 by Josh.Adams - Pulled over Wolf changes from Wolf branch into Dev-Platform Change 3145572 on 2016/09/29 by Josh.Adams - Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people. #jira UE-36591 Change 3145769 on 2016/09/29 by Chris.Babcock Remove duplicate platforms from deploy list in UFE #jira UE-36636 #ue4 Change 3146061 on 2016/09/29 by Chris.Babcock Linux: be less spammy in log when launching external procs #jira UE-36638 #ue4 #linux Change 3146208 on 2016/09/29 by Dmitry.Rekman Linux: fix PhysX crash (UE-36613). - PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above. - This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun. #jira UE-36613 Change 3146476 on 2016/09/30 by Josh.Adams - Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose Change 3146554 on 2016/09/30 by Josh.Adams - Removed another wolf secret log Change 3146626 on 2016/09/30 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3146712 on 2016/09/30 by Josh.Adams - Fixed case for building Android on Linux #jira #UE-36652 Change 3146844 on 2016/09/30 by Josh.Adams - Removed ES2 shader compiling from TVOS, and force Metal compiling #jira UE-36306 Change 3146865 on 2016/09/30 by Daniel.Lamb Removed temp logging for materials #test Launch on paragon Change 3146874 on 2016/09/30 by Dmitry.Rekman Linux: add rpath for libTextureConverter.so (UE-36620). Change 3147030 on 2016/09/30 by Josh.Adams - Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks #jira UE-36623 Change 3147151 on 2016/09/30 by Josh.Adams - Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling? Change 3147621 on 2016/09/30 by Michael.Trepka Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac Change 3147712 on 2016/09/30 by Josh.Adams - Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform. #jira UE-36225 Change 3147725 on 2016/09/30 by Josh.Adams - Fixed yet another Wolf log for people with Wolf access but no SDK [CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
FTabManager::NewArea(720 * DPIScaleFactor, 600 * DPIScaleFactor)
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177) ========================== MAJOR FEATURES + CHANGES ========================== Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login #lockdown josh.adams Change 2970373 on 2016/05/09 by Lee.Clark PS4 - Fix NumInstances not getting reset after DrawIndirect calls Change 2972873 on 2016/05/10 by Michael.Trepka Correct initial position for SlateViewer windows on Mac Change 2974363 on 2016/05/11 by Mark.Satterthwaite Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect. Change 2975921 on 2016/05/12 by Michael.Trepka Removed unused AdjustWindowRegion declaration from LinuxWindow.h #codereview Dmitry.Rekman Change 2977002 on 2016/05/13 by Michael.Trepka Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready #codereview Ben.Marsh Change 2977337 on 2016/05/13 by Brent.Pease UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error + Prevent illegal characters from being entered in the packaging UI + Report an error from iPhonePackager if a illegal bundle id is specified + Convert special characters to XML equivalents - Correctly check for the presence of iTunes 12 when packaging iOS games on Windows - Improve ios certificate and provision message in package settings UI #codereview peter.sauerbrei Change 2977509 on 2016/05/13 by Brent.Pease + Fix mac compile error Change 2978036 on 2016/05/14 by Mark.Satterthwaite One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN. #jira UE-30777 Change 2978037 on 2016/05/14 by Mark.Satterthwaite Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago. Change 2978333 on 2016/05/16 by Lee.Clark Fix packaging of non-code projects when plugins are enabled #codereview Peter.Sauerbrei Change 2978780 on 2016/05/16 by Mark.Satterthwaite Reduce temporary allocations required to set uniform parameters in Metal. Change 2979680 on 2016/05/16 by Nick.Shin editor's HTML5 platform settings was missing due to the emscripten SDK move should have been included with CL: #2946251 Change 2979681 on 2016/05/16 by Nick.Shin cleaned up websocket processing for HTML5 #jira UE-13657 - HTML5 plugin OnRawRecieve overflow Change 2979701 on 2016/05/16 by Brent.Pease UE-28421 - Message box cannot be closed after accessing the home screen on iOS + Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution Change 2980766 on 2016/05/17 by Jeremiah.Waldron Adding Android build support for HarfBuzz - using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them - Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config> Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly #jira UE-28586 #codereview chris.babcock Change 2980953 on 2016/05/17 by Jeremiah.Waldron Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo #jira UE-28586 Change 2981039 on 2016/05/17 by Jeff.Campeau ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support) Change 2981054 on 2016/05/17 by Jeff.Campeau Enable Live OSS for Orion on Xbox One Change 2981553 on 2016/05/18 by Jeff.Campeau Enable Oodle for Xbox One Change 2981555 on 2016/05/18 by Jeff.Campeau Scalability settings for Xbox One Change 2981774 on 2016/05/18 by Keith.Judge Xbox One - Duplicating Movie Player fix from 4.12. Change 2981789 on 2016/05/18 by Keith.Judge Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12. Change 2981802 on 2016/05/18 by Keith.Judge Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12. Change 2981875 on 2016/05/18 by Keith.Judge Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12. Change 2981900 on 2016/05/18 by Keith.Judge Xbox One - D3D11Query refactor. Duplicated from 4.12 Change 2981945 on 2016/05/18 by Nick.Shin filled out response headers for HTML5 platform #jira UE-26047 - HTML5 HTTP Response Headers not implemented Change 2981981 on 2016/05/18 by Lee.Clark PS4 - Fix COTF not updating files #codereview Daniel.Lamb Change 2982246 on 2016/05/18 by Michael.Trepka Fixed Mono compile errors in UT build scripts Change 2983869 on 2016/05/19 by Mark.Satterthwaite Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures. #jira UE-29557 Change 2983871 on 2016/05/19 by Mark.Satterthwaite Pool Metal texture update buffers to reduce churn. Change 2983892 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors. Change 2983898 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists. Change 2983911 on 2016/05/19 by Mark.Satterthwaite Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen. Change 2983916 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected. Change 2984874 on 2016/05/20 by Keith.Judge Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps. #jira UEPLAT-1295 Change 2985446 on 2016/05/20 by Mark.Satterthwaite Remove the non-functional -metaldebug option from MetalRHI. Change 2985827 on 2016/05/20 by Nick.Shin call EndSession() onbeforeunload() note: API CHANGE - HTML5JavaScripteFx.{js,h} - UE_MakeHTTPDataRequest() #jira UE-22285 - Session End events are not generated for HTML5 Change 2986013 on 2016/05/20 by Jeremiah.Waldron PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio) Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo Pulled from Release-4.12 CL #jira UE-30782 #codereview chris.babcock, Peter.Sauerbrei Change 2986057 on 2016/05/20 by Mark.Satterthwaite Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI. Change 2986059 on 2016/05/20 by Mark.Satterthwaite Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes). Change 2986060 on 2016/05/20 by Mark.Satterthwaite Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level. Change 2986063 on 2016/05/20 by Mark.Satterthwaite Missing change from previous CL. Change 2986066 on 2016/05/20 by Mark.Satterthwaite More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame. Change 2986455 on 2016/05/23 by Keith.Judge Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler. Change 2986886 on 2016/05/23 by Mark.Satterthwaite Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier. Change 2986955 on 2016/05/23 by Brent.Pease + Do not error out if "[PROJECT_NAME]" is in the bundle ID #codereview peter.sauerbrei Change 2987304 on 2016/05/23 by Chris.Babcock Remove old Android platforms #ue4 #android #codeview Josh.Adams Change 2987571 on 2016/05/23 by Mark.Satterthwaite Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass) #jira UE-31111 Change 2987591 on 2016/05/23 by Mark.Satterthwaite Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5. Change 2987679 on 2016/05/23 by Mark.Satterthwaite Re-enable tiled reflections on Nvidia by default now that they work. Change 2987799 on 2016/05/24 by Mark.Satterthwaite Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac). Change 2989395 on 2016/05/25 by Lee.Clark PS4 - Fix shader output / render target format mismatch for sparse MRT. Change 2990003 on 2016/05/25 by Jeremiah.Waldron When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function. Change 2990393 on 2016/05/25 by Mark.Satterthwaite Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal... Change 2990516 on 2016/05/25 by Brent.Pease + UEPLAT-1294 - Support for local notifications + UEPLAT-1254 - Add BP event for device orientation change + Added a new class based on UGameInstance for mobile device callbacks + Ensured IOSAppDelegate.cpp follows convention for lambda functions Change 2991361 on 2016/05/26 by Jeremiah.Waldron Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it Change 2992450 on 2016/05/27 by Mark.Satterthwaite Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders. Change 2993027 on 2016/05/27 by Mark.Satterthwaite Fix typo for new CFLAG_BoundsChecking enumeration value. Change 2993594 on 2016/05/27 by Mark.Satterthwaite Build fix - check not assert... Change 2993595 on 2016/05/27 by Mark.Satterthwaite Fix typo from Xcode hang... Change 2993614 on 2016/05/28 by Mark.Satterthwaite At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers. Change 2993747 on 2016/05/28 by Mark.Satterthwaite Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used. Change 2994256 on 2016/05/31 by Lee.Clark PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working. #codereview Chad.Taylor,Aaron.McLeran Change 2994281 on 2016/05/31 by Rolando.Caloca DP - Allow hlslcc to process type casts containing the 'const' keyword - it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile. #codereview Mark.Satterthwaite, Dmitry.Rekman #jira UE-31411 Change 2994467 on 2016/05/31 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 2994493 on 2016/05/31 by Daniel.Lamb Fixed issue with DDC commandlet not caching things from the startup packages list. Change 2994644 on 2016/05/31 by Mark.Satterthwaite Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project. Change 2996074 on 2016/06/01 by Lee.Clark PS4 - Fix GS mode not getting disabled when using parallel contexts. #codereview Marcus.Wassmer Change 2996129 on 2016/06/01 by Brent.Pease Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch. Change 2996130 on 2016/06/01 by Jeremiah.Waldron PR #2387 part 2 (Contributed by gameDNAstudio) Adding ability to consume purchases during GooglePlay RestorePurchases This also touches IOS due to changes to base classes and function signatures #codereview chris.babcock, Peter.Sauerbrei Change 2996441 on 2016/06/01 by Jeremiah.Waldron Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio) Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function. #codereview chris.babcock Change 2996514 on 2016/06/01 by Jeff.Campeau Fix merge issue from main #jira UE-31502 Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick https://jira.ol.epicgames.net/browse/UE-31446 Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed. Renamed handleReserveFailed to handleReserveFailedLightweight Change 2997235 on 2016/06/01 by Jeremiah.Waldron RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node. The IAP product in Match3 is non-consumable so just passing an empty array where necessary Change 2997241 on 2016/06/01 by Jeremiah.Waldron OnlineSubsystemGameCircle Plugin - Leaderboards - Achievements - Friends - IAP - External UI Interface - Runtime Settings in Project Settings Plugin section when plugin is enabled - Disabled by default #jira UEPLAT-105 #codereview chris.babcock Change 2997618 on 2016/06/02 by Lee.Clark #UE4Docs: Removed PS4MapFileUtil info Change 2997840 on 2016/06/02 by Jeremiah.Waldron Removing trace logging from OnlineSubsystemGameCircle_APL Change 2998754 on 2016/06/02 by Brent.Pease Change BlueprintMobileLibrary to BlueprintPlatformLibrary Change 3000762 on 2016/06/03 by Jeff.Campeau Add example rating info to ShooterGame Change 3001037 on 2016/06/04 by Brent.Pease + Add ui screens for delegate test, local notification test, and iap test + Implement delegate test Change 3001250 on 2016/06/05 by Brent.Pease + Initial pass at IAP test screen Change 3001639 on 2016/06/06 by Jeff.Campeau Fix Xbox One build issue with DX12 #codereview Zabir.Hoque Change 3002574 on 2016/06/06 by Jeremiah.Waldron Adding Android Install Location to Android platform runtime settings and manifest generation Change 3002780 on 2016/06/06 by Brent.Pease + Initial implementation of local notification test Change 3003005 on 2016/06/06 by Jeremiah.Waldron OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute Change 3004392 on 2016/06/07 by Jeremiah.Waldron Fixing typo in APL comment :) Change 3005768 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3005929 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3006151 on 2016/06/08 by Peter.Sauerbrei fix for LocalNotifications not available on TVOS #lockdown josh.adams Change 3006183 on 2016/06/08 by Brent.Pease Manual merge CL#3000242 from Release-4.12 into Dev-Platform #lockdown josh.adams Change 3006296 on 2016/06/08 by Peter.Sauerbrei submit an updated iPhonePackager and support DLLs #lockdown josh.adams Change 3006378 on 2016/06/08 by Peter.Sauerbrei fix for API update to RestorePurchases #codereview brent.pease #lockdown josh.adams #lockdown nick.penwarden [CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
#if PLATFORM_MAC
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 2948319 on 2016/04/19 by Nick.Shin update zlib to v1.2.8 part 1 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2948661 on 2016/04/19 by Nick.Shin keep using old zlibs until they are recompiled with the newer version Change 2948737 on 2016/04/19 by Nick.Shin build warning fix Change 2949334 on 2016/04/20 by Nick.Shin fix library path for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set... Change 2951556 on 2016/04/21 by Nick.Shin static libs double checked #jira UE-29674 - Editor fails to open in Dev-Platform Change 2951559 on 2016/04/21 by Nick.Shin static libs double checked forgot these files - they were in another changelist #jira UE-29674 - Editor fails to open in Dev-Platform Change 2952411 on 2016/04/22 by Nick.Shin add win32 build targets for zlib openssl libcurl libwebsockets part 1 of 2: these are the C# build scripts Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login Change 3118163 on 2016/09/08 by Josh.Adams perm test 2, not a useful file at all Change 3121142 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3121150 on 2016/09/12 by Daniel.Lamb Added warning logs to help track down issue UE-33453. Change 3121201 on 2016/09/12 by Keith.Judge Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix. Change 3121302 on 2016/09/12 by Joe.Graf Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors Change 3121379 on 2016/09/12 by Dmitry.Rekman Linux: only link libraries that export needed symbols (UE-35720). - Fixes very long startup times of modular builds. - Includes PR #2778 by slonopotamus. #jira UE-35720 Change 3121383 on 2016/09/12 by Dmitry.Rekman Linux: added some missing _API declarations on symbols used externally. - Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't). Change 3121456 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3122939 on 2016/09/13 by Luke.Thatcher [PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service. - Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone. Change 3123040 on 2016/09/13 by Brent.Pease + Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now. Change 3123664 on 2016/09/13 by Nick.Shin this was originally checked into: release 4.13.1 bringing here to dev-platform -- original submit comments -- first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing" next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop jira UE-35363 - Huge game window when launching onto Safari 9.1.2 Change 3125282 on 2016/09/14 by Michael.Trepka Fixed iOS and tvOS code indexing in Xcode project Change 3126812 on 2016/09/15 by Josh.Adams Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes: - Added Parse function to JsonObject.cs to be able to parse a string - Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU() - Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME - Converted the PS4MallocCrash class into a generic one (that Wolf is now also using) - Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread - Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere - Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects - Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever) - Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool. - Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini) - Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain. - Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening - Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct. - Renamed a UT copy of a global function to not linker-conflict - Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4. - Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists) - Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority() - Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads? - Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move. Change 3126842 on 2016/09/15 by Michael.Trepka Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation. Change 3126956 on 2016/09/15 by Michael.Trepka Added support for compiling Vulkan shaders for Android on Mac Change 3127206 on 2016/09/15 by Michael.Trepka PR #2604: Remove some warnings. (Contributed by reapazor) Change 3127324 on 2016/09/15 by Michael.Trepka Allow third party dylibs on Mac to be loaded from plugin subfolders Change 3127924 on 2016/09/16 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3128369 on 2016/09/16 by Nick.Shin zlib 1.2.8 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128377 on 2016/09/16 by Nick.Shin openssl 1_0_2h headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128383 on 2016/09/16 by Nick.Shin libcurl 7_48_0 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128384 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128464 on 2016/09/16 by Nick.Shin webRTC rev.12643 NOTE: VS2015 - only Win64 is available - Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment NOTE: VS2013 - not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist - also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways FUTURE NOTE: - will continue to try to get VS2015 Win32 functional - and am working on trying to get VS2013 tested headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128500 on 2016/09/16 by Nick.Shin zlib 1.2.8 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128504 on 2016/09/16 by Nick.Shin openssl 1_0_2h - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128506 on 2016/09/16 by Nick.Shin libcurl 7_48_0 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128508 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128513 on 2016/09/16 by Nick.Shin webRTC rev.12643 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128602 on 2016/09/16 by Nick.Shin webRTC rev.9862 - Win64 VS2013 NOTE: - not tested (i'm working on getting a VS2013 pro license) - checking in for testing purposes WARNING: - VS2013 is no longer supported by webRTC latest headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128605 on 2016/09/16 by Nick.Shin re-enabling updated ThirdParySoftware libs: - zlib (v.1.2.8) - openssl (1.0.2h) - libcurl (7_48_0) - libwebsocket (v.1.7.4) - webRTC (rev.12643) to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build... Change 3128651 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 Change 3128704 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 - this time actually compiling it... Change 3128825 on 2016/09/16 by Dmitry.Rekman Linux: proper fix for too slow startup times (UE-35967). - Pull request #2793 by slonopotamus. - Now without stripping dependencies on libraries specified before. - Contains a work around for ld bug <2.25. Change 3128972 on 2016/09/16 by Nick.Shin fix to local build error. Change 3129283 on 2016/09/16 by Brent.Pease + Add Android local notification support based on existing system used for iOS + Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release Change 3129494 on 2016/09/17 by Nick.Shin fix CIS build errors Change 3129503 on 2016/09/17 by Dmitry.Rekman Fix Linux build (case sensitivity issue). Change 3129514 on 2016/09/17 by Nick.Shin fix CIS build errors for consoles - missing zlib include path special thanks to Dmitry.Rekman for pointing me in the right direction Change 3129647 on 2016/09/17 by Dmitry.Rekman Linux: fix non-unity build. Change 3131043 on 2016/09/19 by Nick.Shin archiving build instructions/steps when building: - zlib (v.1.2.8) win: #3128369 osx: #3128500 - openssl (1.0.2h) win: #3128377 osx: #3128504 - libcurl (7_48_0) win: #3128383 osx: #3128506 - libwebsocket (v.1.7.4) win: #3128384 osx: #3128508 - webRTC win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP osx: #3128513 Change 3132801 on 2016/09/20 by Dmitry.Rekman Linux: support specifying default OpenGL version via configs (UE-34777). - The first targeted RHI is going to be used. Change 3132905 on 2016/09/20 by Josh.Adams - Fixed up some paths with the WolfPlat rename Change 3133148 on 2016/09/20 by Josh.Adams - Only show UT EULA if PLATFORM_DESKTOP Change 3133152 on 2016/09/20 by Josh.Adams - Beginning support for applets. Disabled unless you have a special SDK with applet support. Change 3133169 on 2016/09/20 by Josh.Adams - Fixed issue with Wolf access but no SDK installed Change 3133344 on 2016/09/20 by Daniel.Lamb Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile. Added new flag to limit number of concurrent shader compiles. #test Cook QAGame, Cook Paragon Change 3133345 on 2016/09/20 by Daniel.Lamb FRedirectCollector collects string asset references all the time when running the editor. #test Cook paragon cook QAGame. Change 3133852 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. Change 3133875 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2) Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'. Change 3134544 on 2016/09/21 by Josh.Adams - Reduced UT textures for Wolf Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick FPS4Time::SystemTime now calculates the local machine time, instead of UTC. #jira UE-35170 Change 3135036 on 2016/09/21 by Michael.Trepka Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32 Change 3135292 on 2016/09/21 by Jeff.Campeau Change include order to favor the XDK edition specific headers where available. Change 3136414 on 2016/09/22 by Josh.Adams - Fixed a checkf() that had the case reversed #jira ue-36311 Change 3137082 on 2016/09/22 by Dmitry.Rekman Added support for Linux installed builds to 4.14 Change 3137220 on 2016/09/22 by Dmitry.Rekman Linux: do not rebuild hlslcc on each setup. - Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary. Change 3137227 on 2016/09/22 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3137259 on 2016/09/22 by Dmitry.Rekman Linux installed build: fix CIS (missed one .csproj) Change 3137290 on 2016/09/22 by Dmitry.Rekman Linux installed builds: fix for the resulting directory. Change 3137291 on 2016/09/22 by Chris.Babcock Restore texture filtering mode properly when movie played on Android #jira UE-36342 #ue4 #android Change 3137376 on 2016/09/22 by Dmitry.Rekman Linux: re-enabled crash handler stack smash protection. - Race condition in FRunnableThreadPThread has been previously fixed. Change 3138498 on 2016/09/23 by Dmitry.Rekman Linux: add missed package for installed builds. - mono-devel package for resgen2. Change 3138523 on 2016/09/23 by Dmitry.Rekman Linux: Update hlslcc now that we're not rebuilding it each time. Change 3138658 on 2016/09/23 by Josh.Adams - Moved UT's Social Plugin into NotForLicensees Change 3139042 on 2016/09/23 by Dmitry.Rekman Linux: more robust check of installed packages. - Also added mono-devel to the list of packages installed on 14.04. Change 3139674 on 2016/09/26 by Dmitry.Rekman Fix crash when editing widget blueprints (UE-35185). - Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping. - Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795). Change 3140203 on 2016/09/26 by Josh.Adams - Wolf Fix for SHIPPING Change 3140206 on 2016/09/26 by Josh.Adams - NEX work, still in progress Change 3140276 on 2016/09/26 by Josh.Adams - Fixed Wolf compile error Change 3140485 on 2016/09/26 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3140570 on 2016/09/26 by Dmitry.Rekman SDL2: Delete obsolete files. - We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space. Change 3140577 on 2016/09/26 by Dmitry.Rekman Fix CudaTest monolithic build. - Not the best fix, the better fix is to build against bundled libc++. Change 3141184 on 2016/09/27 by Keith.Judge Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert. #jira UE-35973 Change 3141623 on 2016/09/27 by Chris.Babcock Support hiding virtual keyboard on Android #jira UE-34201 #ue4 #android Change 3141887 on 2016/09/27 by Joe.Graf Added support for additional plugin directories that are specified by the .uproject file New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins Change 3141916 on 2016/09/27 by Josh.Adams - Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925) Change 3141926 on 2016/09/27 by Josh.Adams - Support for skipping Wolf user selector (-nologinui) Change 3141938 on 2016/09/27 by Chris.Babcock Allow Android media player to seek past 999ms (contributed by rcywongaa) #jira UE-36453 #PR #2797 #ue4 #android Change 3142207 on 2016/09/27 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3142219 on 2016/09/27 by Josh.Adams - Wolf PhysX 3.4 libs and includes Change 3142220 on 2016/09/27 by Josh.Adams - File that had to be fixed up after main merge (missed adding it to the huge integrate CL) Change 3142314 on 2016/09/27 by Chase.McAllister #jira UE-35011 fixes to some assets to remove redundancies/output log spam Change 3142510 on 2016/09/27 by Daniel.Lamb Fixed up resave lightmaps commandlet so that world transforms don't get applied twice. #jira UE-35942 Change 3142650 on 2016/09/27 by Chris.Babcock Android support for Linux by yaakuro - requires CodeWorks for Android Linux installed and OpenJDK 1.8 - need to set Android SDK paths manually in Project Settings #jira UE-32752 #jira UE-32753 #PR #2564 #PR #2565 #ue4 #android #linux Change 3142802 on 2016/09/27 by Dmitry.Rekman Upgrade to SDL 2.0.5-ish (still technically 2.0.4). - Upstream revision 10374:dccf51aee79b. - Merged all our changes hopefully. Change 3143075 on 2016/09/28 by Luke.Thatcher [RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro. #jira UE-33077 Change 3143219 on 2016/09/28 by Daniel.Lamb Added new is compiling function which tells you if it's really compiling instead of lying. If def out additional logging for debugging shader compilation issue for 4.14 release. Change 3143428 on 2016/09/28 by Luke.Thatcher [PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061 Change 3143488 on 2016/09/28 by Daniel.Lamb Changed defaults for skip cooking editor content to true. Change 3143526 on 2016/09/28 by Daniel.Lamb Increased the concurrent shader compile limit while in the cooker. #test Cook paragon Change 3143874 on 2016/09/28 by Chris.Babcock Read Android environment variables from .bashrc on Linux #jira UE-36565 #ue4 #android #linux Change 3143911 on 2016/09/28 by Dmitry.Rekman Fix SDL EGL API binding (UE-18979). - Contains PR #1398 by x414e54. - Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade. Change 3143929 on 2016/09/28 by Daniel.Lamb Removed some more temporary logging. #test Cook paragon Change 3143959 on 2016/09/28 by Jeff.Campeau Media Player for Xbox One Change 3143997 on 2016/09/28 by Dmitry.Rekman Linux: faster linking in Debug. - Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating. Change 3144004 on 2016/09/28 by Dmitry.Rekman Linux: make SCW dump core on crash in debug builds. - If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space). Change 3144007 on 2016/09/28 by Dmitry.Rekman Linux: Allow equals character in command line parameter value (UE-26406). - PR #2019 by bozzaro. - Allows passing parameters like -Switch=Key=Value. Change 3144042 on 2016/09/28 by Jeff.Campeau Add tag for DX12 support being experimental in target settings. #jira UE-36150 Change 3144068 on 2016/09/28 by Dmitry.Rekman Linux: enable using xgConsole in UAT (UE-28096). - PR #2144 by bozzaro. - Picks correct xgConsole binary. - Allegedly fixes crash in CombineXGEItemFile on mono. Change 3144120 on 2016/09/28 by Michael.Trepka Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/... Change 3144172 on 2016/09/28 by Chris.Babcock Add libpng 1.5.27 for Android #jira UE-36573 #ue4 #android Change 3144318 on 2016/09/28 by Chris.Babcock Correct logic for checking .bashrc on Linux #ue4 #android Change 3144331 on 2016/09/28 by Dmitry.Rekman Linux: repair ARM server builds. - Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1). Change 3144354 on 2016/09/28 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) this is intermediate, not fully working Change 3144368 on 2016/09/28 by Josh.Adams - Moved the new Social files into NFL Change 3144395 on 2016/09/28 by Chris.Babcock Add missing functions for AndroidWebBrowserWindow #ue4 #android Change 3144417 on 2016/09/28 by Josh.Adams - Probable fix for FWebBrowserWindow missing virtuals Change 3144438 on 2016/09/28 by Jeff.Campeau XDK updated to 160802 Change 3144569 on 2016/09/29 by Dmitry.Rekman Linux: allow a selectable clock source (UE-36564). - The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew. - Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there. #tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm). Change 3145108 on 2016/09/29 by Joe.Graf Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools) Change 3145245 on 2016/09/29 by Joe.Graf #wolf Checking in removal of plugin use on Win64 per Josh's request Change 3145514 on 2016/09/29 by Will.Fissler Updated Mac Info.plist files to disable high DPI on macOS 10.12 Change 3145538 on 2016/09/29 by Josh.Adams - Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots. Change 3145540 on 2016/09/29 by Josh.Adams - Fix for checking some Wolf dev tool installation existence - Fix for various Wolf build issues - Fix for Wolf devices not showing up in Launch on Change 3145542 on 2016/09/29 by Josh.Adams - Pulled over Wolf changes from Wolf branch into Dev-Platform Change 3145572 on 2016/09/29 by Josh.Adams - Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people. #jira UE-36591 Change 3145769 on 2016/09/29 by Chris.Babcock Remove duplicate platforms from deploy list in UFE #jira UE-36636 #ue4 Change 3146061 on 2016/09/29 by Chris.Babcock Linux: be less spammy in log when launching external procs #jira UE-36638 #ue4 #linux Change 3146208 on 2016/09/29 by Dmitry.Rekman Linux: fix PhysX crash (UE-36613). - PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above. - This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun. #jira UE-36613 Change 3146476 on 2016/09/30 by Josh.Adams - Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose Change 3146554 on 2016/09/30 by Josh.Adams - Removed another wolf secret log Change 3146626 on 2016/09/30 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3146712 on 2016/09/30 by Josh.Adams - Fixed case for building Android on Linux #jira #UE-36652 Change 3146844 on 2016/09/30 by Josh.Adams - Removed ES2 shader compiling from TVOS, and force Metal compiling #jira UE-36306 Change 3146865 on 2016/09/30 by Daniel.Lamb Removed temp logging for materials #test Launch on paragon Change 3146874 on 2016/09/30 by Dmitry.Rekman Linux: add rpath for libTextureConverter.so (UE-36620). Change 3147030 on 2016/09/30 by Josh.Adams - Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks #jira UE-36623 Change 3147151 on 2016/09/30 by Josh.Adams - Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling? Change 3147621 on 2016/09/30 by Michael.Trepka Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac Change 3147712 on 2016/09/30 by Josh.Adams - Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform. #jira UE-36225 Change 3147725 on 2016/09/30 by Josh.Adams - Fixed yet another Wolf log for people with Wolf access but no SDK [CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
->SetWindow( FVector2D(420 * DPIScaleFactor, 32 * DPIScaleFactor), false )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177) ========================== MAJOR FEATURES + CHANGES ========================== Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login #lockdown josh.adams Change 2970373 on 2016/05/09 by Lee.Clark PS4 - Fix NumInstances not getting reset after DrawIndirect calls Change 2972873 on 2016/05/10 by Michael.Trepka Correct initial position for SlateViewer windows on Mac Change 2974363 on 2016/05/11 by Mark.Satterthwaite Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect. Change 2975921 on 2016/05/12 by Michael.Trepka Removed unused AdjustWindowRegion declaration from LinuxWindow.h #codereview Dmitry.Rekman Change 2977002 on 2016/05/13 by Michael.Trepka Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready #codereview Ben.Marsh Change 2977337 on 2016/05/13 by Brent.Pease UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error + Prevent illegal characters from being entered in the packaging UI + Report an error from iPhonePackager if a illegal bundle id is specified + Convert special characters to XML equivalents - Correctly check for the presence of iTunes 12 when packaging iOS games on Windows - Improve ios certificate and provision message in package settings UI #codereview peter.sauerbrei Change 2977509 on 2016/05/13 by Brent.Pease + Fix mac compile error Change 2978036 on 2016/05/14 by Mark.Satterthwaite One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN. #jira UE-30777 Change 2978037 on 2016/05/14 by Mark.Satterthwaite Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago. Change 2978333 on 2016/05/16 by Lee.Clark Fix packaging of non-code projects when plugins are enabled #codereview Peter.Sauerbrei Change 2978780 on 2016/05/16 by Mark.Satterthwaite Reduce temporary allocations required to set uniform parameters in Metal. Change 2979680 on 2016/05/16 by Nick.Shin editor's HTML5 platform settings was missing due to the emscripten SDK move should have been included with CL: #2946251 Change 2979681 on 2016/05/16 by Nick.Shin cleaned up websocket processing for HTML5 #jira UE-13657 - HTML5 plugin OnRawRecieve overflow Change 2979701 on 2016/05/16 by Brent.Pease UE-28421 - Message box cannot be closed after accessing the home screen on iOS + Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution Change 2980766 on 2016/05/17 by Jeremiah.Waldron Adding Android build support for HarfBuzz - using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them - Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config> Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly #jira UE-28586 #codereview chris.babcock Change 2980953 on 2016/05/17 by Jeremiah.Waldron Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo #jira UE-28586 Change 2981039 on 2016/05/17 by Jeff.Campeau ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support) Change 2981054 on 2016/05/17 by Jeff.Campeau Enable Live OSS for Orion on Xbox One Change 2981553 on 2016/05/18 by Jeff.Campeau Enable Oodle for Xbox One Change 2981555 on 2016/05/18 by Jeff.Campeau Scalability settings for Xbox One Change 2981774 on 2016/05/18 by Keith.Judge Xbox One - Duplicating Movie Player fix from 4.12. Change 2981789 on 2016/05/18 by Keith.Judge Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12. Change 2981802 on 2016/05/18 by Keith.Judge Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12. Change 2981875 on 2016/05/18 by Keith.Judge Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12. Change 2981900 on 2016/05/18 by Keith.Judge Xbox One - D3D11Query refactor. Duplicated from 4.12 Change 2981945 on 2016/05/18 by Nick.Shin filled out response headers for HTML5 platform #jira UE-26047 - HTML5 HTTP Response Headers not implemented Change 2981981 on 2016/05/18 by Lee.Clark PS4 - Fix COTF not updating files #codereview Daniel.Lamb Change 2982246 on 2016/05/18 by Michael.Trepka Fixed Mono compile errors in UT build scripts Change 2983869 on 2016/05/19 by Mark.Satterthwaite Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures. #jira UE-29557 Change 2983871 on 2016/05/19 by Mark.Satterthwaite Pool Metal texture update buffers to reduce churn. Change 2983892 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors. Change 2983898 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists. Change 2983911 on 2016/05/19 by Mark.Satterthwaite Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen. Change 2983916 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected. Change 2984874 on 2016/05/20 by Keith.Judge Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps. #jira UEPLAT-1295 Change 2985446 on 2016/05/20 by Mark.Satterthwaite Remove the non-functional -metaldebug option from MetalRHI. Change 2985827 on 2016/05/20 by Nick.Shin call EndSession() onbeforeunload() note: API CHANGE - HTML5JavaScripteFx.{js,h} - UE_MakeHTTPDataRequest() #jira UE-22285 - Session End events are not generated for HTML5 Change 2986013 on 2016/05/20 by Jeremiah.Waldron PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio) Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo Pulled from Release-4.12 CL #jira UE-30782 #codereview chris.babcock, Peter.Sauerbrei Change 2986057 on 2016/05/20 by Mark.Satterthwaite Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI. Change 2986059 on 2016/05/20 by Mark.Satterthwaite Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes). Change 2986060 on 2016/05/20 by Mark.Satterthwaite Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level. Change 2986063 on 2016/05/20 by Mark.Satterthwaite Missing change from previous CL. Change 2986066 on 2016/05/20 by Mark.Satterthwaite More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame. Change 2986455 on 2016/05/23 by Keith.Judge Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler. Change 2986886 on 2016/05/23 by Mark.Satterthwaite Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier. Change 2986955 on 2016/05/23 by Brent.Pease + Do not error out if "[PROJECT_NAME]" is in the bundle ID #codereview peter.sauerbrei Change 2987304 on 2016/05/23 by Chris.Babcock Remove old Android platforms #ue4 #android #codeview Josh.Adams Change 2987571 on 2016/05/23 by Mark.Satterthwaite Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass) #jira UE-31111 Change 2987591 on 2016/05/23 by Mark.Satterthwaite Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5. Change 2987679 on 2016/05/23 by Mark.Satterthwaite Re-enable tiled reflections on Nvidia by default now that they work. Change 2987799 on 2016/05/24 by Mark.Satterthwaite Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac). Change 2989395 on 2016/05/25 by Lee.Clark PS4 - Fix shader output / render target format mismatch for sparse MRT. Change 2990003 on 2016/05/25 by Jeremiah.Waldron When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function. Change 2990393 on 2016/05/25 by Mark.Satterthwaite Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal... Change 2990516 on 2016/05/25 by Brent.Pease + UEPLAT-1294 - Support for local notifications + UEPLAT-1254 - Add BP event for device orientation change + Added a new class based on UGameInstance for mobile device callbacks + Ensured IOSAppDelegate.cpp follows convention for lambda functions Change 2991361 on 2016/05/26 by Jeremiah.Waldron Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it Change 2992450 on 2016/05/27 by Mark.Satterthwaite Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders. Change 2993027 on 2016/05/27 by Mark.Satterthwaite Fix typo for new CFLAG_BoundsChecking enumeration value. Change 2993594 on 2016/05/27 by Mark.Satterthwaite Build fix - check not assert... Change 2993595 on 2016/05/27 by Mark.Satterthwaite Fix typo from Xcode hang... Change 2993614 on 2016/05/28 by Mark.Satterthwaite At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers. Change 2993747 on 2016/05/28 by Mark.Satterthwaite Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used. Change 2994256 on 2016/05/31 by Lee.Clark PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working. #codereview Chad.Taylor,Aaron.McLeran Change 2994281 on 2016/05/31 by Rolando.Caloca DP - Allow hlslcc to process type casts containing the 'const' keyword - it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile. #codereview Mark.Satterthwaite, Dmitry.Rekman #jira UE-31411 Change 2994467 on 2016/05/31 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 2994493 on 2016/05/31 by Daniel.Lamb Fixed issue with DDC commandlet not caching things from the startup packages list. Change 2994644 on 2016/05/31 by Mark.Satterthwaite Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project. Change 2996074 on 2016/06/01 by Lee.Clark PS4 - Fix GS mode not getting disabled when using parallel contexts. #codereview Marcus.Wassmer Change 2996129 on 2016/06/01 by Brent.Pease Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch. Change 2996130 on 2016/06/01 by Jeremiah.Waldron PR #2387 part 2 (Contributed by gameDNAstudio) Adding ability to consume purchases during GooglePlay RestorePurchases This also touches IOS due to changes to base classes and function signatures #codereview chris.babcock, Peter.Sauerbrei Change 2996441 on 2016/06/01 by Jeremiah.Waldron Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio) Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function. #codereview chris.babcock Change 2996514 on 2016/06/01 by Jeff.Campeau Fix merge issue from main #jira UE-31502 Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick https://jira.ol.epicgames.net/browse/UE-31446 Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed. Renamed handleReserveFailed to handleReserveFailedLightweight Change 2997235 on 2016/06/01 by Jeremiah.Waldron RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node. The IAP product in Match3 is non-consumable so just passing an empty array where necessary Change 2997241 on 2016/06/01 by Jeremiah.Waldron OnlineSubsystemGameCircle Plugin - Leaderboards - Achievements - Friends - IAP - External UI Interface - Runtime Settings in Project Settings Plugin section when plugin is enabled - Disabled by default #jira UEPLAT-105 #codereview chris.babcock Change 2997618 on 2016/06/02 by Lee.Clark #UE4Docs: Removed PS4MapFileUtil info Change 2997840 on 2016/06/02 by Jeremiah.Waldron Removing trace logging from OnlineSubsystemGameCircle_APL Change 2998754 on 2016/06/02 by Brent.Pease Change BlueprintMobileLibrary to BlueprintPlatformLibrary Change 3000762 on 2016/06/03 by Jeff.Campeau Add example rating info to ShooterGame Change 3001037 on 2016/06/04 by Brent.Pease + Add ui screens for delegate test, local notification test, and iap test + Implement delegate test Change 3001250 on 2016/06/05 by Brent.Pease + Initial pass at IAP test screen Change 3001639 on 2016/06/06 by Jeff.Campeau Fix Xbox One build issue with DX12 #codereview Zabir.Hoque Change 3002574 on 2016/06/06 by Jeremiah.Waldron Adding Android Install Location to Android platform runtime settings and manifest generation Change 3002780 on 2016/06/06 by Brent.Pease + Initial implementation of local notification test Change 3003005 on 2016/06/06 by Jeremiah.Waldron OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute Change 3004392 on 2016/06/07 by Jeremiah.Waldron Fixing typo in APL comment :) Change 3005768 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3005929 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3006151 on 2016/06/08 by Peter.Sauerbrei fix for LocalNotifications not available on TVOS #lockdown josh.adams Change 3006183 on 2016/06/08 by Brent.Pease Manual merge CL#3000242 from Release-4.12 into Dev-Platform #lockdown josh.adams Change 3006296 on 2016/06/08 by Peter.Sauerbrei submit an updated iPhonePackager and support DLLs #lockdown josh.adams Change 3006378 on 2016/06/08 by Peter.Sauerbrei fix for API update to RestorePurchases #codereview brent.pease #lockdown josh.adams #lockdown nick.penwarden [CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
#else
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 2948319 on 2016/04/19 by Nick.Shin update zlib to v1.2.8 part 1 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2948661 on 2016/04/19 by Nick.Shin keep using old zlibs until they are recompiled with the newer version Change 2948737 on 2016/04/19 by Nick.Shin build warning fix Change 2949334 on 2016/04/20 by Nick.Shin fix library path for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set... Change 2951556 on 2016/04/21 by Nick.Shin static libs double checked #jira UE-29674 - Editor fails to open in Dev-Platform Change 2951559 on 2016/04/21 by Nick.Shin static libs double checked forgot these files - they were in another changelist #jira UE-29674 - Editor fails to open in Dev-Platform Change 2952411 on 2016/04/22 by Nick.Shin add win32 build targets for zlib openssl libcurl libwebsockets part 1 of 2: these are the C# build scripts Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login Change 3118163 on 2016/09/08 by Josh.Adams perm test 2, not a useful file at all Change 3121142 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3121150 on 2016/09/12 by Daniel.Lamb Added warning logs to help track down issue UE-33453. Change 3121201 on 2016/09/12 by Keith.Judge Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix. Change 3121302 on 2016/09/12 by Joe.Graf Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors Change 3121379 on 2016/09/12 by Dmitry.Rekman Linux: only link libraries that export needed symbols (UE-35720). - Fixes very long startup times of modular builds. - Includes PR #2778 by slonopotamus. #jira UE-35720 Change 3121383 on 2016/09/12 by Dmitry.Rekman Linux: added some missing _API declarations on symbols used externally. - Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't). Change 3121456 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3122939 on 2016/09/13 by Luke.Thatcher [PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service. - Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone. Change 3123040 on 2016/09/13 by Brent.Pease + Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now. Change 3123664 on 2016/09/13 by Nick.Shin this was originally checked into: release 4.13.1 bringing here to dev-platform -- original submit comments -- first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing" next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop jira UE-35363 - Huge game window when launching onto Safari 9.1.2 Change 3125282 on 2016/09/14 by Michael.Trepka Fixed iOS and tvOS code indexing in Xcode project Change 3126812 on 2016/09/15 by Josh.Adams Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes: - Added Parse function to JsonObject.cs to be able to parse a string - Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU() - Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME - Converted the PS4MallocCrash class into a generic one (that Wolf is now also using) - Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread - Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere - Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects - Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever) - Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool. - Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini) - Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain. - Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening - Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct. - Renamed a UT copy of a global function to not linker-conflict - Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4. - Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists) - Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority() - Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads? - Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move. Change 3126842 on 2016/09/15 by Michael.Trepka Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation. Change 3126956 on 2016/09/15 by Michael.Trepka Added support for compiling Vulkan shaders for Android on Mac Change 3127206 on 2016/09/15 by Michael.Trepka PR #2604: Remove some warnings. (Contributed by reapazor) Change 3127324 on 2016/09/15 by Michael.Trepka Allow third party dylibs on Mac to be loaded from plugin subfolders Change 3127924 on 2016/09/16 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3128369 on 2016/09/16 by Nick.Shin zlib 1.2.8 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128377 on 2016/09/16 by Nick.Shin openssl 1_0_2h headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128383 on 2016/09/16 by Nick.Shin libcurl 7_48_0 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128384 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128464 on 2016/09/16 by Nick.Shin webRTC rev.12643 NOTE: VS2015 - only Win64 is available - Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment NOTE: VS2013 - not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist - also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways FUTURE NOTE: - will continue to try to get VS2015 Win32 functional - and am working on trying to get VS2013 tested headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128500 on 2016/09/16 by Nick.Shin zlib 1.2.8 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128504 on 2016/09/16 by Nick.Shin openssl 1_0_2h - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128506 on 2016/09/16 by Nick.Shin libcurl 7_48_0 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128508 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128513 on 2016/09/16 by Nick.Shin webRTC rev.12643 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128602 on 2016/09/16 by Nick.Shin webRTC rev.9862 - Win64 VS2013 NOTE: - not tested (i'm working on getting a VS2013 pro license) - checking in for testing purposes WARNING: - VS2013 is no longer supported by webRTC latest headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128605 on 2016/09/16 by Nick.Shin re-enabling updated ThirdParySoftware libs: - zlib (v.1.2.8) - openssl (1.0.2h) - libcurl (7_48_0) - libwebsocket (v.1.7.4) - webRTC (rev.12643) to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build... Change 3128651 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 Change 3128704 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 - this time actually compiling it... Change 3128825 on 2016/09/16 by Dmitry.Rekman Linux: proper fix for too slow startup times (UE-35967). - Pull request #2793 by slonopotamus. - Now without stripping dependencies on libraries specified before. - Contains a work around for ld bug <2.25. Change 3128972 on 2016/09/16 by Nick.Shin fix to local build error. Change 3129283 on 2016/09/16 by Brent.Pease + Add Android local notification support based on existing system used for iOS + Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release Change 3129494 on 2016/09/17 by Nick.Shin fix CIS build errors Change 3129503 on 2016/09/17 by Dmitry.Rekman Fix Linux build (case sensitivity issue). Change 3129514 on 2016/09/17 by Nick.Shin fix CIS build errors for consoles - missing zlib include path special thanks to Dmitry.Rekman for pointing me in the right direction Change 3129647 on 2016/09/17 by Dmitry.Rekman Linux: fix non-unity build. Change 3131043 on 2016/09/19 by Nick.Shin archiving build instructions/steps when building: - zlib (v.1.2.8) win: #3128369 osx: #3128500 - openssl (1.0.2h) win: #3128377 osx: #3128504 - libcurl (7_48_0) win: #3128383 osx: #3128506 - libwebsocket (v.1.7.4) win: #3128384 osx: #3128508 - webRTC win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP osx: #3128513 Change 3132801 on 2016/09/20 by Dmitry.Rekman Linux: support specifying default OpenGL version via configs (UE-34777). - The first targeted RHI is going to be used. Change 3132905 on 2016/09/20 by Josh.Adams - Fixed up some paths with the WolfPlat rename Change 3133148 on 2016/09/20 by Josh.Adams - Only show UT EULA if PLATFORM_DESKTOP Change 3133152 on 2016/09/20 by Josh.Adams - Beginning support for applets. Disabled unless you have a special SDK with applet support. Change 3133169 on 2016/09/20 by Josh.Adams - Fixed issue with Wolf access but no SDK installed Change 3133344 on 2016/09/20 by Daniel.Lamb Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile. Added new flag to limit number of concurrent shader compiles. #test Cook QAGame, Cook Paragon Change 3133345 on 2016/09/20 by Daniel.Lamb FRedirectCollector collects string asset references all the time when running the editor. #test Cook paragon cook QAGame. Change 3133852 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. Change 3133875 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2) Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'. Change 3134544 on 2016/09/21 by Josh.Adams - Reduced UT textures for Wolf Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick FPS4Time::SystemTime now calculates the local machine time, instead of UTC. #jira UE-35170 Change 3135036 on 2016/09/21 by Michael.Trepka Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32 Change 3135292 on 2016/09/21 by Jeff.Campeau Change include order to favor the XDK edition specific headers where available. Change 3136414 on 2016/09/22 by Josh.Adams - Fixed a checkf() that had the case reversed #jira ue-36311 Change 3137082 on 2016/09/22 by Dmitry.Rekman Added support for Linux installed builds to 4.14 Change 3137220 on 2016/09/22 by Dmitry.Rekman Linux: do not rebuild hlslcc on each setup. - Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary. Change 3137227 on 2016/09/22 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3137259 on 2016/09/22 by Dmitry.Rekman Linux installed build: fix CIS (missed one .csproj) Change 3137290 on 2016/09/22 by Dmitry.Rekman Linux installed builds: fix for the resulting directory. Change 3137291 on 2016/09/22 by Chris.Babcock Restore texture filtering mode properly when movie played on Android #jira UE-36342 #ue4 #android Change 3137376 on 2016/09/22 by Dmitry.Rekman Linux: re-enabled crash handler stack smash protection. - Race condition in FRunnableThreadPThread has been previously fixed. Change 3138498 on 2016/09/23 by Dmitry.Rekman Linux: add missed package for installed builds. - mono-devel package for resgen2. Change 3138523 on 2016/09/23 by Dmitry.Rekman Linux: Update hlslcc now that we're not rebuilding it each time. Change 3138658 on 2016/09/23 by Josh.Adams - Moved UT's Social Plugin into NotForLicensees Change 3139042 on 2016/09/23 by Dmitry.Rekman Linux: more robust check of installed packages. - Also added mono-devel to the list of packages installed on 14.04. Change 3139674 on 2016/09/26 by Dmitry.Rekman Fix crash when editing widget blueprints (UE-35185). - Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping. - Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795). Change 3140203 on 2016/09/26 by Josh.Adams - Wolf Fix for SHIPPING Change 3140206 on 2016/09/26 by Josh.Adams - NEX work, still in progress Change 3140276 on 2016/09/26 by Josh.Adams - Fixed Wolf compile error Change 3140485 on 2016/09/26 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3140570 on 2016/09/26 by Dmitry.Rekman SDL2: Delete obsolete files. - We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space. Change 3140577 on 2016/09/26 by Dmitry.Rekman Fix CudaTest monolithic build. - Not the best fix, the better fix is to build against bundled libc++. Change 3141184 on 2016/09/27 by Keith.Judge Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert. #jira UE-35973 Change 3141623 on 2016/09/27 by Chris.Babcock Support hiding virtual keyboard on Android #jira UE-34201 #ue4 #android Change 3141887 on 2016/09/27 by Joe.Graf Added support for additional plugin directories that are specified by the .uproject file New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins Change 3141916 on 2016/09/27 by Josh.Adams - Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925) Change 3141926 on 2016/09/27 by Josh.Adams - Support for skipping Wolf user selector (-nologinui) Change 3141938 on 2016/09/27 by Chris.Babcock Allow Android media player to seek past 999ms (contributed by rcywongaa) #jira UE-36453 #PR #2797 #ue4 #android Change 3142207 on 2016/09/27 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3142219 on 2016/09/27 by Josh.Adams - Wolf PhysX 3.4 libs and includes Change 3142220 on 2016/09/27 by Josh.Adams - File that had to be fixed up after main merge (missed adding it to the huge integrate CL) Change 3142314 on 2016/09/27 by Chase.McAllister #jira UE-35011 fixes to some assets to remove redundancies/output log spam Change 3142510 on 2016/09/27 by Daniel.Lamb Fixed up resave lightmaps commandlet so that world transforms don't get applied twice. #jira UE-35942 Change 3142650 on 2016/09/27 by Chris.Babcock Android support for Linux by yaakuro - requires CodeWorks for Android Linux installed and OpenJDK 1.8 - need to set Android SDK paths manually in Project Settings #jira UE-32752 #jira UE-32753 #PR #2564 #PR #2565 #ue4 #android #linux Change 3142802 on 2016/09/27 by Dmitry.Rekman Upgrade to SDL 2.0.5-ish (still technically 2.0.4). - Upstream revision 10374:dccf51aee79b. - Merged all our changes hopefully. Change 3143075 on 2016/09/28 by Luke.Thatcher [RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro. #jira UE-33077 Change 3143219 on 2016/09/28 by Daniel.Lamb Added new is compiling function which tells you if it's really compiling instead of lying. If def out additional logging for debugging shader compilation issue for 4.14 release. Change 3143428 on 2016/09/28 by Luke.Thatcher [PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061 Change 3143488 on 2016/09/28 by Daniel.Lamb Changed defaults for skip cooking editor content to true. Change 3143526 on 2016/09/28 by Daniel.Lamb Increased the concurrent shader compile limit while in the cooker. #test Cook paragon Change 3143874 on 2016/09/28 by Chris.Babcock Read Android environment variables from .bashrc on Linux #jira UE-36565 #ue4 #android #linux Change 3143911 on 2016/09/28 by Dmitry.Rekman Fix SDL EGL API binding (UE-18979). - Contains PR #1398 by x414e54. - Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade. Change 3143929 on 2016/09/28 by Daniel.Lamb Removed some more temporary logging. #test Cook paragon Change 3143959 on 2016/09/28 by Jeff.Campeau Media Player for Xbox One Change 3143997 on 2016/09/28 by Dmitry.Rekman Linux: faster linking in Debug. - Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating. Change 3144004 on 2016/09/28 by Dmitry.Rekman Linux: make SCW dump core on crash in debug builds. - If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space). Change 3144007 on 2016/09/28 by Dmitry.Rekman Linux: Allow equals character in command line parameter value (UE-26406). - PR #2019 by bozzaro. - Allows passing parameters like -Switch=Key=Value. Change 3144042 on 2016/09/28 by Jeff.Campeau Add tag for DX12 support being experimental in target settings. #jira UE-36150 Change 3144068 on 2016/09/28 by Dmitry.Rekman Linux: enable using xgConsole in UAT (UE-28096). - PR #2144 by bozzaro. - Picks correct xgConsole binary. - Allegedly fixes crash in CombineXGEItemFile on mono. Change 3144120 on 2016/09/28 by Michael.Trepka Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/... Change 3144172 on 2016/09/28 by Chris.Babcock Add libpng 1.5.27 for Android #jira UE-36573 #ue4 #android Change 3144318 on 2016/09/28 by Chris.Babcock Correct logic for checking .bashrc on Linux #ue4 #android Change 3144331 on 2016/09/28 by Dmitry.Rekman Linux: repair ARM server builds. - Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1). Change 3144354 on 2016/09/28 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) this is intermediate, not fully working Change 3144368 on 2016/09/28 by Josh.Adams - Moved the new Social files into NFL Change 3144395 on 2016/09/28 by Chris.Babcock Add missing functions for AndroidWebBrowserWindow #ue4 #android Change 3144417 on 2016/09/28 by Josh.Adams - Probable fix for FWebBrowserWindow missing virtuals Change 3144438 on 2016/09/28 by Jeff.Campeau XDK updated to 160802 Change 3144569 on 2016/09/29 by Dmitry.Rekman Linux: allow a selectable clock source (UE-36564). - The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew. - Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there. #tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm). Change 3145108 on 2016/09/29 by Joe.Graf Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools) Change 3145245 on 2016/09/29 by Joe.Graf #wolf Checking in removal of plugin use on Win64 per Josh's request Change 3145514 on 2016/09/29 by Will.Fissler Updated Mac Info.plist files to disable high DPI on macOS 10.12 Change 3145538 on 2016/09/29 by Josh.Adams - Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots. Change 3145540 on 2016/09/29 by Josh.Adams - Fix for checking some Wolf dev tool installation existence - Fix for various Wolf build issues - Fix for Wolf devices not showing up in Launch on Change 3145542 on 2016/09/29 by Josh.Adams - Pulled over Wolf changes from Wolf branch into Dev-Platform Change 3145572 on 2016/09/29 by Josh.Adams - Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people. #jira UE-36591 Change 3145769 on 2016/09/29 by Chris.Babcock Remove duplicate platforms from deploy list in UFE #jira UE-36636 #ue4 Change 3146061 on 2016/09/29 by Chris.Babcock Linux: be less spammy in log when launching external procs #jira UE-36638 #ue4 #linux Change 3146208 on 2016/09/29 by Dmitry.Rekman Linux: fix PhysX crash (UE-36613). - PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above. - This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun. #jira UE-36613 Change 3146476 on 2016/09/30 by Josh.Adams - Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose Change 3146554 on 2016/09/30 by Josh.Adams - Removed another wolf secret log Change 3146626 on 2016/09/30 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3146712 on 2016/09/30 by Josh.Adams - Fixed case for building Android on Linux #jira #UE-36652 Change 3146844 on 2016/09/30 by Josh.Adams - Removed ES2 shader compiling from TVOS, and force Metal compiling #jira UE-36306 Change 3146865 on 2016/09/30 by Daniel.Lamb Removed temp logging for materials #test Launch on paragon Change 3146874 on 2016/09/30 by Dmitry.Rekman Linux: add rpath for libTextureConverter.so (UE-36620). Change 3147030 on 2016/09/30 by Josh.Adams - Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks #jira UE-36623 Change 3147151 on 2016/09/30 by Josh.Adams - Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling? Change 3147621 on 2016/09/30 by Michael.Trepka Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac Change 3147712 on 2016/09/30 by Josh.Adams - Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform. #jira UE-36225 Change 3147725 on 2016/09/30 by Josh.Adams - Fixed yet another Wolf log for people with Wolf access but no SDK [CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
->SetWindow( FVector2D(420 * DPIScaleFactor, 10 * DPIScaleFactor), false )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177) ========================== MAJOR FEATURES + CHANGES ========================== Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login #lockdown josh.adams Change 2970373 on 2016/05/09 by Lee.Clark PS4 - Fix NumInstances not getting reset after DrawIndirect calls Change 2972873 on 2016/05/10 by Michael.Trepka Correct initial position for SlateViewer windows on Mac Change 2974363 on 2016/05/11 by Mark.Satterthwaite Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect. Change 2975921 on 2016/05/12 by Michael.Trepka Removed unused AdjustWindowRegion declaration from LinuxWindow.h #codereview Dmitry.Rekman Change 2977002 on 2016/05/13 by Michael.Trepka Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready #codereview Ben.Marsh Change 2977337 on 2016/05/13 by Brent.Pease UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error + Prevent illegal characters from being entered in the packaging UI + Report an error from iPhonePackager if a illegal bundle id is specified + Convert special characters to XML equivalents - Correctly check for the presence of iTunes 12 when packaging iOS games on Windows - Improve ios certificate and provision message in package settings UI #codereview peter.sauerbrei Change 2977509 on 2016/05/13 by Brent.Pease + Fix mac compile error Change 2978036 on 2016/05/14 by Mark.Satterthwaite One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN. #jira UE-30777 Change 2978037 on 2016/05/14 by Mark.Satterthwaite Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago. Change 2978333 on 2016/05/16 by Lee.Clark Fix packaging of non-code projects when plugins are enabled #codereview Peter.Sauerbrei Change 2978780 on 2016/05/16 by Mark.Satterthwaite Reduce temporary allocations required to set uniform parameters in Metal. Change 2979680 on 2016/05/16 by Nick.Shin editor's HTML5 platform settings was missing due to the emscripten SDK move should have been included with CL: #2946251 Change 2979681 on 2016/05/16 by Nick.Shin cleaned up websocket processing for HTML5 #jira UE-13657 - HTML5 plugin OnRawRecieve overflow Change 2979701 on 2016/05/16 by Brent.Pease UE-28421 - Message box cannot be closed after accessing the home screen on iOS + Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution Change 2980766 on 2016/05/17 by Jeremiah.Waldron Adding Android build support for HarfBuzz - using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them - Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config> Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly #jira UE-28586 #codereview chris.babcock Change 2980953 on 2016/05/17 by Jeremiah.Waldron Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo #jira UE-28586 Change 2981039 on 2016/05/17 by Jeff.Campeau ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support) Change 2981054 on 2016/05/17 by Jeff.Campeau Enable Live OSS for Orion on Xbox One Change 2981553 on 2016/05/18 by Jeff.Campeau Enable Oodle for Xbox One Change 2981555 on 2016/05/18 by Jeff.Campeau Scalability settings for Xbox One Change 2981774 on 2016/05/18 by Keith.Judge Xbox One - Duplicating Movie Player fix from 4.12. Change 2981789 on 2016/05/18 by Keith.Judge Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12. Change 2981802 on 2016/05/18 by Keith.Judge Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12. Change 2981875 on 2016/05/18 by Keith.Judge Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12. Change 2981900 on 2016/05/18 by Keith.Judge Xbox One - D3D11Query refactor. Duplicated from 4.12 Change 2981945 on 2016/05/18 by Nick.Shin filled out response headers for HTML5 platform #jira UE-26047 - HTML5 HTTP Response Headers not implemented Change 2981981 on 2016/05/18 by Lee.Clark PS4 - Fix COTF not updating files #codereview Daniel.Lamb Change 2982246 on 2016/05/18 by Michael.Trepka Fixed Mono compile errors in UT build scripts Change 2983869 on 2016/05/19 by Mark.Satterthwaite Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures. #jira UE-29557 Change 2983871 on 2016/05/19 by Mark.Satterthwaite Pool Metal texture update buffers to reduce churn. Change 2983892 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors. Change 2983898 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists. Change 2983911 on 2016/05/19 by Mark.Satterthwaite Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen. Change 2983916 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected. Change 2984874 on 2016/05/20 by Keith.Judge Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps. #jira UEPLAT-1295 Change 2985446 on 2016/05/20 by Mark.Satterthwaite Remove the non-functional -metaldebug option from MetalRHI. Change 2985827 on 2016/05/20 by Nick.Shin call EndSession() onbeforeunload() note: API CHANGE - HTML5JavaScripteFx.{js,h} - UE_MakeHTTPDataRequest() #jira UE-22285 - Session End events are not generated for HTML5 Change 2986013 on 2016/05/20 by Jeremiah.Waldron PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio) Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo Pulled from Release-4.12 CL #jira UE-30782 #codereview chris.babcock, Peter.Sauerbrei Change 2986057 on 2016/05/20 by Mark.Satterthwaite Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI. Change 2986059 on 2016/05/20 by Mark.Satterthwaite Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes). Change 2986060 on 2016/05/20 by Mark.Satterthwaite Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level. Change 2986063 on 2016/05/20 by Mark.Satterthwaite Missing change from previous CL. Change 2986066 on 2016/05/20 by Mark.Satterthwaite More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame. Change 2986455 on 2016/05/23 by Keith.Judge Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler. Change 2986886 on 2016/05/23 by Mark.Satterthwaite Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier. Change 2986955 on 2016/05/23 by Brent.Pease + Do not error out if "[PROJECT_NAME]" is in the bundle ID #codereview peter.sauerbrei Change 2987304 on 2016/05/23 by Chris.Babcock Remove old Android platforms #ue4 #android #codeview Josh.Adams Change 2987571 on 2016/05/23 by Mark.Satterthwaite Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass) #jira UE-31111 Change 2987591 on 2016/05/23 by Mark.Satterthwaite Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5. Change 2987679 on 2016/05/23 by Mark.Satterthwaite Re-enable tiled reflections on Nvidia by default now that they work. Change 2987799 on 2016/05/24 by Mark.Satterthwaite Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac). Change 2989395 on 2016/05/25 by Lee.Clark PS4 - Fix shader output / render target format mismatch for sparse MRT. Change 2990003 on 2016/05/25 by Jeremiah.Waldron When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function. Change 2990393 on 2016/05/25 by Mark.Satterthwaite Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal... Change 2990516 on 2016/05/25 by Brent.Pease + UEPLAT-1294 - Support for local notifications + UEPLAT-1254 - Add BP event for device orientation change + Added a new class based on UGameInstance for mobile device callbacks + Ensured IOSAppDelegate.cpp follows convention for lambda functions Change 2991361 on 2016/05/26 by Jeremiah.Waldron Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it Change 2992450 on 2016/05/27 by Mark.Satterthwaite Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders. Change 2993027 on 2016/05/27 by Mark.Satterthwaite Fix typo for new CFLAG_BoundsChecking enumeration value. Change 2993594 on 2016/05/27 by Mark.Satterthwaite Build fix - check not assert... Change 2993595 on 2016/05/27 by Mark.Satterthwaite Fix typo from Xcode hang... Change 2993614 on 2016/05/28 by Mark.Satterthwaite At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers. Change 2993747 on 2016/05/28 by Mark.Satterthwaite Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used. Change 2994256 on 2016/05/31 by Lee.Clark PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working. #codereview Chad.Taylor,Aaron.McLeran Change 2994281 on 2016/05/31 by Rolando.Caloca DP - Allow hlslcc to process type casts containing the 'const' keyword - it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile. #codereview Mark.Satterthwaite, Dmitry.Rekman #jira UE-31411 Change 2994467 on 2016/05/31 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 2994493 on 2016/05/31 by Daniel.Lamb Fixed issue with DDC commandlet not caching things from the startup packages list. Change 2994644 on 2016/05/31 by Mark.Satterthwaite Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project. Change 2996074 on 2016/06/01 by Lee.Clark PS4 - Fix GS mode not getting disabled when using parallel contexts. #codereview Marcus.Wassmer Change 2996129 on 2016/06/01 by Brent.Pease Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch. Change 2996130 on 2016/06/01 by Jeremiah.Waldron PR #2387 part 2 (Contributed by gameDNAstudio) Adding ability to consume purchases during GooglePlay RestorePurchases This also touches IOS due to changes to base classes and function signatures #codereview chris.babcock, Peter.Sauerbrei Change 2996441 on 2016/06/01 by Jeremiah.Waldron Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio) Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function. #codereview chris.babcock Change 2996514 on 2016/06/01 by Jeff.Campeau Fix merge issue from main #jira UE-31502 Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick https://jira.ol.epicgames.net/browse/UE-31446 Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed. Renamed handleReserveFailed to handleReserveFailedLightweight Change 2997235 on 2016/06/01 by Jeremiah.Waldron RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node. The IAP product in Match3 is non-consumable so just passing an empty array where necessary Change 2997241 on 2016/06/01 by Jeremiah.Waldron OnlineSubsystemGameCircle Plugin - Leaderboards - Achievements - Friends - IAP - External UI Interface - Runtime Settings in Project Settings Plugin section when plugin is enabled - Disabled by default #jira UEPLAT-105 #codereview chris.babcock Change 2997618 on 2016/06/02 by Lee.Clark #UE4Docs: Removed PS4MapFileUtil info Change 2997840 on 2016/06/02 by Jeremiah.Waldron Removing trace logging from OnlineSubsystemGameCircle_APL Change 2998754 on 2016/06/02 by Brent.Pease Change BlueprintMobileLibrary to BlueprintPlatformLibrary Change 3000762 on 2016/06/03 by Jeff.Campeau Add example rating info to ShooterGame Change 3001037 on 2016/06/04 by Brent.Pease + Add ui screens for delegate test, local notification test, and iap test + Implement delegate test Change 3001250 on 2016/06/05 by Brent.Pease + Initial pass at IAP test screen Change 3001639 on 2016/06/06 by Jeff.Campeau Fix Xbox One build issue with DX12 #codereview Zabir.Hoque Change 3002574 on 2016/06/06 by Jeremiah.Waldron Adding Android Install Location to Android platform runtime settings and manifest generation Change 3002780 on 2016/06/06 by Brent.Pease + Initial implementation of local notification test Change 3003005 on 2016/06/06 by Jeremiah.Waldron OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute Change 3004392 on 2016/06/07 by Jeremiah.Waldron Fixing typo in APL comment :) Change 3005768 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3005929 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3006151 on 2016/06/08 by Peter.Sauerbrei fix for LocalNotifications not available on TVOS #lockdown josh.adams Change 3006183 on 2016/06/08 by Brent.Pease Manual merge CL#3000242 from Release-4.12 into Dev-Platform #lockdown josh.adams Change 3006296 on 2016/06/08 by Peter.Sauerbrei submit an updated iPhonePackager and support DLLs #lockdown josh.adams Change 3006378 on 2016/06/08 by Peter.Sauerbrei fix for API update to RestorePurchases #codereview brent.pease #lockdown josh.adams #lockdown nick.penwarden [CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
#endif
->Split
(
FTabManager::NewStack()
->AddTab( "TestSuite2", ETabState::OpenedTab )
->AddTab( "TestSuite1", ETabState::OpenedTab )
->AddTab("RenderTransformManipulator", ETabState::OpenedTab)
->AddTab("WidgetGalleryTab", ETabState::OpenedTab)
)
)
#if PLATFORM_SUPPORTS_MULTIPLE_NATIVE_WINDOWS
->AddArea
(
// This area will get a 400x600 window at 10,10
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 2948319 on 2016/04/19 by Nick.Shin update zlib to v1.2.8 part 1 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2948661 on 2016/04/19 by Nick.Shin keep using old zlibs until they are recompiled with the newer version Change 2948737 on 2016/04/19 by Nick.Shin build warning fix Change 2949334 on 2016/04/20 by Nick.Shin fix library path for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set... Change 2951556 on 2016/04/21 by Nick.Shin static libs double checked #jira UE-29674 - Editor fails to open in Dev-Platform Change 2951559 on 2016/04/21 by Nick.Shin static libs double checked forgot these files - they were in another changelist #jira UE-29674 - Editor fails to open in Dev-Platform Change 2952411 on 2016/04/22 by Nick.Shin add win32 build targets for zlib openssl libcurl libwebsockets part 1 of 2: these are the C# build scripts Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login Change 3118163 on 2016/09/08 by Josh.Adams perm test 2, not a useful file at all Change 3121142 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3121150 on 2016/09/12 by Daniel.Lamb Added warning logs to help track down issue UE-33453. Change 3121201 on 2016/09/12 by Keith.Judge Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix. Change 3121302 on 2016/09/12 by Joe.Graf Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors Change 3121379 on 2016/09/12 by Dmitry.Rekman Linux: only link libraries that export needed symbols (UE-35720). - Fixes very long startup times of modular builds. - Includes PR #2778 by slonopotamus. #jira UE-35720 Change 3121383 on 2016/09/12 by Dmitry.Rekman Linux: added some missing _API declarations on symbols used externally. - Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't). Change 3121456 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3122939 on 2016/09/13 by Luke.Thatcher [PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service. - Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone. Change 3123040 on 2016/09/13 by Brent.Pease + Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now. Change 3123664 on 2016/09/13 by Nick.Shin this was originally checked into: release 4.13.1 bringing here to dev-platform -- original submit comments -- first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing" next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop jira UE-35363 - Huge game window when launching onto Safari 9.1.2 Change 3125282 on 2016/09/14 by Michael.Trepka Fixed iOS and tvOS code indexing in Xcode project Change 3126812 on 2016/09/15 by Josh.Adams Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes: - Added Parse function to JsonObject.cs to be able to parse a string - Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU() - Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME - Converted the PS4MallocCrash class into a generic one (that Wolf is now also using) - Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread - Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere - Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects - Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever) - Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool. - Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini) - Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain. - Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening - Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct. - Renamed a UT copy of a global function to not linker-conflict - Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4. - Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists) - Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority() - Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads? - Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move. Change 3126842 on 2016/09/15 by Michael.Trepka Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation. Change 3126956 on 2016/09/15 by Michael.Trepka Added support for compiling Vulkan shaders for Android on Mac Change 3127206 on 2016/09/15 by Michael.Trepka PR #2604: Remove some warnings. (Contributed by reapazor) Change 3127324 on 2016/09/15 by Michael.Trepka Allow third party dylibs on Mac to be loaded from plugin subfolders Change 3127924 on 2016/09/16 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3128369 on 2016/09/16 by Nick.Shin zlib 1.2.8 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128377 on 2016/09/16 by Nick.Shin openssl 1_0_2h headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128383 on 2016/09/16 by Nick.Shin libcurl 7_48_0 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128384 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128464 on 2016/09/16 by Nick.Shin webRTC rev.12643 NOTE: VS2015 - only Win64 is available - Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment NOTE: VS2013 - not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist - also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways FUTURE NOTE: - will continue to try to get VS2015 Win32 functional - and am working on trying to get VS2013 tested headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128500 on 2016/09/16 by Nick.Shin zlib 1.2.8 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128504 on 2016/09/16 by Nick.Shin openssl 1_0_2h - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128506 on 2016/09/16 by Nick.Shin libcurl 7_48_0 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128508 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128513 on 2016/09/16 by Nick.Shin webRTC rev.12643 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128602 on 2016/09/16 by Nick.Shin webRTC rev.9862 - Win64 VS2013 NOTE: - not tested (i'm working on getting a VS2013 pro license) - checking in for testing purposes WARNING: - VS2013 is no longer supported by webRTC latest headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128605 on 2016/09/16 by Nick.Shin re-enabling updated ThirdParySoftware libs: - zlib (v.1.2.8) - openssl (1.0.2h) - libcurl (7_48_0) - libwebsocket (v.1.7.4) - webRTC (rev.12643) to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build... Change 3128651 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 Change 3128704 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 - this time actually compiling it... Change 3128825 on 2016/09/16 by Dmitry.Rekman Linux: proper fix for too slow startup times (UE-35967). - Pull request #2793 by slonopotamus. - Now without stripping dependencies on libraries specified before. - Contains a work around for ld bug <2.25. Change 3128972 on 2016/09/16 by Nick.Shin fix to local build error. Change 3129283 on 2016/09/16 by Brent.Pease + Add Android local notification support based on existing system used for iOS + Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release Change 3129494 on 2016/09/17 by Nick.Shin fix CIS build errors Change 3129503 on 2016/09/17 by Dmitry.Rekman Fix Linux build (case sensitivity issue). Change 3129514 on 2016/09/17 by Nick.Shin fix CIS build errors for consoles - missing zlib include path special thanks to Dmitry.Rekman for pointing me in the right direction Change 3129647 on 2016/09/17 by Dmitry.Rekman Linux: fix non-unity build. Change 3131043 on 2016/09/19 by Nick.Shin archiving build instructions/steps when building: - zlib (v.1.2.8) win: #3128369 osx: #3128500 - openssl (1.0.2h) win: #3128377 osx: #3128504 - libcurl (7_48_0) win: #3128383 osx: #3128506 - libwebsocket (v.1.7.4) win: #3128384 osx: #3128508 - webRTC win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP osx: #3128513 Change 3132801 on 2016/09/20 by Dmitry.Rekman Linux: support specifying default OpenGL version via configs (UE-34777). - The first targeted RHI is going to be used. Change 3132905 on 2016/09/20 by Josh.Adams - Fixed up some paths with the WolfPlat rename Change 3133148 on 2016/09/20 by Josh.Adams - Only show UT EULA if PLATFORM_DESKTOP Change 3133152 on 2016/09/20 by Josh.Adams - Beginning support for applets. Disabled unless you have a special SDK with applet support. Change 3133169 on 2016/09/20 by Josh.Adams - Fixed issue with Wolf access but no SDK installed Change 3133344 on 2016/09/20 by Daniel.Lamb Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile. Added new flag to limit number of concurrent shader compiles. #test Cook QAGame, Cook Paragon Change 3133345 on 2016/09/20 by Daniel.Lamb FRedirectCollector collects string asset references all the time when running the editor. #test Cook paragon cook QAGame. Change 3133852 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. Change 3133875 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2) Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'. Change 3134544 on 2016/09/21 by Josh.Adams - Reduced UT textures for Wolf Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick FPS4Time::SystemTime now calculates the local machine time, instead of UTC. #jira UE-35170 Change 3135036 on 2016/09/21 by Michael.Trepka Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32 Change 3135292 on 2016/09/21 by Jeff.Campeau Change include order to favor the XDK edition specific headers where available. Change 3136414 on 2016/09/22 by Josh.Adams - Fixed a checkf() that had the case reversed #jira ue-36311 Change 3137082 on 2016/09/22 by Dmitry.Rekman Added support for Linux installed builds to 4.14 Change 3137220 on 2016/09/22 by Dmitry.Rekman Linux: do not rebuild hlslcc on each setup. - Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary. Change 3137227 on 2016/09/22 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3137259 on 2016/09/22 by Dmitry.Rekman Linux installed build: fix CIS (missed one .csproj) Change 3137290 on 2016/09/22 by Dmitry.Rekman Linux installed builds: fix for the resulting directory. Change 3137291 on 2016/09/22 by Chris.Babcock Restore texture filtering mode properly when movie played on Android #jira UE-36342 #ue4 #android Change 3137376 on 2016/09/22 by Dmitry.Rekman Linux: re-enabled crash handler stack smash protection. - Race condition in FRunnableThreadPThread has been previously fixed. Change 3138498 on 2016/09/23 by Dmitry.Rekman Linux: add missed package for installed builds. - mono-devel package for resgen2. Change 3138523 on 2016/09/23 by Dmitry.Rekman Linux: Update hlslcc now that we're not rebuilding it each time. Change 3138658 on 2016/09/23 by Josh.Adams - Moved UT's Social Plugin into NotForLicensees Change 3139042 on 2016/09/23 by Dmitry.Rekman Linux: more robust check of installed packages. - Also added mono-devel to the list of packages installed on 14.04. Change 3139674 on 2016/09/26 by Dmitry.Rekman Fix crash when editing widget blueprints (UE-35185). - Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping. - Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795). Change 3140203 on 2016/09/26 by Josh.Adams - Wolf Fix for SHIPPING Change 3140206 on 2016/09/26 by Josh.Adams - NEX work, still in progress Change 3140276 on 2016/09/26 by Josh.Adams - Fixed Wolf compile error Change 3140485 on 2016/09/26 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3140570 on 2016/09/26 by Dmitry.Rekman SDL2: Delete obsolete files. - We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space. Change 3140577 on 2016/09/26 by Dmitry.Rekman Fix CudaTest monolithic build. - Not the best fix, the better fix is to build against bundled libc++. Change 3141184 on 2016/09/27 by Keith.Judge Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert. #jira UE-35973 Change 3141623 on 2016/09/27 by Chris.Babcock Support hiding virtual keyboard on Android #jira UE-34201 #ue4 #android Change 3141887 on 2016/09/27 by Joe.Graf Added support for additional plugin directories that are specified by the .uproject file New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins Change 3141916 on 2016/09/27 by Josh.Adams - Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925) Change 3141926 on 2016/09/27 by Josh.Adams - Support for skipping Wolf user selector (-nologinui) Change 3141938 on 2016/09/27 by Chris.Babcock Allow Android media player to seek past 999ms (contributed by rcywongaa) #jira UE-36453 #PR #2797 #ue4 #android Change 3142207 on 2016/09/27 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3142219 on 2016/09/27 by Josh.Adams - Wolf PhysX 3.4 libs and includes Change 3142220 on 2016/09/27 by Josh.Adams - File that had to be fixed up after main merge (missed adding it to the huge integrate CL) Change 3142314 on 2016/09/27 by Chase.McAllister #jira UE-35011 fixes to some assets to remove redundancies/output log spam Change 3142510 on 2016/09/27 by Daniel.Lamb Fixed up resave lightmaps commandlet so that world transforms don't get applied twice. #jira UE-35942 Change 3142650 on 2016/09/27 by Chris.Babcock Android support for Linux by yaakuro - requires CodeWorks for Android Linux installed and OpenJDK 1.8 - need to set Android SDK paths manually in Project Settings #jira UE-32752 #jira UE-32753 #PR #2564 #PR #2565 #ue4 #android #linux Change 3142802 on 2016/09/27 by Dmitry.Rekman Upgrade to SDL 2.0.5-ish (still technically 2.0.4). - Upstream revision 10374:dccf51aee79b. - Merged all our changes hopefully. Change 3143075 on 2016/09/28 by Luke.Thatcher [RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro. #jira UE-33077 Change 3143219 on 2016/09/28 by Daniel.Lamb Added new is compiling function which tells you if it's really compiling instead of lying. If def out additional logging for debugging shader compilation issue for 4.14 release. Change 3143428 on 2016/09/28 by Luke.Thatcher [PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061 Change 3143488 on 2016/09/28 by Daniel.Lamb Changed defaults for skip cooking editor content to true. Change 3143526 on 2016/09/28 by Daniel.Lamb Increased the concurrent shader compile limit while in the cooker. #test Cook paragon Change 3143874 on 2016/09/28 by Chris.Babcock Read Android environment variables from .bashrc on Linux #jira UE-36565 #ue4 #android #linux Change 3143911 on 2016/09/28 by Dmitry.Rekman Fix SDL EGL API binding (UE-18979). - Contains PR #1398 by x414e54. - Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade. Change 3143929 on 2016/09/28 by Daniel.Lamb Removed some more temporary logging. #test Cook paragon Change 3143959 on 2016/09/28 by Jeff.Campeau Media Player for Xbox One Change 3143997 on 2016/09/28 by Dmitry.Rekman Linux: faster linking in Debug. - Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating. Change 3144004 on 2016/09/28 by Dmitry.Rekman Linux: make SCW dump core on crash in debug builds. - If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space). Change 3144007 on 2016/09/28 by Dmitry.Rekman Linux: Allow equals character in command line parameter value (UE-26406). - PR #2019 by bozzaro. - Allows passing parameters like -Switch=Key=Value. Change 3144042 on 2016/09/28 by Jeff.Campeau Add tag for DX12 support being experimental in target settings. #jira UE-36150 Change 3144068 on 2016/09/28 by Dmitry.Rekman Linux: enable using xgConsole in UAT (UE-28096). - PR #2144 by bozzaro. - Picks correct xgConsole binary. - Allegedly fixes crash in CombineXGEItemFile on mono. Change 3144120 on 2016/09/28 by Michael.Trepka Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/... Change 3144172 on 2016/09/28 by Chris.Babcock Add libpng 1.5.27 for Android #jira UE-36573 #ue4 #android Change 3144318 on 2016/09/28 by Chris.Babcock Correct logic for checking .bashrc on Linux #ue4 #android Change 3144331 on 2016/09/28 by Dmitry.Rekman Linux: repair ARM server builds. - Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1). Change 3144354 on 2016/09/28 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) this is intermediate, not fully working Change 3144368 on 2016/09/28 by Josh.Adams - Moved the new Social files into NFL Change 3144395 on 2016/09/28 by Chris.Babcock Add missing functions for AndroidWebBrowserWindow #ue4 #android Change 3144417 on 2016/09/28 by Josh.Adams - Probable fix for FWebBrowserWindow missing virtuals Change 3144438 on 2016/09/28 by Jeff.Campeau XDK updated to 160802 Change 3144569 on 2016/09/29 by Dmitry.Rekman Linux: allow a selectable clock source (UE-36564). - The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew. - Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there. #tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm). Change 3145108 on 2016/09/29 by Joe.Graf Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools) Change 3145245 on 2016/09/29 by Joe.Graf #wolf Checking in removal of plugin use on Win64 per Josh's request Change 3145514 on 2016/09/29 by Will.Fissler Updated Mac Info.plist files to disable high DPI on macOS 10.12 Change 3145538 on 2016/09/29 by Josh.Adams - Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots. Change 3145540 on 2016/09/29 by Josh.Adams - Fix for checking some Wolf dev tool installation existence - Fix for various Wolf build issues - Fix for Wolf devices not showing up in Launch on Change 3145542 on 2016/09/29 by Josh.Adams - Pulled over Wolf changes from Wolf branch into Dev-Platform Change 3145572 on 2016/09/29 by Josh.Adams - Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people. #jira UE-36591 Change 3145769 on 2016/09/29 by Chris.Babcock Remove duplicate platforms from deploy list in UFE #jira UE-36636 #ue4 Change 3146061 on 2016/09/29 by Chris.Babcock Linux: be less spammy in log when launching external procs #jira UE-36638 #ue4 #linux Change 3146208 on 2016/09/29 by Dmitry.Rekman Linux: fix PhysX crash (UE-36613). - PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above. - This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun. #jira UE-36613 Change 3146476 on 2016/09/30 by Josh.Adams - Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose Change 3146554 on 2016/09/30 by Josh.Adams - Removed another wolf secret log Change 3146626 on 2016/09/30 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3146712 on 2016/09/30 by Josh.Adams - Fixed case for building Android on Linux #jira #UE-36652 Change 3146844 on 2016/09/30 by Josh.Adams - Removed ES2 shader compiling from TVOS, and force Metal compiling #jira UE-36306 Change 3146865 on 2016/09/30 by Daniel.Lamb Removed temp logging for materials #test Launch on paragon Change 3146874 on 2016/09/30 by Dmitry.Rekman Linux: add rpath for libTextureConverter.so (UE-36620). Change 3147030 on 2016/09/30 by Josh.Adams - Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks #jira UE-36623 Change 3147151 on 2016/09/30 by Josh.Adams - Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling? Change 3147621 on 2016/09/30 by Michael.Trepka Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac Change 3147712 on 2016/09/30 by Josh.Adams - Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform. #jira UE-36225 Change 3147725 on 2016/09/30 by Josh.Adams - Fixed yet another Wolf log for people with Wolf access but no SDK [CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
FTabManager::NewArea(400 * DPIScaleFactor, 600 * DPIScaleFactor)
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177) ========================== MAJOR FEATURES + CHANGES ========================== Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login #lockdown josh.adams Change 2970373 on 2016/05/09 by Lee.Clark PS4 - Fix NumInstances not getting reset after DrawIndirect calls Change 2972873 on 2016/05/10 by Michael.Trepka Correct initial position for SlateViewer windows on Mac Change 2974363 on 2016/05/11 by Mark.Satterthwaite Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect. Change 2975921 on 2016/05/12 by Michael.Trepka Removed unused AdjustWindowRegion declaration from LinuxWindow.h #codereview Dmitry.Rekman Change 2977002 on 2016/05/13 by Michael.Trepka Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready #codereview Ben.Marsh Change 2977337 on 2016/05/13 by Brent.Pease UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error + Prevent illegal characters from being entered in the packaging UI + Report an error from iPhonePackager if a illegal bundle id is specified + Convert special characters to XML equivalents - Correctly check for the presence of iTunes 12 when packaging iOS games on Windows - Improve ios certificate and provision message in package settings UI #codereview peter.sauerbrei Change 2977509 on 2016/05/13 by Brent.Pease + Fix mac compile error Change 2978036 on 2016/05/14 by Mark.Satterthwaite One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN. #jira UE-30777 Change 2978037 on 2016/05/14 by Mark.Satterthwaite Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago. Change 2978333 on 2016/05/16 by Lee.Clark Fix packaging of non-code projects when plugins are enabled #codereview Peter.Sauerbrei Change 2978780 on 2016/05/16 by Mark.Satterthwaite Reduce temporary allocations required to set uniform parameters in Metal. Change 2979680 on 2016/05/16 by Nick.Shin editor's HTML5 platform settings was missing due to the emscripten SDK move should have been included with CL: #2946251 Change 2979681 on 2016/05/16 by Nick.Shin cleaned up websocket processing for HTML5 #jira UE-13657 - HTML5 plugin OnRawRecieve overflow Change 2979701 on 2016/05/16 by Brent.Pease UE-28421 - Message box cannot be closed after accessing the home screen on iOS + Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution Change 2980766 on 2016/05/17 by Jeremiah.Waldron Adding Android build support for HarfBuzz - using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them - Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config> Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly #jira UE-28586 #codereview chris.babcock Change 2980953 on 2016/05/17 by Jeremiah.Waldron Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo #jira UE-28586 Change 2981039 on 2016/05/17 by Jeff.Campeau ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support) Change 2981054 on 2016/05/17 by Jeff.Campeau Enable Live OSS for Orion on Xbox One Change 2981553 on 2016/05/18 by Jeff.Campeau Enable Oodle for Xbox One Change 2981555 on 2016/05/18 by Jeff.Campeau Scalability settings for Xbox One Change 2981774 on 2016/05/18 by Keith.Judge Xbox One - Duplicating Movie Player fix from 4.12. Change 2981789 on 2016/05/18 by Keith.Judge Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12. Change 2981802 on 2016/05/18 by Keith.Judge Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12. Change 2981875 on 2016/05/18 by Keith.Judge Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12. Change 2981900 on 2016/05/18 by Keith.Judge Xbox One - D3D11Query refactor. Duplicated from 4.12 Change 2981945 on 2016/05/18 by Nick.Shin filled out response headers for HTML5 platform #jira UE-26047 - HTML5 HTTP Response Headers not implemented Change 2981981 on 2016/05/18 by Lee.Clark PS4 - Fix COTF not updating files #codereview Daniel.Lamb Change 2982246 on 2016/05/18 by Michael.Trepka Fixed Mono compile errors in UT build scripts Change 2983869 on 2016/05/19 by Mark.Satterthwaite Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures. #jira UE-29557 Change 2983871 on 2016/05/19 by Mark.Satterthwaite Pool Metal texture update buffers to reduce churn. Change 2983892 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors. Change 2983898 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists. Change 2983911 on 2016/05/19 by Mark.Satterthwaite Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen. Change 2983916 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected. Change 2984874 on 2016/05/20 by Keith.Judge Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps. #jira UEPLAT-1295 Change 2985446 on 2016/05/20 by Mark.Satterthwaite Remove the non-functional -metaldebug option from MetalRHI. Change 2985827 on 2016/05/20 by Nick.Shin call EndSession() onbeforeunload() note: API CHANGE - HTML5JavaScripteFx.{js,h} - UE_MakeHTTPDataRequest() #jira UE-22285 - Session End events are not generated for HTML5 Change 2986013 on 2016/05/20 by Jeremiah.Waldron PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio) Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo Pulled from Release-4.12 CL #jira UE-30782 #codereview chris.babcock, Peter.Sauerbrei Change 2986057 on 2016/05/20 by Mark.Satterthwaite Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI. Change 2986059 on 2016/05/20 by Mark.Satterthwaite Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes). Change 2986060 on 2016/05/20 by Mark.Satterthwaite Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level. Change 2986063 on 2016/05/20 by Mark.Satterthwaite Missing change from previous CL. Change 2986066 on 2016/05/20 by Mark.Satterthwaite More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame. Change 2986455 on 2016/05/23 by Keith.Judge Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler. Change 2986886 on 2016/05/23 by Mark.Satterthwaite Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier. Change 2986955 on 2016/05/23 by Brent.Pease + Do not error out if "[PROJECT_NAME]" is in the bundle ID #codereview peter.sauerbrei Change 2987304 on 2016/05/23 by Chris.Babcock Remove old Android platforms #ue4 #android #codeview Josh.Adams Change 2987571 on 2016/05/23 by Mark.Satterthwaite Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass) #jira UE-31111 Change 2987591 on 2016/05/23 by Mark.Satterthwaite Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5. Change 2987679 on 2016/05/23 by Mark.Satterthwaite Re-enable tiled reflections on Nvidia by default now that they work. Change 2987799 on 2016/05/24 by Mark.Satterthwaite Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac). Change 2989395 on 2016/05/25 by Lee.Clark PS4 - Fix shader output / render target format mismatch for sparse MRT. Change 2990003 on 2016/05/25 by Jeremiah.Waldron When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function. Change 2990393 on 2016/05/25 by Mark.Satterthwaite Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal... Change 2990516 on 2016/05/25 by Brent.Pease + UEPLAT-1294 - Support for local notifications + UEPLAT-1254 - Add BP event for device orientation change + Added a new class based on UGameInstance for mobile device callbacks + Ensured IOSAppDelegate.cpp follows convention for lambda functions Change 2991361 on 2016/05/26 by Jeremiah.Waldron Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it Change 2992450 on 2016/05/27 by Mark.Satterthwaite Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders. Change 2993027 on 2016/05/27 by Mark.Satterthwaite Fix typo for new CFLAG_BoundsChecking enumeration value. Change 2993594 on 2016/05/27 by Mark.Satterthwaite Build fix - check not assert... Change 2993595 on 2016/05/27 by Mark.Satterthwaite Fix typo from Xcode hang... Change 2993614 on 2016/05/28 by Mark.Satterthwaite At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers. Change 2993747 on 2016/05/28 by Mark.Satterthwaite Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used. Change 2994256 on 2016/05/31 by Lee.Clark PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working. #codereview Chad.Taylor,Aaron.McLeran Change 2994281 on 2016/05/31 by Rolando.Caloca DP - Allow hlslcc to process type casts containing the 'const' keyword - it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile. #codereview Mark.Satterthwaite, Dmitry.Rekman #jira UE-31411 Change 2994467 on 2016/05/31 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 2994493 on 2016/05/31 by Daniel.Lamb Fixed issue with DDC commandlet not caching things from the startup packages list. Change 2994644 on 2016/05/31 by Mark.Satterthwaite Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project. Change 2996074 on 2016/06/01 by Lee.Clark PS4 - Fix GS mode not getting disabled when using parallel contexts. #codereview Marcus.Wassmer Change 2996129 on 2016/06/01 by Brent.Pease Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch. Change 2996130 on 2016/06/01 by Jeremiah.Waldron PR #2387 part 2 (Contributed by gameDNAstudio) Adding ability to consume purchases during GooglePlay RestorePurchases This also touches IOS due to changes to base classes and function signatures #codereview chris.babcock, Peter.Sauerbrei Change 2996441 on 2016/06/01 by Jeremiah.Waldron Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio) Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function. #codereview chris.babcock Change 2996514 on 2016/06/01 by Jeff.Campeau Fix merge issue from main #jira UE-31502 Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick https://jira.ol.epicgames.net/browse/UE-31446 Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed. Renamed handleReserveFailed to handleReserveFailedLightweight Change 2997235 on 2016/06/01 by Jeremiah.Waldron RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node. The IAP product in Match3 is non-consumable so just passing an empty array where necessary Change 2997241 on 2016/06/01 by Jeremiah.Waldron OnlineSubsystemGameCircle Plugin - Leaderboards - Achievements - Friends - IAP - External UI Interface - Runtime Settings in Project Settings Plugin section when plugin is enabled - Disabled by default #jira UEPLAT-105 #codereview chris.babcock Change 2997618 on 2016/06/02 by Lee.Clark #UE4Docs: Removed PS4MapFileUtil info Change 2997840 on 2016/06/02 by Jeremiah.Waldron Removing trace logging from OnlineSubsystemGameCircle_APL Change 2998754 on 2016/06/02 by Brent.Pease Change BlueprintMobileLibrary to BlueprintPlatformLibrary Change 3000762 on 2016/06/03 by Jeff.Campeau Add example rating info to ShooterGame Change 3001037 on 2016/06/04 by Brent.Pease + Add ui screens for delegate test, local notification test, and iap test + Implement delegate test Change 3001250 on 2016/06/05 by Brent.Pease + Initial pass at IAP test screen Change 3001639 on 2016/06/06 by Jeff.Campeau Fix Xbox One build issue with DX12 #codereview Zabir.Hoque Change 3002574 on 2016/06/06 by Jeremiah.Waldron Adding Android Install Location to Android platform runtime settings and manifest generation Change 3002780 on 2016/06/06 by Brent.Pease + Initial implementation of local notification test Change 3003005 on 2016/06/06 by Jeremiah.Waldron OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute Change 3004392 on 2016/06/07 by Jeremiah.Waldron Fixing typo in APL comment :) Change 3005768 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3005929 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3006151 on 2016/06/08 by Peter.Sauerbrei fix for LocalNotifications not available on TVOS #lockdown josh.adams Change 3006183 on 2016/06/08 by Brent.Pease Manual merge CL#3000242 from Release-4.12 into Dev-Platform #lockdown josh.adams Change 3006296 on 2016/06/08 by Peter.Sauerbrei submit an updated iPhonePackager and support DLLs #lockdown josh.adams Change 3006378 on 2016/06/08 by Peter.Sauerbrei fix for API update to RestorePurchases #codereview brent.pease #lockdown josh.adams #lockdown nick.penwarden [CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
#if PLATFORM_MAC
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 2948319 on 2016/04/19 by Nick.Shin update zlib to v1.2.8 part 1 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2948661 on 2016/04/19 by Nick.Shin keep using old zlibs until they are recompiled with the newer version Change 2948737 on 2016/04/19 by Nick.Shin build warning fix Change 2949334 on 2016/04/20 by Nick.Shin fix library path for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set... Change 2951556 on 2016/04/21 by Nick.Shin static libs double checked #jira UE-29674 - Editor fails to open in Dev-Platform Change 2951559 on 2016/04/21 by Nick.Shin static libs double checked forgot these files - they were in another changelist #jira UE-29674 - Editor fails to open in Dev-Platform Change 2952411 on 2016/04/22 by Nick.Shin add win32 build targets for zlib openssl libcurl libwebsockets part 1 of 2: these are the C# build scripts Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login Change 3118163 on 2016/09/08 by Josh.Adams perm test 2, not a useful file at all Change 3121142 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3121150 on 2016/09/12 by Daniel.Lamb Added warning logs to help track down issue UE-33453. Change 3121201 on 2016/09/12 by Keith.Judge Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix. Change 3121302 on 2016/09/12 by Joe.Graf Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors Change 3121379 on 2016/09/12 by Dmitry.Rekman Linux: only link libraries that export needed symbols (UE-35720). - Fixes very long startup times of modular builds. - Includes PR #2778 by slonopotamus. #jira UE-35720 Change 3121383 on 2016/09/12 by Dmitry.Rekman Linux: added some missing _API declarations on symbols used externally. - Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't). Change 3121456 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3122939 on 2016/09/13 by Luke.Thatcher [PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service. - Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone. Change 3123040 on 2016/09/13 by Brent.Pease + Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now. Change 3123664 on 2016/09/13 by Nick.Shin this was originally checked into: release 4.13.1 bringing here to dev-platform -- original submit comments -- first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing" next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop jira UE-35363 - Huge game window when launching onto Safari 9.1.2 Change 3125282 on 2016/09/14 by Michael.Trepka Fixed iOS and tvOS code indexing in Xcode project Change 3126812 on 2016/09/15 by Josh.Adams Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes: - Added Parse function to JsonObject.cs to be able to parse a string - Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU() - Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME - Converted the PS4MallocCrash class into a generic one (that Wolf is now also using) - Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread - Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere - Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects - Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever) - Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool. - Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini) - Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain. - Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening - Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct. - Renamed a UT copy of a global function to not linker-conflict - Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4. - Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists) - Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority() - Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads? - Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move. Change 3126842 on 2016/09/15 by Michael.Trepka Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation. Change 3126956 on 2016/09/15 by Michael.Trepka Added support for compiling Vulkan shaders for Android on Mac Change 3127206 on 2016/09/15 by Michael.Trepka PR #2604: Remove some warnings. (Contributed by reapazor) Change 3127324 on 2016/09/15 by Michael.Trepka Allow third party dylibs on Mac to be loaded from plugin subfolders Change 3127924 on 2016/09/16 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3128369 on 2016/09/16 by Nick.Shin zlib 1.2.8 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128377 on 2016/09/16 by Nick.Shin openssl 1_0_2h headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128383 on 2016/09/16 by Nick.Shin libcurl 7_48_0 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128384 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128464 on 2016/09/16 by Nick.Shin webRTC rev.12643 NOTE: VS2015 - only Win64 is available - Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment NOTE: VS2013 - not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist - also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways FUTURE NOTE: - will continue to try to get VS2015 Win32 functional - and am working on trying to get VS2013 tested headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128500 on 2016/09/16 by Nick.Shin zlib 1.2.8 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128504 on 2016/09/16 by Nick.Shin openssl 1_0_2h - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128506 on 2016/09/16 by Nick.Shin libcurl 7_48_0 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128508 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128513 on 2016/09/16 by Nick.Shin webRTC rev.12643 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128602 on 2016/09/16 by Nick.Shin webRTC rev.9862 - Win64 VS2013 NOTE: - not tested (i'm working on getting a VS2013 pro license) - checking in for testing purposes WARNING: - VS2013 is no longer supported by webRTC latest headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128605 on 2016/09/16 by Nick.Shin re-enabling updated ThirdParySoftware libs: - zlib (v.1.2.8) - openssl (1.0.2h) - libcurl (7_48_0) - libwebsocket (v.1.7.4) - webRTC (rev.12643) to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build... Change 3128651 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 Change 3128704 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 - this time actually compiling it... Change 3128825 on 2016/09/16 by Dmitry.Rekman Linux: proper fix for too slow startup times (UE-35967). - Pull request #2793 by slonopotamus. - Now without stripping dependencies on libraries specified before. - Contains a work around for ld bug <2.25. Change 3128972 on 2016/09/16 by Nick.Shin fix to local build error. Change 3129283 on 2016/09/16 by Brent.Pease + Add Android local notification support based on existing system used for iOS + Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release Change 3129494 on 2016/09/17 by Nick.Shin fix CIS build errors Change 3129503 on 2016/09/17 by Dmitry.Rekman Fix Linux build (case sensitivity issue). Change 3129514 on 2016/09/17 by Nick.Shin fix CIS build errors for consoles - missing zlib include path special thanks to Dmitry.Rekman for pointing me in the right direction Change 3129647 on 2016/09/17 by Dmitry.Rekman Linux: fix non-unity build. Change 3131043 on 2016/09/19 by Nick.Shin archiving build instructions/steps when building: - zlib (v.1.2.8) win: #3128369 osx: #3128500 - openssl (1.0.2h) win: #3128377 osx: #3128504 - libcurl (7_48_0) win: #3128383 osx: #3128506 - libwebsocket (v.1.7.4) win: #3128384 osx: #3128508 - webRTC win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP osx: #3128513 Change 3132801 on 2016/09/20 by Dmitry.Rekman Linux: support specifying default OpenGL version via configs (UE-34777). - The first targeted RHI is going to be used. Change 3132905 on 2016/09/20 by Josh.Adams - Fixed up some paths with the WolfPlat rename Change 3133148 on 2016/09/20 by Josh.Adams - Only show UT EULA if PLATFORM_DESKTOP Change 3133152 on 2016/09/20 by Josh.Adams - Beginning support for applets. Disabled unless you have a special SDK with applet support. Change 3133169 on 2016/09/20 by Josh.Adams - Fixed issue with Wolf access but no SDK installed Change 3133344 on 2016/09/20 by Daniel.Lamb Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile. Added new flag to limit number of concurrent shader compiles. #test Cook QAGame, Cook Paragon Change 3133345 on 2016/09/20 by Daniel.Lamb FRedirectCollector collects string asset references all the time when running the editor. #test Cook paragon cook QAGame. Change 3133852 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. Change 3133875 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2) Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'. Change 3134544 on 2016/09/21 by Josh.Adams - Reduced UT textures for Wolf Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick FPS4Time::SystemTime now calculates the local machine time, instead of UTC. #jira UE-35170 Change 3135036 on 2016/09/21 by Michael.Trepka Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32 Change 3135292 on 2016/09/21 by Jeff.Campeau Change include order to favor the XDK edition specific headers where available. Change 3136414 on 2016/09/22 by Josh.Adams - Fixed a checkf() that had the case reversed #jira ue-36311 Change 3137082 on 2016/09/22 by Dmitry.Rekman Added support for Linux installed builds to 4.14 Change 3137220 on 2016/09/22 by Dmitry.Rekman Linux: do not rebuild hlslcc on each setup. - Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary. Change 3137227 on 2016/09/22 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3137259 on 2016/09/22 by Dmitry.Rekman Linux installed build: fix CIS (missed one .csproj) Change 3137290 on 2016/09/22 by Dmitry.Rekman Linux installed builds: fix for the resulting directory. Change 3137291 on 2016/09/22 by Chris.Babcock Restore texture filtering mode properly when movie played on Android #jira UE-36342 #ue4 #android Change 3137376 on 2016/09/22 by Dmitry.Rekman Linux: re-enabled crash handler stack smash protection. - Race condition in FRunnableThreadPThread has been previously fixed. Change 3138498 on 2016/09/23 by Dmitry.Rekman Linux: add missed package for installed builds. - mono-devel package for resgen2. Change 3138523 on 2016/09/23 by Dmitry.Rekman Linux: Update hlslcc now that we're not rebuilding it each time. Change 3138658 on 2016/09/23 by Josh.Adams - Moved UT's Social Plugin into NotForLicensees Change 3139042 on 2016/09/23 by Dmitry.Rekman Linux: more robust check of installed packages. - Also added mono-devel to the list of packages installed on 14.04. Change 3139674 on 2016/09/26 by Dmitry.Rekman Fix crash when editing widget blueprints (UE-35185). - Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping. - Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795). Change 3140203 on 2016/09/26 by Josh.Adams - Wolf Fix for SHIPPING Change 3140206 on 2016/09/26 by Josh.Adams - NEX work, still in progress Change 3140276 on 2016/09/26 by Josh.Adams - Fixed Wolf compile error Change 3140485 on 2016/09/26 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3140570 on 2016/09/26 by Dmitry.Rekman SDL2: Delete obsolete files. - We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space. Change 3140577 on 2016/09/26 by Dmitry.Rekman Fix CudaTest monolithic build. - Not the best fix, the better fix is to build against bundled libc++. Change 3141184 on 2016/09/27 by Keith.Judge Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert. #jira UE-35973 Change 3141623 on 2016/09/27 by Chris.Babcock Support hiding virtual keyboard on Android #jira UE-34201 #ue4 #android Change 3141887 on 2016/09/27 by Joe.Graf Added support for additional plugin directories that are specified by the .uproject file New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins Change 3141916 on 2016/09/27 by Josh.Adams - Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925) Change 3141926 on 2016/09/27 by Josh.Adams - Support for skipping Wolf user selector (-nologinui) Change 3141938 on 2016/09/27 by Chris.Babcock Allow Android media player to seek past 999ms (contributed by rcywongaa) #jira UE-36453 #PR #2797 #ue4 #android Change 3142207 on 2016/09/27 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3142219 on 2016/09/27 by Josh.Adams - Wolf PhysX 3.4 libs and includes Change 3142220 on 2016/09/27 by Josh.Adams - File that had to be fixed up after main merge (missed adding it to the huge integrate CL) Change 3142314 on 2016/09/27 by Chase.McAllister #jira UE-35011 fixes to some assets to remove redundancies/output log spam Change 3142510 on 2016/09/27 by Daniel.Lamb Fixed up resave lightmaps commandlet so that world transforms don't get applied twice. #jira UE-35942 Change 3142650 on 2016/09/27 by Chris.Babcock Android support for Linux by yaakuro - requires CodeWorks for Android Linux installed and OpenJDK 1.8 - need to set Android SDK paths manually in Project Settings #jira UE-32752 #jira UE-32753 #PR #2564 #PR #2565 #ue4 #android #linux Change 3142802 on 2016/09/27 by Dmitry.Rekman Upgrade to SDL 2.0.5-ish (still technically 2.0.4). - Upstream revision 10374:dccf51aee79b. - Merged all our changes hopefully. Change 3143075 on 2016/09/28 by Luke.Thatcher [RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro. #jira UE-33077 Change 3143219 on 2016/09/28 by Daniel.Lamb Added new is compiling function which tells you if it's really compiling instead of lying. If def out additional logging for debugging shader compilation issue for 4.14 release. Change 3143428 on 2016/09/28 by Luke.Thatcher [PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061 Change 3143488 on 2016/09/28 by Daniel.Lamb Changed defaults for skip cooking editor content to true. Change 3143526 on 2016/09/28 by Daniel.Lamb Increased the concurrent shader compile limit while in the cooker. #test Cook paragon Change 3143874 on 2016/09/28 by Chris.Babcock Read Android environment variables from .bashrc on Linux #jira UE-36565 #ue4 #android #linux Change 3143911 on 2016/09/28 by Dmitry.Rekman Fix SDL EGL API binding (UE-18979). - Contains PR #1398 by x414e54. - Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade. Change 3143929 on 2016/09/28 by Daniel.Lamb Removed some more temporary logging. #test Cook paragon Change 3143959 on 2016/09/28 by Jeff.Campeau Media Player for Xbox One Change 3143997 on 2016/09/28 by Dmitry.Rekman Linux: faster linking in Debug. - Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating. Change 3144004 on 2016/09/28 by Dmitry.Rekman Linux: make SCW dump core on crash in debug builds. - If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space). Change 3144007 on 2016/09/28 by Dmitry.Rekman Linux: Allow equals character in command line parameter value (UE-26406). - PR #2019 by bozzaro. - Allows passing parameters like -Switch=Key=Value. Change 3144042 on 2016/09/28 by Jeff.Campeau Add tag for DX12 support being experimental in target settings. #jira UE-36150 Change 3144068 on 2016/09/28 by Dmitry.Rekman Linux: enable using xgConsole in UAT (UE-28096). - PR #2144 by bozzaro. - Picks correct xgConsole binary. - Allegedly fixes crash in CombineXGEItemFile on mono. Change 3144120 on 2016/09/28 by Michael.Trepka Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/... Change 3144172 on 2016/09/28 by Chris.Babcock Add libpng 1.5.27 for Android #jira UE-36573 #ue4 #android Change 3144318 on 2016/09/28 by Chris.Babcock Correct logic for checking .bashrc on Linux #ue4 #android Change 3144331 on 2016/09/28 by Dmitry.Rekman Linux: repair ARM server builds. - Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1). Change 3144354 on 2016/09/28 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) this is intermediate, not fully working Change 3144368 on 2016/09/28 by Josh.Adams - Moved the new Social files into NFL Change 3144395 on 2016/09/28 by Chris.Babcock Add missing functions for AndroidWebBrowserWindow #ue4 #android Change 3144417 on 2016/09/28 by Josh.Adams - Probable fix for FWebBrowserWindow missing virtuals Change 3144438 on 2016/09/28 by Jeff.Campeau XDK updated to 160802 Change 3144569 on 2016/09/29 by Dmitry.Rekman Linux: allow a selectable clock source (UE-36564). - The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew. - Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there. #tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm). Change 3145108 on 2016/09/29 by Joe.Graf Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools) Change 3145245 on 2016/09/29 by Joe.Graf #wolf Checking in removal of plugin use on Win64 per Josh's request Change 3145514 on 2016/09/29 by Will.Fissler Updated Mac Info.plist files to disable high DPI on macOS 10.12 Change 3145538 on 2016/09/29 by Josh.Adams - Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots. Change 3145540 on 2016/09/29 by Josh.Adams - Fix for checking some Wolf dev tool installation existence - Fix for various Wolf build issues - Fix for Wolf devices not showing up in Launch on Change 3145542 on 2016/09/29 by Josh.Adams - Pulled over Wolf changes from Wolf branch into Dev-Platform Change 3145572 on 2016/09/29 by Josh.Adams - Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people. #jira UE-36591 Change 3145769 on 2016/09/29 by Chris.Babcock Remove duplicate platforms from deploy list in UFE #jira UE-36636 #ue4 Change 3146061 on 2016/09/29 by Chris.Babcock Linux: be less spammy in log when launching external procs #jira UE-36638 #ue4 #linux Change 3146208 on 2016/09/29 by Dmitry.Rekman Linux: fix PhysX crash (UE-36613). - PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above. - This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun. #jira UE-36613 Change 3146476 on 2016/09/30 by Josh.Adams - Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose Change 3146554 on 2016/09/30 by Josh.Adams - Removed another wolf secret log Change 3146626 on 2016/09/30 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3146712 on 2016/09/30 by Josh.Adams - Fixed case for building Android on Linux #jira #UE-36652 Change 3146844 on 2016/09/30 by Josh.Adams - Removed ES2 shader compiling from TVOS, and force Metal compiling #jira UE-36306 Change 3146865 on 2016/09/30 by Daniel.Lamb Removed temp logging for materials #test Launch on paragon Change 3146874 on 2016/09/30 by Dmitry.Rekman Linux: add rpath for libTextureConverter.so (UE-36620). Change 3147030 on 2016/09/30 by Josh.Adams - Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks #jira UE-36623 Change 3147151 on 2016/09/30 by Josh.Adams - Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling? Change 3147621 on 2016/09/30 by Michael.Trepka Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac Change 3147712 on 2016/09/30 by Josh.Adams - Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform. #jira UE-36225 Change 3147725 on 2016/09/30 by Josh.Adams - Fixed yet another Wolf log for people with Wolf access but no SDK [CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
->SetWindow( FVector2D(10 * DPIScaleFactor, 32 * DPIScaleFactor), false )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177) ========================== MAJOR FEATURES + CHANGES ========================== Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login #lockdown josh.adams Change 2970373 on 2016/05/09 by Lee.Clark PS4 - Fix NumInstances not getting reset after DrawIndirect calls Change 2972873 on 2016/05/10 by Michael.Trepka Correct initial position for SlateViewer windows on Mac Change 2974363 on 2016/05/11 by Mark.Satterthwaite Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect. Change 2975921 on 2016/05/12 by Michael.Trepka Removed unused AdjustWindowRegion declaration from LinuxWindow.h #codereview Dmitry.Rekman Change 2977002 on 2016/05/13 by Michael.Trepka Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready #codereview Ben.Marsh Change 2977337 on 2016/05/13 by Brent.Pease UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error + Prevent illegal characters from being entered in the packaging UI + Report an error from iPhonePackager if a illegal bundle id is specified + Convert special characters to XML equivalents - Correctly check for the presence of iTunes 12 when packaging iOS games on Windows - Improve ios certificate and provision message in package settings UI #codereview peter.sauerbrei Change 2977509 on 2016/05/13 by Brent.Pease + Fix mac compile error Change 2978036 on 2016/05/14 by Mark.Satterthwaite One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN. #jira UE-30777 Change 2978037 on 2016/05/14 by Mark.Satterthwaite Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago. Change 2978333 on 2016/05/16 by Lee.Clark Fix packaging of non-code projects when plugins are enabled #codereview Peter.Sauerbrei Change 2978780 on 2016/05/16 by Mark.Satterthwaite Reduce temporary allocations required to set uniform parameters in Metal. Change 2979680 on 2016/05/16 by Nick.Shin editor's HTML5 platform settings was missing due to the emscripten SDK move should have been included with CL: #2946251 Change 2979681 on 2016/05/16 by Nick.Shin cleaned up websocket processing for HTML5 #jira UE-13657 - HTML5 plugin OnRawRecieve overflow Change 2979701 on 2016/05/16 by Brent.Pease UE-28421 - Message box cannot be closed after accessing the home screen on iOS + Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution Change 2980766 on 2016/05/17 by Jeremiah.Waldron Adding Android build support for HarfBuzz - using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them - Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config> Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly #jira UE-28586 #codereview chris.babcock Change 2980953 on 2016/05/17 by Jeremiah.Waldron Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo #jira UE-28586 Change 2981039 on 2016/05/17 by Jeff.Campeau ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support) Change 2981054 on 2016/05/17 by Jeff.Campeau Enable Live OSS for Orion on Xbox One Change 2981553 on 2016/05/18 by Jeff.Campeau Enable Oodle for Xbox One Change 2981555 on 2016/05/18 by Jeff.Campeau Scalability settings for Xbox One Change 2981774 on 2016/05/18 by Keith.Judge Xbox One - Duplicating Movie Player fix from 4.12. Change 2981789 on 2016/05/18 by Keith.Judge Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12. Change 2981802 on 2016/05/18 by Keith.Judge Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12. Change 2981875 on 2016/05/18 by Keith.Judge Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12. Change 2981900 on 2016/05/18 by Keith.Judge Xbox One - D3D11Query refactor. Duplicated from 4.12 Change 2981945 on 2016/05/18 by Nick.Shin filled out response headers for HTML5 platform #jira UE-26047 - HTML5 HTTP Response Headers not implemented Change 2981981 on 2016/05/18 by Lee.Clark PS4 - Fix COTF not updating files #codereview Daniel.Lamb Change 2982246 on 2016/05/18 by Michael.Trepka Fixed Mono compile errors in UT build scripts Change 2983869 on 2016/05/19 by Mark.Satterthwaite Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures. #jira UE-29557 Change 2983871 on 2016/05/19 by Mark.Satterthwaite Pool Metal texture update buffers to reduce churn. Change 2983892 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors. Change 2983898 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists. Change 2983911 on 2016/05/19 by Mark.Satterthwaite Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen. Change 2983916 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected. Change 2984874 on 2016/05/20 by Keith.Judge Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps. #jira UEPLAT-1295 Change 2985446 on 2016/05/20 by Mark.Satterthwaite Remove the non-functional -metaldebug option from MetalRHI. Change 2985827 on 2016/05/20 by Nick.Shin call EndSession() onbeforeunload() note: API CHANGE - HTML5JavaScripteFx.{js,h} - UE_MakeHTTPDataRequest() #jira UE-22285 - Session End events are not generated for HTML5 Change 2986013 on 2016/05/20 by Jeremiah.Waldron PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio) Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo Pulled from Release-4.12 CL #jira UE-30782 #codereview chris.babcock, Peter.Sauerbrei Change 2986057 on 2016/05/20 by Mark.Satterthwaite Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI. Change 2986059 on 2016/05/20 by Mark.Satterthwaite Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes). Change 2986060 on 2016/05/20 by Mark.Satterthwaite Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level. Change 2986063 on 2016/05/20 by Mark.Satterthwaite Missing change from previous CL. Change 2986066 on 2016/05/20 by Mark.Satterthwaite More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame. Change 2986455 on 2016/05/23 by Keith.Judge Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler. Change 2986886 on 2016/05/23 by Mark.Satterthwaite Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier. Change 2986955 on 2016/05/23 by Brent.Pease + Do not error out if "[PROJECT_NAME]" is in the bundle ID #codereview peter.sauerbrei Change 2987304 on 2016/05/23 by Chris.Babcock Remove old Android platforms #ue4 #android #codeview Josh.Adams Change 2987571 on 2016/05/23 by Mark.Satterthwaite Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass) #jira UE-31111 Change 2987591 on 2016/05/23 by Mark.Satterthwaite Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5. Change 2987679 on 2016/05/23 by Mark.Satterthwaite Re-enable tiled reflections on Nvidia by default now that they work. Change 2987799 on 2016/05/24 by Mark.Satterthwaite Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac). Change 2989395 on 2016/05/25 by Lee.Clark PS4 - Fix shader output / render target format mismatch for sparse MRT. Change 2990003 on 2016/05/25 by Jeremiah.Waldron When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function. Change 2990393 on 2016/05/25 by Mark.Satterthwaite Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal... Change 2990516 on 2016/05/25 by Brent.Pease + UEPLAT-1294 - Support for local notifications + UEPLAT-1254 - Add BP event for device orientation change + Added a new class based on UGameInstance for mobile device callbacks + Ensured IOSAppDelegate.cpp follows convention for lambda functions Change 2991361 on 2016/05/26 by Jeremiah.Waldron Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it Change 2992450 on 2016/05/27 by Mark.Satterthwaite Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders. Change 2993027 on 2016/05/27 by Mark.Satterthwaite Fix typo for new CFLAG_BoundsChecking enumeration value. Change 2993594 on 2016/05/27 by Mark.Satterthwaite Build fix - check not assert... Change 2993595 on 2016/05/27 by Mark.Satterthwaite Fix typo from Xcode hang... Change 2993614 on 2016/05/28 by Mark.Satterthwaite At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers. Change 2993747 on 2016/05/28 by Mark.Satterthwaite Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used. Change 2994256 on 2016/05/31 by Lee.Clark PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working. #codereview Chad.Taylor,Aaron.McLeran Change 2994281 on 2016/05/31 by Rolando.Caloca DP - Allow hlslcc to process type casts containing the 'const' keyword - it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile. #codereview Mark.Satterthwaite, Dmitry.Rekman #jira UE-31411 Change 2994467 on 2016/05/31 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 2994493 on 2016/05/31 by Daniel.Lamb Fixed issue with DDC commandlet not caching things from the startup packages list. Change 2994644 on 2016/05/31 by Mark.Satterthwaite Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project. Change 2996074 on 2016/06/01 by Lee.Clark PS4 - Fix GS mode not getting disabled when using parallel contexts. #codereview Marcus.Wassmer Change 2996129 on 2016/06/01 by Brent.Pease Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch. Change 2996130 on 2016/06/01 by Jeremiah.Waldron PR #2387 part 2 (Contributed by gameDNAstudio) Adding ability to consume purchases during GooglePlay RestorePurchases This also touches IOS due to changes to base classes and function signatures #codereview chris.babcock, Peter.Sauerbrei Change 2996441 on 2016/06/01 by Jeremiah.Waldron Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio) Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function. #codereview chris.babcock Change 2996514 on 2016/06/01 by Jeff.Campeau Fix merge issue from main #jira UE-31502 Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick https://jira.ol.epicgames.net/browse/UE-31446 Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed. Renamed handleReserveFailed to handleReserveFailedLightweight Change 2997235 on 2016/06/01 by Jeremiah.Waldron RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node. The IAP product in Match3 is non-consumable so just passing an empty array where necessary Change 2997241 on 2016/06/01 by Jeremiah.Waldron OnlineSubsystemGameCircle Plugin - Leaderboards - Achievements - Friends - IAP - External UI Interface - Runtime Settings in Project Settings Plugin section when plugin is enabled - Disabled by default #jira UEPLAT-105 #codereview chris.babcock Change 2997618 on 2016/06/02 by Lee.Clark #UE4Docs: Removed PS4MapFileUtil info Change 2997840 on 2016/06/02 by Jeremiah.Waldron Removing trace logging from OnlineSubsystemGameCircle_APL Change 2998754 on 2016/06/02 by Brent.Pease Change BlueprintMobileLibrary to BlueprintPlatformLibrary Change 3000762 on 2016/06/03 by Jeff.Campeau Add example rating info to ShooterGame Change 3001037 on 2016/06/04 by Brent.Pease + Add ui screens for delegate test, local notification test, and iap test + Implement delegate test Change 3001250 on 2016/06/05 by Brent.Pease + Initial pass at IAP test screen Change 3001639 on 2016/06/06 by Jeff.Campeau Fix Xbox One build issue with DX12 #codereview Zabir.Hoque Change 3002574 on 2016/06/06 by Jeremiah.Waldron Adding Android Install Location to Android platform runtime settings and manifest generation Change 3002780 on 2016/06/06 by Brent.Pease + Initial implementation of local notification test Change 3003005 on 2016/06/06 by Jeremiah.Waldron OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute Change 3004392 on 2016/06/07 by Jeremiah.Waldron Fixing typo in APL comment :) Change 3005768 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3005929 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3006151 on 2016/06/08 by Peter.Sauerbrei fix for LocalNotifications not available on TVOS #lockdown josh.adams Change 3006183 on 2016/06/08 by Brent.Pease Manual merge CL#3000242 from Release-4.12 into Dev-Platform #lockdown josh.adams Change 3006296 on 2016/06/08 by Peter.Sauerbrei submit an updated iPhonePackager and support DLLs #lockdown josh.adams Change 3006378 on 2016/06/08 by Peter.Sauerbrei fix for API update to RestorePurchases #codereview brent.pease #lockdown josh.adams #lockdown nick.penwarden [CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
#else
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 2948319 on 2016/04/19 by Nick.Shin update zlib to v1.2.8 part 1 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2948661 on 2016/04/19 by Nick.Shin keep using old zlibs until they are recompiled with the newer version Change 2948737 on 2016/04/19 by Nick.Shin build warning fix Change 2949334 on 2016/04/20 by Nick.Shin fix library path for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set... Change 2951556 on 2016/04/21 by Nick.Shin static libs double checked #jira UE-29674 - Editor fails to open in Dev-Platform Change 2951559 on 2016/04/21 by Nick.Shin static libs double checked forgot these files - they were in another changelist #jira UE-29674 - Editor fails to open in Dev-Platform Change 2952411 on 2016/04/22 by Nick.Shin add win32 build targets for zlib openssl libcurl libwebsockets part 1 of 2: these are the C# build scripts Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login Change 3118163 on 2016/09/08 by Josh.Adams perm test 2, not a useful file at all Change 3121142 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3121150 on 2016/09/12 by Daniel.Lamb Added warning logs to help track down issue UE-33453. Change 3121201 on 2016/09/12 by Keith.Judge Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix. Change 3121302 on 2016/09/12 by Joe.Graf Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors Change 3121379 on 2016/09/12 by Dmitry.Rekman Linux: only link libraries that export needed symbols (UE-35720). - Fixes very long startup times of modular builds. - Includes PR #2778 by slonopotamus. #jira UE-35720 Change 3121383 on 2016/09/12 by Dmitry.Rekman Linux: added some missing _API declarations on symbols used externally. - Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't). Change 3121456 on 2016/09/12 by Daniel.Lamb Attempt to fix deterministic cooking issue for particlelodlevel. Ensure the spawn module has had postload called on it before using. #test Paragon cook Change 3122939 on 2016/09/13 by Luke.Thatcher [PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service. - Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone. Change 3123040 on 2016/09/13 by Brent.Pease + Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now. Change 3123664 on 2016/09/13 by Nick.Shin this was originally checked into: release 4.13.1 bringing here to dev-platform -- original submit comments -- first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing" next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop jira UE-35363 - Huge game window when launching onto Safari 9.1.2 Change 3125282 on 2016/09/14 by Michael.Trepka Fixed iOS and tvOS code indexing in Xcode project Change 3126812 on 2016/09/15 by Josh.Adams Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes: - Added Parse function to JsonObject.cs to be able to parse a string - Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU() - Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME - Converted the PS4MallocCrash class into a generic one (that Wolf is now also using) - Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread - Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere - Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects - Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever) - Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool. - Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini) - Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain. - Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening - Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct. - Renamed a UT copy of a global function to not linker-conflict - Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4. - Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists) - Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority() - Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads? - Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move. Change 3126842 on 2016/09/15 by Michael.Trepka Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation. Change 3126956 on 2016/09/15 by Michael.Trepka Added support for compiling Vulkan shaders for Android on Mac Change 3127206 on 2016/09/15 by Michael.Trepka PR #2604: Remove some warnings. (Contributed by reapazor) Change 3127324 on 2016/09/15 by Michael.Trepka Allow third party dylibs on Mac to be loaded from plugin subfolders Change 3127924 on 2016/09/16 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3128369 on 2016/09/16 by Nick.Shin zlib 1.2.8 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128377 on 2016/09/16 by Nick.Shin openssl 1_0_2h headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128383 on 2016/09/16 by Nick.Shin libcurl 7_48_0 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128384 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128464 on 2016/09/16 by Nick.Shin webRTC rev.12643 NOTE: VS2015 - only Win64 is available - Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment NOTE: VS2013 - not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist - also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways FUTURE NOTE: - will continue to try to get VS2015 Win32 functional - and am working on trying to get VS2013 tested headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128500 on 2016/09/16 by Nick.Shin zlib 1.2.8 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128504 on 2016/09/16 by Nick.Shin openssl 1_0_2h - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128506 on 2016/09/16 by Nick.Shin libcurl 7_48_0 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128508 on 2016/09/16 by Nick.Shin libwebsockets 1.7.4 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128513 on 2016/09/16 by Nick.Shin webRTC rev.12643 - OSX headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128602 on 2016/09/16 by Nick.Shin webRTC rev.9862 - Win64 VS2013 NOTE: - not tested (i'm working on getting a VS2013 pro license) - checking in for testing purposes WARNING: - VS2013 is no longer supported by webRTC latest headers and lib updates part of [ zlib openssl libcurl libwebsockets webrtc ] updates Change 3128605 on 2016/09/16 by Nick.Shin re-enabling updated ThirdParySoftware libs: - zlib (v.1.2.8) - openssl (1.0.2h) - libcurl (7_48_0) - libwebsocket (v.1.7.4) - webRTC (rev.12643) to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build... Change 3128651 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 Change 3128704 on 2016/09/16 by Nick.Shin fix Win32 build error from CL: #3128605 - this time actually compiling it... Change 3128825 on 2016/09/16 by Dmitry.Rekman Linux: proper fix for too slow startup times (UE-35967). - Pull request #2793 by slonopotamus. - Now without stripping dependencies on libraries specified before. - Contains a work around for ld bug <2.25. Change 3128972 on 2016/09/16 by Nick.Shin fix to local build error. Change 3129283 on 2016/09/16 by Brent.Pease + Add Android local notification support based on existing system used for iOS + Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release Change 3129494 on 2016/09/17 by Nick.Shin fix CIS build errors Change 3129503 on 2016/09/17 by Dmitry.Rekman Fix Linux build (case sensitivity issue). Change 3129514 on 2016/09/17 by Nick.Shin fix CIS build errors for consoles - missing zlib include path special thanks to Dmitry.Rekman for pointing me in the right direction Change 3129647 on 2016/09/17 by Dmitry.Rekman Linux: fix non-unity build. Change 3131043 on 2016/09/19 by Nick.Shin archiving build instructions/steps when building: - zlib (v.1.2.8) win: #3128369 osx: #3128500 - openssl (1.0.2h) win: #3128377 osx: #3128504 - libcurl (7_48_0) win: #3128383 osx: #3128506 - libwebsocket (v.1.7.4) win: #3128384 osx: #3128508 - webRTC win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP osx: #3128513 Change 3132801 on 2016/09/20 by Dmitry.Rekman Linux: support specifying default OpenGL version via configs (UE-34777). - The first targeted RHI is going to be used. Change 3132905 on 2016/09/20 by Josh.Adams - Fixed up some paths with the WolfPlat rename Change 3133148 on 2016/09/20 by Josh.Adams - Only show UT EULA if PLATFORM_DESKTOP Change 3133152 on 2016/09/20 by Josh.Adams - Beginning support for applets. Disabled unless you have a special SDK with applet support. Change 3133169 on 2016/09/20 by Josh.Adams - Fixed issue with Wolf access but no SDK installed Change 3133344 on 2016/09/20 by Daniel.Lamb Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile. Added new flag to limit number of concurrent shader compiles. #test Cook QAGame, Cook Paragon Change 3133345 on 2016/09/20 by Daniel.Lamb FRedirectCollector collects string asset references all the time when running the editor. #test Cook paragon cook QAGame. Change 3133852 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. Change 3133875 on 2016/09/21 by Luke.Thatcher [PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2) Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'. Change 3134544 on 2016/09/21 by Josh.Adams - Reduced UT textures for Wolf Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick FPS4Time::SystemTime now calculates the local machine time, instead of UTC. #jira UE-35170 Change 3135036 on 2016/09/21 by Michael.Trepka Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32 Change 3135292 on 2016/09/21 by Jeff.Campeau Change include order to favor the XDK edition specific headers where available. Change 3136414 on 2016/09/22 by Josh.Adams - Fixed a checkf() that had the case reversed #jira ue-36311 Change 3137082 on 2016/09/22 by Dmitry.Rekman Added support for Linux installed builds to 4.14 Change 3137220 on 2016/09/22 by Dmitry.Rekman Linux: do not rebuild hlslcc on each setup. - Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary. Change 3137227 on 2016/09/22 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3137259 on 2016/09/22 by Dmitry.Rekman Linux installed build: fix CIS (missed one .csproj) Change 3137290 on 2016/09/22 by Dmitry.Rekman Linux installed builds: fix for the resulting directory. Change 3137291 on 2016/09/22 by Chris.Babcock Restore texture filtering mode properly when movie played on Android #jira UE-36342 #ue4 #android Change 3137376 on 2016/09/22 by Dmitry.Rekman Linux: re-enabled crash handler stack smash protection. - Race condition in FRunnableThreadPThread has been previously fixed. Change 3138498 on 2016/09/23 by Dmitry.Rekman Linux: add missed package for installed builds. - mono-devel package for resgen2. Change 3138523 on 2016/09/23 by Dmitry.Rekman Linux: Update hlslcc now that we're not rebuilding it each time. Change 3138658 on 2016/09/23 by Josh.Adams - Moved UT's Social Plugin into NotForLicensees Change 3139042 on 2016/09/23 by Dmitry.Rekman Linux: more robust check of installed packages. - Also added mono-devel to the list of packages installed on 14.04. Change 3139674 on 2016/09/26 by Dmitry.Rekman Fix crash when editing widget blueprints (UE-35185). - Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping. - Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795). Change 3140203 on 2016/09/26 by Josh.Adams - Wolf Fix for SHIPPING Change 3140206 on 2016/09/26 by Josh.Adams - NEX work, still in progress Change 3140276 on 2016/09/26 by Josh.Adams - Fixed Wolf compile error Change 3140485 on 2016/09/26 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3140570 on 2016/09/26 by Dmitry.Rekman SDL2: Delete obsolete files. - We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space. Change 3140577 on 2016/09/26 by Dmitry.Rekman Fix CudaTest monolithic build. - Not the best fix, the better fix is to build against bundled libc++. Change 3141184 on 2016/09/27 by Keith.Judge Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert. #jira UE-35973 Change 3141623 on 2016/09/27 by Chris.Babcock Support hiding virtual keyboard on Android #jira UE-34201 #ue4 #android Change 3141887 on 2016/09/27 by Joe.Graf Added support for additional plugin directories that are specified by the .uproject file New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins Change 3141916 on 2016/09/27 by Josh.Adams - Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925) Change 3141926 on 2016/09/27 by Josh.Adams - Support for skipping Wolf user selector (-nologinui) Change 3141938 on 2016/09/27 by Chris.Babcock Allow Android media player to seek past 999ms (contributed by rcywongaa) #jira UE-36453 #PR #2797 #ue4 #android Change 3142207 on 2016/09/27 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3142219 on 2016/09/27 by Josh.Adams - Wolf PhysX 3.4 libs and includes Change 3142220 on 2016/09/27 by Josh.Adams - File that had to be fixed up after main merge (missed adding it to the huge integrate CL) Change 3142314 on 2016/09/27 by Chase.McAllister #jira UE-35011 fixes to some assets to remove redundancies/output log spam Change 3142510 on 2016/09/27 by Daniel.Lamb Fixed up resave lightmaps commandlet so that world transforms don't get applied twice. #jira UE-35942 Change 3142650 on 2016/09/27 by Chris.Babcock Android support for Linux by yaakuro - requires CodeWorks for Android Linux installed and OpenJDK 1.8 - need to set Android SDK paths manually in Project Settings #jira UE-32752 #jira UE-32753 #PR #2564 #PR #2565 #ue4 #android #linux Change 3142802 on 2016/09/27 by Dmitry.Rekman Upgrade to SDL 2.0.5-ish (still technically 2.0.4). - Upstream revision 10374:dccf51aee79b. - Merged all our changes hopefully. Change 3143075 on 2016/09/28 by Luke.Thatcher [RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro. #jira UE-33077 Change 3143219 on 2016/09/28 by Daniel.Lamb Added new is compiling function which tells you if it's really compiling instead of lying. If def out additional logging for debugging shader compilation issue for 4.14 release. Change 3143428 on 2016/09/28 by Luke.Thatcher [PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061 Change 3143488 on 2016/09/28 by Daniel.Lamb Changed defaults for skip cooking editor content to true. Change 3143526 on 2016/09/28 by Daniel.Lamb Increased the concurrent shader compile limit while in the cooker. #test Cook paragon Change 3143874 on 2016/09/28 by Chris.Babcock Read Android environment variables from .bashrc on Linux #jira UE-36565 #ue4 #android #linux Change 3143911 on 2016/09/28 by Dmitry.Rekman Fix SDL EGL API binding (UE-18979). - Contains PR #1398 by x414e54. - Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade. Change 3143929 on 2016/09/28 by Daniel.Lamb Removed some more temporary logging. #test Cook paragon Change 3143959 on 2016/09/28 by Jeff.Campeau Media Player for Xbox One Change 3143997 on 2016/09/28 by Dmitry.Rekman Linux: faster linking in Debug. - Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating. Change 3144004 on 2016/09/28 by Dmitry.Rekman Linux: make SCW dump core on crash in debug builds. - If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space). Change 3144007 on 2016/09/28 by Dmitry.Rekman Linux: Allow equals character in command line parameter value (UE-26406). - PR #2019 by bozzaro. - Allows passing parameters like -Switch=Key=Value. Change 3144042 on 2016/09/28 by Jeff.Campeau Add tag for DX12 support being experimental in target settings. #jira UE-36150 Change 3144068 on 2016/09/28 by Dmitry.Rekman Linux: enable using xgConsole in UAT (UE-28096). - PR #2144 by bozzaro. - Picks correct xgConsole binary. - Allegedly fixes crash in CombineXGEItemFile on mono. Change 3144120 on 2016/09/28 by Michael.Trepka Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/... Change 3144172 on 2016/09/28 by Chris.Babcock Add libpng 1.5.27 for Android #jira UE-36573 #ue4 #android Change 3144318 on 2016/09/28 by Chris.Babcock Correct logic for checking .bashrc on Linux #ue4 #android Change 3144331 on 2016/09/28 by Dmitry.Rekman Linux: repair ARM server builds. - Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1). Change 3144354 on 2016/09/28 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) this is intermediate, not fully working Change 3144368 on 2016/09/28 by Josh.Adams - Moved the new Social files into NFL Change 3144395 on 2016/09/28 by Chris.Babcock Add missing functions for AndroidWebBrowserWindow #ue4 #android Change 3144417 on 2016/09/28 by Josh.Adams - Probable fix for FWebBrowserWindow missing virtuals Change 3144438 on 2016/09/28 by Jeff.Campeau XDK updated to 160802 Change 3144569 on 2016/09/29 by Dmitry.Rekman Linux: allow a selectable clock source (UE-36564). - The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew. - Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there. #tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm). Change 3145108 on 2016/09/29 by Joe.Graf Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools) Change 3145245 on 2016/09/29 by Joe.Graf #wolf Checking in removal of plugin use on Win64 per Josh's request Change 3145514 on 2016/09/29 by Will.Fissler Updated Mac Info.plist files to disable high DPI on macOS 10.12 Change 3145538 on 2016/09/29 by Josh.Adams - Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots. Change 3145540 on 2016/09/29 by Josh.Adams - Fix for checking some Wolf dev tool installation existence - Fix for various Wolf build issues - Fix for Wolf devices not showing up in Launch on Change 3145542 on 2016/09/29 by Josh.Adams - Pulled over Wolf changes from Wolf branch into Dev-Platform Change 3145572 on 2016/09/29 by Josh.Adams - Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people. #jira UE-36591 Change 3145769 on 2016/09/29 by Chris.Babcock Remove duplicate platforms from deploy list in UFE #jira UE-36636 #ue4 Change 3146061 on 2016/09/29 by Chris.Babcock Linux: be less spammy in log when launching external procs #jira UE-36638 #ue4 #linux Change 3146208 on 2016/09/29 by Dmitry.Rekman Linux: fix PhysX crash (UE-36613). - PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above. - This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun. #jira UE-36613 Change 3146476 on 2016/09/30 by Josh.Adams - Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose Change 3146554 on 2016/09/30 by Josh.Adams - Removed another wolf secret log Change 3146626 on 2016/09/30 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3146712 on 2016/09/30 by Josh.Adams - Fixed case for building Android on Linux #jira #UE-36652 Change 3146844 on 2016/09/30 by Josh.Adams - Removed ES2 shader compiling from TVOS, and force Metal compiling #jira UE-36306 Change 3146865 on 2016/09/30 by Daniel.Lamb Removed temp logging for materials #test Launch on paragon Change 3146874 on 2016/09/30 by Dmitry.Rekman Linux: add rpath for libTextureConverter.so (UE-36620). Change 3147030 on 2016/09/30 by Josh.Adams - Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks #jira UE-36623 Change 3147151 on 2016/09/30 by Josh.Adams - Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling? Change 3147621 on 2016/09/30 by Michael.Trepka Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac Change 3147712 on 2016/09/30 by Josh.Adams - Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform. #jira UE-36225 Change 3147725 on 2016/09/30 by Josh.Adams - Fixed yet another Wolf log for people with Wolf access but no SDK [CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
->SetWindow( FVector2D(10 * DPIScaleFactor, 10 * DPIScaleFactor), false )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177) ========================== MAJOR FEATURES + CHANGES ========================== Change 2948322 on 2016/04/19 by Nick.Shin update libwebsockets to v1.7.4 part 4 of 4 - doing this in stages for tracking purposes #jira UEPLAT-1246 - Update libWebsockets #jira UEPLAT-1221 - update websocket library #jira UEPLAT-1204 - Rebuild libwebsockets with SSL Change 2970016 on 2016/05/07 by Nick.Shin undo all of the following upgrades: - zlib - openssl - libcurl - libwebsockets and reset webrtc #jira UE-30298 - Fortnite and Orion crash on login #lockdown josh.adams Change 2970373 on 2016/05/09 by Lee.Clark PS4 - Fix NumInstances not getting reset after DrawIndirect calls Change 2972873 on 2016/05/10 by Michael.Trepka Correct initial position for SlateViewer windows on Mac Change 2974363 on 2016/05/11 by Mark.Satterthwaite Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect. Change 2975921 on 2016/05/12 by Michael.Trepka Removed unused AdjustWindowRegion declaration from LinuxWindow.h #codereview Dmitry.Rekman Change 2977002 on 2016/05/13 by Michael.Trepka Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready #codereview Ben.Marsh Change 2977337 on 2016/05/13 by Brent.Pease UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error + Prevent illegal characters from being entered in the packaging UI + Report an error from iPhonePackager if a illegal bundle id is specified + Convert special characters to XML equivalents - Correctly check for the presence of iTunes 12 when packaging iOS games on Windows - Improve ios certificate and provision message in package settings UI #codereview peter.sauerbrei Change 2977509 on 2016/05/13 by Brent.Pease + Fix mac compile error Change 2978036 on 2016/05/14 by Mark.Satterthwaite One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN. #jira UE-30777 Change 2978037 on 2016/05/14 by Mark.Satterthwaite Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago. Change 2978333 on 2016/05/16 by Lee.Clark Fix packaging of non-code projects when plugins are enabled #codereview Peter.Sauerbrei Change 2978780 on 2016/05/16 by Mark.Satterthwaite Reduce temporary allocations required to set uniform parameters in Metal. Change 2979680 on 2016/05/16 by Nick.Shin editor's HTML5 platform settings was missing due to the emscripten SDK move should have been included with CL: #2946251 Change 2979681 on 2016/05/16 by Nick.Shin cleaned up websocket processing for HTML5 #jira UE-13657 - HTML5 plugin OnRawRecieve overflow Change 2979701 on 2016/05/16 by Brent.Pease UE-28421 - Message box cannot be closed after accessing the home screen on iOS + Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution Change 2980766 on 2016/05/17 by Jeremiah.Waldron Adding Android build support for HarfBuzz - using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them - Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config> Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly #jira UE-28586 #codereview chris.babcock Change 2980953 on 2016/05/17 by Jeremiah.Waldron Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo #jira UE-28586 Change 2981039 on 2016/05/17 by Jeff.Campeau ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support) Change 2981054 on 2016/05/17 by Jeff.Campeau Enable Live OSS for Orion on Xbox One Change 2981553 on 2016/05/18 by Jeff.Campeau Enable Oodle for Xbox One Change 2981555 on 2016/05/18 by Jeff.Campeau Scalability settings for Xbox One Change 2981774 on 2016/05/18 by Keith.Judge Xbox One - Duplicating Movie Player fix from 4.12. Change 2981789 on 2016/05/18 by Keith.Judge Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12. Change 2981802 on 2016/05/18 by Keith.Judge Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12. Change 2981875 on 2016/05/18 by Keith.Judge Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12. Change 2981900 on 2016/05/18 by Keith.Judge Xbox One - D3D11Query refactor. Duplicated from 4.12 Change 2981945 on 2016/05/18 by Nick.Shin filled out response headers for HTML5 platform #jira UE-26047 - HTML5 HTTP Response Headers not implemented Change 2981981 on 2016/05/18 by Lee.Clark PS4 - Fix COTF not updating files #codereview Daniel.Lamb Change 2982246 on 2016/05/18 by Michael.Trepka Fixed Mono compile errors in UT build scripts Change 2983869 on 2016/05/19 by Mark.Satterthwaite Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures. #jira UE-29557 Change 2983871 on 2016/05/19 by Mark.Satterthwaite Pool Metal texture update buffers to reduce churn. Change 2983892 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors. Change 2983898 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists. Change 2983911 on 2016/05/19 by Mark.Satterthwaite Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen. Change 2983916 on 2016/05/19 by Mark.Satterthwaite Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected. Change 2984874 on 2016/05/20 by Keith.Judge Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps. #jira UEPLAT-1295 Change 2985446 on 2016/05/20 by Mark.Satterthwaite Remove the non-functional -metaldebug option from MetalRHI. Change 2985827 on 2016/05/20 by Nick.Shin call EndSession() onbeforeunload() note: API CHANGE - HTML5JavaScripteFx.{js,h} - UE_MakeHTTPDataRequest() #jira UE-22285 - Session End events are not generated for HTML5 Change 2986013 on 2016/05/20 by Jeremiah.Waldron PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio) Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo Pulled from Release-4.12 CL #jira UE-30782 #codereview chris.babcock, Peter.Sauerbrei Change 2986057 on 2016/05/20 by Mark.Satterthwaite Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI. Change 2986059 on 2016/05/20 by Mark.Satterthwaite Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes). Change 2986060 on 2016/05/20 by Mark.Satterthwaite Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level. Change 2986063 on 2016/05/20 by Mark.Satterthwaite Missing change from previous CL. Change 2986066 on 2016/05/20 by Mark.Satterthwaite More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame. Change 2986455 on 2016/05/23 by Keith.Judge Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler. Change 2986886 on 2016/05/23 by Mark.Satterthwaite Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier. Change 2986955 on 2016/05/23 by Brent.Pease + Do not error out if "[PROJECT_NAME]" is in the bundle ID #codereview peter.sauerbrei Change 2987304 on 2016/05/23 by Chris.Babcock Remove old Android platforms #ue4 #android #codeview Josh.Adams Change 2987571 on 2016/05/23 by Mark.Satterthwaite Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass) #jira UE-31111 Change 2987591 on 2016/05/23 by Mark.Satterthwaite Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5. Change 2987679 on 2016/05/23 by Mark.Satterthwaite Re-enable tiled reflections on Nvidia by default now that they work. Change 2987799 on 2016/05/24 by Mark.Satterthwaite Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac). Change 2989395 on 2016/05/25 by Lee.Clark PS4 - Fix shader output / render target format mismatch for sparse MRT. Change 2990003 on 2016/05/25 by Jeremiah.Waldron When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function. Change 2990393 on 2016/05/25 by Mark.Satterthwaite Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal... Change 2990516 on 2016/05/25 by Brent.Pease + UEPLAT-1294 - Support for local notifications + UEPLAT-1254 - Add BP event for device orientation change + Added a new class based on UGameInstance for mobile device callbacks + Ensured IOSAppDelegate.cpp follows convention for lambda functions Change 2991361 on 2016/05/26 by Jeremiah.Waldron Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it Change 2992450 on 2016/05/27 by Mark.Satterthwaite Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders. Change 2993027 on 2016/05/27 by Mark.Satterthwaite Fix typo for new CFLAG_BoundsChecking enumeration value. Change 2993594 on 2016/05/27 by Mark.Satterthwaite Build fix - check not assert... Change 2993595 on 2016/05/27 by Mark.Satterthwaite Fix typo from Xcode hang... Change 2993614 on 2016/05/28 by Mark.Satterthwaite At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers. Change 2993747 on 2016/05/28 by Mark.Satterthwaite Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used. Change 2994256 on 2016/05/31 by Lee.Clark PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working. #codereview Chad.Taylor,Aaron.McLeran Change 2994281 on 2016/05/31 by Rolando.Caloca DP - Allow hlslcc to process type casts containing the 'const' keyword - it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile. #codereview Mark.Satterthwaite, Dmitry.Rekman #jira UE-31411 Change 2994467 on 2016/05/31 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 2994493 on 2016/05/31 by Daniel.Lamb Fixed issue with DDC commandlet not caching things from the startup packages list. Change 2994644 on 2016/05/31 by Mark.Satterthwaite Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project. Change 2996074 on 2016/06/01 by Lee.Clark PS4 - Fix GS mode not getting disabled when using parallel contexts. #codereview Marcus.Wassmer Change 2996129 on 2016/06/01 by Brent.Pease Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch. Change 2996130 on 2016/06/01 by Jeremiah.Waldron PR #2387 part 2 (Contributed by gameDNAstudio) Adding ability to consume purchases during GooglePlay RestorePurchases This also touches IOS due to changes to base classes and function signatures #codereview chris.babcock, Peter.Sauerbrei Change 2996441 on 2016/06/01 by Jeremiah.Waldron Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio) Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function. #codereview chris.babcock Change 2996514 on 2016/06/01 by Jeff.Campeau Fix merge issue from main #jira UE-31502 Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick https://jira.ol.epicgames.net/browse/UE-31446 Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed. Renamed handleReserveFailed to handleReserveFailedLightweight Change 2997235 on 2016/06/01 by Jeremiah.Waldron RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node. The IAP product in Match3 is non-consumable so just passing an empty array where necessary Change 2997241 on 2016/06/01 by Jeremiah.Waldron OnlineSubsystemGameCircle Plugin - Leaderboards - Achievements - Friends - IAP - External UI Interface - Runtime Settings in Project Settings Plugin section when plugin is enabled - Disabled by default #jira UEPLAT-105 #codereview chris.babcock Change 2997618 on 2016/06/02 by Lee.Clark #UE4Docs: Removed PS4MapFileUtil info Change 2997840 on 2016/06/02 by Jeremiah.Waldron Removing trace logging from OnlineSubsystemGameCircle_APL Change 2998754 on 2016/06/02 by Brent.Pease Change BlueprintMobileLibrary to BlueprintPlatformLibrary Change 3000762 on 2016/06/03 by Jeff.Campeau Add example rating info to ShooterGame Change 3001037 on 2016/06/04 by Brent.Pease + Add ui screens for delegate test, local notification test, and iap test + Implement delegate test Change 3001250 on 2016/06/05 by Brent.Pease + Initial pass at IAP test screen Change 3001639 on 2016/06/06 by Jeff.Campeau Fix Xbox One build issue with DX12 #codereview Zabir.Hoque Change 3002574 on 2016/06/06 by Jeremiah.Waldron Adding Android Install Location to Android platform runtime settings and manifest generation Change 3002780 on 2016/06/06 by Brent.Pease + Initial implementation of local notification test Change 3003005 on 2016/06/06 by Jeremiah.Waldron OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute Change 3004392 on 2016/06/07 by Jeremiah.Waldron Fixing typo in APL comment :) Change 3005768 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3005929 on 2016/06/08 by Josh.Adams Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform) Change 3006151 on 2016/06/08 by Peter.Sauerbrei fix for LocalNotifications not available on TVOS #lockdown josh.adams Change 3006183 on 2016/06/08 by Brent.Pease Manual merge CL#3000242 from Release-4.12 into Dev-Platform #lockdown josh.adams Change 3006296 on 2016/06/08 by Peter.Sauerbrei submit an updated iPhonePackager and support DLLs #lockdown josh.adams Change 3006378 on 2016/06/08 by Peter.Sauerbrei fix for API update to RestorePurchases #codereview brent.pease #lockdown josh.adams #lockdown nick.penwarden [CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
#endif
->Split
(
// The area contains a single tab with the widget reflector.
FTabManager::NewStack()->AddTab( "WidgetReflector", ETabState::OpenedTab )
)
)
#endif
;
FGlobalTabmanager::Get()->RestoreFrom( Layout, TSharedPtr<SWindow>() );
}
void MakeSplitterTest()
{
TSharedRef<SWindow> TestWindow = SNew(SWindow)
.ClientSize(FVector2D(640,480))
.AutoCenter(EAutoCenter::PrimaryWorkArea)
[
SNew(SSplitterTest)
];
FSlateApplication::Get().AddWindow( TestWindow );
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
#undef LOCTEXT_NAMESPACE
#endif // #if !UE_BUILD_SHIPPING