OSGMatrixCameraDecorator.cpp

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *               Copyright (C) 2000-2002 by the OpenSG Forum                 *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035  *                                                                           *
00036  *                                                                           *
00037 \*---------------------------------------------------------------------------*/
00038
00039 //---------------------------------------------------------------------------
00040 //  Includes
00041 //---------------------------------------------------------------------------
00042
00043 #include <cstdlib>
00044 #include <cstdio>
00045
00046 #include "OSGConfig.h"
00047
00048 #include "OSGMatrixCameraDecorator.h"
00049
00050 OSG_USING_NAMESPACE
00051
00052 // Documentation for this class is emited in the
00053 // OSGMatrixCameraDecoratorBase.cpp file.
00054 // To modify it, please change the .fcd file (OSGMatrixCameraDecorator.fcd) and
00055 // regenerate the base file.
00056
00057 /***************************************************************************\
00058  *                           Class variables                               *
00059 \***************************************************************************/
00060
00061 /***************************************************************************\
00062  *                           Class methods                                 *
00063 \***************************************************************************/
00064
00065 void MatrixCameraDecorator::initMethod(InitPhase ePhase)
00066 {
00067     Inherited::initMethod(ePhase);
00068 }
00069
00070
00071 /***************************************************************************\
00072  *                           Instance methods                              *
00073 \***************************************************************************/
00074
00075 /*-------------------------------------------------------------------------*\
00076  -  private                                                                 -
00077 \*-------------------------------------------------------------------------*/
00078
00079 /*----------------------- constructors & destructors ----------------------*/
00080
00081 MatrixCameraDecorator::MatrixCameraDecorator(void) :
00082     Inherited()
00083 {
00084 }
00085
00086 MatrixCameraDecorator::MatrixCameraDecorator(
00087     const MatrixCameraDecorator &source) :
00088
00089     Inherited(source)
00090 {
00091 }
00092
00093 MatrixCameraDecorator::~MatrixCameraDecorator(void)
00094 {
00095 }
00096
00097 /*----------------------------- class specific ----------------------------*/
00098
00099 void MatrixCameraDecorator::changed(ConstFieldMaskArg whichField,
00100                                     UInt32            origin,
00101                                     BitVector         details)
00102 {
00103     Inherited::changed(whichField, origin, details);
00104 }
00105
00106
00107 void MatrixCameraDecorator::getProjection(Matrix &result,
00108                                           UInt32  width,
00109                                           UInt32  height)
00110 {
00111     Camera *camera = getDecoratee();
00112
00113     if(camera == NULL)
00114     {
00115         FWARNING(("MatrixCameraDecorator::getProjection: no decoratee!\n"));
00116
00117         result.setIdentity();
00118
00119         return;
00120     }
00121
00122     camera->getProjection(result, width, height);
00123
00124     result.multLeft(getPostProjection());
00125     result.mult    (getPreProjection ());
00126 }
00127
00128 void MatrixCameraDecorator::getProjectionTranslation(Matrix &result,
00129                                                      UInt32  width,
00130                                                      UInt32  height)
00131 {
00132     Camera *camera = getDecoratee();
00133
00134     if(camera == NULL)
00135     {
00136         FWARNING(("MatrixCameraDecorator::getProjectionTranslation: "
00137                   "no decoratee!\n"));
00138
00139         result.setIdentity();
00140
00141         return;
00142     }
00143
00144     camera->getProjectionTranslation(result, width, height);
00145
00146     result.multLeft(getPostProjectionTranslation());
00147     result.mult    (getPreProjectionTranslation ());
00148 }
00149
00150 void MatrixCameraDecorator::getViewing(Matrix &result,
00151                                        UInt32  width,
00152                                        UInt32  height)
00153 {
00154     Camera *camera = getDecoratee();
00155
00156     if(camera == NULL)
00157     {
00158
00159         FWARNING(("MatrixCameraDecorator::getViewing: no decoratee!\n"));
00160         result.setIdentity();
00161
00162         return;
00163     }
00164
00165     camera->getViewing(result, width, height);
00166
00167     result.multLeft(getPostViewing());
00168     result.mult    (getPreViewing ());
00169 }
00170
00171 void MatrixCameraDecorator::dump(      UInt32    ,
00172                                  const BitVector ) const
00173 {
00174     SLOG << "Dump MatrixCameraDecorator NI" << std::endl;
00175 }