TweetFollow Us on Twitter

Hypercard Authoring
Volume Number:10
Issue Number:3
Column Tag:Hypercard

Multimedia Authoring
With Hypercard V2.2

HyperCard’s not so colorblind anymore

By Tom Hammer, Apple Computer, Inc.

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

About the author

Tom manages a group at Apple. This means that he goes to meetings and otherwise avoids being anywhere near his dreaded telephone. He deserves your pity.

If you’ve been working on multimedia development on the Macintosh, chances are you’ve done some work with HyperCard. It’s a broad and accessible development environment, and now even more versatile as it can call on the services of the Open Scripting Architecture (OSA).

As rich as it is, HyperCard has lacked some things that are necessary if you’re going to effectively develop multimedia products. Support for color and needs specific to multimedia development haven’t been a part of the product and they have been either difficult to get or use. But help has arrived. Finally, HyperCard 2.2 offers us enough functionality in the box to let us do some serious work.

Color Tools

The most noticeable addition for multimedia developers is the inclusion of Color Tools, a stack with XCMDs and scripts for adding color to a stack. It has a button to install a Color Editor initialization handler into your Home stack. That adds a Color menu to your HyperCard menu bar. By choosing “Open Color Tools” from the Color menu when you have your stack open, you add the necessary resources (some strings, a custom CopyBits, and the AddColor XCMD) to your stack. Color Tools gives you a set of menus and a palette to colorize your stack, and keeps track of the color information you generate. The Color Tools palette appears when you “Open Coloring Tools” from the Color menu (Figure 1).

You can use the palette to create color objects, place pictures, and colorize normal objects. The AddColor XCMD does most of the work. It’s only 32K in size, and manages a stack’s database of color objects, including PICT resources or references to PICT files. AddColor also provides a wide range

Figure 1 - The Color Tools Palette

of visual effects for use when going from card to card or when displaying a color object from a script.

AddColor also allows you to create scripts that colorize the stack when it is running. This allows you to display pictures in response to the user's selections, and highlight buttons in color, too.

The other XCMDs and scripts in the Color Tools stack allow you to add and edit the color in your stack while you are developing it. You will create the information that the AddColor XCMD needs to colorize the card. You will be able to colorize buttons and fields, as well as color in any rectangular area you want. You can even draw color pictures!

AddColor uses information stored in the stack to know what and how to colorize the current card. AddColor gets installed into every stack that you colorize, so when you are done creating your stack, everyone else can enjoy your work.

Here’s a brief list of the calls that AddColor supports. The Color Tools stack goes into much more detail on each of these calls.

AddColor’s commands include:

"install" [,<bit depth>]
"remove"
"colorCard" [,<effect>[, <duration>]]
"colorCardLayered" [,<effect>[, <duration>]]
"colorBackground" [,<effect>[,<duration>]]
"colorRect","cd" |" bg",<rectangle>,<color>,<bevel>
"colorPict","cd" |" bg",<pictName>,<point | rectangle>,
 "t" |" o",[<effect>,[<duration>]]
"colorButton","cd" | "bg",<ID>,<color>,<bevel>
"colorField","cd" | "bg",<ID>,<color>,<bevel>
"colorPictFile","cd" | "bg",<fileName>,<point | rectangle>,
 "t" | "o"[,<effect>[,<duration>]]
"addRect","cd" | "bg",<rectangle>,<color>,<bevel>,<index>
"addPict","cd" | "bg",<pictName>,<point | rectangle>,
 "t" | "o",<index>
"addButton","cd" | "bg",<ID>,<color>,<bevel>,<index>
"addField","cd" | "bg",<ID>,<color>,<bevel>,<index>
"addPictFile","cd" | "bg",<fileName>,<point | rectangle>,
 "t" | "o",<index>
"getObjectClicked","cd" |"bg",<point> [,<type>]
"changeObjectColor","cd" | "bg",<index>,<color>
"changeObjectBounds","cd" | "bg",<index>,<rectangle>
"changeObjectTransparency","cd" | "bg",<index>,"t" | "o"
"removeObject","cd" | "bg",<index>
"getObjectBounds","cd" | "bg",<index>
"getObjectColor","cd" | "bg",<index>
"getObjectType","cd" | "bg",<index>
"getObjectBevel","cd" | "bg",<index>
"getPictName","cd" | "bg",<index>
"removeButton","cd" | "bg",<ID>
"removeField","cd" | "bg",<ID>
"moveForward","cd" | "bg",<index>
"moveBackward","cd" | "bg",<index>
"moveToFront","cd" | "bg",<index>
"moveToBack","cd" | "bg",<index>
"changeObjectBevel","cd" | "bg",<index>,<bevel>
"enable"
"disable"
"enableObject","cd" | "bg",<index>
"disableObject","cd" | "bg",<index>
"getButtonIndex","cd" | "bg",<ID>
"getFieldIndex","cd" | "bg",<ID>
"getBitsCall"
"compact","cd" | "bg"
"sort","cd" | "bg"

The four buttons at the top of the palette allow you colorize buttons or fields, add PICT resources or files to the card or background, and add color rectangles to the card or background. Below the buttons is a 256 color palette for adding color to buttons and fields or for creating colored rectangles.

You can apply a bevel to colored objects. Figure 2 shows how buttons and rectangles bevel outward, fields bevel inwards. Bevels can vary from one to six pixels and can be applied individually to buttons, fields, and colored objects.

Figure 2 - Buttons & Fields colored bevels

Double-clicking the Picture button in the Color Tools Palette allows you to place a PICT resource or file on the card or background layer. The resulting dialog (Figure 3) lets you choose a PICT resource in your stack, previews it, and allows you to place it. You can also import PICT files or PICT resources from other files into your stack. It also lets you place PICT files without storing them in your stack. Instead it keeps a reference, and reads the file when it needs to load the picture.

Figure 3 - Previewing and placing PICTs

The AddColor XCMD maintains a database of color objects and colorizing information, and stores it in the stack. The other XCMDs in the Color Tools stack provide the editing and layering of the color objects and the palette. Assigning color to a button, for example, does not alter a property of that button. Rather, it adds a corresponding color object to AddColor’s database with that button’s id number.

Color Tools drives the AddColor XCMD with scripts. It also puts handlers into your scripts to call AddColor to update the screen based on its database of color objects. When you assign any color to a stack, whether it's coloring a button or field or adding a PICT, the Color Tools will add openStack, closeStack, openCard, and closeCard handlers to the stack script. These handlers script the AddColor XCMD to display color objects and control AddColor’s visual effects.

For example, adding color and a simple effect to a new stack generated this:

on openCard
  Send colorMe to this card
  pass openCard
end openCard

on colorMe
  AddColor colorCard,rakeHorizClose,30
end colorMe

on openStack
  AddColor install
  pass openStack
end openStack

on closeStack
  AddColor remove
  pass closeStack
end closeStack

There are 22 visual effects, and you can display or remove a color object without moving from card to card. Wipes, dissolves, combs, rakes, iris effects and rectangle zooms can all be called from scripts. AddColor’s effects include:

fromLeft
fromRight
fromTop
fromBottom
fromTopLeft
fromTopRight
fromBottomLeft
fromBottomRight
dissolve
irisOpen
irisClose
checkerBoardOpen
checkerBoardClose
circleCheckerOpen
circleCheckerClose
barnDoorOpen
barnDoorClose
combVertical
combHorizontal
rectOpen
rectClose
venetianBlindsHorizontal
venetianBlindsVertical
rakeHorizOpen
rakeHorizClose
rakeVertOpen
rakeVertClose

Though the Color Tools take care of the scripting for you, the full functionality of the AddColor XCMD is available to you. Appending an addRect, addPict, addButton, addField, or addPictFile parameter to AddColor adds the corresponding object to AddColor’s database for that card or background. Similarly, colorRect, colorPict, colorButton, colorField, and colorPictFile temporarily draws the corresponding object. It gets drawn in the topmost layer, and remains there until you ask AddColor to refresh the screen. It does so with only the objects assigned to that card or background. You control the opacity or transparency of PICTs, the bevel of objects, RGB values for colored objects, the layer (card of background) to draw in, and the visual effect to apply when drawing the object.

Here is a sample script that draws a picture on the card layer of the stack at a specific location. It will be opaque and will draw with a visual effect that wipes the screen from the top left corner to the bottom right corner at a speed of 30 ticks.

on mouseUp
 put the selectedText of me into whichPict
 set cursor to watch
 lock screen
 AddColor "colorPict","cd",whichPict,"20,30","o", ¬
 "fromTopLeft","30"
end mouseUp

Another example shows coloring a button in an idle loop with random colors, using a visual effect and a bevel of 3 pixels:

on idle
 global RGBvalue
 put random(65535) -- the maximum value for R, G, or B
 lock screen
 AddColor "colorButton","cd",the id of cd button ¬
 "Chameleon", RGBvalue,"3"
 pass idle
end idle

QuickTime Toolkit

Claris put the QuickTime Tools in HyperCard 2.1. HyperCard 2.2 provides the same tool, complete with bug fixes to both the stack and Movie XCMD. The QuickTime Tools stack uses an XCMD to control the playing of QuickTime movies in a stack. QuickTime Tools provides an interface to the Movie XCMD and will write button scripts for you to control it (Figure 4).

The Movie XCMD provides thorough control over movie playback. It supports Play, Pause, Reverse, StepFwd, StepRev, PreRoll, CopyFrame, ShowPoster and MovieIdle, as well as all QuickTime movie properties and window parameters. It also supports movie messages such as mouseDownInMovie and MovieVolumeChanged. QuickTime Tools also provides the MovieInfo XFCN to get characteristics of a movie file such as its rect, preferred volume, preferred rate, duration, and preview time.

Figure 4 - The QuickTime Tools

Interface Enhancements

HyperCard now supports a wider variety of standard Macintosh interface elements, like standard and default buttons. It also supports popup menus as a new button type. Buttons also have a new family property. Radio buttons of the same family no longer require scripting to be mutually exclusive as members of the same family now know about each other. You can enable or disable buttons, so you no longer have to mess around with special gray fonts to show a disabled button. The following handler shows two different ways to control a button’s enabled property:

on mouseUp
 global hasPaidFee
 if hasPaidFee is false then disable card button "Show Movie"
 else set the enabled of card button "Show Movie" to true
end mouseUp

Fields can also behave as lists if you set a field’s lockText, dontWrap, and autoWrap properties to true. Setting multipleLines to true will allow the list field to support contiguous selections in the field. You can set these options from a script or the Field Info dialog.

Stand-alone Builder

Claris responded to developers’ requests for a HyperCard standalone runtime with the HyperCard player, which now ships with all Macintosh CPUs in the United States and with the HyperCard Player Toolkit. HyperCard 2.2 significantly improves on this notion by providing a new Save As capability. HyperCard can use stack translators to let you save your stacks in a variety of ways.

HyperCard 2.2 ships with the StackToApp stack translator. It embeds the HyperCard 2.2 Player in your stack and lets you control attributes such as the resulting file’s signature and version strings. Now you can save one stack as an application and others as files to be opened only by that application.

Apple has worked with Kaleida Labs to develop another stack translator to save your stacks as ScriptX files. Kaleida will ship this translator with their ScriptX Software Developer Kit when it ships later this year. Your stacks will then run as ScriptX files on any platform that has a ScriptX runtime. Look for more information from both Apple and Kaleida when ScriptX ships.

A Word About Licensing

One set of complaints that multimedia developers have had with the HyperCard Player, and other add on products such as some color XCMDs, have to do with licensing. Apple has listened and tried to come provide the best possible answer. Apple includes a license to distribute the HyperCard runtime embedded in standalone applications, the AddColor XCMD, and the Movie XCMD in the price of the product. When you buy HyperCard, you also buy the right to distribute your applications using the runtime and these externals royalty-free. With the agreement already in the box, you don’t even have to exchange licensing agreements with Apple.

For a limited time

Apple is bundling ADDmotion™II from MotionWorks with HyperCard 2.2. This full-featured animation package allows you to do path-base animation using sprites. It includes a full-color paint editor and will install runtime XCMDs into a stack as well as its animation data and resources. You also get a license to distribute the ADDmotion™II runtime XCMDs with your stacks, royalty-free.

HyperCard offers considerable additional capability in this new release that make it much easier to do multimedia development. HyperCard 2.2 comes with the tools you need to deliver effective multimedia products.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

LaunchBar 6.18.5 - Powerful file/URL/ema...
LaunchBar is an award-winning productivity utility that offers an amazingly intuitive and efficient way to search and access any kind of information stored on your computer or on the Web. It provides... Read more
Affinity Designer 2.3.0 - Vector graphic...
Affinity Designer is an incredibly accurate vector illustrator that feels fast and at home in the hands of creative professionals. It intuitively combines rock solid and crisp vector art with... Read more
Affinity Photo 2.3.0 - Digital editing f...
Affinity Photo - redefines the boundaries for professional photo editing software for the Mac. With a meticulous focus on workflow it offers sophisticated tools for enhancing, editing and retouching... Read more
WhatsApp 23.24.78 - Desktop client for W...
WhatsApp is the desktop client for WhatsApp Messenger, a cross-platform mobile messaging app which allows you to exchange messages without having to pay for SMS. WhatsApp Messenger is available for... Read more
Adobe Photoshop 25.2 - Professional imag...
You can download Adobe Photoshop as a part of Creative Cloud for only $54.99/month Adobe Photoshop is a recognized classic of photo-enhancing software. It offers a broad spectrum of tools that can... Read more
PDFKey Pro 4.5.1 - Edit and print passwo...
PDFKey Pro can unlock PDF documents protected for printing and copying when you've forgotten your password. It can now also protect your PDF files with a password to prevent unauthorized access and/... Read more
Skype 8.109.0.209 - Voice-over-internet...
Skype is a telecommunications app that provides HD video calls, instant messaging, calling to any phone number or landline, and Skype for Business for productive cooperation on the projects. This... Read more
OnyX 4.5.3 - Maintenance and optimizatio...
OnyX is a multifunction utility that you can use to verify the startup disk and the structure of its system files, to run miscellaneous maintenance and cleaning tasks, to configure parameters in the... Read more
CrossOver 23.7.0 - Run Windows apps on y...
CrossOver can get your Windows productivity applications and PC games up and running on your Mac quickly and easily. CrossOver runs the Windows software that you need on Mac at home, in the office,... Read more
Tower 10.2.1 - Version control with Git...
Tower is a Git client for OS X that makes using Git easy and more efficient. Users benefit from its elegant and comprehensive interface and a feature set that lets them enjoy the full power of Git.... Read more

Latest Forum Discussions

See All

Pour One Out for Black Friday – The Touc...
After taking Thanksgiving week off we’re back with another action-packed episode of The TouchArcade Show! Well, maybe not quite action-packed, but certainly discussion-packed! The topics might sound familiar to you: The new Steam Deck OLED, the... | Read more »
TouchArcade Game of the Week: ‘Hitman: B...
Nowadays, with where I’m at in my life with a family and plenty of responsibilities outside of gaming, I kind of appreciate the smaller-scale mobile games a bit more since more of my “serious" gaming is now done on a Steam Deck or Nintendo Switch.... | Read more »
SwitchArcade Round-Up: ‘Batman: Arkham T...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for December 1st, 2023. We’ve got a lot of big games hitting today, new DLC For Samba de Amigo, and this is probably going to be the last day this year with so many heavy hitters. I... | Read more »
Steam Deck Weekly: Tales of Arise Beyond...
Last week, there was a ton of Steam Deck coverage over here focused on the Steam Deck OLED. | Read more »
World of Tanks Blitz adds celebrity amba...
Wargaming is celebrating the season within World of Tanks Blitz with a new celebrity ambassador joining this year's Holiday Ops. In particular, British footballer and movie star Vinnie Jones will be brightening up the game with plenty of themed in-... | Read more »
KartRider Drift secures collaboration wi...
Nexon and Nitro Studios have kicked off the fifth Season of their platform racer, KartRider Dift, in quite a big way. As well as a bevvy of new tracks to take your skills to, and the new racing pass with its rewards, KartRider has also teamed up... | Read more »
‘SaGa Emerald Beyond’ From Square Enix G...
One of my most-anticipated releases of 2024 is Square Enix’s brand-new SaGa game which was announced during a Nintendo Direct. SaGa Emerald Beyond will launch next year for iOS, Android, Switch, Steam, PS5, and PS4 featuring 17 worlds that can be... | Read more »
Apple Arcade Weekly Round-Up: Updates fo...
This week, there is no new release for Apple Arcade, but many notable games have gotten updates ahead of next week’s holiday set of games. If you haven’t followed it, we are getting a brand-new 3D Sonic game exclusive to Apple Arcade on December... | Read more »
New ‘Honkai Star Rail’ Version 1.5 Phase...
The major Honkai Star Rail’s 1.5 update “The Crepuscule Zone" recently released on all platforms bringing in the Fyxestroll Garden new location in the Xianzhou Luofu which features many paranormal cases, players forming a ghost-hunting squad,... | Read more »
SwitchArcade Round-Up: ‘Arcadian Atlas’,...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for November 30th, 2023. It’s Thursday, and unlike last Thursday this is a regular-sized big-pants release day. If you like video games, and I have to believe you do, you’ll want to... | Read more »

Price Scanner via MacPrices.net

Deal Alert! Apple Smart Folio Keyboard for iP...
Apple iPad Smart Keyboard Folio prices are on Holiday sale for only $79 at Amazon, or 50% off MSRP: – iPad Smart Folio Keyboard for iPad (7th-9th gen)/iPad Air (3rd gen): $79 $79 (50%) off MSRP This... Read more
Apple Watch Series 9 models are now on Holida...
Walmart has Apple Watch Series 9 models now on Holiday sale for $70 off MSRP on their online store. Sale prices available for online orders only, in-store prices may vary. Order online, and choose... Read more
Holiday sale this weekend at Xfinity Mobile:...
Switch to Xfinity Mobile (Mobile Virtual Network Operator..using Verizon’s network) and save $500 instantly on any iPhone 15, 14, or 13 and up to $800 off with eligible trade-in. The total is applied... Read more
13-inch M2 MacBook Airs with 512GB of storage...
Best Buy has the 13″ M2 MacBook Air with 512GB of storage on Holiday sale this weekend for $220 off MSRP on their online store. Sale price is $1179. Price valid for online orders only, in-store price... Read more
B&H Photo has Apple’s 14-inch M3/M3 Pro/M...
B&H Photo has new Gray and Black 14″ M3, M3 Pro, and M3 Max MacBook Pros on Holiday sale this weekend for $100-$200 off MSRP, starting at only $1499. B&H offers free 1-2 day delivery to most... Read more
15-inch M2 MacBook Airs are $200 off MSRP on...
Best Buy has Apple 15″ MacBook Airs with M2 CPUs in stock and on Holiday sale for $200 off MSRP on their online store. Their prices are among the lowest currently available for new 15″ M2 MacBook... Read more
Get a 9th-generation Apple iPad for only $249...
Walmart has Apple’s 9th generation 10.2″ iPads on sale for $80 off MSRP on their online store as part of their Cyber Week Holiday sale, only $249. Their prices are the lowest new prices available for... Read more
Space Gray Apple AirPods Max headphones are o...
Amazon has Apple AirPods Max headphones in stock and on Holiday sale for $100 off MSRP. The sale price is valid for Space Gray at the time of this post. Shipping is free: – AirPods Max (Space Gray... Read more
Apple AirTags 4-Pack back on Holiday sale for...
Amazon has Apple AirTags 4 Pack back on Holiday sale for $79.99 including free shipping. That’s 19% ($20) off Apple’s MSRP. Their price is the lowest available for 4 Pack AirTags from any of the... Read more
New Holiday promo at Verizon: Buy one set of...
Looking for more than one set of Apple AirPods this Holiday shopping season? Verizon has a great deal for you. From today through December 31st, buy one set of AirPods on Verizon’s online store, and... Read more

Jobs Board

Senior Software Engineer - *Apple* Fundamen...
…center of Microsoft's efforts to empower our users to do more. The Apple Fundamentals team focused on defining and improving the end-to-end developer experience in Read more
Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Housekeeper, *Apple* Valley Villa - Cassia...
Apple Valley Villa, part of a senior living community, is hiring entry-level Full-Time Housekeepers to join our team! We will train you for this position and offer a Read more
Senior Manager, Product Management - *Apple*...
…Responsibilities** We are seeking an ambitious, data-driven thinker to assist the Apple Product Development team as our Wireless Product division continues to grow Read more
Mobile Platform Engineer ( *Apple* /AirWatch)...
…systems, installing and maintaining certificates, navigating multiple network segments and Apple /IOS devices, Mobile Device Management systems such as AirWatch, and Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.