예제 #1
0
        /// <summary>
        /// Event handler that is invoked when a slide's content has changed
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args_"></param>
        private void HandleSlideContentAdded(object sender, PropertyEventArgs args_)
        {
            PropertyCollectionEventArgs args = ((PropertyCollectionEventArgs)args_);
            ByteArray hash = ((ByteArray)args.Added);

            ImageHashtable.ImageHashTableItem Content;

            // Get the slide content from the source deck
            using (Synchronizer.Lock(this.SourceDeck.SyncRoot)) {
                Image image = this.SourceDeck.GetSlideContent(hash);

                if (image == null)
                {
                    throw new ArgumentException("The specified ByteArray does not map to slide content in the specified deck.", "hash");
                }

                Content = new ImageHashtable.ImageHashTableItem(hash, image);
            }

            // Add the slide content to the destination deck
            using (Synchronizer.Lock(this.DestinationDeck.SyncRoot)) {
                // Note: If the deck already has content with this hash, nothing will happen.
                this.DestinationDeck.AddSlideContent(Content.key, Content.image);
            }
        }
예제 #2
0
        public DeckSlideContentMessage(DeckModel deck, ByteArray hash) : base(hash)
        {
            using (Synchronizer.Lock(deck.SyncRoot)) {
                Image image = deck.GetSlideContent(hash);

                if (image == null)
                {
                    throw new ArgumentException("The specified ByteArray does not map to slide content in the specified deck.", "hash");
                }

                this.Target = this.Content = new ImageHashtable.ImageHashTableItem(hash, image);
                this.AddLocalRef(this.Target);
            }
        }
예제 #3
0
 public DeckSlideContentMessage(Message parent, SerializedPacket p) : base(parent, p)
 {
     this.Content = null;
 }