public CG_PointData RemoveFields(List <string> notFoundFields) { int newCount = Fields.Count - notFoundFields.Count; CG_PointData modified = new CG_PointData(Array.CreateInstance(typeof(object), newCount, PointCount), new List <string>(), Type); int counter = 0; string field; bool[] contains = new bool[Fields.Count]; for (int h = 0; h < Fields.Count; h++) { field = Fields[h]; contains[h] = notFoundFields.Contains(field); if (!contains[h]) { modified.Fields.Add(field); } } for (int i = 0; i < PointCount; i++) { counter = 0; for (int j = 0; j < Fields.Count; j++) { if (!contains[j]) { modified.InternalValues.SetValue(InternalValues.GetValue(j, i), counter, i); counter++; } } } return(modified); }
public CG_PointData PutValue(double Value, List <string> inFields, bool ExceptGivenFields) { CG_PointData modified = new CG_PointData(Array.CreateInstance(typeof(object), Fields.Count, PointCount), new List <string>(), Type); for (int i = 0; i < Fields.Count; i++) { modified.Fields.Add(Fields[i]); if (inFields != null && inFields.Count > 0) { if (inFields.Contains(Fields[i]) == !ExceptGivenFields) { for (int j = 0; j < PointCount; j++) { modified.InternalValues.SetValue(Value, i, j); } } else { for (int j = 0; j < PointCount; j++) { modified.InternalValues.SetValue(InternalValues.GetValue(i, j), i, j); } } } else { for (int j = 0; j < PointCount; j++) { modified.InternalValues.SetValue(Value, i, j); } } } return(modified); }
public CG_PointData LevelValues(double inValue, double Tolerance) { CG_PointData modified = new CG_PointData(Array.CreateInstance(typeof(object), Fields.Count, PointCount), new List <string>(), Type); bool changed = false; for (int i = 0; i < Fields.Count; i++) { modified.Fields.Add(Fields[i]); for (int j = 0; j < PointCount; j++) { if (TypesHelper.DoubleIsFuzzyEqual((double)InternalValues.GetValue(i, j), inValue, Tolerance)) { modified.InternalValues.SetValue(0.0, i, j); changed = true; } else { modified.InternalValues.SetValue((double)InternalValues.GetValue(i, j), i, j); } } } return(changed ? modified : this); }
public void SetObjectData(string AccessName, string Name, CG_PointData pointData) { foreach (CG_GeometryData geo in GeometriesData) { if (geo.Geometry.Name == Name) { geo.Data.Clear(); geo.Data.Add(pointData); break; } } }
public void Update(CG_PointData curData) { int index; for (int i = 0; i < Fields.Count; i++) { index = curData.Fields.IndexOf(Fields[i]); if (index != -1) { for (int j = 0; j < PointCount; j++) { InternalValues.SetValue(curData.InternalValues.GetValue(index, j), i, j); } } } }
public bool isFieldsCompatible(CG_PointData inData) { if (Fields.Count == inData.Fields.Count) { foreach (string field in inData.Fields) { if (!Fields.Contains(field)) { return(false); } } return(true); } return(false); }
public CG_PointData FilterFields(List <string> deformers) { CG_PointData modified = new CG_PointData(Array.CreateInstance(typeof(object), deformers.Count, PointCount), new List <string>(), Type); //Get deformers List <string> notFoundFields = new List <string>(); //ignore deformers that don't exist in ref deformers int counter = 0; foreach (string defName in Fields) { if (deformers.Contains(defName)) { modified.Fields.Add(defName); for (int j = 0; j < PointCount; j++) { modified.InternalValues.SetValue(InternalValues.GetValue(counter, j), modified.Fields.Count - 1, j); } } counter++; } //Add deformers that don't exist in old deformers foreach (string defName in deformers) { if (!modified.Fields.Contains(defName)) { modified.Fields.Add(defName); for (int j = 0; j < PointCount; j++) { modified.InternalValues.SetValue(0.0, modified.Fields.Count - 1, j); } } } return(modified); }
public CG_PointData Blend(CG_PointData Merged, double Opacity, List <int> indices) { CG_PointData modified = new CG_PointData(Array.CreateInstance(typeof(object), Fields.Count, PointCount), new List <string>(), Type); for (int i = 0; i < Fields.Count; i++) { modified.Fields.Add(Fields[i]); for (int j = 0; j < PointCount; j++) { if (indices == null || indices.Count == 0 || indices.Contains(j)) { modified.InternalValues.SetValue((double)InternalValues.GetValue(i, j) * (1 - Opacity) + (double)Merged.InternalValues.GetValue(i, j) * Opacity, i, j); } else { modified.InternalValues.SetValue((double)InternalValues.GetValue(i, j), i, j); } } } return(modified); }
public CG_PointData ShareFields(CG_PointData inData) { //Create a full list of Fields List <string> fields = Fields; Dictionary <string, object[]> belongs = new Dictionary <string, object[]>(); int counter = 0; foreach (string str in inData.Fields) { if (!fields.Contains(str)) { fields.Add(str); belongs.Add(str, new object[] { inData, counter }); } else { belongs.Add(str, new object[] { this, fields.IndexOf(str) }); } counter++; } CG_PointData modified = new CG_PointData(Array.CreateInstance(typeof(object), fields.Count, PointCount), fields, Type); for (int i = 0; i < fields.Count; i++) { object[] fieldInfos = belongs[fields[i]]; CG_PointData owner = fieldInfos[0] as CG_PointData; for (int j = 0; j < PointCount; j++) { modified.InternalValues.SetValue(owner.InternalValues.GetValue((int)fieldInfos[1], j), i, j); } } return(modified); }
public CG_PointData TransposeFields(List <string> inFields) { CG_PointData modified = new CG_PointData(Array.CreateInstance(typeof(object), inFields.Count, PointCount), new List <string>(), Type); int index; for (int i = 0; i < inFields.Count; i++) { modified.Fields.Add(inFields[i]); index = Fields.IndexOf(inFields[i]); if (index == -1) { index = i; } for (int j = 0; j < PointCount; j++) { modified.InternalValues.SetValue(InternalValues.GetValue(i, j), index, j); } } return(modified); }
public CG_PointData Blend(CG_PointData inData, double Opacity) { return(Blend(inData, Opacity, null)); }
public bool isCompatible(CG_PointData inData) { return(isPointsCompatible(inData) && isFieldsCompatible(inData)); }
//Compatibility Methods public bool isPointsCompatible(CG_PointData inData) { return(inData.PointCount == PointCount); }