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...'