/// <summary>
        /// return a copy of myself.
        /// </summary>
        /// <returns></returns>
        public PresenterDataItem Copy()
        {
            PresenterDataItem pdi = new PresenterDataItem(new TimeSpan(this.timestamp.Ticks), "NOOP", null);

            pdi.opcode    = this.opcode;
            pdi.slide     = this.slide;
            pdi.type      = this.type;
            pdi.url       = this.url;
            pdi.timestamp = this.timestamp;
            pdi.data      = new byte[this.data.Length];
            Array.Copy(this.data, 0, pdi.data, 0, this.data.Length);

            return(pdi);
        }
Example #2
0
        /// <summary>
        /// Deserialize CXP3 data and set opcodes and slide numbers.
        /// </summary>
        public static void DeserializeRTNav(PresenterDataItem pdi)
        {
            if (pdi.Type == "CXP3")
            {
                pdi.RTNav = Helpers.ByteArrayToObject(pdi.Data);
                if (pdi.RTNav == null)
                {
                    return;
                }

                if (pdi.RTNav is ArchiveRTNav.RTDeleteStroke)                 //delete one stroke
                {
                    pdi.Opcode   = PacketType.ScribbleDelete;
                    pdi.Slide    = ((ArchiveRTNav.RTDeleteStroke)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTDeleteStroke)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTEraseLayer)                  //delete strokes on current slide
                {
                    pdi.Opcode   = PacketType.ClearScribble;
                    pdi.Slide    = ((ArchiveRTNav.RTEraseLayer)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTEraseLayer)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTEraseAllLayers)                 //delete all strokes on all slides
                {
                    pdi.Opcode   = PacketType.ClearAnnotations;
                    pdi.DeckGuid = ((ArchiveRTNav.RTEraseAllLayers)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTUpdate)
                {
                    pdi.Opcode   = PacketType.RTUpdate;
                    pdi.Slide    = ((ArchiveRTNav.RTUpdate)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTUpdate)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTDrawStroke)
                {
                    pdi.Opcode   = PacketType.Scribble;
                    pdi.Slide    = ((ArchiveRTNav.RTDrawStroke)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTDrawStroke)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTScrollLayer)
                {
                    pdi.Opcode   = PacketType.Scroll;
                    pdi.Slide    = ((ArchiveRTNav.RTScrollLayer)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTScrollLayer)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTTextAnnotation)
                {
                    pdi.Opcode   = PacketType.RTText;
                    pdi.Slide    = ((ArchiveRTNav.RTTextAnnotation)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTTextAnnotation)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTImageAnnotation)
                {
                    pdi.Opcode   = PacketType.RTImageAnnotation;
                    pdi.Slide    = ((ArchiveRTNav.RTImageAnnotation)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTImageAnnotation)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTDeleteTextAnnotation)
                {
                    pdi.Opcode   = PacketType.RTDeleteText;
                    pdi.Slide    = ((ArchiveRTNav.RTDeleteTextAnnotation)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTDeleteTextAnnotation)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTDeleteAnnotation)
                {
                    //TODO: this might delete a text or an image.
                    pdi.Opcode   = PacketType.RTDeleteText;
                    pdi.Slide    = ((ArchiveRTNav.RTDeleteAnnotation)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTDeleteAnnotation)pdi.RTNav).DeckGuid;
                }
                else if (pdi.RTNav is ArchiveRTNav.RTQuickPoll)
                {
                    pdi.Opcode   = PacketType.RTQuickPoll;
                    pdi.Slide    = ((ArchiveRTNav.RTQuickPoll)pdi.RTNav).SlideIndex;
                    pdi.DeckGuid = ((ArchiveRTNav.RTQuickPoll)pdi.RTNav).DeckGuid;
                }
                else
                {
                    //Type t = rtobj.GetType();
                    //parent.LoggerWriteInvoke("**Unhandled RTObject Type:" + t.ToString());
                }
            }
        }