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); }
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(); }