# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# 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.4.0/refman/html/package_vrmlapi.html
"""

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")

# 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 == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, 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) -> "PyObject *":
        return _VrmlAPI.SwigPyIterator_value(self)

    def incr(self, n: "size_t"=1) -> "swig::SwigPyIterator *":
        return _VrmlAPI.SwigPyIterator_incr(self, n)

    def decr(self, n: "size_t"=1) -> "swig::SwigPyIterator *":
        return _VrmlAPI.SwigPyIterator_decr(self, n)

    def distance(self, x: "SwigPyIterator") -> "ptrdiff_t":
        return _VrmlAPI.SwigPyIterator_distance(self, x)

    def equal(self, x: "SwigPyIterator") -> "bool":
        return _VrmlAPI.SwigPyIterator_equal(self, x)

    def copy(self) -> "swig::SwigPyIterator *":
        return _VrmlAPI.SwigPyIterator_copy(self)

    def next(self) -> "PyObject *":
        return _VrmlAPI.SwigPyIterator_next(self)

    def __next__(self) -> "PyObject *":
        return _VrmlAPI.SwigPyIterator___next__(self)

    def previous(self) -> "PyObject *":
        return _VrmlAPI.SwigPyIterator_previous(self)

    def advance(self, n: "ptrdiff_t") -> "swig::SwigPyIterator *":
        return _VrmlAPI.SwigPyIterator_advance(self, n)

    def __eq__(self, x: "SwigPyIterator") -> "bool":
        return _VrmlAPI.SwigPyIterator___eq__(self, x)

    def __ne__(self, x: "SwigPyIterator") -> "bool":
        return _VrmlAPI.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator &":
        return _VrmlAPI.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator &":
        return _VrmlAPI.SwigPyIterator___isub__(self, n)

    def __add__(self, n: "ptrdiff_t") -> "swig::SwigPyIterator *":
        return _VrmlAPI.SwigPyIterator___add__(self, n)

    def __sub__(self, *args) -> "ptrdiff_t":
        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: "Standard_Failure", method_name: "std::string", class_name: "std::string") -> "void":
    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.VrmlConverter
import OCC.Core.Adaptor3d
import OCC.Core.Geom
import OCC.Core.GeomAbs
import OCC.Core.TColgp
import OCC.Core.Adaptor2d
import OCC.Core.Geom2d
import OCC.Core.math
import OCC.Core.Aspect
import OCC.Core.Quantity
import OCC.Core.Image
import OCC.Core.Graphic3d
import OCC.Core.BVH
import OCC.Core.Bnd
import OCC.Core.Media
import OCC.Core.Vrml
import OCC.Core.TopTools
import OCC.Core.HLRAlgo
import OCC.Core.Poly
import OCC.Core.TShort
import OCC.Core.BRepAdaptor
import OCC.Core.GeomAdaptor
import OCC.Core.Geom2dAdaptor
import OCC.Core.TDocStd
import OCC.Core.TDF
import OCC.Core.CDF
import OCC.Core.CDM
import OCC.Core.Resource
import OCC.Core.PCDM
import OCC.Core.Storage

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

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) -> "Standard_Boolean":
        r"""
        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.

        Parameters
        ----------
        aShape: TopoDS_Shape
        aFileName: char *
        aVersion: int,optional
        	default value is 2

        Returns
        -------
        bool

        """
        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)

def vrmlapi_Write(*args) -> "Standard_Boolean":
    r"""
    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.

    Parameters
    ----------
    aShape: TopoDS_Shape
    aFileName: char *
    aVersion: int,optional
    	default value is 2

    Returns
    -------
    bool

    """
    return _VrmlAPI.vrmlapi_Write(*args)

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"""
        Creates a writer object with default parameters.

        Returns
        -------
        None

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

    def Drawer(self, *args) -> "opencascade::handle< VrmlConverter_Drawer >":
        r"""
        Returns drawer object.

        Returns
        -------
        opencascade::handle<VrmlConverter_Drawer>

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

    def GetFreeBoundsMaterial(self, *args) -> "opencascade::handle< Vrml_Material >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Vrml_Material>

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

    def GetFrontMaterial(self, *args) -> "opencascade::handle< Vrml_Material >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Vrml_Material>

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

    def GetLineMaterial(self, *args) -> "opencascade::handle< Vrml_Material >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Vrml_Material>

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

    def GetPointsMaterial(self, *args) -> "opencascade::handle< Vrml_Material >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Vrml_Material>

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

    def GetRepresentation(self, *args) -> "VrmlAPI_RepresentationOfShape":
        r"""
        Returns the representation of the shape which is written to the vrml file. types of representation are set through the vrmlapi_representationofshape enumeration.

        Returns
        -------
        VrmlAPI_RepresentationOfShape

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

    def GetUisoMaterial(self, *args) -> "opencascade::handle< Vrml_Material >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Vrml_Material>

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

    def GetUnfreeBoundsMaterial(self, *args) -> "opencascade::handle< Vrml_Material >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Vrml_Material>

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

    def GetVisoMaterial(self, *args) -> "opencascade::handle< Vrml_Material >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Vrml_Material>

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

    def GetWireMaterial(self, *args) -> "opencascade::handle< Vrml_Material >":
        r"""
        No available documentation.

        Returns
        -------
        opencascade::handle<Vrml_Material>

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

    def ResetToDefaults(self, *args) -> "void":
        r"""
        Resets all parameters (representation, deflection) to their default values..

        Returns
        -------
        None

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

    def SetAmbientColorToMaterial(self, *args) -> "void":
        r"""
        No available documentation.

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

        Returns
        -------
        None

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

    def SetDeflection(self, *args) -> "void":
        r"""
        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.

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

        Returns
        -------
        None

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

    def SetDiffuseColorToMaterial(self, *args) -> "void":
        r"""
        No available documentation.

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

        Returns
        -------
        None

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

    def SetEmissiveColorToMaterial(self, *args) -> "void":
        r"""
        No available documentation.

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

        Returns
        -------
        None

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

    def SetRepresentation(self, *args) -> "void":
        r"""
        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.

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

        Returns
        -------
        None

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

    def SetShininessToMaterial(self, *args) -> "void":
        r"""
        No available documentation.

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

        Returns
        -------
        None

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

    def SetSpecularColorToMaterial(self, *args) -> "void":
        r"""
        No available documentation.

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

        Returns
        -------
        None

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

    def SetTransparencyToMaterial(self, *args) -> "void":
        r"""
        Set transparency to given material.

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

        Returns
        -------
        None

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

    def Write(self, *args) -> "Standard_Boolean":
        r"""
        Converts the shape ashape to vrml format of the passed version and writes it to the file identified by afile.

        Parameters
        ----------
        aShape: TopoDS_Shape
        aFile: char *
        aVersion: int,optional
        	default value is 2

        Returns
        -------
        bool

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

    def WriteDoc(self, *args) -> "Standard_Boolean":
        r"""
        Converts the document to vrml format of the passed version and writes it to the file identified by afile.

        Parameters
        ----------
        theDoc: TDocStd_Document
        theFile: char *
        theScale: float

        Returns
        -------
        bool

        """
        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)





