void SourcesManager::groupClean()
	{
		for(int i = 0; i <= getNumberOfGroups(); i++)
		{
			if(groupGetExistence(i))
			{
				for(int j = 0; j <= getNumberOfGroups(); j++)
				{
					if (i != j && groupGetExistence(j))
					{
						if(groupGetNumberOfSources(i) == groupGetNumberOfSources(j))
						{
							int check = 0;
							for(int k = 0; k < groupGetNumberOfSources(i); k++)
							{
								for(int l = 0; l < groupGetNumberOfSources(i); l++)
								{
									if(groupGetSourceIndex(i, k) == groupGetSourceIndex(j, l))
										check++;
								}
							}
							if(check == groupGetNumberOfSources(j))
								groupRemove(j);
						}
					}
				}
			}
		}

		for(int i = 0; i < getNumberOfGroups(); i++)
		{
			if(groupGetExistence(i))
			{
				if(groupGetNumberOfSources(i) < 2)
				{
					groupRemove(i);
				}
			}
		}
	}
	bool SourcesManager::groupGetIfSourceMuted(long index)
	{
		if(index < m_groups.size() && index >= 0)
		{
			for(long i = 0; i < groupGetNumberOfSources(index); i++)
			{
				if(sourceGetMute(groupGetSourceIndex(index, i)))
				{
					return true;
				}
			}
		}
		return false;
	}
示例#3
0
	void SourcesManager::copyTo(SourcesManager* sourcesManagerDestination)
	{
		double* color;
		sourcesManagerDestination->setExistence(0);
		if(getExistence() == 1)
		{
			sourcesManagerDestination->setExistence(1);
			sourcesManagerDestination->setMaximumRadius(getLimitMaximum());
			
			for(long i = 0; i <= getMaximumIndexOfSource(); i++)
			{
				if(sourceGetExistence(i) == 1)
				{
					color = sourceGetColor(i);
					sourcesManagerDestination->sourceSetRadius(i, sourceGetRadius(i));
					sourcesManagerDestination->sourceSetAzimuth(i, sourceGetAzimuth(i));
					sourcesManagerDestination->sourceSetElevation(i, sourceGetElevation(i));
					sourcesManagerDestination->sourceSetColor(i, color[0], color[1], color[2], color[3]);
					sourcesManagerDestination->sourceSetDescription(i, sourceGetDescription(i));
					sourcesManagerDestination->sourceSetMute(i, sourceGetMute(i));
				}
			}
			for(long i = 0; i <= getMaximumIndexOfGroup(); i++)
			{
				if(groupGetExistence(i) == 1)
				{
					for(long j = 0; j < groupGetNumberOfSources(i); j++)
					{
						sourcesManagerDestination->groupSetSource(i, groupGetSourceIndex(i, j));
					}
					color = groupGetColor(i);
					sourcesManagerDestination->groupSetColor(i, color[0], color[1], color[2], color[3]);
					sourcesManagerDestination->groupSetDescription(i, groupGetDescription(i));
				}
			}
		}
	}