Files
DocumentServer-v-9.2.0/core/PdfFile/lib/xpdf/DisplayState.h
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

174 lines
5.1 KiB
C++

//========================================================================
//
// DisplayState.h
//
// Copyright 2014 Glyph & Cog, LLC
//
//========================================================================
#ifndef DISPLAYSTATE_H
#define DISPLAYSTATE_H
#include <aconf.h>
#ifdef USE_GCC_PRAGMAS
#pragma interface
#endif
#include "gtypes.h"
#include "SplashTypes.h"
class GString;
class GList;
class PDFDoc;
class TileMap;
class TileCache;
class TileCompositor;
//------------------------------------------------------------------------
// zoom level
//------------------------------------------------------------------------
// positive zoom levels are percentage of 72 dpi
// (e.g., 50 means 36dpi, 100 means 72dpi, 150 means 108 dpi)
#define zoomPage -1
#define zoomWidth -2
#define zoomHeight -3
//------------------------------------------------------------------------
// display mode
//------------------------------------------------------------------------
enum DisplayMode {
displaySingle,
displayContinuous,
displaySideBySideSingle,
displaySideBySideContinuous,
displayHorizontalContinuous
};
//------------------------------------------------------------------------
// SelectRect
//------------------------------------------------------------------------
class SelectRect {
public:
SelectRect(int pageA, double x0A, double y0A, double x1A, double y1A):
page(pageA), x0(x0A), y0(y0A), x1(x1A), y1(y1A) {}
int operator==(SelectRect r)
{ return page == r.page && x0 == r.x0 && y0 == r.y0 &&
x1 == r.x1 && y1 == r.y1; }
int operator!=(SelectRect r)
{ return page != r.page || x0 != r.x0 || y0 != r.y0 ||
x1 != r.x1 || y1 != r.y1; }
int page;
double x0, y0, x1, y1; // user coords
};
//------------------------------------------------------------------------
// DisplayState
//------------------------------------------------------------------------
class DisplayState {
public:
DisplayState(int maxTileWidthA, int maxTileHeightA,
int tileCacheSizeA, int nWorkerThreadsA,
SplashColorMode colorModeA, int bitmapRowPadA);
~DisplayState();
void setTileMap(TileMap *tileMapA)
{ tileMap = tileMapA; }
void setTileCache(TileCache *tileCacheA)
{ tileCache = tileCacheA; }
void setTileCompositor(TileCompositor *tileCompositorA)
{ tileCompositor = tileCompositorA; }
void setPaperColor(SplashColorPtr paperColorA);
void setMatteColor(SplashColorPtr matteColorA);
void setSelectColor(SplashColorPtr selectColorA);
void setReverseVideo(GBool reverseVideoA);
void setDoc(PDFDoc *docA);
void setWindowSize(int winWA, int winHA);
void setDisplayMode(DisplayMode displayModeA);
void setZoom(double zoomA);
void setRotate(int rotateA);
void setScrollPosition(int scrollPageA, int scrollXA, int scrollYA);
void setSelection(int selectPage, double selectX0, double selectY0,
double selectX1, double selectY1);
void setSelection(GList *selectRectsA);
void clearSelection();
void forceRedraw();
int getMaxTileWidth() { return maxTileWidth; }
int getMaxTileHeight() { return maxTileHeight; }
int getTileCacheSize() { return tileCacheSize; }
int getNWorkerThreads() { return nWorkerThreads; }
SplashColorMode getColorMode() { return colorMode; }
int getBitmapRowPad() { return bitmapRowPad; }
SplashColorPtr getPaperColor() { return paperColor; }
SplashColorPtr getMatteColor() { return matteColor; }
SplashColorPtr getSelectColor() { return selectColor; }
GBool getReverseVideo() { return reverseVideo; }
PDFDoc *getDoc() { return doc; }
int getWinW() { return winW; }
int getWinH() { return winH; }
DisplayMode getDisplayMode() { return displayMode; }
GBool displayModeIsContinuous()
{ return displayMode == displayContinuous ||
displayMode == displaySideBySideContinuous ||
displayMode == displayHorizontalContinuous; }
GBool displayModeIsSideBySide()
{ return displayMode == displaySideBySideSingle ||
displayMode == displaySideBySideContinuous; }
double getZoom() { return zoom; }
int getRotate() { return rotate; }
int getScrollPage() { return scrollPage; }
int getScrollX() { return scrollX; }
int getScrollY() { return scrollY; }
GBool hasSelection() { return selectRects != NULL; }
GList *getSelectRects() { return selectRects; }
int getNumSelectRects();
SelectRect *getSelectRect(int idx);
void optionalContentChanged();
private:
int maxTileWidth, maxTileHeight;
int tileCacheSize;
int nWorkerThreads;
SplashColorMode colorMode;
int bitmapRowPad;
TileMap *tileMap;
TileCache *tileCache;
TileCompositor *tileCompositor;
SplashColor paperColor;
SplashColor matteColor;
SplashColor selectColor;
GBool reverseVideo;
PDFDoc *doc;
int winW, winH; // window (draw area) size
DisplayMode displayMode;
double zoom; // zoom level (see zoom* defines, above)
int rotate; // rotation (0, 90, 180, or 270)
int scrollPage; // scroll page - only used in
// non-continuous modes
int scrollX, scrollY;
GList *selectRects; // selection rectangles [SelectRect]
// (NULL if there is no selection)
};
#endif