Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom.h
32288 views
/*1* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425#ifndef __MLIB_IMAGEZOOM_H26#define __MLIB_IMAGEZOOM_H2728#include <mlib_types.h>29#include <mlib_image_types.h>30#include <mlib_status.h>31#include <mlib_ImageCopy.h>3233#ifdef __cplusplus34extern "C" {35#endif /* __cplusplus */3637typedef void (*mlib_pack_func)(void *, void *, mlib_s32, void *);3839/***************************************************************/40typedef struct {41mlib_s32 width, height,42srcX, srcY,43dstX, dstY;44void *sp, *dp;45} mlib_clipping;4647/***************************************************************/48typedef struct {49void *dp;50mlib_s32 w, h;51mlib_s32 dlb;52} mlib_edge_box;5354/***************************************************************/55typedef struct mlib_work_image {56mlib_clipping57*nearest, /* nearest neighbor state of image */58*current; /* current state of image*/59mlib_s3260channels, /* channels in image */61src_stride, dst_stride,62width, height, /* vertical and horizontal size src image */63DX, DY,64color;65void66*sp, *dp,67*src_end,68*buffer_dp,69*colormap;70mlib_d6471zoomx, zoomy;72mlib_d6473rzoomx, rzoomy;74mlib_d6475xstart, ystart;76mlib_s32 tshift; /* shift for size of data type */77mlib_s32 filter;78mlib_u8 *filter1, *filter3, *filter4;79mlib_s32 alpha;80mlib_edge_box edges[4];81mlib_edge_box edges_blend[4];82mlib_s32 chan_d;83mlib_s32 alp_ind;84mlib_s32 sline_size;85mlib_s32 y_max;86} mlib_work_image;8788/***************************************************************/89#define GetElemSubStruct(struct, par) (param->struct->par)90#define GetElemStruct(x) (param->x)9192/***************************************************************/93#define SetElemSubStruct(struct, par, val) (param->struct->par = val)94#define SetElemStruct(x, val) (param->x = val)9596/***************************************************************/9798#define VARIABLE_EDGE(FORMAT) \99mlib_edge_box *edges = param->edges; \100mlib_s32 i, j, ch; \101mlib_s32 channels = param->channels; \102mlib_s32 w1 = edges[0].w; \103mlib_s32 w2 = edges[1].w; \104mlib_s32 w3 = edges[2].w; \105mlib_s32 h1 = edges[0].h; \106mlib_s32 h2 = edges[1].h; \107mlib_s32 h3 = edges[3].h; \108mlib_s32 stride_dp0 = edges[0].dlb; \109mlib_s32 stride_dp1 = edges[1].dlb; \110mlib_s32 stride_dp2 = edges[2].dlb; \111mlib_s32 stride_dp3 = edges[3].dlb; \112mlib_s32 dst_stride = GetElemStruct(dst_stride); \113FORMAT *dp0 = edges[0].dp; \114FORMAT *dp1 = edges[1].dp; \115FORMAT *dp2 = edges[2].dp; \116FORMAT *dp3 = edges[3].dp117118/***************************************************************/119120#define MLIB_SHIFT 16121#define MLIB_PREC (1 << MLIB_SHIFT)122#define MLIB_MASK (MLIB_PREC - 1)123#define MLIB_SCALE (1.0 / MLIB_PREC)124#define MLIB_SIGN_SHIFT 31125126/***************************************************************/127#define MLIB_SCALE_BC_U8 (1.0 / (1 << 28))128#define MLIB_SCALE_BC_S16 (1.0 / (1 << 30))129130/***************************************************************/131typedef mlib_status (*mlib_zoom_fun_type)(mlib_work_image *param);132133typedef mlib_status (*mlib_zoom_fun2type)(mlib_work_image *param,134const mlib_f32 *flt_table);135136/***************************************************************/137mlib_status mlib_ImageZoom_BIT_1_Nearest(mlib_work_image *param,138mlib_s32 s_bitoff,139mlib_s32 d_bitoff);140141mlib_status mlib_ImageZoom_BitToGray_1_Nearest(mlib_work_image *param,142mlib_s32 s_bitoff,143const mlib_s32 *ghigh,144const mlib_s32 *glow);145146mlib_status mlib_ImageZoom_U8_1_Nearest(mlib_work_image *param);147mlib_status mlib_ImageZoom_U8_2_Nearest(mlib_work_image *param);148mlib_status mlib_ImageZoom_U8_3_Nearest(mlib_work_image *param);149mlib_status mlib_ImageZoom_U8_4_Nearest(mlib_work_image *param);150mlib_status mlib_ImageZoom_S16_1_Nearest(mlib_work_image *param);151mlib_status mlib_ImageZoom_S16_2_Nearest(mlib_work_image *param);152mlib_status mlib_ImageZoom_S16_3_Nearest(mlib_work_image *param);153mlib_status mlib_ImageZoom_S16_4_Nearest(mlib_work_image *param);154mlib_status mlib_ImageZoom_S32_1_Nearest(mlib_work_image *param);155mlib_status mlib_ImageZoom_S32_2_Nearest(mlib_work_image *param);156mlib_status mlib_ImageZoom_S32_3_Nearest(mlib_work_image *param);157mlib_status mlib_ImageZoom_S32_4_Nearest(mlib_work_image *param);158159mlib_status mlib_ImageZoom_S32_1_Bilinear(mlib_work_image *param);160mlib_status mlib_ImageZoom_S32_2_Bilinear(mlib_work_image *param);161mlib_status mlib_ImageZoom_S32_3_Bilinear(mlib_work_image *param);162mlib_status mlib_ImageZoom_S32_4_Bilinear(mlib_work_image *param);163164mlib_status mlib_ImageZoom_S32_1_1_Bilinear(mlib_work_image *param);165mlib_status mlib_ImageZoom_S32_2_1_Bilinear(mlib_work_image *param);166mlib_status mlib_ImageZoom_S32_3_1_Bilinear(mlib_work_image *param);167mlib_status mlib_ImageZoom_S32_4_1_Bilinear(mlib_work_image *param);168169mlib_status mlib_ImageZoom_S32_1_Bicubic(mlib_work_image *param);170mlib_status mlib_ImageZoom_S32_2_Bicubic(mlib_work_image *param);171mlib_status mlib_ImageZoom_S32_3_Bicubic(mlib_work_image *param);172mlib_status mlib_ImageZoom_S32_4_Bicubic(mlib_work_image *param);173174/***************************************************************/175#define FUNC_PROT(NAME) \176mlib_status NAME##_1(mlib_work_image *param); \177mlib_status NAME##_2(mlib_work_image *param); \178mlib_status NAME##_3(mlib_work_image *param); \179mlib_status NAME##_4(mlib_work_image *param); \180mlib_status NAME##_1s(mlib_work_image *param); \181mlib_status NAME##_2s(mlib_work_image *param); \182mlib_status NAME##_3s(mlib_work_image *param); \183mlib_status NAME##_4s(mlib_work_image *param)184185/***************************************************************/186#define FUNC_PROT_WO_S_FUNC(NAME) \187mlib_status NAME##_1(mlib_work_image *param); \188mlib_status NAME##_2(mlib_work_image *param); \189mlib_status NAME##_3(mlib_work_image *param); \190mlib_status NAME##_4(mlib_work_image *param)191192/***************************************************************/193#define FUNC_PROT_BC(NAME) \194mlib_status NAME##_1(mlib_work_image *param, const mlib_f32 *flt_table); \195mlib_status NAME##_2(mlib_work_image *param, const mlib_f32 *flt_table); \196mlib_status NAME##_3(mlib_work_image *param, const mlib_f32 *flt_table); \197mlib_status NAME##_4(mlib_work_image *param, const mlib_f32 *flt_table); \198mlib_status NAME##_1s(mlib_work_image *param, const mlib_f32 *flt_table); \199mlib_status NAME##_2s(mlib_work_image *param, const mlib_f32 *flt_table); \200mlib_status NAME##_3s(mlib_work_image *param, const mlib_f32 *flt_table); \201mlib_status NAME##_4s(mlib_work_image *param, const mlib_f32 *flt_table)202203FUNC_PROT(mlib_c_ImageZoomBilinear_U8);204FUNC_PROT(mlib_c_ImageZoomBilinear_S16);205FUNC_PROT(mlib_c_ImageZoomBilinear_U16);206207FUNC_PROT_BC(mlib_c_ImageZoomBicubic_U8);208FUNC_PROT_BC(mlib_c_ImageZoomBicubic_S16);209FUNC_PROT_BC(mlib_c_ImageZoomBicubic_U16);210211FUNC_PROT(mlib_v_ImageZoomBilinear_U8);212FUNC_PROT(mlib_v_ImageZoomBilinear_S16);213FUNC_PROT(mlib_v_ImageZoomBilinear_U16);214215FUNC_PROT(mlib_v_ImageZoomBicubic_U8);216FUNC_PROT(mlib_v_ImageZoomBicubic_S16);217FUNC_PROT(mlib_v_ImageZoomBicubic_U16);218219FUNC_PROT(mlib_ImageZoomBilinear_S32);220FUNC_PROT(mlib_ImageZoomBicubic_S32);221222FUNC_PROT(mlib_ImageZoomBilinear_F32);223FUNC_PROT_WO_S_FUNC(mlib_ImageZoomBicubic_F32);224225FUNC_PROT(mlib_ImageZoomBilinear_D64);226FUNC_PROT_WO_S_FUNC(mlib_ImageZoomBicubic_D64);227228/***************************************************************/229/* Index image part */230mlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bilinear(mlib_work_image *param);231mlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bilinear(mlib_work_image *param);232mlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bilinear(mlib_work_image *param);233mlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bilinear(mlib_work_image *param);234235mlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bilinear(mlib_work_image *param);236mlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bilinear(mlib_work_image *param);237mlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bilinear(mlib_work_image *param);238mlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bilinear(mlib_work_image *param);239240mlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bicubic(mlib_work_image *param);241mlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bicubic(mlib_work_image *param);242mlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bicubic(mlib_work_image *param);243mlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bicubic(mlib_work_image *param);244245mlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bicubic(mlib_work_image *param);246mlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bicubic(mlib_work_image *param);247mlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bicubic(mlib_work_image *param);248mlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bicubic(mlib_work_image *param);249250mlib_status mlib_c_ImageZoomIndex_U8_U8_3_Bicubic2(mlib_work_image *param);251mlib_status mlib_c_ImageZoomIndex_U8_S16_3_Bicubic2(mlib_work_image *param);252mlib_status mlib_c_ImageZoomIndex_S16_U8_3_Bicubic2(mlib_work_image *param);253mlib_status mlib_c_ImageZoomIndex_S16_S16_3_Bicubic2(mlib_work_image *param);254255mlib_status mlib_c_ImageZoomIndex_U8_U8_4_Bicubic2(mlib_work_image *param);256mlib_status mlib_c_ImageZoomIndex_U8_S16_4_Bicubic2(mlib_work_image *param);257mlib_status mlib_c_ImageZoomIndex_S16_U8_4_Bicubic2(mlib_work_image *param);258mlib_status mlib_c_ImageZoomIndex_S16_S16_4_Bicubic2(mlib_work_image *param);259260mlib_status mlib_v_ImageZoomIndex_U8_U8_Bilinear(mlib_work_image *param);261mlib_status mlib_v_ImageZoomIndex_U8_S16_Bilinear(mlib_work_image *param);262mlib_status mlib_v_ImageZoomIndex_S16_U8_Bilinear(mlib_work_image *param);263mlib_status mlib_v_ImageZoomIndex_S16_S16_Bilinear(mlib_work_image *param);264265mlib_status mlib_v_ImageZoomIndex_U8_U8_Bicubic(mlib_work_image *param);266mlib_status mlib_v_ImageZoomIndex_U8_S16_Bicubic(mlib_work_image *param);267mlib_status mlib_v_ImageZoomIndex_S16_U8_Bicubic(mlib_work_image *param);268mlib_status mlib_v_ImageZoomIndex_S16_S16_Bicubic(mlib_work_image *param);269270/***************************************************************/271/* Define function and rules for computing edges */272#define MLIB_EDGE_RULES \273switch(edge) { \274\275case MLIB_EDGE_DST_FILL_ZERO: \276\277switch(mlib_ImageGetType(src)) { \278case MLIB_BYTE: \279mlib_ImageZoomZeroEdge_U8(param); \280break; \281\282case MLIB_SHORT: \283case MLIB_USHORT: \284mlib_ImageZoomZeroEdge_S16(param); \285break; \286\287case MLIB_INT: \288mlib_ImageZoomZeroEdge_S32(param); \289break; \290} \291break; \292\293case MLIB_EDGE_OP_NEAREST: \294\295switch(mlib_ImageGetType(src)) { \296case MLIB_BYTE: \297mlib_ImageZoomUpNearest_U8(param); \298break; \299\300case MLIB_SHORT: \301case MLIB_USHORT: \302mlib_ImageZoomUpNearest_S16(param); \303break; \304\305case MLIB_INT: \306mlib_ImageZoomUpNearest_S32(param); \307break; \308} \309break; \310\311case MLIB_EDGE_SRC_EXTEND: \312\313switch(mlib_ImageGetType(src)) { \314case MLIB_BYTE: \315\316switch(filter) { \317case MLIB_BILINEAR: \318mlib_ImageZoomExtend_U8_Bilinear(param); \319break; \320\321case MLIB_BICUBIC: \322mlib_ImageZoomExtend_U8_Bicubic(param); \323break; \324\325case MLIB_BICUBIC2: \326mlib_ImageZoomExtend_U8_Bicubic2(param); \327break; \328} \329break; \330\331case MLIB_SHORT: \332switch(filter) { \333case MLIB_BILINEAR: \334mlib_ImageZoomExtend_S16_Bilinear(param); \335break; \336\337case MLIB_BICUBIC: \338mlib_ImageZoomExtend_S16_Bicubic(param); \339break; \340\341case MLIB_BICUBIC2: \342mlib_ImageZoomExtend_S16_Bicubic2(param); \343break; \344} \345break; \346\347case MLIB_USHORT: \348switch(filter) { \349case MLIB_BILINEAR: \350mlib_ImageZoomExtend_U16_Bilinear(param); \351break; \352\353case MLIB_BICUBIC: \354mlib_ImageZoomExtend_U16_Bicubic(param); \355break; \356\357case MLIB_BICUBIC2: \358mlib_ImageZoomExtend_U16_Bicubic2(param); \359break; \360} \361break; \362\363case MLIB_INT: \364switch(filter) { \365case MLIB_BILINEAR: \366mlib_ImageZoomExtend_S32_Bilinear(param); \367break; \368\369case MLIB_BICUBIC: \370mlib_ImageZoomExtend_S32_Bicubic(param); \371break; \372\373case MLIB_BICUBIC2: \374mlib_ImageZoomExtend_S32_Bicubic2(param); \375break; \376} \377break; \378} \379break; \380\381default: \382return MLIB_SUCCESS; \383}384385/***************************************************************/386387void mlib_ImageZoomZeroEdge_U8(mlib_work_image *param);388void mlib_ImageZoomZeroEdge_S16(mlib_work_image *param);389void mlib_ImageZoomZeroEdge_S32(mlib_work_image *param);390391void mlib_ImageZoomUpNearest_U8(mlib_work_image *param);392void mlib_ImageZoomUpNearest_S16(mlib_work_image *param);393void mlib_ImageZoomUpNearest_S32(mlib_work_image *param);394395void mlib_ImageZoomExtend_U8_Bilinear(mlib_work_image *param);396void mlib_ImageZoomExtend_S16_Bilinear(mlib_work_image *param);397void mlib_ImageZoomExtend_U16_Bilinear(mlib_work_image *param);398void mlib_ImageZoomExtend_S32_Bilinear(mlib_work_image *param);399400void mlib_ImageZoomExtend_U8_Bicubic(mlib_work_image *param);401void mlib_ImageZoomExtend_S16_Bicubic(mlib_work_image *param);402void mlib_ImageZoomExtend_U16_Bicubic(mlib_work_image *param);403void mlib_ImageZoomExtend_S32_Bicubic(mlib_work_image *param);404405void mlib_ImageZoomExtend_U8_Bicubic2(mlib_work_image *param);406void mlib_ImageZoomExtend_S16_Bicubic2(mlib_work_image *param);407void mlib_ImageZoomExtend_U16_Bicubic2(mlib_work_image *param);408void mlib_ImageZoomExtend_S32_Bicubic2(mlib_work_image *param);409410void mlib_ImageZoomIndexExtend_U8_Bilinear(mlib_work_image *param);411void mlib_ImageZoomIndexExtend_S16_Bilinear(mlib_work_image *param);412413void mlib_ImageZoomIndexExtend_U8_Bicubic(mlib_work_image *param);414void mlib_ImageZoomIndexExtend_S16_Bicubic(mlib_work_image *param);415void mlib_ImageZoomIndexExtend_U8_Bicubic2(mlib_work_image *param);416void mlib_ImageZoomIndexExtend_S16_Bicubic2(mlib_work_image *param);417418/* Float image part */419mlib_status mlib_ImageZoom_F32_1_Nearest(mlib_work_image *param);420mlib_status mlib_ImageZoom_F32_1_Bilinear(mlib_work_image *param);421mlib_status mlib_ImageZoom_F32_1_Bicubic(mlib_work_image *param);422mlib_status mlib_ImageZoom_F32_1_Bicubic2(mlib_work_image *param);423424mlib_status mlib_ImageZoom_F32_2_Nearest(mlib_work_image *param);425mlib_status mlib_ImageZoom_F32_2_Bilinear(mlib_work_image *param);426mlib_status mlib_ImageZoom_F32_2_Bicubic(mlib_work_image *param);427mlib_status mlib_ImageZoom_F32_2_Bicubic2(mlib_work_image *param);428429mlib_status mlib_ImageZoom_F32_3_Nearest(mlib_work_image *param);430mlib_status mlib_ImageZoom_F32_3_Bilinear(mlib_work_image *param);431mlib_status mlib_ImageZoom_F32_3_Bicubic(mlib_work_image *param);432mlib_status mlib_ImageZoom_F32_3_Bicubic2(mlib_work_image *param);433434mlib_status mlib_ImageZoom_F32_4_Nearest(mlib_work_image *param);435mlib_status mlib_ImageZoom_F32_4_Bilinear(mlib_work_image *param);436mlib_status mlib_ImageZoom_F32_4_Bicubic(mlib_work_image *param);437mlib_status mlib_ImageZoom_F32_4_Bicubic2(mlib_work_image *param);438439/* Double image part*/440mlib_status mlib_ImageZoom_D64_1_Nearest(mlib_work_image *param);441mlib_status mlib_ImageZoom_D64_1_Bilinear(mlib_work_image *param);442mlib_status mlib_ImageZoom_D64_1_Bicubic(mlib_work_image *param);443mlib_status mlib_ImageZoom_D64_1_Bicubic2(mlib_work_image *param);444445mlib_status mlib_ImageZoom_D64_2_Nearest(mlib_work_image *param);446mlib_status mlib_ImageZoom_D64_2_Bilinear(mlib_work_image *param);447mlib_status mlib_ImageZoom_D64_2_Bicubic(mlib_work_image *param);448mlib_status mlib_ImageZoom_D64_2_Bicubic2(mlib_work_image *param);449450mlib_status mlib_ImageZoom_D64_3_Nearest(mlib_work_image *param);451mlib_status mlib_ImageZoom_D64_3_Bilinear(mlib_work_image *param);452mlib_status mlib_ImageZoom_D64_3_Bicubic(mlib_work_image *param);453mlib_status mlib_ImageZoom_D64_3_Bicubic2(mlib_work_image *param);454455mlib_status mlib_ImageZoom_D64_4_Nearest(mlib_work_image *param);456mlib_status mlib_ImageZoom_D64_4_Bilinear(mlib_work_image *param);457mlib_status mlib_ImageZoom_D64_4_Bicubic(mlib_work_image *param);458mlib_status mlib_ImageZoom_D64_4_Bicubic2(mlib_work_image *param);459460/* Edge's */461void mlib_ImageZoomZeroEdge_F32(mlib_work_image *param);462void mlib_ImageZoomZeroEdge_D64(mlib_work_image *param);463464void mlib_ImageZoomUpNearest_F32(mlib_work_image *param);465void mlib_ImageZoomUpNearest_D64(mlib_work_image *param);466467void mlib_ImageZoomExtend_F32_Bilinear(mlib_work_image *param);468void mlib_ImageZoomExtend_D64_Bilinear(mlib_work_image *param);469470void mlib_ImageZoomExtend_F32_Bicubic(mlib_work_image *param);471void mlib_ImageZoomExtend_D64_Bicubic(mlib_work_image *param);472473void mlib_ImageZoomExtend_F32_Bicubic2(mlib_work_image *param);474void mlib_ImageZoomExtend_D64_Bicubic2(mlib_work_image *param);475476/***************************************************************/477478typedef mlib_status (*mlib_zoomblend_fun_type)(mlib_work_image *param, mlib_s32 alp_ind);479typedef mlib_status (*mlib_zoomblend_bc_type)(mlib_work_image *param,480const mlib_f32 *flt_table,481mlib_s32 alp);482483mlib_status mlib_ImageZoom_U8_33_Nearest(mlib_work_image *param, mlib_s32 alp_ind);484mlib_status mlib_ImageZoom_U8_43_Nearest(mlib_work_image *param, mlib_s32 alp_ind);485mlib_status mlib_ImageZoom_U8_34_Nearest(mlib_work_image *param, mlib_s32 alp_ind);486mlib_status mlib_ImageZoom_U8_44_Nearest(mlib_work_image *param, mlib_s32 alp_ind);487488mlib_status mlib_c_ImageZoomBilinear_U8_3to34(mlib_work_image *param);489mlib_status mlib_c_ImageZoomBilinear_U8_4to34(mlib_work_image *param);490491mlib_status mlib_c_ImageZoomBilinear_U8_33(mlib_work_image *param, mlib_s32 alp_ind);492mlib_status mlib_c_ImageZoomBilinear_U8_43(mlib_work_image *param, mlib_s32 alp_ind);493mlib_status mlib_c_ImageZoomBilinear_U8_34(mlib_work_image *param, mlib_s32 alp_ind);494mlib_status mlib_c_ImageZoomBilinear_U8_44(mlib_work_image *param, mlib_s32 alp_ind);495496mlib_status mlib_c_ImageZoomBicubic_U8_33(mlib_work_image *param,497const mlib_f32 *flt_table,498mlib_s32 alp);499mlib_status mlib_c_ImageZoomBicubic_U8_43(mlib_work_image *param,500const mlib_f32 *flt_table,501mlib_s32 alp);502mlib_status mlib_c_ImageZoomBicubic_U8_34(mlib_work_image *param,503const mlib_f32 *flt_table,504mlib_s32 alp);505mlib_status mlib_c_ImageZoomBicubic_U8_44(mlib_work_image *param,506const mlib_f32 *flt_table,507mlib_s32 alp);508509/***************************************************************/510511mlib_status mlib_ZoomBlendEdge(mlib_image *dst,512const mlib_image *src,513mlib_work_image *param,514mlib_filter filter,515mlib_edge edge,516mlib_s32 alp_ind);517518mlib_status mlib_ImageZoomClipping(mlib_image *dst,519const mlib_image *src,520mlib_d64 zoomx,521mlib_d64 zoomy,522mlib_d64 tx,523mlib_d64 ty,524mlib_filter filter,525mlib_edge edge,526mlib_work_image *param);527528#ifdef __cplusplus529}530#endif /* __cplusplus */531#endif /* __MLIB_IMAGEZOOM_H */532533534