Ejemplo n.º 1
0
        /// <summary>
        /// Constructs a listener for changes to the deck traversal
        /// </summary>
        /// <param name="sender">The event queue for handling updates</param>
        /// <param name="presentation">The presentation</param>
        /// <param name="traversal">The deck traversal we care about </param>
        public DeckTraversalWebService(SendingQueue sender, PresentationModel presentation, DeckTraversalModel traversal)
        {
            this.m_Sender        = sender;
            this.m_Presentation  = presentation;
            this.m_DeckTraversal = traversal;

            // Create the deck object
            string deckName = "Untitled Deck";

            using (Synchronizer.Lock(this.m_DeckTraversal.SyncRoot))
            {
                using (Synchronizer.Lock(this.m_DeckTraversal.Deck))
                {
                    deckName = this.m_DeckTraversal.Deck.HumanName;
                }
            }
            SimpleWebDeck deck = new SimpleWebDeck();

            deck.Name = deckName;
            lock (WebService.Instance.GlobalModel) {
                WebService.Instance.GlobalModel.Decks.Add(deck);
            }
            WebService.Instance.UpdateModel();

            this.m_DeckWebService = new DeckWebService(this.m_Sender, this.m_Presentation, this.m_DeckTraversal.Deck);

            this.m_CurrentChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.m_Sender, new PropertyEventHandler(this.HandleCurrentChanged));
            this.m_DeckTraversal.Changed["Current"].Add(this.m_CurrentChangedDispatcher.Dispatcher);
        }
Ejemplo n.º 2
0
 protected SimpleWebSlide GetExistingWebSlide(SimpleWebDeck d, Guid id)
 {
     foreach (SimpleWebSlide s in d.Slides)
     {
         if (s.Id == id)
         {
             return(s);
         }
     }
     return(null);
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Helper class that is run on a different thread that converts the ink coordinates into pixel coordinates
        /// </summary>
        /// <param name="extracted">The strokes to convert and add to the model</param>
        private void HandleInkAddedHelper(Ink extracted)
        {
            // Adjust for differences in DPI
            if (ViewerStateModel.NonStandardDpi)
            {
                extracted.Strokes.Transform(ViewerStateModel.DpiNormalizationSendMatrix, true);
            }

            // Get the model object to add it to
            lock (WebService.Instance.GlobalModel) {
                SimpleWebDeck  deck  = (SimpleWebDeck)WebService.Instance.GlobalModel.Decks[WebService.Instance.GlobalModel.CurrentDeck];
                SimpleWebSlide slide = (SimpleWebSlide)deck.Slides[WebService.Instance.GlobalModel.CurrentSlide - 1];
                slide.Inks = new ArrayList();
                // Extract each stroke
                foreach (Stroke s in extracted.Strokes)
                {
                    // Get the points
                    System.Drawing.Point[] pts = s.GetPoints();
                    // Convert and remove duplicates
                    bool                 bFirst  = true;
                    ArrayList            pts_new = new ArrayList();
                    System.Drawing.Point last    = System.Drawing.Point.Empty;
                    foreach (System.Drawing.Point p in pts)
                    {
                        System.Drawing.Point pNew = new System.Drawing.Point((int)Math.Round(p.X / 26.37f), (int)Math.Round(p.Y / 26.37f));
                        if (!bFirst && last == pNew)
                        {
                            continue;
                        }
                        bFirst = false;
                        last   = pNew;
                        pts_new.Add(pNew);
                    }

                    // Add the points to the model
                    SimpleWebInk stroke = new SimpleWebInk();
                    stroke.Pts     = (System.Drawing.Point[])pts_new.ToArray(typeof(System.Drawing.Point));
                    stroke.R       = s.DrawingAttributes.Color.R;
                    stroke.G       = s.DrawingAttributes.Color.G;
                    stroke.B       = s.DrawingAttributes.Color.B;
                    stroke.Opacity = (s.DrawingAttributes.RasterOperation == RasterOperation.MaskPen) ? (byte)127 : (byte)255;
                    stroke.Width   = s.DrawingAttributes.Width / 26.37f;
                    slide.Inks.Add(stroke);
                }
            }
            WebService.Instance.UpdateModel();
        }
Ejemplo n.º 4
0
        protected static string BuildDeckString(string prefix, int index, SimpleWebDeck deck)
        {
            string newPrefix = prefix + "_" + index;
            string result    = "";

            result += "\t\t<div id=\"" + newPrefix + "\">\n";
            result += "\t\t\t<div id=\"" + newPrefix + "_Index\">" + index + "</div>\n";
            result += "\t\t\t<div id=\"" + newPrefix + "_Name\">" + deck.Name + "</div>\n";
            result += "\t\t\t<div id=\"" + newPrefix + "_Slides\">\n";
            for (int i = 0; i < deck.Slides.Count; i++)
            {
                result += BuildSlideString(newPrefix, deck.Name, i, (SimpleWebSlide)deck.Slides[i]);
            }
            result += "\t\t\t</div>\n";
            result += "\t\t</div>\n";

            return(result);
        }