bool StemDetection::isStem(Stem & stem)
{
	int nRows = vBoard.size(), nCols = vBoard[0].size();
	Point2i minX = stem.GetMinX(), maxX = stem.GetMaxX();
	int height = stem.GetHeight();

	for (int x = minX.x; x <= min(minX.x + height / 4, maxX.x); x++)
	{
		int dist = maximumCanGo(x, minX.y, staffLineHeight);
		if (dist >= 3 * staffLineHeight) return true;
		/*int tolerance = staffLineHeight;
		int xLeft = minX.y, xRight = minX.y;
		while (xLeft >= 0)
		{
			if (vBoard[x][xLeft] == BLACK)
				xLeft--;
			else if (tolerance > 0)
			{
				xLeft--;
				tolerance--;
			}
			else
				break;
		}
		xLeft++;

		while (xRight < nCols)
		{
			if (vBoard[x][xRight] == BLACK)
				xRight++;
			else if (tolerance > 0)
			{
				xRight++;
				tolerance--;
			}
			else
				break;
		}
		xRight--;
		if (xRight - xLeft + 1 >= 3 * staffLineHeight)
			return true;*/
	}

	for (int x = maxX.x; x >= max(maxX.x - height / 4, minX.x); x--)
	{
		int dist = maximumCanGo(x, maxX.y, staffLineHeight);
		if (dist >= 3 * staffLineHeight) return true;
		/*int tolerance = staffLineHeight;
		int xLeft = maxX.y, xRight = maxX.y;
		while (xLeft >= 0)
		{
			if (vBoard[x][xLeft] == BLACK)
				xLeft--;
			else if (tolerance > 0)
			{
				xLeft--;
				tolerance--;
			}
			else
				break;
		}
		xLeft++;

		while (xRight < nCols)
		{
			if (vBoard[x][xRight] == BLACK)
				xRight++;
			else if (tolerance > 0)
			{
				xRight++;
				tolerance--;
			}
			else
				break;
		}
		xRight--;
		if (xRight - xLeft + 1 >= 3 * staffLineHeight)
			return true;*/
	}

	return false;
}