summaryrefslogtreecommitdiffstats
path: root/kdvi/psgs.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdvi/psgs.h')
-rw-r--r--kdvi/psgs.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/kdvi/psgs.h b/kdvi/psgs.h
new file mode 100644
index 00000000..0b6e679d
--- /dev/null
+++ b/kdvi/psgs.h
@@ -0,0 +1,107 @@
+// -*- C++ -*-
+//
+// ghostscript_interface
+//
+// Part of KDVI - A framework for multipage text/gfx viewers
+//
+// (C) 2004 Stefan Kebekus
+// Distributed under the GPL
+
+#ifndef _PSGS_H_
+#define _PSGS_H_
+
+#include <qcolor.h>
+#include <qobject.h>
+#include <qstring.h>
+#include <qintdict.h>
+
+class PageNumber;
+class QPainter;
+
+
+class pageInfo
+{
+public:
+ pageInfo(const QString& _PostScriptString);
+ ~pageInfo();
+
+ QColor background;
+ QColor permanentBackground;
+ QString *PostScriptString;
+};
+
+
+class ghostscript_interface : public QObject
+{
+ Q_OBJECT
+
+public:
+ ghostscript_interface();
+ ~ghostscript_interface();
+
+ void clear();
+
+ // sets the PostScript which is used on a certain page
+ void setPostScript(const PageNumber& page, const QString& PostScript);
+
+ // sets path from additional postscript files may be read
+ void setIncludePath(const QString &_includePath);
+
+ // Sets the background color for a certain page. If permanent is false then the original
+ // background color can be restored by calling restoreBackground(page).
+ // The Option permanent = false is used when we want to display a different paper
+ // color as the one specified in the dvi file.
+ void setBackgroundColor(const PageNumber& page, const QColor& background_color, bool permanent = true);
+
+ // Restore the background to the color which was specified by the last call to setBackgroundColor()
+ // With option permanent = true.
+ void restoreBackgroundColor(const PageNumber& page);
+
+ // Draws the graphics of the page into the painter, if possible. If
+ // the page does not contain any graphics, nothing happens
+ void graphics(const PageNumber& page, double dpi, long magnification, QPainter* paint);
+
+ // Returns the background color for a certain page. If no color was
+ // set, Qt::white is returned.
+ QColor getBackgroundColor(const PageNumber& page) const;
+
+ QString *PostScriptHeaderString;
+
+ /** This method tries to find the PostScript file 'filename' in the
+ DVI file's directory (if the base-URL indicates that the DVI file
+ is local), and, if that fails, uses kpsewhich to find the file. If
+ the file is found, the full path (including file name) is
+ returned. Otherwise, the method returns the first argument. TODO:
+ use the DVI file's baseURL, once this is implemented.
+ */
+ static QString locateEPSfile(const QString &filename, const KURL &base);
+
+private:
+ void gs_generate_graphics_file(const PageNumber& page, const QString& filename, long magnification);
+ QIntDict<pageInfo> pageList;
+
+ double resolution; // in dots per inch
+ int pixel_page_w; // in pixels
+ int pixel_page_h; // in pixels
+
+ QString includePath;
+
+ // Output device that ghostscript is supposed tp use. Default is
+ // "png256". If that does not work, gs_generate_graphics_file will
+ // automatically try other known device drivers. If no known output
+ // device can be found, something is badly wrong. In that case,
+ // "gsDevice" is set to an empty string, and
+ // gs_generate_graphics_file will return immediately.
+ QValueListIterator<QString> gsDevice;
+
+ // A list of known devices, set by the constructor. This includes
+ // "png256", "pnm". If a device is found to not work, its name is
+ // removed from the list, and another device name is tried.
+ QStringList knownDevices;
+
+signals:
+ /** Passed through to the top-level kpart. */
+ void setStatusBarText( const QString& );
+};
+
+#endif