scons: fix typo, and ensure all temp output is writeable
This commit is contained in:
parent
50e3799053
commit
45266074c8
6 changed files with 138 additions and 29 deletions
11
SConstruct
11
SConstruct
|
@ -387,15 +387,15 @@ def FindBoost(context, prefixes):
|
||||||
msg += '\n *libs found: %s' % BOOST_LIB_DIR
|
msg += '\n *libs found: %s' % BOOST_LIB_DIR
|
||||||
env['BOOST_LIBS'] = BOOST_LIB_DIR
|
env['BOOST_LIBS'] = BOOST_LIB_DIR
|
||||||
else:
|
else:
|
||||||
env['BOOST_LIBS'] = '/usr' + LIBDIR_SCHEMA
|
env['BOOST_LIBS'] = '/usr/' + LIBDIR_SCHEMA
|
||||||
msg += '\n *using boost lib dir: %s' % env['BOOST_LIBS']
|
msg += '\n *using default boost lib dir: %s' % env['BOOST_LIBS']
|
||||||
|
|
||||||
if BOOST_INCLUDE_DIR:
|
if BOOST_INCLUDE_DIR:
|
||||||
msg += '\n *headers found: %s' % BOOST_INCLUDE_DIR
|
msg += '\n *headers found: %s' % BOOST_INCLUDE_DIR
|
||||||
env['BOOST_INCLUDES'] = BOOST_INCLUDE_DIR
|
env['BOOST_INCLUDES'] = BOOST_INCLUDE_DIR
|
||||||
else:
|
else:
|
||||||
env['BOOST_INCLUDES'] = '/usr/include'
|
env['BOOST_INCLUDES'] = '/usr/include'
|
||||||
msg += '\n *using boost include dir: %s' % env['BOOST_INCLUDES']
|
msg += '\n *using default boost include dir: %s' % env['BOOST_INCLUDES']
|
||||||
|
|
||||||
if not env['BOOST_TOOLKIT'] and not env['BOOST_ABI'] and not env['BOOST_VERSION']:
|
if not env['BOOST_TOOLKIT'] and not env['BOOST_ABI'] and not env['BOOST_VERSION']:
|
||||||
if BOOST_APPEND:
|
if BOOST_APPEND:
|
||||||
|
@ -923,10 +923,11 @@ if not preconfigured:
|
||||||
os.chmod(SCONS_LOCAL_CONFIG,0666)
|
os.chmod(SCONS_LOCAL_CONFIG,0666)
|
||||||
except: pass
|
except: pass
|
||||||
try:
|
try:
|
||||||
os.chmod('.sconsign.dblite',0777)
|
os.chmod('.sconsign.dblite',0666)
|
||||||
except: pass
|
except: pass
|
||||||
try:
|
try:
|
||||||
os.chmod(SCONF_TEMP_DIR,0777)
|
for item in glob('%s/*' % SCONF_TEMP_DIR):
|
||||||
|
os.chmod(item,0666)
|
||||||
except: pass
|
except: pass
|
||||||
|
|
||||||
if 'configure' in command_line_args:
|
if 'configure' in command_line_args:
|
||||||
|
|
|
@ -24,4 +24,9 @@ Import('env')
|
||||||
if env['PLATFORM'] == 'SunOS':
|
if env['PLATFORM'] == 'SunOS':
|
||||||
env.StaticLibrary('agg', glob.glob('./src/' + '*.cpp'), LIBS=[], CPPPATH='./include', CXXFLAGS='-O -KPIC -DNDEBUG')
|
env.StaticLibrary('agg', glob.glob('./src/' + '*.cpp'), LIBS=[], CPPPATH='./include', CXXFLAGS='-O -KPIC -DNDEBUG')
|
||||||
else:
|
else:
|
||||||
env.StaticLibrary('agg', glob.glob('./src/' + '*.cpp'), LIBS=[], CPPPATH='./include', CXXFLAGS='-O%s -fPIC -DNDEBUG' % env['OPTIMIZATION'])
|
link_flags = ''
|
||||||
|
cxx_flags = '-O%s -fPIC -DNDEBUG' % env['OPTIMIZATION']
|
||||||
|
if env['PLATFORM'] == 'Darwin':
|
||||||
|
cxx_flags += ' -arch ppc -arch i386 -arch ppc64 -arch x86_64 '
|
||||||
|
link_flags = ' -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk '
|
||||||
|
env.StaticLibrary('agg', glob.glob('./src/' + '*.cpp'), LIBS=[], CPPPATH='./include', CXXFLAGS=cxx_flags,LINKFLAGS=link_flags)
|
||||||
|
|
|
@ -193,20 +193,41 @@ void render_tile_to_file(const mapnik::Map& map,
|
||||||
void render_to_file1(const mapnik::Map& map,
|
void render_to_file1(const mapnik::Map& map,
|
||||||
const std::string& filename,
|
const std::string& filename,
|
||||||
const std::string& format)
|
const std::string& format)
|
||||||
|
{
|
||||||
|
if (format == "pdf" | format == "svg" | format =="ps" | format == "ARGB32" | format == "RGB24")
|
||||||
|
{
|
||||||
|
#if defined(HAVE_CAIRO)
|
||||||
|
mapnik::save_to_cairo_file(map,filename,format);
|
||||||
|
#else
|
||||||
|
throw mapnik::ImageWriterException("Cairo backend not available, cannot write to format: " + format);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
mapnik::Image32 image(map.getWidth(),map.getHeight());
|
mapnik::Image32 image(map.getWidth(),map.getHeight());
|
||||||
render(map,image,0,0);
|
render(map,image,0,0);
|
||||||
mapnik::save_to_file(image,filename,format);
|
mapnik::save_to_file(image,filename,format);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void render_to_file2(const mapnik::Map& map,
|
void render_to_file2(const mapnik::Map& map,const std::string& filename)
|
||||||
const std::string& filename)
|
{
|
||||||
|
std::string format = mapnik::guess_type(filename);
|
||||||
|
if (format == "pdf" | format == "svg" | format =="ps")
|
||||||
|
{
|
||||||
|
#if defined(HAVE_CAIRO)
|
||||||
|
mapnik::save_to_cairo_file(map,filename,format);
|
||||||
|
#else
|
||||||
|
throw mapnik::ImageWriterException("Cairo backend not available, cannot write to format: " + format);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
mapnik::Image32 image(map.getWidth(),map.getHeight());
|
mapnik::Image32 image(map.getWidth(),map.getHeight());
|
||||||
render(map,image,0,0);
|
render(map,image,0,0);
|
||||||
mapnik::save_to_file(image,filename);
|
mapnik::save_to_file(image,filename);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
double scale_denominator(mapnik::Map const &map, bool geographic)
|
double scale_denominator(mapnik::Map const &map, bool geographic)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python
|
##!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# $Id$
|
# $Id$
|
||||||
|
@ -313,21 +313,26 @@ m.layers.append(popplaces_lyr)
|
||||||
m.zoom_to_box(Envelope(-8024477.28459,5445190.38849,-7381388.20071,5662941.44855))
|
m.zoom_to_box(Envelope(-8024477.28459,5445190.38849,-7381388.20071,5662941.44855))
|
||||||
|
|
||||||
# Render two maps, two PNGs, one JPEG.
|
# Render two maps, two PNGs, one JPEG.
|
||||||
im = Image(m.width,m.height)
|
#im = Image(m.width,m.height)
|
||||||
render(m, im)
|
#render(m, im)
|
||||||
|
|
||||||
# Save image to files
|
# Save image to files
|
||||||
images = []
|
images = []
|
||||||
im.save('demo.png', 'png') # true-colour RGBA
|
#im.save('demo.png', 'png') # true-colour RGBA
|
||||||
images.append('demo.png')
|
#images.append('demo.png')
|
||||||
im.save('demo256.png', 'png256') # save to palette based (max 256 colours) png
|
#im.save('demo256.png', 'png256') # save to palette based (max 256 colours) png
|
||||||
images.append('demo256.png')
|
#images.append('demo256.png')
|
||||||
im.save('demo.jpg', 'jpeg')
|
#im.save('demo.jpg', 'jpeg')
|
||||||
images.append('demo.jpg')
|
#images.append('demo.jpg')
|
||||||
|
|
||||||
|
render_to_file(m,'test_c.pdf','pdf')
|
||||||
|
render_to_file(m,'test_c.svg','svg')
|
||||||
|
render_to_file(m,'test_32.png','ARGB32')
|
||||||
|
render_to_file(m,'test_24.png','RGB24')
|
||||||
|
|
||||||
# Render cairo examples
|
# Render cairo examples
|
||||||
try:
|
try:
|
||||||
import cairo
|
import cairo_
|
||||||
surface = cairo.SVGSurface('demo.svg', m.width,m.height)
|
surface = cairo.SVGSurface('demo.svg', m.width,m.height)
|
||||||
render(m, surface)
|
render(m, surface)
|
||||||
images.append('demo.svg')
|
images.append('demo.svg')
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
// mapnik
|
// mapnik
|
||||||
#include <mapnik/config.hpp>
|
#include <mapnik/config.hpp>
|
||||||
|
#include <mapnik/map.hpp>
|
||||||
#include <mapnik/graphics.hpp>
|
#include <mapnik/graphics.hpp>
|
||||||
|
|
||||||
// boost
|
// boost
|
||||||
|
@ -53,6 +54,10 @@ namespace mapnik {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MAPNIK_DECL void save_to_cairo_file(mapnik::Map const& map,
|
||||||
|
std::string const& filename,
|
||||||
|
std::string const& type);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
MAPNIK_DECL void save_to_file(T const& image,
|
MAPNIK_DECL void save_to_file(T const& image,
|
||||||
std::string const& filename,
|
std::string const& filename,
|
||||||
|
@ -92,11 +97,29 @@ namespace mapnik {
|
||||||
boost::algorithm::iends_with(filename,std::string(".tiff"));
|
boost::algorithm::iends_with(filename,std::string(".tiff"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool is_pdf (std::string const& filename)
|
||||||
|
{
|
||||||
|
return boost::algorithm::iends_with(filename,std::string(".pdf"));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool is_svg (std::string const& filename)
|
||||||
|
{
|
||||||
|
return boost::algorithm::iends_with(filename,std::string(".svg"));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool is_ps (std::string const& filename)
|
||||||
|
{
|
||||||
|
return boost::algorithm::iends_with(filename,std::string(".ps"));
|
||||||
|
}
|
||||||
|
|
||||||
inline std::string type_from_filename(std::string const& filename)
|
inline std::string type_from_filename(std::string const& filename)
|
||||||
{
|
{
|
||||||
if (is_png(filename)) return "png";
|
if (is_png(filename)) return "png";
|
||||||
if (is_jpeg(filename)) return "jpeg";
|
if (is_jpeg(filename)) return "jpeg";
|
||||||
if (is_tiff(filename)) return "tiff";
|
if (is_tiff(filename)) return "tiff";
|
||||||
|
if (is_pdf(filename)) return "pdf";
|
||||||
|
if (is_svg(filename)) return "svg";
|
||||||
|
if (is_ps(filename)) return "ps";
|
||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,10 @@ extern "C"
|
||||||
#include <mapnik/memory.hpp>
|
#include <mapnik/memory.hpp>
|
||||||
#include <mapnik/image_view.hpp>
|
#include <mapnik/image_view.hpp>
|
||||||
|
|
||||||
|
#ifdef HAVE_CAIRO
|
||||||
|
#include <mapnik/cairo_renderer.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
// stl
|
// stl
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -104,8 +108,10 @@ namespace mapnik
|
||||||
}
|
}
|
||||||
else throw ImageWriterException("unknown file type: " + type);
|
else throw ImageWriterException("unknown file type: " + type);
|
||||||
}
|
}
|
||||||
|
else throw ImageWriterException("Could not write file to " + filename );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void save_to_file(T const& image,std::string const& filename)
|
void save_to_file(T const& image,std::string const& filename)
|
||||||
{
|
{
|
||||||
|
@ -114,6 +120,54 @@ namespace mapnik
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(HAVE_CAIRO)
|
||||||
|
|
||||||
|
void save_to_cairo_file(mapnik::Map const& map, std::string const& filename)
|
||||||
|
{
|
||||||
|
std::string type = type_from_filename(filename);
|
||||||
|
save_to_cairo_file(map,filename,type);
|
||||||
|
}
|
||||||
|
|
||||||
|
void save_to_cairo_file(mapnik::Map const& map,
|
||||||
|
std::string const& filename,
|
||||||
|
std::string const& type)
|
||||||
|
{
|
||||||
|
std::ofstream file (filename.c_str(), std::ios::out|std::ios::trunc|std::ios::binary);
|
||||||
|
if (file)
|
||||||
|
{
|
||||||
|
Cairo::RefPtr<Cairo::Surface> surface;
|
||||||
|
if (type == "pdf")
|
||||||
|
surface = Cairo::PdfSurface::create(filename, map.getWidth(),map.getHeight());
|
||||||
|
else if (type == "svg")
|
||||||
|
surface = Cairo::SvgSurface::create(filename, map.getWidth(),map.getHeight());
|
||||||
|
else if (type == "ps")
|
||||||
|
surface = Cairo::PsSurface::create(filename, map.getWidth(),map.getHeight());
|
||||||
|
else if (type == "ARGB32")
|
||||||
|
surface = Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, map.getWidth(),map.getHeight());
|
||||||
|
else if (type == "RGB24")
|
||||||
|
surface = Cairo::ImageSurface::create(Cairo::FORMAT_RGB24, map.getWidth(),map.getHeight());
|
||||||
|
else
|
||||||
|
throw ImageWriterException("unknown file type: " + type);
|
||||||
|
Cairo::RefPtr<Cairo::Context> context = Cairo::Context::create(surface);
|
||||||
|
|
||||||
|
if (type == "ARGB32" | type == "RGB24")
|
||||||
|
{
|
||||||
|
context->set_antialias(Cairo::ANTIALIAS_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
mapnik::cairo_renderer<Cairo::Context> ren(map, context);
|
||||||
|
ren.apply();
|
||||||
|
|
||||||
|
if (type == "ARGB32" | type == "RGB24")
|
||||||
|
{
|
||||||
|
surface->write_to_png(filename);
|
||||||
|
}
|
||||||
|
surface->finish();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
template void save_to_file<ImageData32>(ImageData32 const&,
|
template void save_to_file<ImageData32>(ImageData32 const&,
|
||||||
std::string const&,
|
std::string const&,
|
||||||
std::string const&);
|
std::string const&);
|
||||||
|
|
Loading…
Reference in a new issue