//
// XPDFCore.h
//
-// Copyright 2002 Glyph & Cog, LLC
+// Copyright 2002-2003 Glyph & Cog, LLC
//
//========================================================================
#include <aconf.h>
#include "gtypes.h"
#include "gfile.h" // for time_t
+#include "SplashTypes.h"
class GString;
class GList;
+class BaseStream;
class PDFDoc;
class LinkAction;
class LinkDest;
-class XPixmapOutputDev;
+class XSplashOutputDev;
//------------------------------------------------------------------------
// zoom factor
//------------------------------------------------------------------------
-#define minZoom -5
-#define maxZoom 5
-#define zoomPage 100
-#define zoomWidth 101
-#define defZoom 1
+#define zoomPage -1
+#define zoomWidth -2
+#define defZoom 125
//------------------------------------------------------------------------
// XPDFHistory
struct XPDFRegion {
int page;
double xMin, yMin, xMax, yMax;
- Gulong color;
- Gulong selectColor;
+ SplashRGB8 color;
+ SplashRGB8 selectColor;
+ GBool selectable;
};
//------------------------------------------------------------------------
// Create viewer core inside <parentWidgetA>.
XPDFCore(Widget shellA, Widget parentWidgetA,
- Gulong paperColorA, GBool fullScreenA, GBool reverseVideo,
- GBool installCmap, int rgbCubeSize);
+ SplashRGB8 paperColorA, GBool fullScreenA,
+ GBool reverseVideo, GBool installCmap, int rgbCubeSize);
~XPDFCore();
int loadFile(GString *fileName, GString *ownerPassword = NULL,
GString *userPassword = NULL);
+ // Load a new file, via a Stream instead of a file name. Returns
+ // pdfOk or error code.
+ int loadFile(BaseStream *stream, GString *ownerPassword = NULL,
+ GString *userPassword = NULL);
+
// Resize the window to fit page <pg> of the current document.
void resizeToPage(int pg);
// set, the window is vertically scrolled to the top; otherwise, no
// scrolling is done. If <addToHist> is set, this page change is
// added to the history list.
- void displayPage(int pageA, int zoomA, int rotateA,
+ void displayPage(int pageA, double zoomA, int rotateA,
GBool scrollToTop, GBool addToHist);
// Display a link destination.
- void displayDest(LinkDest *dest, int zoomA, int rotateA,
+ void displayDest(LinkDest *dest, double zoomA, int rotateA,
GBool addToHist);
//----- page/position changes
//----- find
- void find(char *s);
+ void find(char *s, GBool next = gFalse);
//----- simple modal dialogs
Widget getWidget() { return scrolledWin; }
Widget getDrawAreaWidget() { return drawArea; }
PDFDoc *getDoc() { return doc; }
- XPixmapOutputDev *getOutputDev() { return out; }
+ XSplashOutputDev *getOutputDev() { return out; }
int getPageNum() { return page; }
- int getZoom() { return zoom; }
+ double getZoom() { return zoom; }
double getZoomDPI() { return dpi; }
int getRotate() { return rotate; }
GBool canGoBack() { return historyBLen > 1; }
int getDrawAreaWidth() { return drawAreaWidth; }
int getDrawAreaHeight() { return drawAreaHeight; }
void setBusyCursor(GBool busy);
+ Cursor getBusyCursor() { return busyCursor; }
void takeFocus();
void enableHyperlinks(GBool on) { hyperlinksEnabled = on; }
void enableSelect(GBool on) { selectEnabled = on; }
private:
//----- hyperlinks
- void doLink(int mx, int my);
+ GBool doLink(int mx, int my);
void runCommand(GString *cmdFmt, GString *arg);
+ GString *mungeURL(GString *url);
//----- selection
static Boolean convertSelectionCbk(Widget widget, Atom *selection,
static void dialogCancelCbk(Widget widget, XtPointer ptr,
XtPointer callData);
- Gulong paperColor;
+ SplashRGB8 paperColor;
GBool fullScreen;
Display *display;
Cursor busyCursor, linkCursor, selectCursor;
Cursor currentCursor;
GC drawAreaGC; // GC for blitting into drawArea
- GC selectGC;
- GC highlightGC;
int drawAreaWidth, drawAreaHeight;
int scrollX, scrollY; // current upper-left corner
GBool lastDragTop; // last dragged selection edge was top/bottom
static GString *currentSelection; // selected text
static XPDFCore *currentSelectionOwner;
+ static Atom targetsAtom;
GBool panning;
int panMX, panMY;
PDFDoc *doc; // current PDF file
int page; // current page number
- int zoom; // current zoom level
+ double zoom; // current zoom level, in percent of 72 dpi
double dpi; // current zoom level, in DPI
int rotate; // current page rotation
time_t modTime; // last modification time of PDF file
GBool hyperlinksEnabled;
GBool selectEnabled;
- XPixmapOutputDev *out;
+ XSplashOutputDev *out;
int dialogDone;
};