Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="patch"></param>
        /// <param name="atLeastOnePatchIsPasted">Or-s the value with True if the patch is pasted</param>
        /// <returns></returns>
        bool PasteToSelectedPatch(IPatch patch, ref bool atLeastOnePatchIsPasted)
        {
            if ((patch.IsEmptyOrInit || (PcgClipBoard.PastePcgMemory == SelectedPcgMemory)) &&
                !PcgClipBoard.ProtectedPatches.Contains(patch))
            {
                IClipBoardPatches clipBoardPatches = null;
                var overwriteAllowed = CheckOverwriteallowedForPatches(patch, ref clipBoardPatches);

                IClipBoardPatch clipBoardPatchToPaste = null;
                if (clipBoardPatches != null) // Can happen when not allowed to overwrite
                {
                    clipBoardPatchToPaste = PcgClipBoard.GetFirstPatchToPaste(clipBoardPatches.CopiedPatches);
                }

                if (clipBoardPatchToPaste == null)
                {
                    if (overwriteAllowed)
                    {
                        return(false); // Finished pasting (this kind of patches)
                    }
                }
                else
                {
                    atLeastOnePatchIsPasted = true;
                    PcgClipBoard.PastePatch(clipBoardPatchToPaste, patch);
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="combi"></param>
        public ClipBoardCombi(IPatch combi) : base(combi.Root.Content, combi.ByteOffset, combi.ByteLength)
        {
            OriginalLocation = combi;

            References = new ClipBoardPatches();

            KronosOs1516Content =
                new byte[KronosCombiBanks.ParametersInCbk2Chunk * KronosTimbres.TimbresPerCombiConstant];

            var memory = combi.Root as KronosPcgMemory;

            // CBK2 content.
            if ((memory != null) && (memory.Model.OsVersion == Models.EOsVersion.EOsVersionKronos15_16))
            {
                for (var parameter = 0; parameter < KronosCombiBanks.ParametersInCbk2Chunk; parameter++)
                {
                    for (var timbre = 0; timbre < KronosTimbres.TimbresPerCombiConstant; timbre++)
                    {
                        var patchParameterOffset = ((KronosCombiBank)
                                                    (combi.Parent)).GetParameterOffsetInCbk2(combi.Index, timbre, parameter);

                        KronosOs1516Content[parameter + timbre * KronosCombiBanks.ParametersInCbk2Chunk] =
                            combi.Root.Content[patchParameterOffset];
                    }
                }
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="patch"></param>
 /// <param name="clipBoardPatches"></param>
 /// <param name="overwriteAllowed"></param>
 /// <returns></returns>
 private bool CheckOverwriteAllowedForWaveSequences(IPatch patch, out IClipBoardPatches clipBoardPatches, bool overwriteAllowed)
 {
     clipBoardPatches = null;
     if (((IBank)(patch.Parent)).IsWritable &&
         (Settings.Default.CopyPaste_OverwriteFilledWaveSequences || patch.IsEmptyOrInit))
     {
         clipBoardPatches = PcgClipBoard.WaveSequences;
         overwriteAllowed = true;
     }
     return(overwriteAllowed);
 }
Ejemplo n.º 4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="clipBoardPatches"></param>
 /// <param name="patch1"></param>
 /// <param name="overwriteAllowed"></param>
 /// <returns></returns>
 private bool CheckOverwriteAllowedForPrograms(out IClipBoardPatches clipBoardPatches, IProgram patch1,
                                               bool overwriteAllowed)
 {
     clipBoardPatches = null;
     if (((IBank)(patch1.Parent)).IsWritable &&
         (Settings.Default.CopyPaste_OverwriteFilledPrograms || patch1.IsEmptyOrInit))
     {
         var program = patch1;
         clipBoardPatches = PcgClipBoard.Programs[(int)(((IProgramBank)(program.Parent)).BankSynthesisType)];
         overwriteAllowed = true;
     }
     return(overwriteAllowed);
 }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="patch"></param>
        /// <param name="clipBoardPatches"></param>
        /// <returns></returns>
        private bool CheckOverwriteallowedForPatches(IPatch patch, ref IClipBoardPatches clipBoardPatches)
        {
            bool overwriteAllowed;

            var patch1 = patch as IProgram;

            if (patch1 != null)
            {
                overwriteAllowed = CheckOverwriteAllowedForPrograms(out clipBoardPatches, patch1, false);
            }
            else if (patch is Combi)
            {
                overwriteAllowed = CheckOverwriteAllowedForCombis(patch, out clipBoardPatches, false);
            }
            else if (patch is SetListSlot)
            {
                overwriteAllowed = CheckOverwriteAllowedForSetListSlots(patch, out clipBoardPatches, false);
            }
            else if (patch is DrumKit)
            {
                overwriteAllowed = CheckOverwriteAllowedForDrumKits(patch, out clipBoardPatches, false);
            }
            else if (patch is DrumPattern)
            {
                overwriteAllowed = CheckOverwriteAllowedForDrumPatterns(patch, out clipBoardPatches, false);
            }
            else if (patch is WaveSequence)
            {
                overwriteAllowed = CheckOverwriteAllowedForWaveSequences(patch, out clipBoardPatches, false);
            }
            else
            {
                throw new ApplicationException("Illegal type");
            }
            return(overwriteAllowed);
        }