In file apps/mazed/me_3d.h:

class mzCameraView : public csComponent


Inheritance:


Public Methods

virtual void Draw()
Draw the component (only dirty rectangle should be redrawn)
virtual bool HandleEvent(csEvent &Event)
Handle camera view events
mzCameraView(csComponent *iParent)
Create the Draft Editor view
virtual bool SetRect(int xmin, int ymin, int xmax, int ymax)
Call UpdateMatrix () when window size changes
void SetViewAngles(float iPhi, float iTheta)
Set viewing angles
void UpdateMatrix()
Call this routine after changing phi, theta, scale or pos
void win2world(int x, int y, float z, csVector3 &v)
Convert a point from window space to world space
void win2world(float x, float y, float z, csVector3 &v)
Same but given floating-point coordinates
void world2win(csVector3 &v, csVector3 &dest)
Same but without translation
void world2win(csVector3 &v, int &x, int &y)
Convert a point from world space to window space

Protected Classes

struct
Equations of four planes that cuts visible space

Protected Fields

mz3DVertex clip_corner[4]
Coordinates of four viewport corners in world space
int dragMouseX
Used when dragging a rectangle
int oldMouseX
Mouse coordinates in previous frame when dragging etc
float phi
We keep view vector as two angles: phi and theta
csVector3 pos
... and the position of camera
csRenderView* rview
render view
float scale
We also keep the scale of ortogonal projection

The scale is expressed as the medium distance between horizontal and vertical window bounds

csMatrix3 w2c
Current 3D transform matrix resulting from above, and its inverse
float xmin
Minimal and maximal coordinates within view frustum

Protected

struct
Equations of four planes that cuts visible space

Inherited from csComponent:

Public Fields

csApp* app
csRect bound
csVector clipchildren
csComponent* focused
unsigned int id
csComponent* next
csComponent* parent
csComponent* top

Public Methods

void Box(int xmin, int ymin, int xmax, int ymax, int colindx)
void Center(bool iHoriz = true, bool iVert = true)
virtual void Close()
virtual void Delete(csComponent *comp)
void DeleteAll()
void DeleteClipChild(csComponent *clipchild)
void Drag(int x, int y, int DragMode)
void FindMaxFreeRect(csRect &area)
virtual void FixPosition(int &newX, int &newY)
virtual void FixSize(int &newW, int &newH)
csComponent* ForEach(bool (*func) (csComponent *child, void *param), void *param = NULL, bool Zorder = false)
csComponent* GetChild(int find_id)
csComponent* GetClipParent()
int GetColor(int Index)
csComponent* GetDefault()
int GetDragStyle()
csComponent* GetFocused()
int GetFont()
int GetState(int mask)
virtual char* GetText()
virtual void GetText(char *oText, int iTextSize)
csComponent* GetTop()
void GlobalToLocal(int &x, int &y)
bool HandleDragEvent(csEvent &Event, int BorderW, int BorderH)
virtual void Hide()
virtual void Insert(csComponent *comp)
void InsertClipChild(csComponent *clipchild)
void Invalidate(csRect &area, bool IncludeChildren = false)
void Invalidate(bool IncludeChildren = false)
void Invalidate(int xmin, int ymin, int xmax, int ymax, bool IncludeChildren = false)
void Line(float x1, float y1, float x2, float y2, int colindx)
void LocalToGlobal(int &x, int &y)
virtual bool Maximize()
virtual csComponent* NextChild(csComponent *start = NULL, bool disabled = false)
virtual csComponent* NextControl(csComponent *start = NULL)
virtual csComponent* NextGroup(csComponent *start = NULL)
void ObliqueRect3D(int xmin, int ymin, int xmax, int ymax, int cornersize, int darkindx, int lightindx)
void Pixel(int x, int y, int colindx)
virtual bool PostHandleEvent(csEvent &Event)
virtual bool PreHandleEvent(csEvent &Event)
virtual csComponent* PrevChild(csComponent *start = NULL, bool disabled = false)
virtual csComponent* PrevControl(csComponent *start = NULL)
virtual csComponent* PrevGroup(csComponent *start = NULL)
void Rect3D(int xmin, int ymin, int xmax, int ymax, int darkindx, int lightindx)
void Redraw()
virtual bool Restore()
bool Select()
void* SendCommand(int CommandCode, void *Info = NULL)
void SetApp(csApp *newapp)
void SetClipRect()
void SetClipRect(int xmin, int ymin, int xmax, int ymax)
void SetColor(int Index, int Color)
bool SetDragRect(int xmin, int ymin, int xmax, int ymax)
void SetDragStyle(int iDragStyle)
bool SetFocused(csComponent *comp)
void SetFont(int iFont, bool IncludeChildren = false)
void SetMouse(csMouseCursorID Cursor)
void SetPalette(int *iPalette, int iPaletteSize)
void SetPalette(int iPaletteID)
void SetPos(int x, int y)
void SetSize(int w, int h)
void SetSizingCursor(int dragtype)
virtual void SetState(int mask, bool enable)
virtual void SetSuggestedSize(int dw, int dh)
virtual void SetText(char *iText)
bool SetZorder(csComponent *comp, csComponent *below)
virtual void Show(bool focused = false)
void Sprite2D(csSprite2D *s2d, int x, int y)
void Sprite2D(csSprite2D *s2d, int x, int y, int w, int h)
virtual void SuggestSize(int &w, int &h)
void Text(int x, int y, int fgindx, int bgindx, char *s)
int TextHeight()
int TextWidth(char *text)

Protected Fields

csRect clip
csComponent* clipparent
csRect dirty
static csRect dragBound
int DragStyle
static int dragX
int Font
bool Maximized
csRect OrgBound
bool originalpalette
int* palette
int state
char* text

Protected Methods

void Clip(csObjVector &rect, csComponent *last)
void ClipAlienChildren(csObjVector &rect, csComponent *child)
void DrawUnderline(int iX, int iY, char *iText, int iUnderlinePos, int iColor)
static void PrepareLabel(char *iLabel, char * &oLabel, int &oUnderlinePos)
static int WordLeft(char *iText, int StartPos)
static int WordRight(char *iText, int StartPos)

Inherited from csBase:


Documentation

mzCameraView(csComponent *iParent)
Create the Draft Editor view

virtual void Draw()
Draw the component (only dirty rectangle should be redrawn)

virtual bool HandleEvent(csEvent &Event)
Handle camera view events

float phi
We keep view vector as two angles: phi and theta. They are the dirtection of vector in polar coordinates, phi being the angle of rotation around vertical (Y) axis and theta being the angle of rotation around horizontal axis that is perpendicular to Y.

float scale
We also keep the scale of ortogonal projection

The scale is expressed as the medium distance between horizontal and vertical window bounds. For example, if scale is 1 and we have a square window, and the center point of window (pos) is at (0,0,0), and we have a XOY plane projection matrix this means that we'll see in window the square (-0.5, -0.5, 0)...(+0.5, +0.5, 0)

csMatrix3 w2c
Current 3D transform matrix resulting from above, and its inverse

csVector3 pos
... and the position of camera

int oldMouseX
Mouse coordinates in previous frame when dragging etc

int dragMouseX
Used when dragging a rectangle

struct
Equations of four planes that cuts visible space

float xmin
Minimal and maximal coordinates within view frustum

mz3DVertex clip_corner[4]
Coordinates of four viewport corners in world space

csRenderView* rview
render view

void UpdateMatrix()
Call this routine after changing phi, theta, scale or pos

void world2win(csVector3 &v, int &x, int &y)
Convert a point from world space to window space

void world2win(csVector3 &v, csVector3 &dest)
Same but without translation

void win2world(int x, int y, float z, csVector3 &v)
Convert a point from window space to world space

void win2world(float x, float y, float z, csVector3 &v)
Same but given floating-point coordinates

virtual bool SetRect(int xmin, int ymin, int xmax, int ymax)
Call UpdateMatrix () when window size changes

void SetViewAngles(float iPhi, float iTheta)
Set viewing angles


This class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de