# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.2.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

"""
VrmlAPI module, see official documentation at
https://www.opencascade.com/doc/occt-7.7.0/refman/html/package_vrmlapi.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _VrmlAPI
else:
    import _VrmlAPI

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


class SwigPyIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _VrmlAPI.delete_SwigPyIterator

    def value(self):
        return _VrmlAPI.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _VrmlAPI.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _VrmlAPI.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _VrmlAPI.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _VrmlAPI.SwigPyIterator_equal(self, x)

    def copy(self):
        return _VrmlAPI.SwigPyIterator_copy(self)

    def next(self):
        return _VrmlAPI.SwigPyIterator_next(self)

    def __next__(self):
        return _VrmlAPI.SwigPyIterator___next__(self)

    def previous(self):
        return _VrmlAPI.SwigPyIterator_previous(self)

    def advance(self, n):
        return _VrmlAPI.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _VrmlAPI.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _VrmlAPI.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _VrmlAPI.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _VrmlAPI.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _VrmlAPI.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _VrmlAPI.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _VrmlAPI:
_VrmlAPI.SwigPyIterator_swigregister(SwigPyIterator)

def _dumps_object(klass):
    """ Overwrite default string output for any wrapped object.
    By default, __repr__ method returns something like:
    <OCC.Core.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 'TopoDS_Shape *' at 0x02BB0758> >
    This is too much verbose.
    We prefer :
    <class 'gp_Pnt'>
    or
    <class 'TopoDS_Shape'>
    """
    klass_name = str(klass.__class__).split(".")[3].split("'")[0]
    repr_string = "<class '" + klass_name + "'"
# for TopoDS_Shape, we also look for the base type
    if klass_name == "TopoDS_Shape":
        if klass.IsNull():
            repr_string += ": Null>"
            return repr_string
        st = klass.ShapeType()
        types = {OCC.Core.TopAbs.TopAbs_VERTEX: "Vertex",
                 OCC.Core.TopAbs.TopAbs_SOLID: "Solid",
                 OCC.Core.TopAbs.TopAbs_EDGE: "Edge",
                 OCC.Core.TopAbs.TopAbs_FACE: "Face",
                 OCC.Core.TopAbs.TopAbs_SHELL: "Shell",
                 OCC.Core.TopAbs.TopAbs_WIRE: "Wire",
                 OCC.Core.TopAbs.TopAbs_COMPOUND: "Compound",
                 OCC.Core.TopAbs.TopAbs_COMPSOLID: "Compsolid"}
        repr_string += "; Type:%s" % types[st]        
    elif hasattr(klass, "IsNull"):
        if klass.IsNull():
            repr_string += "; Null"
    repr_string += ">"
    return repr_string


def process_exception(error, method_name, class_name):
    return _VrmlAPI.process_exception(error, method_name, class_name)

from six import with_metaclass
import warnings
from OCC.Wrapper.wrapper_utils import Proxy, deprecated

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.TopoDS
import OCC.Core.Message
import OCC.Core.TCollection
import OCC.Core.OSD
import OCC.Core.TColStd
import OCC.Core.TopAbs
import OCC.Core.TopLoc
import OCC.Core.gp
import OCC.Core.RWMesh
import OCC.Core.TDF
import OCC.Core.TDocStd
import OCC.Core.CDF
import OCC.Core.CDM
import OCC.Core.Resource
import OCC.Core.PCDM
import OCC.Core.Storage
import OCC.Core.Graphic3d
import OCC.Core.BVH
import OCC.Core.Quantity
import OCC.Core.Aspect
import OCC.Core.Image
import OCC.Core.Bnd
import OCC.Core.TColgp
import OCC.Core.Media
import OCC.Core.XCAFPrs
import OCC.Core.AIS
import OCC.Core.SelectMgr
import OCC.Core.Select3D
import OCC.Core.SelectBasics
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.PrsMgr
import OCC.Core.Prs3d
import OCC.Core.Poly
import OCC.Core.TShort
import OCC.Core.V3d
import OCC.Core.StdSelect
import OCC.Core.TopTools
import OCC.Core.XCAFDoc
import OCC.Core.TDataStd
import OCC.Core.XCAFDimTolObjects
import OCC.Core.UnitsMethods
import OCC.Core.XCAFNoteObjects
import OCC.Core.XCAFView
import OCC.Core.TPrsStd
import OCC.Core.TDataXtd
import OCC.Core.TNaming
import OCC.Core.VrmlConverter
import OCC.Core.Adaptor3d
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.math
import OCC.Core.Vrml
import OCC.Core.DE
import OCC.Core.XSControl
import OCC.Core.IFSelect
import OCC.Core.Interface
import OCC.Core.MoniTool
import OCC.Core.Transfer
import OCC.Core.HLRAlgo
import OCC.Core.BRepAdaptor
import OCC.Core.GeomAdaptor
import OCC.Core.Geom2dAdaptor

from enum import IntEnum
from OCC.Core.Exception import *

VrmlAPI_ShadedRepresentation = _VrmlAPI.VrmlAPI_ShadedRepresentation
VrmlAPI_WireFrameRepresentation = _VrmlAPI.VrmlAPI_WireFrameRepresentation
VrmlAPI_BothRepresentation = _VrmlAPI.VrmlAPI_BothRepresentation


class VrmlAPI_RepresentationOfShape(IntEnum):
	VrmlAPI_ShadedRepresentation = 0
	VrmlAPI_WireFrameRepresentation = 1
	VrmlAPI_BothRepresentation = 2
VrmlAPI_ShadedRepresentation = VrmlAPI_RepresentationOfShape.VrmlAPI_ShadedRepresentation
VrmlAPI_WireFrameRepresentation = VrmlAPI_RepresentationOfShape.VrmlAPI_WireFrameRepresentation
VrmlAPI_BothRepresentation = VrmlAPI_RepresentationOfShape.VrmlAPI_BothRepresentation


def Handle_VrmlAPI_CafReader_Create():
    return _VrmlAPI.Handle_VrmlAPI_CafReader_Create()

def Handle_VrmlAPI_CafReader_DownCast(t):
    return _VrmlAPI.Handle_VrmlAPI_CafReader_DownCast(t)

def Handle_VrmlAPI_CafReader_IsNull(t):
    return _VrmlAPI.Handle_VrmlAPI_CafReader_IsNull(t)
class vrmlapi(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    @staticmethod
    def Write(*args):
        r"""

        Parameters
        ----------
        aShape: TopoDS_Shape
        aFileName: str
        aVersion: int (optional, default to 2)

        Return
        -------
        bool

        Description
        -----------
        With help of this class user can change parameters of writing. converts the shape ashape to vrml format of the passed version and writes it to the file identified by afilename using default parameters.

        """
        return _VrmlAPI.vrmlapi_Write(*args)

    __repr__ = _dumps_object


    def __init__(self):
        _VrmlAPI.vrmlapi_swiginit(self, _VrmlAPI.new_vrmlapi())
    __swig_destroy__ = _VrmlAPI.delete_vrmlapi

# Register vrmlapi in _VrmlAPI:
_VrmlAPI.vrmlapi_swigregister(vrmlapi)
class VrmlAPI_CafReader(OCC.Core.RWMesh.RWMesh_CafReader):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr


    @staticmethod
    def DownCast(t):
      return Handle_VrmlAPI_CafReader_DownCast(t)


    __repr__ = _dumps_object


    def __init__(self):
        _VrmlAPI.VrmlAPI_CafReader_swiginit(self, _VrmlAPI.new_VrmlAPI_CafReader())
    __swig_destroy__ = _VrmlAPI.delete_VrmlAPI_CafReader

# Register VrmlAPI_CafReader in _VrmlAPI:
_VrmlAPI.VrmlAPI_CafReader_swigregister(VrmlAPI_CafReader)
class VrmlAPI_Writer(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Creates a writer object with default parameters.

        """
        _VrmlAPI.VrmlAPI_Writer_swiginit(self, _VrmlAPI.new_VrmlAPI_Writer(*args))

    def Drawer(self, *args):
        r"""
        Return
        -------
        opencascade::handle<VrmlConverter_Drawer>

        Description
        -----------
        Returns drawer object.

        """
        return _VrmlAPI.VrmlAPI_Writer_Drawer(self, *args)

    def GetFreeBoundsMaterial(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Vrml_Material>

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetFreeBoundsMaterial(self, *args)

    def GetFrontMaterial(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Vrml_Material>

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetFrontMaterial(self, *args)

    def GetLineMaterial(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Vrml_Material>

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetLineMaterial(self, *args)

    def GetPointsMaterial(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Vrml_Material>

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetPointsMaterial(self, *args)

    def GetRepresentation(self, *args):
        r"""
        Return
        -------
        VrmlAPI_RepresentationOfShape

        Description
        -----------
        Returns the representation of the shape which is written to the vrml file. types of representation are set through the vrmlapi_representationofshape enumeration.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetRepresentation(self, *args)

    def GetUisoMaterial(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Vrml_Material>

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetUisoMaterial(self, *args)

    def GetUnfreeBoundsMaterial(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Vrml_Material>

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetUnfreeBoundsMaterial(self, *args)

    def GetVisoMaterial(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Vrml_Material>

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetVisoMaterial(self, *args)

    def GetWireMaterial(self, *args):
        r"""
        Return
        -------
        opencascade::handle<Vrml_Material>

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_GetWireMaterial(self, *args)

    def ResetToDefaults(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Resets all parameters (representation, deflection) to their default values..

        """
        return _VrmlAPI.VrmlAPI_Writer_ResetToDefaults(self, *args)

    def SetAmbientColorToMaterial(self, *args):
        r"""

        Parameters
        ----------
        aMaterial: Vrml_Material
        Color: Quantity_HArray1OfColor

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_SetAmbientColorToMaterial(self, *args)

    def SetDeflection(self, *args):
        r"""

        Parameters
        ----------
        aDef: float

        Return
        -------
        None

        Description
        -----------
        Sets the deflection adef of the mesh algorithm which is used to compute the shaded representation of the translated shape. the default value is -1. when the deflection value is less than 0, the deflection is calculated from the relative size of the shaped.

        """
        return _VrmlAPI.VrmlAPI_Writer_SetDeflection(self, *args)

    def SetDiffuseColorToMaterial(self, *args):
        r"""

        Parameters
        ----------
        aMaterial: Vrml_Material
        Color: Quantity_HArray1OfColor

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_SetDiffuseColorToMaterial(self, *args)

    def SetEmissiveColorToMaterial(self, *args):
        r"""

        Parameters
        ----------
        aMaterial: Vrml_Material
        Color: Quantity_HArray1OfColor

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_SetEmissiveColorToMaterial(self, *args)

    def SetRepresentation(self, *args):
        r"""

        Parameters
        ----------
        aRep: VrmlAPI_RepresentationOfShape

        Return
        -------
        None

        Description
        -----------
        Sets the representation of the shape arep which is written to the vrml file. the three options are: - shaded - wireframe - both shaded and wireframe (default) defined through the vrmlapi_representationofshape enumeration.

        """
        return _VrmlAPI.VrmlAPI_Writer_SetRepresentation(self, *args)

    def SetShininessToMaterial(self, *args):
        r"""

        Parameters
        ----------
        aMaterial: Vrml_Material
        aShininess: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_SetShininessToMaterial(self, *args)

    def SetSpecularColorToMaterial(self, *args):
        r"""

        Parameters
        ----------
        aMaterial: Vrml_Material
        Color: Quantity_HArray1OfColor

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _VrmlAPI.VrmlAPI_Writer_SetSpecularColorToMaterial(self, *args)

    def SetTransparencyToMaterial(self, *args):
        r"""

        Parameters
        ----------
        aMaterial: Vrml_Material
        aTransparency: float

        Return
        -------
        None

        Description
        -----------
        Set transparency to given material.

        """
        return _VrmlAPI.VrmlAPI_Writer_SetTransparencyToMaterial(self, *args)

    def Write(self, *args):
        r"""

        Parameters
        ----------
        aShape: TopoDS_Shape
        aFile: str
        aVersion: int (optional, default to 2)

        Return
        -------
        bool

        Description
        -----------
        Converts the shape ashape to vrml format of the passed version and writes it to the file identified by afile.

        """
        return _VrmlAPI.VrmlAPI_Writer_Write(self, *args)

    def WriteDoc(self, *args):
        r"""

        Parameters
        ----------
        theDoc: TDocStd_Document
        theFile: str
        theScale: float

        Return
        -------
        bool

        Description
        -----------
        Converts the document to vrml format of the passed version and writes it to the file identified by afile.

        """
        return _VrmlAPI.VrmlAPI_Writer_WriteDoc(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _VrmlAPI.delete_VrmlAPI_Writer

# Register VrmlAPI_Writer in _VrmlAPI:
_VrmlAPI.VrmlAPI_Writer_swigregister(VrmlAPI_Writer)



@deprecated
def vrmlapi_Write(*args):
	return vrmlapi.Write(*args)



