1 /*
2  * Copyright (c) 1996, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 /*
27  * This file contains macro definitions for the Scaling category of
28  * the macros used by the generic scaleloop function.
29  *
30  * This implementation performs no input resampling whatsoever and
31  * is only valid if the input data is delivered at the exact same
32  * resolution as the output data is being generated.  At the same
33  * time, this implementation of the Scaling macros is the most optimal
34  * such implementation.
35  */
36 
37 #define DeclareScaleVars                                        \
38     int dstX, dstY, dstX2, dstY2;
39 
40 #define SRCX    dstX
41 #define SRCY    dstY
42 #define DSTX    dstX
43 #define DSTY    dstY
44 #define DSTX1   srcOX
45 #define DSTY1   srcOY
46 #define DSTX2   dstX2
47 #define DSTY2   dstY2
48 
49 #define InitScale(pixels, srcOff, srcScan,                              \
50                   srcOX, srcOY, srcW, srcH,                             \
51                   srcTW, srcTH, dstTW, dstTH)                           \
52     do {                                                                \
53         dstX2 = srcOX + srcW;                                           \
54         dstY2 = srcOY + srcH;                                           \
55         SetInputRow(pixels, srcOff, srcScan, srcOY, srcOY);             \
56     } while (0)
57 
58 #define RowLoop(srcOY)                                                  \
59     for (dstY = srcOY; dstY < dstY2; dstY++)
60 
61 #define RowSetup(srcTH, dstTH, srcTW, dstTW,                            \
62                  srcOY, pixels, srcOff, srcScan)                        \
63         do {} while (0)
64 
65 #define ColLoop(srcOX)                                                  \
66         for (dstX = srcOX; dstX < dstX2; dstX++)
67 
68 #define ColSetup(srcTW, dstTW, pixel)                                   \
69             pixel = GetPixelInc()
70 
71 #define RowEnd(srcTH, dstTH, srcW, srcScan)                             \
72         InputPixelInc(srcScan - srcW)
73