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

📄 xpdfviewer.cc

📁 这是一个做pdf阅读器的源代码文件,是大家学习阅读器资料的很好参考
💻 CC
📖 第 1 页 / 共 5 页
字号:
  XtSetArg(args[n], XmNitemCount, nZoomMenuItems); ++n;  zoomComboBox = XmCreateComboBox(toolBar, "zoomComboBox", args, n);  for (i = 0; i < nZoomMenuItems; ++i) {    XmStringFree(st[i]);  }  addToolTip(zoomComboBox, "Zoom");  XtAddCallback(zoomComboBox, XmNselectionCallback,		&zoomComboBoxCbk, (XtPointer)this);  XtManageChild(zoomComboBox);  zoomWidget = zoomComboBox;#else  Widget menuPane;  char buf[16];  n = 0;  menuPane = XmCreatePulldownMenu(toolBar, "zoomMenuPane", args, n);  for (i = 0; i < nZoomMenuItems; ++i) {    n = 0;    s = XmStringCreateLocalized(zoomMenuInfo[i].label);    XtSetArg(args[n], XmNlabelString, s); ++n;    XtSetArg(args[n], XmNuserData, (XtPointer)i); ++n;    sprintf(buf, "zoom%d", i);    btn = XmCreatePushButton(menuPane, buf, args, n);    XmStringFree(s);    XtManageChild(btn);    XtAddCallback(btn, XmNactivateCallback,		  &zoomMenuCbk, (XtPointer)this);    zoomMenuBtns[i] = btn;  }  n = 0;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNleftWidget, pageCountLabel); ++n;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNmarginWidth, 0); ++n;  XtSetArg(args[n], XmNmarginHeight, 0); ++n;  XtSetArg(args[n], XmNsubMenuId, menuPane); ++n;  zoomMenu = XmCreateOptionMenu(toolBar, "zoomMenu", args, n);  addToolTip(zoomMenu, "Zoom");  XtManageChild(zoomMenu);  zoomWidget = zoomMenu;#endif  // find/print/about buttons  n = 0;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNleftWidget, zoomWidget); ++n;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNmarginWidth, 6); ++n;  XtSetArg(args[n], XmNlabelString, emptyString); ++n;  findBtn = XmCreatePushButton(toolBar, "find", args, n);  addToolTip(findBtn, "Find");  XtManageChild(findBtn);  XtAddCallback(findBtn, XmNactivateCallback,		&findCbk, (XtPointer)this);  n = 0;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNleftWidget, findBtn); ++n;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNmarginWidth, 6); ++n;  XtSetArg(args[n], XmNlabelString, emptyString); ++n;  printBtn = XmCreatePushButton(toolBar, "print", args, n);  addToolTip(printBtn, "Print");  XtManageChild(printBtn);  XtAddCallback(printBtn, XmNactivateCallback,		&printCbk, (XtPointer)this);  n = 0;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNleftWidget, printBtn); ++n;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNmarginWidth, 6); ++n;  XtSetArg(args[n], XmNlabelString, emptyString); ++n;  aboutBtn = XmCreatePushButton(toolBar, "about", args, n);  addToolTip(aboutBtn, "About / help");  XtManageChild(aboutBtn);  XtAddCallback(aboutBtn, XmNactivateCallback,		&aboutCbk, (XtPointer)this);  lastBtn = aboutBtn;  // quit button  n = 0;  XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNmarginWidth, 6); ++n;  s = XmStringCreateLocalized("Quit");  XtSetArg(args[n], XmNlabelString, s); ++n;  quitBtn = XmCreatePushButton(toolBar, "quit", args, n);  XmStringFree(s);  XtManageChild(quitBtn);  XtAddCallback(quitBtn, XmNactivateCallback,		&quitCbk, (XtPointer)this);  // link label  n = 0;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNleftWidget, lastBtn); ++n;  XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); ++n;  XtSetArg(args[n], XmNrightWidget, quitBtn); ++n;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); ++n;  XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); ++n;  s = XmStringCreateLocalized("");  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNrecomputeSize, True); ++n;  XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); ++n;  linkLabel = XmCreateLabel(toolBar, "linkLabel", args, n);  XmStringFree(s);  XtManageChild(linkLabel);  XmStringFree(emptyString);}#ifndef DISABLE_OUTLINEvoid XPDFViewer::initPanedWin(Widget parent) {  Widget clipWin;  Arg args[20];  int n;  // paned window  n = 0;  XtSetArg(args[n], XmNorientation, XmHORIZONTAL); ++n;#if defined(__sgi) && (XmVERSION <= 1)  panedWin = SgCreateHorzPanedWindow(parent, "panedWin", args, n);#else  panedWin = XmCreatePanedWindow(parent, "panedWin", args, n);#endif  XtManageChild(panedWin);  // scrolled window for outline container  n = 0;  XtSetArg(args[n], XmNpositionIndex, 0); ++n;  XtSetArg(args[n], XmNallowResize, True); ++n;  XtSetArg(args[n], XmNpaneMinimum, 1); ++n;  XtSetArg(args[n], XmNpaneMaximum, 10000); ++n;#if !(defined(__sgi) && (XmVERSION <= 1))  XtSetArg(args[n], XmNwidth, 1); ++n;#endif  XtSetArg(args[n], XmNscrollingPolicy, XmAUTOMATIC); ++n;  outlineScroll = XmCreateScrolledWindow(panedWin, "outlineScroll", args, n);  XtManageChild(outlineScroll);  XtVaGetValues(outlineScroll, XmNclipWindow, &clipWin, NULL);  XtVaSetValues(clipWin, XmNbackground, app->getPaperPixel(), NULL);  // outline tree  n = 0;  XtSetArg(args[n], XmNbackground, app->getPaperPixel()); ++n;  outlineTree = XPDFCreateTree(outlineScroll, "outlineTree", args, n);  XtManageChild(outlineTree);  XtAddCallback(outlineTree, XPDFNselectionCallback, &outlineSelectCbk,		(XtPointer)this);}#endifvoid XPDFViewer::initCore(Widget parent, GBool fullScreen) {  core = new XPDFCore(win, parent,		      app->getPaperRGB(), app->getPaperPixel(),		      app->getMattePixel(fullScreen),		      fullScreen, app->getReverseVideo(),		      app->getInstallCmap(), app->getRGBCubeSize());  core->setUpdateCbk(&updateCbk, this);  core->setActionCbk(&actionCbk, this);  core->setKeyPressCbk(&keyPressCbk, this);  core->setMouseCbk(&mouseCbk, this);}void XPDFViewer::initPopupMenu() {  Widget btn;  Arg args[20];  int n;  XmString s, s2;  n = 0;#if XmVersion < 1002  // older versions of Motif need this, newer ones choke on it,  // sometimes not displaying the menu at all, maybe depending on the  // state of the NumLock key (taken from DDD)  XtSetArg(args[n], XmNmenuPost, "<Btn3Down>"); ++n;#endif  popupMenu = XmCreatePopupMenu(core->getDrawAreaWidget(), "popupMenu",				args, n);  n = 0;  s = XmStringCreateLocalized("Open...");  XtSetArg(args[n], XmNlabelString, s); ++n;  s2 = XmStringCreateLocalized("O");  XtSetArg(args[n], XmNacceleratorText, s2); ++n;  btn = XmCreatePushButton(popupMenu, "open", args, n);  XmStringFree(s);  XmStringFree(s2);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&openCbk, (XtPointer)this);  n = 0;  s = XmStringCreateLocalized("Open in new window...");  XtSetArg(args[n], XmNlabelString, s); ++n;  btn = XmCreatePushButton(popupMenu, "openInNewWindow", args, n);  XmStringFree(s);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&openInNewWindowCbk, (XtPointer)this);  n = 0;  s = XmStringCreateLocalized("Reload");  XtSetArg(args[n], XmNlabelString, s); ++n;  s2 = XmStringCreateLocalized("R");  XtSetArg(args[n], XmNacceleratorText, s2); ++n;  btn = XmCreatePushButton(popupMenu, "reload", args, n);  XmStringFree(s);  XmStringFree(s2);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&reloadCbk, (XtPointer)this);  n = 0;  s = XmStringCreateLocalized("Save as...");  XtSetArg(args[n], XmNlabelString, s); ++n;  btn = XmCreatePushButton(popupMenu, "saveAs", args, n);  XmStringFree(s);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&saveAsCbk, (XtPointer)this);  n = 0;  btn = XmCreateSeparator(popupMenu, "sep1", args, n);  XtManageChild(btn);  n = 0;  s = XmStringCreateLocalized("Continuous view");  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNindicatorType, XmN_OF_MANY); ++n;  XtSetArg(args[n], XmNvisibleWhenOff, True); ++n;  XtSetArg(args[n], XmNset, core->getContinuousMode() ? XmSET : XmUNSET); ++n;  btn = XmCreateToggleButton(popupMenu, "continuousMode", args, n);  XmStringFree(s);  XtManageChild(btn);  XtAddCallback(btn, XmNvalueChangedCallback,		&continuousModeToggleCbk, (XtPointer)this);  n = 0;  s = XmStringCreateLocalized("Full screen");  XtSetArg(args[n], XmNlabelString, s); ++n;  XtSetArg(args[n], XmNindicatorType, XmN_OF_MANY); ++n;  XtSetArg(args[n], XmNvisibleWhenOff, True); ++n;  XtSetArg(args[n], XmNset, core->getFullScreen() ? XmSET : XmUNSET); ++n;  btn = XmCreateToggleButton(popupMenu, "fullScreen", args, n);  XmStringFree(s);  XtManageChild(btn);  XtAddCallback(btn, XmNvalueChangedCallback,		&fullScreenToggleCbk, (XtPointer)this);  n = 0;  s = XmStringCreateLocalized("Rotate counterclockwise");  XtSetArg(args[n], XmNlabelString, s); ++n;  btn = XmCreatePushButton(popupMenu, "rotateCCW", args, n);  XmStringFree(s);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&rotateCCWCbk, (XtPointer)this);  n = 0;  s = XmStringCreateLocalized("Rotate clockwise");  XtSetArg(args[n], XmNlabelString, s); ++n;  btn = XmCreatePushButton(popupMenu, "rotateCW", args, n);  XmStringFree(s);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&rotateCWCbk, (XtPointer)this);  n = 0;  s = XmStringCreateLocalized("Zoom to selection");  XtSetArg(args[n], XmNlabelString, s); ++n;  btn = XmCreatePushButton(popupMenu, "zoomToSelection", args, n);  XmStringFree(s);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&zoomToSelectionCbk, (XtPointer)this);  n = 0;  btn = XmCreateSeparator(popupMenu, "sep2", args, n);  XtManageChild(btn);  n = 0;  s = XmStringCreateLocalized("Close");  XtSetArg(args[n], XmNlabelString, s); ++n;  s2 = XmStringCreateLocalized("Ctrl+W");  XtSetArg(args[n], XmNacceleratorText, s2); ++n;  btn = XmCreatePushButton(popupMenu, "close", args, n);  XmStringFree(s);  XmStringFree(s2);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&closeCbk, (XtPointer)this);  n = 0;  s = XmStringCreateLocalized("Quit");  XtSetArg(args[n], XmNlabelString, s); ++n;  s2 = XmStringCreateLocalized("Q");  XtSetArg(args[n], XmNacceleratorText, s2); ++n;  btn = XmCreatePushButton(popupMenu, "quit", args, n);  XmStringFree(s);  XmStringFree(s2);  XtManageChild(btn);  XtAddCallback(btn, XmNactivateCallback,		&quitCbk, (XtPointer)this);  // this is magic (taken from DDD) - weird things happen if this  // call isn't made  XtUngrabButton(core->getDrawAreaWidget(), AnyButton, AnyModifier);}void XPDFViewer::addToolTip(Widget widget, char *text) {#ifdef XmNtoolTipString  XmString s;  Cardinal n, i;  WidgetList children;  if (XtIsComposite(widget)) {    XtVaGetValues(widget, XmNnumChildren, &n, XmNchildren, &children, NULL);    for (i = 0; i < n; ++i) {      addToolTip(children[i], text);    }  } else {    s = XmStringCreateLocalized(text);    XtVaSetValues(widget, XmNtoolTipString, s, NULL);    XmStringFree(s);  }#endif}void XPDFViewer::mapWindow() {#ifdef HAVE_X11_XPM_H  Pixmap iconPixmap;#endif  int depth;  Pixel fg, bg, arm;  // show the window  XtPopup(win, XtGrabNone);  core->takeFocus();  // create the icon#ifdef HAVE_X11_XPM_H  if (XpmCreatePixmapFromData(display, XtWindow(win), xpdfIcon,			      &iconPixmap, NULL, NULL) == XpmSuccess) {    XtVaSetValues(win, XmNiconPixmap, iconPixmap, NULL);  }#endif  // set button bitmaps (must be done after the window is mapped)  if (toolBar != None) {    XtVaGetValues(backBtn, XmNdepth, &depth,		  XmNforeground, &fg, XmNbackground, &bg,		  XmNarmColor, &arm, NULL);    XtVaSetValues(backBtn, XmNlabelType, XmPIXMAP,		  XmNlabelPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)backArrow_bits,					      backArrow_width,					      backArrow_height,					      fg, bg, depth),		  XmNarmPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)backArrow_bits,					      backArrow_width,					      backArrow_height,					      fg, arm, depth),		  XmNlabelInsensitivePixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)backArrowDis_bits,					      backArrowDis_width,					      backArrowDis_height,					      fg, bg, depth),		  NULL);    XtVaSetValues(prevTenPageBtn, XmNlabelType, XmPIXMAP,		  XmNlabelPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)dblLeftArrow_bits,					      dblLeftArrow_width,					      dblLeftArrow_height,					      fg, bg, depth),		  XmNarmPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)dblLeftArrow_bits,					      dblLeftArrow_width,					      dblLeftArrow_height,					      fg, arm, depth),		  XmNlabelInsensitivePixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)dblLeftArrowDis_bits,					      dblLeftArrowDis_width,					      dblLeftArrowDis_height,					      fg, bg, depth),		  NULL);    XtVaSetValues(prevPageBtn, XmNlabelType, XmPIXMAP,		  XmNlabelPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)leftArrow_bits,					      leftArrow_width,					      leftArrow_height,					      fg, bg, depth),		  XmNarmPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)leftArrow_bits,					      leftArrow_width,					      leftArrow_height,					      fg, arm, depth),		  XmNlabelInsensitivePixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)leftArrowDis_bits,					      leftArrowDis_width,					      leftArrowDis_height,					      fg, bg, depth),		  NULL);    XtVaSetValues(nextPageBtn, XmNlabelType, XmPIXMAP,		  XmNlabelPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)rightArrow_bits,					      rightArrow_width,					      rightArrow_height,					      fg, bg, depth),		  XmNarmPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)rightArrow_bits,					      rightArrow_width,					      rightArrow_height,					      fg, arm, depth),		  XmNlabelInsensitivePixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(toolBar),					      (char *)rightArrowDis_bits,					      rightArrowDis_width,					      rightArrowDis_height,					      fg, bg, depth),		  NULL);    XtVaSetValues(nextTenPageBtn, XmNlabelType, XmPIXMAP,		  XmNlabelPixmap,		  XCreatePixmapFromBitmapData(display, XtWindow(

⌨️ 快捷键说明

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