0N/A/*
2362N/A * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/A#ifndef __MLIB_IMAGEZOOM_H
0N/A#define __MLIB_IMAGEZOOM_H
0N/A
0N/A#include <mlib_types.h>
0N/A#include <mlib_image_types.h>
0N/A#include <mlib_status.h>
0N/A#include <mlib_ImageCopy.h>
0N/A
0N/A#ifdef __cplusplus
0N/Aextern "C" {
0N/A#endif /* __cplusplus */
0N/A
0N/Atypedef void (*mlib_pack_func)(void *, void *, mlib_s32, void *);
0N/A
0N/A/***************************************************************/
0N/Atypedef struct {
0N/A mlib_s32 width, height,
0N/A srcX, srcY,
0N/A dstX, dstY;
0N/A void *sp, *dp;
0N/A} mlib_clipping;
0N/A
0N/A/***************************************************************/
0N/Atypedef struct {
0N/A void *dp;
0N/A mlib_s32 w, h;
0N/A mlib_s32 dlb;
0N/A} mlib_edge_box;
0N/A
0N/A/***************************************************************/
0N/Atypedef struct mlib_work_image {
0N/A mlib_clipping
0N/A *nearest, /* nearest neighbor state of image */
0N/A *current; /* current state of image*/
0N/A mlib_s32
0N/A channels, /* channels in image */
0N/A src_stride, dst_stride,
0N/A width, height, /* vertical and horizontal size src image */
0N/A DX, DY,
0N/A color;
0N/A void
0N/A *sp, *dp,
0N/A *src_end,
0N/A *buffer_dp,
0N/A *colormap;
0N/A mlib_d64
0N/A zoomx, zoomy;
0N/A mlib_d64
0N/A rzoomx, rzoomy;
0N/A mlib_d64
0N/A xstart, ystart;
0N/A mlib_s32 tshift; /* shift for size of data type */
0N/A mlib_s32 filter;
0N/A mlib_u8 *filter1, *filter3, *filter4;
0N/A mlib_s32 alpha;
0N/A mlib_edge_box edges[4];
0N/A mlib_edge_box edges_blend[4];
0N/A mlib_s32 chan_d;
0N/A mlib_s32 alp_ind;
0N/A mlib_s32 sline_size;
0N/A mlib_s32 y_max;
0N/A} mlib_work_image;
0N/A
0N/A/***************************************************************/
0N/A#define GetElemSubStruct(struct, par) (param->struct->par)
0N/A#define GetElemStruct(x) (param->x)
0N/A
0N/A/***************************************************************/
0N/A#define SetElemSubStruct(struct, par, val) (param->struct->par = val)
0N/A#define SetElemStruct(x, val) (param->x = val)
0N/A
0N/A/***************************************************************/
0N/A
0N/A#define VARIABLE_EDGE(FORMAT) \
0N/A mlib_edge_box *edges = param->edges; \
0N/A mlib_s32 i, j, ch; \
0N/A mlib_s32 channels = param->channels; \
0N/A mlib_s32 w1 = edges[0].w; \
0N/A mlib_s32 w2 = edges[1].w; \
0N/A mlib_s32 w3 = edges[2].w; \
0N/A mlib_s32 h1 = edges[0].h; \
0N/A mlib_s32 h2 = edges[1].h; \
0N/A mlib_s32 h3 = edges[3].h; \
0N/A mlib_s32 stride_dp0 = edges[0].dlb; \
0N/A mlib_s32 stride_dp1 = edges[1].dlb; \
0N/A mlib_s32 stride_dp2 = edges[2].dlb; \
0N/A mlib_s32 stride_dp3 = edges[3].dlb; \
0N/A mlib_s32 dst_stride = GetElemStruct(dst_stride); \
0N/A FORMAT *dp0 = edges[0].dp; \
0N/A FORMAT *dp1 = edges[1].dp; \
0N/A FORMAT *dp2 = edges[2].dp; \
0N/A FORMAT *dp3 = edges[3].dp
0N/A
0N/A/***************************************************************/
0N/A
0N/A#define MLIB_SHIFT 16
0N/A#define MLIB_PREC (1 << MLIB_SHIFT)
0N/A#define MLIB_MASK (MLIB_PREC - 1)
0N/A#define MLIB_SCALE (1.0 / MLIB_PREC)
0N/A#define MLIB_SIGN_SHIFT 31
0N/A
0N/A/***************************************************************/
0N/A#define MLIB_SCALE_BC_U8 (1.0 / (1 << 28))
0N/A#define MLIB_SCALE_BC_S16 (1.0 / (1 << 30))
0N/A
0N/A/***************************************************************/
0N/Atypedef mlib_status (*mlib_zoom_fun_type)(mlib_work_image *param);
0N/A
0N/Atypedef mlib_status (*mlib_zoom_fun2type)(mlib_work_image *param,
0N/A const mlib_f32 *flt_table);
0N/A
0N/A/***************************************************************/
0N/Amlib_status mlib_ImageZoom_BIT_1_Nearest(mlib_work_image *param,
0N/A mlib_s32 s_bitoff,
0N/A mlib_s32 d_bitoff);
0N/A
0N/Amlib_status mlib_ImageZoom_BitToGray_1_Nearest(mlib_work_image *param,
0N/A mlib_s32 s_bitoff,
0N/A const mlib_s32 *ghigh,
0N/A const mlib_s32 *glow);
0N/A
0N/Amlib_status mlib_ImageZoom_U8_1_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_U8_2_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_U8_3_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_U8_4_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S16_1_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S16_2_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S16_3_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S16_4_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_1_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_2_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_3_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_4_Nearest(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_S32_1_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_2_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_3_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_4_Bilinear(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_S32_1_1_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_2_1_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_3_1_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_4_1_Bilinear(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_S32_1_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_2_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_3_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_S32_4_Bicubic(mlib_work_image *param);
0N/A
0N/A/***************************************************************/
0N/A#define FUNC_PROT(NAME) \
0N/A mlib_status NAME##_1(mlib_work_image *param); \
0N/A mlib_status NAME##_2(mlib_work_image *param); \
0N/A mlib_status NAME##_3(mlib_work_image *param); \
0N/A mlib_status NAME##_4(mlib_work_image *param); \
0N/A mlib_status NAME##_1s(mlib_work_image *param); \
0N/A mlib_status NAME##_2s(mlib_work_image *param); \
0N/A mlib_status NAME##_3s(mlib_work_image *param); \
0N/A mlib_status NAME##_4s(mlib_work_image *param)
0N/A
0N/A/***************************************************************/
0N/A#define FUNC_PROT_WO_S_FUNC(NAME) \
0N/A mlib_status NAME##_1(mlib_work_image *param); \
0N/A mlib_status NAME##_2(mlib_work_image *param); \
0N/A mlib_status NAME##_3(mlib_work_image *param); \
0N/A mlib_status NAME##_4(mlib_work_image *param)
0N/A
0N/A/***************************************************************/
0N/A#define FUNC_PROT_BC(NAME) \
0N/A mlib_status NAME##_1(mlib_work_image *param, const mlib_f32 *flt_table); \
0N/A mlib_status NAME##_2(mlib_work_image *param, const mlib_f32 *flt_table); \
0N/A mlib_status NAME##_3(mlib_work_image *param, const mlib_f32 *flt_table); \
0N/A mlib_status NAME##_4(mlib_work_image *param, const mlib_f32 *flt_table); \
0N/A mlib_status NAME##_1s(mlib_work_image *param, const mlib_f32 *flt_table); \
0N/A mlib_status NAME##_2s(mlib_work_image *param, const mlib_f32 *flt_table); \
0N/A mlib_status NAME##_3s(mlib_work_image *param, const mlib_f32 *flt_table); \
0N/A mlib_status NAME##_4s(mlib_work_image *param, const mlib_f32 *flt_table)
0N/A
0N/AFUNC_PROT(mlib_c_ImageZoomBilinear_U8);
0N/AFUNC_PROT(mlib_c_ImageZoomBilinear_S16);
0N/AFUNC_PROT(mlib_c_ImageZoomBilinear_U16);
0N/A
0N/AFUNC_PROT_BC(mlib_c_ImageZoomBicubic_U8);
0N/AFUNC_PROT_BC(mlib_c_ImageZoomBicubic_S16);
0N/AFUNC_PROT_BC(mlib_c_ImageZoomBicubic_U16);
0N/A
0N/AFUNC_PROT(mlib_v_ImageZoomBilinear_U8);
0N/AFUNC_PROT(mlib_v_ImageZoomBilinear_S16);
0N/AFUNC_PROT(mlib_v_ImageZoomBilinear_U16);
0N/A
0N/AFUNC_PROT(mlib_v_ImageZoomBicubic_U8);
0N/AFUNC_PROT(mlib_v_ImageZoomBicubic_S16);
0N/AFUNC_PROT(mlib_v_ImageZoomBicubic_U16);
0N/A
0N/AFUNC_PROT(mlib_ImageZoomBilinear_S32);
0N/AFUNC_PROT(mlib_ImageZoomBicubic_S32);
0N/A
0N/AFUNC_PROT(mlib_ImageZoomBilinear_F32);
0N/AFUNC_PROT_WO_S_FUNC(mlib_ImageZoomBicubic_F32);
0N/A
0N/AFUNC_PROT(mlib_ImageZoomBilinear_D64);
0N/AFUNC_PROT_WO_S_FUNC(mlib_ImageZoomBicubic_D64);
0N/A
0N/A/***************************************************************/
0N/A/* Index image part */
0N/Amlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bilinear(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bilinear(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bicubic(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bicubic(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bicubic2(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bicubic2(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bicubic2(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bicubic2(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bicubic2(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bicubic2(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bicubic2(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bicubic2(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_v_ImageZoomIndex_U8_U8_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_v_ImageZoomIndex_U8_S16_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_v_ImageZoomIndex_S16_U8_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_v_ImageZoomIndex_S16_S16_Bilinear(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_v_ImageZoomIndex_U8_U8_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_v_ImageZoomIndex_U8_S16_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_v_ImageZoomIndex_S16_U8_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_v_ImageZoomIndex_S16_S16_Bicubic(mlib_work_image *param);
0N/A
0N/A/***************************************************************/
0N/A/* Define function and rules for computing edges */
0N/A#define MLIB_EDGE_RULES \
0N/A switch(edge) { \
0N/A \
0N/A case MLIB_EDGE_DST_FILL_ZERO: \
0N/A \
0N/A switch(mlib_ImageGetType(src)) { \
0N/A case MLIB_BYTE: \
0N/A mlib_ImageZoomZeroEdge_U8(param); \
0N/A break; \
0N/A \
0N/A case MLIB_SHORT: \
0N/A case MLIB_USHORT: \
0N/A mlib_ImageZoomZeroEdge_S16(param); \
0N/A break; \
0N/A \
0N/A case MLIB_INT: \
0N/A mlib_ImageZoomZeroEdge_S32(param); \
0N/A break; \
0N/A } \
0N/A break; \
0N/A \
0N/A case MLIB_EDGE_OP_NEAREST: \
0N/A \
0N/A switch(mlib_ImageGetType(src)) { \
0N/A case MLIB_BYTE: \
0N/A mlib_ImageZoomUpNearest_U8(param); \
0N/A break; \
0N/A \
0N/A case MLIB_SHORT: \
0N/A case MLIB_USHORT: \
0N/A mlib_ImageZoomUpNearest_S16(param); \
0N/A break; \
0N/A \
0N/A case MLIB_INT: \
0N/A mlib_ImageZoomUpNearest_S32(param); \
0N/A break; \
0N/A } \
0N/A break; \
0N/A \
0N/A case MLIB_EDGE_SRC_EXTEND: \
0N/A \
0N/A switch(mlib_ImageGetType(src)) { \
0N/A case MLIB_BYTE: \
0N/A \
0N/A switch(filter) { \
0N/A case MLIB_BILINEAR: \
0N/A mlib_ImageZoomExtend_U8_Bilinear(param); \
0N/A break; \
0N/A \
0N/A case MLIB_BICUBIC: \
0N/A mlib_ImageZoomExtend_U8_Bicubic(param); \
0N/A break; \
0N/A \
0N/A case MLIB_BICUBIC2: \
0N/A mlib_ImageZoomExtend_U8_Bicubic2(param); \
0N/A break; \
0N/A } \
0N/A break; \
0N/A \
0N/A case MLIB_SHORT: \
0N/A switch(filter) { \
0N/A case MLIB_BILINEAR: \
0N/A mlib_ImageZoomExtend_S16_Bilinear(param); \
0N/A break; \
0N/A \
0N/A case MLIB_BICUBIC: \
0N/A mlib_ImageZoomExtend_S16_Bicubic(param); \
0N/A break; \
0N/A \
0N/A case MLIB_BICUBIC2: \
0N/A mlib_ImageZoomExtend_S16_Bicubic2(param); \
0N/A break; \
0N/A } \
0N/A break; \
0N/A \
0N/A case MLIB_USHORT: \
0N/A switch(filter) { \
0N/A case MLIB_BILINEAR: \
0N/A mlib_ImageZoomExtend_U16_Bilinear(param); \
0N/A break; \
0N/A \
0N/A case MLIB_BICUBIC: \
0N/A mlib_ImageZoomExtend_U16_Bicubic(param); \
0N/A break; \
0N/A \
0N/A case MLIB_BICUBIC2: \
0N/A mlib_ImageZoomExtend_U16_Bicubic2(param); \
0N/A break; \
0N/A } \
0N/A break; \
0N/A \
0N/A case MLIB_INT: \
0N/A switch(filter) { \
0N/A case MLIB_BILINEAR: \
0N/A mlib_ImageZoomExtend_S32_Bilinear(param); \
0N/A break; \
0N/A \
0N/A case MLIB_BICUBIC: \
0N/A mlib_ImageZoomExtend_S32_Bicubic(param); \
0N/A break; \
0N/A \
0N/A case MLIB_BICUBIC2: \
0N/A mlib_ImageZoomExtend_S32_Bicubic2(param); \
0N/A break; \
0N/A } \
0N/A break; \
0N/A } \
0N/A break; \
0N/A \
0N/A default: \
0N/A return MLIB_SUCCESS; \
0N/A }
0N/A
0N/A/***************************************************************/
0N/A
0N/Avoid mlib_ImageZoomZeroEdge_U8(mlib_work_image *param);
0N/Avoid mlib_ImageZoomZeroEdge_S16(mlib_work_image *param);
0N/Avoid mlib_ImageZoomZeroEdge_S32(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomUpNearest_U8(mlib_work_image *param);
0N/Avoid mlib_ImageZoomUpNearest_S16(mlib_work_image *param);
0N/Avoid mlib_ImageZoomUpNearest_S32(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomExtend_U8_Bilinear(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_S16_Bilinear(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_U16_Bilinear(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_S32_Bilinear(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomExtend_U8_Bicubic(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_S16_Bicubic(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_U16_Bicubic(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_S32_Bicubic(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomExtend_U8_Bicubic2(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_S16_Bicubic2(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_U16_Bicubic2(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_S32_Bicubic2(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomIndexExtend_U8_Bilinear(mlib_work_image *param);
0N/Avoid mlib_ImageZoomIndexExtend_S16_Bilinear(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomIndexExtend_U8_Bicubic(mlib_work_image *param);
0N/Avoid mlib_ImageZoomIndexExtend_S16_Bicubic(mlib_work_image *param);
0N/Avoid mlib_ImageZoomIndexExtend_U8_Bicubic2(mlib_work_image *param);
0N/Avoid mlib_ImageZoomIndexExtend_S16_Bicubic2(mlib_work_image *param);
0N/A
0N/A/* Float image part */
0N/Amlib_status mlib_ImageZoom_F32_1_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_1_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_1_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_1_Bicubic2(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_F32_2_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_2_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_2_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_2_Bicubic2(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_F32_3_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_3_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_3_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_3_Bicubic2(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_F32_4_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_4_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_4_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_F32_4_Bicubic2(mlib_work_image *param);
0N/A
0N/A/* Double image part*/
0N/Amlib_status mlib_ImageZoom_D64_1_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_1_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_1_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_1_Bicubic2(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_D64_2_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_2_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_2_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_2_Bicubic2(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_D64_3_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_3_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_3_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_3_Bicubic2(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_ImageZoom_D64_4_Nearest(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_4_Bilinear(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_4_Bicubic(mlib_work_image *param);
0N/Amlib_status mlib_ImageZoom_D64_4_Bicubic2(mlib_work_image *param);
0N/A
0N/A/* Edge's */
0N/Avoid mlib_ImageZoomZeroEdge_F32(mlib_work_image *param);
0N/Avoid mlib_ImageZoomZeroEdge_D64(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomUpNearest_F32(mlib_work_image *param);
0N/Avoid mlib_ImageZoomUpNearest_D64(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomExtend_F32_Bilinear(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_D64_Bilinear(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomExtend_F32_Bicubic(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_D64_Bicubic(mlib_work_image *param);
0N/A
0N/Avoid mlib_ImageZoomExtend_F32_Bicubic2(mlib_work_image *param);
0N/Avoid mlib_ImageZoomExtend_D64_Bicubic2(mlib_work_image *param);
0N/A
0N/A/***************************************************************/
0N/A
0N/Atypedef mlib_status (*mlib_zoomblend_fun_type)(mlib_work_image *param, mlib_s32 alp_ind);
0N/Atypedef mlib_status (*mlib_zoomblend_bc_type)(mlib_work_image *param,
0N/A const mlib_f32 *flt_table,
0N/A mlib_s32 alp);
0N/A
0N/Amlib_status mlib_ImageZoom_U8_33_Nearest(mlib_work_image *param, mlib_s32 alp_ind);
0N/Amlib_status mlib_ImageZoom_U8_43_Nearest(mlib_work_image *param, mlib_s32 alp_ind);
0N/Amlib_status mlib_ImageZoom_U8_34_Nearest(mlib_work_image *param, mlib_s32 alp_ind);
0N/Amlib_status mlib_ImageZoom_U8_44_Nearest(mlib_work_image *param, mlib_s32 alp_ind);
0N/A
0N/Amlib_status mlib_c_ImageZoomBilinear_U8_3to34(mlib_work_image *param);
0N/Amlib_status mlib_c_ImageZoomBilinear_U8_4to34(mlib_work_image *param);
0N/A
0N/Amlib_status mlib_c_ImageZoomBilinear_U8_33(mlib_work_image *param, mlib_s32 alp_ind);
0N/Amlib_status mlib_c_ImageZoomBilinear_U8_43(mlib_work_image *param, mlib_s32 alp_ind);
0N/Amlib_status mlib_c_ImageZoomBilinear_U8_34(mlib_work_image *param, mlib_s32 alp_ind);
0N/Amlib_status mlib_c_ImageZoomBilinear_U8_44(mlib_work_image *param, mlib_s32 alp_ind);
0N/A
0N/Amlib_status mlib_c_ImageZoomBicubic_U8_33(mlib_work_image *param,
0N/A const mlib_f32 *flt_table,
0N/A mlib_s32 alp);
0N/Amlib_status mlib_c_ImageZoomBicubic_U8_43(mlib_work_image *param,
0N/A const mlib_f32 *flt_table,
0N/A mlib_s32 alp);
0N/Amlib_status mlib_c_ImageZoomBicubic_U8_34(mlib_work_image *param,
0N/A const mlib_f32 *flt_table,
0N/A mlib_s32 alp);
0N/Amlib_status mlib_c_ImageZoomBicubic_U8_44(mlib_work_image *param,
0N/A const mlib_f32 *flt_table,
0N/A mlib_s32 alp);
0N/A
0N/A/***************************************************************/
0N/A
0N/Amlib_status mlib_ZoomBlendEdge(mlib_image *dst,
0N/A const mlib_image *src,
0N/A mlib_work_image *param,
0N/A mlib_filter filter,
0N/A mlib_edge edge,
0N/A mlib_s32 alp_ind);
0N/A
0N/Amlib_status mlib_ImageZoomClipping(mlib_image *dst,
0N/A const mlib_image *src,
0N/A mlib_d64 zoomx,
0N/A mlib_d64 zoomy,
0N/A mlib_d64 tx,
0N/A mlib_d64 ty,
0N/A mlib_filter filter,
0N/A mlib_edge edge,
0N/A mlib_work_image *param);
0N/A
0N/A#ifdef __cplusplus
0N/A}
0N/A#endif /* __cplusplus */
0N/A#endif /* __MLIB_IMAGEZOOM_H */