class_docstr: PyVista wrapper for the VTK Camera class.
  
  Parameters
  ----------
  renderer : pyvista.Renderer, optional
      Renderer to attach the camera to.
  
  Examples
  --------
  Create a camera at the pyvista module level.
  
  >>> import pyvista as pv
  >>> camera = pv.Camera()
  
  Access the active camera of a plotter and get the position of the
  camera.
  
  >>> pl = pv.Plotter()
  >>> pl.camera.position
  (1.0, 1.0, 1.0)
class_docstr_tok: ["PyVista","wrapper","for","the","VTK","Camera","class",".","Parameters","--","--","--","--","--","renderer",":","pyvista.Renderer",",","optional","Renderer","to","attach","the","camera","to",".","Examples","--","--","--","--","Create","a","camera","at","the","pyvista","module","level",".",">",">",">","import","pyvista","as","pv",">",">",">","camera","=","pv.Camera","(",")","Access","the","active","camera","of","a","plotter","and","get","the","position","of","the","camera",".",">",">",">","pl","=","pv.Plotter","(",")",">",">",">","pl.camera.position","(","1.0",",","1.0",",","1.0",")"]
docstr: Write the camera parameters to a Paraview camera file (.pvcc extension).
  
  Parameters
  ----------
  filename : str or pathlib.Path
      Path to Paraview camera file (.pvcc).
  
  Examples
  --------
  >>> import pyvista as pv
  >>> pl = pv.Plotter()
  >>> pl.camera.to_paraview_pvcc("camera.pvcc")  # doctest:+SKIP
code: def to_paraview_pvcc(self, filename: Union[str, Path]):
      """Write the camera parameters to a Paraview camera file (.pvcc extension).
  
      Parameters
      ----------
      filename : str or pathlib.Path
          Path to Paraview camera file (.pvcc).
  
      Examples
      --------
      >>> import pyvista as pv
      >>> pl = pv.Plotter()
      >>> pl.camera.to_paraview_pvcc("camera.pvcc")  # doctest:+SKIP
      """
      root = ElementTree.Element("PVCameraConfiguration")
      root.attrib["description"] = "ParaView camera configuration"
      root.attrib["version"] = "1.0"
  
      dico = dict(
          group="views", type="RenderView", id="0", servers="21"
      )
      proxy = ElementTree.SubElement(root, "Proxy", dico)
  
      # Add tuples
      to_find = {
          "CameraPosition": "position",
          "CameraFocalPoint": "focal_point",
          "CameraViewUp": "up",
      }
      for name, attr in to_find.items():
          e = ElementTree.SubElement(
              proxy,
              "Property",
              dict(name=name, id=f"0.{name}", number_of_elements="3"),
          )
  
          for i in range(3):
              tmp = ElementTree.Element("Element")
              tmp.attrib["index"] = str(i)
              tmp.attrib["value"] = str(getattr(self, attr)[i])
              e.append(tmp)
  
      # Add single values
      to_find = {
          "CameraViewAngle": "view_angle",
          "CameraParallelScale": "parallel_scale",
          "CameraParallelProjection": "parallel_projection",
      }
  
      for name, attr in to_find.items():
          e = ElementTree.SubElement(
              proxy,
              "Property",
              dict(name=name, id=f"0.{name}", number_of_elements="1"),
          )
          tmp = ElementTree.Element("Element")
          tmp.attrib["index"] = "0"
  
          val = getattr(self, attr)
          if not isinstance(val, bool):
              tmp.attrib["value"] = str(val)
              e.append(tmp)
          else:
              tmp.attrib["value"] = "1" if val else "0"
              e.append(tmp)
              e.append(
                  ElementTree.Element(
                      "Domain", dict(name="bool", id=f"0.{name}.bool")
                  )
              )
  
      xmlstr = ElementTree.tostring(root).decode()
      newxml = md.parseString(xmlstr)
      with open(filename, "w") as outfile:
          outfile.write(newxml.toprettyxml(indent="\t", newl="\n"))
  
imports: from __future__ import annotations
  from pathlib import Path
  from typing import Union
  from weakref import proxy
  import xml.dom.minidom
  from xml.etree import ElementTree
  import numpy
  import pyvista
  from .None import _vtk
  from .helpers import view_vectors
label_desc: Use image node_id 8 for calling the Camera obj's underlying member method code with example usage: obj.to_paraview_pvcc(filename) without return types