⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xpdfviewer.cc

📁 这是一个做pdf阅读器的源代码文件,是大家学习阅读器资料的很好参考
💻 CC
📖 第 1 页 / 共 5 页
字号:
void XPDFViewer::cmdFollowLinkNoSel(GString *args[], int nArgs,				    XEvent *event) {  doLink(mouseX(event), mouseY(event), gTrue, gFalse);}void XPDFViewer::cmdFullScreenMode(GString *args[], int nArgs,				   XEvent *event) {  PDFDoc *doc;  XPDFViewer *viewer;  int pg;  Widget btn;  if (core->getFullScreen()) {    return;  }  pg = core->getPageNum();  XtPopdown(win);  doc = core->takeDoc(gFalse);  viewer = app->reopen(this, doc, pg, gTrue);  btn = XtNameToWidget(viewer->popupMenu, "fullScreen");  XtVaSetValues(btn, XmNset, XmSET, NULL);}void XPDFViewer::cmdGoBackward(GString *args[], int nArgs,			       XEvent *event) {  core->goBackward();}void XPDFViewer::cmdGoForward(GString *args[], int nArgs,			      XEvent *event) {  core->goForward();}void XPDFViewer::cmdGotoDest(GString *args[], int nArgs,			     XEvent *event) {  int pg;  LinkDest *dest;  getPageAndDest(1, args[0], &pg, &dest);  if (dest) {    displayDest(dest, core->getZoom(), core->getRotate(), gTrue);    delete dest;  }}void XPDFViewer::cmdGotoLastPage(GString *args[], int nArgs,				 XEvent *event) {  displayPage(core->getDoc()->getNumPages(),	      core->getZoom(), core->getRotate(),	      gTrue, gTrue);}void XPDFViewer::cmdGotoLastPageNoScroll(GString *args[], int nArgs,					 XEvent *event) {  displayPage(core->getDoc()->getNumPages(),	      core->getZoom(), core->getRotate(),	      gFalse, gTrue);}void XPDFViewer::cmdGotoPage(GString *args[], int nArgs,			     XEvent *event) {  int pg;  pg = atoi(args[0]->getCString());  if (pg < 1 || pg > core->getDoc()->getNumPages()) {    return;  }  displayPage(pg, core->getZoom(), core->getRotate(), gTrue, gTrue);}void XPDFViewer::cmdGotoPageNoScroll(GString *args[], int nArgs,				     XEvent *event) {  int pg;  pg = atoi(args[0]->getCString());  if (pg < 1 || pg > core->getDoc()->getNumPages()) {    return;  }  displayPage(pg, core->getZoom(), core->getRotate(), gFalse, gTrue);}void XPDFViewer::cmdNextPage(GString *args[], int nArgs,			     XEvent *event) {  core->gotoNextPage(1, gTrue);}void XPDFViewer::cmdNextPageNoScroll(GString *args[], int nArgs,				     XEvent *event) {  core->gotoNextPage(1, gFalse);}void XPDFViewer::cmdOpen(GString *args[], int nArgs,			 XEvent *event) {  mapOpenDialog(gFalse);}void XPDFViewer::cmdOpenFile(GString *args[], int nArgs,			     XEvent *event) {  open(args[0], 1, NULL);}void XPDFViewer::cmdOpenFileAtDest(GString *args[], int nArgs,				   XEvent *event) {  open(args[0], 1, args[1]);}void XPDFViewer::cmdOpenFileAtDestInNewWin(GString *args[], int nArgs,					   XEvent *event) {  app->openAtDest(args[0], args[1]);}void XPDFViewer::cmdOpenFileAtPage(GString *args[], int nArgs,				   XEvent *event) {  open(args[0], atoi(args[1]->getCString()), NULL);}void XPDFViewer::cmdOpenFileAtPageInNewWin(GString *args[], int nArgs,					   XEvent *event) {  app->open(args[0], atoi(args[1]->getCString()));}void XPDFViewer::cmdOpenFileInNewWin(GString *args[], int nArgs,				     XEvent *event) {  app->open(args[0]);}void XPDFViewer::cmdOpenInNewWin(GString *args[], int nArgs,				 XEvent *event) {  mapOpenDialog(gTrue);}void XPDFViewer::cmdOpenOutline(GString *args[], int nArgs,				XEvent *event) {#ifndef DISABLE_OUTLINE  Dimension w;  if (outlineScroll == None) {    return;  }  XtVaGetValues(outlineScroll, XmNwidth, &w, NULL);  if (w == 1) {    // this ugly kludge is apparently the only way to resize the panes    // within an XmPanedWindow    XtVaSetValues(outlineScroll, XmNpaneMinimum, outlinePaneWidth,		  XmNpaneMaximum, outlinePaneWidth, NULL);    XtVaSetValues(outlineScroll, XmNpaneMinimum, 1,		  XmNpaneMaximum, 10000, NULL);  }#endif}void XPDFViewer::cmdPageDown(GString *args[], int nArgs,			     XEvent *event) {  core->scrollPageDown();}void XPDFViewer::cmdPageUp(GString *args[], int nArgs,			   XEvent *event) {  core->scrollPageUp();}void XPDFViewer::cmdPostPopupMenu(GString *args[], int nArgs,				  XEvent *event) {  XmMenuPosition(popupMenu, event->type == ButtonPress ? &event->xbutton		                                       : (XButtonEvent *)NULL);  XtManageChild(popupMenu);  // this is magic (taken from DDD) - weird things happen if this  // call isn't made (this is done in two different places, in hopes  // of squashing this stupid bug)  XtUngrabButton(core->getDrawAreaWidget(), AnyButton, AnyModifier);}void XPDFViewer::cmdPrevPage(GString *args[], int nArgs,			     XEvent *event) {  core->gotoPrevPage(1, gTrue, gFalse);}void XPDFViewer::cmdPrevPageNoScroll(GString *args[], int nArgs,				     XEvent *event) {  core->gotoPrevPage(1, gFalse, gFalse);}void XPDFViewer::cmdPrint(GString *args[], int nArgs,			  XEvent *event) {  XtManageChild(printDialog);}void XPDFViewer::cmdQuit(GString *args[], int nArgs,			 XEvent *event) {  app->quit();}void XPDFViewer::cmdRaise(GString *args[], int nArgs,			  XEvent *event) {  XMapRaised(display, XtWindow(win));  XFlush(display);}void XPDFViewer::cmdRedraw(GString *args[], int nArgs,			   XEvent *event) {  displayPage(core->getPageNum(), core->getZoom(), core->getRotate(),	      gFalse, gFalse);}void XPDFViewer::cmdReload(GString *args[], int nArgs,			   XEvent *event) {  reloadFile();}void XPDFViewer::cmdRun(GString *args[], int nArgs,			XEvent *event) {  GString *fmt, *cmd, *s;  LinkAction *action;  double selLRX, selLRY, selURX, selURY;  int selPage;  GBool gotSel;  char buf[64];  char *p;  char c0, c1;  int i;  cmd = new GString();  fmt = args[0];  i = 0;  gotSel = gFalse;  while (i < fmt->getLength()) {    c0 = fmt->getChar(i);    if (c0 == '%' && i+1 < fmt->getLength()) {      c1 = fmt->getChar(i+1);      switch (c1) {      case 'f':	if (core->getDoc() && (s = core->getDoc()->getFileName())) {	  cmd->append(s);	}	break;      case 'b':	if (core->getDoc() && (s = core->getDoc()->getFileName())) {	  if ((p = strrchr(s->getCString(), '.'))) {	    cmd->append(s->getCString(), p - s->getCString());	  } else {	    cmd->append(s);	  }	}	break;      case 'u':	if ((action = core->getLinkAction()) &&	    action->getKind() == actionURI) {	  s = core->mungeURL(((LinkURI *)action)->getURI());	  cmd->append(s);	  delete s;	}	break;      case 'x':      case 'y':      case 'X':      case 'Y':	if (!gotSel) {	  if (!core->getSelection(&selPage, &selURX, &selURY,				  &selLRX, &selLRY)) {	    selPage = 0;	    selURX = selURY = selLRX = selLRY = 0;	  }	  gotSel = gTrue;	}	sprintf(buf, "%g",		(c1 == 'x') ? selURX :		(c1 == 'y') ? selURY :		(c1 == 'X') ? selLRX : selLRY);	cmd->append(buf);	break;      default:	cmd->append(c1);	break;      }      i += 2;    } else {      cmd->append(c0);      ++i;    }  }#ifdef VMS  cmd->insert(0, "spawn/nowait ");#elif defined(__EMX__)  cmd->insert(0, "start /min /n ");#else  cmd->append(" &");#endif  system(cmd->getCString());  delete cmd;}void XPDFViewer::cmdScrollDown(GString *args[], int nArgs,			       XEvent *event) {  core->scrollDown(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollDownNextPage(GString *args[], int nArgs,				       XEvent *event) {  core->scrollDownNextPage(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollLeft(GString *args[], int nArgs,			       XEvent *event) {  core->scrollLeft(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollOutlineDown(GString *args[], int nArgs,				      XEvent *event) {#ifndef DISABLE_OUTLINE  Widget sb;  int val, inc, pageInc, m, slider;  if (outlineScroll == None) {    return;  }  if ((sb = XtNameToWidget(outlineScroll, "VertScrollBar"))) {    XtVaGetValues(sb, XmNvalue, &val, XmNincrement, &inc,		  XmNpageIncrement, &pageInc, XmNmaximum, &m,		  XmNsliderSize, &slider, NULL);    if ((val += inc * atoi(args[0]->getCString())) > m - slider) {      val = m - slider;    }    XmScrollBarSetValues(sb, val, slider, inc, pageInc, True);  }#endif}void XPDFViewer::cmdScrollOutlineUp(GString *args[], int nArgs,				    XEvent *event) {#ifndef DISABLE_OUTLINE  Widget sb;  int val, inc, pageInc, m, slider;  if (outlineScroll == None) {    return;  }  if ((sb = XtNameToWidget(outlineScroll, "VertScrollBar"))) {    XtVaGetValues(sb, XmNvalue, &val, XmNincrement, &inc,		  XmNpageIncrement, &pageInc, XmNminimum, &m,		  XmNsliderSize, &slider, NULL);    if ((val -= inc * atoi(args[0]->getCString())) < m) {      val = m;    }    XmScrollBarSetValues(sb, val, slider, inc, pageInc, True);  }#endif}void XPDFViewer::cmdScrollRight(GString *args[], int nArgs,				XEvent *event) {  core->scrollRight(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollToBottomEdge(GString *args[], int nArgs,				       XEvent *event) {  core->scrollToBottomEdge();}void XPDFViewer::cmdScrollToBottomRight(GString *args[], int nArgs,					XEvent *event) {  core->scrollToBottomRight();}void XPDFViewer::cmdScrollToLeftEdge(GString *args[], int nArgs,				     XEvent *event) {  core->scrollToLeftEdge();}void XPDFViewer::cmdScrollToRightEdge(GString *args[], int nArgs,				      XEvent *event) {  core->scrollToRightEdge();}void XPDFViewer::cmdScrollToTopEdge(GString *args[], int nArgs,				    XEvent *event) {  core->scrollToTopEdge();}void XPDFViewer::cmdScrollToTopLeft(GString *args[], int nArgs,				    XEvent *event) {  core->scrollToTopLeft();}void XPDFViewer::cmdScrollUp(GString *args[], int nArgs,			     XEvent *event) {  core->scrollUp(atoi(args[0]->getCString()));}void XPDFViewer::cmdScrollUpPrevPage(GString *args[], int nArgs,				     XEvent *event) {  core->scrollUpPrevPage(atoi(args[0]->getCString()));}void XPDFViewer::cmdSinglePageMode(GString *args[], int nArgs,				   XEvent *event) {  Widget btn;  if (!core->getContinuousMode()) {    return;  }  core->setContinuousMode(gFalse);  btn = XtNameToWidget(popupMenu, "continuousMode");  XtVaSetValues(btn, XmNset, XmUNSET, NULL);}void XPDFViewer::cmdStartPan(GString *args[], int nArgs,			     XEvent *event) {  core->startPan(mouseX(event), mouseY(event));}void XPDFViewer::cmdStartSelection(GString *args[], int nArgs,				   XEvent *event) {  core->startSelection(mouseX(event), mouseY(event));}void XPDFViewer::cmdToggleContinuousMode(GString *args[], int nArgs,					 XEvent *event) {  if (core->getContinuousMode()) {    cmdSinglePageMode(NULL, 0, event);  } else {    cmdContinuousMode(NULL, 0, event);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -