gxfactory.cc

Go to the documentation of this file.
00001 
00004 
00005 //
00006 // Copyright (c) 2005-2007 University of Southern California
00007 // Rob Peters <rjpeters at usc dot edu>
00008 //
00009 // created: Wed Jul  6 15:49:13 2005
00010 // commit: $Id: gxfactory.cc 10065 2007-04-12 05:54:56Z rjpeters $
00011 // $HeadURL: file:///lab/rjpeters/svnrepo/code/trunk/groovx/src/gfx/gxfactory.cc $
00012 //
00013 // --------------------------------------------------------------------
00014 //
00015 // This file is part of GroovX.
00016 //   [http://www.klab.caltech.edu/rjpeters/groovx/]
00017 //
00018 // GroovX is free software; you can redistribute it and/or modify it
00019 // under the terms of the GNU General Public License as published by
00020 // the Free Software Foundation; either version 2 of the License, or
00021 // (at your option) any later version.
00022 //
00023 // GroovX is distributed in the hope that it will be useful, but
00024 // WITHOUT ANY WARRANTY; without even the implied warranty of
00025 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00026 // General Public License for more details.
00027 //
00028 // You should have received a copy of the GNU General Public License
00029 // along with GroovX; if not, write to the Free Software Foundation,
00030 // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
00031 //
00033 
00034 #ifndef GROOVX_GFX_GXFACTORY_CC_UTC20050706224913_DEFINED
00035 #define GROOVX_GFX_GXFACTORY_CC_UTC20050706224913_DEFINED
00036 
00037 #include "gfx/gxfactory.h"
00038 
00039 #include "gfx/gxrasterfont.h"
00040 #include "gfx/gxvectorfont.h"
00041 
00042 #if defined(GVX_GL_PLATFORM_GLX)
00043 #  include "gfx/glxrasterfont.h"
00044 #elif defined(GVX_GL_PLATFORM_AGL)
00045 #  define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_3
00046 #  include "gfx/aglrasterfont.h"
00047 #else
00048 #  error no GVX_GL_PLATFORM macro defined
00049 #endif
00050 
00051 #include "rutz/fstring.h"
00052 #include "rutz/shared_ptr.h"
00053 
00054 #include <map>
00055 
00056 #include "rutz/trace.h"
00057 
00058 namespace
00059 {
00060   typedef std::map<rutz::fstring, rutz::shared_ptr<GxFont> > MapType;
00061   MapType theFontMap;
00062 }
00063 
00064 rutz::shared_ptr<GxRasterFont>
00065 GxFactory::makeRasterFont(const char* fontname)
00066 {
00067 GVX_TRACE("GxFactory::makeRasterFont");
00068 
00069 #if defined(GVX_GL_PLATFORM_GLX)
00070   return rutz::make_shared(new GlxRasterFont(fontname));
00071 #elif defined(GVX_GL_PLATFORM_AGL)
00072   return rutz::make_shared(new AglRasterFont(fontname));
00073 #endif
00074 }
00075 
00076 rutz::shared_ptr<GxFont> GxFactory::makeFont(const char* name_cstr)
00077 {
00078   rutz::fstring name(name_cstr);
00079 
00080   MapType::iterator itr = theFontMap.find(name);
00081 
00082   if (itr != theFontMap.end())
00083     return (*itr).second;
00084 
00085   if (name == "vector")
00086     {
00087       rutz::shared_ptr<GxFont> font(new GxVectorFont);
00088       theFontMap.insert(MapType::value_type(name, font));
00089       return font;
00090     }
00091 
00092   rutz::shared_ptr<GxFont> font(GxFactory::makeRasterFont(name_cstr));
00093   theFontMap.insert(MapType::value_type(name, font));
00094   return font;
00095 }
00096 
00097 static const char __attribute__((used)) vcid_groovx_gfx_gxfactory_cc_utc20050706224913[] = "$Id: gxfactory.cc 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00098 #endif // !GROOVX_GFX_GXFACTORY_CC_UTC20050706224913DEFINED

The software described here is Copyright (c) 1998-2005, Rob Peters.
This page was generated Wed Dec 3 06:49:38 2008 by Doxygen version 1.5.5.