FLTK 1.4.4
Toggle main menu visibility
Loading...
Searching...
No Matches
Fl_Image_Reader.h
1
//
2
// Internal (Image) Reader class for the Fast Light Tool Kit (FLTK).
3
//
4
// Copyright 2020-2021 by Bill Spitzak and others.
5
//
6
// This library is free software. Distribution and use rights are outlined in
7
// the file "COPYING" which should have been included with this file. If this
8
// file is missing or damaged, see the license at:
9
//
10
// https://www.fltk.org/COPYING.php
11
//
12
// Please see the following page on how to report bugs and issues:
13
//
14
// https://www.fltk.org/bugs.php
15
//
16
17
/*
18
This internal (undocumented) class reads data chunks from a file or from
19
memory in LSB-first byte order.
20
21
This class is used in Fl_GIF_Image and Fl_BMP_Image to avoid code
22
duplication and may be extended to be used in similar cases. Future
23
options might be to read data in MSB-first byte order or to add more
24
methods.
25
*/
26
27
#ifndef FL_IMAGE_READER_H
28
#define FL_IMAGE_READER_H
29
30
#include <stdio.h>
31
32
class
Fl_Image_Reader {
33
public
:
34
// Create the reader.
35
Fl_Image_Reader()
36
: is_file_(0)
37
, is_data_(0)
38
, file_(0L)
39
, data_(0L)
40
, start_(0L)
41
, end_((
const
unsigned
char
*)(-1L))
42
, name_(0L)
43
, error_(0) {}
44
45
// Initialize the reader to access the file system, filename is copied
46
// and stored.
47
int
open(
const
char
*filename);
48
49
// Initialize the reader for memory access, name is copied and stored
50
int
open(
const
char
*imagename,
const
unsigned
char
*data,
const
size_t
datasize);
51
// Deprecated, DO NOT USE!
52
int
open(
const
char
*imagename,
const
unsigned
char
*data);
53
54
// Close and destroy the reader
55
~Fl_Image_Reader();
56
57
// Read a single byte from memory or a file
58
unsigned
char
read_byte();
59
60
// Read a 16-bit unsigned integer, LSB-first
61
unsigned
short
read_word();
62
63
// Read a 32-bit unsigned integer, LSB-first
64
unsigned
int
read_dword();
65
66
// Read a 32-bit signed integer, LSB-first
67
int
read_long() {
return
(
int
)read_dword(); }
68
69
// Move the current read position to a byte offset from the beginning
70
// of the file or the original start address in memory
71
void
seek(
unsigned
int
n);
72
73
// Get the current file or memory offset from the beginning
74
// of the file or the original start address in memory
75
long
tell()
const
;
76
77
// Get the current EOF or error status of the file or data block
78
int
error()
const
{
return
error_; }
79
80
// return the name or filename for this reader
81
const
char
*name()
const
{
return
name_; }
82
83
// skip a given number of bytes
84
void
skip(
unsigned
int
n) { seek((
unsigned
int
)tell() + n); }
85
86
private
:
87
// open() sets this if we read from a file
88
char
is_file_;
89
// open() sets this if we read from memory
90
char
is_data_;
91
// a pointer to the opened file
92
FILE *file_;
93
// a pointer to the current byte in memory
94
const
unsigned
char
*data_;
95
// a pointer to the start of the image data
96
const
unsigned
char
*start_;
97
// a pointer to the end of image data if reading from memory, otherwise undefined
98
// note: currently (const unsigned char *)(-1L) if end of memory is not available
99
// ... which means "unlimited"
100
const
unsigned
char
*end_;
101
// a copy of the name associated with this reader
102
char
*name_;
103
// a flag to store EOF or error status
104
int
error_;
105
};
106
107
#endif
// FL_IMAGE_READER_H
src
Fl_Image_Reader.h
Generated by
1.17.0