last update 20 Sep 2009 |
00001 /* 00002 * Copyright (C) 1998 - 2004 00003 * Lehrstuhl fuer Technische Informatik, RWTH-Aachen, Germany 00004 * 00005 * 00006 * This file is part of the Computer Vision and Robotics Library (CVR-Lib) 00007 * 00008 * The CVR-Lib is free software; you can redistribute it and/or 00009 * modify it under the terms of the BSD License. 00010 * 00011 * All rights reserved. 00012 * 00013 * Redistribution and use in source and binary forms, with or without 00014 * modification, are permitted provided that the following conditions are met: 00015 * 00016 * 1. Redistributions of source code must retain the above copyright notice, 00017 * this list of conditions and the following disclaimer. 00018 * 00019 * 2. Redistributions in binary form must reproduce the above copyright notice, 00020 * this list of conditions and the following disclaimer in the documentation 00021 * and/or other materials provided with the distribution. 00022 * 00023 * 3. Neither the name of the authors nor the names of its contributors may be 00024 * used to endorse or promote products derived from this software without 00025 * specific prior written permission. 00026 * 00027 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00028 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00029 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00030 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00031 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00032 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00033 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00034 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00035 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00036 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00037 * POSSIBILITY OF SUCH DAMAGE. 00038 */ 00039 00040 00041 00042 /** 00043 * \file cvrBoundaryType.h 00044 * Contains the enum eBoundaryType which provides global 00045 * constants for differnt boudary conditions. The appropriate 00046 * read and write functions are also defined. 00047 * \author Peter Doerfler 00048 * \date 02.04.2003 00049 * $Id: cvrBoundaryType.h,v 1.2 2007/04/18 21:13:40 alvarado Exp $ 00050 */ 00051 00052 #ifndef _CVR_BOUNDARYTYPE_H_ 00053 #define _CVR_BOUNDARYTYPE_H_ 00054 00055 #include "cvrIoHandler.h" 00056 00057 namespace cvr { 00058 00059 /** 00060 * boundary condition type. This type indicates how to 00061 * consider/interpret the boundaries of an image or matrix. 00062 * 00063 * For this type the methods read(ioHandler&, eBoundaryType&) and 00064 * write(ioHandler&, const eBoundaryType&) are implemented. Note 00065 * that template functions read(ioHandler&, const std::string&, T&) 00066 * and write(ioHandler&, const std::string&, const T&) exist. (see 00067 * Developer's Guide for further information). 00068 * 00069 * @ingroup gTypes 00070 */ 00071 enum eBoundaryType { 00072 Zero, /**< The boundary does not exist (only 0-value) */ 00073 Mirror, /**< The signal/image/vector is mirrored */ 00074 Periodic , /**< A periodic continuation of the signal is assumed */ 00075 Constant, /**< The last value of the border will be assumed */ 00076 NoBoundary /**< The boundary will be ignored. The effect is 00077 an unitialized border in those parts of the vector, 00078 matrix or image, where a complete filter kernel cannot 00079 be applied due to its size. 00080 Please note that the border will be left UNinitialized. 00081 It is up to you to set some value at this border, 00082 which will have a maximum height or width of the size 00083 of the filter kernel minus one. The reason for this 00084 option to exist is that some algorithms will ignore 00085 this border anyway and all other border types will 00086 spend some time calculating it */ 00087 }; 00088 00089 /** 00090 * read function for eBoundaryType. 00091 * 00092 * @ingroup gStorable 00093 */ 00094 bool read(ioHandler& handler,eBoundaryType& data); 00095 00096 /** 00097 * write function for eBoundaryType. 00098 * 00099 * @ingroup gStorable 00100 */ 00101 bool write(ioHandler& handler,const eBoundaryType& data); 00102 00103 00104 } 00105 #endif