public void ReadFromFile() { var path = EditorUtility.OpenFilePanel("Load graded file", _settings.FilePath ?? "", "png"); if (!string.IsNullOrEmpty(path)) { _settings.FilePath = path; if (File.Exists(_settings.FilePath)) { var data = File.ReadAllBytes(_settings.FilePath); var screenshottexture = new Texture2D(16, 16, TextureFormat.ARGB32, false); screenshottexture.LoadImage(data); var imageResult = ImageResult.FromTexture(screenshottexture); if (imageResult != null) { LUTResult lutResult = imageResult.GetLUT(_settings.LUT); if (lutResult != null) { _lutWriter.SaveLUT(lutResult); } } } } }
public bool SendImage(ImageResult imageResult) { if (imageResult == null) { return(false); } _photoshopProtocol.SendImage(imageResult); return(true); }
public void Reload() { if (string.IsNullOrEmpty(_settings.FilePath)) { ReadFromFile(); return; } if (File.Exists(_settings.FilePath)) { var data = File.ReadAllBytes(_settings.FilePath); var screenshottexture = new Texture2D(16, 16, TextureFormat.ARGB32, false); screenshottexture.LoadImage(data); var imageResult = ImageResult.FromTexture(screenshottexture); if (imageResult != null) { LUTResult lutResult = imageResult.GetLUT(_settings.LUT); if (lutResult != null) { _lutWriter.SaveLUT(lutResult); } lutResult.Release(); } Texture2D.DestroyImmediate(screenshottexture); } else { if (EditorUtility.DisplayDialog("File doesnt exist", "Target file doesn't exit. Please select a new one.", "ok", "cancel")) { ReadFromFile(); return; } } }
public bool ReadBackBuffer(out ImageResult imageResult) { imageResult = null; if (_cameras == null) { Debug.LogError("[AmplifyColor] Camera collection is invalid."); return(false); } var camera = _cameras.SelectedCamera; if (camera == null) { Debug.LogError("[AmplifyColor] Selected camera is invalid."); return(false); } AmplifyColorBase component = camera.GetComponent <AmplifyColorBase>(); Tonemapping prevTonemapper = Tonemapping.Disabled; float prevExposure = 1.0f; float prevLinearWhitePoint = 11.2f; bool prevApplyDithering = false; float prevBlendAmount = 0.0f; Texture prevLUT = null; if (component != null) { prevTonemapper = component.Tonemapper; prevExposure = component.Exposure; prevLinearWhitePoint = component.LinearWhitePoint; prevApplyDithering = component.ApplyDithering; prevBlendAmount = component.BlendAmount; prevLUT = component.LutTexture; component.Tonemapper = ToolSettings.Instance.ApplyHDRControl ? component.Tonemapper : Tonemapping.Disabled; component.Exposure = ToolSettings.Instance.ApplyHDRControl ? component.Exposure : 1.0f; component.LinearWhitePoint = ToolSettings.Instance.ApplyHDRControl ? component.LinearWhitePoint : 11.2f; component.ApplyDithering = ToolSettings.Instance.ApplyHDRControl ? component.ApplyDithering : false; component.BlendAmount = ToolSettings.Instance.ApplyColorGrading ? component.BlendAmount : 0.0f; component.LutTexture = ToolSettings.Instance.ApplyColorGrading ? component.LutTexture : null; } var width = ToolSettings.Instance.Resolution.TargetWidth; var height = ToolSettings.Instance.Resolution.TargetHeight; //if (ToolSettings.Instance.Resolution.IsGameWindowSize) //{ // width = Screen.width; // height = Screen.height; //} var cameratarget = camera.targetTexture; var rt = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32); camera.targetTexture = rt; camera.Render(); camera.targetTexture = cameratarget; var activert = RenderTexture.active; RenderTexture.active = rt; var text = new Texture2D(width, height, TextureFormat.ARGB32, false); text.ReadPixels(new Rect(0, 0, width, height), 0, 0); text.Apply(); RenderTexture.active = activert; var colors = text.GetPixels(0, 0, width, height); Texture2D.DestroyImmediate(text); var colordata = new Color[width, height]; for (int i = height - 1; i >= 0; i--) { for (int j = 0; j < width; j++) { colordata[j, (height - 1 - i)] = colors[i * width + j]; colordata[j, (height - 1 - i)].a = 1; } } if (component != null) { component.Tonemapper = prevTonemapper; component.Exposure = prevExposure; component.LinearWhitePoint = prevLinearWhitePoint; component.ApplyDithering = prevApplyDithering; component.BlendAmount = prevBlendAmount; component.LutTexture = prevLUT; } imageResult = new ImageResult(colordata); return(true); }
public string SendImage( ImageResult imageData ) { if ( !_connection.Connect() ) { return "Error connecting to Photoshop."; } var stream = _connection.Stream; int width = imageData.Width; int height = imageData.Height; string password = EditorPrefs.GetString( "AmplifyColor.NetworkPassword", "password" ); _encryptDecrypt = new EncryptDecrypt( password ); try { /* WRITE */ var temp_stream = new MemoryStream(); var w = new BinaryWriter( temp_stream ); w.Write( SwapEndian( ProtocolVersion ) ); w.Write( SwapEndian( _transactionId++ ) ); w.Write( SwapEndian( ImageType ) ); w.Write( ( byte ) 2 ); //imagetype (2 for PixMap); w.Write( SwapEndian( width ) ); w.Write( SwapEndian( height ) ); w.Write( SwapEndian( width * 3 ) ); //bytesPerScanLine w.Write( ( byte ) 1 ); //color mode RGB w.Write( ( byte ) 3 ); //channel count w.Write( ( byte ) 8 ); //bits per channel var data = imageData.GenerateRGBData(); w.Write( data, 0, data.Length ); w.Flush(); long len = temp_stream.Length; temp_stream.Seek( 0, SeekOrigin.Begin ); BinaryReader r = new BinaryReader( temp_stream ); var message = new byte[ len ]; r.Read( message, 0, ( int ) len ); var encryptedMessage = _encryptDecrypt.encrypt( message ); int messageLength = CommLength + encryptedMessage.Length; stream.Write( BitConverter.GetBytes( messageLength ).Reverse().ToArray(), 0, 4 ); stream.Write( BitConverter.GetBytes( NoCommError ).Reverse().ToArray(), 0, 4 ); stream.Write( encryptedMessage, 0, encryptedMessage.Length ); // Photoshop CS6 will issue a response, make sure we skip it (small timeout) DateTime start = DateTime.Now; while ( ( DateTime.Now - start ).TotalMilliseconds < 100 ) { if ( !stream.DataAvailable ) continue; var buf = new byte[ 4 ]; stream.Read( buf, 0, 4 ); int length = BitConverter.ToInt32( buf.Reverse().ToArray(), 0 ); buf = new byte[ length ]; stream.Read( buf, 0, length ); } return "Sent"; } catch ( Exception e ) { //Debug.Log( e.Message ); return e.Message; } }
public string ReceiveImage( string documentName, out ImageResult imageData ) { imageData = null; if ( !_connection.Connect() ) { return "Error connecting to Photoshop."; } var stream = _connection.Stream; string password = EditorPrefs.GetString( "AmplifyColor.NetworkPassword", "password" ); _encryptDecrypt = new EncryptDecrypt( password ); var commandBuilder = new StringBuilder(); if ( !string.IsNullOrEmpty( documentName ) ) { commandBuilder.Append( "app.activeDocument = app.documents.getByName('" + documentName + "');\n" ); } commandBuilder.Append( "var idNS = stringIDToTypeID('sendDocumentThumbnailToNetworkClient');\n" ); commandBuilder.Append( "var desc1 = new ActionDescriptor();\n" ); commandBuilder.Append( "desc1.putInteger( stringIDToTypeID('width'), app.activeDocument.width );\n" ); commandBuilder.Append( "desc1.putInteger( stringIDToTypeID('height'), app.activeDocument.height );\n" ); commandBuilder.Append( "desc1.putInteger( stringIDToTypeID('format'), 2 );\n" ); commandBuilder.Append( "executeAction( idNS, desc1, DialogModes.NO );" ); string command = commandBuilder.ToString(); try { /* WRITE */ byte[] strBytes = _utf8Encoding.GetBytes( command + "\n" ); byte[] allBytes; using ( var memoryStream = new MemoryStream() ) { BitConverter.GetBytes( ProtocolVersion ); memoryStream.Write( BitConverter.GetBytes( ProtocolVersion ).Reverse().ToArray(), 0, 4 ); _transactionId++; memoryStream.Write( BitConverter.GetBytes( _transactionId ).Reverse().ToArray(), 0, 4 ); memoryStream.Write( BitConverter.GetBytes( JavascriptType ).Reverse().ToArray(), 0, 4 ); memoryStream.Write( strBytes, 0, strBytes.Length ); allBytes = memoryStream.GetBuffer().Take( ProtocolLength + strBytes.Length ).ToArray(); } var encryptedBytes = _encryptDecrypt.encrypt( allBytes ); int messageLength = CommLength + encryptedBytes.Length; stream.Write( BitConverter.GetBytes( messageLength ).Reverse().ToArray(), 0, 4 ); stream.Write( BitConverter.GetBytes( NoCommError ).Reverse().ToArray(), 0, 4 ); stream.Write( encryptedBytes, 0, encryptedBytes.Length ); /* READ */ DateTime start = DateTime.Now; int messageType = 0; while ( messageType != ImageType && ( DateTime.Now - start ).TotalMilliseconds < 1000 ) { if ( !stream.DataAvailable ) continue; var buffer = new byte[ 4 ]; stream.Read( buffer, 0, 4 ); buffer = buffer.Reverse().ToArray(); int inLength = BitConverter.ToInt32( buffer, 0 ); stream.Read( buffer, 0, 4 ); buffer = buffer.Reverse().ToArray(); int inComStatus = BitConverter.ToInt32( buffer, 0 ); if ( inComStatus != 0 ) { stream.Read( buffer, 0, 4 ); buffer = buffer.Reverse().ToArray(); //int inVersion = BitConverter.ToInt32(buffer, 0); stream.Read( buffer, 0, 4 ); buffer = buffer.Reverse().ToArray(); //int inTransaction = BitConverter.ToInt32(buffer, 0); stream.Read( buffer, 0, 4 ); buffer = buffer.Reverse().ToArray(); messageType = BitConverter.ToInt32( buffer, 0 ); if ( messageType == JavascriptType || messageType == ErrorstringType ) { inLength -= ProtocolLength; var bytemessage = new byte[ inLength + 1 ]; int rr = stream.Read( bytemessage, 0, inLength ); if ( rr > 0 ) { var encoder = new UTF8Encoding(); var message = encoder.GetString( bytemessage ); return message.Trim( new[] { '\0' } ); } } else { return "Message types: " + messageType; } } else { inLength = inLength - 4; var messageBytes = new List<byte>(); var messagebuffer = new byte[ 1000 ]; int totalread = 0; while ( totalread < inLength || stream.DataAvailable ) { int bytesread = stream.Read( messagebuffer, 0, 1000 ); totalread += bytesread; messageBytes.AddRange( messagebuffer.Take( bytesread ) ); } IEnumerable<byte> decryptedBytes = _encryptDecrypt.decrypt( messageBytes.ToArray() ); decryptedBytes = decryptedBytes.Skip( 4 ); decryptedBytes = decryptedBytes.Skip( 4 ); byte[] tempbytes = decryptedBytes.Take( 4 ).Reverse().ToArray(); decryptedBytes = decryptedBytes.Skip( 4 ); messageType = BitConverter.ToInt32( tempbytes, 0 ); if ( messageType == ImageType ) imageData = ImageResult.FromPhotoshopResult( decryptedBytes.ToArray() ); else if ( messageType == ErrorstringType ) return Encoding.UTF8.GetString( decryptedBytes.ToArray() ); } } //return "Message types: " + messageType; return "Image Received"; } catch ( Exception e ) { return e.Message; } }
public bool SendImage( ImageResult imageResult ) { if ( imageResult == null ) { return false; } _photoshopProtocol.SendImage( imageResult ); return true; }
public string SendImage(ImageResult imageData) { if (!_connection.Connect()) { return("Error connecting to Photoshop."); } var stream = _connection.Stream; int width = imageData.Width; int height = imageData.Height; string password = EditorPrefs.GetString("AmplifyColor.NetworkPassword", "password"); _encryptDecrypt = new EncryptDecrypt(password); try { /* WRITE */ var temp_stream = new MemoryStream(); var w = new BinaryWriter(temp_stream); w.Write(SwapEndian(ProtocolVersion)); w.Write(SwapEndian(_transactionId++)); w.Write(SwapEndian(ImageType)); w.Write(( byte )2); //imagetype (2 for PixMap); w.Write(SwapEndian(width)); w.Write(SwapEndian(height)); w.Write(SwapEndian(width * 3)); //bytesPerScanLine w.Write(( byte )1); //color mode RGB w.Write(( byte )3); //channel count w.Write(( byte )8); //bits per channel var data = imageData.GenerateRGBData(); w.Write(data, 0, data.Length); w.Flush(); long len = temp_stream.Length; temp_stream.Seek(0, SeekOrigin.Begin); BinaryReader r = new BinaryReader(temp_stream); var message = new byte[len]; r.Read(message, 0, ( int )len); var encryptedMessage = _encryptDecrypt.encrypt(message); int messageLength = CommLength + encryptedMessage.Length; stream.Write(BitConverter.GetBytes(messageLength).Reverse().ToArray(), 0, 4); stream.Write(BitConverter.GetBytes(NoCommError).Reverse().ToArray(), 0, 4); stream.Write(encryptedMessage, 0, encryptedMessage.Length); // Photoshop CS6 will issue a response, make sure we skip it (small timeout) DateTime start = DateTime.Now; while ((DateTime.Now - start).TotalMilliseconds < 100) { if (!stream.DataAvailable) { continue; } var buf = new byte[4]; stream.Read(buf, 0, 4); int length = BitConverter.ToInt32(buf.Reverse().ToArray(), 0); buf = new byte[length]; stream.Read(buf, 0, length); } return("Sent"); } catch (Exception e) { //Debug.Log( e.Message ); return(e.Message); } }
public string ReceiveImage(string documentName, out ImageResult imageData) { imageData = null; if (!_connection.Connect()) { return("Error connecting to Photoshop."); } var stream = _connection.Stream; string password = EditorPrefs.GetString("AmplifyColor.NetworkPassword", "password"); _encryptDecrypt = new EncryptDecrypt(password); var commandBuilder = new StringBuilder(); if (!string.IsNullOrEmpty(documentName)) { commandBuilder.Append("app.activeDocument = app.documents.getByName('" + documentName + "');\n"); } commandBuilder.Append("var idNS = stringIDToTypeID('sendDocumentThumbnailToNetworkClient');\n"); commandBuilder.Append("var desc1 = new ActionDescriptor();\n"); commandBuilder.Append("desc1.putInteger( stringIDToTypeID('width'), app.activeDocument.width );\n"); commandBuilder.Append("desc1.putInteger( stringIDToTypeID('height'), app.activeDocument.height );\n"); commandBuilder.Append("desc1.putInteger( stringIDToTypeID('format'), 2 );\n"); commandBuilder.Append("executeAction( idNS, desc1, DialogModes.NO );"); string command = commandBuilder.ToString(); try { /* WRITE */ byte[] strBytes = _utf8Encoding.GetBytes(command + "\n"); byte[] allBytes; using (var memoryStream = new MemoryStream()) { BitConverter.GetBytes(ProtocolVersion); memoryStream.Write(BitConverter.GetBytes(ProtocolVersion).Reverse().ToArray(), 0, 4); _transactionId++; memoryStream.Write(BitConverter.GetBytes(_transactionId).Reverse().ToArray(), 0, 4); memoryStream.Write(BitConverter.GetBytes(JavascriptType).Reverse().ToArray(), 0, 4); memoryStream.Write(strBytes, 0, strBytes.Length); allBytes = memoryStream.GetBuffer().Take(ProtocolLength + strBytes.Length).ToArray(); } var encryptedBytes = _encryptDecrypt.encrypt(allBytes); int messageLength = CommLength + encryptedBytes.Length; stream.Write(BitConverter.GetBytes(messageLength).Reverse().ToArray(), 0, 4); stream.Write(BitConverter.GetBytes(NoCommError).Reverse().ToArray(), 0, 4); stream.Write(encryptedBytes, 0, encryptedBytes.Length); /* READ */ DateTime start = DateTime.Now; int messageType = 0; while (messageType != ImageType && (DateTime.Now - start).TotalMilliseconds < 1000) { if (!stream.DataAvailable) { continue; } var buffer = new byte[4]; stream.Read(buffer, 0, 4); buffer = buffer.Reverse().ToArray(); int inLength = BitConverter.ToInt32(buffer, 0); stream.Read(buffer, 0, 4); buffer = buffer.Reverse().ToArray(); int inComStatus = BitConverter.ToInt32(buffer, 0); if (inComStatus != 0) { stream.Read(buffer, 0, 4); buffer = buffer.Reverse().ToArray(); //int inVersion = BitConverter.ToInt32(buffer, 0); stream.Read(buffer, 0, 4); buffer = buffer.Reverse().ToArray(); //int inTransaction = BitConverter.ToInt32(buffer, 0); stream.Read(buffer, 0, 4); buffer = buffer.Reverse().ToArray(); messageType = BitConverter.ToInt32(buffer, 0); if (messageType == JavascriptType || messageType == ErrorstringType) { inLength -= ProtocolLength; var bytemessage = new byte[inLength + 1]; int rr = stream.Read(bytemessage, 0, inLength); if (rr > 0) { var encoder = new UTF8Encoding(); var message = encoder.GetString(bytemessage); return(message.Trim(new[] { '\0' })); } } else { return("Message types: " + messageType); } } else { inLength = inLength - 4; var messageBytes = new List <byte>(); var messagebuffer = new byte[1000]; int totalread = 0; while (totalread < inLength || stream.DataAvailable) { int bytesread = stream.Read(messagebuffer, 0, 1000); totalread += bytesread; messageBytes.AddRange(messagebuffer.Take(bytesread)); } IEnumerable <byte> decryptedBytes = _encryptDecrypt.decrypt(messageBytes.ToArray()); decryptedBytes = decryptedBytes.Skip(4); decryptedBytes = decryptedBytes.Skip(4); byte[] tempbytes = decryptedBytes.Take(4).Reverse().ToArray(); decryptedBytes = decryptedBytes.Skip(4); messageType = BitConverter.ToInt32(tempbytes, 0); if (messageType == ImageType) { imageData = ImageResult.FromPhotoshopResult(decryptedBytes.ToArray()); } else if (messageType == ErrorstringType) { return(Encoding.UTF8.GetString(decryptedBytes.ToArray())); } } } //return "Message types: " + messageType; return("Image Received"); } catch (Exception e) { return(e.Message); } }
public bool ReadBackBuffer( out ImageResult imageResult ) { imageResult = null; if ( _cameras == null ) { Debug.LogError( "[AmplifyColor] Camera collection is invalid." ); return false; } var camera = _cameras.SelectedCamera; if ( camera == null ) { Debug.LogError( "[AmplifyColor] Selected camera is invalid." ); return false; } AmplifyColorBase component = camera.GetComponent<AmplifyColorBase>(); float prevExposure = 1.0f; bool prevUseToneMapping = false; bool prevUseDithering = false; float prevBlendAmount = 0.0f; Texture prevLUT = null; if ( component != null ) { prevExposure = component.Exposure; prevUseToneMapping = component.UseToneMapping; prevUseDithering = component.UseDithering; prevBlendAmount = component.BlendAmount; prevLUT = component.LutTexture; component.Exposure = ToolSettings.Instance.ApplyHDRControl ? component.Exposure : 1.0f; component.UseToneMapping = ToolSettings.Instance.ApplyHDRControl ? component.UseToneMapping : false; component.UseDithering = ToolSettings.Instance.ApplyHDRControl ? component.UseDithering : false; component.BlendAmount = ToolSettings.Instance.ApplyColorGrading ? component.BlendAmount : 0.0f; component.LutTexture = ToolSettings.Instance.ApplyColorGrading ? component.LutTexture : null; } var width = ToolSettings.Instance.Resolution.TargetWidth; var height = ToolSettings.Instance.Resolution.TargetHeight; //if (ToolSettings.Instance.Resolution.IsGameWindowSize) //{ // width = Screen.width; // height = Screen.height; //} var cameratarget = camera.targetTexture; var rt = RenderTexture.GetTemporary( width, height, 24, RenderTextureFormat.ARGB32 ); camera.targetTexture = rt; camera.Render(); camera.targetTexture = cameratarget; var activert = RenderTexture.active; RenderTexture.active = rt; var text = new Texture2D( width, height, TextureFormat.ARGB32, false ); text.ReadPixels( new Rect( 0, 0, width, height ), 0, 0 ); text.Apply(); RenderTexture.active = activert; var colors = text.GetPixels( 0, 0, width, height ); Texture2D.DestroyImmediate( text ); var colordata = new Color[ width, height ]; for ( int i = height - 1; i >= 0; i-- ) { for ( int j = 0; j < width; j++ ) { colordata[ j, ( height - 1 - i ) ] = colors[ i * width + j ]; colordata[ j, ( height - 1 - i ) ].a = 1; } } if ( component != null ) { component.Exposure = prevExposure; component.UseToneMapping = prevUseToneMapping; component.UseDithering = prevUseDithering; component.BlendAmount = prevBlendAmount; component.LutTexture = prevLUT; } imageResult = new ImageResult( colordata ); return true; }
public bool ReadBackBuffer( out ImageResult imageResult ) { imageResult = null; if ( _cameras == null ) { Debug.LogError( "[AmplifyColor] Camera collection is invalid." ); return false; } var camera = _cameras.SelectedCamera; if ( camera == null ) { Debug.LogError( "[AmplifyColor] Selected camera is invalid." ); return false; } var component = ( MonoBehaviour ) camera.GetComponent<AmplifyColorBase>(); bool enabled = false; if ( !ToolSettings.Instance.ApplyLUT ) { if ( component != null ) { enabled = component.enabled; component.enabled = false; } } var width = ToolSettings.Instance.Resolution.TargetWidth; var height = ToolSettings.Instance.Resolution.TargetHeight; //if (ToolSettings.Instance.Resolution.IsGameWindowSize) //{ // width = Screen.width; // height = Screen.height; //} var cameratarget = camera.targetTexture; var rt = RenderTexture.GetTemporary( width, height, 24, RenderTextureFormat.ARGB32 ); camera.targetTexture = rt; camera.Render(); camera.targetTexture = cameratarget; var activert = RenderTexture.active; RenderTexture.active = rt; var text = new Texture2D( width, height, TextureFormat.ARGB32, false ); text.ReadPixels( new Rect( 0, 0, width, height ), 0, 0 ); text.Apply(); RenderTexture.active = activert; var colors = text.GetPixels( 0, 0, width, height ); var colordata = new Color[ width, height ]; for ( int i = height - 1; i >= 0; i-- ) { for ( int j = 0; j < width; j++ ) { colordata[ j, ( height - 1 - i ) ] = colors[ i * width + j ]; colordata[ j, ( height - 1 - i ) ].a = 1; } } if ( !ToolSettings.Instance.ApplyLUT ) { if ( component != null ) component.enabled = enabled; } imageResult = new ImageResult( colordata ); return true; }
public bool ReadBackBuffer(out ImageResult imageResult) { imageResult = null; if (_cameras == null) { Debug.LogError("[AmplifyColor] Camera collection is invalid."); return(false); } var camera = _cameras.SelectedCamera; if (camera == null) { Debug.LogError("[AmplifyColor] Selected camera is invalid."); return(false); } var component = ( MonoBehaviour )camera.GetComponent <AmplifyColorBase>(); bool enabled = false; if (!ToolSettings.Instance.ApplyLUT) { if (component != null) { enabled = component.enabled; component.enabled = false; } } var width = ToolSettings.Instance.Resolution.TargetWidth; var height = ToolSettings.Instance.Resolution.TargetHeight; //if (ToolSettings.Instance.Resolution.IsGameWindowSize) //{ // width = Screen.width; // height = Screen.height; //} var cameratarget = camera.targetTexture; var rt = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32); camera.targetTexture = rt; camera.Render(); camera.targetTexture = cameratarget; var activert = RenderTexture.active; RenderTexture.active = rt; var text = new Texture2D(width, height, TextureFormat.ARGB32, false); text.ReadPixels(new Rect(0, 0, width, height), 0, 0); text.Apply(); RenderTexture.active = activert; var colors = text.GetPixels(0, 0, width, height); var colordata = new Color[width, height]; for (int i = height - 1; i >= 0; i--) { for (int j = 0; j < width; j++) { colordata[j, (height - 1 - i)] = colors[i * width + j]; colordata[j, (height - 1 - i)].a = 1; } } if (!ToolSettings.Instance.ApplyLUT) { if (component != null) { component.enabled = enabled; } } imageResult = new ImageResult(colordata); return(true); }