1/*
2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26
27#ifndef __MLIB_C_IMAGECONV_H
28#define __MLIB_C_IMAGECONV_H
29
30#ifdef __cplusplus
31extern "C" {
32#endif /* __cplusplus */
33
34// Shared macro defined for cleanup of allocated memory.
35#ifndef FREE_AND_RETURN_STATUS
36#define FREE_AND_RETURN_STATUS \
37if (pbuff != buff) mlib_free(pbuff); \
38if (k != akernel) mlib_free(k); \
39return status
40#endif /* FREE_AND_RETURN_STATUS */
41
42mlib_status mlib_c_convMxNnw_u8(mlib_image *dst,
43 const mlib_image *src,
44 const mlib_s32 *kernel,
45 mlib_s32 m,
46 mlib_s32 n,
47 mlib_s32 dm,
48 mlib_s32 dn,
49 mlib_s32 scale,
50 mlib_s32 cmask);
51
52mlib_status mlib_c_convMxNext_u8(mlib_image *dst,
53 const mlib_image *src,
54 const mlib_s32 *kern,
55 mlib_s32 m,
56 mlib_s32 n,
57 mlib_s32 dx_l,
58 mlib_s32 dx_r,
59 mlib_s32 dy_t,
60 mlib_s32 dy_b,
61 mlib_s32 scale,
62 mlib_s32 cmask);
63
64#if ! defined ( __sparc ) /* for x86, using integer multiplies is faster */
65
66mlib_status mlib_i_convMxNnw_s16(mlib_image *dst,
67 const mlib_image *src,
68 const mlib_s32 *kernel,
69 mlib_s32 m,
70 mlib_s32 n,
71 mlib_s32 dm,
72 mlib_s32 dn,
73 mlib_s32 scale,
74 mlib_s32 cmask);
75
76mlib_status mlib_i_convMxNnw_u16(mlib_image *dst,
77 const mlib_image *src,
78 const mlib_s32 *kernel,
79 mlib_s32 m,
80 mlib_s32 n,
81 mlib_s32 dm,
82 mlib_s32 dn,
83 mlib_s32 scale,
84 mlib_s32 cmask);
85
86mlib_status mlib_i_convMxNnw_u8(mlib_image *dst,
87 const mlib_image *src,
88 const mlib_s32 *kernel,
89 mlib_s32 m,
90 mlib_s32 n,
91 mlib_s32 dm,
92 mlib_s32 dn,
93 mlib_s32 scale,
94 mlib_s32 cmask);
95
96mlib_status mlib_i_convMxNext_u8(mlib_image *dst,
97 const mlib_image *src,
98 const mlib_s32 *kern,
99 mlib_s32 m,
100 mlib_s32 n,
101 mlib_s32 dx_l,
102 mlib_s32 dx_r,
103 mlib_s32 dy_t,
104 mlib_s32 dy_b,
105 mlib_s32 scale,
106 mlib_s32 cmask);
107
108mlib_status mlib_i_convMxNext_s16(mlib_image *dst,
109 const mlib_image *src,
110 const mlib_s32 *kernel,
111 mlib_s32 m,
112 mlib_s32 n,
113 mlib_s32 dx_l,
114 mlib_s32 dx_r,
115 mlib_s32 dy_t,
116 mlib_s32 dy_b,
117 mlib_s32 scale,
118 mlib_s32 cmask);
119
120mlib_status mlib_i_convMxNext_u16(mlib_image *dst,
121 const mlib_image *src,
122 const mlib_s32 *kernel,
123 mlib_s32 m,
124 mlib_s32 n,
125 mlib_s32 dx_l,
126 mlib_s32 dx_r,
127 mlib_s32 dy_t,
128 mlib_s32 dy_b,
129 mlib_s32 scale,
130 mlib_s32 cmask);
131
132#endif /* ! defined ( __sparc ) ( for x86, using integer multiplies is faster ) */
133
134#ifdef __cplusplus
135}
136#endif /* __cplusplus */
137#endif /* __MLIB_C_IMAGECONV_H */
138