From d8cc250280b37b169a0a781e409420f62552df3b Mon Sep 17 00:00:00 2001
From: Lucas Gandel <lucas.gandel@kitware.com>
Date: Thu, 18 Nov 2021 17:02:46 +0100
Subject: [PATCH] Add RenderFramebuffer FlipY test

---
 Rendering/OpenGL2/Testing/Cxx/CMakeLists.txt  |  1 +
 .../Testing/Cxx/TestFlipRenderFramebuffer.cxx | 79 +++++++++++++++++++
 .../TestFlipRenderFramebuffer.png.sha512      |  1 +
 3 files changed, 81 insertions(+)
 create mode 100644 Rendering/OpenGL2/Testing/Cxx/TestFlipRenderFramebuffer.cxx
 create mode 100644 Rendering/OpenGL2/Testing/Data/Baseline/TestFlipRenderFramebuffer.png.sha512

diff --git a/Rendering/OpenGL2/Testing/Cxx/CMakeLists.txt b/Rendering/OpenGL2/Testing/Cxx/CMakeLists.txt
index 2ce57943f8e..57df1793f31 100644
--- a/Rendering/OpenGL2/Testing/Cxx/CMakeLists.txt
+++ b/Rendering/OpenGL2/Testing/Cxx/CMakeLists.txt
@@ -36,6 +36,7 @@ vtk_add_test_cxx(vtkRenderingOpenGL2CxxTests tests
   TestFXAAFilter.cxx
   TestFXAAPass.cxx
   TestFXAAWithEDLPass.cxx
+  TestFlipRenderFramebuffer.cxx
   TestFloor.cxx
   TestFluidMapper.cxx
   TestFramebufferHDR.cxx
diff --git a/Rendering/OpenGL2/Testing/Cxx/TestFlipRenderFramebuffer.cxx b/Rendering/OpenGL2/Testing/Cxx/TestFlipRenderFramebuffer.cxx
new file mode 100644
index 00000000000..ed07b9e8bd2
--- /dev/null
+++ b/Rendering/OpenGL2/Testing/Cxx/TestFlipRenderFramebuffer.cxx
@@ -0,0 +1,79 @@
+/*=========================================================================
+
+  Program:   Visualization Toolkit
+
+  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
+  All rights reserved.
+  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notice for more information.
+
+=========================================================================*/
+
+#include "vtkActor.h"
+#include "vtkAxesActor.h"
+#include "vtkConeSource.h"
+#include "vtkNew.h"
+#include "vtkOpenGLPolyDataMapper.h"
+#include "vtkOpenGLRenderWindow.h"
+#include "vtkRegressionTestImage.h"
+#include "vtkRenderWindowInteractor.h"
+#include "vtkRenderer.h"
+#include "vtkTestUtilities.h"
+#include "vtkTextActor.h"
+#include "vtkTextProperty.h"
+
+//------------------------------------------------------------------------------
+int TestFlipRenderFramebuffer(int argc, char* argv[])
+{
+  vtkNew<vtkRenderWindow> renderWindow;
+  renderWindow->SetSize(600, 600);
+  vtkOpenGLRenderWindow::SafeDownCast(renderWindow)->FramebufferFlipYOn();
+
+  vtkNew<vtkRenderWindowInteractor> iren;
+  iren->SetRenderWindow(renderWindow.Get());
+
+  renderWindow->SetNumberOfLayers(2);
+
+  vtkNew<vtkRenderer> renderer;
+  renderWindow->AddRenderer(renderer);
+
+  vtkNew<vtkRenderer> overlay;
+  renderWindow->AddRenderer(overlay);
+  overlay->SetLayer(1);
+  overlay->SetViewport(0, 0, 0.4, 0.4);
+
+  // cone
+  vtkNew<vtkConeSource> source;
+  source->SetDirection(0, 1, 0);
+
+  vtkNew<vtkOpenGLPolyDataMapper> mapper;
+  mapper->SetInputConnection(source->GetOutputPort());
+
+  vtkNew<vtkActor> actor;
+  actor->SetMapper(mapper);
+  renderer->AddActor(actor);
+
+  // text actor
+  vtkNew<vtkTextActor> textActor;
+  textActor->SetInput("FlipY Tests");
+  textActor->GetTextProperty()->SetFontSize(30);
+  renderer->AddActor(textActor);
+
+  // axes actor overlay
+  vtkNew<vtkAxesActor> axes;
+  overlay->AddActor(axes);
+
+  renderer->ResetCamera();
+  renderWindow->Render();
+
+  int retVal = vtkRegressionTestImage(renderWindow.Get());
+  if (retVal == vtkRegressionTester::DO_INTERACTOR)
+  {
+    iren->Start();
+  }
+
+  return !retVal;
+}
diff --git a/Rendering/OpenGL2/Testing/Data/Baseline/TestFlipRenderFramebuffer.png.sha512 b/Rendering/OpenGL2/Testing/Data/Baseline/TestFlipRenderFramebuffer.png.sha512
new file mode 100644
index 00000000000..dee12ee15ed
--- /dev/null
+++ b/Rendering/OpenGL2/Testing/Data/Baseline/TestFlipRenderFramebuffer.png.sha512
@@ -0,0 +1 @@
+168ed08e12d1606b2dc5098e75a122c488edb6616799e7aa254cddc874845598c8036287b86122bf6c1ff877aa639057a458dff87b442582fdc6d978de70e553
-- 
GitLab