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 GCPLAYER_H 00013 #define GCPLAYER_H 00014 00015 #include "ColorType.h" 00016 #include "Layer.h" 00017 #include "ConfigurationSettings.h" 00018 #include "TypesFile.h" 00019 00020 /** 00021 * Adjusts the properties of a GCP layer. 00022 * 00023 * A GCP layer consists of markers identifying locations in a scene that are used as 00024 * ground control points. The marker has three properties: color, symbol, and symbol 00025 * size. The size of the marker represents the number of pixels in diameter that the 00026 * marker covers. This class provides the means to set the properties for the current 00027 * GCP layer and also the default properties for new GCP layers. 00028 * 00029 * This subclass of Subject will notify upon the following conditions: 00030 * - The following methods are called: setColor(), setSymbol(), 00031 * setSymbolSize(). 00032 * - Everything else documented in Layer. 00033 * 00034 * @see Layer 00035 */ 00036 class GcpLayer : public Layer 00037 { 00038 public: 00039 SETTING(MarkerColor, GcpLayer, ColorType, ColorType()) 00040 SETTING(MarkerSize, GcpLayer, unsigned int, 0) 00041 SETTING(MarkerSymbol, GcpLayer, GcpSymbol, GCP_X) 00042 00043 /** 00044 * Emitted with any<ColorType> when a member element is externally deleted. 00045 */ 00046 SIGNAL_METHOD(GcpLayer, ColorChanged) 00047 /** 00048 * Emitted with any<SymbolType> when a member element is externally deleted. 00049 */ 00050 SIGNAL_METHOD(GcpLayer, SymbolChanged) 00051 /** 00052 * Emitted with any<int> when a member element is externally deleted. 00053 */ 00054 SIGNAL_METHOD(GcpLayer, SizeChanged) 00055 00056 /** 00057 * Sets the marker color for the current GCP layer. 00058 * 00059 * @param colorType 00060 * The new marker color. 00061 * 00062 * @notify This method will notify signalColorChanged with any<ColorType>. 00063 * 00064 * @see getColor() 00065 */ 00066 virtual void setColor(const ColorType& colorType) = 0; 00067 00068 /** 00069 * Returns the marker color of the current GCP layer. 00070 * 00071 * @return The current marker color. 00072 * 00073 * @see setColor() 00074 */ 00075 virtual ColorType getColor() const = 0; 00076 00077 /** 00078 * Sets the marker symbol for the current GCP layer. 00079 * 00080 * @param eSymbol 00081 * The new marker symbol. 00082 * 00083 * @notify This method will notify signalSymbolChanged with any<SymbolType>. 00084 * 00085 * @see getSymbol() 00086 */ 00087 virtual void setSymbol(const GcpSymbol& eSymbol) = 0; 00088 00089 /** 00090 * Returns the marker symbol of the current GCP layer. 00091 * 00092 * @return The current marker symbol. 00093 * 00094 * @see setSymbol() 00095 */ 00096 virtual GcpSymbol getSymbol() const = 0; 00097 00098 /** 00099 * Sets the marker symbol size for the current GCP layer. 00100 * 00101 * @param iSize 00102 * The new marker symbol size. 00103 * 00104 * @notify This method will notify signalSizeChanged with any<int>. 00105 * 00106 * @see getSymbolSize() 00107 */ 00108 virtual void setSymbolSize(int iSize) = 0; 00109 00110 /** 00111 * Returns the marker symbol size of the current GCP layer. 00112 * 00113 * @return The current marker symbol size. 00114 * 00115 * @see setSymbolSize() 00116 */ 00117 virtual int getSymbolSize() const = 0; 00118 00119 protected: 00120 /** 00121 * This should be destroyed by calling SpatialDataView::deleteLayer. 00122 */ 00123 virtual ~GcpLayer() {} 00124 }; 00125 00126 #endif