ResidualVM logo ResidualVM website - Forums - Contact us BuildBot - Doxygen - Wiki curved edge

conversion.h

Go to the documentation of this file.
00001 /* ScummVM - Graphic Adventure Engine
00002  *
00003  * ScummVM is the legal property of its developers, whose names
00004  * are too numerous to list here. Please refer to the COPYRIGHT
00005  * file distributed with this source distribution.
00006  *
00007  * This program is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU General Public License
00009  * as published by the Free Software Foundation; either version 2
00010  * of the License, or (at your option) any later version.
00011  *
00012  * This program is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU General Public License
00018  * along with this program; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00020  *
00021  */
00022 
00023 #ifndef GRAPHICS_CONVERSION_H
00024 #define GRAPHICS_CONVERSION_H
00025 
00026 #include "common/util.h"
00027 
00028 namespace Graphics {
00029 
00030 struct PixelFormat;
00031 
00033 inline static void YUV2RGB(byte y, byte u, byte v, byte &r, byte &g, byte &b) {
00034     r = CLIP<int>(y + ((1357 * (v - 128)) >> 10), 0, 255);
00035     g = CLIP<int>(y - (( 691 * (v - 128)) >> 10) - ((333 * (u - 128)) >> 10), 0, 255);
00036     b = CLIP<int>(y + ((1715 * (u - 128)) >> 10), 0, 255);
00037 }
00038 
00040 inline static void RGB2YUV(byte r, byte g, byte b, byte &y, byte &u, byte &v) {
00041     y = CLIP<int>( ((r * 306) >> 10) + ((g * 601) >> 10) + ((b * 117) >> 10)      , 0, 255);
00042     u = CLIP<int>(-((r * 172) >> 10) - ((g * 340) >> 10) + ((b * 512) >> 10) + 128, 0, 255);
00043     v = CLIP<int>( ((r * 512) >> 10) - ((g * 429) >> 10) - ((b *  83) >> 10) + 128, 0, 255);
00044 }
00045 
00046 // TODO: generic YUV to RGB blit
00047 
00070 bool crossBlit(byte *dst, const byte *src,
00071                const uint dstPitch, const uint srcPitch,
00072                const uint w, const uint h,
00073                const Graphics::PixelFormat &dstFmt, const Graphics::PixelFormat &srcFmt);
00074 
00075 } // End of namespace Graphics
00076 
00077 #endif // GRAPHICS_CONVERSION_H


Generated on Sat Mar 23 2019 05:01:24 for ResidualVM by doxygen 1.7.1
curved edge   curved edge