[longomatch] Enable support for rendering drawings in exported clips again



commit 94780bbd0745b7435baf0ed3ed61aed6512007f1
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Mon Jun 30 20:21:24 2014 +0200

    Enable support for rendering drawings in exported clips again

 LongoMatch.Drawing/Widgets/Blackboard.cs           |   10 +---
 LongoMatch.Services/LongoMatch.Services.mdp        |    1 +
 .../Services/RenderingJobsManager.cs               |   46 +++++++------------
 3 files changed, 21 insertions(+), 36 deletions(-)
---
diff --git a/LongoMatch.Drawing/Widgets/Blackboard.cs b/LongoMatch.Drawing/Widgets/Blackboard.cs
index 2347e2b..ab329cf 100644
--- a/LongoMatch.Drawing/Widgets/Blackboard.cs
+++ b/LongoMatch.Drawing/Widgets/Blackboard.cs
@@ -144,13 +144,9 @@ namespace LongoMatch.Drawing.Widgets
                }
                
                ICanvasSelectableObject Add (IBlackboardObject drawable) {
-                       string objecttype = String.Format ("LongoMatch.Drawing.CanvasObject.{0}Object",
-                                                          drawable.GetType().ToString().Split('.').Last());
-                       ObjectHandle handle = Activator.CreateInstance(null, objecttype);
-                       ICanvasDrawableObject d = (ICanvasDrawableObject) handle.Unwrap();
-                       d.IDrawableObject = drawable;
-                       Objects.Add (d);
-                       return d;
+                       ICanvasSelectableObject cso = Utils.CanvasFromDrawableObject (drawable);
+                       Objects.Add (cso);
+                       return cso;
                }
                
                protected override void StartMove (Selection sel)
diff --git a/LongoMatch.Services/LongoMatch.Services.mdp b/LongoMatch.Services/LongoMatch.Services.mdp
index 1027439..10fae6b 100644
--- a/LongoMatch.Services/LongoMatch.Services.mdp
+++ b/LongoMatch.Services/LongoMatch.Services.mdp
@@ -37,5 +37,6 @@
     <ProjectReference type="Package" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, 
PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Package" specificVersion="False" localcopy="False" refto="System.Core, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
     <ProjectReference type="Package" localcopy="False" refto="gdk-sharp, Version=2.12.0.0, Culture=neutral, 
PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Drawing" />
   </References>
 </Project>
\ No newline at end of file
diff --git a/LongoMatch.Services/Services/RenderingJobsManager.cs 
b/LongoMatch.Services/Services/RenderingJobsManager.cs
index fb7e02e..d2033fa 100644
--- a/LongoMatch.Services/Services/RenderingJobsManager.cs
+++ b/LongoMatch.Services/Services/RenderingJobsManager.cs
@@ -183,38 +183,26 @@ namespace LongoMatch.Services
                }
                
                private bool ProcessSegment(PlayListPlay segment) {
+                       Time lastTS;
+
                        if(!segment.Valid)
                                return false;
                        
                        Log.Debug(String.Format("Adding segment with {0} drawings", segment.Drawings.Count));
-                       if (segment.Drawings.Count >= 1) {
-                               FrameDrawing drawing = segment.Drawings[0];
-                               string image_path = CreateStillImage(segment.MediaFile.FilePath, drawing);
-                               
-                               videoEditor.AddSegment(segment.MediaFile.FilePath,
-                                                      segment.Start.MSeconds,
-                                                      drawing.Render.MSeconds - segment.Start.MSeconds,
-                                                      segment.Rate,
-                                                      segment.Name,
-                                                      segment.MediaFile.HasAudio);
-                               videoEditor.AddImageSegment(image_path,
-                                                           drawing.Render.MSeconds,
-                                                           drawing.Pause.MSeconds,
-                                                           segment.Name);
-                               videoEditor.AddSegment(segment.MediaFile.FilePath,
-                                                      drawing.Render.MSeconds,
-                                                      segment.Stop.MSeconds - drawing.Render.MSeconds,
-                                                      segment.Rate,
-                                                      segment.Name,
-                                                      segment.MediaFile.HasAudio);
-                       } else {
-                               videoEditor.AddSegment(segment.MediaFile.FilePath,
-                                                      segment.Start.MSeconds,
-                                                      segment.Duration.MSeconds,
-                                                      segment.Rate,
-                                                      segment.Name,
-                                                      segment.MediaFile.HasAudio);
+                       
+                       lastTS = segment.Start;
+                       foreach (FrameDrawing fd in segment.Drawings) {
+                               string image_path = CreateStillImage (segment.MediaFile.FilePath, fd);
+                               videoEditor.AddSegment(segment.MediaFile.FilePath, lastTS.MSeconds,
+                                                      fd.Render.MSeconds - lastTS.MSeconds,
+                                                      segment.Rate, segment.Name, 
segment.MediaFile.HasAudio);
+                               videoEditor.AddImageSegment(image_path, fd.Render.MSeconds,
+                                                          fd.Pause.MSeconds, segment.Name);
+                               lastTS = fd.Render;
                        }
+                       videoEditor.AddSegment(segment.MediaFile.FilePath, lastTS.MSeconds,
+                                              segment.Stop.MSeconds - lastTS.MSeconds,
+                                              segment.Rate, segment.Name, segment.MediaFile.HasAudio);
                        return true;
                }
                
@@ -225,8 +213,8 @@ namespace LongoMatch.Services
                        capturer.Open(filename);
                        capturer.Seek (drawing.Render, true);
                        frame = capturer.GetCurrentFrame();
-                       //final_image = Image.Composite(frame, drawing.Pixbuf);
-                       //final_image.Save(path);
+                       final_image = Drawing.Utils.RenderFrameDrawingToImage (Config.DrawingToolkit, frame, 
drawing);
+                       final_image.Save(path);
                        return path;
                }
                


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]