While exporting from the command-line, theApp() doesn't exist.

It was only needed for getting hex names of colors. So, get them
directly from a ColorCache object with default mapping.
This commit is contained in:
Tommaso Cucinotta 2012-12-10 23:22:10 +00:00
parent 4182205ca8
commit 4285b0b316
2 changed files with 17 additions and 5 deletions

View File

@ -5,7 +5,7 @@ include $(top_srcdir)/config/common.am
DISTCLEANFILES += libintl.h
AM_CPPFLAGS += $(PCH_FLAGS) -I$(top_srcdir)/src $(BOOST_INCLUDES) $(ENCHANT_CFLAGS) $(HUNSPELL_CFLAGS)
AM_CPPFLAGS += $(QT4_CPPFLAGS) $(QT4_CORE_INCLUDES)
AM_CPPFLAGS += $(QT4_CPPFLAGS) $(QT4_INCLUDES)
if BUILD_CLIENT_SUBDIR
CLIENT = client

View File

@ -27,6 +27,7 @@
#include "TexRow.h"
#include "frontends/Application.h" // hexName
#include "frontends/qt4/ColorCache.h"
#include "insets/Inset.h"
@ -36,6 +37,7 @@
#include "support/filetools.h"
#include "support/ForkedCalls.h"
#include "support/lstrings.h"
#include "support/qstring_helpers.h"
#include "support/bind.h"
@ -587,16 +589,26 @@ void PreviewLoader::Impl::startLoading(bool wait)
// FIXME XHTML
// The colors should be customizable.
ColorCode const bg = buffer_.isExporting()
? Color_white : PreviewLoader::backgroundColor();
? Color_white : PreviewLoader::backgroundColor();
ColorCode const fg = buffer_.isExporting()
? Color_black : PreviewLoader::foregroundColor();
? Color_black : PreviewLoader::foregroundColor();
std::string bg_name, fg_name;
if (theApp()) {
fg_name = theApp()->hexName(fg);
bg_name = theApp()->hexName(bg);
} else {
ColorCache cc;
fg_name = ltrim(fromqstr(cc.get(fg).name()), "#");
bg_name = ltrim(fromqstr(cc.get(bg).name()), "#");
}
// The conversion command.
ostringstream cs;
cs << pconverter_->command
<< " " << quoteName(latexfile.toFilesystemEncoding())
<< " --dpi " << int(font_scaling_factor)
<< " --fg " << theApp()->hexName(fg)
<< " --bg " << theApp()->hexName(bg);
<< " --fg " << fg_name
<< " --bg " << bg_name;
// FIXME what about LuaTeX?
if (buffer_.params().useNonTeXFonts)
cs << " --latex=xelatex";