/* Copyright © 2010, 2011, 2012 Vladimír Vondruš This file is part of Magnum. Magnum is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 only, as published by the Free Software Foundation. Magnum is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License version 3 for more details. */ #include "AbstractImage.h" #include namespace Magnum { std::size_t AbstractImage::pixelSize(Format format, Type type) { std::size_t size = 0; switch(type) { case Type::UnsignedByte: #ifndef MAGNUM_TARGET_GLES2 case Type::Byte: #endif size = 1; break; case Type::UnsignedShort: #ifndef MAGNUM_TARGET_GLES2 case Type::Short: #endif case Type::HalfFloat: size = 2; break; case Type::UnsignedInt: #ifndef MAGNUM_TARGET_GLES2 case Type::Int: #endif case Type::Float: size = 4; break; #ifndef MAGNUM_TARGET_GLES case Type::UnsignedByte332: case Type::UnsignedByte233Rev: return 1; #endif case Type::UnsignedShort565: #ifndef MAGNUM_TARGET_GLES case Type::UnsignedShort565Rev: #endif case Type::UnsignedShort4444: case Type::UnsignedShort4444Rev: case Type::UnsignedShort5551: case Type::UnsignedShort1555Rev: return 2; #ifndef MAGNUM_TARGET_GLES case Type::UnsignedInt8888: case Type::UnsignedInt8888Rev: case Type::UnsignedInt1010102: #endif case Type::UnsignedInt2101010Rev: #ifndef MAGNUM_TARGET_GLES2 case Type::UnsignedInt10F11F11FRev: case Type::UnsignedInt5999Rev: #endif case Type::UnsignedInt248: return 4; #ifndef MAGNUM_TARGET_GLES2 case Type::Float32UnsignedInt248Rev: return 8; #endif } switch(format) { case Format::Red: #ifndef MAGNUM_TARGET_GLES2 case Format::RedInteger: #endif #ifndef MAGNUM_TARGET_GLES case Format::Green: case Format::Blue: case Format::GreenInteger: case Format::BlueInteger: #endif return 1*size; case Format::RG: #ifndef MAGNUM_TARGET_GLES2 case Format::RGInteger: #endif return 2*size; case Format::RGB: #ifndef MAGNUM_TARGET_GLES2 case Format::RGBInteger: #endif #ifndef MAGNUM_TARGET_GLES case Format::BGR: case Format::BGRInteger: #endif return 3*size; case Format::RGBA: #ifndef MAGNUM_TARGET_GLES2 case Format::RGBAInteger: #endif case Format::BGRA: #ifndef MAGNUM_TARGET_GLES2 case Format::BGRAInteger: #endif return 4*size; /* Handled above */ case Format::DepthComponent: case Format::StencilIndex: case Format::DepthStencil: CORRADE_INTERNAL_ASSERT(false); } CORRADE_INTERNAL_ASSERT(false); return 0; } }