using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ChemAxon.NET.Base.Chemistry.Data;
using ChemAxon.NET.IKVM.Chemistry;
using ChemAxon.NET.Base.Chemistry.Formats;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Drawing;

namespace _2013_Developer_training {
    public class MoleculeImage {

        public static void RenderImage() {
            var benzeneData = new MoleculeData("C1=CC=CC=C1", MoleculeFormat.Unknown);
            var benzeneMolecule = new JChemMolecule(benzeneData);

            /////////////////////////////////////////////////////////////////////////////////////////
            // simple benzene rendering with default rendering settings
            var image = benzeneMolecule.Renderer.RenderToImage(ImageFormat.Emf);
            ShowImage(image, "Render a simple EMF image!");
        }
        public static void ChangeImageDrawingSettings() {
            var benzeneData = new MoleculeData("C1=CC=CC=C1", MoleculeFormat.Unknown);
            var benzeneMolecule = new JChemMolecule(benzeneData);

            /////////////////////////////////////////////////////////////////////////////////////////
            // changing the settings and reredering of the same molecule
            benzeneMolecule.Renderer.Settings.DrawingInfo.Size = new Size(120, 120);
            benzeneMolecule.Renderer.Settings.DrawingInfo.StructureDrawingSettings.WireThickness = 0.23;
            var image = benzeneMolecule.Renderer.RenderToImage(ImageFormat.Emf);
            ShowImage(image, "Changing image and rendering settings");
        }

        public static void DrawImageInWebApplications(){
            var benzeneData = new MoleculeData("C1=CC=CC=C1", MoleculeFormat.Unknown);
            var benzeneMolecule = new JChemMolecule(benzeneData);

            /////////////////////////////////////////////////////////////////////////////////////////
            // changing the background color and rendering the molecule as bitmap
            benzeneMolecule.Renderer.Settings.DrawingInfo.Transparent = false;
            benzeneMolecule.Renderer.Settings.DrawingInfo.BackgroundColor = Color.LightGreen;
            var image = benzeneMolecule.Renderer.RenderToImage(ImageFormat.Bmp);
            ShowImage(image, "Non-transparent iamge for web/browser based applications");
        }

        private static void ShowImage(Image image, string title) {
            var pb = new PictureBox();
            var frm = new Form();
            frm.Text = title;
            frm.Controls.Add(pb);
            pb.Dock = DockStyle.Fill;
            pb.Image = image;
            frm.ShowDialog();
        }
    }
}