mirror of
https://github.com/Relintai/texture_packer.git
synced 2024-11-12 10:15:16 +01:00
Implemented support for input image format RGB8.
This commit is contained in:
parent
9cbc2ac85b
commit
3159f588ad
@ -330,14 +330,21 @@ void TexturePacker::merge() {
|
|||||||
|
|
||||||
PoolByteArray image_data = img->get_data();
|
PoolByteArray image_data = img->get_data();
|
||||||
|
|
||||||
|
int input_format_offset = get_offset_for_format(img->get_format());
|
||||||
|
|
||||||
|
ERR_CONTINUE_MSG(input_format_offset == 0, "Format is not implemented, Skipping!")
|
||||||
|
|
||||||
int h_wo_margin = r->h - 2 * _margin;
|
int h_wo_margin = r->h - 2 * _margin;
|
||||||
for (int y = 0; y < h_wo_margin; ++y) {
|
for (int y = 0; y < h_wo_margin; ++y) {
|
||||||
int orig_img_indx = (rect_pos_y + y) * img_width * 4 + rect_pos_x * 4;
|
int orig_img_indx = (rect_pos_y + y) * img_width * input_format_offset + rect_pos_x * input_format_offset;
|
||||||
int start_indx = (r->y + y + _margin) * b.size.w * 4 + (r->x + _margin) * 4;
|
int start_indx = (r->y + y + _margin) * b.size.w * 4 + (r->x + _margin) * 4;
|
||||||
|
|
||||||
int row_width = (r->w - 2 * _margin) * 4;
|
int row_width = (r->w - 2 * _margin) * input_format_offset;
|
||||||
for (int x = 0; x < row_width; ++x) {
|
for (int x = 0; x < row_width; x += 4) {
|
||||||
data.set(start_indx + x, image_data[orig_img_indx + x]);
|
|
||||||
|
for (int sx = 0; sx < 4; ++sx) {
|
||||||
|
data.set(start_indx + x + sx, image_data[orig_img_indx + sx + x]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -364,6 +371,17 @@ void TexturePacker::merge() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TexturePacker::get_offset_for_format(Image::Format format) {
|
||||||
|
switch (format) {
|
||||||
|
case Image::FORMAT_RGB8:
|
||||||
|
return 3;
|
||||||
|
case Image::FORMAT_RGBA8:
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
TexturePacker::TexturePacker() {
|
TexturePacker::TexturePacker() {
|
||||||
_texture_flags = Texture::FLAG_MIPMAPS | Texture::FLAG_FILTER;
|
_texture_flags = Texture::FLAG_MIPMAPS | Texture::FLAG_FILTER;
|
||||||
_max_atlas_size = 1024;
|
_max_atlas_size = 1024;
|
||||||
|
@ -48,6 +48,8 @@ public:
|
|||||||
|
|
||||||
void merge();
|
void merge();
|
||||||
|
|
||||||
|
int get_offset_for_format(Image::Format format);
|
||||||
|
|
||||||
TexturePacker();
|
TexturePacker();
|
||||||
~TexturePacker();
|
~TexturePacker();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user