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