Esempio n. 1
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public EditBitmapAnimation(Window owner, int setOffset,
                                   SortedList <int, VisualizationSet> editedList, VisBitmapAnimation origAnim)
        {
            InitializeComponent();
            Owner       = owner;
            DataContext = this;

            mSetOffset  = setOffset;
            mEditedList = editedList;
            mOrigAnim   = origAnim;

            // this will cause initialization of the Brush properties
            FrameDelayTimeMsec = DEFAULT_FRAME_DELAY.ToString();
            if (origAnim != null)
            {
                TagString          = origAnim.Tag;
                mFrameDelayIntMsec = PluginCommon.Util.GetFromObjDict(origAnim.VisGenParams,
                                                                      VisBitmapAnimation.P_FRAME_DELAY_MSEC_PARAM, DEFAULT_FRAME_DELAY);
                if (mFrameDelayIntMsec == DEFAULT_FRAME_DELAY)
                {
                    // check for old-style
                    mFrameDelayIntMsec = PluginCommon.Util.GetFromObjDict(origAnim.VisGenParams,
                                                                          VisBitmapAnimation.P_FRAME_DELAY_MSEC_PARAM_OLD, DEFAULT_FRAME_DELAY);
                }
                FrameDelayTimeMsec = mFrameDelayIntMsec.ToString();
            }
            else
            {
                TagString = "anim" + mSetOffset.ToString("x6");
            }

            PopulateItemLists();
        }
Esempio n. 2
0
        private void RemoveButton_Click(object sender, RoutedEventArgs e)
        {
            Visualization item  = (Visualization)visualizationGrid.SelectedItem;
            int           index = visualizationGrid.SelectedIndex;

            VisualizationList.RemoveAt(index);

            // Keep selection at same index, unless we just removed the item at the end.
            if (index == VisualizationList.Count)
            {
                index--;
            }
            if (index >= 0)
            {
                visualizationGrid.SelectedIndex = index;
            }

            RemovedSerials.Add(item.SerialNumber);

            // Update any animations in this set.  Animations in other sets will be updated later.
            // (This is a bit awkward because we can't modify VisualizationList while iterating
            // through it, and there's no simple "replace entry" operation on an observable
            // collection.  Fortunately we don't do this often and the data sets are small.)
            List <VisBitmapAnimation> needsUpdate = new List <VisBitmapAnimation>();

            foreach (Visualization vis in VisualizationList)
            {
                if (vis is VisBitmapAnimation)
                {
                    VisBitmapAnimation visAnim = (VisBitmapAnimation)vis;
                    if (visAnim.ContainsSerial(item.SerialNumber))
                    {
                        needsUpdate.Add(visAnim);
                    }
                }
            }
            foreach (VisBitmapAnimation visAnim in needsUpdate)
            {
                VisBitmapAnimation newAnim;
                if (VisBitmapAnimation.StripEntries(visAnim,
                                                    new List <int>(1)
                {
                    item.SerialNumber
                }, out newAnim))
                {
                    if (newAnim.Count == 0)
                    {
                        VisualizationList.Remove(visAnim);
                    }
                    else
                    {
                        newAnim.GenerateImage(CreateEditedSetList());
                        index = VisualizationList.IndexOf(visAnim);
                        VisualizationList.Remove(visAnim);
                        VisualizationList.Insert(index, newAnim);
                    }
                }
            }
        }
Esempio n. 3
0
        private void OkButton_Click(object sender, RoutedEventArgs e)
        {
            Dictionary <string, object> visGenParams = new Dictionary <string, object>(1);

            visGenParams.Add(VisBitmapAnimation.P_FRAME_DELAY_MSEC_PARAM, mFrameDelayIntMsec);

            List <int> serials = new List <int>(VisAnimItems.Count);

            foreach (Visualization vis in VisAnimItems)
            {
                serials.Add(vis.SerialNumber);
            }

            NewAnim = new VisBitmapAnimation(TagString, VisBitmapAnimation.ANIM_VIS_GEN,
                                             new ReadOnlyDictionary <string, object>(visGenParams), mOrigAnim, serials);
            NewAnim.GenerateImage(mEditedList);

            DialogResult = true;
        }