V-Gears 0
Free Final Fantasy VII engine.
VGearsTexFile.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 The V-Gears Team
3 *
4 * This file is part of V-Gears
5 *
6 * V-Gears is free software: you can redistribute it and/or modify it under
7 * terms of the GNU General Public License as published by the Free Software
8 * Foundation, version 3.0 (GPLv3) of the License.
9 *
10 * V-Gears is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#pragma once
17
18#include <vector>
19#include <boost/cstdint.hpp>
20#include <OgreImageCodec.h>
21#include <OgrePlatform.h>
22#include "common/TypeDefine.h"
23
24namespace VGears{
25
31 class TexFile{
32
33 public:
34
38 TexFile();
39
43 virtual ~TexFile();
44
50 void Read(Ogre::DataStreamPtr& input);
51
57 void ReadHeader(Ogre::DataStreamPtr& input);
58
64 void ReadPalleted(Ogre::DataStreamPtr& input);
65
71 Ogre::MemoryDataStream* GetPixelData() const;
72
78 Ogre::ImageCodec::ImageData* GetImageData() const;
79
81
82#if OGRE_COMPILER == OGRE_COMPILER_MSVC
83#pragma pack (push, 1)
84#else
85#pragma pack (1)
86#endif
90 struct BitData{
91
96
101
106
111
116
121 };
122
126 struct ImageData{
127
132
137
142
147 };
148
153
158
163
168
173
178 };
179
183 struct RGBAData{
184
189
194
199
204 };
205
210
215
220
225
230
235
240
245 };
246
250 struct Header{
251
256
261
266
271
276
281
286
291
296
301
306
311
316
321
326
331
336
341
346
351
356
361
366
371
376
382
387
388 // reversing ff7 code
389 // structure @ 0x3c
390 // size 0x80
391
396
401
406
411
416
421
426
431
436
441
446 };
447
448#if OGRE_COMPILER == OGRE_COMPILER_MSVC
449#pragma pack (pop)
450#else
451#pragma pack ()
452#endif
454 // as in ogre, eg msb -> lsb
455
459 PF_A8R8G8B8 = 0x00
460
465
470 };
471
473
474 typedef std::vector<Color> Palette;
475
476 typedef std::vector<Color> TexImageData;
477
482
487
488 private:
489
501 void FlipEndian(void * data, size_t size, size_t count) const;
502
513 void FlipEndian(void * data, size_t size) const;
514
519
524 };
525}
Handles TEX files.
Definition: VGearsTexFile.h:31
void FlipEndian(void *data, size_t size, size_t count) const
Flips the endian mode of data.
Definition: VGearsTexFile.cpp:126
Palette palette
The texture palette.
Definition: VGearsTexFile.h:481
Ogre::int32 TexEntry
Definition: VGearsTexFile.h:80
void Read(Ogre::DataStreamPtr &input)
Reads texture data.
Definition: VGearsTexFile.cpp:35
static const Ogre::uint8 USE_REFERENCE_ALPHA
Definition: VGearsTexFile.h:518
void ReadHeader(Ogre::DataStreamPtr &input)
Reads the TEX file header and sets the instance data.
Definition: VGearsTexFile.cpp:52
std::vector< Color > TexImageData
Definition: VGearsTexFile.h:476
std::vector< Color > Palette
Definition: VGearsTexFile.h:474
TexFile()
Constructor.
Definition: VGearsTexFile.cpp:30
PaletteType
Definition: VGearsTexFile.h:453
@ PF_B8G8R8A8
Definition: VGearsTexFile.h:469
@ PF_FLOAT32_ARGB
Definition: VGearsTexFile.h:464
@ PF_A8R8G8B8
Palette type: ARGB, 8 bit per component.
Definition: VGearsTexFile.h:459
virtual ~TexFile()
Destructor.
Definition: VGearsTexFile.cpp:33
TexImageData image_data_
The texture image data.
Definition: VGearsTexFile.h:486
Palette palettes_[8]
Colour palettes in the TEXT file.
Definition: VGearsTexFile.h:523
ColorA8R8G8B8 Color
Definition: VGearsTexFile.h:472
Ogre::ImageCodec::ImageData * GetImageData() const
Retrieves image data from the texture.
Definition: VGearsTexFile.cpp:113
void ReadPalleted(Ogre::DataStreamPtr &input)
Reads texture data and matches it with the color palette.
Definition: VGearsTexFile.cpp:66
Ogre::MemoryDataStream * GetPixelData() const
Retrieves pixel information from the texture image.
Definition: VGearsTexFile.cpp:104
struct VGears::TexFile::Header header_
Definition: FF7NameLookup.h:24
signed int int32
Definition: scummsys.h:436
unsigned char uint8
Definition: scummsys.h:431
Bit data in a TEX file.
Definition: VGearsTexFile.h:90
TexEntry color_min
Minimum colour value.
Definition: VGearsTexFile.h:95
TexEntry alpha_min
Minimum alpha value.
Definition: VGearsTexFile.h:105
TexEntry pixel_min
Definition: VGearsTexFile.h:115
TexEntry color_max
Maximum colour value.
Definition: VGearsTexFile.h:100
TexEntry pixel_max
Definition: VGearsTexFile.h:120
TexEntry alpha_max
Maximum alpha value.
Definition: VGearsTexFile.h:110
A TEX file header.
Definition: VGearsTexFile.h:250
TexEntry color_key_array_flag
Definition: VGearsTexFile.h:325
TexEntry unknown_09
Unknown data.
Definition: VGearsTexFile.h:380
TexEntry runtime_data_02
Definition: VGearsTexFile.h:340
TexEntry palette_count
The number of palettes.
Definition: VGearsTexFile.h:290
TexEntry palette_type
The type of colour palette.
Definition: VGearsTexFile.h:285
TexEntry palette_total_color_count
The number of colours between all the palettes.
Definition: VGearsTexFile.h:295
ImageData image_data
Texture image data.
Definition: VGearsTexFile.h:300
TexEntry unknown_0xCC
Definition: VGearsTexFile.h:345
TexEntry runtime_data_ptr_palette_data
Definition: VGearsTexFile.h:315
PaletteData palette_data
Colour palette data.
Definition: VGearsTexFile.h:310
TexEntry unknown_06
Unknown data.
Definition: VGearsTexFile.h:365
TexEntry runtime_data_ptr_image_data
Definition: VGearsTexFile.h:355
TexEntry unknown_08
Unknown data.
Definition: VGearsTexFile.h:375
TexEntry runtime_data_ptr_color_key_array
Definition: VGearsTexFile.h:330
TexEntry unknown_0x04
Unknown data.
Definition: VGearsTexFile.h:260
TexEntry unknown_07
Unknown data.
Definition: VGearsTexFile.h:370
TexEntry color_key_flag
Color key.
Definition: VGearsTexFile.h:265
TexEntry version
File format version.
Definition: VGearsTexFile.h:255
TexEntry reference_alpha
Definition: VGearsTexFile.h:335
TexEntry unknown_0x10
Unknown data.
Definition: VGearsTexFile.h:275
TexEntry unknown_0x0C
Unknown data.
Definition: VGearsTexFile.h:270
PixelFormat pixel_format
Pixel format.
Definition: VGearsTexFile.h:320
BitData bit_data
Bit data.
Definition: VGearsTexFile.h:280
TexEntry runtime_data_04
Definition: VGearsTexFile.h:360
TexEntry runtime_data_palette_index
Definition: VGearsTexFile.h:350
TexEntry unknown_0x48
Unknown data.
Definition: VGearsTexFile.h:305
Texture image data.
Definition: VGearsTexFile.h:126
TexEntry height
Image height.
Definition: VGearsTexFile.h:141
TexEntry bit_depth
Image depth, in bits.
Definition: VGearsTexFile.h:131
TexEntry width
Image width.
Definition: VGearsTexFile.h:136
TexEntry pitch
Image pitch.
Definition: VGearsTexFile.h:146
Colour palette data.
Definition: VGearsTexFile.h:152
TexEntry colors_per_palette
Definition: VGearsTexFile.h:177
TexEntry index_bits
Definition: VGearsTexFile.h:162
TexEntry flag
Definition: VGearsTexFile.h:157
TexEntry total_color_count
Definition: VGearsTexFile.h:172
TexEntry index_8bit
Definition: VGearsTexFile.h:167
Pixel format structure.
Definition: VGearsTexFile.h:209
RGBAData bit_shift
Definition: VGearsTexFile.h:234
RGBAData bit_count_unused
Definition: VGearsTexFile.h:239
TexEntry bits_per_pixel
Number of bits per pixel definition.
Definition: VGearsTexFile.h:214
RGBAData bit_count
Number of bits.
Definition: VGearsTexFile.h:224
RGBAData shades
Definition: VGearsTexFile.h:244
RGBAData bit_mask
Definition: VGearsTexFile.h:229
TexEntry bytes_per_pixel
Number of bytes per pixel definition.
Definition: VGearsTexFile.h:219
RGBA colour data.
Definition: VGearsTexFile.h:183
TexEntry green
Green component.
Definition: VGearsTexFile.h:193
TexEntry blue
Blue component.
Definition: VGearsTexFile.h:198
TexEntry red
Red component.
Definition: VGearsTexFile.h:188
TexEntry alpha
Alpha component.
Definition: VGearsTexFile.h:203
Texture format.
Definition: VGearsTexFile.h:386
TexEntry palette_index_8bit
Definition: VGearsTexFile.h:425
TexEntry height
Texture height.
Definition: VGearsTexFile.h:400
TexEntry width
Texture width.
Definition: VGearsTexFile.h:395
TexEntry palette_size
Definition: VGearsTexFile.h:430
TexEntry bits_per_palette_index
Definition: VGearsTexFile.h:420
TexEntry runtime_data_ptr_palette_data
Definition: VGearsTexFile.h:440
PixelFormat pixel_format
The format for the texture pixels.
Definition: VGearsTexFile.h:445
TexEntry palette_color_count
The number of colours in the palette.
Definition: VGearsTexFile.h:435
TexEntry palette_flag
Definition: VGearsTexFile.h:415
TexEntry unknown_0x48
Unknown data.
Definition: VGearsTexFile.h:410
TexEntry pitch
Texture pitch.
Definition: VGearsTexFile.h:405
Definition: TypeDefine.h:68