Hi,

 I know I just threw Dave/HAL at all of you as a starting point for our
cross-platform API library. But now I realized that another approach might
be easier to go. The realization came to me when I saw how easy it is to
create a Mac application using PowerPlant.

 Wouldn't it be cool if we could use a tool like PP to create our basic
application shell for the Mac, while we'd use a different one on Linux, and
even another one (maybe Borland's C++ builder) for Windows? We'd save a lot
of time getting to know platform specifics.

 We'd then build a simple mapper call library that needs to be implemented
on each platform. This library would be much more lightweight than Dave/HAL
and would only implement what FreeCard needs to access directly. I.e. it
would provide calls to draw into a window, it would provide calls to walk
the window list (HC allows this, so we gotta, too, even though I'd prefer
it otherwise), it would call certain functions in response to menu choices
and clicks in windows etc.

 However, we'd hand the business of drawing parts and arranging them
*completely* to the host application. The library would simply be notified
when a custom object needs to be drawn (which we'd use for buttons with
styles like Shadow or oval) and on mouseDown, mouseUp, mouseRelease,
mouseStillDown, mouseEnter etc. But beyond that it would be
platform-specific implementation.

BENEFITS:
1) less problems with platform-native UI (we wouldn't have to get drawing
code that looks like Windows controls)
2) generating a platform-specific wrapper can be done with standard RAD
tools like Borland, PowerPlant etc. and we could use their classes for
advanced features (e.g. PowerPlant's FTP, POP and SMTP classes :-)
3) It would be easier to separate FreeCard from its UI, thus making ports
for console platforms easier
4) There could be several wrappers for the same platform, depending on what
program you want to write (e.g. FCGamesMac uses SpriteWorld for displaying
stack objects while FCStdAppMac uses PowerPlant)

DOWNSIDES:
1) larger application size as most RAD tools tend to include lots of
generic code
2) less control over and knowledge about the environment we run in (e.g.
overlapping buttons may only draw correctly using the games engine as most
applications won't need it, or graphics buffering may not be guaranteed on
some platforms)
3) more platform-specific code (=more maintenance)
4) More differences between platforms

I'm in my first 5 days of using PowerPlant, so I may be seeing everything
just a bit too peachy right now, but it still looks like a good way to go
right now. Netscape Mac is also implemented using PowerPlant, so I guess
they're doing this, too. Anybody know something I might've overseen?
Anything I translated too ambiguously into English that needs
clarification? Anybody need more info?

I'll try to whack up a li'l prototype once the picture becomes clearer in
my head.

Cheers,
-- M. Uli Kusterer

------------------------------------------------------------
             http://www.weblayout.com/witness
       'The Witnesses of TeachText are everywhere...'


Reply via email to