public static Image RenderFrameDrawingToImage(IDrawingToolkit tk, Image image, FrameDrawing fd) { Area area = fd.RegionOfInterest; if (area == null || area.Empty) area = new Area (0, 0, image.Width, image.Height); return RenderFrameDrawing (tk, area, fd, image); }
public void TestSerialization() { FrameDrawing d = new FrameDrawing (); d.Miniature = Utils.LoadImageFromFile (); d.Freehand = Utils.LoadImageFromFile (); d.Drawables = new List<Drawable> { new Line (), new Rectangle () }; d.CameraConfig = new CameraConfig (2); d.Render = new Time (1000); d.Pause = new Time (2000); Utils.CheckSerialization (d); FrameDrawing d2 = Utils.SerializeDeserialize (d); Assert.AreEqual (d.Render, d2.Render); Assert.AreEqual (d.Pause, d2.Pause); Assert.AreEqual (d.CameraConfig, d2.CameraConfig); Assert.AreEqual (d2.Drawables.Count, d.Drawables.Count); Assert.IsNotNull (d2.Freehand); Assert.IsNotNull (d2.Miniature); }
void LoadImage(Image image, FrameDrawing drawing) { if (image == null) { DrawingsVisible = false; return; } blackboard.Background = image; blackboard.Drawing = drawing; DrawingsVisible = true; blackboarddrawingarea.QueueDraw (); }
void HandleLoadDrawingsEvent(FrameDrawing frameDrawing) { if (frameDrawing != null) { LoadImage (Player.CurrentFrame, frameDrawing); } else { DrawingsVisible = false; } }
public void TestEventDrawings() { FrameDrawing dr, drSent = null; player.LoadDrawingsEvent += (frameDrawing) => { drSent = frameDrawing; }; dr = new FrameDrawing { Render = evt.Start + 50, CameraConfig = new CameraConfig (0), }; currentTime = evt.Start; PreparePlayer (); /* Checks drawings are loaded when the clock reaches the render time */ evt.Drawings.Add (dr); player.LoadEvent (mfs, evt, evt.Start, true); Assert.IsTrue (player.Playing); currentTime = dr.Render; player.Seek (currentTime, true, false); Assert.IsFalse (player.Playing); Assert.AreEqual (dr, drSent); player.Play (); Assert.IsNull (drSent); /* Check only drawings for the first camera are loaded */ dr.CameraConfig = new CameraConfig (1); currentTime = evt.Start; player.LoadEvent (mfs, evt, evt.Start, true); Assert.IsTrue (player.Playing); currentTime = dr.Render; player.Seek (currentTime, true, false); Assert.IsTrue (player.Playing); Assert.IsNull (drSent); }
private string CreateStillImage(string filename, FrameDrawing drawing) { Image frame, final_image; string path = System.IO.Path.GetTempFileName ().Replace (@"\", @"\\"); capturer = multimediaToolkit.GetFramesCapturer (); capturer.Open (filename); frame = capturer.GetFrame (drawing.Render, true); capturer.Dispose (); if (frame == null) { Log.Error (String.Format ("Could not get frame for file {0} at pos {1}", filename, drawing.Render.ToMSecondsString ())); return null; } final_image = Drawing.Utils.RenderFrameDrawingToImage (Config.DrawingToolkit, frame, drawing); final_image.Save (path); return path; }
void HandleDrawFrame(TimelineEvent play, int drawingIndex, CameraConfig camConfig, bool current) { Image pixbuf; FrameDrawing drawing = null; Time pos; player.Pause (); if (play == null) { play = loadedPlay; } if (play != null) { if (drawingIndex == -1) { drawing = new FrameDrawing { Render = player.CurrentTime, CameraConfig = camConfig, RegionOfInterest = camConfig.RegionOfInterest.Clone (), }; } else { drawing = play.Drawings [drawingIndex]; } pos = drawing.Render; } else { pos = player.CurrentTime; } if (framesCapturer != null && !current) { // FIXME Time offset = openedProject.Description.FileSet.First ().Offset; pixbuf = framesCapturer.GetFrame (pos + offset, true, -1, -1); } else { pixbuf = player.CurrentFrame; } if (pixbuf == null) { guiToolkit.ErrorMessage (Catalog.GetString ("Error capturing video frame")); } else { guiToolkit.DrawingTool (pixbuf, play, drawing, camConfig, openedProject); } }
void OnSavetoprojectbuttonClicked(object sender, System.EventArgs e) { drawing.RegionOfInterest = blackboard.RegionOfInterest; if (!play.Drawings.Contains (drawing)) { play.Drawings.Add (drawing); } drawing.Miniature = blackboard.Save (); drawing.Miniature.ScaleInplace (Constants.MAX_THUMBNAIL_SIZE, Constants.MAX_THUMBNAIL_SIZE); play.UpdateMiniature (); drawing = null; Respond (ResponseType.Accept); }
void OnSavebuttonClicked(object sender, System.EventArgs e) { string proposed_filename = String.Format ("{0}-{1}.png", Constants.SOFTWARE_NAME, DateTime.Now.ToShortDateString ().Replace ('/', '-')); string filename = FileChooserHelper.SaveFile (this, Catalog.GetString ("Save File as..."), proposed_filename, Config.SnapshotsDir, "PNG Images", new string[] { "*.png" }); if (filename != null) { System.IO.Path.ChangeExtension (filename, ".png"); blackboard.Save (filename); drawing = null; Respond (ResponseType.Accept); } }
public void LoadPlay(TimelineEvent play, Image frame, FrameDrawing drawing, CameraConfig camConfig, Project project) { this.play = play; this.drawing = drawing; this.project = project; this.camConfig = camConfig; scaleFactor = (double)frame.Width / 500; blackboard.Background = frame; savetoprojectbutton.Visible = true; blackboard.Drawing = drawing; blackboard.RegionOfInterest = drawing.RegionOfInterest; }
public void LoadFrame(Image frame, Project project) { this.project = project; drawing = new FrameDrawing (); scaleFactor = (double)frame.Width / 500; blackboard.Background = frame; blackboard.Drawing = drawing; savetoprojectbutton.Visible = false; UpdateLineWidth (); UpdateTextSize (); }
public static Image RenderFrameDrawing(IDrawingToolkit tk, int width, int height, FrameDrawing fd) { return RenderFrameDrawing (tk, new Area (0, 0, width, height), fd, null); }
protected static Image RenderFrameDrawing(IDrawingToolkit tk, Area area, FrameDrawing fd, Image image) { Image img; ISurface surface; Log.Debug ("Rendering frame drawing with ROI: " + area); surface = tk.CreateSurface ((int)area.Width, (int)area.Height); using (IContext c = surface.Context) { tk.Context = c; tk.TranslateAndScale (new Point (-area.Start.X, -area.Start.Y), new Point (1, 1)); tk.DrawImage (image); foreach (Drawable d in fd.Drawables) { ICanvasSelectableObject obj = CanvasFromDrawableObject (d); obj.Draw (tk, null); obj.Dispose (); } tk.DrawImage (fd.Freehand); } img = surface.Copy (); surface.Dispose (); return img; }