00001
00007 #ifndef _UnivariateConstrainedLayer_h
00008 #define _UnivariateConstrainedLayer_h
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "PointControl.h"
00019 #include "UnivariateConstraintsLayer.h"
00020 #include "UnivariateFunctionLayer.h"
00021 #include "UnivariateResultLayer.h"
00022
00023
00024
00025
00026
00027 class UnivariateConstrainedLayer
00028 : public UnivariateResultLayer
00029 {
00030 public:
00031
00032
00035 UnivariateConstrainedLayer(
00036 const PlotControl& plotControl,
00037 const Result& result,
00038 CountedPtr<PlotLayer> cpFunctionLayer,
00039 std::auto_ptr<UnivariateConstraintsLayer> apConstraintsLayer,
00040 std::auto_ptr<UnivariateFunctionLayer> apPenaltyLayer);
00041
00044 UnivariateConstrainedLayer(const UnivariateConstrainedLayer& from);
00045
00048 ~UnivariateConstrainedLayer(void);
00049
00050
00051
00052
00053 virtual void Draw(wxDC& dc) const;
00054
00055 virtual vector<ToolbarTool> CreateTools(PlotControl* pPlotControl);
00056
00059 static std::auto_ptr<ResultLayer> Create(
00060 const PlotControl& plotControl,
00061 const Result& result,
00062 CountedPtr<PlotLayer> cpFunctionLayer);
00063
00064
00065
00066 virtual Region IterationBoundingBox(unsigned iterationNumber) const;
00067
00068
00069
00070 protected:
00071 private:
00072
00073 void DrawIteration(wxDC& dc,
00074 unsigned iterationNumber,
00075 bool highlight) const;
00076
00077
00078
00079 CountedPtr<UnivariateConstraintsLayer> mcpConstraintsLayer;
00080 CountedPtr<UnivariateFunctionLayer> mcpPenaltyLayer;
00081
00082 const static void* mRegistrationDummy;
00083 };
00084
00085
00086
00087
00088
00089
00090
00091 #endif // _UnivariateConstrainedLayer_h