private void databaseAddNewAnnotation(AnnoScheme.TYPE annoType) { AnnoList annoList = new AnnoList(); annoList.Meta.Role = DatabaseHandler.LoadRoles(null); if (annoList.Meta.Role == null) { return; } string annoScheme = DatabaseHandler.SelectAnnotationScheme(null); if (annoScheme == null) { return; } annoList.Scheme = DatabaseHandler.GetAnnotationScheme(annoScheme, annoType); annoList.Scheme.Labels.Add(new AnnoScheme.Label("GARBAGE", Colors.Black)); IMongoDatabase database = DatabaseHandler.Database; ObjectId annotatid = DatabaseHandler.GetObjectID(database, DatabaseDefinitionCollections.Annotators, "name", Properties.Settings.Default.MongoDBUser); annoList.Meta.Annotator = Properties.Settings.Default.MongoDBUser; annoList.Meta.AnnotatorFullName = DatabaseHandler.FetchDBRef(database, DatabaseDefinitionCollections.Annotators, "fullname", annotatid); addAnnoTier(annoList); control.annoListControl.editComboBox.SelectedIndex = 0; }
private void Edit_Click(object sender, RoutedEventArgs e) { Brush col1 = null; Brush col2 = null; string sr = null; string min = null; string max = null; AnnoScheme a = DatabaseHandler.GetAnnotationScheme(DataBaseResultsBox.SelectedItem.ToString(), annoList.Scheme.Type); AnnoScheme.TYPE annoType = a.Type; col1 = new SolidColorBrush(a.MinOrBackColor); if (annoType == AnnoScheme.TYPE.DISCRETE) { usedlabels = new HashSet <AnnoScheme.Label>(); foreach (AnnoScheme.Label item in a.Labels) { bool detected = false; foreach (AnnoScheme.Label p in usedlabels) { if (p.Name == item.Name) { detected = true; } } if (detected == false) { usedlabels.Add(item); } } } else if (annoType == AnnoScheme.TYPE.FREE) { col1 = new SolidColorBrush(a.MinOrBackColor); } else if (annoType == AnnoScheme.TYPE.CONTINUOUS) { col2 = new SolidColorBrush(a.MaxOrForeColor); sr = a.SampleRate.ToString(); min = a.MinScore.ToString(); max = a.MaxScore.ToString(); } storeAnnotationSchemetoDatabase(a.Name, usedlabels, annoType, col1, col2, sr, min, max); }
private void OkButton_Click(object sender, RoutedEventArgs e) { DialogResult = true; if (cmlRadioButton.IsChecked == true) { CMLScheme cmlScheme = (CMLScheme)cmlCombobox.SelectedItem; Scheme = AnnoList.LoadfromFile(cmlScheme.Path).Scheme; LoadedFromFile = true; } else { AnnoScheme.TYPE annoType = AnnoScheme.TYPE.FREE; if (freeRadioButton.IsChecked == true) { annoType = AnnoScheme.TYPE.FREE; } else if (discreteRadioButton.IsChecked == true) { annoType = AnnoScheme.TYPE.DISCRETE; } else if (continuousRadioButton.IsChecked == true) { annoType = AnnoScheme.TYPE.CONTINUOUS; } else if (pointRadioButton.IsChecked == true) { annoType = AnnoScheme.TYPE.POINT; } Scheme.Type = annoType; if (Scheme.Type == AnnoScheme.TYPE.CONTINUOUS) { Scheme.MinScore = 0.0; Scheme.MaxScore = 1.0; Scheme.MinOrBackColor = Defaults.Colors.GradientMin; Scheme.MaxOrForeColor = Defaults.Colors.GradientMax; } else if (Scheme.Type == AnnoScheme.TYPE.POINT) { Scheme.NumberOfPoints = 1; Scheme.MaxOrForeColor = Colors.Green; } } }
public void geometricOverlayUpdate(AnnoListItem item, AnnoScheme.TYPE type, int pos = -1) { WriteableBitmap overlay = null; IMedia video = mediaList.GetFirstVideo(); if (video != null) { overlay = video.GetOverlay(); } else { return; } overlay.Lock(); overlay.Clear(); switch (type) { case AnnoScheme.TYPE.POINT: foreach (PointListItem p in item.Points) { if (p.XCoord != -1 && p.YCoord != -1) { Color color = item.Color; //color.A = 128; overlay.FillEllipseCentered((int)p.XCoord, (int)p.YCoord, 1, 1, color); } } break; case AnnoScheme.TYPE.POLYGON: break; case AnnoScheme.TYPE.GRAPH: break; case AnnoScheme.TYPE.SEGMENTATION: break; } overlay.Unlock(); }
public AnnoTierNewSchemeWindow(double defaultSr) { InitializeComponent(); Scheme = new AnnoScheme() { SampleRate = defaultSr }; LoadedFromFile = false; string schemesDir = Properties.Settings.Default.CMLDirectory + "\\" + Defaults.CML.SchemeFolderName + "\\"; if (Directory.Exists(schemesDir)) { foreach (string schemeDir in Directory.GetDirectories(schemesDir)) { foreach (string schemeFile in Directory.GetFiles(schemeDir, "*.annotation")) { AnnoScheme.TYPE type = (AnnoScheme.TYPE)Enum.Parse(typeof(AnnoScheme.TYPE), System.IO.Path.GetFileName(schemeDir).ToUpper()); CMLScheme cmlScheme = new CMLScheme() { Path = schemeFile, Name = System.IO.Path.GetFileNameWithoutExtension(schemeFile), Type = type }; cmlCombobox.Items.Add(cmlScheme); } } } if (cmlCombobox.Items.Count > 0) { cmlCombobox.SelectedIndex = 0; } else { cmlRadioButton.Visibility = Visibility.Collapsed; cmlSeparator.Visibility = Visibility.Collapsed; } }
private void Button_Click_2(object sender, RoutedEventArgs e) { DialogResult = true; annotype = AnnoScheme.TYPE.CONTINUOUS; }
private void Button_Click_1(object sender, RoutedEventArgs e) { DialogResult = true; annotype = AnnoScheme.TYPE.DISCRETE; }
public DatabaseAnnoSchemeWindow(string name = null, HashSet <AnnoScheme.Label> _usedlabels = null, AnnoScheme.TYPE isDiscrete = AnnoScheme.TYPE.DISCRETE, Brush mincolor = null, Brush maxcolor = null, string samplerate = null, string min = null, string max = null) { InitializeComponent(); scheme_colorpickermin.SelectedColor = Colors.Blue; scheme_colorpickermax.SelectedColor = Colors.Red; if (isDiscrete == AnnoScheme.TYPE.DISCRETE || isDiscrete == AnnoScheme.TYPE.FREE) { scheme_colorpickermin.SelectedColor = Colors.LightYellow; } scheme_max.Text = (1.0).ToString(); scheme_min.Text = (0.0).ToString(); scheme_fps.Text = (25).ToString(); scheme_name.Text = "NewAnnotationType"; this.usedlabels = _usedlabels; labelcolors = new List <AnnoScheme.Label>(); if (name != null) { scheme_name.Text = name; } if (isDiscrete == AnnoScheme.TYPE.DISCRETE) { scheme_type.SelectedIndex = 0; } else if (isDiscrete == AnnoScheme.TYPE.FREE) { scheme_type.SelectedIndex = 1; } else if (isDiscrete == AnnoScheme.TYPE.CONTINUOUS) { scheme_type.SelectedIndex = 2; } if (mincolor != null) { scheme_colorpickermin.SelectedColor = (mincolor as SolidColorBrush).Color; } if (maxcolor != null) { scheme_colorpickermax.SelectedColor = (maxcolor as SolidColorBrush).Color; } if (samplerate != null) { scheme_fps.Text = samplerate; } if (min != null) { scheme_min.Text = min; } if (max != null) { scheme_max.Text = max; } if (usedlabels != null) { items = new List <AnnoScheme.Label>(); foreach (AnnoScheme.Label lp in usedlabels) { items.Add(new AnnoScheme.Label(lp.Name, lp.Color) { Name = lp.Name, Color = lp.Color }); labelcolors.Add(new AnnoScheme.Label(lp.Name, lp.Color)); } AnnotationResultBox.ItemsSource = items; } }
private void storeAnnotationSchemetoDatabase(string name = null, HashSet <AnnoScheme.Label> _usedlabels = null, AnnoScheme.TYPE isDiscrete = AnnoScheme.TYPE.DISCRETE, Brush col1 = null, Brush col2 = null, string sr = null, string min = null, string max = null) { DatabaseAnnoSchemeWindow dbas = new DatabaseAnnoSchemeWindow(name, usedlabels, annoList.Scheme.Type, col1, col2, sr, min, max); dbas.WindowStartupLocation = WindowStartupLocation.CenterScreen; dbas.ShowDialog(); if (dbas.DialogResult == true) { DataBaseResultsBox.Items.Remove(name); DataBaseResultsBox.Items.Add(dbas.GetName()); DataBaseResultsBox.SelectedItem = dbas.GetName(); var database = mongo.GetDatabase(Properties.Settings.Default.DatabaseName); var builder = Builders <BsonDocument> .Filter; var filter = builder.Eq("name", DataBaseResultsBox.SelectedItem.ToString()); BsonDocument document = new BsonDocument(); BsonElement documentName = new BsonElement("name", dbas.GetName()); BsonElement documentType = new BsonElement("type", dbas.GetType().ToUpper()); BsonElement documentIsValid = new BsonElement("isValid", true); BsonElement documentSr = new BsonElement("sr", dbas.GetFps()); BsonElement documentMin = new BsonElement("min", dbas.GetMin()); BsonElement documentMax = new BsonElement("max", dbas.GetMax()); BsonElement documentMinColor = new BsonElement("min_color", dbas.GetColorMin()); BsonElement documentColor = new BsonElement("color", dbas.GetColorMin()); BsonElement documentMaxColor = new BsonElement("max_color", dbas.GetColorMax()); int index = 0; List <AnnoScheme.Label> labelList = dbas.GetLabelColorPairs(); BsonArray labels = new BsonArray(); foreach (AnnoScheme.Label label in labelList) { labels.Add(new BsonDocument() { { "id", index++ }, { "name", label.Name }, { "color", label.Color.ToString() }, { "isValid", true } }); } document.Add(documentName); document.Add(documentType); if (dbas.GetType().ToUpper() == "DISCRETE") { document.Add(documentColor); document.Add("labels", labels); } else if (dbas.GetType().ToUpper() == "FREE") { document.Add(documentColor); } else { document.Add(documentSr); document.Add(documentMin); document.Add(documentMax); document.Add(documentMinColor); document.Add(documentMaxColor); } document.Add(documentIsValid); var coll = database.GetCollection <BsonDocument>(DatabaseDefinitionCollections.Schemes); var filterup = builder.Eq("name", name); UpdateOptions uo = new UpdateOptions(); uo.IsUpsert = true; var result = coll.ReplaceOne(filterup, document, uo); // coll.InsertOne(d); } }
public static AnnoScheme GetAnnotationScheme(string annoName, AnnoScheme.TYPE annoType) { MongoClient mongo = new MongoClient(ServerConnectionString); IMongoDatabase database = mongo.GetDatabase(Properties.Settings.Default.DatabaseName); AnnoScheme scheme = new AnnoScheme(); scheme.Type = annoType; var annoSchemes = database.GetCollection <BsonDocument>(DatabaseDefinitionCollections.Schemes); var builder = Builders <BsonDocument> .Filter; FilterDefinition <BsonDocument> annoSchemeFilter = builder.Eq("name", annoName) & builder.Eq("type", annoType.ToString()); BsonDocument annoSchemeDocument = null; try { annoSchemeDocument = annoSchemes.Find(annoSchemeFilter).Single(); if (annoSchemeDocument["type"].ToString() == annoType.ToString()) { scheme.Name = annoSchemeDocument["name"].ToString(); if (scheme.Type == AnnoScheme.TYPE.CONTINUOUS) { scheme.MinScore = annoSchemeDocument["min"].ToDouble(); scheme.MaxScore = annoSchemeDocument["max"].ToDouble(); scheme.SampleRate = annoSchemeDocument["sr"].ToDouble(); scheme.MinOrBackColor = (Color)ColorConverter.ConvertFromString(annoSchemeDocument["min_color"].ToString()); scheme.MaxOrForeColor = (Color)ColorConverter.ConvertFromString(annoSchemeDocument["max_color"].ToString()); } else if (scheme.Type == AnnoScheme.TYPE.DISCRETE) { scheme.MinOrBackColor = (Color)ColorConverter.ConvertFromString(annoSchemeDocument["color"].ToString()); BsonArray schemeLabelsArray = annoSchemeDocument["labels"].AsBsonArray; string SchemeLabel = ""; string SchemeColor = "#000000"; for (int j = 0; j < schemeLabelsArray.Count; j++) { try { if (schemeLabelsArray[j]["isValid"].AsBoolean == true) { SchemeLabel = schemeLabelsArray[j]["name"].ToString(); SchemeColor = schemeLabelsArray[j]["color"].ToString(); AnnoScheme.Label lcp = new AnnoScheme.Label(schemeLabelsArray[j]["name"].ToString(), (Color)ColorConverter.ConvertFromString(schemeLabelsArray[j]["color"].ToString())); scheme.Labels.Add(lcp); } } catch { SchemeLabel = schemeLabelsArray[j]["name"].ToString(); SchemeColor = schemeLabelsArray[j]["color"].ToString(); AnnoScheme.Label lcp = new AnnoScheme.Label(schemeLabelsArray[j]["name"].ToString(), (Color)ColorConverter.ConvertFromString(schemeLabelsArray[j]["color"].ToString())); scheme.Labels.Add(lcp); } } } else if (scheme.Type == AnnoScheme.TYPE.FREE) { scheme.MinOrBackColor = (Color)ColorConverter.ConvertFromString(annoSchemeDocument["color"].ToString()); } } } catch (Exception ex) { MessageTools.Warning(ex.ToString()); } return(scheme); }
private void navigatorNewAnno_Click(object sender, RoutedEventArgs e) { if (Time.TotalDuration > 0) { AnnoTierNewSchemeWindow dialog = new AnnoTierNewSchemeWindow(); dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen; dialog.ShowDialog(); if (dialog.DialogResult == true) { AnnoScheme.TYPE annoType = dialog.Result(); if (DatabaseLoaded) { databaseAddNewAnnotation(annoType); } else { if (annoType == AnnoScheme.TYPE.FREE) { AnnoTierNewFreeSchemeWindow dialog2 = new AnnoTierNewFreeSchemeWindow(); dialog2.WindowStartupLocation = WindowStartupLocation.CenterScreen; dialog2.ShowDialog(); if (dialog2.DialogResult == true) { AnnoScheme annoScheme = dialog2.Result; AnnoList annoList = new AnnoList() { Scheme = annoScheme }; addAnnoTier(annoList); } } else if (annoType == AnnoScheme.TYPE.DISCRETE) { AnnoTierNewDiscreteSchemeWindow dialog2 = new AnnoTierNewDiscreteSchemeWindow(); dialog2.WindowStartupLocation = WindowStartupLocation.CenterScreen; dialog2.ShowDialog(); if (dialog2.DialogResult == true) { AnnoList annoList = dialog2.GetAnnoList(); addAnnoTier(annoList); } } else if (annoType == AnnoScheme.TYPE.CONTINUOUS) { double defaultSr = 25.0; foreach (IMedia m in mediaList.Medias) { if (m.IsVideo()) { defaultSr = m.GetSampleRate(); break; } } AnnoTierNewContinuousSchemeWindow.Input input = new AnnoTierNewContinuousSchemeWindow.Input() { SampleRate = defaultSr, MinScore = 0.0, MaxScore = 1.0, MinColor = Colors.LightBlue, MaxColor = Colors.Red }; AnnoTierNewContinuousSchemeWindow dialog2 = new AnnoTierNewContinuousSchemeWindow(input); dialog2.WindowStartupLocation = WindowStartupLocation.CenterScreen; dialog2.ShowDialog(); if (dialog2.DialogResult == true) { AnnoScheme annoScheme = dialog2.Result; AnnoList annoList = new AnnoList() { Scheme = annoScheme }; addAnnoTier(annoList); } } } } } else { MessageTools.Warning("Nothing to annotate, load some data first."); } }