Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pdf/xpdf/GnomeVFSStream.h
blob: a02d2888b3f02ebc3f273679b70d562463ef75bd (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
//========================================================================
//
// GnomeVFSStream.cc
//
// Copyright 1996-2002 Glyph & Cog, LLC
// Copyright 2003 Martin Kretzschmar
//
//========================================================================

#ifndef GNOME_VFS_STREAM_H
#define GNOME_VFS_STREAM_H

#include "gpdf-g-switch.h"
#  include <libgnomevfs/gnome-vfs-handle.h>
#include "gpdf-g-switch.h"
#include "Object.h"
#include "Stream.h"

#define gnomeVFSStreamBufSize fileStreamBufSize

class GnomeVFSStream: public BaseStream {
public:

  GnomeVFSStream(GnomeVFSHandle *handleA, Guint startA, GBool limitedA,
                 Guint lengthA, Object *dictA);
  virtual ~GnomeVFSStream();
  virtual Stream *makeSubStream(Guint startA, GBool limitedA,
				Guint lengthA, Object *dictA);
  virtual StreamKind getKind() { return strFile; }
  virtual void reset();
  virtual void close();
  virtual int getChar()
    { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr++ & 0xff); }
  virtual int lookChar()
    { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff); }
  virtual int getPos() { return bufPos + (bufPtr - buf); }
  virtual void setPos(Guint pos, int dir = 0);
  virtual GBool isBinary(GBool last = gTrue) { return last; }
  virtual Guint getStart() { return start; }
  virtual void moveStart(int delta);

private:

  GBool fillBuf();

  GnomeVFSHandle *handle;
  Guint start;
  GBool limited;
  Guint length;
  char buf[gnomeVFSStreamBufSize];
  char *bufPtr;
  char *bufEnd;
  Guint bufPos;
  int savePos;
  GBool saved;
};

#endif /* GNOME_VFS_STREAM_H */