view src/parpg/bGrease/renderer/camera.py @ 145:3dddf09377b8

"Open" will now not be shown in the context menu when the lockable is locked. "Lock" will not not be shown in the context menu when the lockable is open.
author KarstenBock@gmx.net
date Mon, 03 Oct 2011 14:12:17 +0200
parents 96af64cf3b81
children
line wrap: on
line source

import pyglet

class Camera(object):
	"""Sets the point of view for further renderers by altering the
	model/view matrix when it is drawn. It does not actually perform
	any drawing itself.

	:param position: The position vector for the camera. Sets the center of the view.
	:type position: Vec2d
	:param angle: Camera rotation in degrees about the z-axis.
	:type angle: float
	:param zoom: Scaling vector for the coordinate axis.
	:type zoom: Vec2d
	:param relative: Flag to indicate if the camera settings are relative 
		to the previous view state. If ``False`` the view state is reset before 
		setting the camera view by loading the identity model/view matrix.
	
	At runtime the camera may be manipulated via attributes with the 
	same names and functions as the parameters above.
	"""

	def __init__(self, position=None, angle=None, zoom=None, relative=False):
		self.position = position
		self.angle = angle
		self.zoom = zoom
		self.relative = relative
	
	def draw(self, gl=pyglet.gl):
		if not self.relative:
			gl.glLoadIdentity()
		if self.position is not None:
			px, py = self.position
			gl.glTranslatef(px, py, 0)
		if self.angle is not None:
			gl.glRotatef(self.angle, 0, 0, 1)
		if self.zoom is not None:
			sx, sy = self.zoom
			gl.glScalef(sx, sy ,0)