V-Gears 0
Free Final Fantasy VII engine.
VGearsPaletteFileSerializer.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 <OgrePixelFormat.h>
19#include "common/TypeDefine.h"
20#include "VGearsPaletteFile.h"
21#include "VGearsSerializer.h"
22
23namespace VGears{
24
29
30 public:
31
36
40 virtual ~PaletteFileSerializer();
41
48 virtual void ImportPaletteFile(Ogre::DataStreamPtr &stream, PaletteFile* dest);
49
50 enum {
51
55 BIT_MASK_RED = 0x001F,
56
61
65 BIT_MASK_BLUE = 0x7C00,
66
70 BIT_SIZE = 0x001F,
71
76
80 BIT_MASK_ALPHA = 0x8000
81 };
82
86 struct Header{
87
92
99
106
111
116 };
117
119
121
122 protected:
123
129 virtual void ReadFileHeader(Ogre::DataStreamPtr &stream);
130
137 virtual void readObject(Ogre::DataStreamPtr &stream, Color &dest);
138
145 virtual void readObject(Ogre::DataStreamPtr &stream, Page &dest);
146
148
155 virtual void ConvertColour(uint16 &colour) const;
156
160 static const Ogre::PixelFormat PIXEL_FORMAT;
161
169 template<typename ValueType> void ReadVector(
170 Ogre::DataStreamPtr &stream, std::vector<ValueType> &dest, size_t count
171 ){
172 dest.clear();
173 dest.reserve(count);
174 for (size_t i(count); i --;){
175 ValueType in_tmp;
176 readObject(stream, in_tmp);
177 dest.push_back(in_tmp);
178 }
179 }
180
181 private:
182
187 };
188}
Handles the serialization of colour palette files.
Definition: VGearsPaletteFileSerializer.h:28
virtual void ConvertColour(uint16 &colour) const
Converts a colour.
Definition: VGearsPaletteFileSerializer.cpp:60
Header header_
The file header.
Definition: VGearsPaletteFileSerializer.h:186
virtual void ImportPaletteFile(Ogre::DataStreamPtr &stream, PaletteFile *dest)
Imports a colour palette file.
Definition: VGearsPaletteFileSerializer.cpp:30
PaletteFile::Color Color
Definition: VGearsPaletteFileSerializer.h:118
static const Ogre::PixelFormat PIXEL_FORMAT
A pixel format.
Definition: VGearsPaletteFileSerializer.h:160
@ BIT_MASK_RGB
Bitmask for RGB colour.
Definition: VGearsPaletteFileSerializer.h:75
@ BIT_MASK_ALPHA
Bitmask for alpha component.
Definition: VGearsPaletteFileSerializer.h:80
@ BIT_MASK_BLUE
Bitmask for blie colour.
Definition: VGearsPaletteFileSerializer.h:65
@ BIT_MASK_RED
Bitmask for red colour.
Definition: VGearsPaletteFileSerializer.h:55
@ BIT_MASK_GREEN
Bitmask for green colour.
Definition: VGearsPaletteFileSerializer.h:60
@ BIT_SIZE
Bitmask for palette size.
Definition: VGearsPaletteFileSerializer.h:70
virtual ~PaletteFileSerializer()
Destructor.
Definition: VGearsPaletteFileSerializer.cpp:27
PaletteFile::Page Page
Definition: VGearsPaletteFileSerializer.h:120
virtual void readObject(Ogre::DataStreamPtr &stream, Color &dest)
Reads an object as a colour.
Definition: VGearsPaletteFileSerializer.cpp:45
virtual void ReadFileHeader(Ogre::DataStreamPtr &stream)
Reads a file header and sets the instance data.
Definition: VGearsPaletteFileSerializer.cpp:37
PaletteFileSerializer()
Constructor.
Definition: VGearsPaletteFileSerializer.cpp:25
void ReadVector(Ogre::DataStreamPtr &stream, std::vector< ValueType > &dest, size_t count)
Reads a stream as a vector.
Definition: VGearsPaletteFileSerializer.h:169
Handles colour palette files.
Definition: VGearsPaletteFile.h:27
std::vector< Color > Page
Definition: VGearsPaletteFile.h:68
Ogre::ColourValue Color
Definition: VGearsPaletteFile.h:66
Handles file serialization.
Definition: VGearsSerializer.h:30
void readObject(Ogre::DataStreamPtr &stream, Ogre::Vector2 &dest)
Reads an object as a 2 dimensional vector.
Definition: VGearsSerializer.cpp:32
Definition: FF7NameLookup.h:24
Ogre::uint16 uint16
Definition: TypeDefine.h:32
Ogre::uint32 uint32
Definition: TypeDefine.h:33
A colour palette file header.
Definition: VGearsPaletteFileSerializer.h:86
uint16 colors_per_page
The number of colurs per palette page.
Definition: VGearsPaletteFileSerializer.h:110
uint32 file_size
The size of the file.
Definition: VGearsPaletteFileSerializer.h:91
uint16 pal_y
The Y coordinate of the palette.
Definition: VGearsPaletteFileSerializer.h:105
uint16 page_count
The number of palette pages.
Definition: VGearsPaletteFileSerializer.h:115
uint16 pal_x
The X coordinate of the palette.
Definition: VGearsPaletteFileSerializer.h:98