Exemplo n.º 1
0
        private bool LoadSaveAnimationStruct()
        {
            CompositionBox _compositionBox = new CompositionBox();

            try
            {
                _compositionBox = (CompositionBox)((MainForm)MdiParent).Jpeg2000Eng.ReadBox(_name, Jpeg2000BoxType.CompositionBox, 0);
            }
            catch
            {
                return(false);
            }

            // There must be only one composition box
            RenderHeight = _compositionBox.CompositionOptions.Height;
            if (RenderHeight == 0)
            {
                RenderHeight = DefaultViewerHeight;
            }

            RenderWidth = _compositionBox.CompositionOptions.Width;
            if (RenderWidth == 0)
            {
                RenderWidth = DefaultViewerWidth;
            }

            LoopAnimation  = (Convert.ToInt32(_compositionBox.CompositionOptions.Loop) == 255) ? true : false;
            AnimationDelay = 0;

            if (_compositionBox.Instructions[0].Type == 4)
            {
                AnimationDelay = _compositionBox.Instructions[0].Instructions[0].Life * _compositionBox.Instructions[0].Tick;
            }

            if (AnimationDelay == 0)
            {
                AnimationDelay = DefaultDelay;
            }

            return(true);
        }
Exemplo n.º 2
0
        private void _btnSave_Click(object sender, EventArgs e)
        {
            if (_txtFileName.Text == "")
            {
                Messager.ShowError(this, "Please select a file");
                return;
            }

            Jpeg2000FileInformation _fileInformation;
            CompositionBox          _compositionBox;
            CompositionBoxOptions   _compositionBoxOptionsNode;
            InstructionSet          _instructionSetNode;
            InstructionSetParameter _instructionSetParameterNode;

            _fileInformation = (Jpeg2000FileInformation)ParentMainForm.Jpeg2000Eng.GetFileInformation(_txtFileName.Text);
            if (_fileInformation.Composition != null)
            {
                Messager.ShowError(this, "This file already has animation information!");
                return;
            }

            _compositionBox                   = new CompositionBox();
            _compositionBoxOptionsNode        = new CompositionBoxOptions();
            _compositionBoxOptionsNode.Height = ParentMainForm.ActiveViewerForm.RenderHeight;
            _compositionBoxOptionsNode.Width  = ParentMainForm.ActiveViewerForm.RenderWidth;

            if (ParentMainForm.ActiveViewerForm.LoopAnimation)
            {
                _compositionBoxOptionsNode.Loop = 255;
            }
            else
            {
                _compositionBoxOptionsNode.Loop = 0;
            }
            _compositionBox.CompositionOptions = _compositionBoxOptionsNode;

            _instructionSetNode            = new InstructionSet();
            _instructionSetNode.Type       = 0x4;//Life Persis, N
            _instructionSetNode.Repetition = _fileInformation.Frame.Length;;
            _instructionSetNode.Tick       = 1;

            _instructionSetParameterNode         = new InstructionSetParameter();
            _instructionSetParameterNode.Life    = ParentMainForm.ActiveViewerForm.AnimationDelay;
            _instructionSetParameterNode.Persist = 0;
            _instructionSetParameterNode.NextUse = 0;
            _instructionSetNode.Instructions.Add(_instructionSetParameterNode);

            _compositionBox.Instructions.Add(_instructionSetNode);

            try
            {
                ParentMainForm.Jpeg2000Eng.AppendBox(_txtFileName.Text, _compositionBox);

                Messager.ShowInformation(this, "Animation settings was saved successfully!");
            }
            catch (Exception ex)
            {
                Messager.ShowError(this, ex);
                return;
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
        }