1 // Integrate Canvas into FlightGear
3 // Copyright (C) 2012 Thomas Geymayer <tomgey@gmail.com>
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License as
7 // published by the Free Software Foundation; either version 2 of the
8 // License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful, but
11 // WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 #include "FGCanvasSystemAdapter.hxx"
21 #include <Main/globals.hxx>
22 #include <Main/util.hxx>
23 #include <Viewer/renderer.hxx>
25 #include <osgDB/ReadFile>
30 //----------------------------------------------------------------------------
31 simgear::canvas::FontPtr
32 FGCanvasSystemAdapter::getFont(const std::string& name) const
34 SGPath path = globals->resolve_resource_path("Fonts/" + name);
41 "canvas::Text: No such font: " << name
43 return simgear::canvas::FontPtr();
50 "canvas::Text: using font file " << path.str()
53 simgear::canvas::FontPtr font = osgText::readFontFile(path.c_str());
59 "canvas::Text: Failed to open font file " << path.c_str()
65 //----------------------------------------------------------------------------
66 void FGCanvasSystemAdapter::addCamera(osg::Camera* camera) const
68 globals->get_renderer()->addCamera(camera, false);
71 //----------------------------------------------------------------------------
72 void FGCanvasSystemAdapter::removeCamera(osg::Camera* camera) const
74 if( globals->get_renderer() )
75 globals->get_renderer()->removeCamera(camera);
78 //----------------------------------------------------------------------------
79 osg::Image* FGCanvasSystemAdapter::getImage(const std::string& path) const
81 if( SGPath(path).isAbsolute() )
83 const char* valid_path = fgValidatePath(path.c_str(), false);
85 return osgDB::readImageFile(valid_path);
87 SG_LOG(SG_IO, SG_ALERT, "canvas::Image: reading '" << path << "' denied");
91 SGPath tpath = globals->resolve_resource_path(path);
93 return osgDB::readImageFile(tpath.c_str());
95 SG_LOG(SG_IO, SG_ALERT, "canvas::Image: No such image: '" << path << "'");