INDEX


How a 16 color palette is represented
in different pixel formats


16_color_palette.gif - 2044 Bytes

     The graphic above shows the colors on a 16 color palette (most commonly used for icons, solid color graphics, and gifs. Row one shows colors 0 to 7, and row 2 shows colors 8 to 15. If you have a reason to directly manipulate bytes of pixel data in a program it is important to understand how color data representation changes when the pixel format of the image changes. Of particular interest to me are the pixel formats 4 bit, 8 bit, and 24 bit true color images, and the 16 color palette and the 256 color palette, and the changes that take place in pixel representation at the byte level when color resolution is changed in an image. This page deal with conversions that take place when increasing the image resolution of an image which has a 16 color palette.

     There are easy ways to translate an image from a lower resolution to a higher resolution image. For example the following code fragment will copy the lower resolution image into a higher resolution bitmap while correctly making all the translations in color representation. Bitmap.Canvas.Draw(0,0, somebitmap); Understanding how to make these translations at the byte level by directly manipulating the pixel data of a graphic is only required if for some reason you need to have direct control over the bytes in a graphic. A program I am working on requires this level of control so I am investigating the representation of 16 and 256 color palettes in 4 bit, 8 bit, and 24 bit pixel format, as well as working on a way to easily encapsulate this data in reusable program code.

     A 16 color palette is most efficiently represented by a 4 bit pixel format (which is capable of encoding a maximum of 16 values and only uses a nibble (half a byte) to store a single pixel. When the sixteen color palette is encoded in 4 bits the encoding is straight forward. Black, color number 0 is encoded as 0, color number 1 is 1, and so on up to the last color, number 15 on the bottom row on the far right in the graphic above. Each byte in a 4 bit pixelformat encodes two pixels so in order to access the pixel data and decode the color reference it is neccesary to apply a mask to the byte. The mask '11110000' when applied to the byte with an AND operation will pull out the high order bits in the byte, and then when the bytes are shifted right four places the correct color number stored in the high order bits is decoded. Similarly the mask '00001111' applied to the byte with an AND operation will exclude the high order bits and pull out the four lower order bits representing the pixel. The following simple code shows first the byte x being given two values, which are then pulled out with a mask (in hexadecimal, four bits are represented by one symbol and so the high order mask becomes $F0 and the low order mask becomes $0F.

procedure TForm1.Button1Click(Sender: TObject);
var x, high,low, z:byte;
begin
      x := 4 + 176;  {two pixels of color data}
      high := x and $F0;  {apply the mask}
      z := high shr 4;  {shift the bits 4 to the right}
      low := x and $0F;  {apply the low nibble mask}
      ShowMessage('The byte : ' + inttostr(x) +  chr(13) +
                  'The low  : ' + inttostr(low) +  chr(13) +
                  'The high : ' + inttostr(high) +chr(13) +
                  'which is color : ' + inttostr(z));
end;


      The chart below shows the way 16 color palette data is encoded in 4 bit, 8 bit, and 24 bit pixelformat bitmaps. There are a variety of ways in which the information could be made accessible to a program (an array of constants, or even simply a list of constants Red8, Red24. The situation with the 256 bit palette gets a little more complex because there are 256 values to consider, and discovering the mathematical relationship between these numbers would be a more ideal solution (if there is one - the assignment seems arbitrary, in the case of the 8 bit format and the assignment seems related to intensity of red green and blue in the 24 bit pixel format : for example the Vivid Green color has an intensity of 255 for the second byte, probably the green byte of RGB structure, and zero for the other two bytes - the blue color, color number 12 has 255 set for the first byte, and zero for the other two, which would indicate that the bytes are stored in the order Blue Green Red - if you load a bitmap palette in the order Red Green Blue and then construct a palette you get a backwards colored bitmap).

     After doing some more research it seems that the best way to convert an 8 bit (256 color) bitmap to 24 bit is to simply use the entries in the palette table for the 8 bit bitmap. The raw pixel data for a 24 bit bitmap encodes RGB triplets and the palette table for the 8 bit bitmap is encoded as RGB triplets (with one left over 'flag' field to keep the data aligned along double word boundaries). The bytes on the bit map point to one of 256 of these palette entries, and the data needed to make a conversion to 24 bit true color byte values is found in this palette table.


COLOR     4bit
0 Black
1 Red­Brown
2 Green
3 Brown­Green
4 Dark Blue
5 Purple
6 Blue­Green
7 Dark Grey
8 Light Grey
9 Orange­Red
10 Vivid Green
11 Yellow
12 Blue
13 Pink­Purple
14 Light Blue
15 White
8 bit
0
3
18
21
108
111
126
129
172
5
30
35
180
185
210
215
24 bit
0     0     0  
0     0     132
0     132   0
0     132   132
132   0     0
132   0     132
132   132   0
132   132   132
198   198   198
0     0     255
0     255   0
0     255   255
255   0     0
255   0     255
255   255   0
255   255   255   




Delphi INDEX




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.