Esempio n. 1
0
		private void NextPixel()
		{
			// Create new RGB Channel
			RGBchannel rgbCh = seq.CreateRGBchannel(pixelName);

			string chName = MakeChannelName("R");
			Channel chan = seq.CreateChannel(chName);
			chan.color = utils.LORCOLOR_RED;
			chan.rgbChild = RGBchild.Red;
			rgbCh.redChannel = chan;
			chan.rgbParent = rgbCh;
			chan.output.deviceType = DeviceType.DMX;
			chan.output.universe = univ;
			chan.output.channel = chNum;
			IncrementDMXchannel(1);

			chName = MakeChannelName("G");
			chan = seq.CreateChannel(chName);
			chan.color = utils.LORCOLOR_GRN;
			chan.rgbChild = RGBchild.Green;
			rgbCh.grnChannel = chan;
			chan.rgbParent = rgbCh;
			chan.output.deviceType = DeviceType.DMX;
			chan.output.universe = univ;
			chan.output.channel = chNum;
			IncrementDMXchannel(1);

			chName = MakeChannelName("B");
			chan = seq.CreateChannel(chName);
			chan.color = utils.LORCOLOR_BLU;
			chan.rgbChild = RGBchild.Blue;
			rgbCh.bluChannel = chan;
			chan.rgbParent = rgbCh;
			chan.output.deviceType = DeviceType.DMX;
			chan.output.universe = univ;
			chan.output.channel = chNum;
			if (direction == 1)
			{
				IncrementDMXchannel(1);
			}
			else
			{
				IncrementDMXchannel(-5);
			}


			colGroups[col - 1].AddItem(rgbCh);
			rowGroups[row - 1].AddItem(rgbCh);

			lstPixelNames.Items.Add(pixelName);
			lstPixelNames.SelectedIndex = lstPixelNames.Items.Count - 1;


			// Update display for the NEXT pixel
			pixel++;
			px++;
			txtPixel.Text = pixel.ToString("000");
			txtPx.Text = px.ToString();
			txtUniv.Text = univ.ToString();
			txtCh.Text = chNum.ToString("000");
			pixelName = MakePixelName();
			lblPixelName.Text = pixelName;
			HighlightCol3(col);


			if (pixel == 301)
			{
				btnSave.Enabled = true;
				btnNextCol.Enabled = false;
				btnNextPixel.Enabled = false;
				SystemSounds.Asterisk.Play();
			}
			else
			{
				SystemSounds.Beep.Play();
			}


		}
Esempio n. 2
0
		} // end btnMake_Click()

		public void AddStrip()
		{
			int pixID = stripStart;
			int nextSI = seq.Members.HighestSavedIndex;
			int groupMember = 1;
			int uch = 1;
			if (chIncr < 0) uch = stripCount * 3 - 2;
			int trkNum = Int16.Parse(txtTrack.Text) - 1;
			string chName;
			Channel redChannel = new Channel("(R)");  // Just placeholders
			Channel grnChannel = new Channel("(G)");
			Channel bluChannel = new Channel("(B)");
			//RGBchannel RGB_Channel = new RGBchannel("RGB");
			//ChannelGroup pixelGroup = new ChannelGroup();
			int chx;
			//groupCount = 0;
			int stripKeywdel = stripStart;
			int RGBFirstDMXchannel = 1;
			int RGBLastDMXchannel = -1;
			//int pixNumFirst = pixelNum;
			//int pixNumLast = pixNumFirst + groupSize - 1;
			//int stripNumFirst = stripStart;
			//int stripNumLast = 1;
			//int dmxChFirst = 1;
			//int dmxChLast = -1;


			/////////////////////////////////
			// MAKE A GROUP FOR THE STRIP //
			///////////////////////////////
			int dmxCount = stripCount * 3;
			if (reversed)
			{
				//Reverse
				int bb = stripEnd * 3 - 2;
				//chName = stripName + " Keywdels " + stripStart.ToString("000") + "-" + stripEnd.ToString("000") + " (U" + universeNum.ToString() + "." + bb.ToString("000") + "-" + dmxCount.ToString("000") + ")";
				int sst = pixelNum;
				int est = pixelNum + Math.Max(stripStart, stripEnd);
				chName = stripName + " Keywdels " + sst.ToString("000") + "-" + est.ToString("000");
				chName += " / S" + stripNum.ToString() + "." + stripStart.ToString("000") + "-" + stripEnd.ToString("000");
				chName += " / U" + universeNum.ToString() + "." + bb.ToString("000") + "-" + dmxCount.ToString("000") + ")";
			}
			else
			{
				// Forward
				//chName = stripName + " Keywdels " + stripStart.ToString("000") + "-" + stripCount.ToString("000") + " (U" + universeNum.ToString() + "." + stripStart.ToString("000") + "-" + dmxCount.ToString("000") + ")";
				chName = stripName + " Keywdels " + pixNumFirst.ToString("000") + "-" + pixNumLast.ToString("000");
				chName += " / S" + stripNum.ToString() + "." + stripStart.ToString("000") + "-" + stripEnd.ToString("000");
				chName += " / U" + universeNum.ToString() + "." + stripStart.ToString("000") + "-" + dmxCount.ToString("000") + ")";
			}
			ChannelGroup stripGroup = seq.CreateChannelGroup(chName);

			///////////////////////////////////////////////////////////
			// MAKE AN INITIAL CHANNEL GROUP FOR THE PIXEL GROUPING //
			/////////////////////////////////////////////////////////
			if (eaveNaming)
			{
				string gn = " Group ";
				if (groupNumber < 18)
				{
					//gn += (18 - groupNumber).ToString("00") + "L";
					gn += (groupNumber).ToString("00") + "L";
				}
				else
				{
					//gn += (groupNumber - 17).ToString("00") + "R";
					gn += (35 - groupNumber).ToString("00") + "R";
				}
				if (groupCount > 0)
				{
					gn += "b";
				}
				chName = stripName + gn;

			}
			else
			{
				//chName = stripName + " Keywdels " + stripNumFirst.ToString("000") + "-" + stripKeywdel.ToString("000");
				chName = stripName;
				//chName = " Keywdels " + (pixelNum - groupSize).ToString("000") + "-" + pixelNum.ToString("000") + " / S" + stripNum.ToString() + "." + stripNumFirst.ToString("000") + "-" + stripKeywdel.ToString("000") + " / U" + universeNum.ToString() + "." + dmxChFirst.ToString("000") + "-" + dmxChLast.ToString("000");
			}
			/*
			if (reversed)
			{
				stripNumFirst = stripStart;
				stripNumLast = stripStart - groupSize + 1;
				dmxChFirst = dmxCount - groupSize * 3 + 1;
				dmxChLast = dmxCount;
			}
			else
			{
				stripNumFirst = stripStart;
				stripNumLast = stripStart + groupSize - 1;
				dmxChFirst = 1;
				dmxChLast = groupSize * 3 - 1;
			}
			*/
			chName += " Keywdels " + pixNumFirst.ToString("000") + "-" + pixNumLast.ToString("000");
			chName += " / S" + stripNum.ToString() + "." + stripNumFirst.ToString("000") + "-" + stripNumLast.ToString("000");
			chName += " / U" + universeNum.ToString() + "." + dmxChFirst.ToString("000") + "-" + dmxChLast.ToString("000") + ")";
			ChannelGroup pixelGroup = seq.CreateChannelGroup(chName);
			stripGroup.AddItem(pixelGroup);


//			int gc = 
			pixNumFirst = (groupCount + 1) * groupSize + 1;
			pixNumLast = (groupCount + 2) * groupSize;
			stripNumFirst += (groupSize * chIncr);
			stripNumLast += (groupSize * chIncr) + 1;
			dmxChFirst += (groupSize * 3 * chIncr);
			dmxChLast += (groupSize * 3 * chIncr);
			
			if (stripNum == 2 )
			{
				pixNumFirst = 181;
				pixNumLast = 200;
				stripNumFirst = 11;
				stripNumLast = 30;
				dmxChFirst = 31;
				dmxChLast = 90;
			}
			if (stripNum == 3)
			{
				pixNumFirst = 361;
				pixNumLast = 380;
				stripNumFirst = 150;
				stripNumLast = 131;
				dmxChFirst = 391;
				dmxChLast = 450;
			}
			if (stripNum == 4)
			{
				pixNumFirst = 521;
				pixNumLast = 540;
				stripNumFirst = 11;
				stripNumLast = 30;
				dmxChFirst = 31;
				dmxChLast = 90;
			}



			string prfx = "";
			if (eaveNaming)
			{
				prfx = "Eave ";
			}

			//////////////////////
			// MAKE THE STRIP! //
			////////////////////
			while ((stripKeywdel > 0) && (stripKeywdel <= stripCount))
			{
				if (chOrder == 1) // RGB Order
				{
					//chName = stripName + " Keywdel " + stripKeywdel.ToString("000") + "(R) (U" + universeNum.ToString() + "." + uch.ToString("000") + ")";
					chName = prfx + "Keywdel " + pixelNum.ToString("000");
					chName += " (R) / S" + stripNum.ToString() + "." + stripKeywdel.ToString("000");
					chName += " / U" + universeNum.ToString() + "." + uch.ToString("000");
					redChannel = seq.CreateChannel(chName);
					redChannel.output.circuit = uch;
					RGBFirstDMXchannel = uch;
					uch++;

					//chName = stripName + " Keywdel " + stripKeywdel.ToString("000") + "(G) (U" + universeNum.ToString() + "." + uch.ToString("000") + ")";
					chName = prfx + "Keywdel " + pixelNum.ToString("000");
					chName += " (G) / S" + stripNum.ToString() + "." + stripKeywdel.ToString("000");
					chName += " / U" + universeNum.ToString() + "." + uch.ToString("000");
					grnChannel = seq.CreateChannel(chName);
					grnChannel.output.circuit = uch;
					uch++;

					chName = prfx + "Keywdel " + pixelNum.ToString("000");
					chName += " (B) / S" + stripNum.ToString() + "." + stripKeywdel.ToString("000");
					chName += " / U" + universeNum.ToString() + "." + uch.ToString("000");
					bluChannel = seq.CreateChannel(chName);
					bluChannel.output.circuit = uch;
					RGBLastDMXchannel = uch;
					uch++;
				}

				if (chOrder == 2) // GRB Order
				{
					//chName = stripName + " Keywdel " + stripKeywdel.ToString("000") + "(G) (U" + universeNum.ToString() + "." + uch.ToString("000") + ")";
					chName = prfx + "Keywdel " + pixelNum.ToString("000");
					chName += " (G) / S" + stripNum.ToString() + "." + stripKeywdel.ToString("000");
					chName += " / U" + universeNum.ToString() + "." + uch.ToString("000");
					grnChannel = seq.CreateChannel(chName);
					grnChannel.output.circuit = uch;
					RGBFirstDMXchannel = uch;
					uch++;

					//chName = stripName + " Keywdel " + stripKeywdel.ToString("000") + "(R) (U" + universeNum.ToString() + "." + uch.ToString("000") + ")";
					chName = prfx + "Keywdel " + pixelNum.ToString("000");
					chName += " (R) / S" + stripNum.ToString() + "." + stripKeywdel.ToString("000");
					chName += " / U" + universeNum.ToString() + "." + uch.ToString("000");
					redChannel = seq.CreateChannel(chName);
					redChannel.output.circuit = uch;
					uch++;

					//chName = stripName + " Keywdel " + stripKeywdel.ToString("000") + "(B) (U" + universeNum.ToString() + "." + uch.ToString("000") + ")";
					chName = prfx + "Keywdel " + pixelNum.ToString("000");
					chName += " (B) / S" + stripNum.ToString() + "." + stripKeywdel.ToString("000");
					chName += " / U" + universeNum.ToString() + "." + uch.ToString("000");
					bluChannel = seq.CreateChannel(chName);
					bluChannel.output.circuit = uch;
					RGBLastDMXchannel = uch;
					uch++;
				}
				redChannel.output.deviceType = DeviceType.DMX;
				redChannel.output.network = universeNum;
				redChannel.color = utils.LORCOLOR_RED;
				grnChannel.output.deviceType = DeviceType.DMX;
				grnChannel.output.network = universeNum;
				grnChannel.color = utils.LORCOLOR_GRN;
				bluChannel.output.deviceType = DeviceType.DMX;
				bluChannel.output.network = universeNum;
				bluChannel.color = utils.LORCOLOR_BLU;


				//dmxChLast = uch - 1;
				chx = uch - 2;
				//chName = stripName + " Keywdel " + stripKeywdel.ToString("000") + " (U" + universeNum.ToString() + "." + RGBFirstDMXchannel.ToString("000") + "-" + RGBLastDMXchannel.ToString("000") + ")";
				chName = prfx + "Keywdel " + pixelNum.ToString("000");
				chName += " / S" + stripNum.ToString() + "." + stripKeywdel.ToString("000");
				chName += " / U" + universeNum.ToString() + "." + RGBFirstDMXchannel.ToString("000") + "-" + RGBLastDMXchannel.ToString("000");
				RGBchannel RGB_Channel = seq.CreateRGBchannel(chName);
				RGB_Channel.redChannel = redChannel;
				RGB_Channel.grnChannel = grnChannel;
				RGB_Channel.bluChannel = bluChannel;
				pixelNum++;

				pixelGroup.AddItem(RGB_Channel);
				groupCount++;

				//////////////////////////////////
				// IS THE GROUP FULL?          //
				// iF SO, CREATE THE NEXT ONE //
				///////////////////////////////
				if (stripKeywdel < stripCount)
				{
					if (groupCount >= groupSize)
					{
						//stripNumLast = stripNumFirst + groupSize;
						//int uchStart = stripKeywdel * 3 - 2;
						if (chIncr < 0)
						{
							// Reverse
							//dmxChFirst = stripKeywdel * 3 - 2;
							//dmxChLast = stripNumFirst * 3;
						}
						else
						{
							// Forward
							// OK as-is
						}

						groupNumber++;
						//dmxChFirst = uch;
						//stripNumFirst = stripKeywdel + chIncr;
						if (eaveNaming)
						{
							string gn = " Group ";
							if (groupNumber < 18)
							{
								//gn += (18 - groupNumber).ToString("00") + "L";
								gn += (groupNumber).ToString("00") + "L";
							}
							else
							{
								//gn += (groupNumber - 17).ToString("00") + "R";
								gn += (35 - groupNumber).ToString("00") + "R";
							}
							chName = stripName + gn;
						}
						else
						{
							chName = stripName;
						}
						chName += " Keywdels " + pixNumFirst.ToString("000") + "-" + pixNumLast.ToString("000");
						chName += " / S" + stripNum.ToString() + "." + stripNumFirst.ToString("000") + "-" + stripNumLast.ToString("000");
						chName += " / U" + universeNum.ToString() + "." + dmxChFirst.ToString("000") + "-" + dmxChLast.ToString("000") + ")";
						pixelGroup = seq.CreateChannelGroup(chName);
						stripGroup.AddItem(pixelGroup);

						pixNumFirst = pixNumLast + 1;
						pixNumLast += groupSize;
						dmxChFirst += (groupSize * 3 * chIncr);
						dmxChLast += (groupSize * 3 * chIncr);
						stripNumFirst += (groupSize * chIncr);
						stripNumLast += (groupSize * chIncr);

						//pixelGroup = new ChannelGroup();
						groupCount = 0; // Reset

					}
				}
				else
				{
				}

				stripKeywdel += chIncr;
				if (chIncr < 0) uch -= 6;


				/////////////////////////////////
			} // end while pixel # in range //
				///////////////////////////////

			// Is there any leftover pixels?
			// (Happens when strip size is not evenly divisible by group size)
			if (groupCount > 0)
			{
				if (eaveNaming)
				{
					string gn = " Group ";
					if (groupNumber < 18)
					{
						//gn += (18 - groupNumber).ToString("00") + "aL";
						gn += (groupNumber).ToString("00") + "aL";
					}
					else
					{
						//gn += (groupNumber - 17).ToString("00") + "aR";
						gn += (35 - groupNumber).ToString("00") + "aR";
					}
					chName = stripName + gn;

				}
				else
				{
					chName = stripName;
				}
				pixNumFirst -= groupSize;
				pixNumLast = Math.Max(stripStart, stripEnd);
				stripNumFirst -= (groupSize * chIncr);
				stripNumLast = 1; //TODO Fix!
				dmxChFirst -= (groupSize * 3 * chIncr);
				dmxChLast = 1;
				chName += " Keywdels " + pixNumFirst.ToString("000") + "-" + pixNumLast.ToString("000");
				chName += " / S" + stripNum.ToString() + "." + stripNumFirst.ToString("000") + "-" + (stripKeywdel + 1).ToString("000");
				chName += " / U" + universeNum.ToString() + ".001" + "-" + dmxChLast.ToString("000") + ")";

				pixelGroup.ChangeName(chName);
				stripGroup.AddItem(pixelGroup);
				//dmxChFirst = uch;
				//stripNumFirst = stripKeywdel + chIncr;

			}
			if (groupCount >= groupSize)
			{
				groupNumber++;
				groupCount = 0;
			}

			// Add the Strip to the Track
			seq.Tracks[trkNum].AddItem(stripGroup);

		} // end void AddStrip();
Esempio n. 3
0
        private void MergeMembers(Membership destMembers, Membership sourceMembers)
        {
            bool found = true;

            // May be called recursively
            //foreach (IMember sourceMember in sourceMembers) // foreach and enumerable not working, fix!
            for (int smi = 0; smi < sourceMembers.Count; smi++)
            {
                IMember sourceMember = sourceMembers[smi];
                if (sourceMember.MemberType == MemberType.Channel)
                {
                    Channel sourceCh = (Channel)sourceMember;
                    Channel destCh   = MergeChannel(sourceCh, destMembers);
                }

                if (sourceMember.MemberType == MemberType.RGBchannel)
                {
                    found = true;                     // reset to default
                    Channel    destCh    = null;      // placeholder
                    RGBchannel sourceRGB = (RGBchannel)sourceMember;
                    RGBchannel destRGB   = (RGBchannel)destMembers.Find(sourceRGB.Name, MemberType.RGBchannel, false);
                    if (destRGB == null)
                    {
                        found   = false;
                        destRGB = seqNew.CreateRGBchannel(sourceRGB.Name);
                        destMembers.Add(destRGB);

                        MergeRGBchildren(sourceRGB, destRGB);
                    }
                    else
                    {
                        if (duplicateNameAction == ACTIONuseSecond)
                        {
                            MergeRGBchildren(sourceRGB, destRGB);
                        }
                        if (duplicateNameAction == ACTIONkeepBoth)
                        {
                            destRGB = seqNew.CreateRGBchannel(sourceRGB.Name);
                            destMembers.Add(destRGB);

                            MergeRGBchildren(sourceRGB, destRGB);
                        }
                        if (duplicateNameAction == ACTIONaddNumber)
                        {
                            destRGB = seqNew.CreateRGBchannel(sourceRGB.Name + " (2)");
                            destMembers.Add(destRGB);

                            MergeRGBchildren(sourceRGB, destRGB);
                        }
                    }
                }

                if (sourceMember.MemberType == MemberType.ChannelGroup)
                {
                    ChannelGroup sourceGroup = (ChannelGroup)sourceMember;
                    ChannelGroup destGroup   = (ChannelGroup)destMembers.Find(sourceGroup.Name, MemberType.ChannelGroup, true);



                    // Should only happen once
                    if (destGroup.SavedIndex == 31)
                    {
                        System.Diagnostics.Debugger.Break();
                    }



                    //Recurse
                    MergeMembers(destGroup.Members, sourceGroup.Members);
                }
            }             // end loop thru 2nd Sequence's Track Items
        }
Esempio n. 4
0
		} // end void AddBatch();

		private RGBchannel MakeRGBch(string baseName, int row, int col, int pix)
		{
			string pxName = baseName;
			string chName = baseName;
			pxName = baseName + " [U" + universeNum.ToString() + ".";
			//if (optReverse1.Checked)
			//{
			//	pxName += (chanNum + 2).ToString() + "-" + chanNum.ToString() + "]";
			//}
			//else
			//{
				pxName += chanNum.ToString("000") + "-" + (chanNum + 2).ToString("000") + "]";
			//}
			RGBchannel theRGBch = seq.CreateRGBchannel(pxName);

			if (chOrder == 1) // RGB Order
			{
				chName = baseName + " [U" + universeNum.ToString() + "." + chanNum.ToString("000") + "] (R)";
				Channel redChannel = seq.CreateChannel(chName);
				redChannel.output.deviceType = DeviceType.DMX;
				redChannel.output.network = universeNum;
				redChannel.color = utils.LORCOLOR_RED;
				redChannel.Centiseconds = seq.Centiseconds;
				redChannel.output.circuit = chanNum;
				theRGBch.redChannel = redChannel;
				chanNum++;

				chName = baseName + " [U" + universeNum.ToString() + "." + chanNum.ToString("000") + "] (G)";
				Channel grnChannel = seq.CreateChannel(chName);
				grnChannel.output.deviceType = DeviceType.DMX;
				grnChannel.output.network = universeNum;
				grnChannel.color = utils.LORCOLOR_GRN;
				grnChannel.Centiseconds = seq.Centiseconds;
				grnChannel.output.circuit = chanNum;
				theRGBch.grnChannel = grnChannel;
				chanNum++;

				chName = baseName + " [U" + universeNum.ToString() + "." + chanNum.ToString("000") + "] (B)";
				Channel bluChannel = seq.CreateChannel(chName);
				bluChannel.output.deviceType = DeviceType.DMX;
				bluChannel.output.network = universeNum;
				bluChannel.color = utils.LORCOLOR_BLU;
				bluChannel.Centiseconds = seq.Centiseconds;
				bluChannel.output.circuit = chanNum;
				theRGBch.bluChannel = bluChannel;
				chanNum++;
			}


			//chanMatrix[sect, pxl] = theRGBch;
			treeMatrix[row, col, pix] = theRGBch;

			if (direction < 0)
			{
				chanNum -= 6;
				if (chanNum < 1)
				{
					chanNum = MAX_CH_PER_UNIV - 2;
					universeNum--;
				}
			}
			else
			{
				if (chanNum > (MAX_CH_PER_UNIV))
				{
					chanNum = 1;
					universeNum++;
				}
			}
			//pixelNum += direction; // Handled above in calling routine


			return theRGBch;
		}