mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
165 lines
5.5 KiB
C++
165 lines
5.5 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkSMAnimationSceneImageWriter.h
|
|
|
|
Copyright (c) Kitware, Inc.
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html 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.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkSMAnimationSceneImageWriter - helper class to write animation
|
|
// images/movies.
|
|
// .SECTION Description
|
|
// vtkSMAnimationSceneImageWriter is a concrete implementation of
|
|
// vtkSMAnimationSceneWriter that can write movies or images. The generated
|
|
// output's size and alignment is exactly as specified on the GUISize,
|
|
// WindowPosition properties of the view modules. One can optionally specify
|
|
// Magnification to scale the output.
|
|
// .SECTION Notes
|
|
// This class does not support changing the dimensions of the view, one has to
|
|
// do that before calling Save(). It only provides Magnification which can scale
|
|
// the size using integral scale factor.
|
|
|
|
#ifndef vtkSMAnimationSceneImageWriter_h
|
|
#define vtkSMAnimationSceneImageWriter_h
|
|
|
|
#include "vtkPVAnimationModule.h" //needed for exports
|
|
#include "vtkSMAnimationSceneWriter.h"
|
|
|
|
class vtkGenericMovieWriter;
|
|
class vtkImageData;
|
|
class vtkImageWriter;
|
|
class vtkSMViewProxy;
|
|
|
|
class VTKPVANIMATION_EXPORT vtkSMAnimationSceneImageWriter : public vtkSMAnimationSceneWriter
|
|
{
|
|
public:
|
|
static vtkSMAnimationSceneImageWriter* New();
|
|
vtkTypeMacro(vtkSMAnimationSceneImageWriter, vtkSMAnimationSceneWriter);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Set the magnification factor to use for the saved animation.
|
|
vtkSetClampMacro(Magnification, int, 1, VTK_INT_MAX);
|
|
vtkGetMacro(Magnification, int);
|
|
|
|
// Description:
|
|
// Get/Set the quality for the generated movie.
|
|
// Applicable only if the choose file format supports it.
|
|
// 0 means worst quality and smallest file size
|
|
// 2 means best quality and largest file size
|
|
vtkSetClampMacro(Quality, int, 0, 2);
|
|
vtkGetMacro(Quality, int);
|
|
|
|
// Description:
|
|
// Turns on(the default) or off compression.
|
|
// Turning off compression overrides quality setting.
|
|
// NOTE: This only affects the FFMPEG backend.
|
|
vtkSetMacro(Compression, bool);
|
|
vtkGetMacro(Compression, bool);
|
|
vtkBooleanMacro(Compression, bool);
|
|
|
|
// Description:
|
|
// Get/Set the setting whether the movie encoder should use subsampling of
|
|
// the chrome planes or not, if applicable. Since the human eye is more
|
|
// sensitive to brightness than color variations, subsampling can be
|
|
// useful to reduce the bitrate. Default value is 0.
|
|
vtkSetMacro(Subsampling, int);
|
|
vtkGetMacro(Subsampling, int);
|
|
vtkBooleanMacro(Subsampling, int);
|
|
|
|
// Description:
|
|
// Get the error code which is set if there's an error while writing
|
|
// the images.
|
|
vtkGetMacro(ErrorCode, int);
|
|
|
|
|
|
// Description:
|
|
// Get/Set the RGB background color to use to fill empty spaces in the image.
|
|
// RGB components are in the range [0,1].
|
|
vtkSetVector3Macro(BackgroundColor, double);
|
|
vtkGetVector3Macro(BackgroundColor, double);
|
|
|
|
// Get/Set the frame rate to use for saving the animation.
|
|
// This frame rate is the frame rate that gets saved in the movie
|
|
// file generated, if applicable. If does not affect the FrameRate
|
|
// set on the animation scene at all. In other words, this is the
|
|
// playback frame rate and not the animation generation frame rate.
|
|
// Default value is 1.
|
|
vtkSetMacro(FrameRate, double);
|
|
vtkGetMacro(FrameRate, double);
|
|
|
|
|
|
// Description:
|
|
// Convenience method used to merge a smaller image (\c src) into a
|
|
// larger one (\c dest). The location of the smaller image in the larger image
|
|
// are determined by their extents.
|
|
static void Merge(vtkImageData* dest, vtkImageData* src);
|
|
protected:
|
|
vtkSMAnimationSceneImageWriter();
|
|
~vtkSMAnimationSceneImageWriter();
|
|
|
|
// Description:
|
|
// Called to initialize saving.
|
|
virtual bool SaveInitialize(int startCount);
|
|
|
|
// Description:
|
|
// Called to save a particular frame.
|
|
virtual bool SaveFrame(double time);
|
|
|
|
// Description:
|
|
// Called to finalize saving.
|
|
virtual bool SaveFinalize();
|
|
|
|
// Creates the writer based on file type.
|
|
bool CreateWriter();
|
|
|
|
// Updates the ActualSize which is the
|
|
// resolution of the generated animation frame.
|
|
void UpdateImageSize();
|
|
|
|
// Description:
|
|
// Captures the view from the given module and
|
|
// returns a new Image data object. May return NULL.
|
|
// Default implementation can only handle vtkSMViewProxy subclasses.
|
|
// Subclassess must override to handle other types of view modules.
|
|
virtual vtkImageData* CaptureViewImage(
|
|
vtkSMViewProxy*, int magnification);
|
|
|
|
vtkImageData* NewFrame();
|
|
|
|
vtkSetVector2Macro(ActualSize, int);
|
|
int ActualSize[2];
|
|
int Quality;
|
|
bool Compression;
|
|
int Magnification;
|
|
int FileCount;
|
|
int ErrorCode;
|
|
int Subsampling;
|
|
|
|
char* Prefix;
|
|
char* Suffix;
|
|
vtkSetStringMacro(Prefix);
|
|
vtkSetStringMacro(Suffix);
|
|
|
|
double BackgroundColor[3];
|
|
double FrameRate;
|
|
|
|
vtkImageWriter* ImageWriter;
|
|
vtkGenericMovieWriter* MovieWriter;
|
|
|
|
void SetImageWriter(vtkImageWriter*);
|
|
void SetMovieWriter(vtkGenericMovieWriter*);
|
|
private:
|
|
vtkSMAnimationSceneImageWriter(const vtkSMAnimationSceneImageWriter&); // Not implemented.
|
|
void operator=(const vtkSMAnimationSceneImageWriter&); // Not implemented.
|
|
};
|
|
|
|
|
|
#endif
|