VTK
|
Generalized histograms up to 3 dimensions. More...
#include <vtkImageAccumulate.h>
Public Types | |
typedef vtkImageAlgorithm | Superclass |
![]() | |
typedef vtkAlgorithm | Superclass |
![]() | |
typedef vtkObject | Superclass |
enum | DesiredOutputPrecision { SINGLE_PRECISION, DOUBLE_PRECISION, DEFAULT_PRECISION } |
Public Member Functions | |
virtual int | IsA (const char *type) |
vtkImageAccumulate * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) |
virtual void | SetComponentSpacing (double, double, double) |
virtual void | SetComponentSpacing (double[3]) |
virtual double * | GetComponentSpacing () |
virtual void | GetComponentSpacing (double &, double &, double &) |
virtual void | GetComponentSpacing (double[3]) |
virtual void | SetComponentOrigin (double, double, double) |
virtual void | SetComponentOrigin (double[3]) |
virtual double * | GetComponentOrigin () |
virtual void | GetComponentOrigin (double &, double &, double &) |
virtual void | GetComponentOrigin (double[3]) |
void | SetComponentExtent (int extent[6]) |
void | SetComponentExtent (int minX, int maxX, int minY, int maxY, int minZ, int maxZ) |
void | GetComponentExtent (int extent[6]) |
int * | GetComponentExtent () |
void | SetStencilData (vtkImageStencilData *stencil) |
vtkImageStencilData * | GetStencil () |
virtual void | SetReverseStencil (int) |
virtual void | ReverseStencilOn () |
virtual void | ReverseStencilOff () |
virtual int | GetReverseStencil () |
virtual double * | GetMin () |
virtual void | GetMin (double &, double &, double &) |
virtual void | GetMin (double[3]) |
virtual double * | GetMax () |
virtual void | GetMax (double &, double &, double &) |
virtual void | GetMax (double[3]) |
virtual double * | GetMean () |
virtual void | GetMean (double &, double &, double &) |
virtual void | GetMean (double[3]) |
virtual double * | GetStandardDeviation () |
virtual void | GetStandardDeviation (double &, double &, double &) |
virtual void | GetStandardDeviation (double[3]) |
virtual vtkIdType | GetVoxelCount () |
virtual void | SetIgnoreZero (int) |
virtual int | GetIgnoreZero () |
virtual void | IgnoreZeroOn () |
virtual void | IgnoreZeroOff () |
![]() | |
vtkImageAlgorithm * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) |
vtkImageData * | GetOutput () |
vtkImageData * | GetOutput (int) |
virtual void | SetOutput (vtkDataObject *d) |
virtual int | ProcessRequest (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
void | SetInputData (vtkDataObject *) |
void | SetInputData (int, vtkDataObject *) |
vtkDataObject * | GetInput (int port) |
vtkDataObject * | GetInput () |
vtkImageData * | GetImageDataInput (int port) |
virtual void | AddInputData (vtkDataObject *) |
virtual void | AddInputData (int, vtkDataObject *) |
![]() | |
vtkAlgorithm * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) |
int | HasExecutive () |
vtkExecutive * | GetExecutive () |
virtual void | SetExecutive (vtkExecutive *executive) |
virtual int | ModifyRequest (vtkInformation *request, int when) |
vtkInformation * | GetInputPortInformation (int port) |
vtkInformation * | GetOutputPortInformation (int port) |
int | GetNumberOfInputPorts () |
int | GetNumberOfOutputPorts () |
void | UpdateProgress (double amount) |
vtkInformation * | GetInputArrayInformation (int idx) |
void | RemoveAllInputs () |
vtkDataObject * | GetOutputDataObject (int port) |
virtual void | RemoveInputConnection (int port, vtkAlgorithmOutput *input) |
virtual void | RemoveInputConnection (int port, int idx) |
virtual void | RemoveAllInputConnections (int port) |
int | GetNumberOfInputConnections (int port) |
int | GetTotalNumberOfInputConnections () |
vtkAlgorithmOutput * | GetInputConnection (int port, int index) |
vtkAlgorithm * | GetInputAlgorithm (int port, int index, int &algPort) |
vtkAlgorithm * | GetInputAlgorithm (int port, int index) |
vtkExecutive * | GetInputExecutive (int port, int index) |
vtkInformation * | GetInputInformation (int port, int index) |
vtkInformation * | GetOutputInformation (int port) |
virtual void | UpdateInformation () |
virtual void | PropagateUpdateExtent () |
virtual void | UpdateWholeExtent () |
void | ConvertTotalInputToPortConnection (int ind, int &port, int &conn) |
virtual double | ComputePriority () |
int | SetUpdateExtentToWholeExtent (int port) |
int | SetUpdateExtentToWholeExtent () |
void | SetUpdateExtent (int port, int extent[6]) |
int | ProcessRequest (vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo) |
virtual int | ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, unsigned long *mtime) |
virtual vtkInformation * | GetInformation () |
virtual void | SetInformation (vtkInformation *) |
virtual void | Register (vtkObjectBase *o) |
virtual void | UnRegister (vtkObjectBase *o) |
virtual void | SetAbortExecute (int) |
virtual int | GetAbortExecute () |
virtual void | AbortExecuteOn () |
virtual void | AbortExecuteOff () |
virtual void | SetProgress (double) |
virtual double | GetProgress () |
void | SetProgressText (const char *ptext) |
virtual char * | GetProgressText () |
virtual unsigned long | GetErrorCode () |
virtual void | SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, const char *name) |
virtual void | SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) |
virtual void | SetInputArrayToProcess (int idx, vtkInformation *info) |
virtual void | SetInputArrayToProcess (int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName) |
vtkDataObject * | GetInputDataObject (int port, int connection) |
virtual void | SetInputConnection (int port, vtkAlgorithmOutput *input) |
virtual void | SetInputConnection (vtkAlgorithmOutput *input) |
virtual void | AddInputConnection (int port, vtkAlgorithmOutput *input) |
virtual void | AddInputConnection (vtkAlgorithmOutput *input) |
virtual void | SetInputDataObject (int port, vtkDataObject *data) |
virtual void | SetInputDataObject (vtkDataObject *data) |
virtual void | AddInputDataObject (int port, vtkDataObject *data) |
virtual void | AddInputDataObject (vtkDataObject *data) |
vtkAlgorithmOutput * | GetOutputPort (int index) |
vtkAlgorithmOutput * | GetOutputPort () |
vtkAlgorithm * | GetInputAlgorithm () |
vtkExecutive * | GetInputExecutive () |
vtkInformation * | GetInputInformation () |
virtual void | Update (int port) |
virtual void | Update () |
virtual void | SetReleaseDataFlag (int) |
virtual int | GetReleaseDataFlag () |
void | ReleaseDataFlagOn () |
void | ReleaseDataFlagOff () |
int | UpdateExtentIsEmpty (vtkInformation *pinfo, vtkDataObject *output) |
int | UpdateExtentIsEmpty (vtkInformation *pinfo, int extentType) |
void | SetUpdateExtent (int port, int piece, int numPieces, int ghostLevel) |
void | SetUpdateExtent (int piece, int numPieces, int ghostLevel) |
void | SetUpdateExtent (int extent[6]) |
int * | GetUpdateExtent () |
int * | GetUpdateExtent (int port) |
void | GetUpdateExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1) |
void | GetUpdateExtent (int port, int &x0, int &x1, int &y0, int &y1, int &z0, int &z1) |
void | GetUpdateExtent (int extent[6]) |
void | GetUpdateExtent (int port, int extent[6]) |
int | GetUpdatePiece () |
int | GetUpdatePiece (int port) |
int | GetUpdateNumberOfPieces () |
int | GetUpdateNumberOfPieces (int port) |
int | GetUpdateGhostLevel () |
int | GetUpdateGhostLevel (int port) |
Static Public Member Functions | |
static vtkImageAccumulate * | New () |
static int | IsTypeOf (const char *type) |
static vtkImageAccumulate * | SafeDownCast (vtkObjectBase *o) |
![]() | |
static int | IsTypeOf (const char *type) |
static vtkImageAlgorithm * | SafeDownCast (vtkObjectBase *o) |
![]() | |
static vtkAlgorithm * | New () |
static int | IsTypeOf (const char *type) |
static vtkAlgorithm * | SafeDownCast (vtkObjectBase *o) |
static void | SetDefaultExecutivePrototype (vtkExecutive *proto) |
static vtkInformationIntegerKey * | INPUT_IS_OPTIONAL () |
static vtkInformationIntegerKey * | INPUT_IS_REPEATABLE () |
static vtkInformationInformationVectorKey * | INPUT_REQUIRED_FIELDS () |
static vtkInformationStringVectorKey * | INPUT_REQUIRED_DATA_TYPE () |
static vtkInformationInformationVectorKey * | INPUT_ARRAYS_TO_PROCESS () |
static vtkInformationIntegerKey * | INPUT_PORT () |
static vtkInformationIntegerKey * | INPUT_CONNECTION () |
static vtkInformationIntegerKey * | PRESERVES_DATASET () |
static vtkInformationIntegerKey * | PRESERVES_GEOMETRY () |
static vtkInformationIntegerKey * | PRESERVES_BOUNDS () |
static vtkInformationIntegerKey * | PRESERVES_TOPOLOGY () |
static vtkInformationIntegerKey * | PRESERVES_ATTRIBUTES () |
static vtkInformationIntegerKey * | PRESERVES_RANGES () |
static vtkInformationIntegerKey * | MANAGES_METAINFORMATION () |
Protected Member Functions | |
virtual vtkObjectBase * | NewInstanceInternal () const |
vtkImageAccumulate () | |
~vtkImageAccumulate () | |
virtual int | RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
virtual int | RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
virtual int | RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) |
virtual int | FillInputPortInformation (int port, vtkInformation *info) |
![]() | |
vtkImageAlgorithm () | |
~vtkImageAlgorithm () | |
virtual void | CopyInputArrayAttributesToOutput (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) |
virtual void | ExecuteDataWithInformation (vtkDataObject *output, vtkInformation *outInfo) |
virtual void | ExecuteData (vtkDataObject *output) |
virtual void | Execute () |
virtual void | AllocateOutputData (vtkImageData *out, vtkInformation *outInfo, int *uExtent) |
virtual vtkImageData * | AllocateOutputData (vtkDataObject *out, vtkInformation *outInfo) |
virtual void | CopyAttributeData (vtkImageData *in, vtkImageData *out, vtkInformationVector **inputVector) |
virtual int | FillOutputPortInformation (int port, vtkInformation *info) |
![]() | |
vtkAlgorithm () | |
~vtkAlgorithm () | |
virtual void | SetNumberOfInputPorts (int n) |
virtual void | SetNumberOfOutputPorts (int n) |
int | InputPortIndexInRange (int index, const char *action) |
int | OutputPortIndexInRange (int index, const char *action) |
int | GetInputArrayAssociation (int idx, vtkInformationVector **inputVector) |
virtual vtkExecutive * | CreateDefaultExecutive () |
virtual void | ReportReferences (vtkGarbageCollector *) |
virtual void | SetNumberOfInputConnections (int port, int n) |
int | GetInputArrayAssociation (int idx, int connection, vtkInformationVector **inputVector) |
int | GetInputArrayAssociation (int idx, vtkDataObject *input) |
vtkDataArray * | GetInputArrayToProcess (int idx, vtkInformationVector **inputVector) |
vtkDataArray * | GetInputArrayToProcess (int idx, vtkInformationVector **inputVector, int &association) |
vtkDataArray * | GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector) |
vtkDataArray * | GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association) |
vtkDataArray * | GetInputArrayToProcess (int idx, vtkDataObject *input) |
vtkDataArray * | GetInputArrayToProcess (int idx, vtkDataObject *input, int &association) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector, int &association) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkDataObject *input) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkDataObject *input, int &association) |
vtkInformation * | GetInputArrayFieldInformation (int idx, vtkInformationVector **inputVector) |
virtual void | SetNthInputConnection (int port, int index, vtkAlgorithmOutput *input) |
void | SetInputDataInternal (int port, vtkDataObject *input) |
void | AddInputDataInternal (int port, vtkDataObject *input) |
virtual void | SetErrorCode (unsigned long) |
Protected Attributes | |
double | ComponentSpacing [3] |
double | ComponentOrigin [3] |
int | ComponentExtent [6] |
int | IgnoreZero |
double | Min [3] |
double | Max [3] |
double | Mean [3] |
double | StandardDeviation [3] |
vtkIdType | VoxelCount |
int | ReverseStencil |
![]() | |
vtkInformation * | Information |
double | Progress |
char * | ProgressText |
unsigned long | ErrorCode |
Additional Inherited Members | |
![]() | |
int | AbortExecute |
![]() | |
static vtkInformationIntegerKey * | PORT_REQUIREMENTS_FILLED () |
![]() | |
static vtkExecutive * | DefaultExecutivePrototype |
Generalized histograms up to 3 dimensions.
vtkImageAccumulate - This filter divides component space into discrete bins. It then counts the number of pixels associated with each bin. The dimensionality of the output depends on how many components the input pixels have. An input images with N components per pixels will result in an N-dimensional histogram, where N can be 1, 2, or 3. The input can be any type, but the output is always int. Some statistics are computed on the pixel values at the same time. The SetStencil and ReverseStencil functions allow the statistics to be computed on an arbitrary portion of the input data. See the documentation for vtkImageStencilData for more information.
This filter also supports ignoring pixels with value equal to 0. Using this option with vtkImageMask may result in results being slightly off since 0 could be a valid value from your input.
Definition at line 50 of file vtkImageAccumulate.h.
Definition at line 54 of file vtkImageAccumulate.h.
|
protected |
|
protected |
|
static |
|
static |
|
virtual |
Reimplemented from vtkImageAlgorithm.
|
static |
|
protectedvirtual |
Reimplemented from vtkImageAlgorithm.
vtkImageAccumulate* vtkImageAccumulate::NewInstance | ( | ) | const |
void vtkImageAccumulate::PrintSelf | ( | ostream & | os, |
vtkIndent | indent | ||
) |
|
virtual |
Set/Get - The component spacing is the dimension of each bin. This ends up being the spacing of the output "image". If the number of input scalar components are less than three, then some of these spacing values are ignored. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this spacing should be set to 100, 0, 0. Initial value is (1.0,1.0,1.0).
|
virtual |
Set/Get - The component spacing is the dimension of each bin. This ends up being the spacing of the output "image". If the number of input scalar components are less than three, then some of these spacing values are ignored. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this spacing should be set to 100, 0, 0. Initial value is (1.0,1.0,1.0).
|
virtual |
Set/Get - The component spacing is the dimension of each bin. This ends up being the spacing of the output "image". If the number of input scalar components are less than three, then some of these spacing values are ignored. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this spacing should be set to 100, 0, 0. Initial value is (1.0,1.0,1.0).
|
virtual |
Set/Get - The component spacing is the dimension of each bin. This ends up being the spacing of the output "image". If the number of input scalar components are less than three, then some of these spacing values are ignored. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this spacing should be set to 100, 0, 0. Initial value is (1.0,1.0,1.0).
|
virtual |
Set/Get - The component spacing is the dimension of each bin. This ends up being the spacing of the output "image". If the number of input scalar components are less than three, then some of these spacing values are ignored. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this spacing should be set to 100, 0, 0. Initial value is (1.0,1.0,1.0).
|
virtual |
Set/Get - The component origin is the location of bin (0, 0, 0). Note that if the Component extent does not include the value (0,0,0), then this origin bin will not actually be in the output. The origin of the output ends up being the same as the componenet origin. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this origin should be set to 1000, 0, 0. Initial value is (0.0,0.0,0.0).
|
virtual |
Set/Get - The component origin is the location of bin (0, 0, 0). Note that if the Component extent does not include the value (0,0,0), then this origin bin will not actually be in the output. The origin of the output ends up being the same as the componenet origin. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this origin should be set to 1000, 0, 0. Initial value is (0.0,0.0,0.0).
|
virtual |
Set/Get - The component origin is the location of bin (0, 0, 0). Note that if the Component extent does not include the value (0,0,0), then this origin bin will not actually be in the output. The origin of the output ends up being the same as the componenet origin. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this origin should be set to 1000, 0, 0. Initial value is (0.0,0.0,0.0).
|
virtual |
Set/Get - The component origin is the location of bin (0, 0, 0). Note that if the Component extent does not include the value (0,0,0), then this origin bin will not actually be in the output. The origin of the output ends up being the same as the componenet origin. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this origin should be set to 1000, 0, 0. Initial value is (0.0,0.0,0.0).
|
virtual |
Set/Get - The component origin is the location of bin (0, 0, 0). Note that if the Component extent does not include the value (0,0,0), then this origin bin will not actually be in the output. The origin of the output ends up being the same as the componenet origin. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this origin should be set to 1000, 0, 0. Initial value is (0.0,0.0,0.0).
void vtkImageAccumulate::SetComponentExtent | ( | int | extent[6] | ) |
Set/Get - The component extent sets the number/extent of the bins. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this extent should be set to 0, 9, 0, 0, 0, 0. The extent specifies inclusive min/max values. This implies that the top extent should be set to the number of bins - 1. Initial value is (0,255,0,0,0,0)
void vtkImageAccumulate::SetComponentExtent | ( | int | minX, |
int | maxX, | ||
int | minY, | ||
int | maxY, | ||
int | minZ, | ||
int | maxZ | ||
) |
Set/Get - The component extent sets the number/extent of the bins. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this extent should be set to 0, 9, 0, 0, 0, 0. The extent specifies inclusive min/max values. This implies that the top extent should be set to the number of bins - 1. Initial value is (0,255,0,0,0,0)
void vtkImageAccumulate::GetComponentExtent | ( | int | extent[6] | ) |
Set/Get - The component extent sets the number/extent of the bins. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this extent should be set to 0, 9, 0, 0, 0, 0. The extent specifies inclusive min/max values. This implies that the top extent should be set to the number of bins - 1. Initial value is (0,255,0,0,0,0)
|
inline |
Set/Get - The component extent sets the number/extent of the bins. For a 1D histogram with 10 bins spanning the values 1000 to 2000, this extent should be set to 0, 9, 0, 0, 0, 0. The extent specifies inclusive min/max values. This implies that the top extent should be set to the number of bins - 1. Initial value is (0,255,0,0,0,0)
Definition at line 89 of file vtkImageAccumulate.h.
void vtkImageAccumulate::SetStencilData | ( | vtkImageStencilData * | stencil | ) |
Use a stencil to specify which voxels to accumulate. Backcompatible methods. It set and get the stencil on input port 1. Initial value is NULL.
vtkImageStencilData* vtkImageAccumulate::GetStencil | ( | ) |
Use a stencil to specify which voxels to accumulate. Backcompatible methods. It set and get the stencil on input port 1. Initial value is NULL.
|
virtual |
Reverse the stencil. Initial value is false.
|
virtual |
Reverse the stencil. Initial value is false.
|
virtual |
Reverse the stencil. Initial value is false.
|
virtual |
Reverse the stencil. Initial value is false.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Get the statistics information for the data. The values only make sense after the execution of the filter. Initial values are 0.
|
virtual |
Should the data with value 0 be ignored? Initial value is false.
|
virtual |
Should the data with value 0 be ignored? Initial value is false.
|
virtual |
Should the data with value 0 be ignored? Initial value is false.
|
virtual |
Should the data with value 0 be ignored? Initial value is false.
|
protectedvirtual |
Subclasses can reimplement this method to translate the update extent requests from each output port into update extent requests for the input connections.
Reimplemented from vtkImageAlgorithm.
|
protectedvirtual |
Subclasses can reimplement this method to collect information from their inputs and set information for their outputs.
Reimplemented from vtkImageAlgorithm.
|
protectedvirtual |
This is called in response to a REQUEST_DATA request from the executive. Subclasses should override either this method or the ExecuteDataWithInformation method in order to generate data for their outputs. For images, the output arrays will already be allocated, so all that is necessary is to fill in the voxel values.
Reimplemented from vtkImageAlgorithm.
|
protectedvirtual |
These method should be reimplemented by subclasses that have more than a single input or single output. See vtkAlgorithm for more information.
Reimplemented from vtkImageAlgorithm.
|
protected |
Definition at line 129 of file vtkImageAccumulate.h.
|
protected |
Definition at line 130 of file vtkImageAccumulate.h.
|
protected |
Definition at line 131 of file vtkImageAccumulate.h.
|
protected |
Definition at line 143 of file vtkImageAccumulate.h.
|
protected |
Definition at line 144 of file vtkImageAccumulate.h.
|
protected |
Definition at line 145 of file vtkImageAccumulate.h.
|
protected |
Definition at line 146 of file vtkImageAccumulate.h.
|
protected |
Definition at line 147 of file vtkImageAccumulate.h.
|
protected |
Definition at line 148 of file vtkImageAccumulate.h.
|
protected |
Definition at line 150 of file vtkImageAccumulate.h.