<ServerManagerConfiguration>
  <ProxyGroup name="extract_writers">
    <!-- =================================================================== -->
    <ImageExtractWriterProxy name="PNG">
      <StringVectorProperty name="FileName" number_of_elements="1" default_values="{prefix}_{timestep:06d}{camera}.png">
        <Documentation>
          Specify the filename to use.
        </Documentation>
      </StringVectorProperty>

      <SubProxy>
        <Proxy name="Writer" proxygroup="misc" proxyname="SaveScreenshot" />
        <ExposedProperties>
          <Property name="View" />
          <PropertyGroup label="Size and Scaling">
            <Property name="ImageResolution" />
            <Property name="FontScaling" />
          </PropertyGroup>
          <PropertyGroup label="Coloring">
            <Property name="OverrideColorPalette" panel_visibility="advanced" />
            <Property name="StereoMode" panel_visibility="advanced" />
            <Property name="TransparentBackground" panel_visibility="advanced" />
          </PropertyGroup>
          <PropertyGroup label="Image Options">
            <Property name="Format" panel_visibility="advanced" />
          </PropertyGroup>
        </ExposedProperties>
      </SubProxy>

      <IntVectorProperty name="ResetDisplay"
                         number_of_elements="1"
                         default_values="0">
        <BooleanDomain name="bool" />
        <Documentation>
          When set, the camera (or viewport) will be reset to ensure all data
          is visible.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="CameraMode"
                         number_of_elements="1"
                         default_values="0">
        <Documentation>
          Select whether to the camera should be moved in the the scence to generate
          images from multiple view points. Default is **Static** which means the camera
          is not moved. Another option is **Phi-Theta** which results in moving the camera
          around the focal point over a sphere of radius equal to the focal distance.
          This is only applicable for views that have a camera i.e. does not apply to
          chart views and other 2D plotting views.
        </Documentation>
        <EnumerationDomain name="enum">
          <Entry value="0" text="Static" />
          <Entry value="1" text="Phi-Theta" />
        </EnumerationDomain>
      </IntVectorProperty>

      <IntVectorProperty name="PhiResolution"
                         number_of_elements="1"
                         default_values="6" >
        <IntRangeDomain name="range" min="1" max="360" />
        <Documentation>
          Number of samples along the phi direction.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator" mode="visibility" property="CameraMode" value="1" />
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty name="ThetaResolution"
                         number_of_elements="1"
                         default_values="6" >
        <IntRangeDomain name="range" min="1" max="360" />
       <Documentation>
         Number of samples along the theta direction.
       </Documentation>
       <Hints>
         <PropertyWidgetDecorator type="GenericDecorator" mode="visibility" property="CameraMode" value="1" />
       </Hints>
      </IntVectorProperty>

      <PropertyGroup label="Miscellaneous">
        <Property name="ResetDisplay" />
        <Property name="CameraMode" />
        <Property name="PhiResolution" />
        <Property name="ThetaResolution" />
      </PropertyGroup>

      <Hints>
        <ShowInMenu category="Image" />
      </Hints>
    </ImageExtractWriterProxy>

    <!-- =================================================================== -->
    <ImageExtractWriterProxy name="JPG">
      <StringVectorProperty name="FileName" number_of_elements="1" default_values="{prefix}_{timestep:06d}{camera}.jpg">
        <Documentation>
          Specify the filename to use.
        </Documentation>
      </StringVectorProperty>

      <SubProxy>
        <Proxy name="Writer" proxygroup="misc" proxyname="SaveScreenshot" />
        <ExposedProperties>
          <Property name="View" />
          <PropertyGroup label="Size and Scaling">
            <Property name="ImageResolution" />
            <Property name="FontScaling" />
          </PropertyGroup>
          <PropertyGroup label="Coloring">
            <Property name="OverrideColorPalette" panel_visibility="advanced" />
            <Property name="StereoMode" panel_visibility="advanced" />
            <Property name="TransparentBackground" panel_visibility="advanced" />
          </PropertyGroup>
          <PropertyGroup label="Image Options">
            <Property name="Format" panel_visibility="advanced" />
          </PropertyGroup>
        </ExposedProperties>
      </SubProxy>

      <IntVectorProperty name="ResetDisplay"
                         number_of_elements="1"
                         default_values="0">
        <BooleanDomain name="bool" />
        <Documentation>
          When set, the camera (or viewport) will be reset to ensure all data
          is visible.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="CameraMode"
                         number_of_elements="1"
                         default_values="0">
        <Documentation>
          Select whether to the camera should be moved in the the scence to generate
          images from multiple view points. Default is **Static** which means the camera
          is not moved. Another option is **Phi-Theta** which results in moving the camera
          around the focal point over a sphere of radius equal to the focal distance.
          This is only applicable for views that have a camera i.e. does not apply to
          chart views and other 2D plotting views.
        </Documentation>
        <EnumerationDomain name="enum">
          <Entry value="0" text="Static" />
          <Entry value="1" text="Phi-Theta" />
        </EnumerationDomain>
      </IntVectorProperty>

      <IntVectorProperty name="PhiResolution"
                         number_of_elements="1"
                         default_values="6" >
        <IntRangeDomain name="range" min="1" max="360" />
        <Documentation>
          Number of samples along the phi direction.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator" mode="visibility" property="CameraMode" value="1" />
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty name="ThetaResolution"
                         number_of_elements="1"
                         default_values="6" >
        <IntRangeDomain name="range" min="1" max="360" />
       <Documentation>
         Number of samples along the theta direction.
       </Documentation>
       <Hints>
         <PropertyWidgetDecorator type="GenericDecorator" mode="visibility" property="CameraMode" value="1" />
       </Hints>
      </IntVectorProperty>

      <PropertyGroup label="Miscellaneous">
        <Property name="ResetDisplay" />
        <Property name="CameraMode" />
        <Property name="PhiResolution" />
        <Property name="ThetaResolution" />
      </PropertyGroup>

      <Hints>
        <ShowInMenu category="Image" />
      </Hints>
    </ImageExtractWriterProxy>

    <!-- =================================================================== -->
    <CinemaVolumetricImageExtractWriterProxy name="CinemaVolumetricPNG"
      label="Cinema-Volumetric PNG"
      base_proxygroup="extract_writers"
      base_proxyname="PNG">

      <IntVectorProperty name="OpacityLevels"
        number_of_elements="1"
        default_values="1">
        <Documentation>
          Specify the number of opacity levels.
        </Documentation>
        <IntRangeDomain name="range" min="1" max="5" />
      </IntVectorProperty>

      <IntVectorProperty name="Functions"
        number_of_elements="1"
        default_values="5">
        <IntRangeDomain name="range" min="2" max="20" />
        <Documentation>
          Number of functions.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="SingleFunctionOnly"
        number_of_elements="1"
        default_values="0">
        <BooleanDomain name="bool" />
        <Documentation>
          Have only 1 function active at a time.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="MaximumNumberOfFunctions"
        number_of_elements="1"
        default_values="4">
        <Documentation>
          Maximum number of active functions at a time.
          and single function only is disabled.
        </Documentation>
        <IntRangeDomain name="range" min="1" max="64" />
        <Hints>
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator" mode="enabled_state" property="SingleFunctionOnly" value="0" />
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>

      <DoubleVectorProperty name="MaximumOpacityValue"
        number_of_elements="1"
        default_values="1">
        <DoubleRangeDomain name="range" min="0" max="1" />
        <Documentation>
          The maximum opacity value.
        </Documentation>
      </DoubleVectorProperty>

      <IntVectorProperty name="SpecifiedRange"
        number_of_elements="1"
        default_values="0">
        <BooleanDomain name="bool" />
        <Documentation>
          Use a specified field range as the range for the LUT.
        </Documentation>
      </IntVectorProperty>

      <DoubleVectorProperty name="Range"
        default_values="none"
        number_of_elements="2">
        <Documentation>
          A user defined range for the LUT. Only meaningful if volume rendering and specified range are enabled.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="CompositeDecorator">
            <Expression type="and">
              <PropertyWidgetDecorator type="GenericDecorator" mode="enabled_state" property="SpecifiedRange" value="1" />
            </Expression>
          </PropertyWidgetDecorator>
        </Hints>
      </DoubleVectorProperty>

      <IntVectorProperty name="ExportTransferFunctions"
        number_of_elements="1"
        default_values="0">
        <BooleanDomain name="bool" />
        <Documentation>
          Export the transfer functions to JSON files.
        </Documentation>
      </IntVectorProperty>

      <Hints>
        <ShowInMenu category="Experimental" />
      </Hints>
      <!-- end of CinemaVolumetricPNG -->
    </CinemaVolumetricImageExtractWriterProxy>

    <!-- =================================================================== -->
    <RecolorableImageExtractWriterProxy name="RecolorableImage"
      label="Recolorable Image">
      <StringVectorProperty name="FileName" number_of_elements="1" default_values="{prefix}_{timestep:06d}{camera}.vtk">
        <Documentation>
          Specify the filename to use.
        </Documentation>
      </StringVectorProperty>

      <SubProxy>
        <Proxy name="Writer" proxygroup="misc" proxyname="SaveScreenshot" />
        <ExposedProperties>
          <Property name="View" />
          <PropertyGroup label="Size and Scaling">
            <Property name="ImageResolution" />
          </PropertyGroup>
          <PropertyGroup label="Image Options">
            <Property name="Format" panel_visibility="advanced" />
          </PropertyGroup>
        </ExposedProperties>
      </SubProxy>

      <InputProperty name="DataSource"
        panel_widget="input_selector"
        panel_visibility="default">
        <ProxyGroupDomain name="groups">
          <Group name="sources" />
        </ProxyGroupDomain>
        <Documentation>
          Select the primary data producer data values from which are used to generate
          the recolorable image.
        </Documentation>
      </InputProperty>

      <PropertyGroup label="Recolorable Image Parameters">
        <Property name="DataSource" />
      </PropertyGroup>

      <IntVectorProperty name="ResetDisplay"
                         number_of_elements="1"
                         default_values="0">
        <BooleanDomain name="bool" />
        <Documentation>
          When set, the camera (or viewport) will be reset to ensure all data
          is visible.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="CameraMode"
                         number_of_elements="1"
                         default_values="0">
        <Documentation>
          Select whether to the camera should be moved in the the scence to generate
          images from multiple view points. Default is **Static** which means the camera
          is not moved. Another option is **Phi-Theta** which results in moving the camera
          around the focal point over a sphere of radius equal to the focal distance.
          This is only applicable for views that have a camera i.e. does not apply to
          chart views and other 2D plotting views.
        </Documentation>
        <EnumerationDomain name="enum">
          <Entry value="0" text="Static" />
          <Entry value="1" text="Phi-Theta" />
        </EnumerationDomain>
      </IntVectorProperty>

      <IntVectorProperty name="PhiResolution"
                         number_of_elements="1"
                         default_values="6" >
        <IntRangeDomain name="range" min="1" max="360" />
        <Documentation>
          Number of samples along the phi direction.
        </Documentation>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator" mode="visibility" property="CameraMode" value="1" />
        </Hints>
      </IntVectorProperty>

      <IntVectorProperty name="ThetaResolution"
                         number_of_elements="1"
                         default_values="6" >
        <IntRangeDomain name="range" min="1" max="360" />
       <Documentation>
         Number of samples along the theta direction.
       </Documentation>
       <Hints>
         <PropertyWidgetDecorator type="GenericDecorator" mode="visibility" property="CameraMode" value="1" />
       </Hints>
      </IntVectorProperty>

      <PropertyGroup label="Miscellaneous">
        <Property name="ResetDisplay" />
        <Property name="CameraMode" />
        <Property name="PhiResolution" />
        <Property name="ThetaResolution" />
      </PropertyGroup>

      <Hints>
        <ShowInMenu category="Experimental" />
      </Hints>

      <!-- end of RecolorableImage -->
    </RecolorableImageExtractWriterProxy>

    <!-- end of 'extract_writers' -->
  </ProxyGroup>
</ServerManagerConfiguration>
