1 /**********
2 *
3 * Copyright (c) 2003, Division of Imaging Science and Biomedical Engineering,
4 * University of Manchester, UK. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without modification,
7 * are permitted provided that the following conditions are met:
8 *
9 * . Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 *
12 * . Redistributions in binary form must reproduce the above copyright notice,
13 * this list of conditions and the following disclaimer in the documentation
14 * and/or other materials provided with the distribution.
15 *
16 * . Neither the name of the University of Manchester nor the names of its
17 * contributors may be used to endorse or promote products derived from this
18 * software without specific prior written permission.
19 *
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 *
33 **********
34 *
35 * Program : TINA
36 * File : $Source: /home/tina/cvs/tina-libs/tina/image/imgPrc_zeropad.c,v $
37 * Date : $Date: 2003/09/22 16:09:02 $
38 * Version : $Revision: 1.4 $
39 * CVS Id : $Id: imgPrc_zeropad.c,v 1.4 2003/09/22 16:09:02 tony Exp $
40 *
41 * Author : Legacy TINA
42 *
43 */
44
45 /**
46 * @file
47 * @brief Create a larger image, padded with zeros.
48 *
49 * SC's loop macro gone mad!
50 */
51
52 #include "imgPrc_zeropad.h"
53
54 #if HAVE_CONFIG_H
55 #include <config.h>
56 #endif
57
58 #include <math.h>
59 #include <tina/sys/sysDef.h>
60 #include <tina/sys/sysPro.h>
61 #include <tina/math/mathDef.h>
62 #include <tina/math/mathPro.h>
63 #include <tina/image/img_GenDef.h>
64 #include <tina/image/img_GenPro.h>
65
66
67 #define FOR_IM(_roi,_row,_col) for ((_row)=(_roi)->ly; (_row)<(_roi)->uy; (_row)++) \
68 for ((_col)=(_roi)->lx; (_col)<(_roi)->ux; (_col)++)
69
70
71 Imrect *im_zeropad(Imrect * im, int auto_pad_depth)
72 {
73 Imrect *new_im = NULL; /* new image store */
74 Imregion roi; /* new image roi */
75 int row, col; /* loop variables */
76
77 /* create the new and larger image */
78
79 roi = *(im->region);
80 roi.lx -= auto_pad_depth;
81 roi.ly -= auto_pad_depth;
82 roi.ux += auto_pad_depth;
83 roi.uy += auto_pad_depth;
84
85 new_im = im_alloc(im->height, im->width, &roi, im->vtype);
86
87 switch (im->vtype)
88 {
89 case uchar_v:
90 FOR_IM(im->region, row, col) IM_UCHAR(new_im, row, col) = IM_UCHAR(im, row, col);
91 break;
92 case short_v:
93 FOR_IM(im->region, row, col) IM_SHORT(new_im, row, col) = IM_SHORT(im, row, col);
94 break;
95 case int_v:
96 FOR_IM(im->region, row, col) IM_INT(new_im, row, col) = IM_INT(im, row, col);
97 break;
98 case float_v:
99 FOR_IM(im->region, row, col) IM_FLOAT(new_im, row, col) = IM_FLOAT(im, row, col);
100 break;
101 default:
102 error("im_zeropad: unsupported type", non_fatal);
103 break;
104 }
105 im_free(im);
106 return (new_im);
107 }
108
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.