ReactOS  0.4.14-dev-342-gdc047f9
tif_flush.c File Reference
#include <precomp.h>
Include dependency graph for tif_flush.c:

Go to the source code of this file.

Functions

int TIFFFlush (TIFF *tif)
 
int TIFFFlushData (TIFF *tif)
 

Function Documentation

◆ TIFFFlush()

int TIFFFlush ( TIFF tif)

Definition at line 32 of file tif_flush.c.

33 {
34  if( tif->tif_mode == O_RDONLY )
35  return 1;
36 
37  if (!TIFFFlushData(tif))
38  return (0);
39 
40  /* In update (r+) mode we try to detect the case where
41  only the strip/tile map has been altered, and we try to
42  rewrite only that portion of the directory without
43  making any other changes */
44 
45  if( (tif->tif_flags & TIFF_DIRTYSTRIP)
46  && !(tif->tif_flags & TIFF_DIRTYDIRECT)
47  && tif->tif_mode == O_RDWR )
48  {
49  uint64 *offsets=NULL, *sizes=NULL;
50 
51  if( TIFFIsTiled(tif) )
52  {
53  if( TIFFGetField( tif, TIFFTAG_TILEOFFSETS, &offsets )
56  tif->tif_dir.td_nstrips, offsets )
58  tif->tif_dir.td_nstrips, sizes ) )
59  {
60  tif->tif_flags &= ~TIFF_DIRTYSTRIP;
61  tif->tif_flags &= ~TIFF_BEENWRITING;
62  return 1;
63  }
64  }
65  else
66  {
67  if( TIFFGetField( tif, TIFFTAG_STRIPOFFSETS, &offsets )
70  tif->tif_dir.td_nstrips, offsets )
72  tif->tif_dir.td_nstrips, sizes ) )
73  {
74  tif->tif_flags &= ~TIFF_DIRTYSTRIP;
75  tif->tif_flags &= ~TIFF_BEENWRITING;
76  return 1;
77  }
78  }
79  }
80 
82  && !TIFFRewriteDirectory(tif))
83  return (0);
84 
85  return (1);
86 }
unsigned long long uint64
Definition: platform.h:18
#define TIFF_BEENWRITING
Definition: tiffiop.h:112
int TIFFRewriteDirectory(TIFF *tif)
Definition: tif_dirwrite.c:216
#define TIFFTAG_STRIPBYTECOUNTS
Definition: tiff.h:234
#define TIFFTAG_STRIPOFFSETS
Definition: tiff.h:222
#define TIFF_DIRTYDIRECT
Definition: tiffiop.h:109
#define TIFFTAG_TILEBYTECOUNTS
Definition: tiff.h:289
int TIFFGetField(TIFF *tif, uint32 tag,...)
Definition: tif_dir.c:1215
int TIFFFlushData(TIFF *tif)
Definition: tif_flush.c:98
int tif_mode
Definition: tiffiop.h:105
uint32 tif_flags
Definition: tiffiop.h:106
smooth NULL
Definition: ftsmooth.c:416
#define TIFFTAG_TILEOFFSETS
Definition: tiff.h:288
uint32 td_nstrips
Definition: tif_dir.h:99
#define TIFF_DIRTYSTRIP
Definition: tiffiop.h:127
static const struct @527 sizes[]
#define O_RDWR
Definition: fcntl.h:36
TIFFDirectory tif_dir
Definition: tiffiop.h:135
int _TIFFRewriteField(TIFF *tif, uint16 tag, TIFFDataType in_datatype, tmsize_t count, void *data)
int TIFFIsTiled(TIFF *tif)
Definition: tif_open.c:577
#define O_RDONLY
Definition: acwin.h:108

Referenced by TIFFCleanup().

◆ TIFFFlushData()

int TIFFFlushData ( TIFF tif)

Definition at line 98 of file tif_flush.c.

99 {
100  if ((tif->tif_flags & TIFF_BEENWRITING) == 0)
101  return (1);
102  if (tif->tif_flags & TIFF_POSTENCODE) {
103  tif->tif_flags &= ~TIFF_POSTENCODE;
104  if (!(*tif->tif_postencode)(tif))
105  return (0);
106  }
107  return (TIFFFlushData1(tif));
108 }
#define TIFF_BEENWRITING
Definition: tiffiop.h:112
uint32 tif_flags
Definition: tiffiop.h:106
#define TIFF_POSTENCODE
Definition: tiffiop.h:118
TIFFBoolMethod tif_postencode
Definition: tiffiop.h:163
int TIFFFlushData1(TIFF *tif)
Definition: tif_write.c:792

Referenced by TIFFFlush(), and TIFFWriteScanline().