Improved filepath handling, and increased the image resolution for better rendering quality
This commit is contained in:
parent
771dc7d645
commit
69effce44e
@ -6,6 +6,8 @@
|
|||||||
#include <osgViewer/Viewer>
|
#include <osgViewer/Viewer>
|
||||||
#include <osgViewer/ViewerEventHandlers>
|
#include <osgViewer/ViewerEventHandlers>
|
||||||
|
|
||||||
|
#include <osgDB/FileUtils>
|
||||||
|
#include <osgDB/FileNameUtils>
|
||||||
#include <osgDB/ReadFile>
|
#include <osgDB/ReadFile>
|
||||||
|
|
||||||
#include <cairo.h>
|
#include <cairo.h>
|
||||||
@ -93,20 +95,33 @@ class PdfImage : public CarioImage
|
|||||||
bool open(const std::string& filename)
|
bool open(const std::string& filename)
|
||||||
{
|
{
|
||||||
osg::notify(osg::NOTICE)<<"open("<<filename<<")"<<std::endl;
|
osg::notify(osg::NOTICE)<<"open("<<filename<<")"<<std::endl;
|
||||||
|
|
||||||
|
std::string foundFile = osgDB::findDataFile(filename);
|
||||||
|
if (foundFile.empty())
|
||||||
|
{
|
||||||
|
osg::notify(osg::NOTICE)<<"could not find filename="<<filename<<std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
osg::notify(osg::NOTICE)<<"foundFile = "<<foundFile<<std::endl;
|
||||||
|
foundFile = osgDB::getRealPath(foundFile);
|
||||||
|
osg::notify(osg::NOTICE)<<"foundFile = "<<foundFile<<std::endl;
|
||||||
|
|
||||||
static bool gTypeInit = false;
|
static bool gTypeInit = false;
|
||||||
|
|
||||||
if(!gTypeInit)
|
if(!gTypeInit)
|
||||||
{
|
{
|
||||||
g_type_init();
|
g_type_init();
|
||||||
|
|
||||||
gTypeInit = true;
|
gTypeInit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string uri = std::string("file:") + foundFile;
|
||||||
|
|
||||||
PopplerDocument* doc = poppler_document_new_from_file(filename.c_str(), NULL, NULL);
|
PopplerDocument* doc = poppler_document_new_from_file(uri.c_str(), NULL, NULL);
|
||||||
if (!doc)
|
if (!doc)
|
||||||
{
|
{
|
||||||
osg::notify(osg::NOTICE)<<" could not open("<<filename<<")"<<std::endl;
|
osg::notify(osg::NOTICE)<<" could not open("<<filename<<"), uri="<<uri<<std::endl;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -170,7 +185,7 @@ class PdfImage : public CarioImage
|
|||||||
|
|
||||||
poppler_page_get_size(page, &w, &h);
|
poppler_page_get_size(page, &w, &h);
|
||||||
|
|
||||||
create((unsigned int)(w),(unsigned int)(h));
|
create((unsigned int)(w*2.0),(unsigned int)(h*2.0));
|
||||||
|
|
||||||
double r = 1.0;
|
double r = 1.0;
|
||||||
double g = 1.0;
|
double g = 1.0;
|
||||||
@ -180,11 +195,14 @@ class PdfImage : public CarioImage
|
|||||||
cairo_save(_context);
|
cairo_save(_context);
|
||||||
|
|
||||||
cairo_set_source_rgba(_context, r, g, b, a);
|
cairo_set_source_rgba(_context, r, g, b, a);
|
||||||
cairo_rectangle(_context, 0.0, 0.0, w, h);
|
cairo_rectangle(_context, 0.0, 0.0, double(s()), double(t()));
|
||||||
cairo_fill(_context);
|
cairo_fill(_context);
|
||||||
|
|
||||||
|
cairo_scale(_context, double(s())/w, double(t())/h);
|
||||||
|
|
||||||
poppler_page_render(page, getContext());
|
poppler_page_render(page, getContext());
|
||||||
|
|
||||||
|
|
||||||
cairo_restore(_context);
|
cairo_restore(_context);
|
||||||
|
|
||||||
dirty();
|
dirty();
|
||||||
|
Loading…
Reference in New Issue
Block a user