71 lines
2.5 KiB
C++
71 lines
2.5 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#include "pch.h"
|
|
#include "KeyGraphFeaturesInfo.h"
|
|
#include "../../CalcViewModel/GraphingCalculatorEnums.h"
|
|
|
|
using namespace Platform;
|
|
using namespace Platform::Collections;
|
|
using namespace std;
|
|
using namespace Windows::Foundation::Collections;
|
|
using namespace Windows::UI;
|
|
using namespace Windows::UI::ViewManagement;
|
|
using namespace Windows::UI::Xaml;
|
|
using namespace Windows::UI::Xaml::Media;
|
|
using namespace GraphControl;
|
|
using namespace Graphing;
|
|
|
|
IObservableVector<String ^> ^ KeyGraphFeaturesInfo::ConvertWStringVector(vector<wstring> inVector)
|
|
{
|
|
auto outVector = ref new Vector<String ^>();
|
|
|
|
for (const auto& v : inVector)
|
|
{
|
|
outVector->Append(ref new String(v.c_str()));
|
|
}
|
|
|
|
return outVector;
|
|
}
|
|
|
|
IObservableMap<String ^, String ^> ^ KeyGraphFeaturesInfo::ConvertWStringIntMap(map<wstring, int> inMap)
|
|
{
|
|
Map<String ^, String ^> ^ outMap = ref new Map<String ^, String ^>();
|
|
;
|
|
for (const auto& m : inMap)
|
|
{
|
|
outMap->Insert(ref new String(m.first.c_str()), m.second.ToString());
|
|
}
|
|
|
|
return outMap;
|
|
}
|
|
|
|
KeyGraphFeaturesInfo ^ KeyGraphFeaturesInfo::Create(IGraphFunctionAnalysisData data)
|
|
{
|
|
auto res = ref new KeyGraphFeaturesInfo();
|
|
res->XIntercept = ref new String(data.Zeros.c_str());
|
|
res->YIntercept = ref new String(data.YIntercept.c_str());
|
|
res->Domain = ref new String(data.Domain.c_str());
|
|
res->Range = ref new String(data.Range.c_str());
|
|
res->Parity = data.Parity;
|
|
res->PeriodicityDirection = data.PeriodicityDirection;
|
|
res->PeriodicityExpression = ref new String(data.PeriodicityExpression.c_str());
|
|
res->Minima = ConvertWStringVector(data.Minima);
|
|
res->Maxima = ConvertWStringVector(data.Maxima);
|
|
res->InflectionPoints = ConvertWStringVector(data.InflectionPoints);
|
|
res->Monotonicity = ConvertWStringIntMap(data.MonotoneIntervals);
|
|
res->VerticalAsymptotes = ConvertWStringVector(data.VerticalAsymptotes);
|
|
res->HorizontalAsymptotes = ConvertWStringVector(data.HorizontalAsymptotes);
|
|
res->ObliqueAsymptotes = ConvertWStringVector(data.ObliqueAsymptotes);
|
|
res->TooComplexFeatures = data.TooComplexFeatures;
|
|
res->AnalysisError = CalculatorApp::AnalysisErrorType::NoError;
|
|
return res;
|
|
}
|
|
|
|
KeyGraphFeaturesInfo ^ KeyGraphFeaturesInfo::Create(CalculatorApp::AnalysisErrorType type)
|
|
{
|
|
auto res = ref new KeyGraphFeaturesInfo();
|
|
res->AnalysisError = type;
|
|
return res;
|
|
}
|