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

📄 xpdfviewer.cc

📁 将pdf文档转换为高质量的html文档
💻 CC
📖 第 1 页 / 共 5 页
字号:
  XtVaGetValues(zoomMenu, XmNmenuHistory, &w, NULL);  for (i = 0; i < nZoomMenuItems; ++i) {    if (w == zoomMenuBtns[i]) {      return i;    }  }  // this should never happen  return 0;#endif}void XPDFViewer::setZoomIdx(int idx) {#if USE_COMBO_BOX  XtVaSetValues(zoomComboBox, XmNselectedPosition, idx + 1, NULL);#else  XtVaSetValues(zoomMenu, XmNmenuHistory, zoomMenuBtns[idx], NULL);#endif}void XPDFViewer::setZoomVal(double z) {#if USE_COMBO_BOX  char buf[32];  XmString s;  int i;  for (i = 0; i < nZoomMenuItems; ++i) {    if (z == zoomMenuInfo[i].zoom) {      XtVaSetValues(zoomComboBox, XmNselectedPosition, i + 1, NULL);      return;    }  }  sprintf(buf, "%d", (int)z);  s = XmStringCreateLocalized(buf);  XtVaSetValues(zoomComboBox, XmNselectedItem, s, NULL);  XmStringFree(s);#else  int i;  for (i = 0; i < nZoomMenuItems; ++i) {    if (z == zoomMenuInfo[i].zoom) {      XtVaSetValues(zoomMenu, XmNmenuHistory, zoomMenuBtns[i], NULL);      return;    }  }  for (i = maxZoomIdx; i < minZoomIdx; ++i) {    if (z > zoomMenuInfo[i].zoom) {      break;    }  }  XtVaSetValues(zoomMenu, XmNmenuHistory, zoomMenuBtns[i], NULL);#endif}void XPDFViewer::prevPageCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->gotoPrevPage(1, gTrue, gFalse);  viewer->core->takeFocus();}void XPDFViewer::prevTenPageCbk(Widget widget, XtPointer ptr,				XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->gotoPrevPage(10, gTrue, gFalse);  viewer->core->takeFocus();}void XPDFViewer::nextPageCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->gotoNextPage(1, gTrue);  viewer->core->takeFocus();}void XPDFViewer::nextTenPageCbk(Widget widget, XtPointer ptr,				XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->gotoNextPage(10, gTrue);  viewer->core->takeFocus();}void XPDFViewer::backCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->goBackward();  viewer->core->takeFocus();}void XPDFViewer::forwardCbk(Widget widget, XtPointer ptr,			    XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->core->goForward();  viewer->core->takeFocus();}#if USE_COMBO_BOXvoid XPDFViewer::zoomComboBoxCbk(Widget widget, XtPointer ptr,				 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XmComboBoxCallbackStruct *data = (XmComboBoxCallbackStruct *)callData;  double z;  char *s;  XmStringContext context;  XmStringCharSet charSet;  XmStringDirection dir;  Boolean sep;  z = viewer->core->getZoom();  if (data->item_position == 0) {    XmStringInitContext(&context, data->item_or_text);    if (XmStringGetNextSegment(context, &s, &charSet, &dir, &sep)) {      z = atof(s);      if (z <= 1) {	z = defZoom;      }      XtFree(charSet);      XtFree(s);    }    XmStringFreeContext(context);  } else {    z = zoomMenuInfo[data->item_position - 1].zoom;  }  // only redraw if this was triggered by an event; otherwise  // the caller is responsible for doing the redraw  if (z != viewer->core->getZoom() && data->event) {    viewer->displayPage(viewer->core->getPageNum(), z,			viewer->core->getRotate(), gTrue, gFalse);  }  viewer->core->takeFocus();}#else // USE_COMBO_BOXvoid XPDFViewer::zoomMenuCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XmPushButtonCallbackStruct *data = (XmPushButtonCallbackStruct *)callData;  XtPointer userData;  double z;  XtVaGetValues(widget, XmNuserData, &userData, NULL);  z = zoomMenuInfo[(long)userData].zoom;  // only redraw if this was triggered by an event; otherwise  // the caller is responsible for doing the redraw  if (z != viewer->core->getZoom() && data->event) {    viewer->displayPage(viewer->core->getPageNum(), z,			viewer->core->getRotate(), gTrue, gFalse);  }  viewer->core->takeFocus();}#endif // USE_COMBO_BOXvoid XPDFViewer::findCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  if (!viewer->core->getDoc()) {    return;  }  viewer->mapFindDialog();}void XPDFViewer::printCbk(Widget widget, XtPointer ptr,			  XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  if (!viewer->core->getDoc()) {    return;  }  XtManageChild(viewer->printDialog);}void XPDFViewer::aboutCbk(Widget widget, XtPointer ptr,			  XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XtManageChild(viewer->aboutDialog);}void XPDFViewer::quitCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->app->quit();}void XPDFViewer::openCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->mapOpenDialog(gFalse);}void XPDFViewer::openInNewWindowCbk(Widget widget, XtPointer ptr,				    XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->mapOpenDialog(gTrue);}void XPDFViewer::reloadCbk(Widget widget, XtPointer ptr,			 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->reloadFile();}void XPDFViewer::saveAsCbk(Widget widget, XtPointer ptr,			   XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  if (!viewer->core->getDoc()) {    return;  }  viewer->mapSaveAsDialog();}void XPDFViewer::continuousModeToggleCbk(Widget widget, XtPointer ptr,					 XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  XmToggleButtonCallbackStruct *data =      (XmToggleButtonCallbackStruct *)callData;  viewer->core->setContinuousMode(data->set == XmSET);}void XPDFViewer::rotateCCWCbk(Widget widget, XtPointer ptr,			      XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  int r;  r = viewer->core->getRotate();  r = (r == 0) ? 270 : r - 90;  viewer->displayPage(viewer->core->getPageNum(), viewer->core->getZoom(),		      r, gTrue, gFalse);}void XPDFViewer::rotateCWCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  int r;  r = viewer->core->getRotate();  r = (r == 270) ? 0 : r + 90;  viewer->displayPage(viewer->core->getPageNum(), viewer->core->getZoom(),		      r, gTrue, gFalse);}void XPDFViewer::closeCbk(Widget widget, XtPointer ptr,			  XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->app->close(viewer, gFalse);}void XPDFViewer::closeMsgCbk(Widget widget, XtPointer ptr,			     XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  viewer->app->close(viewer, gTrue);}void XPDFViewer::pageNumCbk(Widget widget, XtPointer ptr,			    XtPointer callData) {  XPDFViewer *viewer = (XPDFViewer *)ptr;  char *s, *p;  int pg;  char buf[20];  if (!viewer->core->getDoc()) {    goto err;  }  s = XmTextFieldGetString(viewer->pageNumText);  for (p = s; *p; ++p) {    if (!isdigit(*p)) {      goto err;    }  }  pg = atoi(s);  if (pg < 1 || pg > viewer->core->getDoc()->getNumPages()) {    goto err;  }  viewer->displayPage(pg, viewer->core->getZoom(),		      viewer->core->getRotate(), gFalse, gTrue);  viewer->core->takeFocus();  return; err:  XBell(viewer->display, 0);  sprintf(buf, "%d", viewer->core->getPageNum());  XmTextFieldSetString(viewer->pageNumText, buf);}void XPDFViewer::updateCbk(void *data, GString *fileName,			   int pageNum, int numPages, char *linkString) {  XPDFViewer *viewer = (XPDFViewer *)data;  GString *title;  char buf[20];  XmString s;  if (fileName) {    if (!(title = viewer->app->getTitle())) {      title = (new GString(xpdfAppName))->append(": ")->append(fileName);    }    XtVaSetValues(viewer->win, XmNtitle, title->getCString(),		  XmNiconName, title->getCString(), NULL);    if (!viewer->app->getTitle()) {      delete title;    }#ifndef DISABLE_OUTLINE    if (!viewer->app->getFullScreen()) {      viewer->setupOutline();    }#endif    viewer->setupPrintDialog();  }  if (pageNum >= 0) {    s = XmStringCreateLocalized("");    XtVaSetValues(viewer->linkLabel, XmNlabelString, s, NULL);    XmStringFree(s);    sprintf(buf, "%d", pageNum);    XmTextFieldSetString(viewer->pageNumText, buf);    XtVaSetValues(viewer->prevTenPageBtn, XmNsensitive,		  pageNum > 1, NULL);    XtVaSetValues(viewer->prevPageBtn, XmNsensitive,		  pageNum > 1, NULL);    XtVaSetValues(viewer->nextTenPageBtn, XmNsensitive,		  pageNum < viewer->core->getDoc()->getNumPages(), NULL);    XtVaSetValues(viewer->nextPageBtn, XmNsensitive,		  pageNum < viewer->core->getDoc()->getNumPages(), NULL);    XtVaSetValues(viewer->backBtn, XmNsensitive,		  viewer->core->canGoBack(), NULL);    XtVaSetValues(viewer->forwardBtn, XmNsensitive,		  viewer->core->canGoForward(), NULL);  }  if (numPages >= 0) {    sprintf(buf, " of %d", numPages);    s = XmStringCreateLocalized(buf);    XtVaSetValues(viewer->pageCountLabel, XmNlabelString, s, NULL);    XmStringFree(s);  }  if (linkString) {    s = XmStringCreateLocalized(linkString);    XtVaSetValues(viewer->linkLabel, XmNlabelString, s, NULL);    XmStringFree(s);  }}//------------------------------------------------------------------------// GUI code: outline//------------------------------------------------------------------------#ifndef DISABLE_OUTLINEvoid XPDFViewer::setupOutline() {  GList *items;  UnicodeMap *uMap;  GString *enc;  int i;  // unmanage and destroy the old labels  if (outlineLabels) {    XtUnmanageChildren(outlineLabels, outlineLabelsLength);    for (i = 0; i < outlineLabelsLength; ++i) {      XtDestroyWidget(outlineLabels[i]);    }    gfree(outlineLabels);    outlineLabels = NULL;    outlineLabelsLength = outlineLabelsSize = 0;  }  if (core->getDoc()) {    // create the new labels    items = core->getDoc()->getOutline()->getItems();    if (items && items->getLength() > 0) {      enc = new GString("Latin1");      uMap = globalParams->getUnicodeMap(enc);      delete enc;      setupOutlineItems(items, NULL, uMap);      uMap->decRefCnt();    }    // manage the new labels    XtManageChildren(outlineLabels, outlineLabelsLength);  }}void XPDFViewer::setupOutlineItems(GList *items, Widget parent,				   UnicodeMap *uMap) {  OutlineItem *item;  GList *kids;  Widget label;  Arg args[20];  GString *title;  char buf[8];  XmString s;  int i, j, n;  for (i = 0; i < items->getLength(); ++i) {    item = (OutlineItem *)items->get(i);    title = new GString();    for (j = 0; j < item->getTitleLength(); ++j) {      n = uMap->mapUnicode(item->getTitle()[j], buf, sizeof(buf));      title->append(buf, n);    }    n = 0;

⌨️ 快捷键说明

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