00001 /* 00002 * The information in this file is 00003 * Copyright(c) 2007 Ball Aerospace & Technologies Corporation 00004 * and is subject to the terms and conditions of the 00005 * GNU Lesser General Public License Version 2.1 00006 * The license text is available from 00007 * http://www.gnu.org/licenses/lgpl.html 00008 */ 00009 00010 00011 00012 #ifndef ANNOTATIONLAYER_H 00013 #define ANNOTATIONLAYER_H 00014 00015 #include "GraphicLayer.h" 00016 #include "LocationType.h" 00017 00018 #include <list> 00019 #include <string> 00020 00021 /** 00022 * Adjusts the properties of an Annotation layer. 00023 * 00024 * This subclass of Subject will notify upon the following conditions: 00025 * - Everything else documented in GraphicLayer. 00026 * 00027 * @see Layer 00028 */ 00029 class AnnotationLayer : public GraphicLayer 00030 { 00031 public: 00032 /** 00033 * Correct the coordinate for whatever snapping may be required. 00034 * 00035 * AnnotationLayer will snap to gridlines if the user has selected this 00036 * option in the GUI. 00037 * 00038 * @param coord 00039 * Coordinate to correct. 00040 * 00041 * @return The corrected coordinate. 00042 */ 00043 virtual LocationType correctCoordinate(const LocationType &coord) const = 0; 00044 00045 protected: 00046 /** 00047 * This should be destroyed by calling SpatialDataView::deleteLayer. 00048 */ 00049 virtual ~AnnotationLayer() {} 00050 }; 00051 00052 #endif