summaryrefslogtreecommitdiffstats
path: root/filters/kword/pdf/xpdf/xpdf/XPDFApp.cc
diff options
context:
space:
mode:
Diffstat (limited to 'filters/kword/pdf/xpdf/xpdf/XPDFApp.cc')
-rw-r--r--filters/kword/pdf/xpdf/xpdf/XPDFApp.cc386
1 files changed, 0 insertions, 386 deletions
diff --git a/filters/kword/pdf/xpdf/xpdf/XPDFApp.cc b/filters/kword/pdf/xpdf/xpdf/XPDFApp.cc
deleted file mode 100644
index e456310b6..000000000
--- a/filters/kword/pdf/xpdf/xpdf/XPDFApp.cc
+++ /dev/null
@@ -1,386 +0,0 @@
-//========================================================================
-//
-// XPDFApp.cc
-//
-// Copyright 2002 Glyph & Cog, LLC
-//
-//========================================================================
-
-#include <aconf.h>
-
-#ifdef USE_GCC_PRAGMAS
-#pragma implementation
-#endif
-
-#include "GString.h"
-#include "GList.h"
-#include "Error.h"
-#include "XPDFViewer.h"
-#include "XPDFApp.h"
-#include "config.h"
-
-// these macro defns conflict with xpdf's Object class
-#ifdef LESSTIF_VERSION
-#undef XtDisplay
-#undef XtScreen
-#undef XtWindow
-#undef XtParent
-#undef XtIsRealized
-#endif
-
-//------------------------------------------------------------------------
-
-#define remoteCmdSize 512
-
-//------------------------------------------------------------------------
-
-static String fallbackResources[] = {
- "*XmTextField.fontList: -*-courier-medium-r-normal--12-*-*-*-*-*-iso8859-1",
- "*.fontList: -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1",
- "*XmTextField.translations: #override\\n"
- " Ctrl<Key>a:beginning-of-line()\\n"
- " Ctrl<Key>b:backward-character()\\n"
- " Ctrl<Key>d:delete-next-character()\\n"
- " Ctrl<Key>e:end-of-line()\\n"
- " Ctrl<Key>f:forward-character()\\n"
- " Ctrl<Key>u:beginning-of-line()delete-to-end-of-line()\\n"
- " Ctrl<Key>k:delete-to-end-of-line()\\n",
- NULL
-};
-
-static XrmOptionDescRec xOpts[] = {
- {"-display", ".display", XrmoptionSepArg, NULL},
- {"-foreground", "*Foreground", XrmoptionSepArg, NULL},
- {"-fg", "*Foreground", XrmoptionSepArg, NULL},
- {"-background", "*Background", XrmoptionSepArg, NULL},
- {"-bg", "*Background", XrmoptionSepArg, NULL},
- {"-geometry", ".geometry", XrmoptionSepArg, NULL},
- {"-g", ".geometry", XrmoptionSepArg, NULL},
- {"-font", "*.fontList", XrmoptionSepArg, NULL},
- {"-fn", "*.fontList", XrmoptionSepArg, NULL},
- {"-title", ".title", XrmoptionSepArg, NULL},
- {"-cmap", ".installCmap", XrmoptionNoArg, (XPointer)"on"},
- {"-rgb", ".rgbCubeSize", XrmoptionSepArg, NULL},
- {"-rv", ".reverseVideo", XrmoptionNoArg, (XPointer)"true"},
- {"-papercolor", ".paperColor", XrmoptionSepArg, NULL},
- {"-z", ".initialZoom", XrmoptionSepArg, NULL}
-};
-
-#define nXOpts (sizeof(xOpts) / sizeof(XrmOptionDescRec))
-
-struct XPDFAppResources {
- String geometry;
- String title;
- Bool installCmap;
- int rgbCubeSize;
- Bool reverseVideo;
- String paperColor;
- String initialZoom;
- Bool viKeys;
-};
-
-static Bool defInstallCmap = False;
-static int defRGBCubeSize = defaultRGBCube;
-static Bool defReverseVideo = False;
-static Bool defViKeys = False;
-
-static XtResource xResources[] = {
- { "geometry", "Geometry", XtRString, sizeof(String), XtOffsetOf(XPDFAppResources, geometry), XtRString, (XtPointer)NULL },
- { "title", "Title", XtRString, sizeof(String), XtOffsetOf(XPDFAppResources, title), XtRString, (XtPointer)NULL },
- { "installCmap", "InstallCmap", XtRBool, sizeof(Bool), XtOffsetOf(XPDFAppResources, installCmap), XtRBool, (XtPointer)&defInstallCmap },
- { "rgbCubeSize", "RgbCubeSize", XtRInt, sizeof(int), XtOffsetOf(XPDFAppResources, rgbCubeSize), XtRInt, (XtPointer)&defRGBCubeSize },
- { "reverseVideo", "ReverseVideo", XtRBool, sizeof(Bool), XtOffsetOf(XPDFAppResources, reverseVideo), XtRBool, (XtPointer)&defReverseVideo },
- { "paperColor", "PaperColor", XtRString, sizeof(String), XtOffsetOf(XPDFAppResources, paperColor), XtRString, (XtPointer)NULL },
- { "initialZoom", "InitialZoom", XtRString, sizeof(String), XtOffsetOf(XPDFAppResources, initialZoom), XtRString, (XtPointer)NULL },
- { "viKeys", "ViKeys", XtRBool, sizeof(Bool), XtOffsetOf(XPDFAppResources, viKeys), XtRBool, (XtPointer)&defViKeys }
-};
-
-#define nXResources (sizeof(xResources) / sizeof(XtResource))
-
-//------------------------------------------------------------------------
-// XPDFApp
-//------------------------------------------------------------------------
-
-#if 0 //~ for debugging
-static int xErrorHandler(Display *display, XErrorEvent *ev) {
- printf("X error:\n");
- printf(" resource ID = %08lx\n", ev->resourceid);
- printf(" serial = %lu\n", ev->serial);
- printf(" error_code = %d\n", ev->error_code);
- printf(" request_code = %d\n", ev->request_code);
- printf(" minor_code = %d\n", ev->minor_code);
- fflush(stdout);
- abort();
-}
-#endif
-
-XPDFApp::XPDFApp(int *argc, char *argv[]) {
- appShell = XtAppInitialize(&appContext, xpdfAppName, xOpts, nXOpts,
- argc, argv, fallbackResources, NULL, 0);
- display = XtDisplay(appShell);
- screenNum = XScreenNumberOfScreen(XtScreen(appShell));
-#if XmVERSION > 1
- XtVaSetValues(XmGetXmDisplay(XtDisplay(appShell)),
- XmNenableButtonTab, True, NULL);
-#endif
-#if XmVERSION > 1
- // Drag-and-drop appears to be buggy -- I'm seeing weird crashes
- // deep in the Motif code when I destroy widgets in the XpdfForms
- // code. Xpdf doesn't use it, so just turn it off.
- XtVaSetValues(XmGetXmDisplay(XtDisplay(appShell)),
- XmNdragInitiatorProtocolStyle, XmDRAG_NONE,
- XmNdragReceiverProtocolStyle, XmDRAG_NONE,
- NULL);
-#endif
-
-#if 0 //~ for debugging
- XSynchronize(display, True);
- XSetErrorHandler(&xErrorHandler);
-#endif
-
- fullScreen = gFalse;
- remoteAtom = None;
- remoteViewer = NULL;
- remoteWin = None;
-
- getResources();
-
- viewers = new GList();
-
-}
-
-void XPDFApp::getResources() {
- XPDFAppResources resources;
- XColor xcol, xcol2;
- Colormap colormap;
-
- XtGetApplicationResources(appShell, &resources, xResources, nXResources,
- NULL, 0);
- geometry = resources.geometry ? new GString(resources.geometry)
- : (GString *)NULL;
- title = resources.title ? new GString(resources.title) : (GString *)NULL;
- installCmap = (GBool)resources.installCmap;
- rgbCubeSize = resources.rgbCubeSize;
- reverseVideo = (GBool)resources.reverseVideo;
- paperColor = reverseVideo ? BlackPixel(display, screenNum) :
- WhitePixel(display, screenNum);
- if (resources.paperColor) {
- XtVaGetValues(appShell, XmNcolormap, &colormap, NULL);
- if (XAllocNamedColor(display, colormap, resources.paperColor,
- &xcol, &xcol2)) {
- paperColor = xcol.pixel;
- } else {
- error(-1, "Couldn't allocate color '%s'", resources.paperColor);
- }
- }
- initialZoom = resources.initialZoom ? new GString(resources.initialZoom)
- : (GString *)NULL;
- viKeys = (GBool)resources.viKeys;
-}
-
-XPDFApp::~XPDFApp() {
- deleteGList(viewers, XPDFViewer);
- if (geometry) {
- delete geometry;
- }
- if (title) {
- delete title;
- }
- if (initialZoom) {
- delete initialZoom;
- }
-}
-
-XPDFViewer *XPDFApp::open(GString *fileName, int page,
- GString *ownerPassword, GString *userPassword) {
- XPDFViewer *viewer;
-
- viewer = new XPDFViewer(this, fileName, page, NULL,
- ownerPassword, userPassword);
- if (!viewer->isOk()) {
- delete viewer;
- return NULL;
- }
- if (remoteAtom != None) {
- remoteViewer = viewer;
- remoteWin = viewer->getWindow();
- XtAddEventHandler(remoteWin, PropertyChangeMask, False,
- &remoteMsgCbk, this);
- XSetSelectionOwner(display, remoteAtom, XtWindow(remoteWin), CurrentTime);
- }
- viewers->append(viewer);
- return viewer;
-}
-
-XPDFViewer *XPDFApp::openAtDest(GString *fileName, GString *dest,
- GString *ownerPassword,
- GString *userPassword) {
- XPDFViewer *viewer;
-
- viewer = new XPDFViewer(this, fileName, 1, dest,
- ownerPassword, userPassword);
- if (!viewer->isOk()) {
- delete viewer;
- return NULL;
- }
- if (remoteAtom != None) {
- remoteViewer = viewer;
- remoteWin = viewer->getWindow();
- XtAddEventHandler(remoteWin, PropertyChangeMask, False,
- &remoteMsgCbk, this);
- XSetSelectionOwner(display, remoteAtom, XtWindow(remoteWin), CurrentTime);
- }
- viewers->append(viewer);
- return viewer;
-}
-
-void XPDFApp::close(XPDFViewer *viewer, GBool closeLast) {
- int i;
-
- if (viewers->getLength() == 1) {
- if (viewer != (XPDFViewer *)viewers->get(0)) {
- return;
- }
- if (closeLast) {
- quit();
- } else {
- viewer->clear();
- }
- } else {
- for (i = 0; i < viewers->getLength(); ++i) {
- if (((XPDFViewer *)viewers->get(i)) == viewer) {
- viewers->del(i);
- if (remoteAtom != None && remoteViewer == viewer) {
- remoteViewer = (XPDFViewer *)viewers->get(viewers->getLength() - 1);
- remoteWin = remoteViewer->getWindow();
- XSetSelectionOwner(display, remoteAtom, XtWindow(remoteWin),
- CurrentTime);
- }
- delete viewer;
- return;
- }
- }
- }
-}
-
-void XPDFApp::quit() {
- if (remoteAtom != None) {
- XSetSelectionOwner(display, remoteAtom, None, CurrentTime);
- }
- while (viewers->getLength() > 0) {
- delete (XPDFViewer *)viewers->del(0);
- }
- XtAppSetExitFlag(appContext);
-}
-
-void XPDFApp::run() {
- XtAppMainLoop(appContext);
-}
-
-void XPDFApp::setRemoteName(char *remoteName) {
- remoteAtom = XInternAtom(display, remoteName, False);
- remoteXWin = XGetSelectionOwner(display, remoteAtom);
-}
-
-GBool XPDFApp::remoteServerRunning() {
- return remoteXWin != None;
-}
-
-void XPDFApp::remoteOpen(GString *fileName, int page, GBool raise) {
- char cmd[remoteCmdSize];
-
- sprintf(cmd, "%c %d %.200s",
- raise ? 'D' : 'd', page, fileName->getCString());
- XChangeProperty(display, remoteXWin, remoteAtom, remoteAtom, 8,
- PropModeReplace, (Guchar *)cmd, strlen(cmd) + 1);
- XFlush(display);
-}
-
-void XPDFApp::remoteOpenAtDest(GString *fileName, GString *dest, GBool raise) {
- char cmd[remoteCmdSize];
-
- sprintf(cmd, "%c +%.256s %.200s",
- raise ? 'D' : 'd', dest->getCString(), fileName->getCString());
- XChangeProperty(display, remoteXWin, remoteAtom, remoteAtom, 8,
- PropModeReplace, (Guchar *)cmd, strlen(cmd) + 1);
- XFlush(display);
-}
-
-void XPDFApp::remoteRaise() {
- XChangeProperty(display, remoteXWin, remoteAtom, remoteAtom, 8,
- PropModeReplace, (Guchar *)"r", 2);
- XFlush(display);
-}
-
-void XPDFApp::remoteQuit() {
- XChangeProperty(display, remoteXWin, remoteAtom, remoteAtom, 8,
- PropModeReplace, (Guchar *)"q", 2);
- XFlush(display);
-}
-
-void XPDFApp::remoteMsgCbk(Widget widget, XtPointer ptr,
- XEvent *event, Boolean *cont) {
- XPDFApp *app = (XPDFApp *)ptr;
- char *cmd;
- Atom type;
- int format;
- Gulong size, remain;
- char *p, *q;
- GString *fileName;
- int page;
- GString *destName;
-
- if (event->xproperty.atom != app->remoteAtom) {
- *cont = True;
- return;
- }
- *cont = False;
-
- // get command
- if (XGetWindowProperty(app->display, XtWindow(app->remoteWin),
- app->remoteAtom, 0, remoteCmdSize/4,
- True, app->remoteAtom,
- &type, &format, &size, &remain,
- (Guchar **)&cmd) != Success) {
- return;
- }
- if (size == 0) {
- return;
- }
-
- // raise window
- if (cmd[0] == 'D' || cmd[0] == 'r'){
- XMapRaised(app->display, XtWindow(app->remoteWin));
- XFlush(app->display);
- }
-
- // display file / page
- if (cmd[0] == 'd' || cmd[0] == 'D') {
- p = cmd + 2;
- q = strchr(p, ' ');
- if (!q) {
- return;
- }
- *q++ = '\0';
- page = 1;
- destName = NULL;
- if (*p == '+') {
- destName = new GString(p + 1);
- } else {
- page = atoi(p);
- }
- if (q) {
- fileName = new GString(q);
- app->remoteViewer->open(fileName, page, destName);
- delete fileName;
- }
- XFree((XPointer)cmd);
- if (destName) {
- delete destName;
- }
-
- // quit
- } else if (cmd[0] == 'q') {
- app->quit();
- }
-}