Esempio n. 1
0
 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);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 void LoadImage(Image image, FrameDrawing drawing)
 {
     if (image == null) {
         DrawingsVisible = false;
         return;
     }
     blackboard.Background = image;
     blackboard.Drawing = drawing;
     DrawingsVisible = true;
     blackboarddrawingarea.QueueDraw ();
 }
Esempio n. 4
0
 void HandleLoadDrawingsEvent(FrameDrawing frameDrawing)
 {
     if (frameDrawing != null) {
         LoadImage (Player.CurrentFrame, frameDrawing);
     } else {
         DrawingsVisible = false;
     }
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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;
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
 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);
 }
Esempio n. 9
0
 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);
     }
 }
Esempio n. 10
0
        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;
        }
Esempio n. 11
0
 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 ();
 }
Esempio n. 12
0
 public static Image RenderFrameDrawing(IDrawingToolkit tk, int width, int height, FrameDrawing fd)
 {
     return RenderFrameDrawing (tk, new Area (0, 0, width, height), fd, null);
 }
Esempio n. 13
0
        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;
        }