jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine.h
author bae
Fri, 25 Mar 2011 12:50:59 +0300
changeset 8939 04615dca2a76
parent 5506 202f599c92aa
child 12047 320a714614e9
permissions -rw-r--r--
6989717: media native code compiler warnings Reviewed-by: jgodinez, prr
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     2
 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    23
 * questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
#ifndef __MLIB_IMAGEAFFINE_H
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
#define __MLIB_IMAGEAFFINE_H
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
#include "mlib_image.h"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
#include "mlib_ImageDivTables.h"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
#include "mlib_ImageFilters.h"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
#ifdef __cplusplus
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
extern "C" {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
#endif /* __cplusplus */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
 * DESCRIPTION
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
 *   Internal macro for mlib_ImageAffine.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
 *   DTYPE define must be set to data type of image.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
 *   FTYPE define must be set to type of floating-point operations.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
typedef struct {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
  mlib_image *src;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
  mlib_image *dst;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
  mlib_u8  *buff_malloc;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
  mlib_u8  **lineAddr;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
  mlib_u8  *dstData;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
  mlib_s32 *leftEdges;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
  mlib_s32 *rightEdges;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
  mlib_s32 *xStarts;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
  mlib_s32 *yStarts;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
  mlib_s32 yStart;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
  mlib_s32 yFinish;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
  mlib_s32 dX;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
  mlib_s32 dY;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
  mlib_s32 max_xsize;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
  mlib_s32 srcYStride;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
  mlib_s32 dstYStride;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
  mlib_s32 *warp_tbl;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
  mlib_filter filter;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
} mlib_affine_param;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
#define LOAD_PARAM(param, x)  x = param->x
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
#define STORE_PARAM(param, x) param->x=x
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
mlib_status mlib_AffineEdges(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
                             const mlib_image  *dst,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
                             const mlib_image  *src,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
                             void              *buff_lcl,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
                             mlib_s32          buff_size,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
                             mlib_s32          kw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
                             mlib_s32          kh,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
                             mlib_s32          kw1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
                             mlib_s32          kh1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
                             mlib_edge         edge,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
                             const mlib_d64    *mtx,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
                             mlib_s32          shiftx,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
                             mlib_s32          shifty);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
typedef mlib_status (*type_affine_fun)(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
void mlib_ImageAffine_bit_1ch_nn(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
                                 mlib_s32          s_bitoff,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
                                 mlib_s32          d_bitoff);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
mlib_status mlib_ImageAffine_u8_1ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
mlib_status mlib_ImageAffine_u8_2ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
mlib_status mlib_ImageAffine_u8_3ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
mlib_status mlib_ImageAffine_u8_4ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
mlib_status mlib_ImageAffine_s16_1ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
mlib_status mlib_ImageAffine_s16_2ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
mlib_status mlib_ImageAffine_s16_3ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
mlib_status mlib_ImageAffine_s16_4ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
mlib_status mlib_ImageAffine_s32_1ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
mlib_status mlib_ImageAffine_s32_2ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
mlib_status mlib_ImageAffine_s32_3ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   107
mlib_status mlib_ImageAffine_s32_4ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
mlib_status mlib_ImageAffine_d64_1ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
mlib_status mlib_ImageAffine_d64_2ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
mlib_status mlib_ImageAffine_d64_3ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
mlib_status mlib_ImageAffine_d64_4ch_nn(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
mlib_status mlib_ImageAffine_u8_1ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
mlib_status mlib_ImageAffine_u8_2ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
mlib_status mlib_ImageAffine_u8_3ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
mlib_status mlib_ImageAffine_u8_4ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
mlib_status mlib_ImageAffine_s16_1ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
mlib_status mlib_ImageAffine_s16_2ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
mlib_status mlib_ImageAffine_s16_3ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
mlib_status mlib_ImageAffine_s16_4ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
mlib_status mlib_ImageAffine_u16_1ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
mlib_status mlib_ImageAffine_u16_2ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
mlib_status mlib_ImageAffine_u16_3ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
mlib_status mlib_ImageAffine_u16_4ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
mlib_status mlib_ImageAffine_s32_1ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
mlib_status mlib_ImageAffine_s32_2ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
mlib_status mlib_ImageAffine_s32_3ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
mlib_status mlib_ImageAffine_s32_4ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
mlib_status mlib_ImageAffine_f32_1ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
mlib_status mlib_ImageAffine_f32_2ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
mlib_status mlib_ImageAffine_f32_3ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
mlib_status mlib_ImageAffine_f32_4ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
mlib_status mlib_ImageAffine_d64_1ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
mlib_status mlib_ImageAffine_d64_2ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
mlib_status mlib_ImageAffine_d64_3ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
mlib_status mlib_ImageAffine_d64_4ch_bl(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
mlib_status mlib_ImageAffine_u8_1ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
mlib_status mlib_ImageAffine_u8_2ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
mlib_status mlib_ImageAffine_u8_3ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
mlib_status mlib_ImageAffine_u8_4ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
mlib_status mlib_ImageAffine_s16_1ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
mlib_status mlib_ImageAffine_s16_2ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
mlib_status mlib_ImageAffine_s16_3ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
mlib_status mlib_ImageAffine_s16_4ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
mlib_status mlib_ImageAffine_u16_1ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
mlib_status mlib_ImageAffine_u16_2ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
mlib_status mlib_ImageAffine_u16_3ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
mlib_status mlib_ImageAffine_u16_4ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
mlib_status mlib_ImageAffine_s32_1ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
mlib_status mlib_ImageAffine_s32_2ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
mlib_status mlib_ImageAffine_s32_3ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
mlib_status mlib_ImageAffine_s32_4ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
mlib_status mlib_ImageAffine_f32_1ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
mlib_status mlib_ImageAffine_f32_2ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
mlib_status mlib_ImageAffine_f32_3ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
mlib_status mlib_ImageAffine_f32_4ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
mlib_status mlib_ImageAffine_d64_1ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
mlib_status mlib_ImageAffine_d64_2ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
mlib_status mlib_ImageAffine_d64_3ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
mlib_status mlib_ImageAffine_d64_4ch_bc(mlib_affine_param *param);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
void mlib_ImageAffineEdgeZero(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
                              mlib_affine_param *param_e,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
                              const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
void mlib_ImageAffineEdgeNearest(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
                                 mlib_affine_param *param_e);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
mlib_status mlib_ImageAffineEdgeExtend_BL(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
                                          mlib_affine_param *param_e,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
                                          const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
mlib_status mlib_ImageAffineEdgeExtend_BC(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
                                          mlib_affine_param *param_e,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
                                          const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
mlib_status mlib_ImageAffineEdgeExtend_BC2(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
                                           mlib_affine_param *param_e,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
                                           const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
typedef mlib_status (*type_affine_i_fun)(mlib_affine_param *param, const void *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
mlib_status mlib_ImageAffine_u8_u8_i_bl(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
                                        const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
mlib_status mlib_ImageAffine_u8_s16_i_bl(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
                                         const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
mlib_status mlib_ImageAffine_s16_u8_i_bl(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
                                         const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
mlib_status mlib_ImageAffine_s16_s16_i_bl(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
                                          const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
mlib_status mlib_ImageAffine_u8_u8_i_bc(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
                                        const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
mlib_status mlib_ImageAffine_u8_s16_i_bc(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
                                         const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
mlib_status mlib_ImageAffine_s16_u8_i_bc(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
                                         const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   201
mlib_status mlib_ImageAffine_s16_s16_i_bc(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   202
                                          const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   203
90ce3da70b43 Initial load
duke
parents:
diff changeset
   204
void mlib_ImageAffineEdgeZeroIndex(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   205
                                   mlib_affine_param *param_e,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   206
                                   const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   207
90ce3da70b43 Initial load
duke
parents:
diff changeset
   208
void mlib_ImageAffineEdgeExtendIndex_BL(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   209
                                        mlib_affine_param *param_e,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   210
                                        const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
90ce3da70b43 Initial load
duke
parents:
diff changeset
   212
void mlib_ImageAffineEdgeExtendIndex_BC(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   213
                                        mlib_affine_param *param_e,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
                                        const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
void mlib_ImageAffineEdgeExtendIndex_BC2(mlib_affine_param *param,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
                                         mlib_affine_param *param_e,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
                                         const void        *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
#define PROT_AFFINEINDEX_BC(ITYPE, LTYPE, NCHAN)                                                 \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
  mlib_status mlib_ImageAffineIndex_##ITYPE##_##LTYPE##_##NCHAN##CH_BC(mlib_affine_param *param, \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
                                                                       const void        *colormap)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
PROT_AFFINEINDEX_BC(U8, U8, 3);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
PROT_AFFINEINDEX_BC(U8, S16, 3);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
PROT_AFFINEINDEX_BC(U8, U8, 4);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
PROT_AFFINEINDEX_BC(U8, S16, 4);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
PROT_AFFINEINDEX_BC(S16, U8, 3);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   230
PROT_AFFINEINDEX_BC(S16, S16, 3);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
PROT_AFFINEINDEX_BC(S16, U8, 4);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
PROT_AFFINEINDEX_BC(S16, S16, 4);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
#define PROT_AFFINEINDEX_BL(ITYPE, LTYPE, NCHAN)                                                 \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
  mlib_status mlib_ImageAffineIndex_##ITYPE##_##LTYPE##_##NCHAN##CH_BL(mlib_affine_param *param, \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
                                                                       const void        *colormap)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
PROT_AFFINEINDEX_BL(U8, U8, 3);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
PROT_AFFINEINDEX_BL(U8, S16, 3);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
PROT_AFFINEINDEX_BL(U8, U8, 4);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
PROT_AFFINEINDEX_BL(U8, S16, 4);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
PROT_AFFINEINDEX_BL(S16, U8, 3);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
PROT_AFFINEINDEX_BL(S16, S16, 3);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
PROT_AFFINEINDEX_BL(S16, U8, 4);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
PROT_AFFINEINDEX_BL(S16, S16, 4);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
mlib_status mlib_ImageAffine_alltypes(mlib_image       *dst,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
                                      const mlib_image *src,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
                                      const mlib_d64   *mtx,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
                                      mlib_filter      filter,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
                                      mlib_edge        edge,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
                                      const void       *colormap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
extern const type_affine_i_fun mlib_AffineFunArr_bl_i[];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   258
extern const type_affine_fun mlib_AffineFunArr_nn[];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
extern const type_affine_fun mlib_AffineFunArr_bl[];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
extern const type_affine_fun mlib_AffineFunArr_bc[];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
90ce3da70b43 Initial load
duke
parents:
diff changeset
   262
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
typedef union {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
  mlib_d64 d64;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
  struct {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
    mlib_f32 f0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
    mlib_f32 f1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
  } f32s;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
} d64_2x32;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
#define MLIB_SHIFT  16
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
#define MLIB_PREC   (1 << MLIB_SHIFT)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
#define MLIB_MASK   (MLIB_PREC - 1)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
#define ONE  (FTYPE)1.0
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
#ifdef MLIB_USE_FTOI_CLAMPING
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
90ce3da70b43 Initial load
duke
parents:
diff changeset
   282
#define SAT_32(DST, SRC)                                              \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
  DST = (mlib_s32) SRC
90ce3da70b43 Initial load
duke
parents:
diff changeset
   284
90ce3da70b43 Initial load
duke
parents:
diff changeset
   285
#else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   286
90ce3da70b43 Initial load
duke
parents:
diff changeset
   287
#define SAT_32(DST, SRC)                                              \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   288
  if (SRC >= MLIB_S32_MAX)                                     \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
    SRC = MLIB_S32_MAX;                                        \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
  if (SRC <= MLIB_S32_MIN)                                     \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   291
    SRC = MLIB_S32_MIN;                                        \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   292
    DST = (mlib_s32) SRC
90ce3da70b43 Initial load
duke
parents:
diff changeset
   293
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
#endif /* MLIB_USE_FTOI_CLAMPING */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
90ce3da70b43 Initial load
duke
parents:
diff changeset
   296
//we still need this for mlib_ImageAffine_BC_S32.c
90ce3da70b43 Initial load
duke
parents:
diff changeset
   297
#define SAT32(DST) SAT_32(DST, val0)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   298
90ce3da70b43 Initial load
duke
parents:
diff changeset
   299
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   300
#ifdef MLIB_OS64BIT
90ce3da70b43 Initial load
duke
parents:
diff changeset
   301
#define PBITS  3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   302
#define MLIB_POINTER_SHIFT(P)  (((P) >> (MLIB_SHIFT - 3)) &~ 7)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   303
#define MLIB_POINTER_GET(A, P) (*(DTYPE**)((mlib_u8*)(A) + (P)))
90ce3da70b43 Initial load
duke
parents:
diff changeset
   304
#else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   305
#define PBITS  2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   306
#define MLIB_POINTER_SHIFT(P)  (((P) >> (MLIB_SHIFT - 2)) &~ 3)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   307
#define MLIB_POINTER_GET(A, P) (*(DTYPE**)((mlib_addr)(A) + (P)))
90ce3da70b43 Initial load
duke
parents:
diff changeset
   308
#endif /* MLIB_OS64BIT */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   309
90ce3da70b43 Initial load
duke
parents:
diff changeset
   310
#define PTR_SHIFT MLIB_POINTER_SHIFT
90ce3da70b43 Initial load
duke
parents:
diff changeset
   311
90ce3da70b43 Initial load
duke
parents:
diff changeset
   312
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   313
#define SHIFT(X, SH, LO_BITS)                                   \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   314
  (((X) >> (SH - LO_BITS)) & ((1 << (15 + LO_BITS)) - (1 << LO_BITS)))
90ce3da70b43 Initial load
duke
parents:
diff changeset
   315
90ce3da70b43 Initial load
duke
parents:
diff changeset
   316
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   317
#define S_PTRl(Y, SH)                                           \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   318
  (*(DTYPE**)((mlib_u8*)lineAddr + SHIFT(Y, SH, PBITS)))
90ce3da70b43 Initial load
duke
parents:
diff changeset
   319
90ce3da70b43 Initial load
duke
parents:
diff changeset
   320
#define S_PTR(Y) S_PTRl(Y, 16)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   321
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
#define AL_ADDR(sp, ind) (mlib_d64*)((mlib_addr)(sp + ind) &~ 7)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   324
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   326
#define FILTER_ELEM_BITS  3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
90ce3da70b43 Initial load
duke
parents:
diff changeset
   328
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   329
#define FILTER_SHIFT (MLIB_SHIFT - FILTER_BITS - FILTER_ELEM_BITS)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
#define FILTER_SIZE  (1 << FILTER_BITS)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
#define FILTER_MASK  ((FILTER_SIZE - 1) << FILTER_ELEM_BITS)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
90ce3da70b43 Initial load
duke
parents:
diff changeset
   333
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   334
#define DECLAREVAR0()                                           \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   335
  mlib_s32  *leftEdges  = param -> leftEdges;                   \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
  mlib_s32  *rightEdges = param -> rightEdges;                  \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   337
  mlib_s32  *xStarts    = param -> xStarts;                     \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   338
  mlib_s32  *yStarts    = param -> yStarts;                     \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
  mlib_u8   *dstData    = param -> dstData;                     \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   340
  mlib_u8   **lineAddr  = param -> lineAddr;                    \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   341
  mlib_s32  dstYStride  = param -> dstYStride;                  \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   342
  mlib_s32  xLeft, xRight, X, Y;                                \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   343
  mlib_s32  yStart  = param -> yStart;                          \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   344
  mlib_s32  yFinish = param -> yFinish;                         \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   345
  mlib_s32  dX = param -> dX;                                   \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   346
  mlib_s32  dY = param -> dY;                                   \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   347
  mlib_s32  j
90ce3da70b43 Initial load
duke
parents:
diff changeset
   348
90ce3da70b43 Initial load
duke
parents:
diff changeset
   349
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   350
#define DECLAREVAR()                                            \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   351
  DECLAREVAR0();                                                \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   352
  mlib_s32 *warp_tbl   = param -> warp_tbl;                     \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   353
  DTYPE    *dstPixelPtr
90ce3da70b43 Initial load
duke
parents:
diff changeset
   354
90ce3da70b43 Initial load
duke
parents:
diff changeset
   355
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   356
#define DECLAREVAR_NN()                                         \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   357
  DECLAREVAR();                                                 \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   358
  DTYPE    *srcPixelPtr;                                        \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   359
  mlib_s32 xSrc, ySrc
90ce3da70b43 Initial load
duke
parents:
diff changeset
   360
90ce3da70b43 Initial load
duke
parents:
diff changeset
   361
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   362
#define DECLAREVAR_BL()                                         \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   363
  DECLAREVAR_NN();                                              \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   364
  mlib_s32 srcYStride = param -> srcYStride
90ce3da70b43 Initial load
duke
parents:
diff changeset
   365
90ce3da70b43 Initial load
duke
parents:
diff changeset
   366
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   367
#define DECLAREVAR_BC()                                         \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   368
  DECLAREVAR_BL();                                              \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   369
  mlib_filter filter = param -> filter
90ce3da70b43 Initial load
duke
parents:
diff changeset
   370
90ce3da70b43 Initial load
duke
parents:
diff changeset
   371
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   372
#define PREPARE_DELTAS                                          \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   373
  if (warp_tbl != NULL) {                                       \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   374
    dX = warp_tbl[2*j];                                         \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   375
    dY = warp_tbl[2*j + 1];                                     \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   376
  }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   377
90ce3da70b43 Initial load
duke
parents:
diff changeset
   378
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   379
#define CLIP(N)                                                 \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   380
  dstData += dstYStride;                                        \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   381
  xLeft  = leftEdges[j];                                        \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   382
  xRight = rightEdges[j];                                       \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   383
  X = xStarts[j];                                               \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   384
  Y = yStarts[j];                                               \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   385
  PREPARE_DELTAS;                                               \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   386
  if (xLeft > xRight) continue;                                 \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   387
  dstPixelPtr = (DTYPE*)dstData + N * xLeft
90ce3da70b43 Initial load
duke
parents:
diff changeset
   388
90ce3da70b43 Initial load
duke
parents:
diff changeset
   389
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   390
#define NEW_LINE(NCHAN)                                         \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   391
  dstData += dstYStride;                                        \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   392
  xLeft  = leftEdges[j];                                        \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   393
  xRight = rightEdges[j];                                       \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   394
  X = xStarts[j];                                               \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   395
  Y = yStarts[j];                                               \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   396
  PREPARE_DELTAS                                                \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   397
  dl = (void*)((DTYPE*)dstData + NCHAN*xLeft);                  \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   398
  size = xRight - xLeft + 1;                                    \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   399
  if (size <= 0) continue
90ce3da70b43 Initial load
duke
parents:
diff changeset
   400
90ce3da70b43 Initial load
duke
parents:
diff changeset
   401
/***************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   402
90ce3da70b43 Initial load
duke
parents:
diff changeset
   403
#ifdef __cplusplus
90ce3da70b43 Initial load
duke
parents:
diff changeset
   404
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   405
#endif /* __cplusplus */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   406
#endif /* __MLIB_IMAGEAFFINE_H */