TweetFollow Us on Twitter

Dec 88 Letters
Volume Number:4
Issue Number:12
Column Tag:£etters

Happy Aniversary

By David E. Smith, Editor & Publisher, MacTutor

Prototyper™ vs FaceIt™ vs Programmer’s Extender™

George R. Cossey

Author of Prototyper™

First let me say that the goal of Prototyper™ is similar to the other two products, but the implementation is very different. The goal for all of us is to make designing and building a Macintosh program less painful.

Prototyper™ has a built-in visual editors and simulators for interactive graphical design of the user interface, while the other two products provide no direct visual interaction in the program design.

Prototyper™ generates source code that uses only Mac Toolbox and does not supply any private or additional libraries for linking to. The other two products supply libraries to link to and provide their own toolboxes to interface to. The other two products supply libraries to link to and provide their own toolboxes to interface to the Mac interface.

Programmer’s Extender™ and FaceIt™ both try to make the Mac interface less of a challenge by using custom designed libraries that combine the functionality of multiple toolbox calls along with some canned control code. My objection to that method, as a programmer, is that canned libraries work for only specific conditions and if my program requires something a little extra that is not in the canned library then I have to replace it with my own code that uses the Mac Toolbox anyway. Prototyper™ generates source code that uses only the Mac Toolbox, so any “tweaking” that I have to do to a routine is easily added.

I commend both Programmer’s Extender™ and FaceIt™ for developing their own interface libraries to make programming on the Mac easier. Programmer’s Extender™ is a fine product that shows the dedication and high level of expertise of the designers. FaceIt™ is a fairly recent newcomer and has potential to provide the same level of functionality that Programmer’s Extender™ does.

In summary, I developed Prototyper with two main goals in mind. The first was to make designing a program’s interface like painting a picture in MacDraw, with objects that could be resized and repositioned visually. The second was to provide source code that used only the standard Mac Toolbox and not any special libraries. Both objectives were realized with Prototyper™, and I feel it is in a different class than Programmer’s Extender™ and FaceIt™ which use special libraries of functions.

[I commend Mr. Cossey on his excellent product. I like designing my interface at a MacDraw-type level. I would say that this type of development tool is for programming like the Mac was for user interfaces. This is not to say that I do not like or use the other products when doing my own developing.

Prototyper is definitely not perfect. There are many things I would like added or changed. But this shows how much I like what Prototyper tries to do. I want to improve what it does, not just throw it out. I can see in the future that this will be the avenue of interface developing. The interactive feel of seeing your interface is very gratifying. Mr. Cossey, please keep improving Prototyper. I feel you have a product with lots of potential. -Kirk Chase, Assistant Editor, MacTutor]

Word 3.01 Word Wrap

Steve Seaquist

Temple Hills, MD

After much more sleuthing, I’ve determined that font widths on the screen do not vary according to what printer is Chooser’d. The reason why word wrap and tab stops vary between ImageWriters and LaserWriters is Word’s variation of how it measures an inch:

• Chooser an ImageWriter, then Show Ruler, then get out a real-world ruler (a tape measure, for example) and hold it up to the screen. The inches that Word shows are notably longer than real-world inches.

• Now start a print job using Tall Adjusted. Afterwards, the word wrap point will change. Then do a Page Preview. Afterwards the on-screen ruler’s measurements will also change, and the new ruler’s inches will be a lot closer to (a tiny bit shorter than) real-world inches. (The requirement of doing Page Preview to change the ruler is probably a bug. It should change automatically to reflect current word wrap and tab stops.)

• I believe Word is using THPrint()^^.prInfo.iHRes to determine the number of pixels per inch in the on-screen ruler will accurately reflect the number of inches when the document is printed. This is the old aspect ratio problem.

• Dots on the screen are square 74dpi x 74dpi.

• Dots on IW, Tall are rectangles 72dpi x 80dpi.

• Dots on IW, tall adj. are square 72dpi x 72dpi.

To answer my previous questions:

(1) There is indeed a good reason to change word wrap and tab stops when changing between IWs and LWs. The difference in aspect ratio would yield a different number of characters that could fit comfortably on a line. Because only the center or end point(s) positions of lines are guaranteed, the LW driver’s QD-to-PS bottlenecks would generate lines longer than anticipated (left, right, or centered justified) or too compressed (fully justified). So the passage at the beginning of Tech Note 72 (about printing to LWs the same way as you would to IWs) is misleading.

(2) Contrary to my earlier suspicions, Word wasn’t playing any tricks to change screen font widths. In actuality, printer resolution changes printout font widths, and Word simply adjusts its screen display accordingly.

(3) The trick to getting IW rough drafts of Word documents that are intended to be LW’d is to use Tall Adjusted. I haven’t seen any mismatches yet, and I don’t anticipate seeing any, because Word seems to use the same 72 dpi ruler in either case. Too bad Microsoft’s hotline people didn’t know this. It would’ve save some people a lot of sleuthing.

I’m tempted to use Tall Adjusted and LW fonts in all Word documents, so that the decision of whether to LW the doc can be postponed. Unfortunately, Tall Adjusted seems to slightly improve, but not eliminate, the problem where Best mode printing jams together words that are in LW fonts. This makes Best mode Worst and eliminates the qualitative middle ground between Faster and LW (a middle ground that still exists if the doc is in an IW font). My only guess as to what causes that problem is the facts that FScaleDisable implies FractEnable (Tech Note 92, page 2) and Best mode printing is scaled down from the double-size font if available.

[You would think that a big software corporation such as Microsoft wouldn’t have such problems. I love Excel, and I tolerate Word. David uses WriteNow; there are a lot of advantages to this product. It can handle lots of pages without slowing down; it can control leading, but for some of the editing work which I do, WriteNow’s quirks just make me shake my head and say it is not much better than MacWrite. I was hoping FullWrite may answer my dreams, but I don’t have the megs or the speed to give me what I need. I’m looking into WordPerfect now for my editing needs. I know it won’t be perfect either, but it has some promise. -ed]

More DB and C

Michael D. Sammer

Bartlesville, OK

Please let me compliment you on the fine journal, MacTutor. I enjoy reading it thoroughly, and it is very helpful. I program strictly in C, therefore, I would appreciate it if we could see more articles on C. This would be extremely helpful to me. Specifically, some articles on database management, hashing tables, and details regarding definitions of records in a file would be very helpful. Techniques for manipulating data back and forth from the disk to a data structure, efficient ways to mark the end of a record in a database would be helpful. I am also interested in a scheme for searching the database in regard to a group of different index parameters, ie, a list of all programmer’s who use a Macintosh, the C language, and are between the ages of 30 and 40. Efficient code for this type of a problem would be extremely educational.

Thank you very much for your assistance. Please continue the fine work which you and your staff have delivered.

[Yes, we have been laxed a little in the variety of languages covered in our journal. We have changed our article selection system to something that is hopefully more improved. But I get requests for more Fortran, more Lisp, more Assembly, as well as less on others. Any programmer worth his salt should be able to get information out of any language an application is written in even if it is not his preferred language (Jörg Langowski frequently has something very interesting in his column for me even though reading that Forth code is “reading hard”). I would also like to see more DB columns as well as WP, PS, and DTP. But unfortunately most of the articles I have on hand don’t fit into those categories. All those who have been thinking of writing up some articles with this much meat, get a typing!. -ed]

MyTENew Suggestion

Moshe Foger

Tel Aviv, Israel

I would like to comment about calling ROM directly through pointers published in the last September issue (Mousehole Report, p. 18). In my opinion the code would not work for the following reason:

When Lightspeed calls the MyTENew, it adheres directly to Pascal stack conventions (leaving room for TEHandle and pushing pointers to the two rectangles) and jumps to MyTENew leaving the return address on the stack. However in MyTENew, the compiler automatically inserts “Link A6, #0” which creates a new activation stack needed to access the function’s parameters. The link instruction saves the previous contents of A6 on the stack. The JSR instruction also leaves a return address on the stack; thus when the ROM is activated, it treats the saved A6 and the original return address as the required rectangle pointers and puts the handle in the pointer to ViewRect

To correct it, I would suggest the following in MyTENew:

TEHandle MyTENew(Dest, View)
Rect *Dest, *View;
{
asm{
 UNLK A6;Balance for Link from compilr
 MOVE (A7)+,A3 ;POP return addr. to safe reg.
 JSR  TENew ;Jump to ROM
 JUMP (A3); Return
 }
}

Animated Cursors

David Stoops

Philadelphia, PA

I am an engineering undergraduate at Drexel University, a school considerably devoted to Apple’s University Consortium. I am writing in response to the heated discussion of animated cursors in the March and May ’88 issues. In a rare moment of inspiration, I realized that animating the watch is a chore ideally suited for implementation as a VBLTask. Referring back to the June ’86 MacTutor, which contains an article on screen switching animation using the Vertical Retrace Manager, I wrote the enclosed snipets of Lightspeed Pascal code that seems to do the job.

The routines make use of the ‘acur’ resource, which should be copied along with the necessary ‘CURS’ resources from the Finder into the project resource file. To use these routines, first call InitWatch to get handles to the cursors, then call StartWatch to display the animated watch while your program goes on about its business. A final call to StopWatch removes the task from the vertical retrace queue to halt animation. I find this scheme does a better job of animating the watch than that emploed by the Finder (notice how poorly the watch hands move during lengthy I/O operations under the Finder). Hope this proves useful.

unit WatchGlobals

interface

type
 acur = record
 whichWatch : longint;
 Watch : array[1..8] of CursHandle;
 end;
 acurPtr = ^acur;
 acurHandle = ^acurPtr;

var
 currentWatch : integer;
 WatchList : acurHandle;
 VBL : VBLTask;

implementation

end.


unti WatchUtlities;

interface

uses
 WatchGlobals;

procedure InitWatch;
procedure StartWatch;
procedure StopWatch;

implementation

procedure InitWatch; {Get the watch CursHandles}
 var
 watchcount : integer;
begin
 WatchList := acurHandle(GetResource(‘acur’,0)); 
 {Will crash if ‘acur’ isn’t available’}
 with WatchList^^ do
 begin
 for watchcount := 1 to 8 do
 GetCursor(HiWord(longint(Watch[watchcount])));
 whichWatch := 0;
 end;
end;

procedure AnimateWatch; {Our VBL routine}
begin
 SetUpA5;
 with WatchList^^ do
 begin
 if whichWatch >= 8 then
 whichWatch := 1
 else
 whichWatch := whichWatch + 1;
 SetCursor(Watch[whichWatch]^^);
 end;
 VBL.vblCount :=10;
 RestoreA5;
end;

procedure StartWatch;
 {Install our task in the vertical retrace queue}
var
 err : OSErr;
begin
 with VBL do
 begin
 qType := Integer(vType);
 vblAddr := @AnimateWatch;
 vblCount := 10; {Update watch every 10 ticks}
 vblPhase := 0;
 err := VInstall(@VBL);
 end;
end;

procedure StopWatch;
{remove our task from the vertical retrace queue}
var
 err : OSErr;
begin
 err := VRemove(@VBL);
end;

end.
 
AAPL
$97.67
Apple Inc.
+0.64
MSFT
$44.50
Microsoft Corpora
+0.10
GOOG
$589.02
Google Inc.
-4.33

MacTech Search:
Community Search:

Software Updates via MacUpdate

TotalFinder 1.6.2 - Adds tabs, hotkeys,...
TotalFinder is a universally acclaimed navigational companion for your Mac. Enhance your Mac's Finder with features so smart and convenient, you won't believe you ever lived without them. Tab-based... Read more
Vienna 3.0.0 RC 2 :be5265e: - RSS and At...
Vienna is a freeware and Open-Source RSS/Atom newsreader with article storage and management via a SQLite database, written in Objective-C and Cocoa, for the OS X operating system. It provides... Read more
VLC Media Player 2.1.5 - Popular multime...
VLC Media Player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, MP3, OGG, ...) as well as DVDs, VCDs, and various streaming protocols. It... Read more
Default Folder X 4.6.7 - Enhances Open a...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click... Read more
TinkerTool 5.3 - Expanded preference set...
TinkerTool is an application that gives you access to additional preference settings Apple has built into Mac OS X. This allows to activate hidden features in the operating system and in some of the... Read more
Audio Hijack Pro 2.11.0 - Record and enh...
Audio Hijack Pro drastically changes the way you use audio on your computer, giving you the freedom to listen to audio when you want and how you want. Record and enhance any audio with Audio Hijack... Read more
Intermission 1.1.1 - Pause and rewind li...
Intermission allows you to pause and rewind live audio from any application on your Mac. Intermission will buffer up to 3 hours of audio, allowing users to skip through any assortment of audio... Read more
Autopano Giga 3.6 - Stitch multiple imag...
Autopano Giga allows you to stitch 2, 20, or 2,000 images. Version 3.0 integrates impressive new features that will definitely make you adopt Autopano Pro or Autopano Giga: Choose between 9... Read more
Airfoil 4.8.7 - Send audio from any app...
Airfoil allows you to send any audio to AirPort Express units, Apple TVs, and even other Macs and PCs, all in sync! It's your audio - everywhere. With Airfoil you can take audio from any... Read more
Microsoft Remote Desktop 8.0.8 - Connect...
With Microsoft Remote Desktop, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help... Read more

Latest Forum Discussions

See All

This Week at 148Apps: July 21-25, 2014
Another Week of Expert App Reviews   At 148Apps, we help you sort through the great ocean of apps to find the ones we think you’ll like and the ones you’ll need. Our top picks become Editor’s Choice, our stamp of approval for apps with that little... | Read more »
Reddme for iPhone - The Reddit Client (...
Reddme for iPhone - The Reddit Client 1.0 Device: iOS iPhone Category: News Price: $.99, Version: 1.0 (iTunes) Description: Reddme for iPhone is an iOS 7-optimized Reddit client that offers a refreshing new way to experience Reddit... | Read more »
Jacob Jones and the Bigfoot Mystery : Ep...
Jacob Jones and the Bigfoot Mystery : Episode 2 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Jacob Jones is back in Episode 2 of one of Apples 'Best of 2013' games and an App Store... | Read more »
New Trailer For Outcast Odyssey, A New K...
New Trailer For Outcast Odyssey, A New Kind of Card Battler Posted by Jennifer Allen on July 25th, 2014 [ permalink ] Out this Fall is a new kind of card battle game: Outcast Odyssey. | Read more »
Hay Day – Tip, Tricks, Strategies, and C...
Recently got into Supercell’s other huge hit, Hay Day and could do with some advice on what to do? We’ve got you covered with some helpful trips and tricks to bear in mind! Ticking Along One of the key things to keep in mind while building up that... | Read more »
Monster Head Review
Monster Head Review By Nadia Oxford on July 25th, 2014 Our Rating: :: FEEDING TIMEUniversal App - Designed for iPhone and iPad Racking up a high score with Monster Head is trickier than it first appears. The appeal wears out fairly... | Read more »
Garfield: Survival of the Fattest Coming...
Garfield: Survival of the Fattest Coming to iOS this Fall Posted by Jennifer Allen on July 25th, 2014 [ permalink ] Who loves lasagna? Me. Also everyone’s favorite grumpy fat cat, Garfield. | Read more »
Happy Flock Review
Happy Flock Review By Andrew Fisher on July 25th, 2014 Our Rating: :: HERD IT ALL BEFOREUniversal App - Designed for iPhone and iPad Underneath the gloss of Happy Flock’s visuals is a game of very little substance. It’s cute, but... | Read more »
Square Register Updates Adds Offline Pay...
Square Register Updates Adds Offline Payments Posted by Ellis Spice on July 25th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Looking For Group – Hearthstone’s Curse...
For the first time since its release (which has thankfully been a much shorter window for iPad players than their PC counterparts), Blizzard’s wildly successful Hearthstone: Heroes of Warcraft CCG is sporting some brand new content: the single... | Read more »

Price Scanner via MacPrices.net

Record Mac Shipments In Q2/14 Confound Analys...
A Seeking Alpha Trefis commentary notes that Apple’s fiscal Q3 2014 results released July 22, beat market predictions on earnings, although revenues were slightly lower than anticipated. Apple’s Mac’... Read more
Intel To Launch Core M Silicon For Use In Not...
Digitimes’ Monica Chen and Joseph Tsai, report that Intel will launch 14nm-based Core M series processors specifically for use in fanless notebook/tablet 2-in-1 models in Q4 2014, with many models to... Read more
Apple’s 2014 Back to School promotion: $100 g...
 Apple’s 2014 Back to School promotion includes a free $100 App Store Gift Card with the purchase of any new Mac (Mac mini excluded), or a $50 Gift Card with the purchase of an iPad or iPhone,... Read more
iMacs on sale for $150 off MSRP, $250 off for...
Best Buy has iMacs on sale for up to $160 off MSRP for a limited time. Choose free home shipping or free instant local store pickup (if available). Prices are valid for online orders only, in-store... Read more
Mac minis on sale for $100 off MSRP, starting...
Best Buy has Mac minis on sale for $100 off MSRP. Choose free shipping or free instant local store pickup. Prices are for online orders only, in-store prices may vary: 2.5GHz Mac mini: $499.99 2.3GHz... Read more
Global Tablet Market Grows 11% in Q2/14 Notwi...
Worldwide tablet sales grew 11.0 percent year over year in the second quarter of 2014, with shipments reaching 49.3 million units according to preliminary data from the International Data Corporation... Read more
New iPhone 6 Models to Have Staggered Release...
Digitimes’ Cage Chao and Steve Shen report that according to unnamed sources in Apple’s upstream iPhone supply chain, the new 5.5-inch iPhone will be released several months later than the new 4.7-... Read more
New iOS App Helps People Feel Good About thei...
Mobile shoppers looking for big savings at their favorite stores can turn to the Goodshop app, a new iOS app with the latest coupons and deals at more than 5,000 online stores. In addition to being a... Read more
Save on 5th generation refurbished iPod touch...
The Apple Store has Apple Certified Refurbished 5th generation iPod touches available starting at $149. Apple’s one-year warranty is included with each model, and shipping is free. Many, but not all... Read more
What Should Apple’s Next MacBook Priority Be;...
Stabley Times’ Phil Moore says that after expanding its iMac lineup with a new low end model, Apple’s next Mac hardware decision will be how it wants to approach expanding its MacBook lineup as well... Read more

Jobs Board

*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
WW Sales Program Manager, *Apple* Online St...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
Lead Software Engineer, *Apple* Online Stor...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
Manager, *Apple* Fullfillment Operation (AF...
…cross-functional teams to drive the highest level of program management quality for Apple . You will help plan launch strategy and demand generation programs with Read more
Project Manager / Business Analyst, WW *Appl...
…a senior project manager / business analyst to work within our Worldwide Apple Fulfillment Operations and the Business Process Re-engineering team. This role will work Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.