{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "chem-bla-ics",
  "description": "Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.",
  "home_page_url": "https://chem-bla-ics.linkedchemistry.info/",
  "feed_url": "https://chem-bla-ics.linkedchemistry.info/2010/04/05/cdk-jchempaint-1-rendering-molecules.json",
  "icon": "https://chem-bla-ics.linkedchemistry.info/assets/images/chem-bla-ics_logo.png",
  "language": "en",
  "authors": [
    {
      "name": "Egon Willighagen",
      "url": "https://orcid.org/0000-0001-7542-0286",
      "_orcid": "0000-0001-7542-0286"
    }
  ],
  "items": [

    {
      "id": "https://doi.org/10.59350/zp98c-wkb92",
      "url": "https://chem-bla-ics.linkedchemistry.info/2010/04/05/cdk-jchempaint-1-rendering-molecules.html",
      "title": "CDK-JChemPaint #1: rendering molecules",
      "content_html": "<p>I <a href=\"http://chem-bla-ics.blogspot.com/search?q=jchempaint\">reported earlier</a> that the CDK-JChemPaint patch is now a clean add-on from the CDK releases.\nThis means that you download <a href=\"https://sourceforge.net/projects/cdk/files/cdk%20%28development%29/1.3.4/\">cdk-1.3.4.jar</a> and\n<a href=\"https://sourceforge.net/projects/cdk/files/CDK-JChemPaint/8/\">cdk-jchempaint-8.jar</a> separately, put them in your class path, and get started\nwith, for example, Groovy:</p>\n\n<div class=\"language-shell highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nv\">$ </span><span class=\"nb\">export </span><span class=\"nv\">CLASSPATH</span><span class=\"o\">=</span>cdk-1.3.4.jar:cdk-jchempaint-8.jar\n<span class=\"nv\">$ </span>groovy renderMol.groovy\n</code></pre></div></div>\n\n<p><img src=\"/assets/images/triazole.png\" alt=\"\" /></p>\n\n<p>I have tuned to code in <a href=\"https://sourceforge.net/apps/mediawiki/cdk/index.php?title=Renderer_Tutorial-Single_Molecules\">this tutorial</a>\nby <a href=\"https://gilleain.blogspot.com/\">Gilleain</a> a bit, resulting in this code:</p>\n\n<div class=\"language-groovy highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"kn\">import</span> <span class=\"nn\">java.util.List</span><span class=\"o\">;</span>\n\n<span class=\"kn\">import</span> <span class=\"nn\">java.awt.*</span><span class=\"o\">;</span>\n<span class=\"kn\">import</span> <span class=\"nn\">java.awt.image.*</span><span class=\"o\">;</span>\n\n<span class=\"kn\">import</span> <span class=\"nn\">javax.imageio.*</span><span class=\"o\">;</span>\n\n<span class=\"kn\">import</span> <span class=\"nn\">org.openscience.cdk.*</span><span class=\"o\">;</span>\n<span class=\"kn\">import</span> <span class=\"nn\">org.openscience.cdk.interfaces.*</span><span class=\"o\">;</span>\n<span class=\"kn\">import</span> <span class=\"nn\">org.openscience.cdk.layout.*</span><span class=\"o\">;</span>\n<span class=\"kn\">import</span> <span class=\"nn\">org.openscience.cdk.renderer.*</span><span class=\"o\">;</span>\n<span class=\"kn\">import</span> <span class=\"nn\">org.openscience.cdk.renderer.font.*</span><span class=\"o\">;</span>\n<span class=\"kn\">import</span> <span class=\"nn\">org.openscience.cdk.renderer.generators.*</span><span class=\"o\">;</span>\n<span class=\"kn\">import</span> <span class=\"nn\">org.openscience.cdk.renderer.visitor.*</span><span class=\"o\">;</span>\n<span class=\"kn\">import</span> <span class=\"nn\">org.openscience.cdk.templates.*</span><span class=\"o\">;</span>\n\n<span class=\"kt\">int</span> <span class=\"n\">WIDTH</span> <span class=\"o\">=</span> <span class=\"mi\">600</span><span class=\"o\">;</span>\n<span class=\"kt\">int</span> <span class=\"n\">HEIGHT</span> <span class=\"o\">=</span> <span class=\"mi\">600</span><span class=\"o\">;</span>\n\n<span class=\"c1\">// the draw area and the image should be the same size</span>\n<span class=\"n\">Rectangle</span> <span class=\"n\">drawArea</span> <span class=\"o\">=</span> <span class=\"k\">new</span> <span class=\"n\">Rectangle</span><span class=\"o\">(</span><span class=\"n\">WIDTH</span><span class=\"o\">,</span> <span class=\"n\">HEIGHT</span><span class=\"o\">);</span>\n<span class=\"n\">Image</span> <span class=\"n\">image</span> <span class=\"o\">=</span> <span class=\"k\">new</span> <span class=\"n\">BufferedImage</span><span class=\"o\">(</span>\n  <span class=\"n\">WIDTH</span><span class=\"o\">,</span> <span class=\"n\">HEIGHT</span><span class=\"o\">,</span> <span class=\"n\">BufferedImage</span><span class=\"o\">.</span><span class=\"na\">TYPE_INT_RGB</span>\n<span class=\"o\">);</span>\n\n<span class=\"n\">IMolecule</span> <span class=\"n\">triazole</span> <span class=\"o\">=</span> <span class=\"n\">MoleculeFactory</span><span class=\"o\">.</span><span class=\"na\">make123Triazole</span><span class=\"o\">();</span>\n<span class=\"n\">StructureDiagramGenerator</span> <span class=\"n\">sdg</span> <span class=\"o\">=</span> <span class=\"k\">new</span> <span class=\"n\">StructureDiagramGenerator</span><span class=\"o\">();</span>\n<span class=\"n\">sdg</span><span class=\"o\">.</span><span class=\"na\">setMolecule</span><span class=\"o\">(</span><span class=\"n\">triazole</span><span class=\"o\">);</span>\n<span class=\"n\">sdg</span><span class=\"o\">.</span><span class=\"na\">generateCoordinates</span><span class=\"o\">();</span>\n<span class=\"n\">triazole</span> <span class=\"o\">=</span> <span class=\"n\">sdg</span><span class=\"o\">.</span><span class=\"na\">getMolecule</span><span class=\"o\">();</span>\n\n<span class=\"c1\">// generators make the image elements</span>\n<span class=\"n\">List</span> <span class=\"n\">generators</span> <span class=\"o\">=</span> <span class=\"k\">new</span> <span class=\"n\">ArrayList</span><span class=\"o\">();</span>\n<span class=\"n\">generators</span><span class=\"o\">.</span><span class=\"na\">add</span><span class=\"o\">(</span><span class=\"k\">new</span> <span class=\"n\">BasicSceneGenerator</span><span class=\"o\">());</span>\n<span class=\"n\">generators</span><span class=\"o\">.</span><span class=\"na\">add</span><span class=\"o\">(</span><span class=\"k\">new</span> <span class=\"n\">BasicBondGenerator</span><span class=\"o\">());</span>\n<span class=\"n\">generators</span><span class=\"o\">.</span><span class=\"na\">add</span><span class=\"o\">(</span><span class=\"k\">new</span> <span class=\"n\">BasicAtomGenerator</span><span class=\"o\">());</span>\n\n<span class=\"c1\">// the renderer needs to have a toolkit-specific font manager</span>\n<span class=\"n\">AtomContainerRenderer</span> <span class=\"n\">renderer</span> <span class=\"o\">=</span>\n  <span class=\"k\">new</span> <span class=\"nf\">AtomContainerRenderer</span><span class=\"o\">(</span><span class=\"n\">generators</span><span class=\"o\">,</span> <span class=\"k\">new</span> <span class=\"n\">AWTFontManager</span><span class=\"o\">());</span>\n\n<span class=\"c1\">// the call to 'setup' only needs to be done on the first paint</span>\n<span class=\"n\">renderer</span><span class=\"o\">.</span><span class=\"na\">setup</span><span class=\"o\">(</span><span class=\"n\">triazole</span><span class=\"o\">,</span> <span class=\"n\">drawArea</span><span class=\"o\">);</span>\n\n<span class=\"c1\">// paint the background</span>\n<span class=\"n\">Graphics2D</span> <span class=\"n\">g2</span> <span class=\"o\">=</span> <span class=\"o\">(</span><span class=\"n\">Graphics2D</span><span class=\"o\">)</span><span class=\"n\">image</span><span class=\"o\">.</span><span class=\"na\">getGraphics</span><span class=\"o\">();</span>\n<span class=\"n\">g2</span><span class=\"o\">.</span><span class=\"na\">setColor</span><span class=\"o\">(</span><span class=\"n\">Color</span><span class=\"o\">.</span><span class=\"na\">WHITE</span><span class=\"o\">);</span>\n<span class=\"n\">g2</span><span class=\"o\">.</span><span class=\"na\">fillRect</span><span class=\"o\">(</span><span class=\"mi\">0</span><span class=\"o\">,</span> <span class=\"mi\">0</span><span class=\"o\">,</span> <span class=\"n\">WIDTH</span><span class=\"o\">,</span> <span class=\"n\">HEIGHT</span><span class=\"o\">);</span>\n\n<span class=\"c1\">// the paint method also needs a toolkit-specific renderer</span>\n<span class=\"n\">renderer</span><span class=\"o\">.</span><span class=\"na\">paint</span><span class=\"o\">(</span><span class=\"n\">triazole</span><span class=\"o\">,</span> <span class=\"k\">new</span> <span class=\"n\">AWTDrawVisitor</span><span class=\"o\">(</span><span class=\"n\">g2</span><span class=\"o\">));</span>\n\n<span class=\"n\">ImageIO</span><span class=\"o\">.</span><span class=\"na\">write</span><span class=\"o\">((</span><span class=\"n\">RenderedImage</span><span class=\"o\">)</span><span class=\"n\">image</span><span class=\"o\">,</span> <span class=\"s2\">\"PNG\"</span><span class=\"o\">,</span> <span class=\"k\">new</span> <span class=\"n\">File</span><span class=\"o\">(</span><span class=\"s2\">\"triazole.png\"</span><span class=\"o\">));</span>\n</code></pre></div></div>",
      "summary": "I reported earlier that the CDK-JChemPaint patch is now a clean add-on from the CDK releases. This means that you download cdk-1.3.4.jar and cdk-jchempaint-8.jar separately, put them in your class path, and get started with, for example, Groovy:",
      "image": "https://chem-bla-ics.linkedchemistry.info/assets/images/triazole.png",
      "date_published": "2010-04-05T00:00:00+00:00",
      "date_modified": "2010-04-05T00:00:00+00:00",
      "tags": ["cdk","jchempaint"],
      
      
      
      
      
      
        "authors": [ { "name": "Egon Willighagen", "url": "https://orcid.org/0000-0001-7542-0286" } ]
      
    }

  ]
}
