summaryrefslogtreecommitdiff
path: root/Build/source/libs/xpdf/xpdf-src/xpdf/TileCompositor.h
blob: 9efec4d0a16917c8cf105dc3a35f1c4f857ffc08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//========================================================================
//
// TileCompositor.h
//
// Copyright 2014 Glyph & Cog, LLC
//
//========================================================================

#ifndef TILECOMPOSITOR_H
#define TILECOMPOSITOR_H

#include <aconf.h>

#include "SplashTypes.h"

class GList;
class SplashBitmap;
class DisplayState;
class TileCache;

//------------------------------------------------------------------------

class TileCompositor {
public:

  TileCompositor(DisplayState *stateA,
		 TileMap *tileMapA, TileCache *tileCacheA);
  ~TileCompositor();

  // Returns the window bitmap.  The returned bitmap is owned by the
  // TileCompositor object (and may be reused) -- the caller should
  // not modify or free it.  If <finished> is is non-NULL, *<finished>
  // will be set to true if all of the needed tiles are finished,
  // i.e., if the returned bitmap is complete.
  SplashBitmap *getBitmap(GBool *finished);

  void paperColorChanged();
  void matteColorChanged();
  void selectColorChanged();
  void reverseVideoChanged();
  void docChanged();
  void windowSizeChanged();
  void displayModeChanged();
  void zoomChanged();
  void rotateChanged();
  void scrollPositionChanged();
  void selectionChanged();
  void regionsChanged();
  void optionalContentChanged();
  void forceRedraw();

private:

  void clearBitmap();
  void blit(SplashBitmap *srcBitmap, int xSrc, int ySrc,
	    SplashBitmap *destBitmap, int xDest, int yDest,
	    int w, int h, GBool compositeWithPaper);
  void fill(int xDest, int yDest, int w, int h,
	    SplashColorPtr color);
  void drawSelection();
  void applySelection(int xDest, int yDest, int w, int h,
		      SplashColorPtr color);

  DisplayState *state;
  TileMap *tileMap;
  TileCache *tileCache;

  SplashBitmap *bitmap;
  GBool bitmapValid;

};

#endif