HOME


Using the Open Source Developers Image Library with an inherited OpenDialog


opendilpicdialog.jpg - 30323 Bytes


     The Developers Image Library is an Open Source graphics project hosted on the Sourceforge site, that allows the opening, saving, and processing of a host of images stored in different graphics formats. This project inherits a Delphi OpenDialog, adds an image preview thumbnail to the dialog (much as in a typical OpenPictureDialog) and then ties into the image library DLL to generate previews of many additional filetypes not included in a standard OpenPictureDialog. Note that the code needs some work to open Metafiles, since these are not included the library DLL. The graphic shows the completed dialog showing a thumbnail preview of a TIFF format image...

      The home home page for the library is found at the following location http://sourceforge.net/projects/openil/. The download page contains links to the source code under the heading 'DevIL', documentation under the heading 'Docs and Tutorials', and binaries (three compiled DLLs) under the headiing 'Windows End User', and the Linux and Windows SDK, and is currently located at the following URL ->

Dil download page

      The three DLLs must be included in your program path if you wish to use the library. The code for the OpenDialog (which is called OpenDILPicDialog) has the lines referring to the 'Register' function commented out, so that it functions as a unit, rather than as Component. If you use the dialog as a component then I have found that including all the header files (for OpenGL and the ImageLibary) in the Source/Samples Delphi folder will work, and the DLLs can be placed into the Delphi bin directory, for use at design time.

      Note that according to what I have read if a component exists on the VCL that depends on DLLs and the DLL is not present on the VCL enviroment path then the entire loading of the VCL will apparently fail leaving you with no components at all, so if this dialog is installed as a component rather than being used as a unit, you must ensure that the DLLs are in the bin directory to avoid problems

      Note that the library seems to have problems with GIF images but otherwise works very well ... for GIFs an alternative might be to use Anders Melanders TGifImage, which has now been moved to the Project Delphi Jedi site. As well there are numerous versions of PCX, none of them backwards compatible, and few graphics programs support them all, and that is true of this library as well, so it will generate PCX errors when encountering one of these other unsupported PCX formats...It also does not seem to support Huffman encoded or FAX encoded TIFF images (however, it could be the case that images in these formats are supposed to be monochrome with no grey scale, which is how they turn out...You should also be aware that LZW compression is patented by Unisys (although the patent is just about ready to expire) so if you use LZW compression in a program you will need to register and pay some kind of royalties. I am currently working on a SaveDialog, which is a little more complicated, and if you read the header files for the Library you will notice constants used which define compression, for example, and also functions and procedures that compress images in the library format (note that this format is not 'a bitmap', but the internal format of the library), and it will be neccesary, to implement a SaveDialog, to become completely familiar with what is and what is not a legal operation for each different file format to be able to control the save process (it is possible to save using constants that define a default value, for example to save a 'default' TIFF, but if you want control, this requires greater control and greater understanding. Opening a graphic is much simpler since the options already exist in the file, and the library opens the files in a way which is transparent to the end user.

      The new dialog inherits a standard OpenDialog, adds components to display the thumbnail graphics and then overrides the 'DoShow' event code, to allow resizing of the dialog and placement of the thumbnail panel and image, and overrides the 'DoSelectionChange' event code to allow for creation and display of a thumbnail graphic based on the name of the newly selected graphics file. The unit also overrides the Create and Destroy event codes to allow for creation of the thumbnail image components, initialization of the DLL library, and for the destruction of these extra elements when the dialog is destroyed. The code which interfaces with the DLL is incorporated in the DoSelectionChange event code and is pretty straightforward. The image library uses a private internal format to manipulate images, but in this example the image is converted to a standard DIB (device independent bitmap) and then converted to a thumbnail for display in a TImage component. However it might be a better idea to create the Bitmap during the ONshow event and then destroy the bitmap during the 'close' of the box, leaving the user to with a filename to use to implement the code to actually load the image, either as a DIB or in the native format of the DLL. On older windows systems having to many bitmaps around causes the system to become unstable. This still leaves the problem of deciding whether or not to initialize the library in the main program, before using the Dialog, which introduces a dependency, but is probably the better way to go if the library is going to be used by the main program. If the Dialog is going to function as the interface to the DLL for the program, then it also makes sense to dynamically load the DLL, during the 'show' event, and then free the library when the Dialog is closed.

     Typically an OpenDialog allows the selection of a filename, but in this simple example, ABitmap has been made a public component of the Dialog, and since the dialog needs the Bitmap to create the thumbnail, the image can be retrieved directly from the dialog. It would also be possible to encapsulate the Bitmap into the dialog, and destroy it when its not needed and this would entail passing back only a filename to the program, and the program would then need to implement the loading of the image. The DoSelectionChange code demonstrates one way to do this, although a program could also work with the image, not as a bitmap, but rather using the internal private format of the image library, converting to a dib only for display purposes.

The OpenDialog includes a method called 'GetStaticRect' which is supposed to allow for resizing of the dialog to add components, but this does not seem to work, and after a search on the net I found the following C++ page which demonstrated using 'GetClientRect' and 'GetWindowRect' to accomplish the same thing ... http://home.att.net/~secondcut/opdlgvcl.htm

You can download the project as a zip file here ->

opend.zip 377 KB (including the DLLs)

openh.zip 97 KB (just the project and header files)


      The library can open and manipulate files in the following formats... Bitmaps (BMP), Jpeg (JPE, JPG, JPEG), PCX, PNG, Portable Bitmap (PBM), Portable GreyMap (PGM), Portable PixelMap (PPM), Photoshop (PSD), Raw format (RAW), Silicon Graphics (BW, RGB, RGBA), Targa (TGA), TIFF and TIF, Interlaced Bitmap (LBM), PhotoCD (PCD), PIX, PIC, PNM, PXR, and XPM. The library is also supposed to do GIF images, but always seems to fail for some unknown reason. There are also other formats available such as Direct Draw surfaces, DOOM graphics, etc., which can be included (by including them in Dialog filter).


HOME      




A Unified Field Theory

failed_gravity_theory.gif - 10361 Bytes



The Unified Field Theory
is also available as a zip file ->
unified.zip

Introduction :The Pioneer Effect and the New Physics. A brief description of the new physics required to explain the 'Pioneer Effect', which is the constant deceleration of space craft as they fly through space.




Principles of Evolution: A Study in the Evolution of Bedbugs



A couple of years ago my bedroom was invaded by bedbugs. There were two variant genetic lines. One type of bedbug was an enlongated, thin, tubular insect, and the second genetic line was a flat, perfectly circular insect. The result of the cross breeding of these two genetically distinct variants was the production of a bedbug with charcteristics of both, an enlongated, flat bedbug with a central bulge (such that the shape of the bedbug was somewhere between 'long' and 'circular'). The long skinny bedbugs were such strange and unfamiliar looking insects that at first I did not recognize them as being bedbugs, and considered them to be a seperate species of insect. However, as the photographs of bedbugs above indicate, enlongated and skinny bedbugs are not uncommon, and the photographs also show the variants that are produced by genetic combinations that result in an insect somewhere in between 'circular' and 'enlongated'.

Therefore it is my hypothesis that evolution occurs by means of the transfer of dominate genes, with the production of such dominant genes being the product of 'biological algorithms', a genetic software program that brings physical characteristics into harmony with behavior, such that when behavior changes, and a conflict then exists, this acts as a trigger and causes the release of dominant genes. The result is rapid evolution of species. The bedbug is a relatively new insect, not the product of millions of years of evolution but rather an insect that is evolving in real time. The newly emerging dominant form of the insect is the flat, round ciruclar insect, well adapted to living in human bedrooms (it is flat, rather than tubular, thus allowing it to hide in the smallest cracks, living a stealthy lifestyle, and it is round, which gives the insect a maximum storage capacity such that it must endanger itself only a few times a month by emerging to feed.

Other examples of rapid evolution include the development of long legs in an invasive species of toad in Australia. As the toads move into the mountainous regions of Australia, and their behvaior changes, making them 'climbing toads', over the course of just a couple of decades the toads in the highlands have grown long legs specially adapted to climbing. It is worth noting here that the toads are poisonous, and are a successful invasive species because they have no natural predators in Australia, and so it would not be the case that the toads with long legs were 'the fittest survivors', because all the toads are survivors, and therefore predation does not explain the rapid emergence and spread of such well adapted, long legged toads. Once again we see evidence for the existence of biological algorithms and the rapid spread of dominant genes through a population, which once introduced proceed to overwhelm the older genes which are being replaced (making toad long legged and a bed bug round and flat).


A Theological Experiment

My interest in pursuing the Unified Field Theory is spurred on by my need to discover the theoretical explanation of a new form of propulsion (as explained on this page: Why the Unified Field Theory?). The experiment involving the bedbugs came out of nowhere.

I also believe that it is possible to justify theological propositions using experimental methods. If a thing is an objective truth then it can be verified and proven true by means of experimentation. Such a theological proposition is of more value than a ‘divine revelation’, since such revelations depend upon nothing more than establishing authority figures which requires the creation of artificial hierarchies, for the only reason why I might be encouraged to believe an authority figure who orders me to believe unsubstantiated opinions is if I could somehow be convinced that this authority possessed a mind that was somehow superior to mine, and thus was fit to express opinions as though opinions were unquestionable facts and thus worthy of being elevated to the status of absolute dogma.

There is a self evident human inequality which is visibly apparent. Some people are ‘beautiful’ and thus are the true elite on this planet, and some people are not. It is this sexual inequality and the degeneration that follows upon beauty that is the true driving force behind all the evil that happens on earth. The need for ruthless oppression and the pursuit of wealth and the consequent creation of suffering and poverty which must follow upon this practice is for the purpose of creating an artificial alpha elite.

The true elites are the young and the beautiful. The artificial elite are the rich and the wealthy. The elite aging rich artificial alpha male has no good looks, for he is physically degenerate, but he will be found escorting beauty because he has a beautiful wallet. If he loses his wallet he will be found at home with all the other unattractive aged beta males sitting in a rocking chair watching reruns of Bonanza. No money, no sex. It is for this reason that the alpha males are found to be so ruthless and so violent in pursuit of their goal. The alpha male has fallen. The beta male has arisen and now the whole planet is full of ruinous destruction for it.

We see in religion a confused and contradictory reaction to this reality. On the one hand religion preaches a sexless heaven where castration and the clitorectomy create ‘pure spirits’. Muslims throw women under sacks. On the other hand religion supports hierarchy and is the prop of the elite alpha male. It is for this reason that religion is incoherent when it comes to speaking about sex.

Now we see this same principle at work in all of nature. Guppies dance and show off their colorful tails and the guppy who dances with the most colorful tail is the sexually successful guppy. Therefore it is the doctrine of the ruthless oppressor which teaches that the solution to human sexual violence is to be found in castration and the creation of pure ghosts. This would be equivalent to damning an aardvark for having the ‘sinful aardvark nature’ or prosecuting an anteater for the high crime of ‘ant genocide’.

Therefore it was my theological hypothesis that the correct solution to this problem is to give every guppy a beautiful colorful tail. I compare this solution to the classic religious solution which is to cut off every tail since having a tail is ‘sinful’. If having a tail is sinful then God must be sinful for no human being has any choice in deciding whether or not they would be born with a colorful tail, or whether they would not.

When I was young I was a beautiful guppy with a lovely tail. So everyone seemed to think. I am older now. My nose became very badly sunburned and destroyed. It seemed good to me to test my hypothesis by using these ‘biological algorithms’ to correct this problem. I healed half my nose as you can see by the line separating the still very dark patch on the side in the photograph below.





I documented my experiment on these pages. one two t hree four fi ve six


I have confirmed to my own satisfaction that my theological proposition is correct and that religious dogma is erroneous, being based as it was upon nothing more than ‘divine revelation’ which is just a form of opinionated speculation. For the time being I am not continuing this experiment, for I must wait until the weather on this planet improves, and the dark clouds of ruthless oppression break letting a little sun shine come through so that I can show the world the truth about God, by showing people how God goes about giving an old guppy back his beautiful colorful tail.


Until then I will have to sit on the sidelines, while all my scientific breakthroughs are deliberately ignored, while I wonder to myself what ever in the world could be wrong with the human race, because what this all will prove at the end of it all is that there definitely was something wrong with the people on this planet.