Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom.h
32288 views
1
/*
2
* Copyright (c) 2003, 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
#ifndef __MLIB_IMAGEZOOM_H
27
#define __MLIB_IMAGEZOOM_H
28
29
#include <mlib_types.h>
30
#include <mlib_image_types.h>
31
#include <mlib_status.h>
32
#include <mlib_ImageCopy.h>
33
34
#ifdef __cplusplus
35
extern "C" {
36
#endif /* __cplusplus */
37
38
typedef void (*mlib_pack_func)(void *, void *, mlib_s32, void *);
39
40
/***************************************************************/
41
typedef struct {
42
mlib_s32 width, height,
43
srcX, srcY,
44
dstX, dstY;
45
void *sp, *dp;
46
} mlib_clipping;
47
48
/***************************************************************/
49
typedef struct {
50
void *dp;
51
mlib_s32 w, h;
52
mlib_s32 dlb;
53
} mlib_edge_box;
54
55
/***************************************************************/
56
typedef struct mlib_work_image {
57
mlib_clipping
58
*nearest, /* nearest neighbor state of image */
59
*current; /* current state of image*/
60
mlib_s32
61
channels, /* channels in image */
62
src_stride, dst_stride,
63
width, height, /* vertical and horizontal size src image */
64
DX, DY,
65
color;
66
void
67
*sp, *dp,
68
*src_end,
69
*buffer_dp,
70
*colormap;
71
mlib_d64
72
zoomx, zoomy;
73
mlib_d64
74
rzoomx, rzoomy;
75
mlib_d64
76
xstart, ystart;
77
mlib_s32 tshift; /* shift for size of data type */
78
mlib_s32 filter;
79
mlib_u8 *filter1, *filter3, *filter4;
80
mlib_s32 alpha;
81
mlib_edge_box edges[4];
82
mlib_edge_box edges_blend[4];
83
mlib_s32 chan_d;
84
mlib_s32 alp_ind;
85
mlib_s32 sline_size;
86
mlib_s32 y_max;
87
} mlib_work_image;
88
89
/***************************************************************/
90
#define GetElemSubStruct(struct, par) (param->struct->par)
91
#define GetElemStruct(x) (param->x)
92
93
/***************************************************************/
94
#define SetElemSubStruct(struct, par, val) (param->struct->par = val)
95
#define SetElemStruct(x, val) (param->x = val)
96
97
/***************************************************************/
98
99
#define VARIABLE_EDGE(FORMAT) \
100
mlib_edge_box *edges = param->edges; \
101
mlib_s32 i, j, ch; \
102
mlib_s32 channels = param->channels; \
103
mlib_s32 w1 = edges[0].w; \
104
mlib_s32 w2 = edges[1].w; \
105
mlib_s32 w3 = edges[2].w; \
106
mlib_s32 h1 = edges[0].h; \
107
mlib_s32 h2 = edges[1].h; \
108
mlib_s32 h3 = edges[3].h; \
109
mlib_s32 stride_dp0 = edges[0].dlb; \
110
mlib_s32 stride_dp1 = edges[1].dlb; \
111
mlib_s32 stride_dp2 = edges[2].dlb; \
112
mlib_s32 stride_dp3 = edges[3].dlb; \
113
mlib_s32 dst_stride = GetElemStruct(dst_stride); \
114
FORMAT *dp0 = edges[0].dp; \
115
FORMAT *dp1 = edges[1].dp; \
116
FORMAT *dp2 = edges[2].dp; \
117
FORMAT *dp3 = edges[3].dp
118
119
/***************************************************************/
120
121
#define MLIB_SHIFT 16
122
#define MLIB_PREC (1 << MLIB_SHIFT)
123
#define MLIB_MASK (MLIB_PREC - 1)
124
#define MLIB_SCALE (1.0 / MLIB_PREC)
125
#define MLIB_SIGN_SHIFT 31
126
127
/***************************************************************/
128
#define MLIB_SCALE_BC_U8 (1.0 / (1 << 28))
129
#define MLIB_SCALE_BC_S16 (1.0 / (1 << 30))
130
131
/***************************************************************/
132
typedef mlib_status (*mlib_zoom_fun_type)(mlib_work_image *param);
133
134
typedef mlib_status (*mlib_zoom_fun2type)(mlib_work_image *param,
135
const mlib_f32 *flt_table);
136
137
/***************************************************************/
138
mlib_status mlib_ImageZoom_BIT_1_Nearest(mlib_work_image *param,
139
mlib_s32 s_bitoff,
140
mlib_s32 d_bitoff);
141
142
mlib_status mlib_ImageZoom_BitToGray_1_Nearest(mlib_work_image *param,
143
mlib_s32 s_bitoff,
144
const mlib_s32 *ghigh,
145
const mlib_s32 *glow);
146
147
mlib_status mlib_ImageZoom_U8_1_Nearest(mlib_work_image *param);
148
mlib_status mlib_ImageZoom_U8_2_Nearest(mlib_work_image *param);
149
mlib_status mlib_ImageZoom_U8_3_Nearest(mlib_work_image *param);
150
mlib_status mlib_ImageZoom_U8_4_Nearest(mlib_work_image *param);
151
mlib_status mlib_ImageZoom_S16_1_Nearest(mlib_work_image *param);
152
mlib_status mlib_ImageZoom_S16_2_Nearest(mlib_work_image *param);
153
mlib_status mlib_ImageZoom_S16_3_Nearest(mlib_work_image *param);
154
mlib_status mlib_ImageZoom_S16_4_Nearest(mlib_work_image *param);
155
mlib_status mlib_ImageZoom_S32_1_Nearest(mlib_work_image *param);
156
mlib_status mlib_ImageZoom_S32_2_Nearest(mlib_work_image *param);
157
mlib_status mlib_ImageZoom_S32_3_Nearest(mlib_work_image *param);
158
mlib_status mlib_ImageZoom_S32_4_Nearest(mlib_work_image *param);
159
160
mlib_status mlib_ImageZoom_S32_1_Bilinear(mlib_work_image *param);
161
mlib_status mlib_ImageZoom_S32_2_Bilinear(mlib_work_image *param);
162
mlib_status mlib_ImageZoom_S32_3_Bilinear(mlib_work_image *param);
163
mlib_status mlib_ImageZoom_S32_4_Bilinear(mlib_work_image *param);
164
165
mlib_status mlib_ImageZoom_S32_1_1_Bilinear(mlib_work_image *param);
166
mlib_status mlib_ImageZoom_S32_2_1_Bilinear(mlib_work_image *param);
167
mlib_status mlib_ImageZoom_S32_3_1_Bilinear(mlib_work_image *param);
168
mlib_status mlib_ImageZoom_S32_4_1_Bilinear(mlib_work_image *param);
169
170
mlib_status mlib_ImageZoom_S32_1_Bicubic(mlib_work_image *param);
171
mlib_status mlib_ImageZoom_S32_2_Bicubic(mlib_work_image *param);
172
mlib_status mlib_ImageZoom_S32_3_Bicubic(mlib_work_image *param);
173
mlib_status mlib_ImageZoom_S32_4_Bicubic(mlib_work_image *param);
174
175
/***************************************************************/
176
#define FUNC_PROT(NAME) \
177
mlib_status NAME##_1(mlib_work_image *param); \
178
mlib_status NAME##_2(mlib_work_image *param); \
179
mlib_status NAME##_3(mlib_work_image *param); \
180
mlib_status NAME##_4(mlib_work_image *param); \
181
mlib_status NAME##_1s(mlib_work_image *param); \
182
mlib_status NAME##_2s(mlib_work_image *param); \
183
mlib_status NAME##_3s(mlib_work_image *param); \
184
mlib_status NAME##_4s(mlib_work_image *param)
185
186
/***************************************************************/
187
#define FUNC_PROT_WO_S_FUNC(NAME) \
188
mlib_status NAME##_1(mlib_work_image *param); \
189
mlib_status NAME##_2(mlib_work_image *param); \
190
mlib_status NAME##_3(mlib_work_image *param); \
191
mlib_status NAME##_4(mlib_work_image *param)
192
193
/***************************************************************/
194
#define FUNC_PROT_BC(NAME) \
195
mlib_status NAME##_1(mlib_work_image *param, const mlib_f32 *flt_table); \
196
mlib_status NAME##_2(mlib_work_image *param, const mlib_f32 *flt_table); \
197
mlib_status NAME##_3(mlib_work_image *param, const mlib_f32 *flt_table); \
198
mlib_status NAME##_4(mlib_work_image *param, const mlib_f32 *flt_table); \
199
mlib_status NAME##_1s(mlib_work_image *param, const mlib_f32 *flt_table); \
200
mlib_status NAME##_2s(mlib_work_image *param, const mlib_f32 *flt_table); \
201
mlib_status NAME##_3s(mlib_work_image *param, const mlib_f32 *flt_table); \
202
mlib_status NAME##_4s(mlib_work_image *param, const mlib_f32 *flt_table)
203
204
FUNC_PROT(mlib_c_ImageZoomBilinear_U8);
205
FUNC_PROT(mlib_c_ImageZoomBilinear_S16);
206
FUNC_PROT(mlib_c_ImageZoomBilinear_U16);
207
208
FUNC_PROT_BC(mlib_c_ImageZoomBicubic_U8);
209
FUNC_PROT_BC(mlib_c_ImageZoomBicubic_S16);
210
FUNC_PROT_BC(mlib_c_ImageZoomBicubic_U16);
211
212
FUNC_PROT(mlib_v_ImageZoomBilinear_U8);
213
FUNC_PROT(mlib_v_ImageZoomBilinear_S16);
214
FUNC_PROT(mlib_v_ImageZoomBilinear_U16);
215
216
FUNC_PROT(mlib_v_ImageZoomBicubic_U8);
217
FUNC_PROT(mlib_v_ImageZoomBicubic_S16);
218
FUNC_PROT(mlib_v_ImageZoomBicubic_U16);
219
220
FUNC_PROT(mlib_ImageZoomBilinear_S32);
221
FUNC_PROT(mlib_ImageZoomBicubic_S32);
222
223
FUNC_PROT(mlib_ImageZoomBilinear_F32);
224
FUNC_PROT_WO_S_FUNC(mlib_ImageZoomBicubic_F32);
225
226
FUNC_PROT(mlib_ImageZoomBilinear_D64);
227
FUNC_PROT_WO_S_FUNC(mlib_ImageZoomBicubic_D64);
228
229
/***************************************************************/
230
/* Index image part */
231
mlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bilinear(mlib_work_image *param);
232
mlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bilinear(mlib_work_image *param);
233
mlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bilinear(mlib_work_image *param);
234
mlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bilinear(mlib_work_image *param);
235
236
mlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bilinear(mlib_work_image *param);
237
mlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bilinear(mlib_work_image *param);
238
mlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bilinear(mlib_work_image *param);
239
mlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bilinear(mlib_work_image *param);
240
241
mlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bicubic(mlib_work_image *param);
242
mlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bicubic(mlib_work_image *param);
243
mlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bicubic(mlib_work_image *param);
244
mlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bicubic(mlib_work_image *param);
245
246
mlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bicubic(mlib_work_image *param);
247
mlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bicubic(mlib_work_image *param);
248
mlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bicubic(mlib_work_image *param);
249
mlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bicubic(mlib_work_image *param);
250
251
mlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bicubic2(mlib_work_image *param);
252
mlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bicubic2(mlib_work_image *param);
253
mlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bicubic2(mlib_work_image *param);
254
mlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bicubic2(mlib_work_image *param);
255
256
mlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bicubic2(mlib_work_image *param);
257
mlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bicubic2(mlib_work_image *param);
258
mlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bicubic2(mlib_work_image *param);
259
mlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bicubic2(mlib_work_image *param);
260
261
mlib_status mlib_v_ImageZoomIndex_U8_U8_Bilinear(mlib_work_image *param);
262
mlib_status mlib_v_ImageZoomIndex_U8_S16_Bilinear(mlib_work_image *param);
263
mlib_status mlib_v_ImageZoomIndex_S16_U8_Bilinear(mlib_work_image *param);
264
mlib_status mlib_v_ImageZoomIndex_S16_S16_Bilinear(mlib_work_image *param);
265
266
mlib_status mlib_v_ImageZoomIndex_U8_U8_Bicubic(mlib_work_image *param);
267
mlib_status mlib_v_ImageZoomIndex_U8_S16_Bicubic(mlib_work_image *param);
268
mlib_status mlib_v_ImageZoomIndex_S16_U8_Bicubic(mlib_work_image *param);
269
mlib_status mlib_v_ImageZoomIndex_S16_S16_Bicubic(mlib_work_image *param);
270
271
/***************************************************************/
272
/* Define function and rules for computing edges */
273
#define MLIB_EDGE_RULES \
274
switch(edge) { \
275
\
276
case MLIB_EDGE_DST_FILL_ZERO: \
277
\
278
switch(mlib_ImageGetType(src)) { \
279
case MLIB_BYTE: \
280
mlib_ImageZoomZeroEdge_U8(param); \
281
break; \
282
\
283
case MLIB_SHORT: \
284
case MLIB_USHORT: \
285
mlib_ImageZoomZeroEdge_S16(param); \
286
break; \
287
\
288
case MLIB_INT: \
289
mlib_ImageZoomZeroEdge_S32(param); \
290
break; \
291
} \
292
break; \
293
\
294
case MLIB_EDGE_OP_NEAREST: \
295
\
296
switch(mlib_ImageGetType(src)) { \
297
case MLIB_BYTE: \
298
mlib_ImageZoomUpNearest_U8(param); \
299
break; \
300
\
301
case MLIB_SHORT: \
302
case MLIB_USHORT: \
303
mlib_ImageZoomUpNearest_S16(param); \
304
break; \
305
\
306
case MLIB_INT: \
307
mlib_ImageZoomUpNearest_S32(param); \
308
break; \
309
} \
310
break; \
311
\
312
case MLIB_EDGE_SRC_EXTEND: \
313
\
314
switch(mlib_ImageGetType(src)) { \
315
case MLIB_BYTE: \
316
\
317
switch(filter) { \
318
case MLIB_BILINEAR: \
319
mlib_ImageZoomExtend_U8_Bilinear(param); \
320
break; \
321
\
322
case MLIB_BICUBIC: \
323
mlib_ImageZoomExtend_U8_Bicubic(param); \
324
break; \
325
\
326
case MLIB_BICUBIC2: \
327
mlib_ImageZoomExtend_U8_Bicubic2(param); \
328
break; \
329
} \
330
break; \
331
\
332
case MLIB_SHORT: \
333
switch(filter) { \
334
case MLIB_BILINEAR: \
335
mlib_ImageZoomExtend_S16_Bilinear(param); \
336
break; \
337
\
338
case MLIB_BICUBIC: \
339
mlib_ImageZoomExtend_S16_Bicubic(param); \
340
break; \
341
\
342
case MLIB_BICUBIC2: \
343
mlib_ImageZoomExtend_S16_Bicubic2(param); \
344
break; \
345
} \
346
break; \
347
\
348
case MLIB_USHORT: \
349
switch(filter) { \
350
case MLIB_BILINEAR: \
351
mlib_ImageZoomExtend_U16_Bilinear(param); \
352
break; \
353
\
354
case MLIB_BICUBIC: \
355
mlib_ImageZoomExtend_U16_Bicubic(param); \
356
break; \
357
\
358
case MLIB_BICUBIC2: \
359
mlib_ImageZoomExtend_U16_Bicubic2(param); \
360
break; \
361
} \
362
break; \
363
\
364
case MLIB_INT: \
365
switch(filter) { \
366
case MLIB_BILINEAR: \
367
mlib_ImageZoomExtend_S32_Bilinear(param); \
368
break; \
369
\
370
case MLIB_BICUBIC: \
371
mlib_ImageZoomExtend_S32_Bicubic(param); \
372
break; \
373
\
374
case MLIB_BICUBIC2: \
375
mlib_ImageZoomExtend_S32_Bicubic2(param); \
376
break; \
377
} \
378
break; \
379
} \
380
break; \
381
\
382
default: \
383
return MLIB_SUCCESS; \
384
}
385
386
/***************************************************************/
387
388
void mlib_ImageZoomZeroEdge_U8(mlib_work_image *param);
389
void mlib_ImageZoomZeroEdge_S16(mlib_work_image *param);
390
void mlib_ImageZoomZeroEdge_S32(mlib_work_image *param);
391
392
void mlib_ImageZoomUpNearest_U8(mlib_work_image *param);
393
void mlib_ImageZoomUpNearest_S16(mlib_work_image *param);
394
void mlib_ImageZoomUpNearest_S32(mlib_work_image *param);
395
396
void mlib_ImageZoomExtend_U8_Bilinear(mlib_work_image *param);
397
void mlib_ImageZoomExtend_S16_Bilinear(mlib_work_image *param);
398
void mlib_ImageZoomExtend_U16_Bilinear(mlib_work_image *param);
399
void mlib_ImageZoomExtend_S32_Bilinear(mlib_work_image *param);
400
401
void mlib_ImageZoomExtend_U8_Bicubic(mlib_work_image *param);
402
void mlib_ImageZoomExtend_S16_Bicubic(mlib_work_image *param);
403
void mlib_ImageZoomExtend_U16_Bicubic(mlib_work_image *param);
404
void mlib_ImageZoomExtend_S32_Bicubic(mlib_work_image *param);
405
406
void mlib_ImageZoomExtend_U8_Bicubic2(mlib_work_image *param);
407
void mlib_ImageZoomExtend_S16_Bicubic2(mlib_work_image *param);
408
void mlib_ImageZoomExtend_U16_Bicubic2(mlib_work_image *param);
409
void mlib_ImageZoomExtend_S32_Bicubic2(mlib_work_image *param);
410
411
void mlib_ImageZoomIndexExtend_U8_Bilinear(mlib_work_image *param);
412
void mlib_ImageZoomIndexExtend_S16_Bilinear(mlib_work_image *param);
413
414
void mlib_ImageZoomIndexExtend_U8_Bicubic(mlib_work_image *param);
415
void mlib_ImageZoomIndexExtend_S16_Bicubic(mlib_work_image *param);
416
void mlib_ImageZoomIndexExtend_U8_Bicubic2(mlib_work_image *param);
417
void mlib_ImageZoomIndexExtend_S16_Bicubic2(mlib_work_image *param);
418
419
/* Float image part */
420
mlib_status mlib_ImageZoom_F32_1_Nearest(mlib_work_image *param);
421
mlib_status mlib_ImageZoom_F32_1_Bilinear(mlib_work_image *param);
422
mlib_status mlib_ImageZoom_F32_1_Bicubic(mlib_work_image *param);
423
mlib_status mlib_ImageZoom_F32_1_Bicubic2(mlib_work_image *param);
424
425
mlib_status mlib_ImageZoom_F32_2_Nearest(mlib_work_image *param);
426
mlib_status mlib_ImageZoom_F32_2_Bilinear(mlib_work_image *param);
427
mlib_status mlib_ImageZoom_F32_2_Bicubic(mlib_work_image *param);
428
mlib_status mlib_ImageZoom_F32_2_Bicubic2(mlib_work_image *param);
429
430
mlib_status mlib_ImageZoom_F32_3_Nearest(mlib_work_image *param);
431
mlib_status mlib_ImageZoom_F32_3_Bilinear(mlib_work_image *param);
432
mlib_status mlib_ImageZoom_F32_3_Bicubic(mlib_work_image *param);
433
mlib_status mlib_ImageZoom_F32_3_Bicubic2(mlib_work_image *param);
434
435
mlib_status mlib_ImageZoom_F32_4_Nearest(mlib_work_image *param);
436
mlib_status mlib_ImageZoom_F32_4_Bilinear(mlib_work_image *param);
437
mlib_status mlib_ImageZoom_F32_4_Bicubic(mlib_work_image *param);
438
mlib_status mlib_ImageZoom_F32_4_Bicubic2(mlib_work_image *param);
439
440
/* Double image part*/
441
mlib_status mlib_ImageZoom_D64_1_Nearest(mlib_work_image *param);
442
mlib_status mlib_ImageZoom_D64_1_Bilinear(mlib_work_image *param);
443
mlib_status mlib_ImageZoom_D64_1_Bicubic(mlib_work_image *param);
444
mlib_status mlib_ImageZoom_D64_1_Bicubic2(mlib_work_image *param);
445
446
mlib_status mlib_ImageZoom_D64_2_Nearest(mlib_work_image *param);
447
mlib_status mlib_ImageZoom_D64_2_Bilinear(mlib_work_image *param);
448
mlib_status mlib_ImageZoom_D64_2_Bicubic(mlib_work_image *param);
449
mlib_status mlib_ImageZoom_D64_2_Bicubic2(mlib_work_image *param);
450
451
mlib_status mlib_ImageZoom_D64_3_Nearest(mlib_work_image *param);
452
mlib_status mlib_ImageZoom_D64_3_Bilinear(mlib_work_image *param);
453
mlib_status mlib_ImageZoom_D64_3_Bicubic(mlib_work_image *param);
454
mlib_status mlib_ImageZoom_D64_3_Bicubic2(mlib_work_image *param);
455
456
mlib_status mlib_ImageZoom_D64_4_Nearest(mlib_work_image *param);
457
mlib_status mlib_ImageZoom_D64_4_Bilinear(mlib_work_image *param);
458
mlib_status mlib_ImageZoom_D64_4_Bicubic(mlib_work_image *param);
459
mlib_status mlib_ImageZoom_D64_4_Bicubic2(mlib_work_image *param);
460
461
/* Edge's */
462
void mlib_ImageZoomZeroEdge_F32(mlib_work_image *param);
463
void mlib_ImageZoomZeroEdge_D64(mlib_work_image *param);
464
465
void mlib_ImageZoomUpNearest_F32(mlib_work_image *param);
466
void mlib_ImageZoomUpNearest_D64(mlib_work_image *param);
467
468
void mlib_ImageZoomExtend_F32_Bilinear(mlib_work_image *param);
469
void mlib_ImageZoomExtend_D64_Bilinear(mlib_work_image *param);
470
471
void mlib_ImageZoomExtend_F32_Bicubic(mlib_work_image *param);
472
void mlib_ImageZoomExtend_D64_Bicubic(mlib_work_image *param);
473
474
void mlib_ImageZoomExtend_F32_Bicubic2(mlib_work_image *param);
475
void mlib_ImageZoomExtend_D64_Bicubic2(mlib_work_image *param);
476
477
/***************************************************************/
478
479
typedef mlib_status (*mlib_zoomblend_fun_type)(mlib_work_image *param, mlib_s32 alp_ind);
480
typedef mlib_status (*mlib_zoomblend_bc_type)(mlib_work_image *param,
481
const mlib_f32 *flt_table,
482
mlib_s32 alp);
483
484
mlib_status mlib_ImageZoom_U8_33_Nearest(mlib_work_image *param, mlib_s32 alp_ind);
485
mlib_status mlib_ImageZoom_U8_43_Nearest(mlib_work_image *param, mlib_s32 alp_ind);
486
mlib_status mlib_ImageZoom_U8_34_Nearest(mlib_work_image *param, mlib_s32 alp_ind);
487
mlib_status mlib_ImageZoom_U8_44_Nearest(mlib_work_image *param, mlib_s32 alp_ind);
488
489
mlib_status mlib_c_ImageZoomBilinear_U8_3to34(mlib_work_image *param);
490
mlib_status mlib_c_ImageZoomBilinear_U8_4to34(mlib_work_image *param);
491
492
mlib_status mlib_c_ImageZoomBilinear_U8_33(mlib_work_image *param, mlib_s32 alp_ind);
493
mlib_status mlib_c_ImageZoomBilinear_U8_43(mlib_work_image *param, mlib_s32 alp_ind);
494
mlib_status mlib_c_ImageZoomBilinear_U8_34(mlib_work_image *param, mlib_s32 alp_ind);
495
mlib_status mlib_c_ImageZoomBilinear_U8_44(mlib_work_image *param, mlib_s32 alp_ind);
496
497
mlib_status mlib_c_ImageZoomBicubic_U8_33(mlib_work_image *param,
498
const mlib_f32 *flt_table,
499
mlib_s32 alp);
500
mlib_status mlib_c_ImageZoomBicubic_U8_43(mlib_work_image *param,
501
const mlib_f32 *flt_table,
502
mlib_s32 alp);
503
mlib_status mlib_c_ImageZoomBicubic_U8_34(mlib_work_image *param,
504
const mlib_f32 *flt_table,
505
mlib_s32 alp);
506
mlib_status mlib_c_ImageZoomBicubic_U8_44(mlib_work_image *param,
507
const mlib_f32 *flt_table,
508
mlib_s32 alp);
509
510
/***************************************************************/
511
512
mlib_status mlib_ZoomBlendEdge(mlib_image *dst,
513
const mlib_image *src,
514
mlib_work_image *param,
515
mlib_filter filter,
516
mlib_edge edge,
517
mlib_s32 alp_ind);
518
519
mlib_status mlib_ImageZoomClipping(mlib_image *dst,
520
const mlib_image *src,
521
mlib_d64 zoomx,
522
mlib_d64 zoomy,
523
mlib_d64 tx,
524
mlib_d64 ty,
525
mlib_filter filter,
526
mlib_edge edge,
527
mlib_work_image *param);
528
529
#ifdef __cplusplus
530
}
531
#endif /* __cplusplus */
532
#endif /* __MLIB_IMAGEZOOM_H */
533
534