__author__ = 'PC'

from IFikomObject import IFikomObject
from win32com.client import CDispatch,  Dispatch
from IYardimciSiniflar import XYZO , XYZ





class IGosterimNoktasi3d(IFikomObject) :
    def __init__(self , obj:CDispatch , sahip:IFikomObject = None) :
        super(IGosterimNoktasi3d , self).__init__(obj , sahip)
        self.sahip = sahip
        self.tipi = "IGosterimNoktasi3d"

    # --->Sabit Degiskenler

    def GorusAlani(self , val = None) :
        if val == None :
            return self.catNesne.FieldOfView
        else :
            self.catNesne.FieldOfView = val

    def OdakUzakligi(self , val = None) :
        if val == None :
            return self.catNesne.FocusDistance
        else :
            self.catNesne.FocusDistance = val

    def YansimaModu(self , val = None) :
        """
          0:catProjectionConic,
          1:catProjectionCylindric,
          2:catProjectionUndefined
        """
        if val == None :
            return self.catNesne.ProjectionMode
        else :
            self.catNesne.ProjectionMode = val

    def Yakinlastirma(self , val = None , Guncelle = False) :
        if val == None :
            return self.catNesne.Zoom
        else :
            self.catNesne.Zoom = val
            if Guncelle :
                if isinstance(self.sahip,IFikomObject):
                    if self.sahip.tipi == "IGosterim3d":
                        self.sahip.guncelle()

    def MerkezNoktasi(self , val = None) :
        evalCode = """
            Dim origin(2)
            ViewPoint3d.GetOrigin origin
            return = origin
        """
        if val == None :
            rslt = self.anaProgram.eval(evalCode , "ViewPoint3d as Viewer3D" , [self.catNesne])
            return XYZ(rslt[0] , rslt[1] , rslt[2] , Sahip = self)
        else :
            self.catNesne.PutOrigin(val)

    def GormeYonu(self , val = None) :
        evalCode = """
            Dim origin(2)
            ViewPoint3d.GetSightDirection origin
            return = origin
        """
        if val == None :
            rslt = self.anaProgram.eval(evalCode , "ViewPoint3d as Viewer3D" , [self.catNesne])
            return XYZ(rslt[0] , rslt[1] , rslt[2] , Sahip = self)
        else :
            self.catNesne.PutSightDirection(val)

    def UstYon(self , val = None) :
        evalCode = """
            Dim origin(2)
            ViewPoint3d.GetUpDirection origin
            return = origin
        """
        if val == None :
            rslt = self.anaProgram.eval(evalCode , "ViewPoint3d as Viewer3D" , [self.catNesne])
            return XYZ(rslt[0] , rslt[1] , rslt[2] , Sahip = self)
        else :
            self.catNesne.PutUpDirection(val)