# CONFIDENTIAL. (C) 2017 OpenEye Scientific Software Inc.
# All rights reserved.
# 
# ALL SOFTWARE BELOW IS PROPRIETARY AND CONFIDENTIAL TO OPENEYE
# SCIENTIFIC SOFTWARE INC., AND IS SUBJECT TO THE FULL PROTECTION OF
# COPYRIGHT AND TRADESECRET LAW.
# Copying or modifying this software is strictly prohibited and illegal.
# Using this software without a valid license from OpenEye is strictly
# prohibited and illegal.  De-obfuscating, de-minimizing, or any other
# attempt to reverse engineer or discover the workings of this software,
# is strictly prohibited. Even if software is exposed or visible, it is
# still proprietary and confidential and the above prohibitions apply.
# This software is NOT "Sample Code". For purposes of customization or
# interoperation with other software you must use Sample Code
# specifically labeled as such.
# Please contact OpenEye at eyesopen.com/legal if you have any questions
# about this warning.


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





from sys import version_info

def swig_import_helper():
    from os.path import dirname
    import imp
    fp = None
    try:
        fp, pathname, description = imp.find_module('_oechem', [dirname(__file__)])
    except ImportError:
        # OpenEye Import Statements
        fp, pathname, description = imp.find_module('libs', [dirname(__file__)])
        try:
            libs = imp.load_module('libs', fp, pathname, description)
        finally:
            if fp is not None:
                fp.close()

        import sys
        assert not sys.platform.startswith('win')
        
        _oespicoli = libs.OEGetModule('_oespicoli145')
        return _oespicoli

_oespicoli = swig_import_helper()
del swig_import_helper
del version_info
try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.


def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
    if (name == "thisown"):
        return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name, None)
    if method:
        return method(self, value)
    if (not static):
        object.__setattr__(self, name, value)
    else:
        raise AttributeError("You cannot add attributes to %s" % self)


def _swig_setattr(self, class_type, name, value):
    return _swig_setattr_nondynamic(self, class_type, name, value, 0)


def _swig_getattr_nondynamic(self, class_type, name, static=1):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    if (not static):
        return object.__getattr__(self, name)
    else:
        raise AttributeError(name)

def _swig_getattr(self, class_type, name):
    return _swig_getattr_nondynamic(self, class_type, name, 0)


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

try:
    _object = object
    _newclass = 1
except AttributeError:
    class _object:
        pass
    _newclass = 0



def _swig_setattr_nondynamic_method(set):
    def set_attr(self, name, value):
        if (name == "thisown"):
            return self.this.own(value)
        if hasattr(self, name) or (name == "this"):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add attributes to %s" % self)
    return set_attr


try:
    import weakref
    weakref_proxy = weakref.proxy
except Exception:
    weakref_proxy = lambda x: x



def GetMainDict() -> "PyObject *":
    return _oespicoli.GetMainDict()
GetMainDict = _oespicoli.GetMainDict

def TypeToPyString(type: 'void const *') -> "PyObject *":
    return _oespicoli.TypeToPyString(type)
TypeToPyString = _oespicoli.TypeToPyString
class OEInternalFunctionPointer(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self, *args):
        this = _oespicoli.new_OEInternalFunctionPointer(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def Add(self, b: 'OEBase', tag: 'unsigned int', data: 'PyObject *') -> "bool":
        return _oespicoli.OEInternalFunctionPointer_Add(self, b, tag, data)
    __swig_destroy__ = _oespicoli.delete_OEInternalFunctionPointer
    __del__ = lambda self: None
OEInternalFunctionPointer_swigregister = _oespicoli.OEInternalFunctionPointer_swigregister
OEInternalFunctionPointer_swigregister(OEInternalFunctionPointer)


def OEInternalGetGenericData(type: 'void const *') -> "OEInternalFunctionPointer *":
    return _oespicoli.OEInternalGetGenericData(type)
OEInternalGetGenericData = _oespicoli.OEInternalGetGenericData
import openeye.oechem as oechem

_oespicoli.OEVoxelizeMethod_Distance_swigconstant(_oespicoli)
OEVoxelizeMethod_Distance = _oespicoli.OEVoxelizeMethod_Distance

_oespicoli.OEVoxelizeMethod_Gaussian_swigconstant(_oespicoli)
OEVoxelizeMethod_Gaussian = _oespicoli.OEVoxelizeMethod_Gaussian

_oespicoli.OEVoxelizeMethod_Blank_swigconstant(_oespicoli)
OEVoxelizeMethod_Blank = _oespicoli.OEVoxelizeMethod_Blank

_oespicoli.OEVoxelizeMethod_Blur_swigconstant(_oespicoli)
OEVoxelizeMethod_Blur = _oespicoli.OEVoxelizeMethod_Blur

OEVoxelizeMethod_Default = OEVoxelizeMethod_Distance


_oespicoli.OEPolygonizeMethod_Grasp_swigconstant(_oespicoli)
OEPolygonizeMethod_Grasp = _oespicoli.OEPolygonizeMethod_Grasp

_oespicoli.OEPolygonizeMethod_Compact_swigconstant(_oespicoli)
OEPolygonizeMethod_Compact = _oespicoli.OEPolygonizeMethod_Compact

OEPolygonizeMethod_Default = OEPolygonizeMethod_Grasp


_oespicoli.OESurfaceFileType_UNDEFINED_swigconstant(_oespicoli)
OESurfaceFileType_UNDEFINED = _oespicoli.OESurfaceFileType_UNDEFINED

_oespicoli.OESurfaceFileType_Grasp_swigconstant(_oespicoli)
OESurfaceFileType_Grasp = _oespicoli.OESurfaceFileType_Grasp

_oespicoli.OESurfaceFileType_OESurface_swigconstant(_oespicoli)
OESurfaceFileType_OESurface = _oespicoli.OESurfaceFileType_OESurface

_oespicoli.OEEdgeReductionType_MinimumDistance_swigconstant(_oespicoli)
OEEdgeReductionType_MinimumDistance = _oespicoli.OEEdgeReductionType_MinimumDistance

_oespicoli.OERibbonType_CAlpha_swigconstant(_oespicoli)
OERibbonType_CAlpha = _oespicoli.OERibbonType_CAlpha

_oespicoli.OERibbonType_Pretty_swigconstant(_oespicoli)
OERibbonType_Pretty = _oespicoli.OERibbonType_Pretty

_oespicoli.OERibbonType_MAXTYPE_swigconstant(_oespicoli)
OERibbonType_MAXTYPE = _oespicoli.OERibbonType_MAXTYPE

def GetFloatFromPyObject(outfloat: 'float &', numberobj: 'PyObject *') -> "bool":
    """GetFloatFromPyObject(float & outfloat, PyObject * numberobj) -> bool"""
    return _oespicoli.GetFloatFromPyObject(outfloat, numberobj)

def GetIntFromPyObject(outint: 'unsigned int &', numberobj: 'PyObject *') -> "bool":
    """GetIntFromPyObject(unsigned int & outint, PyObject * numberobj) -> bool"""
    return _oespicoli.GetIntFromPyObject(outint, numberobj)
class OESurface(oechem.OEBase):
    """Proxy of C++ OESpicoli::OESurface class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OESurface self) -> OEBase"""
        return _oespicoli.OESurface_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OESurface self) -> void const *"""
        return _oespicoli.OESurface_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OESurface self, void const * type) -> bool"""
        return _oespicoli.OESurface_IsDataType(self, type)


    def __init__(self, *args):
        """
        __init__(OESpicoli::OESurface self) -> OESurface
        __init__(OESpicoli::OESurface self, OESurface rhs) -> OESurface
        __init__(OESpicoli::OESurface self, OESpicoli::OESurfaceImpl const & rhs) -> OESurface
        """
        this = _oespicoli.new_OESurface(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self):
      return _oespicoli.OESurface___nonzero__(self)


    __swig_destroy__ = _oespicoli.delete_OESurface
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OESurface self)"""
        return _oespicoli.OESurface_Clear(self)


    def SetTitle(self, title: 'char const *') -> "bool":
        """SetTitle(OESurface self, char const * title) -> bool"""
        return _oespicoli.OESurface_SetTitle(self, title)


    def GetTitle(self) -> "char const *":
        """GetTitle(OESurface self) -> char const *"""
        return _oespicoli.OESurface_GetTitle(self)


    def GetResolution(self) -> "float":
        """GetResolution(OESurface self) -> float"""
        return _oespicoli.OESurface_GetResolution(self)


    def GetProbeRadius(self) -> "float":
        """GetProbeRadius(OESurface self) -> float"""
        return _oespicoli.OESurface_GetProbeRadius(self)


    def GetNumVertices(self) -> "unsigned int":
        """GetNumVertices(OESurface self) -> unsigned int"""
        return _oespicoli.OESurface_GetNumVertices(self)


    def GetVertices(self, vertices: 'float *') -> "bool":
        """GetVertices(OESurface self, float * vertices) -> bool"""
        return _oespicoli.OESurface_GetVertices(self, vertices)


    def SetNumVertices(self, n: 'unsigned int') -> "bool":
        """SetNumVertices(OESurface self, unsigned int n) -> bool"""
        return _oespicoli.OESurface_SetNumVertices(self, n)


    def SetVertices(self, vertices: 'float const *') -> "bool":
        """SetVertices(OESurface self, float const * vertices) -> bool"""
        return _oespicoli.OESurface_SetVertices(self, vertices)


    def GetNumTriangles(self) -> "unsigned int":
        """GetNumTriangles(OESurface self) -> unsigned int"""
        return _oespicoli.OESurface_GetNumTriangles(self)


    def GetTriangles(self, triangles: 'unsigned int *') -> "bool":
        """GetTriangles(OESurface self, unsigned int * triangles) -> bool"""
        return _oespicoli.OESurface_GetTriangles(self, triangles)


    def SetNumTriangles(self, n: 'unsigned int') -> "bool":
        """SetNumTriangles(OESurface self, unsigned int n) -> bool"""
        return _oespicoli.OESurface_SetNumTriangles(self, n)


    def SetTriangles(self, triangles: 'unsigned int const *') -> "bool":
        """SetTriangles(OESurface self, unsigned int const * triangles) -> bool"""
        return _oespicoli.OESurface_SetTriangles(self, triangles)


    def IsNormalsSet(self) -> "bool":
        """IsNormalsSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsNormalsSet(self)


    def GetNormals(self, normals: 'float *') -> "bool":
        """GetNormals(OESurface self, float * normals) -> bool"""
        return _oespicoli.OESurface_GetNormals(self, normals)


    def SetNormals(self, normals: 'float const *') -> "bool":
        """SetNormals(OESurface self, float const * normals) -> bool"""
        return _oespicoli.OESurface_SetNormals(self, normals)


    def IsFaceNormalsSet(self) -> "bool":
        """IsFaceNormalsSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsFaceNormalsSet(self)


    def GetFaceNormals(self, faceNormals: 'float *') -> "bool":
        """GetFaceNormals(OESurface self, float * faceNormals) -> bool"""
        return _oespicoli.OESurface_GetFaceNormals(self, faceNormals)


    def SetFaceNormals(self, faceNormals: 'float const *') -> "bool":
        """SetFaceNormals(OESurface self, float const * faceNormals) -> bool"""
        return _oespicoli.OESurface_SetFaceNormals(self, faceNormals)


    def IsDistanceSet(self) -> "bool":
        """IsDistanceSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsDistanceSet(self)


    def GetDistance(self, distance: 'float *') -> "bool":
        """GetDistance(OESurface self, float * distance) -> bool"""
        return _oespicoli.OESurface_GetDistance(self, distance)


    def GetDistanceElement(self, n: 'unsigned int') -> "float":
        """GetDistanceElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetDistanceElement(self, n)


    def SetDistance(self, distance: 'float const *') -> "bool":
        """SetDistance(OESurface self, float const * distance) -> bool"""
        return _oespicoli.OESurface_SetDistance(self, distance)


    def SetDistanceElement(self, n: 'unsigned int', value: 'float') -> "bool":
        """SetDistanceElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetDistanceElement(self, n, value)


    def IsPotentialSet(self) -> "bool":
        """IsPotentialSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsPotentialSet(self)


    def GetPotential(self, potential: 'float *') -> "bool":
        """GetPotential(OESurface self, float * potential) -> bool"""
        return _oespicoli.OESurface_GetPotential(self, potential)


    def GetPotentialElement(self, n: 'unsigned int') -> "float":
        """GetPotentialElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetPotentialElement(self, n)


    def SetPotential(self, potential: 'float const *') -> "bool":
        """SetPotential(OESurface self, float const * potential) -> bool"""
        return _oespicoli.OESurface_SetPotential(self, potential)


    def SetPotentialElement(self, n: 'unsigned int', value: 'float') -> "bool":
        """SetPotentialElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetPotentialElement(self, n, value)


    def SetPotentialName(self, name: 'char const *') -> "void":
        """SetPotentialName(OESurface self, char const * name)"""
        return _oespicoli.OESurface_SetPotentialName(self, name)


    def GetPotentialName(self) -> "char const *":
        """GetPotentialName(OESurface self) -> char const *"""
        return _oespicoli.OESurface_GetPotentialName(self)


    def IsCurvatureSet(self) -> "bool":
        """IsCurvatureSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsCurvatureSet(self)


    def GetCurvature(self, curvature: 'float *') -> "bool":
        """GetCurvature(OESurface self, float * curvature) -> bool"""
        return _oespicoli.OESurface_GetCurvature(self, curvature)


    def GetCurvatureElement(self, n: 'unsigned int') -> "float":
        """GetCurvatureElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetCurvatureElement(self, n)


    def SetCurvature(self, curvature: 'float const *') -> "bool":
        """SetCurvature(OESurface self, float const * curvature) -> bool"""
        return _oespicoli.OESurface_SetCurvature(self, curvature)


    def SetCurvatureElement(self, n: 'unsigned int', value: 'float') -> "bool":
        """SetCurvatureElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetCurvatureElement(self, n, value)


    def IsAtomsSet(self) -> "bool":
        """IsAtomsSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsAtomsSet(self)


    def GetAtoms(self, atoms: 'unsigned int *') -> "bool":
        """GetAtoms(OESurface self, unsigned int * atoms) -> bool"""
        return _oespicoli.OESurface_GetAtoms(self, atoms)


    def GetAtomsElement(self, n: 'unsigned int') -> "unsigned int":
        """GetAtomsElement(OESurface self, unsigned int n) -> unsigned int"""
        return _oespicoli.OESurface_GetAtomsElement(self, n)


    def SetAtoms(self, atoms: 'unsigned int const *') -> "bool":
        """SetAtoms(OESurface self, unsigned int const * atoms) -> bool"""
        return _oespicoli.OESurface_SetAtoms(self, atoms)


    def SetAtomsElement(self, n: 'unsigned int', value: 'unsigned int') -> "bool":
        """SetAtomsElement(OESurface self, unsigned int n, unsigned int value) -> bool"""
        return _oespicoli.OESurface_SetAtomsElement(self, n, value)


    def IsColorSet(self) -> "bool":
        """IsColorSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsColorSet(self)


    def GetColor(self, *args) -> "bool":
        """
        GetColor(OESurface self, unsigned char * color) -> bool
        GetColor(OESurface self, float * color) -> bool
        """
        return _oespicoli.OESurface_GetColor(self, *args)


    def SetColor(self, *args) -> "bool":
        """
        SetColor(OESurface self, unsigned char const * color) -> bool
        SetColor(OESurface self, float const * color) -> bool
        """
        return _oespicoli.OESurface_SetColor(self, *args)


    def SetColorElement(self, *args) -> "bool":
        """
        SetColorElement(OESurface self, unsigned int n, unsigned char r, unsigned char g, unsigned char b, unsigned char a=255) -> bool
        SetColorElement(OESurface self, unsigned int n, unsigned char r, unsigned char g, unsigned char b) -> bool
        SetColorElement(OESurface self, unsigned int n, float r, float g, float b, float a=1.0) -> bool
        SetColorElement(OESurface self, unsigned int n, float r, float g, float b) -> bool
        """
        return _oespicoli.OESurface_SetColorElement(self, *args)


    def IsVertexCliqueSet(self) -> "bool":
        """IsVertexCliqueSet(OESurface self) -> bool"""
        return _oespicoli.OESurface_IsVertexCliqueSet(self)


    def GetVertexClique(self, vertexClique: 'unsigned int *') -> "bool":
        """GetVertexClique(OESurface self, unsigned int * vertexClique) -> bool"""
        return _oespicoli.OESurface_GetVertexClique(self, vertexClique)


    def GetVertexCliqueElement(self, n: 'unsigned int') -> "unsigned int":
        """GetVertexCliqueElement(OESurface self, unsigned int n) -> unsigned int"""
        return _oespicoli.OESurface_GetVertexCliqueElement(self, n)


    def SetVertexClique(self, vertexClique: 'unsigned int const *') -> "bool":
        """SetVertexClique(OESurface self, unsigned int const * vertexClique) -> bool"""
        return _oespicoli.OESurface_SetVertexClique(self, vertexClique)


    def SetVertexCliqueElement(self, n: 'unsigned int', value: 'unsigned int') -> "bool":
        """SetVertexCliqueElement(OESurface self, unsigned int n, unsigned int value) -> bool"""
        return _oespicoli.OESurface_SetVertexCliqueElement(self, n, value)


    def ClearVertexClique(self) -> "bool":
        """ClearVertexClique(OESurface self) -> bool"""
        return _oespicoli.OESurface_ClearVertexClique(self)


    def GetVerticesElement(self, n: 'unsigned int') -> "float":
        """GetVerticesElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetVerticesElement(self, n)


    def SetVerticesElement(self, n: 'unsigned int', value: 'float') -> "bool":
        """SetVerticesElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetVerticesElement(self, n, value)


    def GetTrianglesElement(self, n: 'unsigned int') -> "unsigned int":
        """GetTrianglesElement(OESurface self, unsigned int n) -> unsigned int"""
        return _oespicoli.OESurface_GetTrianglesElement(self, n)


    def SetTrianglesElement(self, n: 'unsigned int', value: 'unsigned int') -> "bool":
        """SetTrianglesElement(OESurface self, unsigned int n, unsigned int value) -> bool"""
        return _oespicoli.OESurface_SetTrianglesElement(self, n, value)


    def GetNormalsElement(self, n: 'unsigned int') -> "float":
        """GetNormalsElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetNormalsElement(self, n)


    def SetNormalsElement(self, n: 'unsigned int', value: 'float') -> "bool":
        """SetNormalsElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetNormalsElement(self, n, value)


    def GetFaceNormalsElement(self, n: 'unsigned int') -> "float":
        """GetFaceNormalsElement(OESurface self, unsigned int n) -> float"""
        return _oespicoli.OESurface_GetFaceNormalsElement(self, n)


    def SetFaceNormalsElement(self, n: 'unsigned int', value: 'float') -> "bool":
        """SetFaceNormalsElement(OESurface self, unsigned int n, float value) -> bool"""
        return _oespicoli.OESurface_SetFaceNormalsElement(self, n, value)


    def Sweep(self) -> "void":
        """Sweep(OESurface self)"""
        return _oespicoli.OESurface_Sweep(self)


    def GetVertex(self, *args) -> "PyObject *":
        """
        GetVertex(OESurface self, unsigned int n, float * vertex) -> bool
        GetVertex(OESurface self, unsigned int n) -> PyObject *
        """
        return _oespicoli.OESurface_GetVertex(self, *args)


    def SetVertex(self, *args) -> "PyObject *":
        """
        SetVertex(OESurface self, unsigned int n, float const * vertex) -> bool
        SetVertex(OESurface self, unsigned int n, PyObject * input) -> PyObject *
        """
        return _oespicoli.OESurface_SetVertex(self, *args)


    def GetTriangle(self, *args) -> "PyObject *":
        """
        GetTriangle(OESurface self, unsigned int n, unsigned int * triangle) -> bool
        GetTriangle(OESurface self, unsigned int n) -> PyObject *
        """
        return _oespicoli.OESurface_GetTriangle(self, *args)


    def SetTriangle(self, *args) -> "PyObject *":
        """
        SetTriangle(OESurface self, unsigned int n, unsigned int const * triangle) -> bool
        SetTriangle(OESurface self, unsigned int n, PyObject * input) -> PyObject *
        """
        return _oespicoli.OESurface_SetTriangle(self, *args)


    def GetNormal(self, *args) -> "PyObject *":
        """
        GetNormal(OESurface self, unsigned int n, float * normal) -> bool
        GetNormal(OESurface self, unsigned int n) -> PyObject *
        """
        return _oespicoli.OESurface_GetNormal(self, *args)


    def SetNormal(self, *args) -> "PyObject *":
        """
        SetNormal(OESurface self, unsigned int n, float const * normal) -> bool
        SetNormal(OESurface self, unsigned int n, PyObject * input) -> PyObject *
        """
        return _oespicoli.OESurface_SetNormal(self, *args)


    def GetFaceNormal(self, *args) -> "PyObject *":
        """
        GetFaceNormal(OESurface self, unsigned int n, float * normal) -> bool
        GetFaceNormal(OESurface self, unsigned int n) -> PyObject *
        """
        return _oespicoli.OESurface_GetFaceNormal(self, *args)


    def SetFaceNormal(self, *args) -> "PyObject *":
        """
        SetFaceNormal(OESurface self, unsigned int n, float const * normal) -> bool
        SetFaceNormal(OESurface self, unsigned int n, PyObject * input) -> PyObject *
        """
        return _oespicoli.OESurface_SetFaceNormal(self, *args)


    def GetColorElement(self, n: 'unsigned int') -> "PyObject *":
        """GetColorElement(OESurface self, unsigned int n) -> PyObject *"""
        return _oespicoli.OESurface_GetColorElement(self, n)


    def GetColorElementF(self, n: 'unsigned int') -> "PyObject *":
        """GetColorElementF(OESurface self, unsigned int n) -> PyObject *"""
        return _oespicoli.OESurface_GetColorElementF(self, n)

OESurface_swigregister = _oespicoli.OESurface_swigregister
OESurface_swigregister(OESurface)


def OEGetSurfaceCenterAndExtents(surf: 'OESurface', center: 'float *', extents: 'float *') -> "void":
    """OEGetSurfaceCenterAndExtents(OESurface surf, float * center, float * extents)"""
    return _oespicoli.OEGetSurfaceCenterAndExtents(surf, center, extents)

def OESetSurface(obj: 'OEBase', t: 'char const *', s: 'OESurface') -> "bool":
    """OESetSurface(OEBase obj, char const * t, OESurface s) -> bool"""
    return _oespicoli.OESetSurface(obj, t, s)

def OEGetSurface(obj: 'OEBase', t: 'char const *') -> "OESpicoli::OESurface const &":
    """OEGetSurface(OEBase obj, char const * t) -> OESurface"""
    return _oespicoli.OEGetSurface(obj, t)

def OEMakeMolecularSurface(*args) -> "bool":
    """
    OEMakeMolecularSurface(OESurface surf, OEMolBase mol, float resolution=0.5, float probeRadius=1.4, unsigned int polygonizeMethod) -> bool
    OEMakeMolecularSurface(OESurface surf, OEMolBase mol, float resolution=0.5, float probeRadius=1.4) -> bool
    OEMakeMolecularSurface(OESurface surf, OEMolBase mol, float resolution=0.5) -> bool
    OEMakeMolecularSurface(OESurface surf, OEMolBase mol) -> bool
    OEMakeMolecularSurface(OESurface surf, float const * coords, float const * radii, int natoms, float resolution=0.5, float probeRadius=1.4, unsigned int polygonizeMethod) -> bool
    OEMakeMolecularSurface(OESurface surf, float const * coords, float const * radii, int natoms, float resolution=0.5, float probeRadius=1.4) -> bool
    OEMakeMolecularSurface(OESurface surf, float const * coords, float const * radii, int natoms, float resolution=0.5) -> bool
    OEMakeMolecularSurface(OESurface surf, float const * coords, float const * radii, int natoms) -> bool
    """
    return _oespicoli.OEMakeMolecularSurface(*args)

def OEMakeProteinRibbonSurface(*args) -> "bool":
    """
    OEMakeProteinRibbonSurface(OESurface surf, OEMolBase mol, unsigned int type) -> bool
    OEMakeProteinRibbonSurface(OESurface surf, OEMolBase mol) -> bool
    """
    return _oespicoli.OEMakeProteinRibbonSurface(*args)

def OEMakeAccessibleSurface(*args) -> "bool":
    """
    OEMakeAccessibleSurface(OESurface surf, OEMolBase mol, float resolution=0.5, float probeRadius=1.4, unsigned int polygonizeMethod) -> bool
    OEMakeAccessibleSurface(OESurface surf, OEMolBase mol, float resolution=0.5, float probeRadius=1.4) -> bool
    OEMakeAccessibleSurface(OESurface surf, OEMolBase mol, float resolution=0.5) -> bool
    OEMakeAccessibleSurface(OESurface surf, OEMolBase mol) -> bool
    OEMakeAccessibleSurface(OESurface surf, float const * coords, float const * radii, int natoms, float resolution=0.5, float probeRadius=1.4, unsigned int polygonizeMethod) -> bool
    OEMakeAccessibleSurface(OESurface surf, float const * coords, float const * radii, int natoms, float resolution=0.5, float probeRadius=1.4) -> bool
    OEMakeAccessibleSurface(OESurface surf, float const * coords, float const * radii, int natoms, float resolution=0.5) -> bool
    OEMakeAccessibleSurface(OESurface surf, float const * coords, float const * radii, int natoms) -> bool
    """
    return _oespicoli.OEMakeAccessibleSurface(*args)

def OEMakeSurfaceFromGrid(*args) -> "bool":
    """
    OEMakeSurfaceFromGrid(OESurface surf, OEFixedFloatGrid grid, float contour) -> bool
    OEMakeSurfaceFromGrid(OESurface surf, OEFixedFloatGrid grid, float contour, float resolution) -> bool
    OEMakeSurfaceFromGrid(OESurface surf, OESystem::OESkewGrid const & grid, float contour) -> bool
    """
    return _oespicoli.OEMakeSurfaceFromGrid(*args)

def OEMakeGridFromSurface(*args) -> "bool":
    """
    OEMakeGridFromSurface(OESystem::OEScalarGrid & grid, OESurface surf, unsigned int method) -> bool
    OEMakeGridFromSurface(OESystem::OEScalarGrid & grid, OESurface surf) -> bool
    """
    return _oespicoli.OEMakeGridFromSurface(*args)

def OEMakeBitGridFromSurface(*args) -> "bool":
    """
    OEMakeBitGridFromSurface(OESystem::OEScalarGrid & grid, OESurface surf, float spacing, float buffer) -> bool
    OEMakeBitGridFromSurface(OESystem::OEScalarGrid & grid, OESurface surf) -> bool
    """
    return _oespicoli.OEMakeBitGridFromSurface(*args)

def OEMakeVoidVolume(mol1: 'OEMolBase', mol2: 'OEMolBase', grid: 'OESystem::OEScalarGrid &', resolution: 'float', probeRad: 'float'=1.4) -> "bool":
    """
    OEMakeVoidVolume(OEMolBase mol1, OEMolBase mol2, OESystem::OEScalarGrid & grid, float resolution, float probeRad=1.4) -> bool
    OEMakeVoidVolume(OEMolBase mol1, OEMolBase mol2, OESystem::OEScalarGrid & grid, float resolution) -> bool
    """
    return _oespicoli.OEMakeVoidVolume(mol1, mol2, grid, resolution, probeRad)

def OEMakeComplexCavities(ligand: 'OEMolBase', protein: 'OEMolBase', surf: 'OESurface', resolution: 'float'=0.5, probeRad: 'float'=1.4) -> "bool":
    """
    OEMakeComplexCavities(OEMolBase ligand, OEMolBase protein, OESurface surf, float resolution=0.5, float probeRad=1.4) -> bool
    OEMakeComplexCavities(OEMolBase ligand, OEMolBase protein, OESurface surf, float resolution=0.5) -> bool
    OEMakeComplexCavities(OEMolBase ligand, OEMolBase protein, OESurface surf) -> bool
    """
    return _oespicoli.OEMakeComplexCavities(ligand, protein, surf, resolution, probeRad)

def OEMakeCavitySurfaces(mol: 'OEMolBase', surf: 'OESurface', resolution: 'float'=0.5, probeRadius: 'float'=1.4) -> "bool":
    """
    OEMakeCavitySurfaces(OEMolBase mol, OESurface surf, float resolution=0.5, float probeRadius=1.4) -> bool
    OEMakeCavitySurfaces(OEMolBase mol, OESurface surf, float resolution=0.5) -> bool
    OEMakeCavitySurfaces(OEMolBase mol, OESurface surf) -> bool
    """
    return _oespicoli.OEMakeCavitySurfaces(mol, surf, resolution, probeRadius)

def OESurfaceToMoleculeDistance(surf: 'OESurface', mol: 'OEMolBase') -> "bool":
    """OESurfaceToMoleculeDistance(OESurface surf, OEMolBase mol) -> bool"""
    return _oespicoli.OESurfaceToMoleculeDistance(surf, mol)

def OECalculateSurfaceCurvature(surf: 'OESurface', mol: 'OEMolBase', probeRadius: 'float'=1.4) -> "bool":
    """
    OECalculateSurfaceCurvature(OESurface surf, OEMolBase mol, float probeRadius=1.4) -> bool
    OECalculateSurfaceCurvature(OESurface surf, OEMolBase mol) -> bool
    """
    return _oespicoli.OECalculateSurfaceCurvature(surf, mol, probeRadius)

def OEMakeSphericalSurface(surf: 'OESurface', center: 'float *', radius: 'float', level: 'unsigned int'=4) -> "bool":
    """
    OEMakeSphericalSurface(OESurface surf, float * center, float radius, unsigned int level=4) -> bool
    OEMakeSphericalSurface(OESurface surf, float * center, float radius) -> bool
    """
    return _oespicoli.OEMakeSphericalSurface(surf, center, radius, level)

def OEMakeEllipsoidSurface(surf: 'OESurface', center: 'float *', a: 'float', b: 'float', c: 'float', dir1: 'float *', dir2: 'float *', dir3: 'float *', level: 'int'=4) -> "bool":
    """
    OEMakeEllipsoidSurface(OESurface surf, float * center, float a, float b, float c, float * dir1, float * dir2, float * dir3, int level=4) -> bool
    OEMakeEllipsoidSurface(OESurface surf, float * center, float a, float b, float c, float * dir1, float * dir2, float * dir3) -> bool
    """
    return _oespicoli.OEMakeEllipsoidSurface(surf, center, a, b, c, dir1, dir2, dir3, level)

def OEMakeBoxSurface(surf: 'OESurface', center: 'float const *', extents: 'float const *') -> "bool":
    """OEMakeBoxSurface(OESurface surf, float const * center, float const * extents) -> bool"""
    return _oespicoli.OEMakeBoxSurface(surf, center, extents)

def OECalculateFaceNormals(surf: 'OESurface') -> "bool":
    """OECalculateFaceNormals(OESurface surf) -> bool"""
    return _oespicoli.OECalculateFaceNormals(surf)

def OECalculateNormals(surf: 'OESurface') -> "bool":
    """OECalculateNormals(OESurface surf) -> bool"""
    return _oespicoli.OECalculateNormals(surf)

def OESetSurfacePotentials(surf: 'OESurface', grid: 'OESystem::OEScalarGrid const &') -> "bool":
    """OESetSurfacePotentials(OESurface surf, OESystem::OEScalarGrid const & grid) -> bool"""
    return _oespicoli.OESetSurfacePotentials(surf, grid)

def OESetSurfaceColor(*args) -> "bool":
    """
    OESetSurfaceColor(OESurface surf, unsigned char r, unsigned char g, unsigned char b, unsigned char a=255) -> bool
    OESetSurfaceColor(OESurface surf, unsigned char r, unsigned char g, unsigned char b) -> bool
    OESetSurfaceColor(OESurface surf, float r, float g, float b, float a=1.0) -> bool
    OESetSurfaceColor(OESurface surf, float r, float g, float b) -> bool
    """
    return _oespicoli.OESetSurfaceColor(*args)

def OEInvertSurface(surf: 'OESurface') -> "bool":
    """OEInvertSurface(OESurface surf) -> bool"""
    return _oespicoli.OEInvertSurface(surf)

def OESurfaceVolume(surf: 'OESurface') -> "float":
    """OESurfaceVolume(OESurface surf) -> float"""
    return _oespicoli.OESurfaceVolume(surf)

def OESurfaceArea(surf: 'OESurface') -> "float":
    """OESurfaceArea(OESurface surf) -> float"""
    return _oespicoli.OESurfaceArea(surf)

def OESurfaceCliqueVolume(surf: 'OESurface', clique: 'unsigned int') -> "float":
    """OESurfaceCliqueVolume(OESurface surf, unsigned int clique) -> float"""
    return _oespicoli.OESurfaceCliqueVolume(surf, clique)

def OESurfaceCliqueCentroid(surf: 'OESurface', clique: 'unsigned int', centroid: 'float *') -> "bool":
    """OESurfaceCliqueCentroid(OESurface surf, unsigned int clique, float * centroid) -> bool"""
    return _oespicoli.OESurfaceCliqueCentroid(surf, clique, centroid)

def OESurfaceCliqueArea(surf: 'OESurface', clique: 'unsigned int') -> "float":
    """OESurfaceCliqueArea(OESurface surf, unsigned int clique) -> float"""
    return _oespicoli.OESurfaceCliqueArea(surf, clique)

def OEMakeConnectedSurfaceCliques(surf: 'OESurface') -> "unsigned int":
    """OEMakeConnectedSurfaceCliques(OESurface surf) -> unsigned int"""
    return _oespicoli.OEMakeConnectedSurfaceCliques(surf)

def OECalculateTriangleAreas(surf: 'OESurface', areas: 'float *') -> "bool":
    """OECalculateTriangleAreas(OESurface surf, float * areas) -> bool"""
    return _oespicoli.OECalculateTriangleAreas(surf, areas)

def OESurfaceIsOpen(surf: 'OESurface') -> "bool":
    """OESurfaceIsOpen(OESurface surf) -> bool"""
    return _oespicoli.OESurfaceIsOpen(surf)

def OEMakeCliqueSurface(newsurf: 'OESurface', surf: 'OESurface', clique: 'unsigned int') -> "bool":
    """OEMakeCliqueSurface(OESurface newsurf, OESurface surf, unsigned int clique) -> bool"""
    return _oespicoli.OEMakeCliqueSurface(newsurf, surf, clique)

def OESurfaceCropToClique(surf: 'OESurface', clique: 'unsigned int') -> "bool":
    """OESurfaceCropToClique(OESurface surf, unsigned int clique) -> bool"""
    return _oespicoli.OESurfaceCropToClique(surf, clique)

def OEAddSurfaces(surf1: 'OESurface', surf2: 'OESurface') -> "bool":
    """OEAddSurfaces(OESurface surf1, OESurface surf2) -> bool"""
    return _oespicoli.OEAddSurfaces(surf1, surf2)

def OERotateSurface(surf: 'OESurface', rmat: 'float *') -> "void":
    """OERotateSurface(OESurface surf, float * rmat)"""
    return _oespicoli.OERotateSurface(surf, rmat)

def OETranslateSurface(surf: 'OESurface', trans: 'float *') -> "void":
    """OETranslateSurface(OESurface surf, float * trans)"""
    return _oespicoli.OETranslateSurface(surf, trans)

def OETransformSurface(surf: 'OESurface', trans: 'OETrans') -> "void":
    """OETransformSurface(OESurface surf, OETrans trans)"""
    return _oespicoli.OETransformSurface(surf, trans)

def OESplitSurfaceByAtoms(*args) -> "bool":
    """
    OESplitSurfaceByAtoms(OESurface newsurf, OESurface surf, OEMolBase mol, double maxDist=4.0) -> bool
    OESplitSurfaceByAtoms(OESurface newsurf, OESurface surf, OEMolBase mol) -> bool
    OESplitSurfaceByAtoms(OESurface surf, OEMolBase mol, double maxDist=4.0) -> bool
    OESplitSurfaceByAtoms(OESurface surf, OEMolBase mol) -> bool
    """
    return _oespicoli.OESplitSurfaceByAtoms(*args)

def OESmoothSurfaceEdges(surf: 'OESurface') -> "bool":
    """OESmoothSurfaceEdges(OESurface surf) -> bool"""
    return _oespicoli.OESmoothSurfaceEdges(surf)

_oespicoli.OE_OESPICOLI_VERSION_swigconstant(_oespicoli)
OE_OESPICOLI_VERSION = _oespicoli.OE_OESPICOLI_VERSION

def OESpicoliGetRelease() -> "char const *":
    """OESpicoliGetRelease() -> char const *"""
    return _oespicoli.OESpicoliGetRelease()

def OESpicoliGetVersion() -> "unsigned int":
    """OESpicoliGetVersion() -> unsigned int"""
    return _oespicoli.OESpicoliGetVersion()

def OESpicoliGetArch() -> "char const *":
    """OESpicoliGetArch() -> char const *"""
    return _oespicoli.OESpicoliGetArch()

def OESpicoliGetPlatform() -> "char const *":
    """OESpicoliGetPlatform() -> char const *"""
    return _oespicoli.OESpicoliGetPlatform()

def OESpicoliIsLicensed(feature: 'char const *'=None, expdate: 'unsigned int *'=None) -> "bool":
    """
    OESpicoliIsLicensed(char const * feature=None, unsigned int * expdate=None) -> bool
    OESpicoliIsLicensed(char const * feature=None) -> bool
    OESpicoliIsLicensed() -> bool
    """
    return _oespicoli.OESpicoliIsLicensed(feature, expdate)

def OESpicoliGetLicensee(*args) -> "std::string":
    """
    OESpicoliGetLicensee(std::string & licensee) -> bool
    OESpicoliGetLicensee() -> std::string
    """
    return _oespicoli.OESpicoliGetLicensee(*args)

def OESpicoliGetSite(*args) -> "std::string":
    """
    OESpicoliGetSite(std::string & site) -> bool
    OESpicoliGetSite() -> std::string
    """
    return _oespicoli.OESpicoliGetSite(*args)

def OEIsReadableSurface(*args) -> "bool":
    """
    OEIsReadableSurface(unsigned int type) -> bool
    OEIsReadableSurface(std::string const & filename) -> bool
    """
    return _oespicoli.OEIsReadableSurface(*args)

def OEIsWriteableSurface(*args) -> "bool":
    """
    OEIsWriteableSurface(unsigned int type) -> bool
    OEIsWriteableSurface(std::string const & filename) -> bool
    """
    return _oespicoli.OEIsWriteableSurface(*args)

def OEGetSurfaceFileType(ext: 'char const *') -> "unsigned int":
    """OEGetSurfaceFileType(char const * ext) -> unsigned int"""
    return _oespicoli.OEGetSurfaceFileType(ext)

def OEGetSurfaceFormatExtension(tag: 'unsigned int') -> "char const *":
    """OEGetSurfaceFormatExtension(unsigned int tag) -> char const *"""
    return _oespicoli.OEGetSurfaceFormatExtension(tag)

def OEGetSurfaceFormatString(tag: 'unsigned int') -> "char const *":
    """OEGetSurfaceFormatString(unsigned int tag) -> char const *"""
    return _oespicoli.OEGetSurfaceFormatString(tag)

def OEReadSurface(*args) -> "bool":
    """
    OEReadSurface(std::string const & fname, OESurface surf) -> bool
    OEReadSurface(oeistream ifs, OESurface surf, unsigned int type) -> bool
    """
    return _oespicoli.OEReadSurface(*args)

def OEWriteSurface(*args) -> "bool":
    """
    OEWriteSurface(std::string const & fname, OESurface surf) -> bool
    OEWriteSurface(oeostream ofs, OESurface surf, unsigned int type) -> bool
    """
    return _oespicoli.OEWriteSurface(*args)

def OEInitSurfaceHandlers(*args) -> "bool":
    """
    OEInitSurfaceHandlers(oemolstreambase fs)
    OEInitSurfaceHandlers(OEBinaryIOHandlerBase b) -> bool
    """
    return _oespicoli.OEInitSurfaceHandlers(*args)

def OEReduceSurface(*args) -> "bool":
    """
    OEReduceSurface(OESurface reducedSurface, OESurface original, unsigned int targetNumberOfVertices, unsigned int type) -> bool
    OEReduceSurface(OESurface reducedSurface, OESurface original, unsigned int targetNumberOfVertices) -> bool
    """
    return _oespicoli.OEReduceSurface(*args)

def OESurfaceToJSONBytes(*args) -> "PyObject *":
    """
    OESurfaceToJSONBytes(OESurface surf, unsigned int flavor) -> PyObject
    OESurfaceToJSONBytes(OESurface surf) -> PyObject *
    """
    return _oespicoli.OESurfaceToJSONBytes(*args)

def OEJSONToSurfaceBytes(surf: 'OESurface', bytes: 'PyObject *') -> "PyObject *":
    """OEJSONToSurfaceBytes(OESurface surf, PyObject * bytes) -> PyObject *"""
    return _oespicoli.OEJSONToSurfaceBytes(surf, bytes)


