📄 edibimagedata.h
字号:
/* //////////////////////////////////////////////////////////////////////////// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright(c) 2004-2005 Intel Corporation. All Rights Reserved.//////*/#ifndef __EDIBIMAGEDATA_H__#define __EDIBIMAGEDATA_H__#include "dibinfo.h"#include "imagecore.h"//// Note, these functions doesn't reduce dinamic range of image data// or saturate it//template<class ByteOutput, class T>void WriteDIBImageData( ByteOutput &stream, const DIBInfo &dibInfo, const ImageCoreC<T,1> *channel){ switch(dibInfo.Depth()) { case Depth_24: WriteDIBImageDataDepth_24(stream, dibInfo.Origin(), dibInfo.Size(), channel[0], channel[1], channel[2]); break; default: //Depth_8 WriteDIBImageDataDepth_8 (stream, dibInfo.Origin(), dibInfo.Size(), channel[0]); break; }}template<class ByteOutput, class T>void WriteDIBImageDataDepth_8( ByteOutput &stream, DIBOrigin origin, const RectSize &size, const ImageCoreC<T,1> &image){ unsigned int width = size.Width(); unsigned int height = size.Height(); unsigned int dibLineStep = LineStep(Depth_8, width); const T *src; int imgLineStep; if(origin==BottomLeft) { src = image.Line(height - 1); imgLineStep = -(int)image.LineStep(); } else { src = image.Data(); imgLineStep = (int)image.LineStep(); } for(unsigned int y = 0; y < height; y++) { for(unsigned int x = 0; x < width; x++) { stream.Write8u((Ipp8u)src[x]); } stream.FillZero(dibLineStep - width); addrInc(src, imgLineStep); }}template<class ByteOutput, class T>void WriteDIBImageDataDepth_24( ByteOutput &stream, DIBOrigin origin, const RectSize &size, const ImageCoreC<T,1> &r, const ImageCoreC<T,1> &g, const ImageCoreC<T,1> &b){ unsigned int width = size.Width(); unsigned int height = size.Height(); const T *rSrc; const T *gSrc; const T *bSrc; int rLineStep; int gLineStep; int bLineStep; if(origin==BottomLeft) { rSrc = r.Line(height - 1); gSrc = g.Line(height - 1); bSrc = b.Line(height - 1); rLineStep = -(int)r.LineStep(); gLineStep = -(int)g.LineStep(); bLineStep = -(int)b.LineStep(); } else { rSrc = r.Data(); gSrc = g.Data(); bSrc = b.Data(); rLineStep = (int)r.LineStep(); gLineStep = (int)g.LineStep(); bLineStep = (int)b.LineStep(); } unsigned int dibLineStep = LineStep(Depth_24, width); for(unsigned int y = 0; y < height; y++) { for(unsigned int x = 0; x < width; x++) { stream.Write8u((Ipp8u)bSrc[x]); stream.Write8u((Ipp8u)gSrc[x]); stream.Write8u((Ipp8u)rSrc[x]); } stream.FillZero(dibLineStep - width * 3); addrInc(rSrc, rLineStep); addrInc(gSrc, gLineStep); addrInc(bSrc, bLineStep); }}#endif // __EDIBIMAGEDATA_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -