2 * copyright (c) 2010 Sveriges Television AB <info@casparcg.com>
\r
4 * This file is part of CasparCG.
\r
6 * CasparCG is free software: you can redistribute it and/or modify
\r
7 * it under the terms of the GNU General Public License as published by
\r
8 * the Free Software Foundation, either version 3 of the License, or
\r
9 * (at your option) any later version.
\r
11 * CasparCG is distributed in the hope that it will be useful,
\r
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
14 * GNU General Public License for more details.
\r
16 * You should have received a copy of the GNU General Public License
\r
17 * along with CasparCG. If not, see <http://www.gnu.org/licenses/>.
\r
24 #include "../Types.hpp"
\r
25 #include "../CPUID.hpp"
\r
29 class TransitionInfo;
\r
35 Function: SetVersion
\r
37 Sets appropriate function pointers for image library functions depending on SIMD version.
\r
39 Modified: 2009/4/14 (R.N)
\r
43 simd - SIMD version to use
\r
45 Author: Robert Nagy, R.N (SVT 2009)
\r
48 void SetVersion(SIMD simd = AUTO);
\r
53 Shuffles 8 byte channels in image
\r
55 Modified: 2009/4/15 (R.N)
\r
59 source1 - Image source
\r
60 dest - Image destination
\r
61 size - Size of image in bytes
\r
62 mask0 - index of first channel
\r
63 mask1 - index of second channel
\r
64 mask2 - index of third channel
\r
65 mask3 - index of fourth channel
\r
67 Author: Robert Nagy, R.N (SVT 2009)
\r
71 void Shuffle(void* dest, const void* source, size_t size, const u8 red, const u8 green, const u8 blue, const u8 alpha);
\r
76 Blends two images with premultiplied alpha.
\r
77 Result is put into dest as an image with premultiplied alpha.
\r
79 Modified: 2009/4/12 (R.N)
\r
83 source1 - Image above
\r
84 source2 - Image beneath
\r
85 dest - Image destination
\r
86 size - Size of image in bytes
\r
88 Author: Robert Nagy, R.N (SVT 2009)
\r
93 void PreOver(void* dest, const void* source1, const void* source2, size_t size);
\r
98 Blends two images based on alpha value;
\r
99 Result is put into dest as an image with premultiplied alpha.
\r
101 Modified: 2009/4/12 (R.N)
\r
106 source1 - Image above
\r
107 source2 - Image beneath
\r
108 dest - Image destination
\r
109 size - Size of image in bytes
\r
111 Author: Robert Nagy, R.N (SVT 2009)
\r
115 void Lerp(void* dest, const void* source1, const void* source2, float alpha, size_t size);
\r
118 Function: Premultiply
\r
120 Premultiplies color with alpha.
\r
122 Modified: 2009/4/20 (R.N)
\r
127 dest - Image destination
\r
128 size - Size of image in bytes
\r
130 Author: Robert Nagy, R.N (SVT 2009)
\r
132 See: Premultiply.hpp
\r
134 void Premultiply(void* dest, const void* source, size_t size);
\r
136 void Copy(void* dest, const void* source, size_t size);
\r
138 void Clear(void* dest, size_t size);
\r
140 void CopyField(unsigned char* pDest, unsigned char* pSrc, size_t fieldIndex, size_t width, size_t height);
\r
142 //void Transition(void* dest, const void* source1, const void* source2, int currentFrame, size_t width, size_t height, const TransitionInfo& transitionInfo);
\r
144 //void Wipe(void* dest, const void* source1, const void* source2, u32 offset, u32 halfStep, Direction dir, size_t width, size_t height, size_t borderWidth, const void* border = NULL, u32 borderColor = 0);
\r
148 typedef void(*PreOverFun) (void*, const void*, const void*, size_t);
\r
149 typedef void(*ShuffleFun) (void*, const void*, size_t, const u8, const u8, const u8, const u8);
\r
150 typedef void(*LerpFun) (void*, const void*, const void*, float, size_t);
\r
151 typedef void(*PremultiplyFun) (void*, const void*, size_t);
\r
152 typedef void(*CopyFun) (void*, const void*, size_t);
\r
153 typedef void(*CopyFieldFun) (unsigned char* pDest, unsigned char* pSrc, size_t fieldIndex, size_t width, size_t height);
\r
154 typedef void(*ClearFun) (void*, size_t);
\r
155 //typedef void(*TransitionFun)(void*, const void*, const void*, int, size_t, size_t, const TransitionInfo&);
\r
157 extern ShuffleFun Shuffle;
\r
158 extern PreOverFun PreOver;
\r
159 extern LerpFun Lerp;
\r
160 extern PremultiplyFun Premultiply;
\r
161 extern CopyFun Copy;
\r
162 extern CopyFieldFun CopyField;
\r
163 extern ClearFun Clear;
\r
164 //extern TransitionFun Transition;
\r
166 extern const struct Initializer{Initializer(){SetVersion(AUTO);}} init;
\r
169 } // namespace image
\r
170 } // namespace utils
\r
171 } // namespace caspar
\r