Revert to the FUTURE_PYTHON_API, this means:
[blender.git] / intern / python / modules / Blender / Camera.py
1 """The Blender Camera module
2
3 This module provides access to **Camera** objects in Blender
4
5 Example::
6
7   from Blender import Camera, Object, Scene
8   c = Camera.New('ortho')      # create new ortho camera data
9   c.lens = 35.0                # set lens value
10   cur = Scene.getCurrent()     # get current Scene
11   ob = Object.New('Camera')    # make camera object
12   ob.link(c)                   # link camera data with this object
13   cur.link(ob)                 # link object into scene
14   cur.setCurrentCamera(ob)     # make this camera the active
15 """
16
17 import shadow
18 import _Blender.Camera as _Camera
19
20
21 class Camera(shadow.hasIPO):
22         """Wrapper for Camera DataBlock
23
24   Attributes
25
26     lens      -- The lens value
27
28     clipStart -- The clipping start of the view frustum
29
30     clipEnd   -- The end clipping plane of the view frustum
31
32     type      -- The camera type:
33                  0: perspective camera,
34                              1: orthogonal camera     - (see Types)
35   
36     mode      -- Drawing mode; see Modes
37 """
38
39         _emulation = {'Lens'   : "lens",
40                       'ClSta'  : "clipStart",
41                                   'ClEnd'  : "clipEnd",
42                                  } 
43
44         Types = {'persp' : 0,
45                          'ortho' : 1,
46                         } 
47
48         Modes = {'showLimits' : 1,
49                          'showMist'   : 2,
50                         } 
51
52         def __init__(self, object):
53                 self._object = object
54
55         def getType(self):
56                 """Returns camera type: "ortho" or "persp" """
57                 if self.type == self.Types['ortho']:
58                         return 'ortho'
59                 else:
60                         return 'persp'
61
62         def setType(self, type):
63                 """Sets Camera type to 'type' which must be one of ["persp", "ortho"]"""
64                 self._object.type = self.Types[type]
65
66         def setMode(self, *modes):
67                 """Sets Camera modes *the nice way*, instead of direct access
68 of the 'mode' member. 
69 This function takes a variable number of string arguments of the types 
70 listed in self.Modes.
71
72
73 Example::
74
75   c = Camera.New()
76   c.setMode('showMist', 'showLimits')
77 """  
78                 flags = 0
79                 try:
80                         for a in modes:
81                                 flags |= self.Modes[a]
82                 except:
83                         raise TypeError, "mode must be one of %s" % self.Modes.keys()
84                 self.mode = flags
85
86         def __repr__(self):
87                 return "[Camera \"%s\"]" % self.name
88
89 def New(type = 'persp'):
90         """Creates new camera Object and returns it. 'type', if specified,
91 must be one of Types"""
92         cam = Camera(_Camera.New())
93         cam.setType(type)
94         return cam
95
96 def get(name = None):
97         """Returns the Camera with name 'name', if given. Otherwise, a list
98 of all Cameras is returned"""
99         if name:
100                 return Camera(_Camera.get(name))
101         else:
102                 return shadow._List(_Camera.get(), Camera)
103         
104 Get = get  # emulation
105
106