Pinta.ImageManipulation.Effects.BrightnessContrastEffect.Calculate C# (CSharp) Method

Calculate() private method

private Calculate ( ) : void
return void
		private void Calculate ()
		{
			int multiply;

			if (contrast < 0) {
				multiply = contrast + 100;
				divide = 100;
			} else if (contrast > 0) {
				multiply = 100;
				divide = 100 - contrast;
			} else {
				multiply = 1;
				divide = 1;
			}

			if (rgbTable == null)
				rgbTable = new byte[65536];

			if (divide == 0) {
				for (var intensity = 0; intensity < 256; intensity++) {
					if (intensity + brightness < 128)
						rgbTable[intensity] = 0;
					else
						rgbTable[intensity] = 255;
				}
			} else if (divide == 100) {
				for (var intensity = 0; intensity < 256; intensity++) {
					var shift = (intensity - 127) * multiply / divide + 127 - intensity + brightness;

					for (var col = 0; col < 256; ++col) {
						var index = (intensity * 256) + col;
						rgbTable[index] = Utility.ClampToByte (col + shift);
					}
				}
			} else {
				for (var intensity = 0; intensity < 256; ++intensity) {
					var shift = (intensity - 127 + brightness) * multiply / divide + 127 - intensity;

					for (var col = 0; col < 256; ++col) {
						var index = (intensity * 256) + col;
						rgbTable[index] = Utility.ClampToByte (col + shift);
					}
				}
			}
		}
		#endregion