*http://sourceforge.net/projects/jmol/files/Jmol-beta/Jmol%2014.3/Jmol%2014.3.16/Jmol-14.3.16_2015.08.21-binary.zip/download <http://sourceforge.net/projects/jmol/files/Jmol-beta/Jmol%2014.3/Jmol%2014.3.16/Jmol-14.3.16_2015.08.21-binary.zip/download>* Jmol.___JmolVersion="14.3.16_2015.08.21"
new feature: load var x -- same as load "@x" -- similar in syntax to write var x t.png -- example: var x = load("quartz.cif") load var x {1 1 1} bug fix: creating and running and saving binary hash from PNGJ fails -- allows creating an associative binary array from a PNGJ file then modifying it and loading that variable then saving it as a new PNGJ file -- initial PNGJ file is not necessary if binary array x is created first -- example: var x = load("test.png",true) load "@x" write test2.png as PNGJ bug fix: hover callback is not supposed to be stopped with HOVER OFF bug fix: atom.sx and atom.sy and atom.sz report incorrectly when antialiasing is on bug fix: write VAR x "test.png" creates a ZIP file instead of a PNGJ file when x is from load("test.png",true) bug fix: write test.png as PNGJ (without initial quotes) fails ​comments: OK, that wasn't so bad. Thank you, Rolf, for suggesting this. It is a nice complement to write var x. This completes the capability for Jmol or JSmol to read, modify, load, and save PNGJ and ZIP files. 1) Reading a PNGJ or ZIP file into a variable using TRUE to indicate binary file: x = load("test.png", TRUE) # [x is a binary associative array] print x.keys *$_BINARY_$JmolManifest.txtJmol_version_14.3.16_2015.08.21__2015-08-21_09.06_IMAGE_http___cactus.nci.nih.gov_chemical_structure_caffeine_file_format_sdf_get3d_Truestate.spt* where "$_BINARY_$" indicates that entries are byte arrays. and _IMAGE_ is the PNG image, indicating this is from a PNGJ file 2) modifying that file if desired # coerce to string: s = "" + x["state.spt"] # ...modify here... # replace state.spt in PNGJ file data x["state.spt"] = s # Or, for example, adding an image that will be used for an optional background image x = load("test.png",true) # a standard binary associative array will have just two keys, $BINARY$ and _DATA_ # only PNGJ has _IMAGE_ x["z.jpg"] = load("z.jpg",true)._DATA_ print x.keys write var x "test3.png" ....sometime later... load "test3.png" background image "test3.png|z.jpg" 3) write to a new PNGJ file write var x "test2.png" 4) optionally, load that PNGJ data directly from the variable, perhaps to see that the modifications are correct: load var x (new syntax; same as older *load "@x"*) Note that both of these syntaxes work with standard string file data and can be extended with options: x = load("quartz.cif") load var x {1 1 1} Bob
------------------------------------------------------------------------------
_______________________________________________ Jmol-users mailing list Jmol-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jmol-users