Files
ThirdParty-6/ParaView-5.0.1/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetView.h

175 lines
5.0 KiB
C++

/*=========================================================================
Program: ParaView
Module: vtkSpreadSheetView.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 vtkSpreadSheetView
// .SECTION Description
// vtkSpreadSheetView is a vtkPVView subclass for a view used to show any data
// as a spreadsheet. This view can only show one representation at a
// time. If more than one representation is added to this view, only the first
// visible representation will be shown.
#ifndef vtkSpreadSheetView_h
#define vtkSpreadSheetView_h
#include "vtkPVClientServerCoreRenderingModule.h" //needed for exports
#include "vtkPVView.h"
class vtkClientServerMoveData;
class vtkCSVExporter;
class vtkMarkSelectedRows;
class vtkReductionFilter;
class vtkSortedTableStreamer;
class vtkTable;
class vtkVariant;
class VTKPVCLIENTSERVERCORERENDERING_EXPORT vtkSpreadSheetView : public vtkPVView
{
public:
static vtkSpreadSheetView* New();
vtkTypeMacro(vtkSpreadSheetView, vtkPVView);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Triggers a high-resolution render.
// @CallOnAllProcessess
virtual void StillRender() { this->StreamToClient(); }
// Description:
// Triggers a interactive render. Based on the settings on the view, this may
// result in a low-resolution rendering or a simplified geometry rendering.
// @CallOnAllProcessess
virtual void InteractiveRender() { this->StreamToClient(); }
// Description:
// Overridden to identify and locate the active-representation.
virtual void Update();
// Description:
// Get/Set if the view shows extracted selection only or the actual data.
// false by default.
// @CallOnAllProcessess
void SetShowExtractedSelection(bool);
vtkBooleanMacro(ShowExtractedSelection, bool);
vtkGetMacro(ShowExtractedSelection, bool);
// Description:
// Get the number of columns.
// @CallOnClient
vtkIdType GetNumberOfColumns();
// Description:
// Get the number of rows.
// @CallOnClient
vtkIdType GetNumberOfRows();
// Description:
// Returns the name for the column.
// @CallOnClient
const char* GetColumnName(vtkIdType index);
// Description:
// Returns the value at given location. This may result in collective
// operations is data is not available locally. This method can only be called
// on the CLIENT process for now.
// @CallOnClient
vtkVariant GetValue(vtkIdType row, vtkIdType col);
vtkVariant GetValueByName(vtkIdType row, const char* columnName);
// Description:
// Returns true if the row is selected.
bool IsRowSelected(vtkIdType row);
// Description:
// Returns true is the data for the particular row is locally available.
bool IsAvailable(vtkIdType row);
//***************************************************************************
// Forwarded to vtkSortedTableStreamer.
// Description:
// Get/Set the column name to sort by.
// @CallOnAllProcessess
void SetColumnNameToSort(const char*);
void SetColumnNameToSort() { this->SetColumnNameToSort(NULL); }
// Description:
// Get/Set the component to sort with. Use -1 (default) for magnitude.
// @CallOnAllProcessess
void SetComponentToSort(int val);
// Description:
// Get/Set whether the sort order must be Max to Min rather than Min to Max.
// @CallOnAllProcessess
void SetInvertSortOrder(bool);
// Description:
// Set the block size
// @CallOnAllProcessess
void SetBlockSize(vtkIdType val);
// Description:
// Export the contents of this view using the exporter.
bool Export(vtkCSVExporter* exporter);
// Description:
// Allow user to clear the cache if he needs to.
void ClearCache();
//BTX
// INTERNAL METHOD. Don't call directly.
void FetchBlockCallback(vtkIdType blockindex);
protected:
vtkSpreadSheetView();
~vtkSpreadSheetView();
// Description:
// On render streams all the data from the processes to the client.
// Returns 0 on failure.
// Note: Was removed from update because you can't call update()
// while in an update
int StreamToClient();
void OnRepresentationUpdated();
vtkTable* FetchBlock(vtkIdType blockindex);
bool ShowExtractedSelection;
vtkSortedTableStreamer* TableStreamer;
vtkMarkSelectedRows* TableSelectionMarker;
vtkReductionFilter* ReductionFilter;
vtkClientServerMoveData* DeliveryFilter;
vtkIdType NumberOfRows;
enum
{
FETCH_BLOCK_TAG = 394732
};
private:
vtkSpreadSheetView(const vtkSpreadSheetView&); // Not implemented
void operator=(const vtkSpreadSheetView&); // Not implemented
class vtkInternals;
friend class vtkInternals;
vtkInternals* Internals;
bool SomethingUpdated;
unsigned long RMICallbackTag;
//ETX
};
#endif