PCMRenderer.cpp

Go to the documentation of this file.
00001 
00002 //
00003 // This source file is a part of ParCompMark
00004 // Parallel Compositing Benchmark Framework
00005 //
00006 // for latest info see http://parcompmark.sourceforge.net
00007 
00008 //
00009 // Copyright (C) 2006 IT2 ParCompMark Dev. Team
00010 // 
00011 // This program is free software; you can redistribute it and/or
00012 // modify it under the terms of the GNU General Public License
00013 // as published by the Free Software Foundation; either version 2
00014 // of the License, or (at your option) any later version.
00015 // 
00016 // This program is distributed in the hope that it will be useful,
00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00019 // GNU General Public License for more details.
00020 // 
00021 // You should have received a copy of the GNU General Public License
00022 // along with this program; if not, write to the Free Software
00023 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00024 
00025 //
00026 // Inner includes
00027 //
00028 
00029 #include "../include/PCMRenderer.h"
00030 
00031 namespace ParCompMark
00032 {
00033 
00034   //
00035   // Class constants
00036   //
00037 
00038   const s32 Renderer::NOAUTORENDERING = -1;
00039 
00040   //
00041   // Constructors & destructor
00042   //
00043 
00044    Renderer::Renderer()
00045         // You have to initialize the following attributes:
00046         // - mRendererHandle
00047         // - mRendererPlugin
00048         // - mParent
00049         // - mInitialized
00050         // - mAutoRenderOrder
00051   {
00052         Except(INVALID_OPERATION_ERROR, "Renderer::Renderer()",
00053            "Default constructor for Squirrel compatibility. Calling this constructor always raises an exception.");
00054   }
00055 
00056  /*----------------------------------------------------------------------*/
00057 
00058   Renderer::Renderer(RendererPlugin * rendererPlugin, void *rendererHandle, OpenGLRenderingEngine * parent):
00059         // Renderer instance initializer 
00060    mRendererHandle(rendererHandle       /* Pointer to the renderer instance in the plugin code. */
00061   ),
00062         // Renderer plugin initializer 
00063    mRendererPlugin(rendererPlugin       /* Corresponding renderer plugin. */
00064   ),
00065         // Rendering engine initializer 
00066    mParent(parent               /* Parent rendering engine of the renderer. */
00067         )
00068         // You have to initialize the following attributes:
00069         // - mRendererHandle
00070         // - mRendererPlugin
00071         // - mParent
00072         // - mInitialized
00073         // - mAutoRenderOrder
00074   {
00075         mInitialized = false;
00076         mAutoRenderOrder = Renderer::NOAUTORENDERING;
00077 
00078         Logger::getInstance()->log(Logger::NOTICE,
00079                                  "A new custom renderer object has been created from renderer plugin `" +
00080                                  mRendererPlugin->getName() + "'.");
00081   }
00082 
00083  /*----------------------------------------------------------------------*/
00084 
00085   Renderer::~Renderer()
00086   {
00087         if(mInitialized)
00088          finalize();
00089 
00090         Logger::getInstance()->log(Logger::NOTICE,
00091                                  "A renderer object from renderer plugin `" + mRendererPlugin->getName() +
00092                                  "' has been destoryed .");
00093   }
00094 
00095  /*----------------------------------------------------------------------*/
00096 
00097   //
00098   // Methods
00099   //
00100 
00101   void Renderer::initialize()
00102   {
00103         Assert(!mInitialized, INVALID_OPERATION_ERROR, "Renderer::initialize()");
00104 
00105         mInitialized = true;
00106         Logger::getInstance()->log(Logger::DEBUG,
00107                                  "A new custom renderer object has been initialized from renderer plugin `" +
00108                                  mRendererPlugin->getName() + "'.");
00109   }
00110 
00111  /*----------------------------------------------------------------------*/
00112 
00113   void Renderer::finalize()
00114   {
00115         Assert(mInitialized, INVALID_OPERATION_ERROR, "Renderer::initialize()");
00116 
00117         mInitialized = false;
00118         Logger::getInstance()->log(Logger::DEBUG,
00119                                  "A new custom renderer object has been finalized from renderer plugin `" +
00120                                  mRendererPlugin->getName() + "'.");
00121   }
00122 
00123  /*----------------------------------------------------------------------*/
00124 
00125 }