[KLF Backend][KLF Tools][KLF Home]
KLatexFormula Project
klfbackend.h
Go to the documentation of this file.
1/***************************************************************************
2 * file klfbackend.h
3 * This file is part of the KLatexFormula Project.
4 * Copyright (C) 2011 by Philippe Faist
5 * philippe.faist@bluewin.ch
6 * *
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program; if not, write to the *
19 * Free Software Foundation, Inc., *
20 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
21 ***************************************************************************/
22/* $Id$ */
23
24#ifndef KLFBACKEND_H
25#define KLFBACKEND_H
26
27#include <QString>
28#include <QStringList>
29#include <QByteArray>
30#include <QImage>
31#include <QMutex>
32#include <QMap>
33#include <QVariant>
34
35#include <klfdefs.h>
36#include <klfpobj.h>
37#include <klfutil.h> // KLFRefPtr
38
40
46#define KLFERR_NOERROR 0
47
49#define KLFERR_TEMPDIR_FAIL -48
51#define KLFERR_MISSINGLATEXFORMULA -1
53#define KLFERR_MISSINGMATHMODETHREEDOTS -2
55#define KLFERR_TEXWRITEFAIL -3
57#define KLFERR_LATEX_NORUN -4
59#define KLFERR_NOLATEXPROG KLFERR_LATEX_NORUN
61#define KLFERR_LATEX_NONORMALEXIT -5
63#define KLFERR_LATEXNONORMALEXIT KLFERR_LATEX_NONORMALEXIT
65#define KLFERR_LATEX_NOOUTPUT -6
67#define KLFERR_NODVIFILE KLFERR_LATEX_NOOUTPUT
69#define KLFERR_LATEX_OUTPUTREADFAIL -24
71#define KLFERR_DVIREADFAIL KLFERR_LATEX_OUTPUTREADFAIL
73#define KLFERR_DVIPS_NORUN -7
75#define KLFERR_NODVIPSPROG KLFERR_DVIPS_NORUN
77#define KLFERR_DVIPS_NONORMALEXIT -8
79#define KLFERR_DVIPSNONORMALEXIT KLFERR_DVIPS_NONORMALEXIT
81#define KLFERR_DVIPS_NOOUTPUT -9
83#define KLFERR_NOEPSFILE KLFERR_DVIPS_NOOUTPUT
85#define KLFERR_DVIPS_OUTPUTREADFAIL -10
87#define KLFERR_EPSREADFAIL KLFERR_DVIPS_OUTPUTREADFAIL
89#define KLFERR_DVIPS_OUTPUTNOBBOX -11
91#define KLFERR_NOEPSBBOX KLFERR_DVIPS_OUTPUTNOBBOX
93#define KLFERR_GSBBOX_NORUN -25
95#define KLFERR_GSBBOX_NONORMALEXIT -26
97#define KLFERR_GSBBOX_NOOUTPUT -27
99#define KLFERR_GSBBOX_NOBBOX -28
101#define KLFERR_GSPOSTPROC_NORUN -29
103#define KLFERR_GSPOSTPROC_NONORMALEXIT -30
105#define KLFERR_GSPOSTPROC_NOOUTPUT -22
107#define KLFERR_GSPOSTPROC_NOOUTLINEFONTS -49
109#define KLFERR_NOEPSFILE_OF KLFERR_GSPOSTPROC_NOOUTPUT
111#define KLFERR_GSPOSTPROC_OUTPUTREADFAIL -23
113#define KLFERR_EPSREADFAIL_OF KLFERR_GSPOSTPROC_OUTPUTREADFAIL
115#define KLFERR_GSPNG_NORUN -14
117#define KLFERR_NOGSPROG KLFERR_GSPNG_NORUN
119#define KLFERR_GSPNG_NONORMALEXIT -15
121#define KLFERR_GSNONORMALEXIT KLFERR_GSPNG_NONORMALEXIT
123#define KLFERR_GSPNG_NOOUTPUT -16
125#define KLFERR_NOPNGFILE KLFERR_GSPNG_NOOUTPUT
127#define KLFERR_GSPNG_OUTPUTREADFAIL -17
129#define KLFERR_PNGREADFAIL KLFERR_GSPNG_OUTPUTREADFAIL
131#define KLFERR_PDFMARKSWRITEFAIL -47
133#define KLFERR_GSPDF_NORUN -31
135#define KLFERR_GSPDF_NONORMALEXIT -19
137#define KLFERR_EPSTOPDFNONORMALEXIT KLFERR_GSPDF_NONORMALEXIT
139#define KLFERR_GSPDF_NOOUTPUT -20
141#define KLFERR_NOPDFFILE KLFERR_GSPDF_NOOUTPUT
143#define KLFERR_GSPDF_OUTPUTREADFAIL -21
145#define KLFERR_PDFREADFAIL KLFERR_GSPDF_OUTPUTREADFAIL
147#define KLFERR_NOGSVERSION -32
149#define KLFERR_GSSVG_NOSVG -33
151#define KLFERR_GSSVG_NORUN -34
153#define KLFERR_GSSVG_NONORMALEXIT -35
155#define KLFERR_GSSVG_NOOUTPUT -36
157#define KLFERR_GSSVG_OUTPUTREADFAIL -37
159#define KLFERR_USERSCRIPT_NORUN -38
160#define KLFERR_USERSCRIPT_NONORMALEXIT -39
161#define KLFERR_USERSCRIPT_NOSCRIPTINFO -40
162#define KLFERR_USERSCRIPT_INVALIDSCRIPTINFO -41
163#define KLFERR_USERSCRIPT_NOOUTPUT -42
164#define KLFERR_USERSCRIPT_OUTPUTREADFAIL -43
165#define KLFERR_USERSCRIPT_BADKLFVERSION -44
166#define KLFERR_USERSCRIPT_BADSKIPFORMATS -45
167#define KLFERR_USERSCRIPT_BADCATEGORY -46
168// last error defined: -49
169
170
171
173#define KLFERR_PROGERR_LATEX 1
175#define KLFERR_PROGERR_DVIPS 2
177#define KLFERR_PROGERR_GSBBOX 6
179#define KLFERR_PROGERR_GSPOSTPROC 5
181#define KLFERR_PROGERR_GS_OF KLFERR_PROGERR_GSPOSTPROC
183#define KLFERR_PROGERR_GSPNG 3
185#define KLFERR_PROGERR_GS KLFERR_PROGERR_GSPNG
187#define KLFERR_PROGERR_GSPDF 4
189#define KLFERR_PROGERR_EPSTOPDF KLFERR_PROGERR_GSPDF
191#define KLFERR_PROGERR_GSSVG 7
193#define KLFERR_PROGERR_USERSCRIPT 8
194// last error defined: 8
195
196
198
207{
208public:
209
210 class TemplateGenerator;
211
213
219 {
221 klfSettings() : tborderoffset(0), rborderoffset(0), bborderoffset(0), lborderoffset(0),
222 calcEpsBoundingBox(true), outlineFonts(true),
223 wantRaw(false), wantPDF(true), wantSVG(true), execenv(),
224 templateGenerator(NULL) { }
225
244
261
265
274
278
282
286
290
295
301 };
302
304
306 struct klfInput
307 {
309 klfInput() : fontsize(-1), fg_color(0x00), bg_color(0xffffffff), dpi(600), vectorscale(1.0),
310 bypassTemplate(false) { }
326 double fontsize;
327
328 unsigned long fg_color;
334 unsigned long bg_color;
337 int dpi;
338
341
349
357
365 };
366
368
371 {
382
391
394
399
451 double width_pt;
453 double height_pt;
454 };
455
517 static klfOutput getLatexFormula(const klfInput& in, const klfSettings& settings,
518 bool isMainThread = true);
519
534 static QStringList availableSaveFormats(const klfOutput * output = NULL) ;
535
540 static QStringList availableSaveFormats(const klfOutput& output) ;
541
568 static bool saveOutputToFile(const klfOutput& output, const QString& fileName,
569 const QString& format = QString(), QString* errorString = NULL);
570
576 static bool saveOutputToDevice(const klfOutput& output, QIODevice *device,
577 const QString& format = QString("PNG"), QString* errorString = NULL);
578
593 static bool detectSettings(klfSettings *settings, const QString& extraPath = QString(),
594 bool isMainThread = true);
595
618 static bool detectOptionSettings(klfSettings *settings, bool isMainThread = true);
619
622
623
625 public:
627 virtual ~TemplateGenerator();
628
629 virtual QString generateTemplate(const klfInput& input, const klfSettings& settings) = 0;
630 };
631
633 public:
636
637 virtual QString generateTemplate(const klfInput& input, const klfSettings& settings);
638 };
639
640
641
642private:
643 KLFBackend();
644};
645
646
647
651
672
673
674
675
676
677KLF_EXPORT QStringList klfSettingsToEnvironmentForUserScript(const KLFBackend::klfSettings& settings);
678KLF_EXPORT QStringList klfInputToEnvironmentForUserScript(const KLFBackend::klfInput& in);
679
680
681
688{
689public:
692
693 virtual QString loadField(const QString& key) = 0;
694 virtual void saveField(const QString& key, const QString& value) = 0;
695
696 virtual void saveMetaInfo(const KLFBackend::klfInput& in, const KLFBackend::klfSettings& settings) ;
697};
698
700{
701public:
703
704 QString loadField(const QString &k);
705 void saveField(const QString& k, const QString& v);
706
707private:
708 QImage *_w;
709};
710
711
729{
730public:
732
733 void saveField(const QString& k, const QString& v);
734 void finish();
735
737 void savePDFField(const QString& k, const QString& v);
738
740 QString loadField(const QString& );
741
742private:
743 QByteArray * _s;
744};
745
746
747
748
749
750#endif
Reading and writing klfbackend meta-info.
Definition: klfbackend.h:688
The main engine for KLatexFormula.
Definition: klfbackend.h:207
static QStringList userScriptSettingsToEnvironment(const QMap< QString, QString > &userScriptSettings)
Write metainfo to PDF files via pdfmarks for ghostscript.
Definition: klfbackend.h:729
QString loadField(const QString &)
Definition: klfbackend.cpp:263
void savePDFField(const QString &k, const QString &v)
Saves the field without prepending 'KLF' to the key.
Definition: klfbackend.cpp:275
KLF_EXPORT bool operator==(const KLFBackend::klfInput &a, const KLFBackend::klfInput &b)
KLF_EXPORT bool klf_detect_execenv(KLFBackend::klfSettings *settings)
detects any additional settings to environment variables
const char * key
#define KLF_EXPORT
Specific input to KLFBackend::getLatexFormula()
Definition: klfbackend.h:307
QMap< QString, QString > userScriptParam
Arbitrary parameters to pass to user script.
Definition: klfbackend.h:364
unsigned long bg_color
Definition: klfbackend.h:334
QString userScript
A Path to a user script that acts as wrapper around LaTeX.
Definition: klfbackend.h:356
KLFBackend::getLatexFormula() result.
Definition: klfbackend.h:371
klfSettings settings
The settings that this output was generated with.
Definition: klfbackend.h:398
double height_pt
Width in points of the resulting equation.
Definition: klfbackend.h:453
QByteArray pdfdata
data for a pdf file
Definition: klfbackend.h:447
QByteArray epsdata_raw
data for an (eps-)postscript file.
Definition: klfbackend.h:434
QByteArray epsdata_bbox
data for an (eps-)postscript file.
Definition: klfbackend.h:441
QByteArray pngdata
the data for a png file (re-processed with meta information)
Definition: klfbackend.h:428
int status
A code describing the status of the request.
Definition: klfbackend.h:381
klfInput input
The input parameters used to generate this output.
Definition: klfbackend.h:396
QByteArray epsdata
data for an (eps-)postscript file.
Definition: klfbackend.h:445
QByteArray pngdata_raw
the data for a png file (exact gs output content)
Definition: klfbackend.h:408
double width_pt
Width in points of the resulting equation.
Definition: klfbackend.h:451
QImage result
The actual resulting image.
Definition: klfbackend.h:393
QByteArray svgdata
data for a SVG file, if ghostscript supports SVG
Definition: klfbackend.h:449
QByteArray dvidata
The DVI file data outputted by latex executable.
Definition: klfbackend.h:401
QString errorstr
An explicit error string.
Definition: klfbackend.h:390
General settings for KLFBackend::getLatexFormula()
Definition: klfbackend.h:219
QMap< QString, QString > userScriptInterpreters
Definition: klfbackend.h:300
TemplateGenerator * templateGenerator
Definition: klfbackend.h:294

Generated by doxygen 1.9.5