Changes:
- fractint.cfg supported with new driver field
- driver for each mode displayed on video mode screen
- intro screen spacebar issue fixed
- better text screen updates
- better banner image on setup dialogs
- install *.doc files as *.txt, cause that's what they are...
- add shortcuts to .txt files and to install folder
Known issues:
- saved image is wrong
- makedoc= doesn't work right
- keyboard input is still a little funky in places/at times
<http://www.xmission.com/~legalize/fractals/fractdev/FractIntSetup-21.00.alp…>
If you install this version on a machine with alpha 0, it will be
upgraded to alpha 1.
There is an on-again off-again issue with the keyboard input. I think
it stems from me trying to steal too much code from xfractint and not
writing it from scratch :-). At any rate, its better now, but I can
still manage to get it confused occasionally.
Feedback appreciated.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
<http://www.xmission.com/~legalize/book/download/index.html>
Legalize Adulthood! <http://blogs.xmission.com/legalize/>
Hi Richard,
Oops, I got a message saying that email was too big.
Yes I remember the old true colour mode and it was not much use as it only
gave shades of blue as no translation was done to the iteration count. My
true colour algorithm creates 3 sinusoidal values for each of the red, green
and blue colour streams and makes a true colour palette. All that is
required is the starting point in each sine wave and the frequency. I.e., 6
integers specify the true colour palette. These are spread out according to
the max iteration count. The only problem is that it is not reversible like
the 256 colour map, so a separate matrix of 16 bit integers needs to be kept
for the solid guessing etc to work.
Image deleted to reduce file size
This was the colour control dialogue box.
Here is how the palette is generated:
WORD RedStartInt, GreenStartInt, BlueStartInt, RedIncInt, GreenIncInt,
BlueIncInt;
BYTE TRUE_PALETTE[MAXTHRESHOLD * 3]; // for maximum palette
/**************************************************************************
Initialise True Colour Palette
**************************************************************************/
void InitTrueColourPalette(BYTE RandFlag)
{
long i, cycle, temp;
DOUBLE RedStart, GreenStart, BlueStart, RedInc, GreenInc, BlueInc;
float size;
static WORD Randomise;
if (RandFlag)
{
srand((unsigned)time(NULL) + Randomise);// Seed the random-number
generator with current time so
// that the numbers will be different every time we run.
if (RandomColourFlag)
{
RedIncInt = rand() / RandomDivisor;
GreenIncInt = rand() / RandomDivisor;
BlueIncInt = rand() / RandomDivisor;
RedStartInt = rand() / RandomDivisor;
GreenStartInt = rand() / RandomDivisor;
BlueStartInt = rand() / RandomDivisor;
}
Randomise = rand(); // to prevent the same value within the second!!
}
RedStart = (float)(RedStartInt) / 100.0;
GreenStart = (float)(GreenStartInt) / 100.0;
BlueStart = (float)(BlueStartInt) / 100.0;
RedInc = (float)(RedIncInt) / 100.0;
GreenInc = (float)(GreenIncInt) / 100.0;
BlueInc = (float)(BlueIncInt) / 100.0;
temp = ((long) StartColourCycling > threshold) ? threshold :
StartColourCycling;
for (i = 1L; i < threshold; ++i)
{
cycle = temp + i;
if (cycle > threshold)
cycle -= threshold;
size = (float) cycle / (float) ((logval != 0) ? 256 : threshold);
TRUE_PALETTE[i * 3 + 0] = (BYTE)(127.0 * sin(TWO_PI * (size + RedStart)
* RedInc)) + 128;
TRUE_PALETTE[i * 3 + 1] = (BYTE)(127.0 * sin(TWO_PI * (size +
GreenStart) * GreenInc)) + 128;
TRUE_PALETTE[i * 3 + 2] = (BYTE)(127.0 * sin(TWO_PI * (size + BlueStart)
* BlueInc)) + 128;
}
*(TRUE_PALETTE + threshold * 3 + 0) = (BYTE)InsideBlue;
*(TRUE_PALETTE + threshold * 3 + 1) = (BYTE)InsideGreen;
*(TRUE_PALETTE + threshold * 3 + 2) = (BYTE)InsideRed;
}
Here is the basic plotting routine (cut down for simplicity):
Note that BYTE *pixels is the array of rgb triplets for the image to screen
and WORD *wpixels is the array of iteration counts (16 bit)
/**************************************************************************
Get values of r, g, b
**************************************************************************/
BYTE *GetRGB(DWORD colour)
{
DWORD j;
static BYTE rgb[3];
j = (TrueColourFlag) ? colour + colour + colour : (DWORD)((colour % 256L) *
3L);
*(rgb + 0) = *(PalettePtr + j + 2);
*(rgb + 1) = *(PalettePtr + j + 1);
*(rgb + 2) = *(PalettePtr + j + 0);
return (rgb);
}
/**************************************************************************
Plot correct pixel according to count, i, j
**************************************************************************/
void outpoint(WORD x, WORD y, DWORD colour)
{
long i;
long local_width;
if (colour > (DWORD)threshold) // don't write past end of palette
{
if (TrueColourFlag)
colour = (DWORD)threshold;
else if (colour >= 255L)
colour = 255L;
}
// first do screen
if (x < 0 || x >= width || y < 0 || y >= height)
return;
local_width = WIDTHBYTES((DWORD)width * (DWORD)bits_per_pixel);
i = ((long) (height - 1 - y) * (long) (local_width + 3 - ((local_width - 1)
% 4)) + (long)(x * 3));
if (colour == (DWORD)threshold) // handle inside colour
{
*(pixels + i + 0) = (BYTE)InsideBlue;
*(pixels + i + 1) = (BYTE)InsideGreen;
*(pixels + i + 2) = (BYTE)InsideRed;
}
// memcpy(pixels + i, VGA_PALETTE + inside_colour * 3, 3);
else
memcpy(pixels + i, GetRGB(colour), 3);
// Now do reference
i = ((long) (height - 2 - y) * (long) (width + 3 - ((width - 1) % 4))) +
(long) x;
if (x >= 0 && x < xdots - 1 && y >= 0 && y < ydots - 1)
*(wpixels + i) = (WORD) colour;
}
/**************************************************************************
Read pixel colour
**************************************************************************/
DWORD ingetcolor(WORD x, WORD y)
{
long i;
long local_width;
if (x < 0 || x >= width || y < 0 || y >= height)
return 0L;
local_width = WIDTHBYTES((DWORD)width * (DWORD)bits_per_pixel);
i = ((long) (height - 1 - y) * (long) (local_width + 3 - ((local_width - 1)
% 4)) + (long)(x * 3));i = ((long) (ydots - 2 - y) * (long) (xdots + 3 -
((xdots - 1) % 4))) + (long) x;
if (x >= 0 && x < xdots && y >= 0 && y < ydots - 1)
return ((DWORD)((*(wpixels + i)) & 0xffff));
else
return 0L;
}
Let me know what you think :)
Seeya,
Paul.
----------------------------------------------------------
Paul de Leeuw Computers NSW Central Coast, Australia
Email: pdeleeuw(a)deleeuw.com.au
www: < http://www.deleeuw.com.au>
ABN 72 360 822 562
----------------------------------------------------------
-----Original Message-----
From: fractdev-bounces+pdeleeuw=deleeuw.com.au(a)mailman.xmission.com
[mailto:fractdev-bounces+pdeleeuw=deleeuw.com.au@mailman.xmission.com] On
Behalf Of Richard
Sent: Sunday, 14 January 2007 7:18 PM
To: Fractint developer's list
Subject: Re: [Fractdev] GDI output working! True colour?
In article <009201c737b1$e6a831b0$0301a8c0@Production>,
"Paul" <pdeleeuw(a)deleeuw.com.au> writes:
> Once you get it working a bit more efficiently, I can start preparing
> some true colour code for it. [...]
There is some existing truecolor support, but I haven't studied that code
yet.
Take a look at the existing code here:
<http://www.fractint.org/ftp/current/dos/fradev.zip>
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
<http://www.xmission.com/~legalize/book/download/index.html>
Legalize Adulthood! <http://blogs.xmission.com/legalize/>
_______________________________________________
Fractdev mailing list
Fractdev(a)mailman.xmission.com
http://mailman.xmission.com/cgi-bin/mailman/listinfo/fractdev
Hi,
If you look at orbit2dlong() and orbit2dfloat(), they don't initialize
the color variable. orbit3dlongcalc() and orbit3dfloatcalc()
initialize color to 2. So I have followed the same method. I have
added this change on the HEAD as well. If it should be something
else, let me know.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
<http://www.xmission.com/~legalize/book/download/index.html>
Legalize Adulthood! <http://blogs.xmission.com/legalize/>
Basic GDI output is working and fractals are rendering properly. We
are nearing a beta release!
Things could definately be more efficient; currently the GDI output is
as about as expensive as it could possibly get. (Simple, but slow.)
I would like to improve the speed with some obvious optimizations
before releasing it, even as a beta.
However, what this does mean is that Tim and Jonathan can use the
branch code in VS.NET 2003 for active experimentation with visible
output.
It also means that the branch is nearing an end...
Tim/Jonathan: any thoughts on when we should make a release and merge
the branch into the HEAD?
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
<http://www.xmission.com/~legalize/book/download/index.html>
Legalize Adulthood! <http://blogs.xmission.com/legalize/>
We're getting there... at the moment, I need to move the keyboard
handling code. Windows won't dispatch messages to the window proc of
a window that isn't shown (or it could just be another bug in fractint
I've introduced somewhere). I had designed the text/graphics switch
to work like this:
frame window
+
|
+--- text window
|
+--- plot window
The intention was to have all the text I/O code localized to the text
window and the graphics I/O localized to the plot window. Switching
between text and graphics modes amounts to showing and hiding child
windows. The frame window would ultimately contain things like a
menu. The plot window would ultimately contain scroll bars, but the
first cut was just to have it fixed at the video resolution size.
So I had all the keyboard code working in the text window and then
when I hide it and display the plot window, my keyboard input stopped
working.
So I'll move the keyboard code from the text window over to the frame
window. That will divide the handling this way:
keyboard input, mouse input:
- frame window
text output
- text window
graphic output
- plot window
We might have GDI output going next weekend, we'll see how it goes.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
<http://www.xmission.com/~legalize/book/download/index.html>
Legalize Adulthood! <http://blogs.xmission.com/legalize/>
When I try and download Fractint Alpha2:
<http://www.xmission.com/~legalize/fractals/fractdev/FractIntSetup-21.00.alp
ha2.msi>
I get:
Access Denied - Error 403
You do not have permission to access this page.
I was able to download and run Alpha1 without problems.
Would whoever can set permissions allow me access to Alpha2, please?
Thanks!
- Hal Lane
#########################
# hallane(a)earthlink.net #
#########################
--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.409 / Virus Database: 268.16.4/615 - Release Date: 1/3/07