Need Beta testers for Annotator replacement

#21
Hiho !

Hi Art and autogenners !

Thanks for your posting Art, i will try today evening.
I have 2 new PCs with SP2 but i cannot test with them, because they
will be my FS2004-Simulator for rent.
I will post a photo tonight , you will be rolling on the floor ... :rotfl:
But i will try it out with my Prog-PC.

Damn - one admin at my customers is ill and i am not at home.
So this night is gonna be VERY short ... hehehe :p

By the way AZ is Arizona ?

Greetz - Enzo :wave:
 
#22
Enzo, yes born and raised in Arizona. Living in the Phoenix area now.

Someone else got back to me last night telling me they deleted another reference from the setup.lst file and got the program to install. Don't have the email here in front of me at work so I can't remember exactly which one but probably one that popped up showing a version conflict. If I find it when I get home I'll forward it to you.

Man, dealing with Microsoft products is a pain. VB6 has been in use for a number of years now and should be rock-solid stable with its Package and Deploy tool and yet here's a glowing example of how just out of control their vision of shared resources was. That a new or upgraded version of their operating system could so easily break deployment of an application created with their own programming language is just beyond me in comprehension. Then, they have the gall to every year or so force worldwide users to upgrade to a new, unproven version of Windows that ships with a bug list in the hundreds while removing support from previous versions that millions have built their machines around.

Sorry, but it's easy for me to get on a rant about this area but I've wasted a tremendous amount of time in the past few days making up for Microsoft's inadequacies in program deployment and compatibility which I also get to do daily in my job.

Anyway, enough whining. Not nice to start the day with such animosity so we'll talk instead about the positives. I worked last night on an area I'd neglected in the initial program development - placement and control of GUI objects. I'm adding in a feature that will allow designers to automatically add in custom GUI classes with a single GUI object of their choice. The user will input the new class name, the class GUID (hoping to generate it automatically), the object they want to include in their class and the XML code will be added in automatically to the DEFAULT.XML file within the region they choose. This is all in anticipation of a user request to be able to automatically generate multiple GUI objects as I do with houses. In order to test that function I needed to put in a custom GUI class. I'm basically lazy so I figured I'd let my program write the XML for me. Once this functionality is complete, one will be able to create a class of something like just light poles and then define a line or box where one wants them to be placed and the program will create multiple objects along that line evenly spaced on the scenery tile.

I've added elements to the array of points defining the freehand vegetation areas so users won't get an out of bounds error.

Still to do: Need to create a comprehensive help file for the program. Need to pin down install issues more clearly. Need to add the button for Multiple GUI placement and an angled Vegetation area button. Need to add error trapping into various areas of the program to hopefully allow the program to remain running after a recoverable error along with an error log for debugging.

Dream list: This sounds like a fun challenge - to create a mosaic of scenery tiles within a texture directory on a large image divided by lines delineating the individual tiles. The user then can see how the tiles they want to work on fit together. Even sweeter would be if one could see the autogen coverage on that huge mosaic. I get really lost in large photoreal areas trying to figure out where I'm at. The user then simply chooses the tile they wish to work on with a mouse click. Naturally this won't work for users with 15,000 tiles in an area but should work for areas of much smaller coverage.

Choosing the tile you want to work on by slewing around in FS should be a fairly easy programming task given that the SDK is available for FSUIPC.

Another way out there thought - the ability to see how the objects you place would look 3 dimensionally with at least a crude representation of the tile you're working on that you could rotate and view 3d houses, trees and objects. That one is way beyond my programming abilities at this time but I love a challenge like that.

Anyway just some thoughts.

Art
 
#23
Great future !

Hi Arizona-Art,

that all sounds great to me !
Yeah - flying around and choosing the tile from where you are would be
a great time saving feature. :eek:

I think Richard Ludowise has the delphi-sources of his tcalc2004 prog in the
zip-file. Perhaps you save time by analyzing his delphi-code and function-calls.

Myself i will have a nice night of work and will at last fly around Albertville and
Challes-des-eaux in the alps after work ( with 3 Monitors of course -hehehe... )

L8er m8s - :wave:

Enzo
 
#25
Yep, that's why I got into writing custom software, to drive users to a slow suicide. Love the Microsoft keyboard.

Some possible good news though my friend. Seems Service Pack 6 for VB6 has fixed some install errors on software I was having problems distributing at work so I think, once I get that home and rebuild the distribution package, we should be able to get this install stabilized. Might take a few days though. I ended up working til 9:30 pm last night and we have some other late night stuff coming up at work. Might be a bit til I can get back to the program as I want to.

Patience is a virtue. (don't you hate cliches?)

Art
 
#26
Hiho Art !

No problem Art. I am going on a short trip on this friday to sunday.
So i can drink the good german white wine and relax . ..lol

Yeah - this is a thing that i know well - work work work...

Ok - have fun til Sunday evening -

oh by the way - look at my Simulator - you like it ?

2 x AMD3500+
2 GB RAM
PCi-X 6800 Ultra Gainward Golden Sample
via Network linked per crosscable
3 Benq 19 '' TFT -Monitors and 1 Analog Monitor
with Flightstick and Saytek Throttle and Joystick
and a Bass Woofer from Creative with 3 Speakers boomboom roarrrr

Yiiiihaaaaa - machine from hell.... :D



Greetz - Enzo

PS : By the way - the installer was ok after deleting in the
LST-File - but when starting the program as icon, i got the
documented error that you saw in last posting !
 
Last edited:
#28
Some of the people that have reported the 380 property value error have told me they figured out it was from using a comma instead of a period when setting the vegetation height values. This was American made you know. lol

Art
 
#29
Weeeeehhh !!!

Great Grin,

Art - you made my day - or better: night !
Thats it ! I had to change the Lst-File to install it -
then i changed the country-properties - and
the character for dezimal-separation from , to .

Now it works - lol - yahoooo ...

Ok - wait for my feedback -
and thanks for your tip !

Greetz -

Enzo :wave:

PS: My car was full of bottles of white wine ...
enough to fly the next coming sceneries ...
GREAT sceneries - Rhode Island from Etienne Vauchez
and FLIGHT Corse and FLIGHT Riviera with Photoscenery Nice and Cannes and the Verdon-Gorges .... yeeeeek !
 
#30
Great to hear. I'll be uploading a new version tomorrow. New service pack from Visual Basic makes me believe it'll get past the install errors and I've added a ton of new features based on user requests. Now have a fully-written help file. I'll have to address that comma/period thing soon.

Have fun,
Art
 
#31
Good news, Art !

Hey Art,

that is good news for us addicted Art-Fans :ziplip:

I have a date from a newspaper today evening.
They will make photos and write an article about my simulator.

When i have got errors or things to fix or to do otherwise for you - shall
i send you a mail or post it with screenies in here - or new thread ?
For example, the imagequality of the bmp that is shown isn t as good as annotator.
You can work - but the annotator has better quality in showing - i could
post an example for you if you want - comparison between both.

Ok - bye for now ...

By the way - you have programmed with Clipper ? Hehehe, me too.
The good old times ... Clipper and BLinker and Ovl-Files.
:D

Enzo
 
#32
Enzo, comments are just fine in here as long as Arno's ok with the traffic. Email to my aol address only gets to me at home. If it's on here I can look at it while at work as well. As far as image quality, I'm afraid I'm really stuck with the tools I have to work with. I am by no means really literate at low level graphical programming, only an accomplished borrower of what I can find already built. To display an image on the screen, I have to first use Martin Wright's function Any2bmp that converts the DXT .bmp format file to a standard viewable .bmp. If he's doing any averaging of detail during the covnversion I'm not aware or in control of it. I then have to use a loadpicture function to bring that image into a VB imagebox control. I then move a copy of that image into the large picturebox control. If I were a true graphical genius I could simply save a bunch of those steps and do the conversion and display in one step.

I never noticed a lack of shapness in the image but I'll check on it once I get home. Annotator's default picture size is way too small to do any editing on and I always found myself zooming into it at least once. It sure seemed to me that the image got blurry when zooming just as in my program but I never compared them directly. You have to remember that my primary emphasis in creating this program was for adding in houses as autogen so the zoom in is essential to keep one from having to define tiny little boxes everytime you placed a house. I can imagine someone primarily concerned with adding in vegetation areas might not care for the zoom but prefer the crispness of a smaller image.

Anyway, good luck on your interview.

Art
 
#33
hiho Art !

Hi again :wave:

don´t get me wrong , Art. I am not talking about a big
difference - just a little BIT of quality - but perhaps this
is only my graphics-card - i will test later. But no severe problem !

But all other features - and the POTENTIAL in your program -
is immense !!!
Even the feature of building FAST vegetation and not
playing Tetris with Annotator and paste,paste, paste is GREAT !!!

But now new thoughts from Tester Old Enzo:

- The path for XML-Objects is fixed to
F:\Program Files\Microsoft Games\Flight Simulator 9\Autogen

when i change it to my drive and path ( in Germany it would be PROGRAMME for example ) it does´t find still
and doesn t list the objects. And it doesn t save this path.

Another good thing would be a dialog box to type in the
path and BMP-File manually - not choosing from a big list.
( my Germany-tiles are about 12.000 tiles amount ... :D )
And saving last path and file name would be great.

If you want to - perhaps i could support you. If i didn t tell
it yet - i am programmer for SQL and Access ( all versions too ) and have a lot of ocx-modules that i think would
work in VB6 too.
And Access-Programming isn t too far from VB6.
But only an offer ...
If you want to keep all sources yourself i am the first to understand. I am working for some newspapers here and
the programs where i live from - i would NEVER give out of my house ... :D

Ok - that s it for today -

hope your customers don t keep you too busy in the daylight :p hehehe

Greetz from Enzo , Germany

PS : The date yesterday was a great success !
 
#34
Wish I could point you to the new version I just uploaded to Avsim last night but it's still not showing up this morning. It actually fixes many of the things you listed including the default path to the Default.xml file. I added in a quick reference on the File menu to the last 5 recent files but that addition won't show up until the next upload and I'm working feverishly on choosing tiles on a mosaic. I'll work on the feature to open the file by name although I can't imagine anyone wanting to type in that darned long name. My eyes cross when I get to about the 3rd character when reading it.

The newest upload also includes some rather thorough documentation and adds about 3 mg to the download size. I think I even fixed that problem with the format for decimal numbers. Added in a button to allow the user to create an angled rectangle that the program will fill in with vegetation squares and a freehand multiple GUI placement tool.

You can probably find it soon on Avsim. Just do a search of Autogen in their file library.

I'd love to play with any of your .ocx files. Email them to me.

Art
 
#35
Yiihaaa !

Sounds VEEERY good , Art !

Just for explanation -> of course i am NOT typing IN the
Tile-names - lol
But when i fly around with FS2004 and have TCalc2004
running, i copy the tilename from TCalc2004 into clipboard
and paste it into Annotator. So i can get the area that i am
flying over very fast !

Choosing it from a list - and next time again under 1000 s of tiles would be awful .... right ?

Getting the tile from FSUIPC or TCalc2004 DIRECT into
the dialogbox would - of course - be a PERFECT solution ... :D

Ok - i must seek for some ocx-files that work in Access and VB6 and are useful for this project - they are on another PC - i will send it to you - hope this can help you :)

Greetz from Enzo :wave:
 
#36
Ah the time-tested cut and paste. Use it often myself. Turns out figuring out the tile name from the lat/long you could get from FSUIPC is quite the undertaking. Saw the algorithm today and it's a mess. Even tougher is figuring out the lat/long from the tile name. If you have any easy insight on those processes, let me know. I have a post on Avsim talking about that and much of it is going right over my head.

Well, I'm really bummed out today. Expected to see my program update on Avsim and not only has it not shown up but the previous versions are gone as well. Now the contact email I included is my home computer and I won't get there for another hour but I'm real worried about why they'd remove them. Anyway, I might just be being impatient.

Art
 
#37
Hi Art !

Hi Art,

noticed that too -> no version anyway at AVSIM.
My offer again - send it to me via eMail and i host it
on my servers.

If you eMail it - send it to

good_old_enzo@gmx.de

Same like you - there i can get it even when i am at
my customers :)

Hmm - perhaps tomorrow i have the time to look at
the Ludovise delphi-code from TCalc2004.

Perhaps he can help you personally -> i think his
nickname in here is Rhumbaflappy or so ...
Maybe this would save you a lot of time and sends you
the function for tile-identification.


Greetz - Enzo
 

rhumbaflappy

Moderator
Staff member
Resource contributor
#38
First I snagged the FS9 latitude and longitude and converted that to "FSWholeLatitude" and "FSWholeLongitude":

Code:
  if (MyFDS.Read($0560, 8, @LatitudeInt) and MyFDS.Process) then begin
    FSLatitude := ( LatitudeInt / ( 10001750.0 * 65536 * 65536 )) * 90;
    FSLatitudeMinutes :=  Abs ( Frac ( FSLatitude ) * 60 );
    FSLatitudeSeconds :=  Abs ( Frac ( FSLatitudeMinutes ) * 60 );

    FSWholeLatitude := Abs (FSLatitude - 90.00 );
    LatitudeBox1.Text := FloatToStr( FSLatitude );
    LatitudeBox2.Text := FloatToStr( Int ( FSLatitude )) + '  ' +  FloatToStr( FSLatitudeMinutes );
    LatitudeBox3.Text := FloatToStr( Int ( FSLatitude )) + '  ' +  FloatToStr( Int (FSLatitudeMinutes )) + '  ' +  FloatToStr( FSLatitudeSeconds ) ;



  end;

  if (MyFDS.Read($0568, 8, @LongitudeInt) and MyFDS.Process) then begin
    FSLongitude := ( LongitudeInt / ( 65536.00 * 65536 * 65536 * 65536 )) * 360;
    FSLongitudeMinutes := Abs ( Frac( FSLongitude ) * 60 );
    FSLongitudeSeconds := Abs ( Frac( FSLongitudeMinutes ) * 60 );

    FSWholeLongitude := FSLongitude + 180.00;
    LongitudeBox1.Text := FloatToStr( FSLongitude );
    LongitudeBox2.Text := FloatToStr( Int ( FSLongitude )) + '  ' +  FloatToStr( FSLongitudeMinutes );
    LongitudeBox3.Text := FloatToStr( Int ( FSLongitude )) + '  ' +  FloatToStr( Int (FSLongitudeMinutes )) + '  ' +  FloatToStr( FSLongitudeSeconds ) ;

  end;

Then I used some If...then...else coding to build the string:


Code:
// CustomID Box 5
  begin

  // Quad13
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 1 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 1 ) );
  Quad13 := 0;
  Quad13Long := 0;
  Quad13Lat := 0;

   if Odd( QuadTempLong ) then
     Quad13Long := 1
   else
     Quad13Long := 0;

   if Odd( QuadTempLat ) then
     Quad13Lat := 2
   else
     Quad13Lat := 0;

   Quad13 := Quad13Long + Quad13Lat;

  // Quad12
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 2 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 2 ) );
  Quad12 := 0;
  Quad12Long := 0;
  Quad12Lat := 0;

   if Odd( QuadTempLong ) then
     Quad12Long := 1
   else
     Quad12Long := 0;

   if Odd( QuadTempLat ) then
     Quad12Lat := 2
   else
     Quad12Lat := 0;

   Quad12 := Quad12Long + Quad12Lat;

  // Quad11
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 4 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 4 ) );
  Quad11 := 0;
  Quad11Long := 0;
  Quad11Lat := 0;

   if Odd( QuadTempLong ) then
     Quad11Long := 1
   else
     Quad11Long := 0;

   if Odd( QuadTempLat ) then
     Quad11Lat := 2
   else
     Quad11Lat := 0;

   Quad11 := Quad11Long + Quad11Lat;

  // Quad10
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 8 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 8 ) );
  Quad10 := 0;
  Quad10Long := 0;
  Quad10Lat := 0;

   if Odd( QuadTempLong ) then
     Quad10Long := 1
   else
     Quad10Long := 0;

   if Odd( QuadTempLat ) then
     Quad10Lat := 2
   else
     Quad10Lat := 0;

   Quad10 := Quad10Long + Quad10Lat;

   // Quad9
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 16 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 16 ) );
  Quad9 := 0;
  Quad9Long := 0;
  Quad9Lat := 0;

   if Odd( QuadTempLong ) then
     Quad9Long := 1
   else
     Quad9Long := 0;

   if Odd( QuadTempLat ) then
     Quad9Lat := 2
   else
     Quad9Lat := 0;

   Quad9 := Quad9Long + Quad9Lat;

  // Quad8
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 32 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 32 ) );
  Quad8 := 0;
  Quad8Long := 0;
  Quad8Lat := 0;

   if Odd( QuadTempLong ) then
     Quad8Long := 1
   else
     Quad8Long := 0;

   if Odd( QuadTempLat ) then
     Quad8Lat := 2
   else
     Quad8Lat := 0;

   Quad8 := Quad8Long + Quad8Lat;

  // Quad7
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 64 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 64 ) );
  Quad7 := 0;
  Quad7Long := 0;
  Quad7Lat := 0;

   if Odd( QuadTempLong ) then
     Quad7Long := 1
   else
     Quad7Long := 0;

   if Odd( QuadTempLat ) then
     Quad7Lat := 2
   else
     Quad7Lat := 0;

   Quad7 := Quad7Long + Quad7Lat;

  // Quad6
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 128 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 128 ) );
  Quad6 := 0;
  Quad6Long := 0;
  Quad6Lat := 0;

   if Odd( QuadTempLong ) then
     Quad6Long := 1
   else
     Quad6Long := 0;

   if Odd( QuadTempLat ) then
     Quad6Lat := 2
   else
     Quad6Lat := 0;

   Quad6 := Quad6Long + Quad6Lat;

  // Quad5
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 256 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 256 ) );
  Quad5 := 0;
  Quad5Long := 0;
  Quad5Lat := 0;

   if Odd( QuadTempLong ) then
     Quad5Long := 1
   else
     Quad5Long := 0;

   if Odd( QuadTempLat ) then
     Quad5Lat := 2
   else
     Quad5Lat := 0;

   Quad5 := Quad5Long + Quad5Lat;

  // Quad4
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 512 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 512 ) );
  Quad4 := 0;
  Quad4Long := 0;
  Quad4Lat := 0;

   if Odd( QuadTempLong ) then
     Quad4Long := 1
   else
     Quad4Long := 0;

   if Odd( QuadTempLat ) then
     Quad4Lat := 2
   else
     Quad4Lat := 0;

   Quad4 := Quad4Long + Quad4Lat;

  // Quad3
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 1024 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 1024 ) );
  Quad3 := 0;
  Quad3Long := 0;
  Quad3Lat := 0;

   if Odd( QuadTempLong ) then
     Quad3Long := 1
   else
     Quad3Long := 0;

   if Odd( QuadTempLat ) then
     Quad3Lat := 2
   else
     Quad3Lat := 0;

   Quad3 := Quad3Long + Quad3Lat;

  // Quad2
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 2048 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 2048 ) );
  Quad2 := 0;
  Quad2Long := 0;
  Quad2Lat := 0;

   if Odd( QuadTempLong ) then
     Quad2Long := 1
   else
     Quad2Long := 0;

   if Odd( QuadTempLat ) then
     Quad2Lat := 2
   else
     Quad2Lat := 0;

   Quad2 := Quad2Long + Quad2Lat;

  // Quad1
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 4096 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 4096 ) );
  Quad1 := 0;
  Quad1Long := 0;
  Quad1Lat := 0;

   if Odd( QuadTempLong ) then
     Quad1Long := 1
   else
     Quad1Long := 0;

   if Odd( QuadTempLat ) then
     Quad1Lat := 2
   else
     Quad1Lat := 0;

   Quad1 := Quad1Long + Quad1Lat;

  // Quad0
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 8192 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 8192 ) );
  Quad0 := 0;
  Quad0Long := 0;
  Quad0Lat := 0;

   if Odd( QuadTempLong ) then
     Quad0Long := 1
   else
     Quad0Long := 0;

   if Odd( QuadTempLat ) then
     Quad0Lat := 2
   else
     Quad0Lat := 0;

   Quad0 := Quad0Long + Quad0Lat;

  // Quad00
  QuadTempLong :=  Trunc ( FSWholeLongitude / ( 0.0146484375 * 16384 ) );
  QuadTempLat :=  Trunc ( FSWholeLatitude / ( 0.010986328125 * 16384 ) );
  Quad00 := 0;
  Quad00Long := 0;
  Quad00Lat := 0;

   if Odd( QuadTempLong ) then
     Quad00Long := 1
   else
     Quad00Long := 0;

   if Odd( QuadTempLat ) then
     Quad00Lat := 2
   else
     Quad00Lat := 0;

   Quad00 := Quad00Long + Quad00Lat;

  CustomBox_5.Text := FloatToStr( Quad00 ) + FloatToStr( Quad0 ) + FloatToStr( Quad1 ) + FloatToStr( Quad2 ) + FloatToStr( Quad3 ) + FloatToStr( Quad4 ) + FloatToStr( Quad5 ) + FloatToStr( Quad6 ) + FloatToStr( Quad7 ) + FloatToStr( Quad8 ) + FloatToStr( Quad9 ) + FloatToStr( Quad10 ) + FloatToStr( Quad11 ) + FloatToStr( Quad12 ) + FloatToStr( Quad13 ) + 'Su.bmp';


  end;
The code is long, crude, arithmatic, and methodical. But it is exact. I think Luis Sa has some code that is a bit more refined. ;)

This is Delphi, but VB should be similar if you follow the logic in obtaining the numbers. Each number stands for a range of lat-long... a box... and we just need to know which of the 4 boxes it is in ( 0-3 ) for each number.

Dick
 
Last edited:
Top