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

📄 pdfcore.h

📁 这是一个做pdf阅读器的源代码文件,是大家学习阅读器资料的很好参考
💻 H
字号:
//========================================================================//// PDFCore.h//// Copyright 2004 Glyph & Cog, LLC////========================================================================#ifndef PDFCORE_H#define PDFCORE_H#include <aconf.h>#ifdef USE_GCC_PRAGMAS#pragma interface#endif#include <stdlib.h>#include "SplashTypes.h"#include "CharTypes.h"class GString;class GList;class SplashBitmap;class SplashPattern;class BaseStream;class PDFDoc;class Links;class LinkDest;class LinkAction;class TextPage;class HighlightFile;class CoreOutputDev;class PDFCore;//------------------------------------------------------------------------// zoom factor//------------------------------------------------------------------------#define zoomPage  -1#define zoomWidth -2#define defZoom   125//------------------------------------------------------------------------//------------------------------------------------------------------------// Number of pixels of matte color between pages in continuous mode.#define continuousModePageSpacing 3//------------------------------------------------------------------------// PDFCorePage//------------------------------------------------------------------------class PDFCorePage {public:  PDFCorePage(int pageA, int wA, int hA, int tileWA, int tileHA);  ~PDFCorePage();  int page;  GList *tiles;			// cached tiles [PDFCoreTile]  int xDest, yDest;		// position of upper-left corner				//   in the drawing area  int w, h;			// size of whole page bitmap  int tileW, tileH;		// size of tiles  Links *links;			// hyperlinks for this page  TextPage *text;		// extracted text};//------------------------------------------------------------------------// PDFCoreTile//------------------------------------------------------------------------class PDFCoreTile {public:  PDFCoreTile(int xDestA, int yDestA);  virtual ~PDFCoreTile();  int xMin, yMin, xMax, yMax;  int xDest, yDest;  Guint edges;  SplashBitmap *bitmap;  double ctm[6];		// coordinate transform matrix:				//   default user space -> device space  double ictm[6];		// inverse CTM};#define pdfCoreTileTopEdge      0x01#define pdfCoreTileBottomEdge   0x02#define pdfCoreTileLeftEdge     0x04#define pdfCoreTileRightEdge    0x08#define pdfCoreTileTopSpace     0x10#define pdfCoreTileBottomSpace  0x20//------------------------------------------------------------------------// PDFHistory//------------------------------------------------------------------------struct PDFHistory {  GString *fileName;  int page;};#define pdfHistorySize 50//------------------------------------------------------------------------// PDFCore//------------------------------------------------------------------------class PDFCore {public:  PDFCore(SplashColorMode colorModeA, int bitmapRowPadA,	  GBool reverseVideoA, SplashColorPtr paperColorA,	  GBool incrementalUpdate);  virtual ~PDFCore();  //----- loadFile / displayPage / displayDest  // Load a new file.  Returns pdfOk or error code.  virtual int loadFile(GString *fileName, GString *ownerPassword = NULL,		       GString *userPassword = NULL);#ifdef WIN32  // Load a new file.  Returns pdfOk or error code.  virtual int loadFile(wchar_t *fileName, int fileNameLen,		       GString *ownerPassword = NULL,		       GString *userPassword = NULL);#endif  // Load a new file, via a Stream instead of a file name.  Returns  // pdfOk or error code.  virtual int loadFile(BaseStream *stream, GString *ownerPassword = NULL,		       GString *userPassword = NULL);  // Load an already-created PDFDoc object.  virtual void loadDoc(PDFDoc *docA);  // Clear out the current document, if any.  virtual void clear();  // Same as clear(), but returns the PDFDoc object instead of  // deleting it.  virtual PDFDoc *takeDoc(GBool redraw);  // Display (or redisplay) the specified page.  If <scrollToTop> is  // 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.  virtual void displayPage(int topPageA, double zoomA, int rotateA,			   GBool scrollToTop, GBool addToHist);  // Display a link destination.  virtual void displayDest(LinkDest *dest, double zoomA, int rotateA,			   GBool addToHist);  // Update the display, given the specified parameters.  virtual void update(int topPageA, int scrollXA, int scrollYA,		      double zoomA, int rotateA, GBool force, GBool addToHist);  //----- page/position changes  virtual GBool gotoNextPage(int inc, GBool top);  virtual GBool gotoPrevPage(int dec, GBool top, GBool bottom);  virtual GBool gotoNamedDestination(GString *dest);  virtual GBool goForward();  virtual GBool goBackward();  virtual void scrollLeft(int nCols = 16);  virtual void scrollRight(int nCols = 16);  virtual void scrollUp(int nLines = 16);  virtual void scrollUpPrevPage(int nLines = 16);  virtual void scrollDown(int nLines = 16);  virtual void scrollDownNextPage(int nLines = 16);  virtual void scrollPageUp();  virtual void scrollPageDown();  virtual void scrollTo(int x, int y);  virtual void scrollToLeftEdge();  virtual void scrollToRightEdge();  virtual void scrollToTopEdge();  virtual void scrollToBottomEdge();  virtual void scrollToTopLeft();  virtual void scrollToBottomRight();  virtual void zoomToRect(int pg, double ulx, double uly,			  double lrx, double lry);  virtual void zoomCentered(double zoomA);  virtual void zoomToCurrentWidth();  virtual void setContinuousMode(GBool cm);  //----- selection  // Current selected region.  void setSelection(int newSelectPage,		    int newSelectULX, int newSelectULY,		    int newSelectLRX, int newSelectLRY);  void moveSelection(int pg, int x, int y);  GBool getSelection(int *pg, double *ulx, double *uly,		     double *lrx, double *lry);  // Text extraction.  GString *extractText(int pg, double xMin, double yMin,		       double xMax, double yMax);  //----- find  virtual GBool find(char *s, GBool caseSensitive, GBool next, GBool backward,		     GBool onePageOnly);  virtual GBool findU(Unicode *u, int len, GBool caseSensitive,		      GBool next, GBool backward, GBool onePageOnly);  //----- coordinate conversion  // user space: per-pace, as defined by PDF file; unit = point  // device space: (0,0) is upper-left corner of a page; unit = pixel  // window space: (0,0) is upper-left corner of drawing area; unit = pixel  GBool cvtWindowToUser(int xw, int yw, int *pg, double *xu, double *yu);  GBool cvtWindowToDev(int xw, int yw, int *pg, int *xd, int *yd);  void cvtUserToWindow(int pg, double xy, double yu, int *xw, int *yw);  void cvtUserToDev(int pg, double xu, double yu, int *xd, int *yd);  void cvtDevToWindow(int pg, int xd, int yd, int *xw, int *yw);  void cvtDevToUser(int pg, int xd, int yd, double *xu, double *yu);  //----- misc access  PDFDoc *getDoc() { return doc; }  int getPageNum() { return topPage; }  double getZoom() { return zoom; }  double getZoomDPI() { return dpi; }  int getRotate() { return rotate; }  GBool getContinuousMode() { return continuousMode; }  virtual void setReverseVideo(GBool reverseVideoA);  GBool canGoBack() { return historyBLen > 1; }  GBool canGoForward() { return historyFLen > 0; }  int getScrollX() { return scrollX; }  int getScrollY() { return scrollY; }  int getDrawAreaWidth() { return drawAreaWidth; }  int getDrawAreaHeight() { return drawAreaHeight; }  virtual void setBusyCursor(GBool busy) = 0;  LinkAction *findLink(int pg, double x, double y);protected:  int loadFile2(PDFDoc *newDoc);  void addPage(int pg, int rot);  void needTile(PDFCorePage *page, int x, int y);  void xorRectangle(int pg, int x0, int y0, int x1, int y1,		    SplashPattern *pattern, PDFCoreTile *oneTile = NULL);  int loadHighlightFile(HighlightFile *hf, SplashColorPtr color,			SplashColorPtr selectColor, GBool selectable);  PDFCorePage *findPage(int pg);  static void redrawCbk(void *data, int x0, int y0, int x1, int y1,			GBool composited);  void redrawWindow(int x, int y, int width, int height,		    GBool needUpdate);  virtual PDFCoreTile *newTile(int xDestA, int yDestA);  virtual void updateTileData(PDFCoreTile *tileA, int xSrc, int ySrc,			      int width, int height, GBool composited);  virtual void redrawRect(PDFCoreTile *tileA, int xSrc, int ySrc,			  int xDest, int yDest, int width, int height,			  GBool composited) = 0;  void clippedRedrawRect(PDFCoreTile *tile, int xSrc, int ySrc,			 int xDest, int yDest, int width, int height,			 int xClip, int yClip, int wClip, int hClip,			 GBool needUpdate, GBool composited = gTrue);  virtual void updateScrollbars() = 0;  virtual GBool checkForNewFile() { return gFalse; }  PDFDoc *doc;			// current PDF file  GBool continuousMode;		// false for single-page mode, true for				//   continuous mode  int drawAreaWidth,		// size of the PDF display area      drawAreaHeight;  double maxUnscaledPageW,	// maximum unscaled page size         maxUnscaledPageH;  int maxPageW;			// maximum page width (only used in				//   continuous mode)  int totalDocH;		// total document height (only used in				//   continuous mode)  int *pageY;			// top coordinates for each page (only used				//   in continuous mode)  int topPage;			// page at top of window  int scrollX, scrollY;		// offset from top left corner of topPage				//   to top left corner of window  double zoom;			// current zoom level, in percent of 72 dpi  double dpi;			// current zoom level, in DPI  int rotate;			// current page rotation  int selectPage;		// page number of current selection  int selectULX,		// coordinates of current selection,      selectULY,		//   in device space -- (ULX==LRX || ULY==LRY)      selectLRX,		//   means there is no selection      selectLRY;  GBool dragging;		// set while selection is being dragged  GBool lastDragLeft;		// last dragged selection edge was left/right  GBool lastDragTop;		// last dragged selection edge was top/bottom  PDFHistory			// page history queue    history[pdfHistorySize];  int historyCur;               // currently displayed page  int historyBLen;              // number of valid entries backward from                                //   current entry  int historyFLen;              // number of valid entries forward from                                //   current entry  GList *pages;			// cached pages [PDFCorePage]  PDFCoreTile *curTile;		// tile currently being rasterized  PDFCorePage *curPage;		// page to which curTile belongs  SplashColor paperColor;  CoreOutputDev *out;  friend class PDFCoreTile;};#endif

⌨️ 快捷键说明

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