From 6a9c990da72a737fa95d9e97d53f835706aea7c3 Mon Sep 17 00:00:00 2001 From: Ferenc Arn Date: Wed, 26 Apr 2017 10:49:08 -0500 Subject: Add ETC1/ETC2 compression support though etc2comp. Remove rg-etc1 code. Also updated travis to use ubuntu 14.04. Fixes #8457. --- modules/etc1/texture_loader_pkm.cpp | 114 ------------------------------------ 1 file changed, 114 deletions(-) delete mode 100644 modules/etc1/texture_loader_pkm.cpp (limited to 'modules/etc1/texture_loader_pkm.cpp') diff --git a/modules/etc1/texture_loader_pkm.cpp b/modules/etc1/texture_loader_pkm.cpp deleted file mode 100644 index c04528d2a0..0000000000 --- a/modules/etc1/texture_loader_pkm.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/*************************************************************************/ -/* texture_loader_pkm.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "texture_loader_pkm.h" - -#include "os/file_access.h" -#include - -struct ETC1Header { - char tag[6]; // "PKM 10" - uint16_t format; // Format == number of mips (== zero) - uint16_t texWidth; // Texture dimensions, multiple of 4 (big-endian) - uint16_t texHeight; - uint16_t origWidth; // Original dimensions (big-endian) - uint16_t origHeight; -}; - -RES ResourceFormatPKM::load(const String &p_path, const String &p_original_path, Error *r_error) { - - if (r_error) - *r_error = ERR_CANT_OPEN; - - Error err; - FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err); - if (!f) - return RES(); - - FileAccessRef fref(f); - if (r_error) - *r_error = ERR_FILE_CORRUPT; - - ERR_EXPLAIN("Unable to open PKM texture file: " + p_path); - ERR_FAIL_COND_V(err != OK, RES()); - - // big endian - f->set_endian_swap(true); - - ETC1Header h; - ERR_EXPLAIN("Invalid or Unsupported PKM texture file: " + p_path); - f->get_buffer((uint8_t *)&h.tag, sizeof(h.tag)); - if (strncmp(h.tag, "PKM 10", sizeof(h.tag))) - ERR_FAIL_V(RES()); - - h.format = f->get_16(); - h.texWidth = f->get_16(); - h.texHeight = f->get_16(); - h.origWidth = f->get_16(); - h.origHeight = f->get_16(); - - PoolVector src_data; - - uint32_t size = h.texWidth * h.texHeight / 2; - src_data.resize(size); - PoolVector::Write wb = src_data.write(); - f->get_buffer(wb.ptr(), size); - wb = PoolVector::Write(); - - int mipmaps = h.format; - int width = h.origWidth; - int height = h.origHeight; - - Ref img = memnew(Image(width, height, mipmaps, Image::FORMAT_ETC, src_data)); - - Ref texture = memnew(ImageTexture); - texture->create_from_image(img); - - if (r_error) - *r_error = OK; - - return texture; -} - -void ResourceFormatPKM::get_recognized_extensions(List *p_extensions) const { - - p_extensions->push_back("pkm"); -} - -bool ResourceFormatPKM::handles_type(const String &p_type) const { - - return ClassDB::is_parent_class(p_type, "Texture"); -} - -String ResourceFormatPKM::get_resource_type(const String &p_path) const { - - if (p_path.get_extension().to_lower() == "pkm") - return "ImageTexture"; - return ""; -} -- cgit v1.2.3