byte[] buildBrushSquare(byte[] brush, CPBrushInfo brushInfo) {
		int intSize = (int) (brushInfo.curSize + .99f);
		float center = intSize / 2.f;

		float size = brushInfo.curSize * (float) Math.sin(Math.PI / 4);
		float sizeX = (size / 2) / (1f + brushInfo.curSqueeze * MAX_SQUEEZE);
		float sizeY = (size / 2);

		float cosA = (float) Math.cos(brushInfo.curAngle);
		float sinA = (float) Math.sin(brushInfo.curAngle);

		int offset = 0;
		for (int j = 0; j < intSize; j++) {
			for (int i = 0; i < intSize; i++) {
				float x = (i + .5f - center);
				float y = (j + .5f - center);
				float dx = Math.abs(x * cosA - y * sinA);
				float dy = Math.abs(y * cosA + x * sinA);

				if (dx <= sizeX && dy <= sizeY) {
					brush[offset++] = (byte) 0xff;
				} else {
					brush[offset++] = 0;
				}
			}
		}

		return brush;
	}