Scala InfoChannel Designer 3 - Extended

Copyright © 1993-2002 Scala, Inc. All rights reserved.
No part of this publication, nor any parts of this package, may be copied or distributed, transmitted, transcribed, recorded, photocopied, stored in a
retrieval system, or translated into any human or computer language, in any form or by any means, electronic, mechanical, magnetic, manual, or
otherwise, or disclosed to third parties without the prior written permission of Scala Incorporated.
TRADEMARKS
Scala, the exclamation point logo, and InfoChannel are registered trademarks of Scala, Inc. All other trademarks or registered trademarks are the sole
property of their respective companies.
The following are trademarks or registered trademarks of the companies listed, in the United States and other countries:
Microsoft, MS-DOS, Windows, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, DirectX, DirectDraw, DirectSound,
ActiveX, ActiveMovie, Internet Explorer, Outlook Express: Microsoft Corporation
IBM, IBM-PC: International Business Machines Corporation
Intel, Pentium, Indeo: Intel Corporation
Radius, Cinepak: Radius Incorporated
Ligos: Ligos Corporation
Adobe, the Adobe logo, Adobe Type Manager, Acrobat, ATM, PostScript: Adobe Systems Incorporated
Netscape, Netscape Navigator, and the Netscape N and Ship’s Wheel logos: Netscape Communications Corporation
Laserjet, HP: Hewlett-Packard Corporation
UNIX: The Open Group
TrueType, QuickTime, Macintosh: Apple Computer, Incorporated
Agfa: Agfa-Gevaert AG, Agfa Division, Bayer Corporation
“Segoe” is a trademark of Agfa Monotype Corporation.
“Flash” and “Folio” are trademarks of Bauer Types S.A.
Some parts are derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm.
JPEG file handling is based in part on the work of the Independent JPEG Group.
Lexsaurus Speller Technology Copyright © 1992, 1997 by Lexsaurus Software Inc. All rights reserved.
TIFF-LZW and/or GIF-LZW: Licensed under Unisys Corporation US Patent No. 4,558,302; End-User use restricted to use on only a single
personal computer or workstation which is not used as a server.
WARRANTIES AND DISCLAIMERS
The following paragraph does not apply to the United Kingdom or any country where such provisions are inconsistent with local Law:
SCALA INCORPORATED PROVIDES THIS PUBLICATION “AS IS” WITHOUT ANY WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE LIMITED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer or express or implied warranties in certain transactions, therefore,
this statement may not apply to you.
This publication could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these
changes will be incorporated in new editions of the publication. Scala may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time.
It is possible that this publication may contain reference to, or information about, Scala products or services that are not announced in your country. Such references or information must not be construed to mean that Scala intends to announce such Scala products or services in your country.
Requests for technical information about Scala products should be made to your Scala Authorized Distributor, Dealer or your Scala Marketing Representative.
Scala may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you
any license to these patents. Send license inquiries, in writing, to Scala Incorporated, One East Uwchlan Ave., Suite 300, Exton, Pennsylvania
19341 USA.
This manual was produced by Ross Hippely, Marc Rifkin and Tracey Waldron.
2
2
Table of Contents
Table of Contents 3
Preface 7
ICDesigner resources on the Web 7
1: Using sound 10
Sound sources 10
How ICDesigner manages sound 12
The Sound menu 14
Controlling different types of sound 15
Using sound samples 17
Using MIDI files 24
Using audio CDs 27
Using the Mixer 37
Defining several sound events 42
2: Making scripts interactive 46
Getting started: creating simple buttons 47
Working in the Design Buttons menu 52
Button states and state events 54
Select Action options 57
Other Action options 62
Appearance options 65
Using predefined buttons and presets 68
Working with Toggle and Radio buttons 70
Working with Text Entry Fields 73
Editing buttons 77
Creating more advanced buttons 78
Using the Input menu for custom input options 81
3
3: Branching and using variables 86
A simple Go To branch 86
Variables and expressions in the Branch menu 87
Branching with the Branch menu 95
Controlling script flow with branches 98
Using sub-scripts 110
4: Scheduling InfoChannel Designer 3 events 114
Scheduling and the Scala InfoChannel Player 114
Types of scheduling 117
Working in the Schedule menu 120
Scheduling with more complex scripts 134
How not to schedule 135
5: Printing scripts with ScalaPrint 140
Understanding ScalaPrint terminology 140
The ScalaPrint menu 142
ScalaPrint tabbed options 143
Different layouts for different pages 151
6: Publishing with InfoChannel Designer 3 154
Multiple media publishing 154
Publishing features 155
Publishing to the InfoChannel Network 157
Publishing to CD-ROM 162
Publishing to a file 165
Publishing to Web component 168
Publishing to e-mail 172
Publishing to HTML slides 174
Publishing to video 177
Completing publication of a script 183
Published scripts with add-on EX events 186
Microsoft components 187
4
7: Additional InfoChannel Designer 3 EXes 190
Launch EX 191
Log EX 192
TextFile EX 195
Serial EX 200
Billing EX 211
MCI MPEG EX 214
Optibase EX 220
Windows Scripting EX 226
File I/O EX 230
8: Using the Multi-tile Editor 234
How multi-tiles work 234
The Multi-tile Editor 236
Working in the Multi-tile Editor 243
Appendix A: Function and variable reference 250
Standard ICDesigner functions 250
System variables 257
Sound function 258
File I/O functions 258
Sound variables 258
Operators 260
Appendix B: Licensing issues 263
GIF and TIFF files 263
ICDesigner fonts, backgrounds and sounds 264
Media not provided by Scala 265
Using Scala trademarks 266
Understanding the license agreement 266
Third party redistributable software 267
5
Appendix C: The ScalaScript language 269
What is ScalaScript? 269
Why ScalaScript? 271
Using ScalaScript 273
Experimenting with ScalaScript 274
Switching between menus and ScalaScript 277
Appendix D: Possible problems and errors 279
Errors 284
Index 285
6
Preface
This volume of the InfoChannel Designer 3 User’s Guide, “Extended
Authoring and Publishing”, covers certain authoring features of Scala
InfoChannel Designer 3 that not all script authors need, as well as
ICDesigner’s publishing capability for distributed multimedia—multimedia content that can easily be delivered when and where you want
it, whether the final destination is in another room, another city, or
another country.
Note that additional documents in electronic form may be installed on
your system, accessible through Start menu shortcuts. The most up to
date versions of these documents, as well as a wide variety of other
helpful information, are available on Scala’s Web site,
http://www.scala.com.
ICDesigner resources on the Web
Scala’s Web site, http://www.scala.com, is an important resource for
ICDesigner customers, dealers, and VARs. For answers to questions
you can’t find in the User’s Guides, as well as downloads and additional information relevant to ICDesigner users, the Scala Web site
should be your first stop.
Pages you will find at the Scala Web site provide:
•
General product information, press releases, contact data
•
Technical support:
❖
❖
❖
❖
Registration
Troubleshooting FAQs
Problem report submission
Recommended hardware configurations
7
Preface
ICDesigner resources on the Web
•
Downloads:
❖
❖
❖
❖
•
Software updates and demos
Bonus art packs
Sample scripts
Additional documentation on EXes and ScalaScript
VAR resources:
❖ Forum
❖ Service packs
❖ Technical support and training
8
•
Customer case studies
•
Third-party support links
1: Using sound
Any type of sound—music, voices, the sound of a creaking door, a
mouse-button click or a big-city street corner—can be used to
enhance an InfoChannel Designer 3 script.
The right sound applied at the right time not only attracts attention
but also helps create a more vibrant viewing experience. When synchronized with on-screen activity such as a text wipe, page transition
or animation, sound adds life to the message you are presenting. A
simple voice-over recording can often replace pages of less dynamic
text, and adding sound helps attract and maintain the interest of the
audience. Sound is another ICDesigner element that enables you to
create a script that has the impact and appearance of a polished television production.
Sound sources
There are three basic sources for sounds that can be played by the
computer and used in an ICDesigner script.
•
Samples: Sound samples are sounds that are digitally recorded and
available as files on your hard disk or network, or on a diskette or
CD-ROM.
The original sound is converted into a digital format that the
computer can interpret and reproduce. This is done by taking
samples of the sound at periodic intervals. The number of samples
taken per second, that is the sampling rate, is expressed in hertz
(for example 44100 Hz) or kilohertz (44.1 kHz). The higher the
sampling rate, the more closely the digitized sound resembles the
original. All audio compact discs (CDs), for example, have a fixed
10
1: Using sound
Sound sources
sampling rate of 44.1 kHz, but 22 kHz is typical for most multimedia sound files where high fidelity is generally less necessary.
255
sound amplitude and
sample value (8-bit)
sampled sound wave
samples
0
time
In addition to the sampling rate, the quality of a sound sample
also depends on the sampling precision. This is expressed in bits,
and reflects the level of accuracy used to measure the changes in
amplitude—the up and down fluctuations—of the original
sound. An 8-bit sample stores the sound’s amplitude as one of 256
different values, whereas a 16-bit sample is much more precise
because it can choose from 65,536 values. The most common
types of sound-sample file on the PC are “wave” files with the filetype extension .WAV and .MP3 files that use MPEG techniques
for extreme compression.
•
MIDI files: A MIDI file is the digital equivalent of a musical
score, representing the notes, rests, orchestration and dynamics.
The score is created electronically using, alone or in various combinations, a computer, a hardware device or software program
called a sequencer, and an electronic keyboard or other controller.
MIDI (Musical Instrument Digital Interface) is the standard that
defines the way in which these devices are physically connected
and the way in which they communicate with one another. MIDI
11
1: Using sound
How ICDesigner manages sound
also defines the standard for the format of the files that contain
the score. These files have the file-type extension .MID.
Because the score is electronically recorded and reproduced,
MIDI files are extremely accurate. The musical parameters that
MIDI files can store include pitch, timing, volume, velocity (the
force with which notes are struck), and instrument-specific performance nuances such as the use of the pedal on a piano, or vibrato
on a guitar.
ICDesigner includes a MIDI player or “conductor” that reads the
score and sends the notes to a MIDI sound module. This can be a
part of the sound card installed in your PC or an external device
such as an electronic instrument connected by MIDI cables.
•
Audio compact discs: Most CD-ROM drives also enable you to
access and play tracks on standard audio CDs. If your CD-ROM
drive has this capability, ICDesigner can use it. This means that
you can coordinate activities in a script with high-fidelity music.
How ICDesigner manages sound
The Mixer in ICDesigner enables you to combine sounds from each of
these as stereo sources, plus two others.
Samples
MIDI
Mixer
Volume
Mixer
Pan
Master
Volume
Left audio
output
CD audio
Microphone
Line input
Master
Pan
Right audio
output
You can globally adjust the volume of one source relative to each of
the others, and you can set all sounds currently playing to new volume
levels, which can take effect immediately or over time. The Mixer also
12
1: Using sound
How ICDesigner manages sound
lets you control the volume of a microphone and a stereo line-level
external device such as a VCR or tape recorder. You may want to do
this, for example, to simultaneously fade out music in the background
of the script and increase the volume of a microphone in preparation
for a speech.
Sound options
The Sound options available to you depend on the type of sound you
are working with. The ability to take full advantage of the opportunities they offer depends on the equipment, especially the sound card (if
any), installed in the PC used to run your script.
For example, most CD-ROM drives enable you to play an audio CD
even if you do not have a sound card installed. Without a sound card,
however, you cannot use the Mixer to mix the sound with other
sources and, even then, this capability varies from card to card. Or, if
the sound card is monophonic and not able to produce stereophonic
sound, the Pan (balance) controls can be adjusted but have no effect.
Escaping hardware limitations
Although ICDesigner cannot overcome all of the limitations imposed
by your equipment, there are many technical details it handles automatically that would pose insurmountable problems in most other
multimedia applications.
For example, ICDesigner’s sound technology eliminates many worries
involving sample playback on typical sound hardware. Most sound
cards can play only one sample file at a time, and cannot play sounds
that use sample rates different from the ones it supports. ICDesigner’s
audio processing software lets you play several samples at once, and
even can perform real-time sample rate conversion if your sound files
were sampled at different rates. Similarly, sample precision is handled
automatically.
So if you have an 8-bit sound card, you can still use 16-bit sound sample files, or play an 8-bit sample on a 16-bit card. Even use 11-kHz,
22-kHz, and 44.1-kHz files in the same script, at the same time.
13
1: Using sound
The Sound menu
Although there can be some reduction in sound quality, in many cases
the difference is unnoticeable.
In general, you do not need to worry about the technical aspects of
sound; ICDesigner takes care of them automatically whenever possible. Once you have configured your sound card in Windows so that it
works properly outside ICDesigner, further adjustments should not be
needed.
The Sound menu
You see the Sound menu when you click on a button in the Sound column corresponding to an element in the List menu or a page in the
Main menu. The Sound menu is also accessible from the Design Buttons menu, when specifying a sound for a button state transition.
Command: pop-up
In the Sound menu, there are four available panels let you select which
type of sound event you want to work with: Sample, MIDI, CD, or
Mixer.
Each type of event has a list of commands, and each command in turn
may have its own set of options and parameters that you use to define
the details of the sound event.
The Command: pop-up in the upper left corner of each panel determines which options you see. Clicking on the Command: pop-up
shows you the list of possible commands associated with that type of
sound. When you choose a command, the pop-up shows the name of
the command, and the set of applicable controls for that command, if
any, appears in the panel.
14
1: Using sound
Controlling different types of sound
When the Sound button in the List menu or Main menu is blank, it
means that no sound of any type is currently applied to the element or
page. When you click on a blank Sound button for the first time during an ICDesigner working session, you see the Sound menu shown in
the preceding illustration. Otherwise, you see the panel for the type of
sound you worked with most recently for that event.
When the Sound button is not blank, it means that a sound event is
already applied to the element in the List menu or page in the Main
menu. The text on the button specifies each sound event that is currently applied; that is, the type of sound and the command defined.
In the page row shown below, for example, the Sound button indicates
that when the script reaches page 2 a sound sample is scheduled to
play. (You might need to adjust the width of the Sound column to see
all the information about the sound events. See the section “Customizing columns” on page 53 in chapter 2 of the “Basic Authoring” guide.)
When you click on a Sound button containing text, you see the Sound
menu and the panel for that type of sound event.
If at any time the command you see is not the one you want to work
with:
1. Click the tab for the panel of the type of sound event you want to
apply.
2. Choose the desired command from the Command: pop-up.
The commands available for each type of sound event are discussed in
the following section.
Controlling different types of sound
Defining a sound event in your ICDesigner script inserts an instruction that is similar to a cue in the script of a stage play. In the theater
script, a cue may direct the actors to move to stage left or the techni15
1: Using sound
Controlling different types of sound
cian to dim the lights. In your ICDesigner script, the sound event may
initiate a special sound effect or adjust the volume of a musical track
that is already playing.
In both cases, the cue indicates exactly when and where an action
should occur, and it specifies the result that must be achieved regardless of any other previous or on-going activity. And, in both cases, the
effect of the cue may be brief or long lasting.
Each type of sound—Sample, MIDI, CD—has a set of possible
events, each of which has its own panel, as does the Mixer. You access
the set by clicking on the panel tab corresponding to the type of sound
event you want to work with, and then choose the exact type of event
from the Command: pop-up list.
You can only specify one command for each type of sound in a single
sound event, but you can specify commands for more than one sound
type in one sound event. For example, you could put both a MIDI
command and a Mixer command in the same event.
The events available for each type of sound are summarized in the following table.
Sample
MIDI
CD
Mixer
None
None
None
None
Play
Play
Play
Volume
Pan
Wait
Wait
Play MSF
Stop
Stop
Sync
Volume
Pause
Wait
Pan
Resume
Stop
Volume
Pause
Pan
Resume
Eject
Read Contents
Next
Previous
Volume
Pan
16
1: Using sound
Using sound samples
The name of the command is shown on the pop-up, and that name
also appears on a button in the Sound column that uses such an event.
None is used to remove a sound event for the particular sound type.
When the pop-up reads None, no sound event of that type is applied
to the current element or page.
The controls for each event include settings that define the event, as
well as options that make it possible to coordinate sound events with
other script events.
In the table, notice that several sound events are common to the different sound types. Many of the options in the panels that define these
common sound events are the same, regardless of the type of sound
associated with the panel. The settings have the same effect and the
controls work the same way.
As a result, the discussion that follows begins by defining each of the
sound events and controls associated with the Sample panel and, thereafter, discusses only the things that are different for each of the other
types of sound.
Click on Preview at any time to test the sounds and settings you define
and to hear how well they fit into the events already applied to the current page.
Remember, however, that even though the Command: pop-up might
indicate that no sound of a particular type is applied (None), a sound
may be playing as the result of events on a previous page. When you
click on Preview in the Sound menu, you hear only the sounds applied
specifically to the current page. Use the Preview button in the List or
Main menu to see and hear what actually happens with pages surrounding the one you are working with.
Using sound samples
Sample Play command
This command enables you to select a sample file and access the command panel for sampled sounds.
17
1: Using sound
Using sound samples
1. In the Sample panel, choose Play on the Command: pop-up. You
see the Command:Play panel, which looks like this:
2. Click on the File: button to open the File dialog.
You can listen to any of the sounds using the Preview icon in the
File dialog toolbar. (When you preview sounds in the File dialog,
the ICDesigner screen or window goes blank while the sound
plays. Click the mouse to end the preview and see the File dialog
again.)
3. When you find the sound you want, double-click on the name of
the file or click on OK.
On the File: button, you now see the name of the file you selected.
To define the details of the Play event, adjust the settings in the
panel as necessary to play the sound sample you selected. You can
define the settings in any order and at any time. Each control in
the panel and its purpose, possible settings and ultimate effect in
the script, are described below.
Loops defines the number of times the sample is played before the next
page in the script is displayed or the sample is stopped. You can specify
a number between one (1) and ninety-nine (99) or an “infinite repeat”
setting (∞).
The infinite repeat setting is useful when you don’t know exactly when
the event should stop. In an interactive script, for example, you often
want music to continue playing in the background until someone
presses an on-screen button.
Use the Loops value control to define the number of plays you want. If
the setting is ∞, the sample doesn’t stop until the next time a sample
18
1: Using sound
Using sound samples
Stop command is encountered in the script or it is otherwise interrupted. The default setting is 1.
Volume controls the loudness of the sound. Adjust the volume by
dragging the slider to the position you want on the volume control.
The sound gets progressively louder as the slider moves from left to
right.
The intensity and quality of the sound that is heard at the minimum
and maximum settings is determined by the sound card. There is normally no audible sound at the lowest setting, but from some cards you
might hear low-level noise when the sound is amplified by your audio
system or computer speakers.
To ensure the highest sound quality from the card, it is common to
first set the volume in the Play panel to the maximum level and adjust
the volume of the external amplifier as necessary to produce the loudest sound needed. Then go back to the Play panels of the individual
sounds and set the Volume sliders to the desired levels.
The volume setting is at the maximum level by default.
Fade In Time allows you to gradually increase the volume of the sound
from zero to the level set on the Volume control.
The setting ranges from zero (0) to ninety-nine (99) seconds. When
the setting is zero, the sound sample starts to play immediately at the
loudness level defined by the Volume control.
Use the Fade In Time value control to make the adjustment. The
default time is zero and there is no fade-in period.
If you have a stereophonic (stereo) sound card and amplification system, the Pan control changes the balance of the sound going to the left
and right channels, moving the position the sound appears to be coming from. When the slider is in the center position, the same amount
of sound is produced by each speaker. If the speakers are positioned
equally to the left and right of the listening audience, the sound is
heard as though it is coming from a position in the middle.
19
1: Using sound
Using sound samples
Dragging the Pan slider to the left or right of the center increases the
amount of sound coming from one speaker as it decreases the amount
coming from the other. When the slider is at the far left of the control,
for example, no sound comes from the right speaker.
Changing the Pan setting of the sound can be very effective when the
sound is coordinated with the position of an element on the screen.
Unless you specifically change the setting, ICDesigner assumes the
sound should be balanced and the Pan slider is in the center position.
If you have a monophonic (mono) card or system, adjusting the Pan
control has no effect.
Wait? instructs ICDesigner to wait until this sound event is finished
before proceeding to the next event in the script. When Wait? is on
(✓), nothing new happens in the script until the sound event is completed.
This overrides any pause setting. For example, if the sound sample you
are using is 15 seconds long and a pause setting applied to the element
or page is 10 seconds, the sample will be allowed to finish before the
script continues to the next page.
ICDesigner Note
When Loops is infinite, the
Wait option works like this: if
Wait? is on, the sound continues until the page advances
from interactive input. If Wait?
is off, the page advances
when all remaining elements
on the page have completed.
If Wait? is off, after the sound starts, other script
events occur according to schedule. The sound can
continue in the background as the script progresses
until it stops naturally, stops because it has completed
the number of repetitions you defined in the Loops
setting, or stops because you define a sample Stop
command later in the script.
The Wait? button is available in several Sound menu
panels for Sample, MIDI, CD, and the Mixer. By default, is off; that
is, the script can continue although the sound events may still be taking place. Leaving Wait? off for one or more events can let you have
several sound events going on in the script at the same time. For example, music from a CD may be playing in the background when a button pops up on the screen with a sampled sound as it appears.
20
1: Using sound
Using sound samples
Sample Wait command
Like the Wait? button, the sample Wait command causes script execution to stop and wait for the completion of a sound sample event. The
difference is that the Wait? button is an additional option for the current sound sample event (which may be to play a sample, or fade it out,
etc.). The sample Wait command stands on its own, and causes the
script to wait for a preceding sound sample to finish playing. It ensures
that the current element or page continues to be displayed until any
sound samples are done.
In other words, you use the Wait? button only when you want the
script to pause and wait for this sound event. Use the Wait command
when for an earlier sound event you needed the script to continue—
you left its Wait? button off—and now at a later point you need the
script to wait for that sound event to finish. For example, you might
need to ensure that narration which accompanies the on-screen activity for several pages is finished before the script proceeds to the next
explanation or series of events.
The Wait command has no parameters, so its command panel is
blank.
Coordinating several sound events
ICDesigner lets you play as many sample files at a time as you want. If
there are several continuing sound samples in the script, the sample
Wait command waits for all samples to complete before the script continues.
When you need to ensure that several events continuing over several
pages must all be finished before the script continues, a useful option
is to group pages in the Main menu. When you apply the Play sound
event to the group, you must also ensure that the Wait? button in the
command panel is on (✓). For details about grouping pages, see
“Grouping pages” on page 72 in chapter 2 of the “Basic Authoring”
guide.
21
1: Using sound
Using sound samples
Sample Stop command
This sound event stops all sound samples currently playing. The Sample panel for the command looks like this:
The function of the Fade Out Time control and the time range available is the same as the Fade In Time control in the Play command
panel. In this case, however, the time specifies the number of seconds
that ICDesigner should use to reduce (rather than increase) the volume of all the samples currently in effect.
The volume levels of the samples may vary when a sample Stop sound
event begins, but they are all reduced to zero, no sound, during the
time allowed. For example, when the Fade Out Time is 3, all sound
samples diminish in loudness until, after three seconds, no sample can
be heard.
The default fade-out time is 0— sampled sound stops immediately.
Wait? is available only when a non-zero fade-out time is specified.
When Wait? is on (✓) the script will not continue to the next activity
until the all samples have completely faded out.
The Wait? setting has priority over a pause setting. For example, if the
Fade Out Time is 10 seconds and the pause setting applied to the element or page is 5 seconds, the full 10-second fade completes before
the script continues.
22
1: Using sound
Using sound samples
Sample Volume command
This event’s command panel looks like this:
To set the loudness for all currently playing sound samples, drag the
Volume slider to the position you want.
The default Volume setting is 255, the maximum level. If you don’t
change it, any samples playing at a lower level will increase in intensity
when this command executes.
Fade Time specifies the number of seconds that ICDesigner should
take to adjust the volumes of the samples currently playing so that they
match the level you set in the Volume control. The sound will gradually fade up or down to the level set by Volume.
The function of the Fade Time control and the value range available is
the same as the Fade In Time control in the Play command panel. By
default, the Fade Time is zero and the volume levels are adjusted
immediately.
The Wait? button is available only with a non-zero Fade Time. When
Wait? is on (✓) and a Fade Time is specified, the script will not continue to the next activity until the fade completes. When Wait? is off,
some of the samples may not reach the established volume level until
later in the script. By default, Wait? is off.
Sample Pan command
This sound event lets you apply the same Pan setting to all sound samples currently playing. This shifts the current samples’ apparent location between the left and right speakers. This event has no effect on a
system whose sound card is monophonic rather than stereo.
23
1: Using sound
Using MIDI files
The Pan command panel looks like this:
To adjust the balance so that it is the same for all sound samples currently playing, drag the Pan slider left or right until the sound is in the
position you want.
You can continue to work in the Sound menu and define sound events
of other types for the current element or page, or you
Remember
can click on the Sound button in the List menu or
You can define only one Sample
Main menu and define sound events for a different
sound event per element or page.
element or page.
Using MIDI files
If your sound card is able to play MIDI (Musical Instrument Digital
Interface) files, it should be set up correctly in Windows before you
begin. If you have external MIDI equipment, it also needs to be set up
properly beforehand.
When a MIDI file is playing, the MIDI equipment is dedicated to
playing that file. This means that you can control only one MIDI file
in the script at a time. Remember that when one file starts playing, any
other MIDI file that is currently playing is stopped.
MIDI Play command
This event lets you select a MIDI file and adjust the controls that
determine how it should be played.
24
1: Using sound
Using MIDI files
With two exceptions, the MIDI Play command panel is the same as
the sample Play command panel (page 17). The steps to access the
panel are also the same:
1. Click on the MIDI tab, then choose Play from the Command:
pop-up to display the MIDI Play command panel. The Sound
menu looks like this:
2. Click on the File: button and, from the File dialog, select the
MIDI file you want to use.
3. Double-click on the name of the file or click on OK. You see the
Sound menu and, on the File: button, you now see the name of
the MIDI file you selected.
Tempo adjusts the speed at which the MIDI file is played. It is
expressed in beats per minute (BPM) and the setting you see when you
begin to work in the command panel is determined by the file you
selected.
Changing Tempo plays the file slower or faster than the original composition in much the same way that a conductor changes the pace at
which an orchestra plays a score. Changing the Tempo does not affect
the pitch or quality of the sound that is heard.
Use the Tempo value control to increase or decrease the setting. ICDesigner enables you to define a setting in a range from 40 to 300 BPM.
A tempo of 100 to 120 BPM is typical and 180 is very fast for most
MIDI sequences. You should rely on your own sense of rhythm and
feeling to adjust the tempo so that the music fits the mood of the production.
25
1: Using sound
Using MIDI files
The other settings in this command panel work the same as those in
the sample Play panel. For details about how you use these controls,
see the discussion of the sample Play sound event beginning on
page 17.
MIDI Pause command
This event temporarily stops the MIDI file that is playing. It is used in
combination with the MIDI Resume event, which continues playing
the file from the point at which the MIDI Pause event placed it on
hold.
The MIDI Pause command panel looks like this:
The Fade Out Time control and the Wait? button have the same functions and settings in this MIDI command panel as
similar controls in the sample Stop command panel. A
To avoid confusion
paused
MIDI file, however, is placed on hold and can
If you do not intend to
be used later in the script without having to retrieve it
define a Resume sound
event to complete a Pause
from the File dialog and go through the process of
event applied to a MIDI file
redefining it in the Play command panel.
in the script, we recommend that you use MIDI
Stop instead.
For details about these controls, see the discussion
about sample Stop on page 22.
MIDI Resume command
This event continues a MIDI file that was placed on hold by the
MIDI Pause command. The file begins to play at the point where it
was paused.
26
1: Using sound
Using audio CDs
The MIDI Resume command panel looks like this:
The functions and settings of each of the controls are the same as similar controls in the sample Play command panel. For details about
these controls and how to use them, see the discussion about the sample Play sound event, beginning on page 17.
Other MIDI events
The MIDI Wait, Stop, Volume, and Pan command panels have the
same options and settings as the corresponding Sample command
panels. For details about the purpose of any of these MIDI events see
the discussion for the related Sample sound event:
Wait?
page 21
Stop
page 22
Volume
page 23
Pan
page 23
Using audio CDs
An audio compact disc (CD) is normally played on a portable or home
stereo CD player. However, most modern CD-ROM drives are also
able to play audio CDs. To incorporate sounds from a CD into your
ICDesigner script, the CD-ROM drive installed in the PC must be
able to play a standard audio CD. The documentation for the drive
should tell you whether it has this capability.
27
1: Using sound
Using audio CDs
Multi-unit CD-ROM drives
Normally, a PC has only one CD-ROM drive, and only one track on
an audio CD can be played at a time. If there are additional drives
installed, however, or if the drive can accept more than one disc at a
time, ICDesigner can use all of them.
ICDesigner detects the drive(s) when you start an ICDesigner working
session and you can access tracks and/or files on CDs or CD-ROMs
from each drive available. In this case, in each of the CD command
panels a CD Unit control is added, which enables you to choose the
CD drive or disc number that should be used to generate the CD
sound event.
New CD!
All the CD command panels have the New CD! button. If you work
with more than one CD while editing, you should click New CD! after
you change a CD in the CD-ROM drive. This updates the table of
contents for the CD that ICDesigner maintains in its memory so that
times and track numbers can be displayed correctly. This button does
not cause a script event. The CD Read Contents command (described
on page 36) is the script equivalent.
CD Play command
This sound event enables you to select a track on an audio CD and
define the details of the command that plays the track in your ICDesigner script.
The CD Play command panel looks like this:
28
1: Using sound
Using audio CDs
Track In specifies the number of the track on the CD that should start
when the element or page you are defining is encountered in the
script.
The contents of a CD is divided into units called tracks, which are logical breaks in the sequence of the CD. Although a CD may have only
one very long track, it is more common that each song, or each movement in a symphony, or each sound effect—anything that has a recognizable beginning—is a separate track. To identify tracks in the
sequence of the CD, each track has a number.
All audio CDs have an internal table of contents that references each
track by its number and specifies the length of time it takes to play.
Most CDs also include a listing of the contents as part of the cover
information.
Use this listing to determine the number of the track you want to play.
Use the Track In value control to pick a track number. The upper
limit depends on the number of tracks available on the CD.
The default for Track In is track 1.
Track Out specifies the number of the last track you want to play.
When the Track Out setting is higher than the Track In setting, ICDesigner plays both tracks and all tracks between them. When the Track
In and Out settings are the same, ICDesigner plays only the track they
specify.
Use the Track Out value control to pick the final track to play. ICDesigner initially sets Track Out to match your Track In setting.
Other settings
The functions and settings of the remaining controls in this panel are
the same as similar controls used in the sample Play command panel.
For example, Loops specifies the number of times the CD track
29
1: Using sound
Using audio CDs
repeats. For details about these controls see the discussion for the sample Play sound event and, in particular:
Loops
page 18
Volume
page 19
Fade In Time
page 19
Pan
page 19
Wait?
page 20
CD Play MSF command
Unlike the CD Play sound event, which allows you to play only complete tracks, Play MSF lets you use specific portions of one or more
tracks.
The CD Play MSF command panel looks like this:
Time In specifies the exact point on the CD and track where you want
the sound to start playing. The time is expressed in minutes, seconds
and frames (MSF); for example:
minutes
seconds
frames
The CD booklet or insert references each track by number and name.
It also usually specifies the length of each track in minutes and seconds; for example 3:45 means that the track is three minutes and 45
seconds from beginning to end.
30
1: Using sound
Using audio CDs
The CD also has an internal table of contents, which you can’t see,
that monitors the length more accurately. These measurements are
based on the beginning of the CD, not the track itself, and are defined
in terms of minutes, seconds and frames, where a “frame” is a unit of
time equal to 1/75 of a second. (This is part of the CD standard and is
not defined by ICDesigner. Note that CD audio frames are not related
to video or animation frames.)
ICDesigner has access to this internal table of contents and enables
you to take advantage of the more accurate timing measurements
when it is essential that an action in the script is precisely coordinated
with the CD sound.
The Time In setting is directly linked to the Track In setting. Changing Track In automatically updates the Time In setting to reflect the
beginning of the new track relative to the beginning of the CD. If, as
you adjust the Time In setting, the value is not within the time frame
of the track defined for Track In, the track number is automatically
updated to correspond with the time you specify.
On the following timeline, for example, if you change the Track In
setting to 2, then the Time In setting is 02:10.00, unless you choose to
change it. If you define a Time In that is earlier than the time borders
of track 2—for example 01:50.50—ICDesigner changes the Track In
setting to track 1.
track 1
00:00.00
track 2
track 3
02:10.00
05:30.45
To refine the timing, use the value controls to edit the minutes, seconds and/or frames accordingly. Use the Preview button to test the setting in combination with other activities defined for the element or
page.
Unless you specifically change the Time In setting, ICDesigner uses
the starting time of the track number in the Track In setting.
31
1: Using sound
Using audio CDs
Time Out specifies the exact point on the CD where you want the
sound to stop.
The Time Out and Track Out settings are related to one another in the
same way as the “In” settings described above. Changes in one setting
can affect the other and, together, they define precisely where the CD
stops playing.
Although the Track Out setting may be the same as Track In, Time
Out must be later than Time In. Unless you specifically change the setting, the end of the Track Out track is used by default.
When the number of Track Out is higher than the Track In, ICDesigner plays only the specified portions of the in and out tracks but
plays any tracks in between in their entirety.
To experiment with the Time Out setting, use the Preview button to
test the result.
The functions and settings of the remaining controls in this panel are
the same as similar controls in the CD Play and sample Play panels.
For details about these controls, see the discussion for the sample Play
sound event.
Loops
page 18
Volume
page 19
Fade In Time
page 19
Pan
page 19
Wait?
page 20
CD Sync command
This option helps ensure that the activities associated with an element
or page are synchronized with a CD sound that is already playing.
32
1: Using sound
Using audio CDs
The CD Sync command panel looks like this:
The Sync command is similar to the Wait command. In essence, it
halts the progress of the script until a certain point. The difference is
that the Wait command waits for a previously started event to finish.
The Sync command waits for a previously started CD to reach a particular time setting you specify, and only then allows the script to continue.
Rather than the script determining the CD activity, as it does, for
example, in the Play MSF event, the CD actually controls the script in
a Sync event; the script cannot continue until the CD reaches a certain
point. This is useful, and often necessary, to ensure, for instance, that
an animation starts at precisely the right time relative to a CD track or
that a caption is coordinated with music for a video.
Sync Time specifies the time code on the CD that determines when the
script runs the page you are working with.
The time is expressed in minutes, seconds and frames (MSF), just as it
is in the Time In and Time Out settings in the Play MSF command.
Unless you specify a time, the setting is 00:00.00. If the Relative to
Track setting is off (not marked with a ✓), this Sync Time means that
the script does not run the page until the CD begins again with track 1
or a new CD is inserted. If the Relative to Track setting is on (✓), the
page is not run until the current track is repeated from the beginning.
Use the value controls in the Sync Time button to set the sync point.
In order to set the time precisely, you must experiment with the setting and refine it until the on-screen activity is synchronized with the
sound as accurately as possible. Use the Preview button in the Sound
33
1: Using sound
Using audio CDs
menu and in the List or Main menus to see and hear how the setting
fits into the scheme of the current page and surrounding pages in the
script.
To begin testing from a reasonable reference point on the CD, you
can use the information on the cover as a guide to the sequence and
duration of each track. If there is a CD player with an elapsed time
display available, you can use that to identify the time within one second. To determine a more specific starting point, you may find it useful to check the Time In and/or Time Out settings in the most recent
Play MSF command (if any), or, from the Command: pop-up, temporarily choose Play MSF to check the time frames and preview the part
of the track you are interested in. You can do the final fine-tuning
from the CD Sync command panel.
When the script encounters the Sync command before the CD reaches
the specified time, the script waits at that point. When the sync time
on the CD arrives, the script continues. If other events delay the script,
however, and it reaches the Sync command after the CD has passed the
sync time, the script just continues normally.
This could happen, for example, if a preceding event took more time
than you had thought when you calculated the sync time—you might
have reduced the speed of a wipe, making it take longer to complete.
An element or page associated with the Sync event isn’t lost or overlooked; in this case it just does not appear when you planned. To
avoid such difficulties, always preview the script in its entirety and be
aware of other events that may affect the timing and coordination.
Relative to Track? enables you to choose whether the time you set for
Sync Time is relative to the beginning of the CD or relative to the
beginning of the track that is currently playing.
When Relative to Track? is on (✓), the Sync Time is measured from the
beginning of the current track.
When Relative to Track? is off, the Sync Time is measured from the
beginning of the CD.
34
1: Using sound
Using audio CDs
Click on the button to switch the setting on or off as necessary. By
default the button is off and the timing is measured from the beginning of the CD.
CD Eject command
If the CD compartment on the CD-ROM drive has a motorized
opening mechanism, this sound event automatically opens the compartment and releases the CD. Otherwise, the command has no effect.
The Eject command can be especially useful in an ICDesigner production that requires a change in CDs. Combined with a visual cue on the
screen page, it provides a clear and unmistakable signal that a new CD
must be inserted.
When you click on CD and choose Eject on the Command: pop-up,
the Sound menu looks like this:
Fade Out Time specifies the number of seconds ICDesigner should use
to gradually reduce the volume of the track currently playing to zero
(no sound) before ejecting the CD.
The function of the Fade Out Time control and the settings available
are the same as the Fade Out control in the sample Stop command
panel (page 22). For example, the settings range from zero (0) to
ninety-nine (99) seconds, and a setting of zero means that the CD is
ejected immediately when the Eject event is encountered in the script.
Zero is the default setting.
As in the Stop command panel, the Wait? button is available only
when the Fade Out Time is greater than zero.
35
1: Using sound
Using audio CDs
CD Read Contents command
This event reads the CD’s table of contents into ICDesigner’s memory. This is necessary, for example, after an Eject command prompts the user to insert a new CD. The Read
ICDesigner Reminder
Contents command updates the table of contents that
If your script uses more
ICDesigner uses for CD events. This ensures that
than one CD, you should
always use a Read ConICDesigner knows how many tracks are on the disc
tents event to update
and what their timing is. The Play and Play MSF
ICDesigner after a new CD
events could not locate the proper points on the CD
is inserted.
otherwise.
The Read Contents has no parameters, so its command panel is blank.
Depending on the script, you may find it useful to insert a special
event page in the List menu or Main menu to define this event.
CD Next, Previous events
The CD Next and Previous events select the next or previous track on
the current CD, relative to the current track.
Other CD events
The CD Wait, Stop, Pause, Resume, Volume, and Pan command panels
have the same options and settings as the corresponding Sample command panels. For details about the purpose of any of these events, see
the discussion of the related Sample sound event or, in the case of
Pause and Resume, the related MIDI event:
36
Wait?
page 21
Stop
page 22
Pause
page 26
Resume
page 26
Volume
page 23
Pan
page 23
1: Using sound
Using the Mixer
Using the Mixer
The ICDesigner Mixer enables you to mix sound sources of any type
and adjust their volumes or pan settings in relationship to one
another. This includes external sound sources such as a microphone or
tape recorder, as well as the three primary sound sources discussed in
this chapter: sound samples, MIDI files and CD tracks.
Mixer settings affect all sound events currently playing or in effect for
each sound source. This means that the mixer overrides any settings
that were defined individually, such as the volume level in a Play
event. Sound events you define for the element or page you are currently working on are also affected by the Mixer settings.
Mixer versus Windows sound settings
The ICDesigner Mixer duplicates the basic functions of the Windows
Sound System Mixer. (The Sample source in ICDesigner corresponds
to the Windows “Wave” source.) When you enter ICDesigner, the
program copies all Windows sound settings and saves them. When
you exit ICDesigner, the saved settings are restored. This way, running
ICDesigner does not permanently alter your preferred sound settings.
However, while ICDesigner is running, it is possible for the Windows
sound settings to be changed by working in the Mixer or playing a
script that contains Mixer events. Because this can be undesirable for
other applications that might depend on the Windows sound settings,
the Mixer has the capability to disable any of its controls, so that they
do not override the corresponding Windows settings.
37
1: Using sound
Using the Mixer
Mixer Volume command
This sound event enables you to set volume levels for one or more
sound sources and automatically apply the setting to all current sound
events related to the source. The command panel looks like this:
Master volume slider
(all sources shown enabled)
The three internal sound sources (Sample, MIDI, and CD) have their
own volume controls. When a mixer Volume event occurs, the previous volume settings for sounds for any of these sources whose sliders
are enabled are replaced by the mixer Volume settings. This means that
if you do not want the volume of a particular source to change, you
must be sure that its volume slider is disabled. See the following section, “Enabling and disabling Mixer sliders”, for more information.
There are also sliders for two external sources. Line controls the volume to the “line” input connector on a sound card and, thus, to any
source such as a VCR or tape recorder that may use this connector.
Microphone controls the volume of a microphone using a MIC input
connector on the sound card. (If your sound card does not have Line
or MIC input connectors, these controls have no effect.)
By default, the Microphone and Line controls are set to 0 (no sound),
the Master is set to 75%, and the other controls are set to the maximum level. If you have made different volume settings for individual
sources, just applying the default settings can affect the volume of
those sources.
Enabling and disabling Mixer sliders
The sliders in the Mixer panel are unique in that they can be enabled
and disabled. By default, all sliders are enabled, as indicated by the ✓
to the right of each slider name.
38
1: Using sound
Using the Mixer
When sliders are enabled they have an effect on the playing script, and
also on the corresponding sound sources controlled by the Windows
Sound System Mixer. Thus any other applications that use sound
through Windows can have these parameters altered by editing
changes in the Mixer panel.
When sliders are disabled, indicated by the absence of a ✓ by the name
and the grayed appearance of the slider knob and numerical value,
they have no effect, either on ICDesigner scripts or on outside applications.
Enable and disable sliders by clicking on the slider name or on the ✓
beside it.
You should leave enabled only the sliders for those sound sources you
intend to affect with a given Mixer command, so that settings made in
Windows and used by other applications are not unnecessarily disturbed.
Tips on adjusting volume levels
Some things to remember when you are adjusting the sound levels in
your script:
•
For each sound source there are three controls within ICDesigner
that can affect the final volume of the source:
1. the Volume slider for the individual source (for example, in a
sample Play event)
2. the setting for that source in the mixer Volume panel (for
example, the Sample slider)—this setting overrides any Volume
settings made previously to the individual source
3. the Master volume slider in the mixer Volume panel
•
When you apply a mixer Volume event, you affect the volumes of
all sound sources whose sliders are enabled. Also, adjusting the
volume control for a source adjusts the volume on all sound events
of that type that are currently active. These two factors can produce changes in the volume of sources you did not intend to affect
with the event.
39
1: Using sound
Using the Mixer
Be sure to consider all sources and all the current volume settings
and changes you have made in the script when making a new volume setting. Disable the sliders of any sound source you do not
need to affect with a Mixer event.
The Master volume control adjusts the loudness of all sound sources
simultaneously. Doing so, however, retains the relative levels set by the
individual Sample, MIDI, CD, Line, and Microphone volume controls.
Caution!
Setting the Master volume control to maximum may
damage a listener’s hearing or cause damage to
equipment that is connected directly to the speaker
output on the sound card.
Although the effect of the individual source volume settings cannot be
seen on the mixer Volume command panel, they can be heard. Note
that the Sample slider overrides the individual volume settings for all
the samples currently playing—they all are given the same new volume. If they originally had different volumes in relation to one
another, those will be lost when a mixer Sample volume event occurs.
Use Preview as necessary to test the settings; be sure that you preview
enough of the script that all concurrent sound events are included.
Fade Time specifies the number of seconds that ICDesigner should
take to adjust the volumes of the sources to the levels you set.
For any source, if the volume of an event that is currently playing is
different from the new setting, the sound will fade up or down to the
new level.
The function of the Fade Time control and the settings available are
the same as the Fade controls in any other command panel. By
default, the Fade Time is zero and the volume levels are adjusted
immediately.
As in other Volume command panels, the Wait? button is not available
unless the Fade Time is greater than zero. The function of the button
40
1: Using sound
Using the Mixer
is also the same as elsewhere. In particular, see the discussion about the
sample Volume sound event on page 23 for more information about
the Fade Time control.
Mixer Pan command
This event enables you to apply a pan setting to all current sound
events from any source except Microphone. The command panel looks
like this.
The controls in this panel adjust the direction that sounds seem to be
coming from. They have the same global effect as the controls in the
mixer Volume command panel. The Master Pan control works like the
Master Volume control, simultaneously adjusting Pan settings while
maintaining the relative settings among the individual sources.
The individual source controls work the same way as Pan controls in
other sound events such as sample Play. The default setting for all the
Pan sliders is centered.
Refer to these other discussions, if necessary, as you work in the mixer
Pan command panel. In particular, see the sample Pan sound event
(page 23) for more information.
As with the sliders for the mixer Volume command, the Pan sliders
can be turned on and off to allow you to control which sources are
affected, and whether the event overrides sound settings external to
ICDesigner. See “Enabling and disabling Mixer sliders” on page 38 for
more information.
41
1: Using sound
Defining several sound events
Defining several sound events
Unlike other special effects that you specify in the List or Main menus,
such as a wipe or pause, several sound events can be specified at once.
You can repeat these steps and apply several types of sound to the same
element or page before clicking on another button in the Sound column to schedule the next sound event(s) in the script. Also, sound
events are not confined to a single page; they can play while the other
script events happen. You may want to do this, for example, to use a
CD track as background music for several pages.
This means that many sound events may be happening in the script
simultaneously. You can combine sounds as necessary for maximum
impact. Here are a few general guidelines:
42
•
On the Sound button for each page in the Main menu or each element in the List menu, you can define, at most, one sound event
of each type—Sample, MIDI, CD—and manipulate the Mixer.
For example, you can start both an audio CD track and a sound
sample when you bring a clip onto the page, but you cannot apply
two sound samples to the same clip.
•
A script may include any number of sound samples and several
can be used concurrently. For example, a sound sample scheduled
to start on one page may still be playing when another sample
starts on another page.
•
Only one MIDI file at a time can be playing in the script. Unlike
a sound sample, a MIDI file that is playing stops if you start
another.
•
When a CD-ROM drive is playing an audio CD, only one track
on the CD can be accessed at a time. If you have more than one
CD-ROM drive, however, ICDesigner adjusts the command panels accordingly and enables you to use a CD (or CD-ROM) from
each available drive.
1: Using sound
Defining several sound events
Staying aware of your sound events
As you work in the Sound menu, the text on the button in the Sound
column is constantly updated to reflect the sound event you are currently defining and any others already applied to the element or page.
It is not possible, however, to look at the Sound button to determine if
any sounds are playing at that point in the script. Even if the Sound
button for one page or element is blank, a sound event you started earlier with the Wait? button off may still be playing. This means that
you must be aware of the sounds you are using in the script and their
playing lengths. In most cases, it will be obvious when the effect of a
sound is not what you intended.
Adding sound to several pages or events in a row
When you have defined all the sound events you want to apply to one
element or page, you can click on another Sound button in the List
menu or Main menu and continue working in the Sound menu. As
with the Wipe and Timing menus, this confirms the settings you have
just defined without requiring you to close the Sound menu each
time. Clicking on Cancel in the Sound menu resets or cancels only the
last sound event you worked with.
When you have defined all the sound events you want, click on Close
to close the Sound menu. Click on Preview in the List or Main menus
to test the effect of the sound events you have defined in the total
scheme of the page or script. You can open the Sound menu and work
in it at any time to refine the settings as necessary.
43
2: Making scripts interactive
A script that is interactive can accept input from the user. Buttons and
fields are the key to the world of interactivity in InfoChannel
Designer 3. A button or a field is an element in your script that provides for interactivity. These elements give the viewer control over the
direction of the production. By using the mouse (or another type of
input device, like a touch screen) to select buttons, and the keyboard
to enter data into fields, the viewer can make choices about how the
script should proceed.
A button can trigger almost any kind of event in ICDesigner: jumping
to a new page, playing a sound, wiping in an element, even making
calculations with variables. This makes it possible for you to create
flexible, powerful scripts that can adapt themselves to respond to a
wide variety of audiences. Your interactive button, then, could be anything from a cat illustration that “meows” when clicked, to a catalog of
product photos and text that a potential customer can browse for
information, to a quiz that asks and answers questions differently for
every user, and displays their scores at the end.
A text entry field can accept typed input just like any e-commerce
Web page. It puts what the viewer typed—a name, a product code, a
password—into an ICD variable, which can then be manipulated,
stored, and transmitted.
Buttons are created and edited in the Design Buttons menu, where
you work with unique button features:
46
•
Go to other locations in the script
•
Link sounds to buttons
•
Specify hotkeys for buttons
•
Set variables based on button activity
•
Use custom mouse pointers
2: Making scripts interactive
Getting started: creating simple buttons
•
Independently set options for various button states:
Normal—normal appearance, sound, variables
Highlight—special appearance, sound, variables, custom mouse
pointer image
Select—special appearance, sound, variables, custom mouse
pointer image, Go To
Text Entry Fields are created through the Add drop-down, and
defined in the Design Text Entry Field menu.
Although buttons and fields have special features, they are elements
that can be manipulated just like other elements—using wipes, cut
and paste, and the other ICDesigner menus. You have all the Element
Design options open to you to make the element look the way you
want.
ICDesigner gives you great freedom to design your own buttons, but
you don’t have to do so. The Buttons menu also gives you the option
of choosing from a selection of predefined buttons and button backdrops supplied by Scala, which have matched images for the various
states.
This chapter introduces you to the Buttons and Text Entry Field
menus, and walks you through the process of creating these interactive
elements. It also discusses the Input menu, where you can set various
options related to mouse input, keyboard input, and pointer images.
Getting started: creating simple buttons
To use a button, you generally need a script consisting of at least a few
screen pages. Once you have some pages in your script, you can begin
making it interactive.
The following examples, “Creating a text button” (below) and “Creating a predefined button” (on page 51) show you how to create simple
buttons and illustrate how the use of buttons can change the normal
script sequence when you set a Go To.
47
2: Making scripts interactive
Getting started: creating simple buttons
The examples are intended to show you the basics, but there is much
more that you can do when creating buttons. You are encouraged to
experiment with ICDesigner’s interactive capabilities and use your
imagination to create productions that get your audience involved in
the multimedia experience.
Creating a text button
A button in ICDesigner can be almost any element, so text can also be
a button, even when there is no separate button image associated with
it. The following example shows you how to make text into buttons.
1. Create four new pages by loading the four backgrounds provided
in the ScalaArt:\ClipArt\GuideExamples folder. For the sake of
this example, choose “look” for page 1; “clock” for page 2; “hourglass” for page 3; and “idea” for page 4.
2. Go to the Design Text menu for the first page, choose a large
font, then type “Clock”, “Hourglass”, and “Eureka!”, each on its
own line.
3. Click the Buttons icon. You see the Design Buttons menu, which
looks like this to start with:
48
2: Making scripts interactive
Getting started: creating simple buttons
You make an element a button by choosing a kind of button from the
Type: pop-up while the element is selected.
4. Select all three elements at once, then choose Push Button from
the Type: pop-up. You will probably see a dialog asking if you
want to change the timing of the page to Wait Forever. Click Yes
in this dialog.
5. Select the 3-state button. This makes each word into a three-state
push button.
6. Press F12 or click the middle indicator in the title bar to change
the buttons’ visual state from Normal to Highlight.
7. Go to the Design Text menu and click Shadow. This gives each
word a shadow when highlighted.
8. Press F12 again, to change to the Select state.
9. Turn on Shadow, and also change the Front color. The buttons
will have a shadow and a new color when selected.
49
2: Making scripts interactive
Getting started: creating simple buttons
10. Return to the Buttons menu and go to the Select Action panel.
Select “Clock” by itself.
11. Choose Action: Go to Next Page.
The Select state is where a button actually does its work. Usually,
this means jumping to another location in the script. You choose
the destination for a button with the Action: pop-up on the Select
Action panel. The Go to Event, Go to Next Page, and Go to Previous
Page options let you specify that execution flow should branch to
another page when the button is selected. The Action: pop-up is
described in more detail on page 58 in this chapter.
The Level: selector also visible on the Action panel when Go to
Event is chosen displays the level of the script where the destination is. If your script doesn’t have any groups, as in this example,
your only choices are “<this script>” and “<this page>”.
The Go To: selector indicates which page or event you want the
script to advance to.
12. Select “Hourglass” and choose Action: Go to Event. Set the Go to:
selector to page 3, and finally select “Eureka!” and set its Go To: to
page 4.
13. Select Preview to see the buttons in the three button states; move
the mouse pointer over the buttons and click on them to see the
highlight and select states. (The preview cannot, however, show
the effects of Go To: settings. To see how buttons change script
execution, you must run the script.)
14. Click the Main icon to exit to the Main menu.
Now run your new script and click on the interactive text buttons you
have created to see how they affect the flow of the script. See if you can
figure out what needs to be done to return to page 1 after your buttons
branch to the other pages.
You have now created three simple interactive text buttons. You can
follow the same basic procedure to create buttons that start with clips
instead of text. There are a number of ways to do this in ICDesigner,
50
2: Making scripts interactive
Getting started: creating simple buttons
but one of the simplest is to use ICDesigner’s predefined buttons, as in
the following example.
Using a predefined button
1. Create four different pages by loading four different backgrounds
from the GuideExamples folder. Choose Paper for page 1;
BlueBG for page 2; YellowBG for page 3; and RedBG for page 4.
2. Go to the Text menu for the first page, and type “blue”, “yellow”
and “red”, each on its own line.
3. Go to the Buttons menu by choosing the Buttons icon.
4. Click the Add icon, which opens the File dialog, where you can
choose button (.btn) files from the GuideExamples folder.
5. Choose the “Blue1” button. After you choose the button, you
return to the Buttons menu, and you see the round button. The
button is automatically created as a three-state Push button.
6. Place it next to the “blue” text, which will serve as a label.
7. Follow the same procedure to add the “Yellow1” and “Red1” buttons.
You see three round buttons, each having a label of blue, yellow, or red.
The buttons appear in their Normal states.
Predefined buttons, like the one in this example, have matched images
for these various buttons states, so you don’t have to load, create or
position separate imagery for each state.
8. Choose one of the three buttons you just created, then press F12
to see how the button looks in its highlighted state.
9. Press F12 again to see how the button looks in its selected state.
10. Select the “blue” button and click the Select Action tab.
11. Choose Action: Go to Event and set the Go To: selector to page 2.
(You could also use Action: Go to Next Page for this one button.)
51
2: Making scripts interactive
Working in the Design Buttons menu
12. Select the “yellow” button, choose Action: Go to Event, and set the
Go To: selector to page 3.
13. Select the “red” button, choose Action: Go to Event, and set the
Go To: selector to page 4.
14. You can click Preview to see how the buttons appear in the different states.
15. Click Close to exit the Buttons menu.
16. Run the script and try out the buttons.
You have now learned how to create two types of buttons—text and
predefined. The remainder of this chapter talks about working in the
Buttons menu and creating more advanced buttons.
Working in the Design Buttons menu
The Design Buttons menu can be accessed from the Main menu
Design drop-down, pressing F5, or by clicking the Buttons toolbar icon
from any other Design menu. When you enter the Buttons menu, you
see the Type panel, which gives you several options for button type.
Button types
The button Type: pop-up controls whether an element is a button, and
if so what type of button it is. The possibilities are:
•
Push Button
Push buttons are the most common and versatile type of button.
They are typically used for branching to another page of the
script, or accepting some kind of response from the viewer. A
Push button can have one, two, or three visual states.
•
Toggle Button
A Toggle button is used to switch a logical variable between its
two possible values, on and off. This makes it easy for a script to
accept and respond to Yes/No kinds of input from the viewer.
52
2: Making scripts interactive
Working in the Design Buttons menu
The button itself can have either two or four visual states. Unlike a
Push button, a Toggle button remains in its selected state after
being clicked so that its value is obvious.
•
Radio Button
A Radio button is similar to a toggle button, but it works with any
kind of variable, so it can assign any type of value (text, numeric,
or logical). Like a Toggle button, it has either two or four visual
states, and remains in its selected state after being clicked.
Changing a button’s type
It is possible to change a button from one type to another. Just select
the button and then choose the new type from the Type: pop-up.
When you do this, you see a confirmation dialog telling you that button attributes unique to that button type will be lost in the conversion.
Turning a button back into a normal element
For any element selected while in the Buttons menu that is not a button, the Type: pop-up shows None. If you need to turn a button back
into a normal element, select it and then choose Type: None. A warning dialog indicates that you will lose any button attributes you may
have already defined if you do this.
Button basics
In ICDesigner, there are many ways to create a button. You can start
with ordinary text, or a clip or graphic object, and turn them into buttons. You can start with predefined button files supplied by Scala, and
add text or imagery as labels. And you can build buttons using your
own text along with predefined files from Scala in various combinations, or by modifying buttons that you have previously created and
exported.
Face and backdrop
Buttons you make in ICDesigner have two possible components for
each state: backdrop and face. The face (text, for example) is generally
used to identify the button. The backdrop is an area underneath the
face that helps make the face visible against background imagery and
emphasizes it or makes it look more presentable.
53
2: Making scripts interactive
Button states and state events
Buttons with a backdrop image and no visible face, or with a face and
no visible backdrop, are possible and may be useful. Keep in mind,
however, that the face must be a single element only. You are always
free to label your buttons with additional plain text or clips that are
next to or on top of a button. If you do so, however, you will then
have to move and adjust those items separately whenever you edit the
button, and they will not change when the button changes state.
Button states and state events
Different types of buttons have different state options. Push buttons
can have one, two, or three visual states. Toggle and Radio buttons
can have either two or four visual states.
When you have selected a type of button that has multiple visual
states, a series of buttons appears on the menu showing the choice of
number of states for that button. Click one of the choices to establish
the number of states for the button you are creating.
Choosing and keeping track of button states
When you create a multi-state button, or select an existing multi-state
button, a row of three or four identical buttons appears in the title bar
of the Design menus, just to the right of the menu name. Each button
has a “button” icon on it, and represents a particular state of the currently selected button. You see these indicators in the title bar of any
Design menu whenever a Push, Toggle, or Radio button is selected.
At least one of these title bar indicators is always selected, indicating
the current state of the selected button. If you have defined a Push
button with fewer than three states, or a Toggle or Radio button with
fewer than four states, the title bar indicator(s) for the unused state(s)
are disabled.
More than one state of the selected button(s) may be current at a given
time, so that you can apply the same styles and attributes to several
states at once. Select multiple button states to affect them all with the
54
2: Making scripts interactive
Button states and state events
same attributes by Ctrl-clicking as many title bar state indicators as
desired.
Normal state (selected)
Highlight state (not available)
Select state (not selected)
2-state Push button indicators
Highlight On state
Normal On state
Highlight Off state
Normal Off state
4-state Toggle or Radio button indicators
2-state Toggle or Radio button indicators
To cycle through the states of the currently selected button, use the
F12 shortcut. Or you can click the title bar indicators to switch
directly to a particular state. To remind yourself of which state a title
bar indicator represents, hold the mouse pointer over that indicator.
The Tool Tip that appears identifies which state it represents, as illustrated. Both F12 and the title bar indicators are available in any
Design menu.
Most of the options in the Appearance and Action panels can be
applied independently to each of a button’s states.
Push button states
A Push button with one state has a single appearance. It can respond
to being selected, but the button itself cannot give any visible response
to the mouse passing over it or clicking on it the way a button with
multiple states can.
55
2: Making scripts interactive
Button states and state events
A two-state Push button can have a different appearance for its Normal (idle) state and its Select state (when it is clicked by the mouse).
A Push button with three states can have separate appearances for
Normal, Highlight (mouse pointer touching it but not clicked, or
highlighted by using arrow keys) and Select (clicked-on) states.
If you do not make changes to the button for its Highlight state, the
button keeps its normal imagery when the mouse pointer is over it.
Using the Highlight state is valuable in most interactive productions as
a way of letting viewers know where buttons are, so they know when
they can click or press Enter (↵) to choose a button.
During playback, a button displays the Select state when it is chosen
by clicking on the mouse, when the viewer presses Enter (↵) while the
button is highlighted, or when the viewer touches the button on the
screen if using a touch screen. Using different imagery for the Select
state helps confirm for the viewer that his or her choice has been
noticed and accepted.
You can also create hotkeys to select buttons. See page 59, “Creating
hotkeys”.
Toggle and Radio button states
The states possible for Toggle and Radio buttons are somewhat different from those of Push buttons. These button types are always in
either an Off or On state. Additionally, for a four-state button, both
the Off and On states can have a Highlight state as well as a Normal
state.
A two-state Toggle or Radio button can be either Off (typically
appearing like a Push button in the Normal state) or On (typically
appearing like a Push button in the Select state). It does not respond
to the mouse pointer until clicked on.
A four-state Toggle or Radio button works the same way, but both the
Off and the On positions also have a Highlight state to indicate when
the pointer is over the button.
56
2: Making scripts interactive
Select Action options
When a Toggle or Radio button is clicked on, the button changes
state, but unlike a Push button, it remains in the changed state after
the mouse button has been released. A Toggle button switches from its
current state to the opposite state whenever it is clicked. Clicking a
Radio button, however, can only switch it from its Off to its On state.
Clicking a Radio button in its On state does not switch it back to Off.
For this reason, several Radio buttons are typically used together to let
the user make choices.
See page 70 for information on using Toggle and Radio buttons.
Select Action options
There are two panels in the Buttons menu for controlling the actions
that can happen when using the action-oriented button types (Push,
Toggle, and Radio buttons): the Select Action panel and the Other
Action panel.
Actions on button selection
The Select Action panel is for specifying the primary purpose for an
action-oriented button. In particular, it lets you choose what happens
when the button is put into the Select or On state. (This occurs when
the button is clicked on, or the viewer presses Enter (↵) or a defined
hotkey while the button is highlighted.) Most often, the action is a
branching type of operation, moving to another event or page within
the script. However, other types of action are also possible.
57
2: Making scripts interactive
Select Action options
The Action: pop-up on the Select Action panel has the following
options:
•
•
•
•
•
•
•
None
Go to Event
Go to Next Page
Go to Previous Page
Return to Bookmark
Exit from Script
Show WWW Page
Using Go to actions
The three “Go to” actions allow you to make script execution move to
some other location in the script, from which execution continues.
The new location can be another page or another event on a page.
This lets the response to a button be almost any series of scriptable
events. You can return to the original button location after a button
Go to by setting a bookmark.
The Go to Event action
Go to Event is the most flexible button branching action. Consequently it requires you to specify both the destination itself and the
level of the script where the destination exists. You see the controls for
these on the panel when you choose Action: Go to Event.
Use Level: to choose the level of the script where the destination is.
Use the selector to cycle through the levels. If the destination is in the
same group you are in, you can leave the selector as is. If your script
has no groups, the only choices are <this script> and <this page>. Only
levels at or above the current level are accessible.
58
2: Making scripts interactive
Select Action options
Use the Go To: selector to choose the page or event that you want the
script to advance to when a button is selected. In most cases, the
Go To will be set to a page. Use the selector to choose a page number.
A thumbnail of the destination page is shown in the box to the right of
the button. Note that if you just want to advance to the immediately
following or preceding page in the script, it is simpler to use the Go to
Next Page or Go to Previous Page actions.
Setting a Go To to an event on the current page is also possible: set the
Level: selector to <this page>, then use the Go To: selector to cycle
through events on the page. Setting a Go To to events is used in
advanced productions, and is covered in chapter 3.
Leave Bookmark? allows you to return from a series of events after
branching with a Go to Event. Click on Leave Bookmark? to turn it on
(✓). Then, at the end of the button’s series of Go to events, insert a
special event. On this special event, open the Branch menu and select
the Go To panel. Choose Action: Return to Bookmark. When executed,
this returns the script to the bookmark location, which is immediately
after the original Go to Event.
Using Go to Event with a bookmark lets you define sections of a script
as independent units that you can go to and return from whenever a
button is clicked. For details on using a Go To in the Branch menu,
see the section, “Using Go To with a bookmark” on page 108 in chapter 3.
Creating hotkeys
You can specify a hotkey for any Select action. When a hotkey is
defined for a button, instead of using the mouse or Enter (↵) to
choose the button, the user can employ the hotkey. Set a hotkey by
using the Hotkey: selector in the Select Action panel to cycle through
the most common possible hotkeys, or type the hotkey you want into
the space between the arrows.
With the selector, you can choose any key from A to Z, 0 to 9, F1 to
F12, standard symbols and Space as hotkeys. To specify other keys
than these—such as accented characters that might be unavailable on
the keyboard you happen to be using for authoring—you can enter a
59
2: Making scripts interactive
Select Action options
keycode value in the format 0nxxx, where xxx is replaced by the keycode. The keycodes for all possible characters are available in the character table in appendix C. For example, enter 0n214 to make Ö a
hotkey.
When using button hotkeys, the qualifier keys Shift, Alt, and Ctrl are
not recognized. You can use symbols that require the use of the Shift
key. However, shifted versions of alphabetic keys are not distinguished
from their lowercase counterparts.
Going to the next or previous page
A very common type of button-activated branch is advancing to the
next page in the presentation, or returning to the preceding page.
Because these branches by their nature do not require the options that
the general-purpose Go to Event action has, ICDesigner provides simplified actions to handle these two particular branches.
The Go to Next Page and Go to Previous Page actions do just what their
names imply, advancing to the screen page that immediately follows or
precedes the current page on the Main menu. Neither action requires
a Level: selection, and because the destination page is implicit, a Go
To: selector and page thumbnail image are left out. Leave Bookmark? is
also omitted, because you can always return to the original page by
using the complementary Go to page option.
Returning to a bookmark
When using a Go to Event branch on a button or in the Branch menu,
you can choose to use the Leave Bookmark? option. This allows you to
set a marker to which a later event can return. In this way, you can
define sections of a script as independent units that you can go to and
return from at any point in the script. This is discussed in more detail,
with an illustration, in the section “Using Go To with a bookmark” on
page 108 of chapter 3.
As with bookmarks and Go Tos on the Branch menu, bookmarks left
with a button Go to Event action are used in conjunction with an
action that restores the current execution location in the script to the
bookmark location. This is Action: Return to Bookmark. The typical
60
2: Making scripts interactive
Select Action options
usage of this action would be as the Select Action of a “Return” or
“Back” interactive button that you would place on a page that was the
last in the unit branched to by a Go to Event button.
Exiting from a script
Although most productions are designed to run continuously, some
need to allow the viewer to exit from the script. Creating a button to do this is very simple. Just give a
ICDesigner Note
button the Exit from Script action as a Select Action.
If this button appears within
This ends the script, returning the viewer either to
a sub-script, the sub-script
is exited and execution of
Windows, or to the Main menu if the script was run
the parent script continues.
from within ICDesigner.
Viewing a Web page from a script
The last Action: possibility, Show WWW Page, actually allows the
viewer to jump out of the ICDesigner presentation environment. You
see the URL: text box in the panel when Show WWW Page is selected.
Enter the address of the desired Web page there (for example, enter
http://www.scala.com to jump to Scala’s Web page). When someone
clicks a button that has this as its Select Action, ICDesigner attempts
to launch or activate the preferred Web browser. If successful, it then
tries to connect to the Web page specified.
If ICDesigner is in full-screen playback mode, the playback screen is
minimized so that the Web browser window is visible on the desktop.
61
2: Making scripts interactive
Other Action options
Other Action options
The Other Action panel of the Buttons menu provides options for secondary responses to button events.
Secondary responses available are:
•
adding sound
•
setting a variable
•
changing the mouse pointer
Secondary actions are available for button selection status transitions.
In other words, these actions take place when a button changes selection status. Selection status is closely related to a button’s visual state,
with the important distinction that any the selection status transitions
can occur regardless of how many visual states you have defined for a
button. So, for example, even a 1-state Push button can have secondary actions defined for a transition to the Highlight state, regardless of
the fact that the button itself does not have a visual Highlight state.
The possibilities available from the Transition: pop-up on this panel
are:
62
•
Mouse off button – the action takes place when the mouse moves
off a button or otherwise becomes idle, typically changing to the
Normal state from the Select/On or Highlight states
•
Mouse over button – the action takes place when a button is passed
over by the mouse pointer or otherwise is highlighted, typically
changing to the Highlight state from the Normal state
2: Making scripts interactive
Other Action options
•
Button selected – the action takes place when a button is selected,
typically changing to the Select/On state from the Normal or
Highlight states
From the Transition: pop-up, choose the state transition to which the
secondary action should apply. Then choose one or more of the three
actions at the right of the panel. The actions happen when the state
transition displayed on the pop-up takes place.
Adding sound
To add sound to your buttons, click on the Sound: button on the
Other Action panel. This opens the Sound menu, where you can
choose and adjust sounds.
Each button state can have a different sound. You may, for example,
give your button a click sound when it is highlighted,
and, if you are working with a button showing a bus,
ICDesigner Note
for example, the sound of a horn honking when the
A sound or variable set for
button is selected.
Mouse off button does not
happen when the button
first appears, but only
when the button returns to
the Normal state from
another state.
When the state transition for which you have set a
sound on the button occurs, the sound event plays. It
plays to completion, even if the button does not
remain in the state that triggered the sound.
For details on working in the Sound menu, see chapter 1, “Using
sound”.
Setting variables
ICDesigner lets you set a variable value when a button changes state.
Clicking on the Variable: button in the Other Action panel opens the
Variables menu, where you can set variables. The Variables menu for
buttons is the same as the Set Variables panel of the Branch menu. You
have as much freedom as elsewhere in ICDesigner to use system variables, functions, expressions, and operators to set values for your script
variables.
For example, you may want explanatory text to appear at the bottom
of the screen each time a particular button is highlighted. To do this,
with the pop-up set to Mouse over button, click Variable: to open the
63
2: Making scripts interactive
Other Action options
Variables menu. In the Set Variable: text box, enter HELP=“Jump to
first page”, for example, and click OK. Then, on your button page,
type “!help” at the bottom of the screen. Now each time that button is
highlighted, explanatory text appears at the bottom of the screen. You
can also set variables to keep track of how many correct and incorrect
answers a student has given in a quiz script, for example, or to create
an on-screen calculator that actually does computations.
Refer to chapter 3, “Branching and using variables” for information on
creating and modifying variables and expressions.
Using alternate mouse pointers
You can change how you want the mouse pointer to appear depending
on button state. The Pointer: button in the Other Action panel lets you
change the mouse pointer shape when the interactive button changes
states. Click Pointer: to open the File dialog, where you can select and
load a clip to use as a mouse pointer.
The pointer is ordinarily the default arrow, or the pointer image specified by the most recent Input menu event (see “Changing mouse
pointer designs” on page 82 for more information). When you move
the pointer over a Push, Toggle, or Radio button, its appearance
changes by default to a hand with the finger extended. For a Text
Entry Field, the default pointer image is an “I-beam” ( ) (The Text
Entry Field’s Pointer: button is found on the Field panel of the Design
Text Entry Field menu.)
Changing the mouse pointer by using the Pointer: button does not
change the default pointer for your script. If you want a different
pointer image that affects the entire script, you must use the Input
menu. (See page 82, “Mouse pointers” in this chapter.)
Changing the pointer image is particularly useful if the button image
is invisible, to let the viewer know that buttons are present. (Invisible
buttons are described on page 70.) You may, for example, have a picture of a flower, on which you have placed an invisible button. To let
people know that the flower has been highlighted, you could change
the pointer from the default arrow in the Normal state to a bee in the
Highlight state. Now when someone moves the mouse pointer over
64
2: Making scripts interactive
Appearance options
the flower, a bee appears, which indicates that the flower is a button
and has been highlighted.
To remove a pointer image from a button state transition, click
Pointer: while that transition is selected on the pop-up, and, in the File
dialog, click the Clear Pointer button in the Options section.
Appearance options
As described previously, buttons made from text elements, clips, or
graphic objects can always be edited using the facilities of their Element Design menus to change how those buttons look. The Buttons
menu has some additional options for controlling button appearance,
accessible in its Appearance panel. The appearance options apply to
whichever button state is currently selected, as indicated by the highlighted title bar button-icon buttons.
Button backdrops
Backdrop: lets you choose a backdrop—a predefined image that you
can put underneath a “face” element, such as a word or clip. The backdrop image stretches to fit the size you want. You can use any normal
clip image, and it will stretch to fit the button. If you use the Scala
“multi-tiles” with the .PNG file-type extension, the image does not
look distorted the way stretched bitmap images often do.
These backdrop images typically have beveled edges, with special
effects like rounded corners and patterned backgrounds. They are the
ideal way to make plain text buttons look like they were custom-drawn
by hand. You can create and edit multi-tiles for custom button back65
2: Making scripts interactive
Appearance options
drops using the Multi-tile Editor available from the Tools drop-down,
as described in chapter 8.
To use a button backdrop, select a button and click Backdrop:. You see
the File dialog. You can use the File dialog to see both clip and multitile images. After you choose a backdrop, you see the Buttons menu
again, and the button you selected with the backdrop image underneath it. You can select a different backdrop image for each button
state, if desired.
The backdrop stretches to fit the button element; for example, if you
type more text into the button, the backdrop becomes longer. You can
also make the backdrop larger than the normal size of the element
with the Border width and height attributes on the Effect panel of the
Element Design menus. In other words, a button backdrop behaves
like a more elaborate version of the normal Backdrop style you can
select on the Text and Clips menus, typically giving an effect similar to
using Backdrop and Bevel together.
To remove a backdrop image from a button, click Backdrop:, and, in
the File dialog, click the Clear Backdrop button in the Options section.
Loading clips on the Buttons menu
Clicking on the Image: button on the Appearance panel opens the File
dialog where you can choose a clip to replace a clip currently being
used as a button face. When a text button is selected, the Image: button is disabled.
Note that you cannot use the Image: button for adding button preset
or predefined button (.BTN) files. To add a predefined button, with
its matching images for the various button states, you use Add, from
the icon toolbar; to put a preset backdrop under a button, use Apply
Preset: (see page 68, “Using predefined buttons and presets”).
Shifting the button face
The Shift option makes it easy to center a button face within a backdrop, and to make an “indenting” 3-D button look more realistic. It
allows you to specify an offset, in pixels horizontally and vertically,
66
2: Making scripts interactive
Appearance options
that the button face (text or a clip) has from its normal position in
relation to its bounding box. You can specify the same offset for all
button faces, or a different offset for each.
The most typical use of Shift is to use a small offset down and to the
right for the selected face of a button that has a beveled style. This
heightens the illusion that the button is being pressed down when it is
clicked. Or, if one state of your button uses a shadow down and to the
right, a simultaneous offset up and to the left makes it appear that the
button face has moved up off the surface of the screen. Button backdrops automatically stretch to fit the larger area created by the offse.
text button on backdrop, no Shift
text button with Shift 27,10
Global button state options
The three on/off options in the middle column of the Appearance
panel are not per-state, but affect all the states of the selected buttons.
Adjusting the hit area
The Boxed Hit Area? button lets you adjust the button’s hit area—the
area in and around the button that responds when
ICDesigner Note
the mouse pointer moves over it or clicks on it. The
The normal hit area of a text elehit area of a button can be rectangular or it can be an
ment is defined by its backdrop
irregular shape.
size, including Border plus Bevel
Thickness; for a clip it is its
bounding box. The easiest way
to see an element’s boxed hit
area is to select it—the selection frame is also the hit area.
When Boxed Hit Area? is on (✓), as it is by default,
the hit area of the button is rectangular. When this
option is off, the hit area is defined by the pixels of
the button image, as opposed to the background.
The primary use of this option is with clip images that have transparent areas. The hit area of a round button (which has transparent corners), then, can be round.
67
2: Making scripts interactive
Using predefined buttons and presets
If you have selected three elements with different sizes for the three
different buttons states, ICDesigner uses the size and position of the
Normal state image for the hit area determination.
Maintaining consistent button size
Because you can adjust the different button states independently, it is
possible to have different sized buttons for each state. This is occasionally useful, but normally you want the button states to match in size.
For this reason, the Link Sizes? button is on by default. Link Sizes?
forces any size changes you make in one button state to be reflected in
the other state(s) so that their sizes match. If this causes problems and
you need to have independent control of the sizes of a button’s states,
turn this option off.
Maintaining consistent position
ICDesigner also lets you position button states independently, if you
desire. However, most buttons are designed so that the states overlap
each other and thus must be in the same position. The Link Positions?
button therefore defaults to being “on”, causing button states to retain
their relative positioning as you move any one of them. If you do need
to position button states independently, turn off Link Positions?, move
the individual button states to the correct places, and then turn the
option back on again. You can then move the entire button (all states)
as necessary without losing the relative positioning.
Using predefined buttons and presets
ICDesigner offers two ways to reduce the amount of time and effort
you must spend creating buttons: predefined buttons and button presets. Both allow you to load a single file that can create all three button
states for you, with appropriate Shift and Border values, and even predefined sounds and custom pointers, so that you do not need to set all
these things yourself. Nonetheless, once they are loaded, you can modify the buttons to further customize them to your purpose.
68
2: Making scripts interactive
Using predefined buttons and presets
Button presets
Button presets load a set of backdrop images that are already aligned,
and contain appropriate Shift and Border settings so that an element
fits neatly into the backdrop with no additional effort. They are not
complete buttons—they are too plain to be very useful without a label
or image as a face element to identify the button’s function. Presets are
thus much like an elaborate kind of style that you can apply to buttons.
You use button presets by choosing Apply Preset: from the Appearance
panel when a button is selected. You see the File dialog open to the
Buttons folder, where you can choose a preset .BTN file.
Presets are used primarily a simple way to “dress up” text buttons: if a
text button is selected when you load a preset, the button backdrop
automatically adjusts to fit the text. The same is true if you begin with
a clip; the backdrop stretches to follow changes you make in clip size.
Predefined buttons
Predefined buttons provide complete matched, professionally
designed images for three different button states. Some are designed so
that they can be useful as is, for example, there are many arrow variations that are useful in common script navigation tasks, and buttons
with universal symbols that could be perfect for various kinds of
prompting in multimedia environments.
Load predefined buttons by clicking the Add icon. You see the File
dialog, where you can choose predefined buttons (.BTN files) from
the Buttons folder. Clicking OK returns you to the Buttons menu
with the button design you chose visible on the page in its Normal
state.
The images in predefined buttons are face images, which means that
you cannot attach further face elements to the button. You can, however, add text or other clips as separate elements on top of or next to
predefined buttons if necessary. The button will not adapt to these elements, and options like Shift and Link Positions? do not apply to them.
69
2: Making scripts interactive
Working with Toggle and Radio buttons
Invisible buttons
You can create invisible buttons by using the button file “Invisibl.btn”. An invisible button does not have any imagery associated
with it, but a rectangular button “hit area” on the screen is still created.
You may, for example, have a page showing a photo of several people,
which displays a person’s name when his or her face is highlighted,
and displays further information when selected. By using invisible buttons, there is no button imagery to interfere with the photo.
Working with Toggle and Radio buttons
For certain kinds of applications, the type of interactive input and
visual feedback afforded by Toggle buttons and Radio buttons is more
appropriate than standard Push buttons. When the viewer needs to
make choices on the same page, and see the various choices before proceeding, the fact that these button types remain in their clicked states
is helpful.
How Toggle and Radio buttons use variables
Both Toggle and Radio buttons are automatically set up to control
and respond to variables. Toggle buttons control only logical (on/off )
variables. Radio buttons can control logical, text, or numeric variables.
For either type, you associate a given button with one variable. The
same variable can be associated with more than one button, however.
The variable’s value changes based on the button state (whether the
mouse has moved over it or clicked it). Likewise, the button responds
to changes made to the variable’s value, by changing to the corresponding state. This means that buttons can be made to change their
state, and thus their appearance, by changing their variable values, not
just by responding to mouse clicks. In this way, you can have different
buttons that visibly respond to each other, or to other events in a
script.
70
2: Making scripts interactive
Working with Toggle and Radio buttons
Toggle buttons
A Toggle button functions just like a switch: it flips a logical variable
between its two possible values, Off and On. For a two-state Toggle
button, the Off and On states correspond to Normal and Select. For a
four-state Toggle button, there are Normal Off and Highlight Off
states, and Normal On and Highlight On states. (In this case, “normal” means non-highlighted, rather than Off.) A four-state Toggle
button is usually in the Normal state; it can be highlighted when
either On or Off. If another button or some other event in the script
sets the variable to On or Off, the button state is automatically
switched accordingly.
Creating a Toggle button
To create a Toggle button:
1. Select the element you want to make into a Toggle button.
2. From the Buttons menu Type: pop-up, choose Toggle Button. In
the panel you see the 2-state and 4-state buttons for selecting a
number of states, and a variable list. Four state indicators appear
in the menu title bar.
3. If there are already logical variables defined in this script, their
names are shown in the variable list and you can choose one to
associate with this button. Otherwise, click New Variable and in
the dialog, enter a name to create a new logical variable with a
default value of Off. Turn on the External? option if you want a
new variable to be common to this script and any scripts above it
in the script structure.
4. By default a two-state button is created. If you want a four-state
button, which highlights when the mouse pointer moves over it,
click the 4-state button.
71
2: Making scripts interactive
Working with Toggle and Radio buttons
The Variable button on the Other Action panel can be used to change
another variable associated with this button.
ICDesigner Note
It is possible to produce
exactly the same functionality as a Toggle button
with a Radio button, but
there is no advantage in
doing so.
You can now use the options on the Appearance and
Action panels, described earlier in this chapter, to
define what the button looks like in each state, and
what it does. Note that it is possible but generally
does not make sense to use a Toggle button for
branching.
Radio buttons
Radio buttons are closely related to Toggle buttons. The difference is
that Radio buttons allow you to use any type of variable, not just logical variables. This also implies that, when using text and numeric variables, you are not limited to in your choice of values to assign to the
button states. You can choose any valid value you like for the button
variable in a given state. This makes Radio buttons more versatile than
Toggle buttons.
Creating a Radio button
The procedure for creating a Radio button is basically the same as for a
Toggle button, except that you also must specify a variable value:
1. Select the element you want to make into a Radio button.
2. On the Buttons menu Type: pop-up, choose Radio. You see the 2state and 4-state buttons for selecting the number of states, and
the variable list.
3. If there are already variables defined in this script, they are shown
in the list and you can choose one to associate with this button.
Otherwise, click New Variable. First choose a variable type and
then enter a name to create a new variable. Turn on the External?
option if you want a new variable to be common to this script and
any scripts above it in the script structure.
4. In the Value: text box, enter a value for the variable you have chosen or created.
72
2: Making scripts interactive
Working with Text Entry Fields
5. By default a two-state button is created. If you want a four-state
button, which highlights if the mouse pointer moves over it when
the button is either On or Off, click the 4-state button.
The Variable button on the Other Action panel can be used if you want
to change another variable associated with this button.
You can now use the options on the Appearance and Action panels,
described earlier in this chapter, to define what the button looks like in
each state, and what it does.
Working with Text Entry Fields
Text Entry Fields allow a viewer to enter data with a keyboard. For
example, the viewer could be asked to enter his or her name, and the
script could then refer to the viewer by name. More sophisticated
applications of Text Entry Fields can gather, store, and process information entered, use it as a basis for branching, and display choices
made by the script.
Like Toggle and Radio buttons, Text Entry Fields require a variable.
The variable must be a Text variable, and whatever the viewer enters
in the button is stored in this variable. The variable can be displayed
and manipulated the same as any other variable in ICDesigner.
Unlike buttons, Text Entry Fields do not have different states, or any
possible action other than accepting keyboard input. Thus a Text
Entry Field has only one possible appearance.
Creating a Text Entry Field
1. From the Add drop-down, choose Add Text Entry Field. You see a
dialog asking you to choose or create a variable for the field.
2. If there are already any user-defined Text variables, they are listed
and you can select one. Otherwise, enter a name in the Variable:
text box to create a variable by that name.
3. Turn on the External? option if you want a new variable to be
common to the script and any sub-scripts that it has.
73
2: Making scripts interactive
Working with Text Entry Fields
4. On the page, you see the variable name within a dashed box with
graphic handles, representing the size of the field. The menu
changes to the Design Text Entry Field menu.
You can now move and/or resize the field as necessary.
5. Specify styles and options for the field, its text, and the mouse
pointer.
You have all the options normally available to text elements in the
Design Text Entry Field menu. (The illustration above shows a
field that has been given a backdrop; the text has a contrasting
color and an outline.) There is also an additional panel in the
menu devoted to options specific to field elements.
Text Entry Field options
The Design Text Entry Field menu is nearly identical to the Design
Text menu. Aside from the addition of the Field panel, the only differences between the two menus are:
•
74
the Text Entry panel of the menu contains a Cursor button with a
color block
2: Making scripts interactive
Working with Text Entry Fields
•
the Position panel contains an Element Size control
•
the Misc panel does not have the Update: pop-up
•
the Alignment panel does not have Word Wrap or Line Space
options, but does have a Vertical Text Alignment pop-up
Field appearance
As it first appears on the script page during playback, the Text Entry
Field contains nothing. The viewer just clicks in the field and begins
typing a response.
If you want the field to have something particular in it to begin with,
assign the text you want to the field’s variable with a Branch menu
special event.
Also, in playback the field initially is invisible; you should use one of
the available options to make the field apparent to viewers. Once a
viewer clicks within the field a text cursor appears.
The appearance of the variable name text that you see while working
with the field (its font, styles, etc.) is what the viewer will see when
typing into the Text Entry Field. Adjust the styles as necessary. Note
that because you can adjust the size of the field, both Horizontal Text
Alignment and Vertical Text Alignment options are available.
New / Edit Variable
Click the New / Edit Variable... button to create additional variables to
be associated with Text Entry Fields, or to change the External? option
of variables.
If you only want to change the association of the field to another existing variable, you can just select it in the scrolling list above this button.
Field Length
It is possible to limit the number of characters that can be entered in
the Text Entry Field by turning on (✓) the Field Length? button.
When on, this option becomes a value control to let you specify the
maximum number of characters that can be entered. This limit is
independent of the physical size of the field.
75
2: Making scripts interactive
Working with Text Entry Fields
Password
One common usage of text entry in an interactive script is entering a
password, to control access to information and options in the script.
Typically, when passwords are typed in a computer system, asterisks
(*) are substituted for the characters typed on the screen, as a security
feature to prevent onlookers from learning the password. This password concealment function is available by turning on (✓) the Password? option for a Text Entry Field.
Decimal Only
You can restrict the allowed input to numeric characters by turning on
Decimal Only?. When this option is on (✓), only numbers (0-9) and
numeric operators (+ - * / .) may be entered in the Text Entry Field.
Note that whatever is entered is still placed in a Text variable. To convert this type of input to an actual numeric value, you must use the
VALUE() function (described in appendix A).
Backdrop Image
Like buttons (see page 65), Text Entry Fields can be given an image
backdrop. A backdrop is a good way to make the field visible to the
viewer.
The Backdrop Image: button opens the File dialog, where you can
choose an image file. If you have assigned an image backdrop and
want to remove it, click the Clear Backdrop button, which appears in
the Options section of the dialog.
Pointer
The Pointer: option allows you to choose a special mouse pointer
design for the time when the pointer is over the Text Entry Field. By
default, the pointer changes to an “I-beam” cursor ( )to emphasize
that text entry is expected.
The Pointer: button opens the File dialog, where you can choose a different pointer image. If you have assigned a custom mouse pointer and
want to return to the default pointer, click the Clear Pointer button,
which appears in the Options section of the dialog.
76
2: Making scripts interactive
Editing buttons
Cursor
The Cursor button is on the Text Entry panel rather than the Field
panel. It lets you specify the color of the text cursor, which appears as a
vertical bar in the Text Entry Field when the viewer clicks in the field.
Drag a color from the color bar to the Cursor color block to change the
color.
Editing buttons
Click on Edit in the Buttons menu to see the Edit drop-down. The
Edit drop-down in the Buttons menu gives you the same editing
options as other Edit drop-downs, with a few differences.
Cut, Paste, Select All, Appear Later, and Appear Earlier function the
same way for buttons as for other elements in ICDesigner. (Refer to
the discussion of the Edit drop-down on page 145 in chapter 6 of the
“Basic Authoring” guide for more information on Edit options.) Copy
and Export, however, have special results when used from the Buttons
menu.
•
Copy copies selected buttons to the ICDesigner clipboard. Copied
buttons retain all of their styles and Go Tos when pasted, except
in cases where it is not physically possible.
For example, a button that is pasted into a different script, which
does not contain the original Go To destination page, cannot
retain the original Go To.
You can use the Go to Event selectors to see which Go Tos have
not been retained in your copied buttons. A Go To destination
page from the original button that does not appear on the selector
of the copied button has not been retained because it physically
does not exist there.
•
Export opens the Export Options dialog for you to save the
selected button. In the Export as Type: pop-up, Button is available.
If you choose Export as Type: Button, ICDesigner automatically
adds the file extension .BTN and saves the button, including each
77
2: Making scripts interactive
Creating more advanced buttons
of its states, as a predefined button file. All its appearance-related
settings are retained, but Action settings and variables are discarded.
Creating more advanced buttons
The examples in the beginning of the chapter showed you how to create simple buttons. Now that you are more familiar with the Buttons
menu, you can begin experimenting more, implementing more buttons features. The following example takes you through the process of
creating more advanced buttons to give you practice implementing
more button features, like:
•
using clips
•
giving buttons sound
•
setting variables to your buttons
•
using Go To with bookmarks
For the following example, let’s say that you are creating an interactive
production that will be displayed in the lobby of a hotel. You want the
production to tell people what the hotel has to offer, so you have a
page in the script that is like a menu, where viewers can choose a button to get more information. We’ll create a menu with buttons for
Entertainment, Food, and Services.
1. Create pages to work with by loading backgrounds for four different pages.
2. Go to the Design Text menu, and on page 1, type “Choose a button for more information” at the top of the page. On page 2, type
“Cafe” in the middle of the screen, and “!special” at the bottom.
Type “Entertainment” on page 3, and “Services” on page 4.
Since you are creating buttons that will advance the viewer to pages
with information, be sure to give the viewer ample time to absorb the
information by setting long enough pauses for those pages. (See chap-
78
2: Making scripts interactive
Creating more advanced buttons
ter 11 of the “Basic Authoring” guide, “Advancing the script automatically” for more information about timing.)
3. On page 1, open the Buttons menu.
4. Click on the Image: button in the Appearance panel. This opens
the File dialog where you can choose a clip to load.
5. Load the coffee cup image from the GuideExamples folder. You
see the clip on your page in the Clip menu.
6. Adjust the size of the clip and place it next to the word Cafe. Make
any other changes you want to its appearance, then return to the
Buttons menu.
7. While the clip is selected, choose Push Button on the Type panel,
and make it a three-state button. The clip is now a button in the
Normal state.
8. Press F12 to switch the button to its Highlight state.
9. Switch to the Other Action panel and choose Mouse over button
from the pop-up. Click on the Sound: button to add sound to the
clip in its highlighted state. You see the Sound menu.
10. Choose a sampled sound that is appropriate. After you select a
sound and click Close, you see the Buttons menu again.
11. Go to the Clip menu and change the appearance of the clip so
that it looks different when highlighted—try changing its Front
color, or turning on Shadow.
12. Return to the Buttons menu, and on the Other Action panel click
the Variable: button. In the Set Variable: text box of the resulting
menu, enter:
special=“Today’s special: Double mocha cappuccino”
and click OK. In the Variable Definition dialog that appears, the
variable type Text is already selected, so just click OK. (See “Creating variables and expressions” on page 89 in chapter 3 for more
information on variables.)
79
2: Making scripts interactive
Creating more advanced buttons
13. Press F12 again to switch to the Select state, then go to the Clip
menu to edit the appearance of the clip in its Select state. If you
need to refer to what you did for the Highlight state, press F12 to
cycle through the states while on the Clip menu. You can also use
the indicators in the title bar, which identify the current state.
(You could also add sound for this state as you did for Highlight.)
14. Return to the Buttons menu, and go to the Select Action panel.
On the Action: pop-up, choose Go to Event.
15. Use the Go to: selector to tell the script where to branch to when
that button is selected. (Since there are no groups in the script,
and you are going to branch to another page, the Level: selector
can be left as it is, reading “<this script>”.) Set the Go To destination to page 2.
16. Make sure that Leave Bookmark? is on. This will let the user return
to the hotel menu after page 2 is finished running.
17. Click the Main icon on the toolbar to exit the Buttons menu to
the Main menu.
18. Click on the Branch column button for page 2. You see the
Branch menu.
19. You see the Go To panel. Use the Action: pop-up to choose Return
to Bookmark. This makes the script return to the location from
which you branched (page 1), because of the Leave Bookmark? setting for that button.
You have now created an interactive button for Cafe. You can go back
to page 1 and create buttons in a similar way for the Entertainment and
Service categories, too, by following the same steps.
Some other approaches you could use to create these buttons:
•
80
Instead of modifying the clip’s appearance for each state, use Apply
Preset: to load backdrop images for all three states. This would
make the image look more “button-like”, and would remove the
need for steps 11 and 13.
2: Making scripts interactive
Using the Input menu for custom input options
•
Rather than make the clip a button, leave it as an illustration, and
make the label text into a button. You could use Apply Preset: here
also.
•
Make neither the clip nor the text a button, and instead load a
predefined button with Add and place it next to the label text.
This too eliminates the need to create separate appearances for
each button.
So far in this chapter, you have worked in the Buttons menu to create
and edit buttons. There are some options related to buttons, however,
that cannot be made in the Buttons menu, but must be made in the
Input menu instead, which is explained in the following section.
Using the Input menu for custom input options
ICDesigner offers several options related to interactive input. Some
are specific to the use of buttons, but others involve the mouse and
keyboard.
From the Main menu, click on the button in the Input column for a
page in your script. You see the Input menu, which looks like this:
The Input menu has three tab panels: Button Controls, Mouse Pointer,
and Slideshow Controls.
Specifying button input options
On the Button Controls panel, you can choose the type of input recognized in a production using the Mouse?, Touch Screen? or Keyboard
(arrows + Enter)? options. At least one of these options is always on;
you cannot turn off all three.
81
2: Making scripts interactive
Using the Input menu for custom input options
Mouse? allows the viewer to use the mouse to highlight and select buttons when the production plays. It is on (✓) by default.
Touch Screen? must be on (✓) to allow proper response to input when
the system playing the production uses a touch screen.
Aside from the touch screen hardware itself, using a touch screen
requires a touch screen driver that is mouse-compatible. If you do not
have such a driver, the Touch Screen? option will not work, and your
only options are mouse and keyboard interactivity. (For installation
information, refer to your touch screen documentation.)
When you turn on the Touch Screen? option, the Mouse? option is
automatically turned off, because mouse and touch screen input are
mutually exclusive. Pointer Image options are not necessary with touch
screens, so they are also disabled.
Turning the Keyboard (arrows + Enter)? option on lets you use the keyboard rather than the mouse and main mouse button to highlight and
select buttons on the screen. When this option is on (✓), you can
move to and highlight buttons with the arrow keys, and select the
highlighted button by pressing Enter (↵).
This option is available whether the touch screen or mouse options are
on, and can be used by itself.
Changing mouse pointer designs
As mentioned previously in this chapter, to change the pointer image
for buttons in the Highlight and Select states, you use the Buttons
menu (see page 64, “Changing the mouse pointer”). However, to
change the default pointer images for entire pages and scripts, or to
choose when the pointer is visible in your script, you must use Input
menu options in the Mouse Pointer panel, as explained below.
The Pointer: pop-up lets you choose when you want the pointer visible
in your production. Even on a page that has no buttons, for example,
you might want to use the pointer for illustration purposes, to point to
items on the page as you discuss them. Or, alternatively, you may
want the pointer visible only when buttons are available for selection.
82
2: Making scripts interactive
Using the Input menu for custom input options
Use the pop-up to choose Always or For Selection Only. The default is
For Selection Only.
Choose For Selection Only when you want the pointer to be visible
only if there are buttons on screen.
Choose Always when you want the pointer visible regardless of
whether there are buttons on screen or not.
In addition to choosing when the pointer is displayed, ICDesigner lets
you change pointer images using the Pointer Image: and Busy Pointer
Image: buttons. These options affect the pointer designs you see when
the script runs.
ICDesigner Suggestion
Although you can select any
clip as a pointer or busy
pointer, for best mouse
response you should
choose a relatively small
image.
The Pointer Image: button controls the design of the
normal mouse pointer used on screen. You may, for
example, want the image to be a pointing finger
instead of the standard arrow. When you click on
Pointer Image: you see the File dialog open to the
Pointers folder. You can also navigate to another
folder, and choose any clip to use as a pointer image.
The Busy Pointer Image: button lets you change the image of the busy
pointer, which appears on the screen when the script is busy and temporarily cannot accept input. By default, there is no busy pointer.
Click this button, and in the File dialog, choose a new image.
To stop using a custom pointer image in a script, click Pointer Image:
or Busy Pointer Image:, and, in the File dialog, click the Clear Pointer
button in the Options section. This returns to the defaults, an arrow as
the normal pointer and no busy pointer.
Changing the script default pointer
To change the pointer for the entire script, you can group the script’s
pages and apply the Input event to the group. Choose Select All from
the Edit drop-down on the Main menu, and then Group. Input menu
settings you make for the group become defaults for the entire script.
83
2: Making scripts interactive
Using the Input menu for custom input options
Controls for advancing pages
The buttons on the Slideshow Controls panel, Mouse Buttons? and Keyboard (Page Up/Down)? let you choose how you want your script to
advance when you are working with a slideshow-style production—
that is, one in which you move from page to page without using buttons. With these buttons, you can choose the mouse, the keyboard, or
both the mouse and keyboard to advance.
Mouse Buttons? controls whether the mouse buttons by themselves
control the advance to another page. Pressing the main mouse button
moves forward in the script, and the secondary mouse button moves
back. It is on (✓) by default. Note that on any page with buttons, the
button-selection function of the mouse buttons takes precedence over
the page-advance function, regardless of the setting of the Mouse Buttons option.
Keyboard (Page Up/Down)? controls whether the keyboard can advance
the script. The Page Down key moves to the next page, and the Page
Up key moves to the previous page. It is also on (✓) by default.
Input event scope
The events you set in the Input menu are different from other events
on column buttons in an important way. All other events apply only
to the page for which you have set the event. Input events, however,
are “sticky”: they remain in effect from page to page until another
Input event changes them. For example, if you turned on Touch
Screen? for page 3, and Mouse? for page 8, the pages from 3 to 7 would
have touch screen control, even though you did not explicitly set it on
all those pages. This can save you some effort, but it might also be
confusing at times.
Removing Input menu events
When you need to remove an Input event you have set for a particular
page, click the Delete button on the Input menu. The page and those
following it then assume the Input settings from the most recent previous Input event, or the default settings if there was no previous Input
event.
84
3: Branching and using variables
Many of the scripts we have used as examples have been relatively simple. They proceed from the first page to the last, playing every page
and event between in the order in which they appear in the script.
However, there are also situations in InfoChannel Designer 3 that call
for a script to execute in a non-linear fashion—that is, for pages and
events to run in some order other than that in which they appear in
the Main and List menus. Using buttons, as described in chapter 2, is
one way to change the sequence in which a script executes, but there
are cases in which you need the same capability to jump to a different
location in a script, but do not want a button.
It can also be necessary for some decision-making ability to reside in
the script itself. For example, an arithmetic quiz script has to be able to
evaluate a student’s response to determine whether it is correct, calculate a score based on several responses, and perhaps show a different
screen at the end depending on whether the student did well or
poorly.
These are both cases in which you would need to use the Branching
and Variables menu (normally just called the Branch menu), in order
to use branching and variables. Although we have left it for this chapter, this menu is not complex, and you can make use of it in scripts
that are not particularly “advanced”. Using it, however, does require
more detailed planning than other ICDesigner tasks.
This chapter covers the Branch menu, and also describes when it can
be helpful to use sub-scripts.
A simple Go To branch
In chapter 2 it was described how to use ICDesigner’s buttons to
break through some of the limitations of a linear approach, and the
Go To action was introduced, which lets script execution shift to a different location. However, when you want a Go To but not a button,
86
3: Branching and using variables
Variables and expressions in the Branch menu
you need to use the Branch menu’s general-purpose Go To panel
events.
Because using a Go To does not require variables or conditions, and
can be useful even in simple scripts, we will give a quick example here
before covering the subject more thoroughly.
1. In the Branch column, click the button for the event after which
you want the Go To to happen. You see the Branch menu with
the Go To panel showing.
2. From the Action: pop-up, choose Go to Event.
3. Click arrows on the Go To selector to choose the name of the destination page or element. The selector steps through all the possible destinations. In the display box, you see a miniature image of
the destination page.
4. Click OK to accept the modified event and close the menu.
The script will then jump to the new location you specified after it
completes the event where you placed the Go To itself, skipping all the
events between. Details on using Go To can be found on page 105,
“Using Go To”.
Variables and expressions in the Branch menu
You use the ICDesigner Branch menu to create and modify variables
and expressions, and to use them as the basis on which to branch to
another part of the script. ICDesigner also provides many standard
functions that you can use in expressions to manipulate variables.
87
3: Branching and using variables
Variables and expressions in the Branch menu
Variables
A variable is a “container” for a quantity that can change within a
script. Because you can name variables, you can refer to what they
hold by their names, regardless of the actual value. For example,
within a quiz script, you can create a variable that keeps track of how
many correct answers a user has given, with a name, such as “CORRECT”. You can increase it for each correct answer, and display its current value on a screen page at any time by referring to its name.
There are four variable types in ICDesigner: text, logical, integer, and
real. ICDesigner also has various system variables that it maintains,
which you can also use. New EXes can make additional system variables
available. Refer to appendix A for a list of available system variables.
Expressions
An expression is a statement that uses variables together with arithmetic operations such as addition and multiplication, logical tests and
comparisons such as >= (greater than or equal to) and OR, and functions such as LEFT() that can manipulate variables. ICDesigner evaluates an expression as a numerical value, a text value, or a logical value
(TRUE/FALSE, ON/OFF) depending on the type of expression it is.
Some examples of expressions that assign values to variables are:
ICDesigner Note
To make the text more
easy to follow, we show
variable names in SMALL
CAPS, and functions and
logical operators in ALL
CAPS.
However, you do not have
to use any capitalization
when you use variables,
functions, or operators.
You can use all lowercase,
or any mixture of upper
and lowercase.
88
•
SEVEN=4+3
•
CORRECT=CORRECT+1
•
TOTALCOST=(UNITS*UNITCOST)+SHIPPING
•
CITY=“Trondheim”
•
NAMELETTERS=LENGTH(NAME)
•
CONFIRM=TRUE
Some examples of logical expressions are:
•
CORRECT
< 10
•
CORRECT
>= 10 AND BONUS=TRUE
•
(LOOPS > 7) OR (ANSWER <> “iguana”)
3: Branching and using variables
Variables and expressions in the Branch menu
The result of the expression evaluation can either be placed in a variable, or its logical value (truth or falsity) can be used as the basis for a
decision by one of the branching instructions (see page 95, “Branching
in the Branch menu”).
Operators
Operators are the symbols and keywords that you use with variables to
construct expressions (see the preceding examples). Familiar operators
include the arithmetic operators + (plus), - (minus), * (multiply), and /
(divide). Other operators, such as ** (exponentiation), <= (less than or
equal to), and NOT, perform logical, relational, or advanced arithmetic functions. Refer to appendix A for a list of operators available in
ICDesigner and additional examples.
Functions
A function is an automatic procedure that ICDesigner provides for
your use. It can take text or numeric input (constant values, variables,
or expressions) and returns a value as the result. You can use a function
in an expression, as in the NAMELETTERS example above: LENGTH()
takes a string as input, and returns a number that is the text length in
characters. A function like ABS() takes a number as input and returns
a number. A function can also be used as a complete expression.
Function syntax is simple. A function always has one or more parameters after the function name, enclosed in parentheses. If there is more
than one parameter, they are separated by commas. An example of a
multiple-parameter function statement is:
RANDOM(1,LENGTH(NAME))
This shows how one of the parameters of a function can itself be a
function, in this case one that takes a variable as its parameter. Refer to
appendix A for a list of functions available in ICDesigner and additional examples.
Creating variables and expressions
ICDesigner makes creating variables and expressions as simple as possible.
89
3: Branching and using variables
Variables and expressions in the Branch menu
90
•
When you set a variable to an initial value in the Set Variable: text
box, you see a dialog that lets you create a new variable by that
name. Just pick the proper type: Text, Logical, Integer or Real. The
first set of bulleted points under the previous heading, “Expressions”, shows examples of what you could enter in the Set Variable:
text box to establish or change a variable value.
•
The variable creation dialog also offers the choice to make variables “external”, or common to any scripts of which the current
script is a sub-script. This lets scripts and sub-scripts communicate through the values of the external variables they share.
•
The Branch menu shows you scrolling lists of the currently available system variables, functions, and expression operators, to
make entering expressions easier. Variables you create in your
script are also shown, at the top of this list. Click items in the lists
to add them to the expression in the text box.
•
Variable names can be up to 32 characters long, can contain letters, numbers, and dots (.), and must begin with a letter or underscore (_). Names must be unique within a script.
•
You indicate a string by enclosing text between double quote
marks (“”) as in the fourth of the preceding bulleted examples.
Text variables in ICDesigner can accept strings of any length,
which can contain any ASCII character.
•
Numeric variables can be either Integer (whole numbers, like
8949, 0, and -23) or Real (decimal numbers, like 3.14159,
0.00007, and 1088.6). It is possible to format integers for display
as fixed-point figures such as monetary values.
•
Logical variables and expressions can have one of two values,
either TRUE or FALSE, which can also be given as the equivalent
ON and OFF.
•
When creating or referring to variables, expressions, and functions, you can use any number of spaces between names and operators to help make them more readable, but ICDesigner ignores
them; no spaces are required.
3: Branching and using variables
Variables and expressions in the Branch menu
•
ICDesigner ignores capitalization in variable, function, and operator names; you can use any combination of uppercase and lowercase. For example, Count, count, and COUNT would all refer to
the same variable. Capitalization is also not significant within
strings: the string “Japan” is considered the same as “japan”.
•
You use parentheses to indicate the order in which operations
should be performed. As in ordinary arithmetic, portions of an
expression within parentheses are evaluated before portions outside them, and the innermost portions are evaluated first. The
number of left and right parentheses in an expression must match.
왘
To create a variable:
1. Click on a button in the Branch column for an existing event. (Or
choose Add Special Event from the Add drop-down, and then click
that event’s Branch button.) You see the Branch menu.
2. If the Set Variable panel is not showing, click its tab.
3. In the Set Variable: text box, type a name for the variable. It
should be brief but descriptive, so that you will recognize its function when you see it in different parts of the script.
4. After the name, enter an equals sign (=) and an initial value for the
variable. This can be an explicit value, or can itself be a variable,
expression, or function, whose ultimate value is used.
❖ For an integer variable, the value can be any whole number
between -2,147,483,648 and 2,147,483,647, or any expression that evaluates to a number within that range.
❖ For a real variable, the value can be any number between
38
38
approximately -3.402 and 3.402 , or any expression that
evaluates to a number within that range.
❖ For a text variable, the value can be text of any length. Any
“literal” text must be enclosed in double quotes: “Montreaux”.
ICDesigner preserves the capitalization you give it, along with
any spaces that you include.
91
3: Branching and using variables
Variables and expressions in the Branch menu
❖ For a logical variable, the value can be ON or OFF. You also
can use TRUE or FALSE, which are synonyms for ON and
OFF respectively.
❖ If you do not know what the initial value will be, you can
enter a 0 for a numeric variable, two double quote marks (“”)
for a text variable or FALSE for a logical variable.
5. Press Enter.
6. You see a dialog asking if you want to create this variable, and asking for a variable type. Choose Text, Logical, Integer, or Real.
7. You can also choose to make the variable an external variable.
Turn on the External? option if the script you are working in is a
sub-script, and you want the variable’s value to be available to the
script(s) above it in the script structure. If the current script is not
a sub-script, making its variables external has no effect.
8. Click Close to close the menu.
Once a variable has been created, it can be referred to anywhere in the
script without bringing up the dialog that asks if you want to create
92
3: Branching and using variables
Variables and expressions in the Branch menu
the variable. However, if you refer to a variable before the script has
executed an event that explicitly assigns it a value, the variable has a
default value. For numeric variables, the default value is 0, for text
variables, it is an empty string (“”), and for logical variables, it is OFF
(FALSE).
Once you have created a variable, it remains the same type as when it
was created (numeric, text, or logical), and you will see a problem dialog if you then try to assign a different type of value to it.
Deleting variables
A variable you have created can be deleted only if it is not used anywhere in the current script. When you close the Branch menu, ICDesigner looks for any unused variables, and displays a dialog for any that
it finds, asking if you want to delete the variable. Click Yes to delete
the variable.
Using variables
Some of the most common situations in which you use variables
include:
•
Whenever you need to accept and store input from someone viewing the script, such as which button someone clicked.
•
When you need to make a calculation or decision based on input
that can change.
•
When using a Repeat function on the Branch menu, to count the
number of repetitions in a loop.
•
When you need to display information that has previously been
entered, or was generated within a script.
Defining constants
It is sometimes worthwhile to define a variable for a value that is “constant”—not meant to change within the script. You can use the variable name wherever you need the constant in your script. If at some
future time the constant value must be changed, you don’t have to
change every instance of it in your script. You have to change only the
one location where you assigned it its constant value.
93
3: Branching and using variables
Variables and expressions in the Branch menu
Displaying variable values
To display a variable value in a script, you type the variable name preceded by an exclamation point (!) in any screen text, string, or text
variable. When the script runs, ICDesigner automatically substitutes
the variable value for this variable reference.
For example, at the end of a quiz script, you could create a page with
the line, “Congratulations, !NAME, you got !CORRECT answers right!”.
When the script runs, the contents of the variables NAME and CORRECT would appear in the text, so that it might read, “Congratulations, Elizabeth, you got 20 answers right!”.
ICDesigner Note
For variable display to
work, there must not be
any space between the
exclamation point and the
variable name, and there
must be no style differences in the variable reference. When displaying the
value of expressions, the
entire expression must be
enclosed in parentheses.
Displaying variable values this way works for variables
you create and for system variables like TIME. It also
works for expressions: for example, !(3+2) would display as “5”. When you embed a variable or expression
in text, the displayed value takes on the same font and
styles as the variable reference. You must make sure
that your page layout allows for the longest possible
value of the variable, or the text could run off the
screen, or the line could wrap to another line. When
you embed functions or expressions, always put them
in parentheses, as in the example above.
Auto-updating
One special feature of the variables in ICDesigner is auto-update: even
after you have displayed a variable on the screen, if the value of the
variable changes, the display automatically updates to reflect the new
value. This is easy to see with variables like TIME. Try running a script
with the text line, “The time is: !TIME.”—you have created a simple
on-screen clock! How long a variable continues updating is affected by
the Update option on the Misc panel of the Element Design menus
(see page 224).
Formatting numbers to display decimal values
Although ICDesigner can use decimal (floating point) numbers, you
might want to use it to calculate and display fixed-point values, as in
decimal monetary systems. You do this by starting with values that are
100 times the their actual values, and then using ICDesigner’s
94
3: Branching and using variables
Branching with the Branch menu
FORMAT() function, or embedded formatting codes, to display final
values with two decimal places to compensate.
In a dollar-based system, for example, this means that you convert all
dollar amounts to cents. So if you wanted to add $24.95 and $17.02,
you would actually add 2,495 and 1,702 instead, which equals 4,197.
The FORMAT() function allows this to be displayed with two decimal places: 41.97. The formatting characters used by the FORMAT()
function can also be used in embedded variables: “The cost was
!(4197,“##.##”)”. For information and examples on using the
FORMAT() function, see the “String functions” section of appendix A.
Branching with the Branch menu
You work in the Branch menu when you need to branch, or interrupt
a script’s usual top-to-bottom (first-to-last) flow.
A script’s flow is the sequence that it follows when executing its pages
and events. The Branch menu is available on both the page level (in
the Main menu) and the element level (in the List menu), so you can
branch both within pages and from page to page. You cannot, however, branch directly from a page to an element.
Branching
Branching is necessary to make sure that certain events happen (or do
not happen) in certain situations. Branching can also keep you from
having to add items to your script several times when you simply need
to repeat them.
A branch is a place from which the script can jump to a different location, and resume showing events from the new location on. Some
types of branches always go to the same location; others can make a
decision about where to branch to, or whether to branch. Looping, a
technique that lets you repeat an event a certain number of times, also
involves branching.
95
3: Branching and using variables
Branching with the Branch menu
A long interactive script that accepts audience responses and operates
differently depending on those responses is likely to involve several
types of branching to achieve its purpose.
Click the button in the Branch column for an existing page, element,
group, sub-script or special event to open the Branch menu.
The Branch menu has three tab panels to choose types of branches. All
branch events require some additional information, which either
defines when the script should branch, or specifies the location to
which it should branch. When you choose a type of branch, you see
various controls for choosing a variation and entering additional information.
The Condition and Repeat branch panels are very similar, based on the
Set Variable panel, and list system variables, functions and operators
you can use in determining how to branch.
branch types
The Go To panel has no controls other than the Action: pop-up except
when the Go to Event option is chosen.
Click one of the tabs to display the panel for one of the three types of
branch events:
96
•
Condition
•
Repeat
•
Go To
3: Branching and using variables
Branching with the Branch menu
Condition branches
This branch decides whether to execute the event of which it is a part,
depending on whether a certain condition is true. You specify the condition in the Show If Expression: text box. When the event for which
you specify this type of branch is a group, you can conditionally
execute or skip a whole series of events.
The condition is usually an expression involving one or more variables. For example, the condition might be the expression
“SCORE > 95”. An event having this condition would execute if, and
only if, the value in the variable SCORE was greater than 95. The page
having this flow condition might in that case be a screen congratulating a student on getting a high score.
Repeat branches
The Repeat While and Repeat Until branches are very similar. Both are
used to repeat the event (or group of events) of which they are a part,
so that you don’t have to add the event to the script several times. In
most places where you want to repeat, you could use either. One form
or the other is usually simpler to use in certain situations.
Like the Show If branch, Repeats require a condition such as
ATTEMPTS=4 in the text box. When the condition is true, the event
with the Repeat While branch is executed again. When the condition
becomes false, the script continues to the next event. Details on the
differences between the two kinds of repeats and where you would use
them start on page 100, “Using Repeat While and Repeat Until ”.
Go To branches
As the name implies, a Go To branch tells the script to go to another
point, from which the script continues. It doesn’t require a condition;
it always branches when script execution reaches it, after executing the
event of which it is a part. A Go To can be made conditional, however,
by combining it with a Show If branch.
In the Level: selector, you need to specify the level of the script that the
destination location is on (the path to its group, if any). Then, using
97
3: Branching and using variables
Controlling script flow with branches
the Go To: selector you find the name of a page or event to provide a
target for a Go To event.
The Leave Bookmark? option makes it possible to return from a Go To
branch. The bookmark is set at the point immediately after the Go To,
and after the script has finished in the target location, it can return and
resume running again from that point. More detail on how to use
Go To branches is on page 105, “Using Go To”.
Controlling script flow with branches
Although the branching events themselves are very simple, how to
apply them to achieve the right effect isn’t always obvious, especially
to those who have no experience with a computer programming language. You do not need that kind of experience to use ICDesigner’s
branching options, however. This section explains how and when to
use the branching events in a script.
Some important facts to keep in mind:
•
The events with branches can be groups, and thus the branches
can apply to more than one page. Grouping pages so that you can
adjust the flow of more than one page at a time is in fact one of
the main uses of the Group option. Collecting related pages into a
series makes it simpler to use branches to repeat, or to avoid executing, those pages.
However, you must plan carefully when using both Go To
branches and grouping in the same script. You cannot branch into
a group, only to a group as a whole. Because of this, grouping
page that are the destination of Go To branches from outside the
group is not possible without modifying those branches. If you
attempt to group a Go To destination event without including the
Go To itself in the group, you see a dialog explaining that this cannot be done.
•
98
More than one branch can be combined on a single event; for
example, you can use Show If with Go To or one of the Repeat
branches.
3: Branching and using variables
Controlling script flow with branches
Using Show If
Show If Expression is the simplest of the branches to understand
because it translates literally into words and action: “If this condition
is true, then show this event.” If the condition is not true, the event is
skipped, and the script continues with the following event.
The condition can be any logical expression that is legal in ICDesigner. Because expressions in ICDesigner can use logical operators
(see page 87, “Variables and expressions in the Branch menu”), you can
also use the condition to make more complex comparisons.
For example, you might have a quiz script that gives a student the
answer to a question if he or she has made four unsuccessful tries at
clicking the correct button.
왘
To show a page with the answer after the number of tries
reaches 4:
1. When the student clicks an answer button, add 1 to a variable
called TRIES for each time a question is asked. (In Set Variable:,
put TRIES=TRIES+1.)
2. Create the page that gives the answer.
3. Put the page at the point in the script immediately after where the
script adds 1 to the TRIES variable.
4. Click the Branch button for the answer page to open the Branch
menu.
5. Click the Condition tab. The text box reads Show If Expression:.
6. In the text box, enter TRIES=4.
7. Click Close to close the Branch menu. The Branch button for the
page displays “If ”.
When this page is encountered when TRIES is not equal to 4, it won’t
be shown. But once TRIES reaches 4, the page can be shown.
Show If can also be combined with Go To and the Repeat branches, to
make those operations conditional. See page 104, “Example 5: Conditional loops”, and page 109, “Using a conditional Go To”.
99
3: Branching and using variables
Controlling script flow with branches
Using Repeat While and Repeat Until
The Repeat options provide an important “labor-saving” capability.
You use Repeat While and Repeat Until when you need to repeat some
action several times. You can use these events to repeat a single event
several times, or to repeat a series of events. It is easy to visualize this:
script execution runs through the series of events, then at the end of
the series, jumps or “loops” back to the top of the series to repeat the
loop.
Which loop?
The difference between the two types of loops is the point in the loop
where they evaluate whether the “while” or “until” condition is true.
Repeat While evaluates the condition before executing the contents of
the loop each time; Repeat Until evaluates the condition after each
time through the loop. This means that Repeat Until always executes
the events in the loop at least once, because it doesn’t check its condition for the first time until the end of the first time through. Repeat
While, however, looks at the condition before starting the loop. If the
condition isn’t true when the script first reaches the loop, the loop is
skipped entirely.
Another way to think of the difference is that Repeat While loops continue while the condition is TRUE, but Repeat Until loops continue
while the condition is FALSE (until it becomes TRUE).
You can always use either type of repeat, by varying how and when
you initialize the condition expression. One type of repeat or the other
might require a special event to set the condition expression (see
page 102, “Example 1: simple loop”, steps 2 and 3). This expression,
which is evaluated to determine whether the loop should repeat, could
have its initial value set within the loop, or before the loop.
Generally, if the value of the variable used in the condition is set somewhere earlier in the script, it is simpler to use Repeat Until. If the loop
is self-contained—that is, its condition variable is created and set
within the loop—Repeat While is probably simpler to use. The two
types are mutually exclusive; a loop can’t be both a While and an Until
loop.
100
3: Branching and using variables
Controlling script flow with branches
The examples that follow show some typical situations that illustrate
when and how you would use one or the other.
Defining a loop
In the Branch menu you click the Repeat tab and then use the pop-up
to choose Repeat While or Repeat Until for that event. To define a
loop, you first group the page or series of pages that you want to repeat
and then apply the Repeat branch to the group.
Example 1: A simple loop
This is the smallest and simplest kind of loop. This example performs
a page wipe three times using Repeat While and a counter variable that
keeps track of how many times the loop has been repeated. Here is a
flow chart showing what it does:
the Repeat condition test
쑺
1: Check the
value of COUNT. Is it
less than 3?
쑺 No
쑽
Yes
2: Perform the wipe.
쑽
3: Increase the loop counter
(COUNT= COUNT+1).
쑽
쑽
Go on to the
next event
Step 1 is where Repeat While does its work: it decides whether to continue to the page event—the wipe—based on the value of the COUNT
variable. Once COUNT equals 3, the script exits the loop and goes on
to the next page.
왘
To create this loop:
1. Create three pages with different backgrounds. On the first, put
the text, “Going to loop...”, on the second, “Looping!”, and on
101
3: Branching and using variables
Controlling script flow with branches
the third, “Done. I Looped !COUNT times.”. (Be sure the exclamation point does not have a space after it.). Give the “Looping”
page a pause of 1 second.
2. Click the Branch button for the first page to open the Branch
menu.
3. In the Set Variable panel’s text box, enter COUNT=0.
You see the Variable Definition dialog. Choose the Integer variable type and click OK to create and set the COUNT variable.
4. Click the Branch button for the second page, and enter
COUNT=COUNT+1 in the Set Variable: text box.
5. Click the second page’s Wipe button. In the Page Wipe menu,
give the page the ScrollDivide wipe, and click Close.
6. In the Main menu, click Edit and choose Group to group the second page.
7. Click the Branch button for the resulting group.
8. Click Repeat, and make sure the pop-up reads Repeat While.
9. In the Expression: text box, enter COUNT<3. Click OK to exit the
menu.
In the Main menu, you see that the Branch button for the first page
reads “Set”, and for the group it reads “Repeat”, reflecting the settings
you made. Run the script. After you click on the first page, you should
see the “Looping” page wipe onto the screen three times, then the
“Done!” page.
When ICDesigner runs this script, it notices that there is a Branch
event. Since it is a Repeat While instead of a Repeat Until, ICDesigner
looks at the variable COUNT first. The first time it is tested, COUNT
hasn’t yet reached 3, so ICDesigner goes on to the page event—the
page wipe. Then the loop counter, COUNT, is increased, and ICDesigner goes back to the top of the loop. For a While loop, the condition test is at the top. After the third time however, COUNT equals
102
3: Branching and using variables
Controlling script flow with branches
three, so ICDesigner displays the third page, which shows you the
value of COUNT.
In this case, setting COUNT equal to 0 is not really necessary, because
ICDesigner sets numeric variables to zero when it starts a script. However, it is good to get into the habit of giving your loop counters a
starting value, because a script will not always restart before its loops
are run again; plus, sometimes you need to start a loop with a value
other than zero.
A loop can be made even simpler if what you need is an infinite
loop—a loop that runs forever. Eliminate steps 2 through 4 above,
and for the loop condition, enter TRUE. Since the condition is true
by definition, the loop always passes the condition test, and never
exits. If necessary, an infinite loop like this can be jumped out of with
a Go To, or an interactive button.
Example 2: A multiple-event While loop
To create a While loop with additional events is basically the same as
in Example 1. You group all the events in the loop, and apply branching events to the group.
왘
To create a loop containing several pages:
1. Create the pages you wish to loop through, and, in the Main
menu, arrange them in the order they should appear.
2. Select all the pages you want to be in the loop (use Shift-click or
Ctrl-click).
3. From the Edit drop-down in the Main menu, choose Group. You
see a new group page in the Main menu. (You might want to
change its name to indicate that it is a loop.)
4. Enter the Branch menu and as described in steps 2–4 of Example
1, set up the Repeat While and counter variable as necessary to
repeat the loop the proper number of times.
You can, of course, call the counter variable anything, choose any
number of repetitions, and otherwise customize the loop.
103
3: Branching and using variables
Controlling script flow with branches
For this loop it is just as easy to use either type of Repeat, by reversing
the comparison. That is, to accomplish the same thing using Repeat
Until, you set up the loop the same way, except choose Repeat Until,
and for its condition, enter COUNT>=3.
Example 3: A multiple-event Until loop, indefinite length
A loop does not need to have a predefined number of repetitions. You
can have a loop that repeats until some expression becomes true, however many times that takes. For example, a quiz script could continue
asking a question until the correct answer is given.
You would set up this loop as the preceding examples, except that you
would not necessarily have to set up a counter variable. (You might
still set up a counter for a reason other than controlling the number of
repeats. You might want to count the number of tries the student took
to answer the question.) Your condition expression would be something like ANSWER=“Apollo”.
Example 4: A loop with more complex variable usage
Once you understand how to make simple loops with counter variables, you can start using more complex expressions. You could make
the loop condition dependent on two or more variables, and use operators like AND, OR, and NOT to make more comprehensive decisions. You can create special events as necessary to set variables at
particular places in a loop.
For example, your quiz script loop might have an expression like this
as a Repeat Until condition: (ANSWER=“Apollo” AND SECONDS < 15)
OR TRIES >= 4. Assuming you had set up the variables SECONDS and
TRIES, this would exit the question loop if the student gave the answer
“Apollo” within 15 seconds, or made four tries at the answer.
Example 5: Conditional loops
You can specify both Repeat While/Repeat Until and Show If for a
group, to create a conditional loop. The Show If is evaluated first, and
the loop will be skipped if the condition is not true. To do this, set up
the loop normally, then, after specifying the loop condition in the
Branch menu, click the Condition button and enter the expression that
must be true for the loop to be executed.
104
3: Branching and using variables
Controlling script flow with branches
Example 6: Nested loops
Loops can be nested—that is, placed inside one another. In a nested
loop, the inner loop goes through all its repetitions for each single repetition of the outer loop.
Nested loops are called for when you have two “levels” at which you
need to repeat things. For example, suppose several students use your
quiz program, and you have stored the score they made for each question. You might then want to display all the scores. The two levels of
that task are the individual student level (displaying each score for one
student) and the “class” level (doing the same for each of the other students). To do this, the “inner loop” does the individual-level task, and
the “outer loop” does the class-level task.
the “ClassLoop” group contains the “StudentLoop” group
Example 7: Jumping out of a loop
In the loop condition, sometimes it is not possible to cover all the possible situations under which you might want to exit a loop. In such
cases, a conditional Go To or a button with a Go To can jump out of a
loop based on some other factor, even though the Repeat expression is
still true.
Using Go To actions
Go To actions are the most powerful of the branching instructions,
because they can remove all linear, sequential limitations to the order
in which events are executed. This can give you much more flexibility
when you have more complex things to do in your script. It is made
more powerful by ICDesigner’s capability to set a bookmark when
105
3: Branching and using variables
Controlling script flow with branches
you use a Go To action, so that you can later return, and continue
running the script from the point after the action.
The most common use of Go To actions is on buttons. When you
want to display a new page or perform some other action when someone clicks an on-screen button in your script, the button most likely
has a Go To branch associated with it. You can set up a Go To action
for a button in the Design Buttons menu. Creating a Go To action
from the Branch menu is nearly the same.
Non-button Go To branches should be used sparingly, however.
Overuse of such actions, especially Go to event, can make a script difficult to understand and edit. Before you use a Go To branch, see if
there might be another way to accomplish your objective by rearranging events to make the branch unnecessary.
왘
To use a Go To branch:
1. Click on the button in the Branch column for the event after
which you want the Go To to happen. You see the Branch menu.
2. You should see the Go To tab. Click the Action: pop-up to see the
possible types of Go To.
106
3: Branching and using variables
Controlling script flow with branches
3. Choose a Go To action. Go to Next Page and Go to Previous Page
are self-explanatory and have no options, so you can choose one of
these and just click OK to finish.
4. If you choose Go to Event, you see the Go To: and Level: selectors,
and the Leave Bookmark? button. The default Go To setting just
continues with the next event after the Go To without branching.
5. The Level: selector lets you specify where within the script structure the branch target is. Its possible settings vary depending on
whether the current event is within a group, and whether you
entered the Branch menu from the Main menu or the List menu.
You can branch to any place earlier or later in the current script.
However, you cannot branch into a separate script, or a to group
that is below the current level in the script structure.
From the Main menu, if the branch event is not within a group,
the selector is disabled and reads <this script>. Within a group, the
options include the current group, any group(s) above it in the
structure, and the top level of the script (<this script>).
From the List menu, the selector works the same, except that it is
never disabled and the choice <this page> is also present.
Choose a level using this selector if necessary.
6. In the Go To: selector, choose the destination page or element.
The selector steps through all the possible destinations on the
script level you have chosen. In the display box on the right, you
see a thumbnail of the destination page or the name of the destination element/event.
7. If you do not need to return to the point immediately after this
Go To after executing events at the destination location, turn off
the Leave Bookmark? option.
8. Click Close to close the menu.
107
3: Branching and using variables
Controlling script flow with branches
There are several situations in which you would typically need to use a
Go To:
•
(with Leave Bookmark?) to execute a different section of the script
and then return to the original location—often this usage is from
a button
•
to exit a loop
•
to branch around one or more events that you do not want to execute
•
(with Show If ) to branch to another location if a certain condition
is true
•
(using Action: Exit from Script) to exit from a sub-script at someplace other than the end of the script
Exiting a loop
Using Go To as an additional way to exit a loop was discussed in
Example 7 of the preceding section.
Branching around events
Before using Go To to branch around some events, consider whether
you could structure the script so that it is unnecessary. If the Go To is
unconditional, it is very likely that there is a location for the events
you want to branch around that would eliminate the need for the
Go To.
Using Go To with a bookmark
The real power of Go To comes when you also use the bookmark feature to allow you to return from a Go To. If you place an Action:
Return to Bookmark at the end of a section of events, execution will
return to the place where you last left a bookmark.
This, in effect, lets you define sections of a script as independent units
that you can go to and return from at any point in the script. This is
most valuable if you have a sequence of events that might need to be
run several times in the course of a script, but from different places in
the script (rather than several times in a row like a loop).
108
3: Branching and using variables
Controlling script flow with branches
An example of the Go To-with-bookmark structure:
Page 1
쑽
Page 2
Go To: page 7 (leave bookmark)
쑽
Page 3
Page 4
Page 5
ICDesigner Note
Page 6
The Go To on Page 6 is not
strictly necessary, but it is
there on the assumption
that you do not want to run
the unit from 7 to 9 again.
Page 7
unit
Go To: Page 10
쑽
Page 8
Page 9
Action: Return to Bookmark
Page 10
쑽
In the above script, the pages would run in the order: 1, 2, 7, 8, 9, 3,
4, 5, 6, 10....
A more important reason for skipping over a script unit this way is to
keep a Return to Bookmark from being executed again. Executing a
Return to Bookmark when you did not intend to will disrupt the
proper order of events. If ICDesigner encounters a Return to Bookmark
for which it cannot find a bookmark, it continues without branching,
and displays a message dialog when you exit the script. Using Go To
with bookmarks and Return to Bookmark requires very clear planning
of the order in which events and script units will be executed to avoid
this kind of problem.
Typically, if you use more than one unit in a script, you should place
them all at the end of the script, and execute them only through Go To
branches with bookmarks. The event just before the first of these units
can be the Go To that keeps script execution from “falling through” to
execute the unit. Another option is to use sub-scripts.
Using a conditional Go To
A conditional Go To, created by defining a special event that contains
both a Show If and a Go To, is often useful.
109
3: Branching and using variables
Using sub-scripts
When the script reaches this event, it evaluates the Show If condition,
and if it is true, moves execution to the point specified by the Go To.
However, if your intent is only to conditionally branch around some
events you do not want to execute, a better solution is to group those
events, and apply the Show If to the group.
Using sub-scripts
The ability to use sub-scripts—scripts that are run from within other
scripts—adds much flexibility to ICDesigner. Although there is nothing that you can do in ICDesigner that requires a sub-script, there are
various situations in which subdividing a script can be worthwhile.
Primarily, breaking a large script into sub-scripts is helpful in the same
way that breaking any large task or object into smaller sections is.
Working with smaller pieces makes each piece more manageable, and
allows you to work on one area of the script without affecting others.
In particular:
•
Parts of the script are loaded only when needed, reducing initial
start-up time and overall memory usage.
•
Testing and development time is reduced because the complete
script does not have to be edited and run each time it is tested.
•
It is easier and safer to distribute work on a large script project
among different people as separate pieces.
•
Sub-scripts reduce the need for Go To/Return to Bookmark structures in the main script, which can be difficult to keep track of as
projects grow larger.
Variables in sub-scripts
By default, variables that you create in ICDesigner are “local”—specific to the scripts within which they are used. For example, the value
of a COUNT variable in a parent script is normally independent of that
of a COUNT variable in any sub-script it might have. This makes it
possible to use standard variable names like COUNT or LOOPS for
110
3: Branching and using variables
Using sub-scripts
indexing and other utility purposes in various scripts, without worrying about their values interfering with one another.
However, often it is useful to be able to communicate variable values
between scripts and sub-scripts. Doing so is the purpose of the External? option available when you create a variable. The value of an external variable is “global”—available not just within the script in which it
was created, but in any parent script (one above it in the script structure) as well.
For example, a sub-script that calculates a score could then pass the
score value to a parent script that displayed the score, using a SCORE
variable declared as external.
To use variables this way requires planning. You must keep track of
which variables are external and which are not.
When multi-leveled scripts that use variables extensively do not work
as expected, often the reason is related to variable values not being
passed when they should be (because a variable was not made external), or variables unexpectedly affecting one another (because a variable used in several places was made external).
Being sure to initialize all your variables with a starting or default value
eliminates many potential problems.
Exiting a sub-script
If you use sub-scripts, the physical end of the script is not likely to be
where the script finishes. For this reason, you need to be able to define
a point other than the last event in the script as the end. You can do
this by inserting a Go To with the action Exit from Script. When the
script reaches a Action: Exit from Script, the sub-script ends.
111
4: Scheduling InfoChannel Designer 3 events
Scheduling is a key element of many Scala InfoChannel Designer 3
distributed productions, and ICDesigner’s scheduling abilities distinguish it from most other multimedia products. Scheduling lets you
communicate timely information, freeing you to leave Players unattended even when displayed information must change from day to
day.
With ICDesigner, you can schedule events to be run according to various criteria:
•
at regular intervals—hourly, daily, or weekly
•
continuously between two given times or dates
•
once, at a specific date and time
For example, you might need an event to be repeated between two and
four o’clock in the afternoon, only on Fridays, during January. This
kind of scheduling is useful when promoting special events and prevents the display of outdated information. Scheduling a page in your
script to appear only once at a specific time can be used, for example,
to start CD audio automatically at a certain time.
This chapter discusses scheduling in general and focuses on using the
Schedule menu. Before we look at that menu in detail, we first discuss
the ICDesigner approach to scheduling.
Scheduling and the Scala InfoChannel Player
ICDesigner lets you communicate continuously. InfoChannel Players
are set up to run ICDesigner non-stop, 24 hours a day if the hardware
is left on. This capability is what makes scheduling so useful and so
important.
You configure the InfoChannel Player to run a particular script. That
script, the Main Script, runs continuously. Recall that all ICDesigner
scripts automatically loop by default, starting over at page one after the
114
4: Scheduling InfoChannel Designer 3 events
Scheduling and the Scala InfoChannel Player
last page is reached. Thus, the simplest ICDesigner production is a
script that repeats itself in the same way, day after day.
For example, if an ICDesigner script you create consists of only three
pages without scheduling or other advanced features, the Player runs
page one, then page two, then page three, then page one, then page
two, and so on, ad infinitum.
Page one
Page two
Page three
Productions involving scheduling, however, display different information at different times, or on different days. The Player for these productions still runs a single script containing all events. The script still
automatically loops. What is different is that not every event is run on
every pass through the script. Some events in the script are skipped
over because they do not fall within the scheduled valid ranges.
115
4: Scheduling InfoChannel Designer 3 events
Scheduling and the Scala InfoChannel Player
By default, an event has no schedule. If you do not schedule a script
event, it runs every time that script execution reaches it. When a
schedule is set for an event, that event is not run except as scheduled.
Is this event
scheduled?
No
Yes
Is this a
scheduled time for
this event to run?
Yes
Run the event
No
What can be scheduled?
You use the Schedule menu for all of the following (although some
have limited scheduling options, as explained in the next section,
“Types of scheduling”):
•
a screen page, consisting of a background and all its elements
•
individual elements on a screen page such as text, clips and sounds
•
a special event, which is an event not related directly to the screen
display, such as a timing event or a command to an external device
like a CD player
•
a group, a collection of pages that you can treat as a unit
•
a sub-script, another script that is run from within the current
script
Scheduling works essentially the same with screen pages, special
events, elements, sub-scripts, and groups. We use the term events to
apply to all types of things you can schedule. Some types of scheduling
don’t apply to elements, however. Where a distinction is important,
116
4: Scheduling InfoChannel Designer 3 events
Types of scheduling
we use the term page the same way that it is used in the Main menu—
to apply to any page, be it a screen page, special event page, group or
sub-script.
Types of scheduling
There are two types of scheduling in ICDesigner: periodic and interrupt. Each has its particular uses, depending on what your production
needs are. Periodic scheduling can be applied to any script event.
Interrupt scheduling can be applied to any kind of page (including
special event pages, groups and sub-scripts), but not to elements on a
page, and not to pages within groups.
Periodic scheduling
Periodic scheduling creates “windows” of time, which you define as
the valid time periods. It uses four successively more specific levels that
you may use to define a valid time period:
•
Valid Range – the overall schedule time period
•
Valid Weeks – whole weeks by week number
•
Valid Days – days of the week
•
Valid Time of Day – the single-day level
Enabling or disabling an event for the period
Given a time period that you have defined as valid, you can specify
one of two possible results for a periodic schedule entry: you can either
enable or disable the event for that period.
In other words, the valid period can operate “positively”, to specify
when the event can run, or “negatively”, to specify when it cannot run.
Although it is ultimately possible to accomplish the same result with
positive scheduling alone, in certain kinds of scheduling situations it is
much simpler to use the negative approach.
Most descriptions of periodic scheduling in this manual assume that
you are using the positive, periodic/enabled approach.
117
4: Scheduling InfoChannel Designer 3 events
Types of scheduling
As ICDesigner runs a script and reaches an event that has a periodic
schedule setting, it checks to see whether the current date and time is
within the valid period defined by the schedule. If it is, then:
•
a periodic/enabled event runs (it cannot run outside the valid
period)
•
a periodic/disabled event is skipped (it can run at any time outside
the valid period)
In short, the periodic/disabled type of schedule exactly inverts the
sense of the valid period.
Periodic schedule indeterminacy
It is important to emphasize that periodic scheduling does not cause
events to run at a certain time, or guarantee that an event will run during any given scheduled period. It simply allows the event to run if, in
the normal pace and sequence of the script’s execution, the event is
reached during a period for which it is enabled.
In short, periodic scheduling specifies when something can happen,
not necessarily when (or even if!) it will happen. Specifying a definite
execution time for an event is what interrupt scheduling (described in
the next section) is for.
The following diagram graphically illustrates how three levels of periodic scheduling (for simplicity, omitting consideration of the Valid
Weeks level) work together to “filter” the possible execution times of a
script event. The example schedule has an overall Valid Range setting
of one week, with Monday, Wednesday, and Friday selected in Valid
118
4: Scheduling InfoChannel Designer 3 events
Types of scheduling
Days, and periodic/enabled daily in and out times of noon and midnight:
Valid Range
(one week)
Valid Days
(Mon, Wed, Fri)
possible event times
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Valid Time of Day
(enabled, noon – midnight)
script execution
ranges during script when this
scheduled event CAN run
Interrupt scheduling
The Valid Range, Valid Weeks, and Valid Days levels of scheduling are
active and work for interrupt scheduling just as they do for periodic
scheduling. However, in contrast to periodic scheduling, at the daily
level interrupt scheduling is definite. When the scheduled time arrives,
ICDesigner interrupts whatever else is happening in order to run the
page that is interrupt-scheduled for that time.
Valid Range
(one week)
Valid Days
(Mon, Wed, Fri)
possible event times
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Exact Time of Day
(at noon)
times during script when this
scheduled event WILL run
script execution
During normal running of a script, ICDesigner skips over interruptscheduled pages. After running an interrupt-scheduled page, ICDesigner continues by running the next page in the script after the interrupt-scheduled page. It does not automatically return to the
interrupted page—however, there is an option to set a bookmark to
allow resuming playback from the point of interrupt.
119
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
For periodic-scheduled events, the location of the event in the script
dictates when the event may run. For interrupt-scheduled pages, the
location of the page in the script is irrelevant to when the event will
run. It does, however, dictate what page will run next after the interrupt-scheduled page, if the bookmarking feature is not used.
Factors affecting scheduling
Many of the important issues in scheduling are related to issues in timing, so you should be familiar with chapter 11 of the “Basic Authoring”
guide, “Advancing the script automatically”. In particular, you must
keep in mind that the timing of events is relative. Neither type of
scheduling adjusts pause lengths, wipe speeds, or other factors that
control a production’s pacing, in order to cause something to happen
at or by a certain time. You must adjust these factors carefully yourself
to ensure that events can occur as scheduled.
To make the best use of scheduling in a complex production, you will
sometimes need to utilize grouping and/or sub-scripts. You may wish
to review chapter 2 of the “Basic Authoring” guide, “Working in the
Main menu”, where these topics are introduced. You should be aware
that the use of groups and/or sub-scripts has special considerations (for
details, see the chapter just mentioned and the section “Scheduling
with groups and sub-scripts”, later in this chapter).
Particularly when using interrupt scheduling, you might want to take
advantage of branching, explained in chapter 3, “Branching and using
variables”.
The explanations and examples included in this chapter should help to
clarify the ways in which the different types of scheduling work, and
how to choose which to use in your scripts.
Working in the Schedule menu
You schedule events in the ICDesigner Schedule menu. Click a page’s
button in the Schedule column in the Main menu to schedule a page,
120
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
or click an element’s Schedule column button in the Design List menu
to schedule an element. In either case, you see the Schedule menu:
current date and time reference
four levels of scheduling
As with other menus in ICDesigner, you can select several events at
once before clicking in the column to edit them all at the same time.
Doing so can be hazardous, however, due to the numerous schedule
parameters, and the fact that each event’s schedule can consist of multiple entries (see the next section).
You use the Schedule menu to specify schedule entries in the schedule
for the event. Each entry consists of a collection of time-related information that identifies when the scheduled event can or will play.
The entry information controls are grouped in four sections, corresponding to successively more specific levels of scheduling:
•
Valid Range – the controls in this section establish the overall
date/time range within which the event can play, and outside of
which it cannot play
•
Valid Weeks – the controls in this section make it possible to
schedule events through the year on the basis of week numbers
•
Valid Days – the controls in this section operate on the level of
individual weeks, and let you permit the event to play only on certain days of the week
•
Valid Time of Day/Exact Time of Day – the controls in this section
operate on the level of the individual days that are valid as defined
121
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
by the other controls, and establish whether the schedule entry is
of the periodic or interrupt type
Other buttons in the Schedule menu let you add, view, and remove
entries.
Schedule entries
The schedule for a script event can contain more than one entry. You
might, for example, want the same page to be run only during an hour
in the morning and another hour in the afternoon. Each hour would
be one entry in the schedule for that page.
When you open the Schedule menu, you start at entry 1. Once you
have edited it to your satisfaction, you can add further entries for that
event if necessary.
왘
To add another entry for the event, click the Add Entry button.
왘
To edit or review other entries in the schedule for a page once you
have more than one entry, use the Entry Number value control to
move to the different entries.
왘
To delete a single schedule entry (the current one), click the
Remove Entry button.
왘
To delete all the entries in the schedule for that event, click the
Remove All button.
With either Remove button, you see a confirmation dialog.
122
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
You can edit the schedule for only a single event at a time. To edit the
schedule for another event, select the event you wish
to edit.
Caution!
Nothing prevents you
from creating pointless
multiple-entry schedules
that cause an event to
always or never run, or
that make interruptscheduled events interrupt each other. You must
keep track of the cumulative effect of the entries.
You can multi-select several events, setting a schedule
for all of them at the same time. Doing so is hazardous, however, if you are editing existing schedule settings and not all the events have identical schedules.
Editing an entry while multiple events are selected
gives that entry number the same settings in all those
events, regardless of what the individual events’ original settings for that entry number might have been.
To accept the changes you have made to the displayed schedule entry
and exit the Schedule menu, click Close. To discard changes and exit
the menu, click Cancel.
Combining entries
To create complex schedules for an event, you use multiple entries for
it. You can combine entries that use the different types of scheduling—periodic/enabled, periodic/disabled, and interrupt—freely.
When the periodic/enabled and periodic/disabled types are combined,
the valid period(s) created by the cumulative effect of all enabled
entries is determined first, then the disabled entries are used to “cut
holes” in the valid period.
Schedule information in the column button
A good way to help you keep track of whether your work in the Schedule menu is having the desired effect is to look in the Schedule column
for the event. Information about the entry is displayed in the column
button.
Of particular note is the information in parentheses, which is interpreted as follows:
•
(current) – the schedule includes the current moment; the event
could play immediately
•
(next: <date> <time>) – the date and time that the event will next
be able to play
123
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
•
(expired) – the scheduled period has passed; the existing schedule
allows no further playback
current date is past the
end of the valid range,
so schedule has expired
If you are scheduling something for future playback and you see
“(expired)”, it is an immediate indication that there is something
wrong. If you see “(next: ...)”, compare the date and time shown with
when you believe the next scheduled playback should be to help you
determine if your scheduling is accurate.
Make the Schedule column wide enough so that you can see these indications appear as you change the settings in the Schedule menu. When
the column button is blank, the event is not scheduled and can play at
any time.
Setting the overall schedule range
The first step in creating a schedule is to define the overall range
within which the event can possibly run, using the controls in the
Valid Range section of the Schedule menu.
124
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
When you turn on (✓) the From? and To? buttons, start date, start
time, end date and end time value controls become available. You can
adjust the date alone, or use the time value controls as well to specify
the beginning and ending points of the range more narrowly.
Defaults
In the Schedule menu, times are displayed in 24-hour hours:minutes:seconds format, and default start and end times are 00:00:00 and
23:59:59, respectively. Thus the default start time or In time is at the
beginning of the day (at midnight) and the default end time or Out
time is at the end of the day (one second before midnight). Dates
default to the current date.
This means that making an To setting without a From setting implies
a start date of now; setting a From date without an To date implies
that the schedule continues indefinitely. Setting neither a From date
nor a To date means that there is no date range within which the
schedule should be restricted.
Example 1: Ten days of promotional pricing
Suppose your script runs on displays in a chain of 24-hour gas stations. One of the pages in the production extols the virtues of a premium grade gasoline. In July 2002, you are told that you should get
ready to promote special promotional pricing on that page, for a sale
which is valid only from August 1, 2002 at 8 AM through August 10,
2002 at midnight.
왘
To create this:
1. Create a new element on the premium gasoline page, a clip that
wipes the price and expiration date onto the page.
2. Click the Schedule button for the clip to open the Schedule menu.
3. Set a start date of August 1, 2002, by clicking From? (✓), and then
adjusting its start date value control.
4. Set a start time of 08:00:00 by using the start time value control.
5. Set an end date of August 10, 2002 by clicking To? (✓) and then
adjusting its end date value control.
125
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
6. Because you want the promotion to run all day on the 10th, you
don’t have to specify an end time. You finish editing the scheduling by clicking Close.
After 8 AM on August 1, and until the end of August 10, every time
your script reaches the promotional pricing event, the clip wipes in on
the page. At any other time, it doesn’t run.
Once your new script is on the gas station Players, you won’t have to
do anything more to get the display of sale information started, or to
stop it. You won’t have to delete the scheduled element from the page
to keep it from appearing once the sale ends. You might choose to
delete it later to keep the script small, or you might choose to keep it
there in case you are asked to schedule it again.
Scheduling by week number
For applications that require scheduling on a week-to-week basis,
ICDesigner offers the Valid Weeks option, which lets you use week
numbers.
The Weeks: button has a default setting of All, so that week numbers
are not considered in establishing the valid period. To do weekly
scheduling, click the button.
When you click the Weeks: button, you open a dialog that lets you
choose the desired weeks graphically.
126
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
In the dialog are a series of buttons, one for each week of the year.
(The week numbering obeys the ISO standard, which uses whole
weeks, Week 1 being defined as the week that includes January 4.)
왘
Click a button so that it is indented to select that week number.
왘
If it would be easier to select the weeks in which the event should
not run, do so and then click Invert to arrive at the selection of
those weeks you do want.
왘
Click All to select all weeks, or None to clear any selection you
have made and start again.
When you have finished selecting the week numbers you want in the
valid period, click Done to return to the Schedule menu.
The Weeks: button lists the selected weeks numerically, with ranges of
contiguous weeks shown as, for example, 17-32, and discontiguous
ranges and individual week numbers separated by commas.
Keep in mind that the Valid Weeks setting is beneath the Valid Range
setting, if any, in the scheduling hierarchy. This means that although
you can choose any weeks of the year, weeks or parts of weeks that are
outside the Valid Range setting are not in the schedule.
Example 2: Local and national promotion
Let’s say you run a network of plasma panel signs that are set up to
advertise store specials in a chain of supermarkets. Among the products in constant ad rotation are soft drinks. The supermarket chain has
an ongoing contract to advertise various weekly specials for one
national soft drink manufacturer throughout the year. But the store
also on certain weeks promotes its own store brands, during which the
national brand ads should be temporarily stopped.
왘
To easily create complementary schedules for your national and
local soft drink special pages:
1. Click in the Schedule column of the local brand special page to
open the Schedule menu.
127
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
2. Ctrl-click on the national brand special page in the Main menu so
that it is also selected for scheduling.
3. Click the Weeks: button to open the Select Weeks dialog.
4. In the dialog, click the first two week numbers of each quarter, the
weeks that the local brand is promoted. (Both pages get this
schedule.)
5. Click Done to exit the Weeks dialog.
6. Ctrl-click on the local brand page in the Main menu to deselect it.
7. Click the Weeks: button to open the dialog again. You see the
weeks schedule you just set for the national brand page.
8. Click Invert to deselect all the weeks that the local page runs, and
select all the others.
9. Click Done, then Close to exit the Schedule menu.
Now the two pages cover all the weeks of the year, with no overlap.
Setting valid days of the week
In the Valid Days section of the Schedule menu are buttons that may
be used to limit the days of the week that an event runs.
The Days: pop-up has two possible settings: All and Selected Only. The
default is All, so the individual day buttons are disabled. To enable
them, choose Days: Selected Only.
Initially, none of them is selected. If you select a weekday button, you
allow the event to run on that day of the week within the overall valid
range. You can select any combination of days during the week.
selected buttons limit the
schedule to those days
of the week
the Days: Selected Only setting for an event that runs only on weekdays
128
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
Example 3: Today’s menu
Suppose you are creating a script to run on a hotel information channel. You might want to promote the hotel restaurant’s dinner specials.
If there is a special for each day of the week that stays the same week
after week, you can set this up easily using the Valid Days controls:
왘
To create the schedule:
1. Prepare a page for each day, all bearing the text “Today’s Menu”.
(You could even create a page for each course, and group the pages
into menus for each day of the week. Remember, a group is
scheduled like any other page.)
2. After creating the pages, open the Schedule menu for the Sunday
page.
3. Switch the Days: pop-up to Selected Only.
4. Click the Sun? button so that it is selected (✓).
5. Click the Monday page’ in the Main menu to select that page,
then select its day button in the Schedule menu.
6. Continue for the remaining pages, selecting the page, then turning on the appropriate day button.
7. Click Close to exit the Schedule menu.
Each page runs only on the selected day, with the pages for unselected
days being skipped.
Later, your chef might decide that seven menus is too many and that
he won’t be cooking duck on Thursdays anymore. Instead, he will
serve the same thing on Tuesdays and Thursdays.
왘
To re-schedule:
1. Open the Schedule menu for Tuesday’s page.
2. Click on the Thu? button to add Thursday to the page’s schedule
(so that both the Tue? and the Thu? buttons are selected).
3. Delete Thursday’s menu page.
129
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
Periodic scheduling: setting a daily range
To specify a limited time range within each valid day that an event
may play back, you use the controls in the Valid Time of Day section.
Set the Event: pop-up to Is Enabled within Valid Period. With periodic
scheduling selected, you see the Daily In Time and Daily Out Time
value controls in the Valid Time of Day section of the Schedule menu.
Adjust the Daily In Time and Daily Out Time values to specify the
times of day to begin and end allowing the event to play back. These
daily times apply to every day that is permitted by the Valid Range,
Valid Weeks, and Valid Days settings. If the Out time occurs after the
event has already started, the event completes; it is not cut off.
Keep in mind that if your script is long and the period defined by the
In/Out times is short, your event could be skipped altogether—the
running script might not happen to reach the event during the specified time. With a short script, your event may run many times within
the period. With periodic scheduling, there is no way of specifying
how many times an event is to run within the time “window” specified
by the schedule.
Example 4: The lunch page
For this example, suppose your ICDesigner production is an internal
corporate information channel. You notice the performance of too
many employees sagging during afternoons when they’ve skipped
lunch.
왘
To add a humorous noon-hour reminder that it’s time to get out
of the office for a few minutes and get something to eat:
1. Create a new page with a lunch reminder.
2. Open the Schedule menu for the lunch page.
You want this page to appear every day, so you do not need to
make any changes in the Valid Range or Valid Days sections.
Event: Is Enabled within Valid Period is the default schedule type,
so the Daily In and Out Time controls are already visible.
130
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
3. Adjust the Daily In Time control to set the start of the enabled
period to 12:00:00.
4. Adjust the Daily Out Time time control to set the end of the
enabled period to 13:00:00.
5. Click Close to exit the menu.
Now, whenever the script gets to your page during the noon hour, it
runs. During the rest of the day, the lunch page is skipped.
Interrupt scheduling: setting an exact playback time
When using interrupt scheduling, the Valid Range, Valid Weeks, and
Valid Days controls function in the same way as they do with periodic
scheduling. Switching to interrupt scheduling only changes the controls available on the daily level.
Remember that elements on a page cannot be interrupt-scheduled.
Interrupt scheduling is available only for pages.
To interrupt-schedule a page, change the Event: pop-up to Interrupts
Exactly. The Valid Time of Day section becomes Exact Time of Day.
The At Time value control in this section indicates the first (or only)
time you wish the page to run.
You see three new controls, Repeat?, Every, and Until, for interrupt
scheduling. The Every and Until controls are disabled unless Repeat? is
on.
available with
Repeat? selected
Repeating an interrupt-scheduled event
Without using any other controls, an interrupt-scheduled page runs
once per day at the time specified by At Time. You might prefer to
repeat the page—once every hour, for example. To do so, turn on
Repeat? (✓). This enables the Every and Until value controls, so you
can adjust the frequency and extent of repetition.
131
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
Specify the repeat time interval with the Every value control, in hours,
minutes, and seconds. The interval is measured from the time the page
last began. (Leaving the default setting of 00:00:00 results in no
repeats taking place, even if Repeat? is on.)
Use the Until value control to set a time to stop repeating the page.
Leaving the default time of 23:59:59 allows the page to repeat for the
rest of the day. As long as the repeated page begins before this time, it
will run to completion—if the Until time occurs while the page is running, it is not cut short.
Remember, when an interrupt-scheduled page’s At time comes, it
interrupts whatever the script is doing at that moment. It does not
wait for any event that might be running at the time to finish—it will
interrupt in the middle of an element wipe just as readily as in the
middle of a page pause.
Leaving a bookmark
An interrupt-scheduled page disrupts the normal script flow, effectively acting as a branch to that page. Without your taking any further
action, script execution would continue with the pages that physically
follow the scheduled page in the script.
Typically, however, this is not what you want. It is more likely that
you want to resume the script from the point of interruption, so that
the interrupt-scheduled page works as a temporary “detour” rather
than a branch. This is made possible by the Leave Bookmark? option.
This option appears, and is enabled by default, when Event: Interrupts
Exactly is chosen.
When Leave Bookmark? is on (✓), a bookmark is left at the point of
interruption. A Goto: Return to Bookmark branch, applied to the interrupt-scheduled page, causes script execution to return to the interrupted page and begin playing it from the beginning. This is
illustrated in the following example.
Example 5: The $1,000 prize
To reward your loyal viewers, you might have a prize giveaway on
your cable TV channel. When a special message is displayed, the first
viewer to call in wins. Design a page for your script giving the details.
132
4: Scheduling InfoChannel Designer 3 events
Working in the Schedule menu
왘
To display the message at an exact date and time:
1. Open the Schedule menu for the prize information page.
2. Click From? (✓) and set the start date value control to the chosen
date.
3. Click To? (✓) and set the end date value control to the same date.
4. Switch the Event: pop-up to Interrupts Exactly.
5. Set the At Time value control to the chosen time.
Leave Bookmark? is on by default, but you need to explicitly create
a Go To branch.
6. With the prize page still selected, click its button in the Branch
column to open the Branch menu.
7. On the Go To panel of the Branch menu, choose Return to Bookmark from the Action: pop-up.
8. Click Close in the Branch menu.
Your page will be displayed only once, on the date and at the time you
specified, and it will interrupt whatever the TV channel script was
doing at exactly that time. When the page finishes, the script will
return to the interrupted page.
If you do not intend to return to the interrupted page, you should
turn off the Leave Bookmark? option.
Viewing a summary of schedules
The Schedule menu offers a way to look at the schedule entries in a
summary view. Click View Schedules to see a listing of schedule entries,
identified by page/element name. The View All Entries In: pop-up lets
you choose whether to see the entries for just the selected event(s), or
for all events in the script.
133
4: Scheduling InfoChannel Designer 3 events
Scheduling with more complex scripts
If your script uses scheduling extensively, this is a way to quickly
review and compare entries, to verify them and help spot possible conflicts.
This illustration shows both a periodic/enabled and a periodic/disabled entry, with all the basic schedule information.
Click the Copy to Clipboard button to copy the entire listing to the
Windows clipboard in plain text format. By pasting into a text editor,
database, or other application, event scheduling can be reviewed conveniently outside of ICDesigner.
When you have finished reviewing the schedule entries, click Close to
return to the Schedule menu.
Scheduling with more complex scripts
If your scripts use groups or sub-scripts, you should be aware of the
possible effects on the execution of scheduled events.
Interrupt scheduling with groups and sub-scripts
Interrupt-scheduled pages cannot be grouped or moved inside a
group, so grouping is not a factor in their execution.
Interrupt-scheduled pages in a sub-script, however, execute at their
scheduled time only if the sub-script is currently running. While the
main script is running, ICDesigner does not “see” the scheduled
134
4: Scheduling InfoChannel Designer 3 events
How not to schedule
events in its sub-scripts, and does not jump into the sub-script from
the main script to run an interrupt-scheduled page.
If the start time of an interrupt-scheduled page in the main script
occurs while a sub-script or grouped page is running, ICDesigner does
return to the top level of the main script to run the interrupt-scheduled page.
In any case, after an interrupt-scheduled page runs, the script continues with the page that immediately follows the interrupt-scheduled
page in the main script. Using a Return to Bookmark branch in a subscript always returns to the beginning of the subscript, not to a specific
page.
Periodic scheduling with groups and sub-scripts
Periodic-scheduled events also may not execute according to schedule
when groups or sub-scripts are involved. A periodic event runs only
when it is actually reached during normal flow of the script. Thus, as
the script steps through all events, including those in groups and subscripts, if it reaches the periodic-scheduled event within a “window” of
time specified by the event’s schedule, the event runs.
But if a sub-script or group uses branching to create a loop such that
the main script is never returned to, periodic-scheduled events in the
main script never run, just as non-scheduled events in the main script
won’t run.
How not to schedule
While the scheduling features of ICDesigner are very powerful, they
are not without limitation, and require careful attention to acheive the
desired results.
왘
Here is a summary of scheduling pitfalls to avoid:
•
Too-short valid periods with a long script
If your script is long and the scheduled valid periods are few
and/or short, scheduled event will not be played regularly, because
135
4: Scheduling InfoChannel Designer 3 events
How not to schedule
script execution will seldom happen to reach the scheduled events
during a valid period.
•
Periodic-scheduled events that are never reached
Periodic scheduling does not cause events to run, it allows them to
run if they are reached. So a scheduled event running depends on
script execution regularly reaching it. A periodic-scheduled event
that is never reached—for example, because of its location in the
script relative to a branch, looping group, or non-exiting subscript—can never run.
•
Conflicts at different levels of scheduling
Careless scheduling can lead to events being scheduled never to
happen. For example, scheduling a page to run only on Monday,
Wednesday, and Friday, and scheduling certain clips on that page
to run only on Tuesday and Thursday will result in those clips
never being seen. The same holds true when you schedule a group
and then individually schedule pages within the group. Scheduling of events on lower levels needs to be within the “window” provided by the levels above them, or they never get to run.
•
Interrupt-scheduling everything
In ICDesigner, events take a variable amount of time, depending
on hardware and other considerations (see chapter 11 of the “Basic
Authoring” guide, page 332, “Factors that affect timing”). Thus you
cannot reasonably set a schedule in ICDesigner that determines
exactly what is going to be displayed at each minute of the day. As
a general rule, interrupt scheduling should be the exception, used
for those pages that really must run at a particular time.
•
Interrupt-scheduled pages too close together
Generally, pages that are important enough to be interrupt-scheduled are important enough that you do not want them to be interrupted themselves. Interrupt-scheduled pages—and their Repeat
intervals, if they repeat—should be far enough apart (in terms of
script execution time) that you do not risk them interrupting one
another.
136
4: Scheduling InfoChannel Designer 3 events
How not to schedule
•
Leaving out a Return to Bookmark “go to” branch
Even if the Leave Bookmark? option was on for an interrupt-scheduled page, a Return to Bookmark branch is also required on that
page or a succeeding page to resume at the interrupted page.
137
5: Printing scripts with ScalaPrint
Scala InfoChannel Designer 3 gives you the ability to print out your
scripts. Using ScalaPrint, you can produce color or black and white
hard copies on paper or transparencies to enhance or accompany your
ICDesigner production, or simply to aid in your design process. You
may want to summarize your script, print certain pages of your script,
or you might need a permanent printed record of the entire script.
You might find a need for a cue card-type list of notes for a presenter
to follow while your script is being presented.
Using ScalaPrint, you can choose how much of your script to print,
whether it be the entire script or only selected pages, as well as lay out
the pages in different formats so you can use your printouts for different purposes. Whatever you choose, ScalaPrint provides you the ability to customize your script printouts to accommodate your particular
needs.
ScalaPrint produces printed output in a graphical format similar to the
way the Thumbnail view in the Main menu displays your scripts. You
can print all script pages on one sheet of paper, or each on its own
page—as well as every option in between. The ScalaPrint menu lets
you arrange the size, numbering, and arrangement of all the script’s
pages on the printed page, and direct that output to a specific printer
device.
Understanding ScalaPrint terminology
Slides
Using ICDesigner, you create scripts consisting of pages and groups of
pages. Within ScalaPrint, however, the individual script pages as they
appear when printed are called slides to distinguish them from the
physical pages that are printed out. Each script page you select from
the Main menu to print is condensed into a slide, much like a photographic slide, and placed on the page according to your layout selec-
140
5: Printing scripts with ScalaPrint
Understanding ScalaPrint terminology
tions. Then you select options to size, order, label, number, and frame
the slides to suit your needs.
Print job
In ScalaPrint, as in other applications, your intended output from the
printer device is referred to as a print job. A print job consists of the
slides for the selected script pages you intend to print, their size and
layout on the page, and how you order, label, and frame them. You
may select to print all script pages or just some of them. Depending
upon how you arrange the slides on the printed pages, you may end up
with a multiple-page print job, or a print job consisting of all slides on
one page.
Matrix
The script pages you select from the Main menu to print are formed
into slides, and the slides are arranged on pages depending upon the
matrix, or column and row arrangement of the slides.
You can choose to place each slide on its own page, or place perhaps 6
slides on a page, arranged in 2 columns of 3 rows. The matrix, in this
example, would be 2 × 3. Should you decide that you’d like to have
each slide print on its own page, the matrix you use is 1 × 1.
You cannot select different matrices for different pages in the same
print job. In order to have different slide arrangements on different
pages, you must configure a separate print job for each intended layout. (See “Different layouts for different pages” at the end of this chapter.)
141
5: Printing scripts with ScalaPrint
The ScalaPrint menu
The ScalaPrint menu
To open ScalaPrint, click the Print icon on the Main menu toolbar.
You see the ScalaPrint menu on the screen, divided into two main
areas: the page preview section and the ScalaPrint tabbed options.
page preview
options panels
The page preview section, located across the top of the screen, provides a graphical representation of how your script’s slides will be positioned on a sample printed page. You do not see your actual script
pages’ images or content on the screen; just gray boxes used to represent the size and position of each slide.
The tabbed options panels let you select the options that control the
layout of your slides on each page, as well as choose the destination
printer to generate the hard copy. As you change most layout options,
you see the page preview update to reflect your changes.
Remember, the slides are only a representation of the physical position
of your script pages; they are not a preview of what will actually print.
142
5: Printing scripts with ScalaPrint
ScalaPrint tabbed options
ScalaPrint tabbed options
Click one of the five tabs to see the available options on each panel.
You can choose from General, Layout, Labeling, Margins, and Printer.
General panel options
The General panel options deal with the overall arrangement of the
script pages you want to print.
Slides
The Slides: pop-up lets you choose whether to print slides for all script
pages, or only the slides corresponding to the script pages that you
have selected in the Main menu. Use the pop-up to switch between All
and Selected. If you have more than one script page selected in the
Main menu before you start ScalaPrint, the Slides: pop-up defaults to
Selected.
Pages
The Pages: pop-up lets you print all pages in the current print job, or
select a range of pages from the print job. Use the pop-up to switch
between All and Range. Choosing Range enables the Print Range control below.
Note that this control refers to pages of the print job, not script pages.
For example, if your script has twelve pages and your slide layout
places six slides on each printed page, the print job has three physical
pages, controlled by this option. Choosing Pages: All does not print all
script pages unless the Slides: All option has been selected.
Print Range
When you select Range from the Pages: pop-up, the Print Range value
control becomes active, allowing you to specify the beginning and
ending pages of a range you wish to print from the current print job.
Select the page number range using the value control. You can use the
arrows or enter the page range numbers manually.
Possible values for this control are from 1 to 999. The Print Range
value control is not limited to the actual number of pages in the current print job, so it is possible to set page numbers that are higher than
143
5: Printing scripts with ScalaPrint
ScalaPrint tabbed options
the maximum number of pages. If the starting page number is too
high, no pages are printed. Entering an ending page number greater
than the maximum number of pages is has the same effect as entering
the maximum number.
Copies
Use the Copies value control to set the number of copies of the current
print job you wish to print.
Include Background?
You have the option to exclude the background images from your
slides so that they will not be printed as part of the slide. Turning off
Include Background? excludes background images from all slides in the
current print job. Suppose, for example, that your slides contain text
overlying somewhat busy background graphic images, and you are
using ScalaPrint to generate transparencies. You want to emphasize
only the text, so you might choose to exclude the background images
from the slides. The Include Background? option is on by default.
Layout panel options
The Layout panel contains options that tailor the way that slides are
laid out on the pages of your print job.
Orientation
Choose the direction in which the slide’s contents are positioned on
the page with the Orientation: pop-up. You can select either Portrait,
in which the page height is longer than its width, and columns are
positioned across the narrower dimension of the page; or Landscape, in
which the page width is longer than its height, and columns are positioned across the widest dimension of the page.
144
5: Printing scripts with ScalaPrint
ScalaPrint tabbed options
Matrix
You can specify the number of slides that will appear on a page as well
as how they are arranged in columns and rows by using the Matrix
value control. The first value represents the number of columns of
slides, and the second value represents the number of rows of slides.
You can have as few as 1 slide per page (a matrix value of 1 × 1) to as
many as 100 slides per page (a matrix value of 10 × 10). Obviously, as
matrix values increase, the number of slides on a page increases and
there is less room to display each slide. ScalaPrint reduces the size of all
slides equally, maintaining their original aspect ratios. As you adjust
the matrix values, the page preview slides change correspondingly.
To change the Matrix value, use the value control. You can use the
arrows or enter the numbers manually.
Slide Order
Placing multiple rows and/or columns of slides on a page requires that
you decide how to order them. Using the Slide Order: pop-up, you can
specify whether the slides’ order is Across, filling each row to progress
to the bottom of the page, or Down, filling each column to progress to
the right side of the page. The default order is Across.
Scale
Sometimes when printing a script you need more white space around
your slides, whether it be for notes, framing, titles or labels, or just for
aesthetic reasons. Using the Scale option, you can scale down or reduce
slides to a percentage of their maximum size. Keep in mind that the
maximum slide image sizes are initially determined by the number of
slides you choose to place upon each page with the Matrix control.
Scaling does not increase the number of slides on a page; it merely
reduces each slide’s image size. You cannot scale up, or enlarge a slide
to greater than 100% of its maximum size.
Row Alignment
Just like you justify or align text, you can align slides. However, with
ScalaPrint, you are actually aligning the slides within the boundaries of
their individual matrix areas.
145
5: Printing scripts with ScalaPrint
ScalaPrint tabbed options
Row Alignment: allows you to align the rows of slides vertically on the
page. Choose from among Center, Top, and Bottom alignments. Selecting Center aligns the slide row(s) at the centers of the matrix areas.
Selecting Top aligns the slide row(s) along the top edges of their matrix
areas. Selecting Bottom aligns the slide row(s) along the bottoms of
their matrix areas.
Aligning slides has a visual effect only if the slides have room to move
vertically within their matrix areas. If your slides do not move when
you change their alignment, use the Scale option to reduce their size.
Column Alignment
Column Alignment: allows you to align the column(s) of slides horizontally on the page. Choose from among Center, Left, and Right
alignments. Selecting Center aligns the slide row(s) along the centers of
the matrix areas. Selecting Left aligns the slide row(s) along the left
edges of their matrix areas. Selecting Right aligns the slide row(s) along
the right sides of their matrix areas. Note that further adjustments may
need to be made to the page’s margins using the Margins option tab,
discussed later in this chapter.
Aligning slides has a visual effect only if the slides have room to move
horizontally within their matrix areas. If your slides do not move when
you have justified them, use the Scale option to reduce their size.
146
5: Printing scripts with ScalaPrint
ScalaPrint tabbed options
Labeling panel options
ScalaPrint’s Labeling panel gives you a variety of options to control the
labeling of your slides on the printed pages.
title
slide name
slide number
frame
page number
Title?
The Title? option, which is on by default, places the name of your
script, without its file extension, at the top of each page of your print
job. With the Title? option turned on, you see a greeked representation of the title displayed at the top of the page preview. With the
Title? option turned off, the printed pages have no heading.
Page Number?
The Page Number? option enables or disables printing the print job’s
page number at the bottom of each page. The page number represents
the order of the pages as they are generated by the printer for this print
job, and does not necessarily correspond to the numbering of pages in
the script. With the Page Number? option on, you see a greeked representation of the page number displayed at the bottom of the page preview.
147
5: Printing scripts with ScalaPrint
ScalaPrint tabbed options
For example, suppose you select pages 1, 3, and 5 from the Main
menu, and set the matrix to 1 × 1 in ScalaPrint, so each slide prints on
one page. You have defined a print job of 3 pages. These pages, if you
turn on Page Number?, will be pages 1, 2, and 3 of the print job. The
print job’s page numbers do not correspond to the script’s page numbers.
Frames?
You can choose to have an beveled frame, much like a picture frame,
placed around your slides. If you turn the Frames? option on, a predefined frame is placed around each slide; if left off, which is the
default, the slide is displayed and printed with no border around it.
With the Frames? option on, you see thin lines representing the frames
outlining each slide in the page preview. ScalaPrint frames are the
same thickness regardless of slide size.
Slide Name?
Turn Slide Name? on to enable the name of a slide to print directly
underneath the slide image. The slide’s name corresponds to the
script’s assigned page name, including the extension if a file name is
used. With the Slide Name? option on, you see a greeked representation of the slide name displayed underneath and to the left of each
slide in the page preview. This option is off by default.
Slide Number?
Slide Number? enables or disables printing the slide’s script page number directly underneath the slide image. This number is the same as
the script’s page number.
If a slide is part of a group of pages in the Main menu, the slide number is printed as the Group number, followed by a dash (-), and then
the page number within the group. With the Slide Number? option on,
you see a greeked representation of the slide number displayed underneath and to the right of each slide in the page preview.
148
5: Printing scripts with ScalaPrint
ScalaPrint tabbed options
Margins panel options
You can adjust the margins of the printed page by using the Top, Left,
Bottom, and Right value controls on the Margins panel.
The units of measure indicated on the value controls are controlled by
the Margin Units: pop-up. Adjusting the margins is especially useful
when you need to leave room for binding your printout.
Printer devices have different minimum margin settings, and you may
find that a minimal margin you select is not supported by your
printer. If your images, text, or labels seem to be cut off near the page
edge, consult the printer manual to determine the printer’s minimum
supported margin.
Margin Units
Margins can be specified as either 16ths of an inch (English units) or
millimeters (metric units). Use the Margin Units: pop-up to switch
between English and metric. When you change between millimeters
and sixteenths, the individual margin values accurately convert from
metric to English and vice versa.
Printer panel options
The Printer options panel allows you to adjust physical printing
options, including allowing you to choose the print device itself.
149
5: Printing scripts with ScalaPrint
ScalaPrint tabbed options
Printer
Use the Printer: pop-up to choose from the list of available printers
your computer is set up to use. You can select only from those printers
configured in the Windows Printers folder. If the printer name you
want is not available from the pop-up, check your system’s printer settings. The default printer displayed in ScalaPrint matches your default
Windows printer.
Paper
Use the Paper: pop-up to choose a paper size for your print job. The
sizes listed are those that the currently selected printer accommodates.
Printer Properties
Clicking the Printer Properties button opens the Windows Printer
Properties dialog so you can select from among the other features the
selected printer driver offers.
Other than to select printer device, paper size, number of copies and
paper orientation, you must use the external Windows Printer Properties dialog to change the current printer’s features.
150
5: Printing scripts with ScalaPrint
Different layouts for different pages
For these printer settings that you can also make directly in ScalaPrint,
the corresponding settings in the Printer Properties sheet reflect whatever choices you have already made. Similarly, changes you make in
Printer Properties are reflected in ScalaPrint when you click OK and
return.
Reset Settings
Clicking Reset Settings changes all of ScalaPrint’s settings back to their
defaults, causing whatever selections you have made to be discarded.
Print!
When you have made all your choices for your print job’s content, layout, and destination, you are ready to print. Click the Print! button to
send the currently configured print job to the printer you have
selected.
Close
Selecting Close exits ScalaPrint and returns you to the Main menu. All
General, Layout, Labeling, Margins, and Printer settings are automatically saved when you close the ScalaPrint menu.
Different layouts for different pages
ScalaPrint supports only one matrix or layout for the entire print job.
If you want to select more than one matrix arrangement for different
pages, you must configure separate print jobs for each intended layout.
Say, for instance, that you want pages 1, 6, and 11 to print by themselves, each being the only slide on the page; yet you want pages 2-5
together on a page, and pages 7-10 together on a page. To accomplish
this, you must set up and print two separate print jobs. Select pages 1,
6, and 11 from the Main menu, set the Matrix pop-up to 1 × 1, and
then send the print job to the printer. Then select pages 2, 3, 4, 5, 7,
8, 9, and 10 from the Main menu, and set the Matrix pop-up to something which would allow 4 slides to print on a page, such as 2 × 2, or
1 × 4, or 4 × 1. Then send the second print job to the printer.
151
6: Publishing with InfoChannel Designer 3
Scala InfoChannel Designer 3 gives you the tools you need to create
dynamic multimedia productions to communicate your messages with
maximum impact. Once you have created an InfoChannel Designer
production, you will want as many people as possible to see it.
With ICDesigner you can publish your productions, or have them distributed so that your message is received by someone else.
The most powerful type of publishing offered in ICDesigner is publishing to InfoChannel Network. An InfoChannel Network consists of
a system of remote PCs running Scala InfoChannel Player software,
and controlled through the Scala InfoChannel Network Manager
application, both available separately.
Scala’s freely available Internet-enabled player technology, iplay, provides playback of ICDesigner’s script files that have been published to
CD-ROM or as a Web component or file. The Microsoft Internet
Explorer browser can play ICDesigner scripts directly in the browser
window if iplay is installed. Scripts can even be published as video files
or as simple Web pages, neither of which require Scala software to be
viewed.
In any case, your productions can be seen by anyone regardless of
whether or not that person has ICDesigner authoring software.
Multiple media publishing
ICDesigner allows you to publish to a variety of media. You can publish to an ordinary disk file, publish for transmission by e-mail, publish for CD-ROM mastering, or publish to the InfoChannel Network
for remote transmission. Whatever the publishing medium, the process is substantially the same, with different options depending on the
final destination of the published script.
The process of publishing a production with ICDesigner means preparing it for reproduction and distribution by collecting all the files
154
6: Publishing with InfoChannel Designer 3
Publishing features
that compose the production (including art, graphics, video, and
sound) and putting them together in a conveniently portable form.
Not all publish types, however, yield a script that is suited for further
editing. It is better to use Save As on the Main menu with the appropriate Advanced Save Options settings if you need to “package” a
script and still allow it to be editable.
ICDesigner also allows you to encrypt your scripts, which protects
them from being inspected or edited by people who do not have access
to the correct password. A password is not needed, however, simply to
run the production.
Publishing features
ICDesigner lets you make choices about what you want to include in
your published production. You set options in the Publish Script
menus, of which there is one for each publish medium.
This menu makes it easy for you to make various global settings
regarding the script’s final published form and destination. It also
addresses possible licensing and software setup issues. (Scala gives you
the right to reproduce and distribute the clip art that comes with it,
but your script might use content for which you must obtain other
licenses independently. See appendix B, “Licensing issues”, for more
information.)
When you click the Publish icon from the Main menu toolbar, you see
a drop-down list showing the possible publishing media:
•
InfoChannel Network – Publish to InfoChannel Network is for
customers who have an installation that also includes InfoChannel
Network Manager 3, Scala’s facility for transmitting and updating
scripts on systems of remote PCs running InfoChannel Player
software. Publishing to the network is the first step in the transmission process.
•
Web Component – Similar to Publish to File, but allows you to
upload the published script file directly to a Web server. This also
can create an example HTML page for immediate Web access to
155
6: Publishing with InfoChannel Designer 3
Publishing features
the published script. A knowledgeable Web author can cut and
paste the script with its Web-enabling HTML “wrapper” from
this page. Requires iplay for script playback.
•
Stand-alone CD – Creates a file set and folder structure that are
ready for burning as a CD-ROM image, containing the script as
an autorunning Windows application. When the script runs, iplay
is installed if necessary, then the script runs off the CD.
•
File – For sharing with recipients who already have iplay, this
packages the script for easy distribution, including the capability
to save the script with all associated media as a single file.
•
E-mail – Assuming your default e-mail program is SMAPI-compliant, opens it and prepares a new message ready to address and
send, with the published script as a single-file attachment.
Requires iplay for script playback.
•
HTML Slides – Creates a set of HTML pages that displays your
script as a series of static slides. This is useful as a quick and easy
way to share the basic design of a script. Because these pages are
standard HTML, they can be seen in any browser, on any Webenabled computer platform.
•
Video – Plays back the script, capturing the resulting display as a
standard form of computer video file, either an AVI or an
AnimGIF. This is an ideal way to share non-interactive scripts as
single files, using universally available playback software.
Choosing any of these media opens that version of the Publish Script
menu, the options on which vary depending on the medium you
choose. But for all the publish media, the menu is laid out and functions in essentially the same way.
Options column
The Options column on the left hand side of the menu contains a different set of options for each type of publish medium.
156
6: Publishing with InfoChannel Designer 3
Publishing to the InfoChannel Network
Script Information box
The Script Information box gives you information about the script that
you have chosen to publish, such as the approximate size in megabytes
of the script.
ICDesigner automatically scans your script and displays information
about it in the Script Information box. It also displays information
about data that is being processed, while it is being processed. Finally,
it tells you whether or not publishing was successful after you click the
Publish! button. If publishing was not successful, you see an error message telling you why it failed.
After you have chosen all your publishing options and click the Publish! button, the published production is saved. The script currently
showing in the Main menu is the one published. None of the original
script’s files are affected by publishing.
Publishing to the InfoChannel Network
The Publish to InfoChannel Network menu is where you prepare a
script for distribution to a network of remote Player machines on an
InfoChannel Network. The publishing process collects all the script’s
constituent files and arranges them in a structure that is appropriate
for efficient and reliable transmission.
The published script is deposited in a Publish Location, a folder
defined in and accessible to InfoChannel Network Manager, Scala’s
companion software for administration of InfoChannel Networks.
Script Name
Enter a name for the published script (.SCB is appended). This does
not need to match the name under which it has been saved (as a .SCA
file) in ICDesigner.
Upload to
Use the Upload to: pop-up to pick one of two possible settings, Disk or
FTP. These give you the option of either saving the script and its
157
6: Publishing with InfoChannel Designer 3
Publishing to the InfoChannel Network
related files to a Publish Location on a local disk, or uploading it via
FTP to a remote Publish Location. There are additional options that
vary depending on which upload setting you choose.
You would upload to disk if your Publish Location happens to be on a
local disk or accessible through a LAN. If the Publish Location is offsite, you would use FTP. To use FTP, you must have an account with
an Internet Service Provider that offers FTP hosting, and know the
username, password, and FTP site and directory information.
Destination Folder (Upload to Disk only)
If you choose Upload to: Disk, the Destination Folder: button appears
below the pop-up. Click this button to open the File dialog, where
you can specify the folder into which the script-related files should be
published.
The folder does not need to exist already. Navigate to the folder
within which you would like to make the publish folder, click the New
Folder icon to create a folder, rename it, then open the new folder.
If you have previously published this script to this folder, any of the
previously published versions of this script are deleted before publishing is performed.
FTP Site (Upload to FTP only)
The FTP Site: text box appears below the pop-up when Upload to:
FTP is chosen. Use this to enter the name of the FTP upload site to
which the script files should be sent. For example:
ftp://127.0.0.10/ or ftp://PublishServer.com
FTP Directory (Upload to FTP only)
In the FTP Directory: text box, you enter the path to the directory on
the FTP server into which the uploaded files should be deposited. For
example:
NetMgr/PubContent
Note that you should use forward slashes to separate directory levels in
the path.
158
6: Publishing with InfoChannel Designer 3
Publishing to the InfoChannel Network
Logon (Upload to FTP only)
To gain access to the FTP server to upload the published page, an FTP
logon is required. Enter the logon name (username) in the Logon: text
box.
Password (Upload to FTP only)
A password is also required to complete the logon to the FTP server.
Enter it in the Password: text box. Enter it carefully; the characters you
type appear as asterisks (*), so you will not be able to see them.
Advanced FTP (Upload to FTP only)
The Advanced FTP button opens the Advanced FTP Options dialog.
Rarely, an ISP’s FTP server setup might require you to change the
defaults in the Advanced FTP Options dialog. These options allow
you to compensate for non-standard FTP servers. Your InfoChannel
Network administrator will be able to tell you whether you need to
turn on Passive FTP or use a special Port Number setting.
Advanced Options
Advanced Options opens a dialog that allows you to specify whether to
include wipe files and font files with the published script. When these
options are on, messages appear in the Script Information box reminding you.
Include Fonts?
Turn on (✓) Include Fonts? when your production uses fonts that
might not be installed on the Player machine. Turning Include Fonts?
on ensures that they be included with the script files. Scala bitmap
fonts are placed in a Fonts directory; TrueType fonts, if their distribution is permitted, are provided as embedded binary data. If a TrueType font is internally defined as non-redistributable, ICDesigner
cannot include it. The viewer must acquire that font independently
before the production can be played.
Important: You must be sure to check on the licensing requirements
for the fonts that you include. ICDesigner bitmap fonts are freely
redistributable for any purpose and have no licensing requirements.
The TrueType fonts included with Scala ICDesigner are freely redis159
6: Publishing with InfoChannel Designer 3
Publishing to the InfoChannel Network
tributable for any production you create, but only for non-commercial
purposes. TrueType fonts that you acquire from other sources have
licensing restrictions that vary from manufacturer to manufacturer,
and it is your responsibility to comply with the requirements for each.
See appendix B, “Licensing issues”, for a more complete discussion of
licensing requirements.
Include Wipes?
Include Wipes? should be turned on (✓) when your production
includes ICDesigner wipes that you want to make sure perform on the
Player. Alpha wipes, for example, use special image files to generate
their reveal patterns. When this option is on, the wipe files used in
your production are included with the other script files. If this option
is not included, wipes become simple Cut wipes on a Player that does
not already have the necessary wipe files.
Copy to Linked Content Folder?
Turning on the Copy to Linked Content Folder? option causes a duplicate copy of the published script to be placed in the Linked Content
folder. Use this option when you want to load the script into another
script in ICDesigner as a sub-script, but have the sub-script later published as a link, so that it can be independently updated like any other
linked content file. (Normally, sub-scripts are included with their
Main Scripts when published to the InfoChannel Network, and so
cannot be independently updated.)
When you publish a copy of a script to the Linked Content folder, you
see a <scriptname>.SCB file in the folder. This file is not the actual
script file—it has a 0 byte file size—however it can be opened just like
an unpublished .SCA script file. In the Linked Content folder is also a
subfolder named <scriptname>_scbfiles, which contains the actual
script and its content files. You cannot open this folder from the File
dialog, and do not need to. The naming and structure of the contents
of this subfolder are esoteric and should not be disturbed.
160
6: Publishing with InfoChannel Designer 3
Publishing to the InfoChannel Network
Publishing scripts with linked content
Scripts that use linked content—files chosen from the Linked Content
folder—are treated differently in publishing to the InfoChannel Network than other scripts. Unlike other content files, linked content files
are not included and stored along with the script when it is published.
Only references to the content file name are included in the script. The
actual content files to be used in playback on InfoChannel Players are
assumed to be present on the Players, having been sent there separately.
However, since the linked files are not published with their script, they
are not guaranteed to be on the Players. If the linked files are in fact
not on the Players at the time the script referencing them plays back,
playback will not be correct.
Because of this risk, when you publish a script to the InfoChannel
Network, it is scanned for linked content references. If any are found,
you see a warning dialog that reminds you of the nature of linked content and lists the files that need to be sent separately to the Players:
Linked content file
references in this script
161
6: Publishing with InfoChannel Designer 3
Publishing to CD-ROM
Publishing to CD-ROM
The Options column in the Publish Script to Stand-alone CD menu
contains settings specific to publishing for CD-ROM distribution.
A production published to a stand-alone CD plays back from the CD.
On the CD is included setup program that installs the iplay player
software as well as any required third party components.
Project Name
Project Name: is the name given to the published script and the folder
in which the script and other script files and folders are placed. The
.EXE file that starts playing the script also has this name.
The name can be anything you want, but illegal characters are stripped
from it, and any spaces in the name are replaced by underscores (_).
The extension .SCB, indicating a published ICDesigner script, is automatically added to the name you give.
162
6: Publishing with InfoChannel Designer 3
Publishing to CD-ROM
Publish to Folder
Publish to Folder: indicates where your publish folder will be. When
you publish, all the files used by a production are copied to the publish
folder. The default location is the folder where the script is saved, or to
the Scripts folder for an unsaved script.
Click the Publish to Folder: button to open the File dialog, where you
can choose a location. The location you choose must be within the
folder structure that will eventually be written to the CD-ROM master. After publishing, the folder you choose here contains the
README.TXT file for the script, an AUTORUN.INF file, and a
folder (with the name you gave in Project Name:) that contains all the
script folders and files.
If you have previously published this script to this folder, any of the
previously published contents related to this script are deleted before
publishing is performed. After publishing, the folder (with all of the
production’s files) can be mastered to a CD or compressed for distribution.
Startup Image
The startup window is the first thing you see when you run a published
script either by double-clicking its icon in My Computer, or choosing
it through the Start menu.
If you do not change the startup window image, you see the default
iplay startup screen shown above. To substitute your own image for
ICDesigner’s default, click on the Startup Image: button, then choose
the image file that you want to import. Click OK. When you run the
163
6: Publishing with InfoChannel Designer 3
Publishing to CD-ROM
published production, you see the imagery you chose as the startup
screen.
The image can be any size, color depth, and graphics format supported
by ICDesigner, but to ensure compatibility with the majority of
machines, we recommend you use an image that is approximately onequarter the size of a 640 × 480 VGA screen. If the image you choose is
smaller than the minimum of 240 × 120 pixels, it will be scaled to that
size. To have text on your startup screen, the text must be part of the
image itself.
AutoPlay?
The AutoPlay? option lets you create productions that install themselves and play automatically. If this option is on, when the viewer
inserts the CD into the CD-ROM drive and closes the CD-ROM
drive drawer, a setup program begins to run. The setup program copies the iplay player to the system’s hard drive automatically. Then the
production begins to run from the CD. On (✓) is the default.
If any of the required Microsoft software components are not installed
on the playback PC, the setup program displays a dialog explaining
that they need to be installed before the production can run. It can
install DirectX 8.1 automatically if Microsoft’s distribution archive
has been included on the CD. It is recommended that you include the
DirectX archive in your CD image, so that large Internet downloads
will not be required before your production can be viewed.
Please see the section “Third-party components” on page 187 of this
chapter for more information.
Publish as one file?
Publish as one file? allows you to embed the media files that are part of
the production into the same file as the script itself. Normally, most
media (background and clip image files, sound files, etc.) are included
as separate, externally-referenced files. This can be more flexible in
many circumstances.
164
6: Publishing with InfoChannel Designer 3
Publishing to a file
To prevent confusion, and ensure that crucial files do not become lost,
misplaced, or misused by recipients of the CD, you can publish all the
script contents as a single file. However, a factor to keep in mind is
that for a script published this way, the entire file must be loaded into
memory. For large scripts and/or playback machines without plenty of
free RAM and disk swap space, this can result in impaired script performance.
Run Script in Desktop Window?
A script can run either full screen or in a window on the desktop. The
Run Script in Desktop Window? option lets you specify which.
Color Palette
The Color Palette: pop-up provides three choices that let you control
the color depth of the display mode that the script uses in playback:
•
Same as User’s Desktop – does not change the color depth of the
user’s screen.
This is the safest choice, as it eliminates the possibility of iplay trying to use a display mode that is unavailable to the video card or
damaging to the monitor. However, playback does require a High
Color or True Color display mode. If the user’s desktop is set to
256 colors, the script will not be able to play.
•
Thousands – If necessary, sets the display mode color depth to
High Color (16 bits, approximately 65,000 colors).
•
Millions – If necessary, sets the display mode color depth to True
Color (24 bits, approximately 24 million colors).
Publishing to a file
The Publish Script to File menu lets you save the script and all its
content to a disk location in a format ready for playback with iplay.
Use this medium if the intent is to share the script over a network,
transfer it to another system on a floppy or other removable disk
165
6: Publishing with InfoChannel Designer 3
Publishing to a file
medium (other than as its own CD-ROM) or simply to store it in its
published form (possibly as a single file), for later playback using iplay.
In the Options column are the buttons Project Name:, Publish to
Folder:, Publish as one file?, and Advanced Options.
Project Name
Project Name: is the name given to the published script and the folder
in which the script and other script files and folders are placed. The
.EXE file that starts playing the script also has this name. The extension .SCB is automatically added to the name you give.
Publish to Folder
Publish to Folder: lets you choose the publish folder, within which your
published script will be placed. When you publish, all the files used by
a production are copied to the publish folder. The default location is
the folder where the script is saved, or to the Scripts folder for an
unsaved script.
166
6: Publishing with InfoChannel Designer 3
Publishing to a file
Click the Publish to Folder: button to open the File dialog, where you
can choose a location. After publishing, the folder you choose here
contains a file (with the name you gave in Project Name: plus the
extension .SCB), and another folder, which contains all the script folders and files.
Keep in mind that the publish folder you choose should be empty to
start with. If it is not, anything in the folder is deleted before publishing is performed.
Publish as one file?
Publish as one file? is an option that allows you to embed the media
files that are part of the production into the same file as the script
itself. Normally, most media (background and clip image files, sound
files, etc.) are included as separate, externally-referenced files. This can
be more flexible in many circumstances. However, to prevent confusion, and ensure that crucial files do not become lost, misplaced, or
misused by recipients of the CD, you can publish all the script contents as a single file.
Advanced Options
Advanced Options opens a dialog that allows you to specify whether to
include wipe files and font files with the published script. This is the
same dialog as described in the “Publish to InfoChannel Network” section. See page 159 for details on the Advanced Publish Options dialog.
167
6: Publishing with InfoChannel Designer 3
Publishing to Web component
Publishing to Web component
Opening the Publish Script to Web Component menu makes it possible to publish the script to a Web server, from which it can be
accessed through a standard URL.
The published script is no different from that produced by Publish
Script to File with the Publish as one file? option on. The intent of this
form of publishing is primarily to allow the script to be incorporated
into a Web page created in a Web authoring application. A Web
author can put the published script file in a Web page by enclosing it
in the appropriate HTML Object “wrapper” code. Publish Script to
Web Component includes an option to create a simple Web page containing the script, which is convenient for testing and as a template for
how to invoke the script.
When someone who has the iplay viewer installed accesses a page that
contains a link to the published script in a capable browser, the script
plays. In Microsoft Internet Explorer 4 and up, the script plays in the
same browser window.
168
6: Publishing with InfoChannel Designer 3
Publishing to Web component
This form of access is like a standard Web page. The script content
downloaded by the browser is not stored permanently on the
machine’s hard drive, but rather is cached as temporary files like normal Web data. The URL must be visited again to see the latest version
of the script, just like a Web site.
Setting up a Web page
Publishing a Web page is a simple process. But there are a few important pieces of information you need to know beforehand to be able to
complete the process.
In particular, you need to know two things:
•
where on the Web server your script will reside
•
the URL that people will use to access it
You need to enter these locations, in the form of paths to a server
directory, in this menu.
If you administer your own Web server, you should be able to determine these locations for yourself. If you use the Web server of an
Internet service provider (ISP), you need the ISP to tell you where the
script files should go, and the URL that would be used by the outside
world to get to them.
Title
Enter the page title that should appear on the title bar of the Web
browser in the Title: text box. This also is used for the file name for the
published script (.SCB is appended).
Upload to
Use the Upload to: pop-up to pick one of two possible settings, Disk or
FTP. These give you the option of either saving the script and its
related files to a local disk, or uploading it via FTP to a remote Web
server. There are additional options that vary depending on which
upload setting you choose.
169
6: Publishing with InfoChannel Designer 3
Publishing to Web component
You would upload to disk if your Web server happens to be on a local
disk, or if you want to check the published file from your browser
without uploading it to a remote server. In most cases, a Web server is
remotely located, and final publishing involves uploading to an ISP via
FTP.
Destination Folder (Upload to Disk only)
If you choose Upload to: Disk, the Destination Folder: button appears
below the pop-up. Click this button to open the File dialog, where
you can specify the folder into which the script-related files should be
published.
The folder does not need to exist already. Navigate to the folder
within which you would like to make the publish folder, then type a
backslash and a name into the Path: box. You are asked if you want to
create a folder by that name.
FTP Site (Upload to FTP only)
The FTP Site: text box appears below the pop-up when Upload to:
FTP is chosen. Use this to enter the name of the FTP upload site to
which the script files should be sent. For example, ftp://yourprovider.com.
FTP Directory (Upload to FTP only)
In the FTP Directory: text box, you enter the path to the directory on
the FTP server into which the uploaded files should be deposited. For
example, sites/user66. You should use forward slashes to separate
directory levels in the path.
Logon (Upload to FTP only)
To gain access to the Web server to upload the published page, an
FTP logon is required. Enter the logon name in the Logon: text box.
Password (Upload to FTP only)
A password is also required to complete the logon to the Web server.
Enter it in the Password: text box. Enter it carefully; the characters you
type appear as asterisks (*), so you will not be able to see them.
170
6: Publishing with InfoChannel Designer 3
Publishing to Web component
Advanced FTP (Upload to FTP only)
The Advanced FTP button opens the Advanced FTP Options dialog.
Rarely, an ISP’s FTP server setup might require you to change the
defaults in the Advanced FTP Options dialog. These options allow
you to compensate for non-standard FTP servers. Your ISP will be
able to tell you whether you need to turn on Passive FTP or use a special Port Number setting.
Include an HTML Template Page?
So that you can immediately test the published script in a browser, the
Include an HTML Template Page? option is provided. When this
option is off, just the <title>.SCB file is produced and uploaded. By
itself, this file is not playable from a browser.
Turn this option on (✓) to generate a simple Web page that contains
the HTML code needed to access and play a published ICDesigner
script. The HTML file for this page is placed in the same location
specified for uploading the script file. You can use this page as is to
make the script instantly available over the Web, or use it as the starting point for a page of your own design.
Two additional options are enabled when you choose to include a
template page:
URL For Script
In the URL For Script: text box, enter the URL by which the template
page should be accessed. A default location is provided, which you can
change if necessary. After publishing, you should be able to enter this
URL in your browser and see the template page, from which you can
play the script.
HTML File Name
In the HTML File Name: text box, enter the name you want for the
<title>.HTML file that generates the template page. A default name is
provided, which you can change if necessary.
171
6: Publishing with InfoChannel Designer 3
Publishing to e-mail
Publishing to e-mail
Because it is often necessary to exchange scripts with others you are
working with, the Publish Script to E-mail menu makes it possible to
publish to e-mail. Publishing to e-mail simply means that ICDesigner
publishes the script as a single file, and automatically invokes your email program with the script file already set up as an attachment to the
e-mail. This is not fundamentally different from publishing to disk
and then later running your e-mail program and attaching the published script file, but is more convenient.
Publish to e-mail works through the Simple MAPI mail protocol, so
you must have a browser or mail program that supports MAPI. (In
some versions of Outlook Express™, you need to look under Internet
Options and enable it as a MAPI client so that ICDesigner can find
it.)
The process for e-mail publishing is much the same as publishing to
disk; you just don’t have to specify a folder. Choose E-mail from the
Publish drop-down to see the Publish Script to E-mail menu.
172
6: Publishing with InfoChannel Designer 3
Publishing to e-mail
Set Project Name: to the desired name for the published script.
In the Advanced Publish Options dialog, decide whether you need to
include fonts or wipe files for the recipient of the script and select
those options accordingly. This is the same dialog as described in the
“Publish to InfoChannel Network” section. See page 159 for details on
the Advanced Publish Options dialog.
When you have set all options and click Publish!, your e-mail program
is opened. A new mail message is started with the published script file
as an attachment. You see the e-mail application window, where you
address the message and write any message text you like as you normally would in that program. When you instruct the mail program to
send the message, it does so and the mail program window is closed or
minimized so you can return to ICDesigner work.
The recipient of the email must save the attached script, and then can
run it. The iplay viewer is required.
173
6: Publishing with InfoChannel Designer 3
Publishing to HTML slides
Publishing to HTML slides
Choose HTML Slides from the Publish drop-down to see the Publish
Script to HTML Slides menu.
ICDesigner includes the Publish to HTML Slides feature to make it
easier to share ICDesigner script ideas over the Web. This type of publishing does not make a script play in a Web browser—use Publish to
Web Component for that. Instead, Publish to HTML creates a set of
HTML files. These files define a Web page that provides an overview
of an InfoChannel Designer script.
The Web page created by this type of publishing consists simply of a
grid of thumbnail images of the screen pages in the script, much like
the Thumbnail view of the Main menu. When a thumbnail image in
this index page is clicked, a full-sized image or “slide” of the screen
page is displayed in the browser window. The title bar of the full size
pages has navigation buttons to let you move forward and back
174
6: Publishing with InfoChannel Designer 3
Publishing to HTML slides
through the slides, or return to the index page. In a browser, it would
look something like this:
The slides displayed show all the text, clips, and draw objects on the
page. Just the initial frame of an animation background, movieclip or
animclip is shown. Page and element wipes, sound, and other dynamic
aspects that might be included in the script are not represented.
Putting up a Web page of a script published to HTML is a way to
achieve extremely wide, fast distribution of a script for review and
commentary. It does not require viewers to have a special plug-in—a
standard browser is sufficient. This also means that it is platform-independent, allowing you to share your script concept with users of Macintosh®, UNIX, and other operating systems. Although it omits
certain significant components of a finished script, its storyboard-like
format lets you easily publicize and get feedback on the graphic design
aspects of a script, which can be important in a time-critical authoring
environment.
175
6: Publishing with InfoChannel Designer 3
Publishing to HTML slides
Setting up a Web slides page
The basic process of setting up a Web page of slides is the same as on
the Publish Script to Web Component menu, so Title:, Upload to:
and the related options found on that menu are duplicated here. See
the documentation of these options starting on page 169 for details.
Include Page Names?
When the Include Page Names? option is turned on, the names of the
screen pages as seen in the Main menu are displayed under the page
thumbnails in the generated Web page.
Thumbnails Per Row
Similar to the Thumbnail view, you can also specify how many page
images should appear in a row. Use the Thumbnails Per Row value
control to increase or decrease the number of thumbnail images that
appear in a horizontal row. The default is 5.
Thumbnail Size in Pixels
You can specify how large each thumbnail should be using the
Thumbnail Size in Pixels value control. Enter a horizontal and a vertical size. If these settings are not proportional to the aspect ratios of the
pages themselves, the resulting thumbnails will be as large as possible
to fit within a box of the size you specified.
All pages are converted to JPEG images for Web publication, regardless of the original format of their component images.
Scale Pages?
The Scale Pages? option lets you decide whether the full-size images
seen when the thumbnail images are clicked should be scaled to a particular size. Typically, this would be used to make the full-size images
somewhat smaller to fit more conveniently into the browser window,
which could be less than a full screen.
By default, the full-size image has the same pixel dimensions as the
original background. Turning this option on (✓) turns the option button into a value control that allows you to specify horizontal and verti176
6: Publishing with InfoChannel Designer 3
Publishing to video
cal pixel dimension values for the full-size images. If these settings are
not proportional to the aspect ratios of the pages themselves, the
resulting images will be as large as possible to fit within a box of the
size you specified.
Publishing to video
Choose Video from the Publish drop-down to see the Publish Script to
Video menu.
For those times when you need to share an ICDesigner script with
someone who does not have the Scala software necessary for playback,
it is possible to publish the script in standard computer video formats.
The supported animation formats allow the script playback—with its
wipes, animations and buttons—to be represented in a standard multimedia file. When you publish to video, ICDesigner plays the script
and essentially does a screen capture of the graphic output. Audio
177
6: Publishing with InfoChannel Designer 3
Publishing to video
events in the script are not captured. Script looping is ignored; the
script only plays through once from beginning to end.
The resulting file is a playback-only medium; there is no way to
respond to buttons in the script, nor to edit the resulting file. The
mouse pointer is not captured. However, when you simply need to
send a production to a diverse, possibly unknown audience, the video
publish option can be a lifesaver.
Project Name
The name you enter in Project Name: becomes the name of the video
file. An extension of .AVI or .GIF is added automatically depending
on the video format you choose.
Video Folder
Clicking Video Folder: opens the File dialog, where you can choose the
location to store the video file. This form of the File dialog does not
allow you to select files, only folder or devices.
Size options
The Output Size: button by default is set to Original, and shows the
script size in pixels horizontally and vertically. Animations are normally generated to be the same size as the script. However, you can
specify a different size. Click the Output Size: pop-up and change it
from Original to Custom. When you do this, you see the Custom Size
value control and the Keep Aspect? option in the space below the popup.
Using a custom output size
The Custom Size control initially shows the same dimensions as the
script size.
Use the first value on the Custom Size control to set the horizontal size
in pixels, the second value to set the vertical size in pixels. Picking values that are integer multiples or fractions of the initial value (for example 320 × 240 for a script that is 640 × 480) gives the best looking
results. If you need an in-between size, a value that is a multiple of 4
will probably look best.
178
6: Publishing with InfoChannel Designer 3
Publishing to video
Output size constraints
Some AVI video codecs require that the video dimensions be a multiple of 4, or some specific value. In such cases, the resulting video may
not match the displayed output size.
To automatically retain the proportions of the original script when
adjusting the animation size, turn on (✓) Keep Aspect?. When this
option is active, changing either the horizontal or vertical size also
changes the other size value in tandem to yield a constant aspect ratio
for the published animation.
Video Format
The Video Format: pop-up allows you to choose the type of video file
produced when you publish to video. Currently supported format
options are AVI (Audio Video Interleave) and AnimGIF. Choosing a
format controls which further options are shown beneath the pop-up.
Frame Rate (AVI format selected)
The Frame Rate pop-up controls how much “temporal resolution” the
resulting video playback has, in terms of frames per
second. A higher number gives a truer representation
ICDesigner Note
of the normal ICDesigner playback quality, with
The value chosen here
should match the value
smoother motion and transitions. However, the proused for playback in the
cessing time required for the publishing process
software that will be playing
increases as the frame rate is increased, as does the size
the video file.
of the resulting video file.
Fifteen values are provided, including several fractional values that are
appropriate for film and video work.
179
6: Publishing with InfoChannel Designer 3
Publishing to video
Advanced (AVI format selected)
Clicking the Advanced button opens the Advanced AVI Settings dialog.
This dialog lets you adjust various parameters involved in the AVI format’s data compression process. Some options in this dialog may be
disabled, depending on the selected video compressor.
Video Compressors – The dialog lists the available DirectX video compression methods or “codecs” (compressor/decompressors). Different
codecs offer varying combinations of performance level, file size, and
compatibility. Select one to be used for this publication.
Quality – Image quality in the resulting video file can be sacrificed for
the sake of greater compression if desired. The Quality slider lets you
indicate to the codec how important the image quality is compared to
the level of compression. The slider goes from 0 (greatest compression)
to 100 (best image quality). The value itself is arbitrary, and is interpreted differently by each codec.
180
6: Publishing with InfoChannel Designer 3
Publishing to video
Key frames – A codec can use periodic “key frames” as a way to keep
errors introduced by the compression process from accumulating over
the length of the video. A key frame is a full frame of video. Normally
each frame of compressed video consists of only the changes from
from previous frame. Turn on (✓) Use Key Frames? to take advantage
of this capability, and to allow adjustment of the key frame interval.
Adjust the Key Frame Interval control to determine how many frames
of changes should be generated between each key frame. Lower key
frame intervals (more total key frames generated) can improve the
faithfulness of the video version, at the expense of increased file size.
Video rate – Another way to control the ratio of performance to file
size is to specify the video data rate. Turn on (✓) Video Data Rate? to
take advantage of this capability.
Adjust the Video Data Rate control to specify a target number of kilobytes per second for the video stream. The codec attempts to compress
the video to yield a data rate in playback that does not exceed the value
you set here. The codec varies the quality of the compression to try to
maintain this data rate. Using this option does not guarantee that
playback will reach this rate in practice.
Custom configuration – For those codecs that offer additional parameters, the Custom Configure button is enabled. Clicking
ICDesigner Note
this button opens a dialog with options specific to the
Any dialog provided by the codec
selected codec.
manufacturer must open on the
Windows desktop. If you are running ICDesigner in full-screen
mode, it is minimized so that the
codec dialog can be seen. The
ICDesigner screen is restored
when you exit the dialog.
You need to consult documentation from the codec
manufacturer for information on using whatever
options their configuration dialog provides. If the
Custom Configure button is disabled, there are no
manufacturer-specific options for the selected codec.
181
6: Publishing with InfoChannel Designer 3
Publishing to video
Frame Rate (AnimGIF format selected)
The Frame Rate setting controls how much “temporal resolution” the
resulting video playback has, in terms of frames per
ICDesigner Note
second. A higher number gives a truer representation
This control affects only the
of normal ICDesigner playback quality, with
encoding, not the speed of script
smoother motion and transitions. However, the proplayback. The software used for
cessing time required for the publishing process
playing the video file may provide
its own frames-per-second setincreases as the frame rate is increased. The maxiting to control playback speed.
mum value is 60 frames per second.
Use Transparency Compression? (AnimGIF format selected)
Transparency is a built-in capability of the AnimGIF format. The
AnimGIF publishing option can take advantage of transparency to
improve the level of compression achieved in AnimGIF videos. Normally, the Use Transparency Compression? option, which controls this
feature, is left on (✓).
If there aren’t enough colors available in the display palette, however,
using transparency compression can leave undesirable artifacts in the
resulting video. If you notice “noise” or a ghosting effect in your published AnimGIF videos, and the truest image quality is important, try
turning off this option.
Number of Loops (AnimGIF format selected)
You can set the number of times that the AnimGIF file should play
back using the Number of Loops control. Looping capability is an
option that is built into the AnimGIF format; increasing the number
of loops does not increase the file size or the time it takes to publish.
To make the AnimGIF loop indefinitely, set this control to ∞.
Monitoring the progress of publishing to video
When you click Publish! in the Publish to Video menu, ICDesigner
opens a dialog that lets you follow the progress of the encoding. (It
takes significantly longer to complete the publish to video process than
it takes for the script to play back normally.) A thumbnail image on
the left shows a selection of completed frames so that you can see how
182
6: Publishing with InfoChannel Designer 3
Completing publication of a script
much has been done. There are also displays of the current frame in
the video in terms of elapsed time and script page number.
When the encoding process is complete, the AVI or GIF file is saved
in the location specified by Video Folder:.
Completing publication of a script
When you have chosen your publishing options, there is one more
question to consider before you are ready to publish the script, namely
whether to protect it with a password.
Password protection for published scripts
Protection and confidentiality are important for many multimedia
publishers, which is why ICDesigner lets you encrypt or “lock” scripts.
Encryption helps protect your work from unauthorized editing, and it
allows you to keep any scripting “secrets” you might have used from
being revealed.
When you lock a script, it is encrypted. This means that the script is
encoded and must then be decoded before it can be inspected. The
only way to decode the script is to enter the correct password—which
you, the producer of the script, choose.
A locked script can still be run just like an unlocked script. However,
it cannot be edited or its events viewed to let the viewer see how it was
put together.
An “open” script allows viewers who already have ICDesigner and the
necessary fonts installed to edit or review the techniques of the production. If you do not choose a password for a script, it remains an
open script: no password is asked for when the viewer opens it, all its
events are listed in the menus, and it can be easily edited.
Opening a locked script
One can open a locked ICDesigner production by running ICDesigner and choosing the script (named <project name>.SCB) in the
Open Script File dialog. A password is requested.
183
6: Publishing with InfoChannel Designer 3
Completing publication of a script
•
Entering the correct password allows the script to open like a normal script. The viewer can review the techniques of the production and to make changes to it.
•
Entering the incorrect password, or no password, allows the
viewer to run the script to see the production, but not to review
the techniques of the production or make any changes to it. The
following message is displayed:
A password is unnecessary, however, to run the production, which can
be done by choosing its icon from the Start menu or My Computer.
Publishing
Clicking the Publish! button performs the publication of the script to
the medium that you chose. Messages about the progress of the publication appear in the Script Information section, or in the case of publishing to certain media, in a separate dialog.
왘
To complete publishing:
1. Click the Publish! button (see “Publishing a script” on page 183).
184
6: Publishing with InfoChannel Designer 3
Completing publication of a script
The first thing you see when you click Publish! for most publish
media is the dialog that allows you to lock the published script. A
password dialog asks you to select a password for the script.
2. You can choose to lock the script or leave it unlocked.
❖ To lock the published script, enter a password in the Password:
text box. Because the characters you type are shown as asterisks
(*), you must enter the password again, identically, in the Verify: text box. There is no limitation to the length of passwords,
and they are not case-sensitive.
❖ To leave the published script unlocked, and available to inspec-
tion and editing by anyone, leave the text boxes in the dialog
blank.
3. Click OK.
4. If there is another folder of the same project name in the publish
folder, you see an InfoChannel Designer Message dialog asking
whether you want to delete the contents and continue publishing.
The contents of the publish folder is what you will reproduce,
onto CD for example. This means that if you want to add files to
the folder, you may need to do so after you have finished in the
Publish Script menu, or the contents will be deleted.
5. Click OK. The Script Information box tells you whether or not
publishing was successful.
ICDesigner publishes your production into the location you specified.
185
6: Publishing with InfoChannel Designer 3
Published scripts with add-on EX events
Depending on the publish medium you chose, there may still be some
steps left before the publication process is complete:
•
For publication to stand-alone CD, you should if possible copy
the necessary third party software (see page 187) to the Publish
folder so that it is included on the CD. Then you need to actually
create a CD image and burn it to a CD-ROM master, which
requires third-party software.
•
For publication as a Web component, you need to embed the
script file with the appropriate HTML Object wrapper statements, into your own Web page code; you could choose the
HTML template page option, and copy and paste from the file it
generates.
•
For publication to e-mail, you need to address the e-mail to which
the script is attached and possibly include a message to the recipient explaining what is needed to view the script.
Cancel/Close
Choose Cancel to cancel publishing and return to the Main menu.
If you have already successfully completed publishing, this button
changes to Close, and just exits the Publish menu.
Published scripts with add-on EX events
Published scripts may include EX events that depend on Scala EXes
that are not integral to the product. In order for these scripts to play
back correctly on a given machine, the EXes employed by the script
must be installed on that machine.
It is not possible to publish Scala EXes with a script. They must be
separately obtained, licensed and installed on any machine that needs
to play back scripts that require them.
186
6: Publishing with InfoChannel Designer 3
Microsoft components
Microsoft components
Scala iplay requires certain Microsoft software components to be
installed in order to run properly:
•
Service Pack 2 for Microsoft Windows 2000
•
Microsoft DirectX 8.0 or better
Stand-alone CD publications
The iplay installer for a script published to Stand-alone CD can offer
to install DirectX 8.1 on systems that don’t have it if its distribution
archive is included on your CD master image. The Publish to Standalone CD operation cannot automatically include the DirectX archive
for you. You must obtain it yourself. It is freely available for download
from Microsoft at the following location:
http://msdn.microsoft.com/downloads/default.asp?URL=
/downloads/sample.asp?url=/MSDN-FILES/027/001/770
/msdncompositedoc.xml
You can also visit Scala’s Web site at http://www.scala.com for a link
to the DirectX 8.1 download location. Note that this is not the
“Home User Download” version of DirectX 8.1, which is not suitable
for this purpose.
Whoever does need to install DirectX must agree to Microsoft’s
license terms. At the present time, DirectX can be licensed simply by
accepting its licensing and redistribution agreements.
Once you have obtained the DirectX 8.1 redistribution archive, place
it in a folder called “Directx”, inside a folder called “3rdparty”, both of
which you need to create in the root of the CD publish folder produced by the publication process. Then you can burn your CD-ROM
with the archive in the master image. If the DirectX archive can be
located as \3rdparty\Directx\Dsetup.exe on the CD, the iplay
installer can find it and offer to install DirectX 8.1 on the viewer’s system.
Including the DirectX archive on your CD is optional. If you do not
include it and a viewer’s machine requires it, the iplay installer directs
187
6: Publishing with InfoChannel Designer 3
Microsoft components
the viewer to Scala’s third-party components Web page, which has a
link to the location from which DirectX can be downloaded.
Web Component, File, and Email publications
The DirectX archive cannot be included when you publish to Web
Component, to File, or to Email. Anyone wishing to play a published
script published in any of these forms needs to have iplay installed on
the playback machine, and therefore should also have the latest
DirectX.
If a viewer’s machine requires it, the iplay installer directs the viewer to
Scala’s third-party components Web page, which has a link to the
location from which DirectX can be downloaded.
188
7: Additional InfoChannel Designer 3 EXes
The Scala EX system provides a modular interface that makes it easy to
add new features to ICDesigner. Such features include support for
special hardware interfaces to external devices, support for additional
file formats, and special functions that extend ICDesigner’s flexibility.
Use the Options dialog to select which of the currently available EXes
to turn on or off. You can turn an EX off if you want to eliminate its
column from the Main menu, or if you think it might be causing a
problem with the system.
EXes provided with this release of ICDesigner include:
•
Launch EX
•
Log EX
•
TextFile EX
•
Serial EX
•
Billing EX
•
MCI MPEG EX
•
Optibase EX
•
Windows Scripting EX
•
File I/O EX
Other EXes may become available for custom applications through
VARs or directly to qualified customers. The Scala Web site,
http://www.scala.com, may have information on additional EXes as
they become available.
190
7: Additional InfoChannel Designer 3 EXes
Launch EX
Launch EX
The Launch EX lets you run or “launch” another program from
within an ICDesigner script. Clicking a button in the Launch column
opens the Launch menu.
You provide the path to an application or a Windows-registered document type in the Command Line: text box. You can use the File... button to do this through the File dialog. When the Launch page is
encountered in the script, ICDesigner opens the specified application
or the registered application for the specified document.
If the command line contains a URL, ICDesigner opens the default
Web browser and links to the document at the URL destination.
Examples of how the Launch menu can be useful include creating a
launcher script for a CD-ROM sampler that allows a user to click
interactive buttons to choose applications from the CD to start, or
starting the Adobe® Acrobat® reader to display a document that is in
PDF format.
Wait?
The Wait? option, which is on (✓) by default, suspends the execution
of the script until you exit the launched application or document.
Turn this off to have script execution continue after the document or
application has been launched.
Minimized?
The launched application can open either normally or minimized.
When opened normally, the viewer sees the Windows desktop, where
the application window opens. The viewer must then exit the application when finished with it, and return to ICDesigner to resume the
script. When the Minimized? option is on (✓), the launched application executes invisibly and non-interactively.
191
7: Additional InfoChannel Designer 3 EXes
Log EX
You might use a minimized launch if you needed to run a batch file or
other program that could do its work—such as printing a simple text
file—without displaying a user interface.
Log EX
The Log EX provides a mechanism to automatically monitor the activities of ICDesigner Player Stations. This is an useful tool to use in
maintaining remote Players and providing a record of their activities.
Logging capability is essential in a cable television installation, for
example, where you need to know when and how many times advertisements were actually broadcast. Log files can also be a key tool in
discovering the cause of any problems that might arise with a Player.
Log files
The Log EX keeps records by generating plain ASCII text files. It
records entries for many actions by default, and you can specify additional information to be recorded in log files for individual script events.
You generally don’t need to worry about log files getting too large
because they each contain only a single day’s information.
Every five minutes that the Player is running, the IC.LOG file’s time
stamp is updated. This enables you to determine how long a Player has
been operational in a 24-hour period.
Backup log files
The Ic.log file for the ICDesigner machine is located in:
<systemroot>:\Documents and Settings\<currentuser>\Local
Settings\Application Data\Scala\Scala InfoChannel
Designer\Logs
where <systemroot> is the drive letter where Windows is installed and
<currentuser> is the username of the user logged in to the computer.
This file is moved to a backup log in the Logs folder at midnight every
day. To allow you to identify them, the backup logs are renamed using
192
7: Additional InfoChannel Designer 3 EXes
Log EX
the format yyyymmdd.LOG, in which yyyy is replaced with the year,
mm with the month, and dd with the day of the log file.
By default, ICDesigner retains five day’s worth of backup files in Logs.
At the beginning of each day, it deletes the oldest log. You can adjust
the number of days of backup logs retained using the configuration
variable LOG.Days in the <systemroot>:\Documents and Settings\<currentuser>\Local Settings\Application Data\Scala\Scala InfoChannel
Designer\Config\Log.sca file. To retain a full week of log files, for
example, use a text editor to open LOG.SCA, find the line that reads
LOG.Days = 5;
and change 5 to 7. Then save the file.
Changing the log file extension
The Log EX features a configuration variable called LOG.PlayerTag.
This variable, if set, allows you to specify a 3-character file-type extension. By default ICDesigner applies a .LOG extension, but you can
choose any three characters to help identify the source player of the log
file. For example, you might choose “PL3” to represent “Player number 3” in a multiple-Player configuration.
You can set this variable by editing your Config\Log.sca file. Look for
the line that reads:
LOG.PlayerTag = "LOG";
Substitute the file extension you prefer in place of LOG at the end of
the line.
Reviewing log files
To review the log of a Player, you create a Network Manager job to
retrieve the file IC.LOG from that Player. You can use any text editor
(such as the Windows Notepad) to review the log data.
If you can’t communicate with a Player for some reason, or it isn’t executing a script properly, review the log for that Player. The log will
usually contain information that can help you diagnose the problem.
If you are responsible for remote Players, you should review logs from
193
7: Additional InfoChannel Designer 3 EXes
Log EX
those Players on a daily basis to be sure that they are doing what they
are supposed to be doing.
The Log menu
To have the Log EX record an entry when the Player runs a particular
event (a page or an event on a page), edit the script in ICDesigner.
From the Main or List menus, click the button for the event in the
Log column. You see the Log menu.
Enter the text to be recorded to the log, then click Close. The text can
be up to 1000 characters, but normally need be only a a few words. As
with other ICDesigner menus, you can select and work with any number of events without leaving the Log menu. The text you enter also
appears in the event’s button in the Log column.
When you next send the script to the Player and it runs, the Player’s
log will include an entry with the text each time that event is run. If
you no longer need to keep track of an event, simply delete all the text
from its Log Text: text box.
Typically, you might use log files to keep a record of how many times
a page is run and to be able to verify that scheduled pages are running
when they should.
One very powerful feature of log files is that you can include one or
more embedded variables in the log text. When the text is written to
the log file, the variable’s current value at that time becomes part of
the logged text. This allows you to gather and record new information
with the log files. For example, you might use the TIME and DATE system variables to collect statistics on the number of times per day that a
given interactive button was selected by users.
194
7: Additional InfoChannel Designer 3 EXes
TextFile EX
TextFile EX
Typing text onto a page from the Design Text menu is easy and is sufficient for many productions. Sometimes, however, you need to work
with large amounts of text, or text which comes from a remote source.
Such situations make a different interface desirable. The TextFile EX
gives you the capability to create a template page and have ICDesigner
automatically fill in the template with text from an external ASCII text
file. It also provides for certain unique special effects.
The basic steps to use the TextFile EX are:
1. Create a text file.
2. Create a script with one or more template pages.
3. Assign the text file to the template pages in the TextFile EX menu.
4. Run the script.
As the script runs, the text file is displayed a certain number of lines at
a time (you specify the number) against the background of the template page, until the end of the text file.
Text files
The first step in setting up pages using the TextFile EX is to create the
text files you will use. These must be plain ASCII files, created outside
of ICDesigner with a tool such as the Windows Notepad or some
other text editor.
Each line that you want to appear on the page must be a separate line
ending in a carriage return or line feed in the text file. Lines can be up
to 1000 characters in length, but the practical maximum for general
use is much shorter—approximately 100 characters, using the smallest
possible font. You must ensure that the maximum line length in the
file is not too long to be displayed on the page. Lines can be blank
(just a carriage return or linefeed, or containing only spaces or tabs).
The text file can contain any number of lines.
195
7: Additional InfoChannel Designer 3 EXes
TextFile EX
Templates
A single template page specifies the page background and all other
properties for the display of a text file of any length. The template
page is a normal page, and you create it just as you create any other
page in a script. Using the Design menus, you set the background, and
any static text, clips and wipes to be used with the page.
You specify where each line of the text from the file will be placed by
placing special embedded variables as text elements on the page. For
the TextFile EX, the variable text elements must be of the form
!LINE1, !LINE2, !LINE3... !LINE99, as shown here:
Most templates will use much fewer than 99 lines on a page, but 99 is
the maximum. (For more on embedded variables, see the section “Displaying variables” on page 192 of chapter 6 in the “Basic Authoring”
guide.)
196
7: Additional InfoChannel Designer 3 EXes
TextFile EX
You have considerable freedom in placing the lines and using the variables:
•
The variables can be placed anywhere on the page, and do not
have to be in sequence. For example, the lines could be arranged
on the page like this:
!LINE2
!LINE1
!LINE3
The numbering controls which line, from the batch of lines read
from the text file for the current page, is displayed by that variable. Therefore the first line read from the text file would appear
on the page between the second and the third lines read.
•
You can skip variable numbers within a range, causing the corresponding lines to be discarded. So in the above example, if you
replaced “!LINE3” with “!LINE4”, the fourth line read from the text
file would appear on the bottom, and the third line read would
not appear on the page at all.
•
The variables can be embedded in a text element like any variable,
as in “The top story in New York is !LINE1”
You can give the variable text elements any styles and attributes that
normally belong to a text element—font, color, outline, shadow, wipe,
etc. When the TextFile EX substitutes the lines from the text file for
the variables, they take on those styles.
Text File menu
From the ICDesigner Main menu, click the TextFile button for the
template page you have created. You see the Text File menu.
197
7: Additional InfoChannel Designer 3 EXes
TextFile EX
Specifying the text file
In this menu, you specify the file name for the text file to associate
with this template page, and the number of lines of text to display on
each page.
When you click on the File... button, you see the File dialog, which
defaults to the Windows My Documents folder.
If the text file does not yet exist at the time you are creating the script,
enter the name of the intended file in the File dialog. When you enter
a name that does not exist, you see a dialog stating that an empty file
must be created and asking if you want to proceed. If you click Yes, a
zero-length file by that name is created for you as a placeholder. Sending this empty file to the Player can sometimes be useful; see the next
section, “Running the script”.
Use the Maximum Lines on Page value control to indicate the number
of lines of text to read from the text file per template page. Normally
this value should equal the number of !LINE elements. If this value is
lower than the number of !LINEs on the template page, only the number of lines specified by this value is displayed on any page; some lines
always remain empty. If the Maximum Lines value is greater than the
number of !LINEs on the template page, some lines that are read from
the text file are never seen.
When you have finished, click Close to return to the Main menu and
accept the changes you have made, or click Cancel to return to the
Main menu without keeping any changes. If you later decide to make
the template page a regular page and no longer wish it to be associated
with a text file, click the Clear button in the page’s Text File menu.
Running the script
When you run the script, your template page is displayed, and the EX
retrieves the number of lines specified in Maximum Lines on Page from
the text file and substitutes them for the corresponding !LINE elements. (If a line is too long, it runs off the edge of the screen; the line
does not wrap.) When all the lines have been displayed and the page
Pause has completed, the template page is re-displayed and the next set
of lines is retrieved from the text file to fill in the !LINE elements.
198
7: Additional InfoChannel Designer 3 EXes
TextFile EX
ICDesigner repeats the page like this until it reaches the end of the
text file.
Empty text files and how to use them
If the text file you specified in the Text File menu is missing, empty,
or contains nothing but blank lines at script run time, the page is not
displayed. This allows you to effectively turn a page on or off based on
whether there is any content in the text file.
This could be useful as an emergency message page, for example. Normally, the file is empty, so the page does not run. When there is an
emergency message to display, you update the text file on the Player,
which is referenced as linked content, with the emergency text. Now
the page plays, showing that text. When the emergency is over, send
an empty file again to stop the page from playing.
The TextFile EX never displays a page with no text. If there are
enough successive blank lines in the text file that none of the !LINE elements on a given page would contain any text, the EX retrieves
another set of lines from the file. It continues looking for lines with
text until it reaches the end of the file. At the end of the text file,
ICDesigner proceeds from the TextFile page to the following page.
Special TextFile EX effects
You aren’t limited to using a single template page for displaying a single text file. Having text appear over changing backgrounds is possible
using grouping.
For example, you might create five different template pages, each with
a different background picture, but all with identical positioning of
the text elements !LINE1, !LINE2, etc. (Identical positioning isn’t a
requirement of the TextFile EX, but it makes the effect look better.)
You then group these template pages on the Main menu, and in the
TextFile EX menu for the group, select the text file. When the script
runs, each set of text lines (the Maximum Lines on Page setting)
appears over all five backgrounds before the next set appears.
199
7: Additional InfoChannel Designer 3 EXes
Serial EX
Serial EX
The Serial EX from Scala gives you the capability of sending and
receiving arbitrary data strings via standard RS-232 serial communication, under script control. This opens up the possibility of controlling
a wide variety of devices that respond to serial commands, and
responding to serial communication from those devices.
Two-way serial communication capability can greatly enhance the versatility of your Scala ICDesigner scripts, as you can then coordinate
the operation of diverse sorts of hardware with script activity to construct advanced custom solutions.
Configuration
There are no configuration tasks specific to the Serial EX itself. However, you must of course be sure that the serial port(s) that you intend
to use on the machine(s) doing the communicating are functioning
properly on their own before you attempt to use them with the Serial
EX.
You need to know which COM ports your external hardware is using
for serial communication, and their correct settings for baud rate,
handshaking, etc. in order to send and receive with the Serial EX.
Using the Serial EX
The Serial EX needs to be activated before it can be used. If necessary,
you can turn it on yourself in the Options dialog. Choose Options
from the Tools icon drop-down and select the EXes tab. Click the
Serial (RS-232) EX? button in the Optional EXes list to turn on (✓) the
EX.
When the Serial EX is activated, it displays the Serial column in the
Main menu. Clicking in this column opens the Serial menu, which
200
7: Additional InfoChannel Designer 3 EXes
Serial EX
lets you insert events to control the serial ports, send data, and receive
data.
Serial column
Command: pop-up
A Serial EX event—either a special event, or an event that is part of a
page or element—can be one of four commands. The Command: popup, in the upper left of the Serial EX menu, lets you specify which one
to use:
•
•
•
•
Open Port
Close Port
Send Data
Receive Data
Each of these commands has its own options, which you see in the
menu when you choose the command.
A fifth Command: option, None, is used to clear any Serial command
previously set for this event, and has no options.
You can apply only one Serial EX command to a given event. Therefore, to complete a single isolated serial communication, you would
201
7: Additional InfoChannel Designer 3 EXes
Serial EX
need at least three commands: Open Port, Send (or Receive) Data,
and Close Port.
The port number and the nature of the command you specify is
reflected in the Serial column button for that event, for example,
“Close com1:”.
Opening a serial port
Before a serial port can send or receive data, it must be opened. You do
so from the Serial EX using Command: Open Port. This is the default
command.
Port Number
Opening a serial port requires specifying which COM port you want,
by number. Use the Port Number: pop-up to choose from COM1,
COM2, COM3, or COM4.
You can have more than one COM port open at once, assuming your
hardware supports it. Any Send or Receive command that you issue
from the Serial EX specifies the particular COM port for that command.
COM ports remain open for communication until closed with the
Close Port command, or until ICDesigner playback ends.
Baud Rate
There are ten standard serial communication speeds available on the
Baud Rate: pop-up, from 110 to 115200. Pick the one that is appropriate for the equipment you are communicating with.
Handshake
Choose a method of serial handshaking using the Handshake: pop-up.
The options are None, Software, and Hardware.
Data Bits
Choose either 7 or 8 data bits for serial communication using the Data
Bits: pop-up.
202
7: Additional InfoChannel Designer 3 EXes
Serial EX
Parity
Serial parity can be set to Mark, Space, Even, Odd, or None using the
Parity: pop-up.
Stop Bits
Choose either 1 or 2 stop bits for serial communication using the Stop
Bits: pop-up.
Default parameter settings
All of these standard serial parameters can be set explicitly in the Open
Port command, but have a Default setting as well. If the Default setting is selected, the Serial EX uses the parameter setting that is the
default in Windows for the chosen port, or the last value set by an
Open Port command. The default values are:
Baud Rate: 9600
Handshake: hardware
Data Bits: 8
Parity: none
Stop Bits: 1
To override Windows defaults and previous settings, and ensure that a
particular setting is used, set the parameter explicitly.
Serial button indicators
The buttons in the Serial column indicate the Serial EX commands
that you choose, so that it is easy to see what your script is doing from
the Main menu. The Send, Receive, and Close command indicators
are self-explanatory, but the Open Port indicator encapsulates several
203
7: Additional InfoChannel Designer 3 EXes
Serial EX
settings in a manner that requires some explanation, as shown in this
illustration:
Port Number
open the port
(shows ‘-’ for
Don’t Open Port)
Parity
Data Bits
Baud Rate
Stop Bits
Handshaking
Numerical parameters (Baud Rate, Data Bits, Stop Bits) show as 0
when set to Default. Non-numerical parameters (Parity, Handshaking)
show a minus (-) when set to Default.
Setting parameters without opening
In some circumstances it might be valuable to set the serial parameters
without actually opening the port.
You can do this by turning on (✓) the Don’t Open Port? option in this
command. Doing so causes the parameter settings of the specified port
to change without actually trying to open the port.
Sending data
To send data to an external device from a serial port, you use Command: Send Data. The control panel for this command in the Serial
menu has numerous options.
204
7: Additional InfoChannel Designer 3 EXes
Serial EX
First, be sure that Port Number: is set to the COM port to which the
device that you want to contact is connected. For the command to
succeed, this COM port must have already been opened.
Entering the data to send
You put the data that you wish to send over the serial line in the Send
String: text box, in the form of a string. No quotation marks are
required.
You can enter any number of characters in this text box. Either type
the characters, or paste them from the clipboard.
Note that the data is sent as the string you give, meaning as a succession of the ASCII values of each character. Entering “2,3” in the box,
for example, actually sends the values 50, 44, and 51 (hexadecimal 32,
2c, and 33).
To send particular numerical values, you can either convert them to
their ASCII equivalents and enter the corresponding characters, or
enter them as raw hexadecimal values.
You can enter numerical values (in hex) and type control codes and
other special characters into the Send String: box:
^x##
^n
^r
^t
^"
^^
a hexadecimal value (# can be 0-9 and/or a-f )
a line feed
a carriage return
a tab
a double quote mark
a single caret
These strings are NOT Ctrl key combinations. The first character is a
literal caret character (^) and must be followed immediately by at least
one other character to indicate the intended function.
Note for those who hand-edit their scripts: you must escape the caret
in the character strings by entering it twice to get it to work. That is, in
ScalaScript, this is necessary:
"to send hex f3 to the serial port: ^^xf3"
205
7: Additional InfoChannel Designer 3 EXes
Serial EX
When the Serial EX menu generates the Send string in ScalaScript, the
escaping of the characters is taken care of automatically, so that for the
same result, you would type in the Send String: box:
to send hex f3 to the serial port: ^xf3
Sending on a trigger input
A special feature of the Send Data command is that it can be set to
delay sending until a trigger signal is received. It can monitor a COM
port for the appearance of an arbitrary string, and send only when that
string has been received.
왘
Here is how the Triggered Start?, Trigger Port: and Trigger String:
controls are used for this:
1. Enable this feature by turning on (✓) the Triggered Start? option.
2. Specify the COM port that should be monitored using the Trigger
Port: pop-up. This does not need to be the same port that the
command will be sending data on. However, the monitored port
must have been previously opened with an Open Port command.
3. Enter the string that should trigger the sending of data in the
Trigger String: text box. This can be any string of any length, just
as for Send String:.
When the Trigger String appears on the Trigger Port, the Send
Data string is sent.
Note that if you turn on Triggered Start? without also turning on
Wait? (see the next section), the script continues while the Send Data
command waits for its trigger string to arrive. If the trigger string never
arrives, or arrives later than expected, events in the script that depend
on the Send might not work right.
Using Wait? to pause the script
You can pause the execution of the script until the Send Data command has completed by turning on (✓) the Wait? option.
Turning on Wait? lets you make sure that the Serial EX has finished
sending data before continuing with the script. This can be important
206
7: Additional InfoChannel Designer 3 EXes
Serial EX
if subsequent script events depend on the serial data having been sent
before the events execute.
Duration limit on Serial EX commands
When Wait? is off, the script continues as the command executes.
However, Serial EX commands never extend over page boundaries. If
a non-Waiting serial command is still executing when a page ends, the
command is terminated.
Receiving data
To receive and store data from an external device connected to a serial
port, you use Command: Receive Data. (Any data that comes over an
open port while no Receive Data command is active is simply discarded.)
The control panel for this command in the Serial menu is similar to
the one for Send Data, with some additional options.
Here too you must be sure that Port Number: is set to the correct
COM port. For the command to succeed, this COM port must
already have been opened.
Received data is placed in an environment variable that you can access
from the script using the Branch menu. There are four environment
variables:
COM1.INPUT
COM2.INPUT
COM3.INPUT
COM4.INPUT
207
7: Additional InfoChannel Designer 3 EXes
Serial EX
Each variable is associated with a COM port, and can hold any
amount of input.
Your script must take care of reading the input from a given Receive
Data command before initiating another; each new Receive Data command overwrites the previous contents of its COM port’s variable.
Receiving on a trigger input
Receive Data shares with Send Data the capability to be set to delay its
action until a trigger signal is received. The Triggered Start?, Trigger
Port: and Trigger String: controls function identically for Receive Data
as for Send Data.
When Triggered Start? is turned on, the EX does not begin to actually
receive data until the Trigger String comes in over the Trigger Port.
Data that comes in over the receive port before the Trigger String has
been detected is lost.
No data that comes in over the Trigger Port is retained.
Ending reception
The received data is not available for reading from the “.INPUT” environment variables until the Receive command has ended. Once data
reception has begun, there must be a way of telling the command to
end reception.
The Receive Data command provides three ways of recognizing that
reception for this command is complete:
•
Reception of a particular string
•
Reception of an EOL character
•
Reception of a maximum number of characters
End on String? – Turn on (✓) this option to enable the completion of
reception when a certain string of characters is received on the port in
Port Number:. Enter the trigger characters in the End String: text box.
End on EOL? – Turn on (✓) this option to enable the completion of
reception when the EOL character is received on the port in Port
Number:.
208
7: Additional InfoChannel Designer 3 EXes
Serial EX
Max Characters: – Enter a number in this value control to enable the
completion of reception when a certain number of characters has been
received by this command on the port in Port Number:.
Any one or all of these options may be used at the same time. Whichever condition arises first triggers the end of reception.
If none of these options is chosen, reception terminates immediately,
without receiving any data.
LastChar variables
There are four additional environment variables created for Serial EX
use:
COM1.LASTCHAR
COM2.LASTCHAR
COM3.LASTCHAR
COM4.LASTCHAR
These variables contain the last character that came into their respective ports while the port was open. You do not have to use the Receive
Data command for this to work—the port just has to be open.
The variables are updated dynamically, so if you open COM port 1 on
a page that contains the text element
Last Character from Com1 is ‘!(Com1.LastChar)’
the page updates in real time as characters come in to that port. When
the COM1 is closed, the variable stops updating.
Special note: This variable may not show every character that comes in
at the serial port when the data comes in too fast. This happens
because the port “groups” incoming data when the data rate is high.
Only the last character of each group is put into the variable. When
the data arrives more slowly, each group contains only one character,
so all the characters can appear.
The LastChar variables are useful for watching simple input from a
device. They could be used, for example, in installations that have a
device that responds to commands by returning a single character. A
209
7: Additional InfoChannel Designer 3 EXes
Serial EX
command could be sent over the serial port, and after a brief delay the
LastChar variable could be checked for the status.
Using Wait? to pause the script
You can pause the script until the Receive Data command has completed by turning on (✓) the Wait? option.
Wait? lets you make sure that the Serial EX has finished receiving data
before continuing with the script. This can be important if subsequent
script events depend on the serial data having been received before
they execute.
Duration limit on Serial EX commands
When Wait? is off, the script continues as the command executes.
However, Serial EX commands never extend over page boundaries. If
a non-Waiting serial command is still executing when a page ends, the
command is terminated.
Closing a serial port
You should close a serial port when you are done with it, so that other
applications are not blocked from using it. Do this with Command:
Close Port. The only option with this command is to specify the port.
Use the Port Number: pop-up to choose which COM port to close.
Any serial ports opened by the Serial EX are automatically closed when
script playback ends.
Clearing a Serial EX command
To clear a Serial EX command from an event, or to leave the Serial
menu without specifying a command, choose Command: None.
210
7: Additional InfoChannel Designer 3 EXes
Billing EX
Billing EX
The Billing EX from Scala gives you the capability of automatically
recording which pages in an InfoChannel Designer 3 script have executed, and exactly when. This makes billing for advertising simple, as
the date and time that each item was actually shown is verified rather
than assumed.
The ordinary text log files generated by the Billing EX let you easily
recall, display, and print the information for ad clients who need to
review their ad exposure, and use the logged playback data to bill clients accurately.
Configuration
There are no configuration options for the Billing EX.
The Billing EX must be activated before it can be used. If the Billing
EX is not already activated, you can turn it on yourself in the Options
dialog. Choose Options from the Tools icon drop-down and select the
EXes tab. Click the Billing EX? button in the Optional EXes list to turn
on (✓) the EX.
Using the Billing EX
Use of the Billing EX is very simple. When it is activated, the EX displays the Billing column in the Main menu. Clicking in this column
211
7: Additional InfoChannel Designer 3 EXes
Billing EX
opens the Billing menu, which lets you turn on or off the information
logging capability of the EX on a per-page basis.
Billing column
The Billing menu contains the Track Billing? button. Its on/off status
is always reflected in the Billing column for every page. When Track
Billing? is on (✓), Yes appears in the column. When it is off—as it is
for any page on which you have not specified a billing status—No
appears in the column.
For all pages that run when Track Billing? is on, an entry is added to
the billing log file, a text file created by the Billing EX for this purpose.
The entry for a tracked page is one line showing:
212
•
the Player name (derived from the COMPUTERNAME environment
variable)
•
the page name
7: Additional InfoChannel Designer 3 EXes
Billing EX
•
the script name
•
timestamps showing exactly when playback for the page began
and ended
For pages that are set to No, a log entry is not recorded.
Select all the pages that you want to log, then click in the Billing column to open the Billing menu. Turn on Track Billing?, and notice all
the selected pages’ Billing column labels change to Yes.
Make sure that only the pages you want logged have Yes in the Billing
column. Then click Close to exit the Billing menu, and save the script.
The Billing EX log file
Here is how a segment of a typical log file looks:
The log file is cumulative, with entries for successive events being
appended to the end of it as the script loops.
Log file creation
The name of the log file has the format “billMMDD.log”, where MM
and DD are replaced with the file creation date in four-digit
month/day format. The file is saved in the Logs folder, the same as the
normal Ic.log file.
On a machine that is continuously running an ICDesigner script with
the Billing EX enabled, a new log file is created at midnight for each
day. This keeps individual log files from getting too long, but does
allow the files to accumulate if they are not cleared out on a regular
basis.
213
7: Additional InfoChannel Designer 3 EXes
MCI MPEG EX
The log file is re-saved at the conclusion of each individual tracked
event, so there is little chance that events have run but have not yet
been logged. Only if, for example, there were a system crash while the
script was on a page with Billing events might an event that has executed not be logged.
To be sure that your billing log contains all tracked events that have
run, exit the script by pressing Esc on the individual machine, or send
a restart command to a Player. This ensures that all events that have
executed are written to the log file before it is closed.
MCI MPEG EX
In an ICDesigner production, you can use a video that has been digitized—that is, converted into a digital format that the PC and ICDesigner recognize—and is available as a file on the hard disk or a
CD-ROM. The conversion process requires special hardware and software, but the resulting digital video can be displayed on any PC with
an application such as ICDesigner that supports the particular digital
format. The most common formats are AVI, QuickTime, and MPEG.
Animation compression
In order to save space and computer resources, the conversion process
not only digitizes the video images but also compresses them. In the
FLC animation format, for example, an animation is compressed by
saving the entire contents of the first frame and then only the difference between the first and second frames, the second and third, and so
on. When the animation is displayed in an ICDesigner script, each
frame is reconstructed and the viewer sees the original animation.
The MPEG compression method (named after its developers, the
Motion Picture Experts Group) is more sophisticated and is fast
becoming an international standard because it is capable of compressing synchronized audio together with video. This means, for example,
that you can display a full-screen digital video with stereo sound on
your PC monitor. MPEG animation files are identified by the filetype extension .MPG.
214
7: Additional InfoChannel Designer 3 EXes
MCI MPEG EX
Using MPEG animations in ICDesigner
Although digitized animations in the MPEG format can be decoded
in software and displayed from any PC that has the Windows Media
Player installed, in professional installations a special MPEG card is
generally used, to ensure that animations of any screen size are always
decompressed and displayed with the best possible quality. Such a card
is required, not optional, if you want to display full-screen, fullmotion MPEG video in ICDesigner at the highest possible quality.
To work best with ICDesigner, an MPEG video card should overlay
the MPEG video on the VGA output completely in hardware, without
interfering with DirectX graphics. This requires a 32-bit MCI driver
that supports full-screen DirectX windows. 16-bit MCI drivers can
also be used, but MPEG performance is considerably reduced.
ICDesigner can also work with MPEG cards that are not hardware
overlay cards, but which simply use hardware to assist in rendering the
MPEG video more smoothly than a purely software approach. See the
section on the MPEG Options dialog on page 217 for information on
settings related to the type of card. Also, consult the ICDesigner
MPEG Readme file, which may have additional information on compatibility with various types of MPEG cards.
The MCI MPEG EX needs to be activated before it can be used. First
install your MPEG card and its software according to the manufacturer’s instructions.
ICDesigner Note
If you do not have MPEG
hardware, you should not
turn on the MPEG EX.
Then turn the MCI MPEG EX on in the Options
dialog. Choose Options from the Tools icon dropdown and select the EXes tab. Click the MCI MPEG
EX? button in the Optional EXes list to turn on (✓)
the EX.
The MCI MPEG menu
You see the MCI MPEG menu when you click a button in the MCI
MPEG column for an event in the Main or List menus that represents
an animation in the MPG format. Otherwise, you see the standard
ICDesigner Animation menu (discussed in the section “Working in the
Animation menu” in chapter 14).
215
7: Additional InfoChannel Designer 3 EXes
MCI MPEG EX
The MPEG menu opens with the MPEG:Play event specified by
default, and looks like this:
To load an MPEG video file, click the File: button. You see the File
dialog, open to the Windows My Pictures folder. Double-click on the
name of a file with an .MPG file-type extension. You see the MPEG
menu again, with the name of the file in the File: button. The file
name is also reflected on the MPEG button on the Main or List menu.
By default, the MPEG video will play with its upper left corner in the
upper left corner of ICDesigner’s screen page, and its picture size
adapts to the size of the current page.
Some MPEG cards allow you to alter the position and size of the video
playback window, or require you to specify these settings. ICDesigner
provides the Pos? and Size? options for use with such cards.
To move the position of the MPEG video window on the screen page,
click the Pos? button to turn it on (✓), enabling repositioning. You see
a value control with horizontal and vertical offsets in pixels. The
default values, 0,0, represent the upper left corner of the page. Select a
value and change it to reposition the window.
To change the overall size of the video window, click the Size? button
to turn it on (✓), enabling resizing. You see a value control with horizontal and vertical dimensions in pixels. Change the default values as
necessary.
You can use the Preview button to see the effects of the position and
size settings you have made.
The Wait? button lets you control the progress of the script. By default
it is on (✓), meaning that the rest of the script waits—does not continue—until the MPEG event has completed. Turning this button off
allows other script events after the MPEG event to continue as soon as
the MPEG video has started.
216
7: Additional InfoChannel Designer 3 EXes
MCI MPEG EX
The MPEG: pop-up provides various related options, which work
similarly to the same options available for sound events in the Sound
menu.
MPEG: Play event
Use this event, described above, to choose an MPEG file, set its Size?,
Pos?, and Wait? options, and to begin play.
MPEG: Stop event
Use this event to stop play of an MPEG file.
MPEG: Wait event
Use this event to cause script execution to pause until a continuing
video started by an earlier MPEG:Play event finishes.
MPEG: None event
Assigning this event essentially removes an MPEG:Play, Stop, or Wait
event you may have previously assigned.
MPEG Options
The MCI MPEG EX has configuration settings accessible from the
EXes panel of the Options dialog. Click the MCI MPEG EX... button
under the EX Settings heading in the Options dialog to open the MCI
MPEG Options dialog:
The dialog contains buttons that allow you to temporarily alter or disable certain functions that can cause problems in MPEG playback
217
7: Additional InfoChannel Designer 3 EXes
MCI MPEG EX
with some hardware. If the video or sound for an MPEG segment does
not appear to play back satisfactorily in some way, experiment with
these options to see if you can solve the problem.
These options do not have any effect except during MPEG playback.
Display Mode
Clicking the Display Mode: button opens a screen mode dialog, which
allows you to specify a resolution and color depth for MPEG playback. (On some systems, adjusting the refresh rate may also be possible.) By default, this is set to Current, which tries to play the MPEG
video using the screen mode that is current at the time the video
begins. If your MPEG hardware requires that your graphics card be set
to a particular screen mode before playback starts, click the appropriate buttons in the screen mode dialog to choose the resolution, color
depth and/or refresh rate needed. The screen mode chosen is used only
for MPEG playback.
Use 16-bit MCI?
The Use 16-bit MCI? button should be turned on if you are using an
MPEG card that has drivers that use 16-bit (Windows 3.1) MCI.
Disable DirectDraw?
The Disable DirectDraw? button should be turned on when using
MPEG cards that must have exclusive access to DirectDraw. Otherwise, MPEG performance may be poor. With DirectDraw disabled,
no ICDesigner graphics can appear during the MPEG segment. Also,
when DirectDraw is disabled, the Wait? option and the MPEG:Wait
and MPEG:Stop events in the MPEG menu are not available.
Disable DirectSound?
If your MPEG card uses MCI to produce MPEG audio output
through the PC’s sound card, this could conflict with DirectSound.
Turning on the Disable DirectSound? button prevents this. This
option is not necessary with MPEG cards that have their own audio
outputs. When DirectSound is disabled, the Wait? option and the
MPEG:Wait and MPEG:Stop events in the MPEG menu are not available.
218
7: Additional InfoChannel Designer 3 EXes
MCI MPEG EX
Disable Double Buffering?
The Disable Double Buffering? option allows you to turn off your
graphics card’s double buffering feature, if present. Double buffering
can cause display problems with some MPEG setups, so this option is
on by default. With this option on, element wipes that take place at
the same time as MPEG playback may not be as smooth as they normally are. If you have MPEG hardware that uses a separate output
connector rather than using the screen of the same machine, you can
turn this option off.
Maximize On Playback?
When on, this option ensures that the MPEG playback window has
been maximized to fill the entire screen. We recommend leaving this
option on, but certain MPEG cards may require that it be off.
Close MCI After Playback?
Turning this option on forces the MPEG device to close after playback has completed, freeing up system resources. In most cases, having
this option on is unnecessary, and can increase loading times for the
MPEG clip.
Device Type
The Device Type: text box displays the name of the MPEG device type.
This is MPEGVideo by default and for most hardware does not need
to be changed. If your MPEG hardware uses a special device type, the
manufacturer’s documentation should provide its name, and you enter
it here. Changing the device type might allow you to use digital video
hardware that is not an MPEG device, such as a Motion-JPEG card.
Inactivity Timeout
The Inactivity Timeout value control can be used to work around
incompatibilities in the MPEG device drivers provided by some vendors. The symptom of this incompatibility is stalled script playback
after several days of sustained playback of scripts containing MPEG
segments.
To avoid the problem, set Inactivity Timeout to slightly longer than
the number of minutes in the longest MPEG segment used by the
script. For example, in a script that plays three different MPEG seg219
7: Additional InfoChannel Designer 3 EXes
Optibase EX
ments, of 3, 8, and 10 minutes in length, setting Inactivity Timeout to
11 or 12 minutes would work.
Click OK to make the settings you have chosen the defaults for future
sessions. Click Cancel to discard your changes and exit the dialog.
Optibase EX
It is possible to use the Optibase Videoplex MPEG card with the standard Scala MCI MPEG EX, according to the instructions in the
Mpeg.txt readme file. However, this is not recommended. For best
performance, ease of setup, and to allow you to take advantage of all
the Videoplex card’s features, Scala provides an EX especially for this
hardware.
To use the Videoplex card with the Optibase EX, any system with the
card must be configured with several items present:
•
the Optibase EX
•
the Videoplex driver
•
the link libraries rtdsdk.dll and rtdbin.dll
ICDesigner Note
The Optibase EX supports only
the Videoplex PLUS and Videoplex PRO cards. The Videoplex
Xpress is not supported.
These items are included with this release of ICDesigner and are automatically installed in the correct
places by the Scala installer program.
You do not need the MCI MPEG EX to use the
Optibase card.
The Optibase EX must be activated before it can be used. If the Optibase EX is not already activated, you can turn it on yourself in the
Options dialog. Choose Options from the Tools icon drop-down and
select the EXes tab. Click the Optibase EX? button in the Optional EXes
list to turn on (✓) the EX.
220
7: Additional InfoChannel Designer 3 EXes
Optibase EX
Configuring the Optibase EX
In the EX Settings list on the left of the Options dialog, find the Optibase EX... button. Click it to open the Optibase Options dialog.
Display Mode
The Display Mode: pop-up controls the video standard produced by
the Videoplex card’s video output. This must be set correctly to match
the other video equipment in your system. There are four possible
choices:
•
NTSC_M
•
NTSC_443
•
PAL_M
•
PAL_B_G443
NTSC_M is the default, producing NTSC type M as used in North
America and Japan. NTSC_443 is the NTSC variant that uses the
4.43 MHz color burst signal, which may be called for in some locales.
For PAL output, PAL_B_G443 represents the PAL type used in Britain, Germany, and most other places where PAL is the standard.
PAL_M is for use in Brazil and some other countries where the type M
variant is used.
Stream Type
The Stream Type: pop-up controls the mix of information packets that
make up the MPEG stream that is output by the card. The pop-up
221
7: Additional InfoChannel Designer 3 EXes
Optibase EX
must be set to the type of MPEG files that you will be playing on your
system.
The four possibilities are:
•
System
•
Transport
•
Audio
•
Video
System streams
The default stream type is a System stream. A System stream is a standard MPEG stream, consisting of a video and an audio track.
Transport streams
A Transport stream is a customizable stream type that allows for special video and audio features. For example, instead of a System
stream’s single audio track, a Transport stream might include several
alternate audio tracks, in various languages. The developer encoding
the MPEG file can define custom stream configurations, consisting of
whatever audio and video features supported by the MPEG standard
are needed. If you do use a Transport stream, it is likely you will also
have to adjust the Video PID and Audio PID settings from their
defaults (see the “Packet identification” section, which follows).
Audio streams
An Audio stream is an MPEG stream that contains only audio, and no
video.
Video streams
A Video stream is an MPEG stream that contains only video, and no
audio.
Packet identification
MPEG streams are made up of data packets of different types. There
are video packets and audio packets. Each type must have its own
unique ID number to identify itself to the MPEG decoder. There are
default values for these ID numbers, and in most cases these values,
initially shown in the Video PID and Audio PID value controls, can
222
7: Additional InfoChannel Designer 3 EXes
Optibase EX
remain unchanged. However, customers with special needs, such as
those specifying custom Transport streams, might need to adjust these
values for their particular setup. If your setup uses different PID values
for video or audio packets, use the appropriate value control to specify
a hexadecimal value of up to three digits for the ID.
Genlocking the Videoplex signal
The Videoplex card can accept an external video sync signal so that it
can genlock to other devices. Whenever there are other video devices
being used in conjunction with the Videoplex, they should ideally all
be genlocked to the same sync signal, to enable seamless overlays and
prevent tearing during transitions between different sources.
The Genlock Enabled? button controls whether the card accepts an
external video signal that may be present at its sync input port. When
the button is on (✓), external sync is accepted and the Videoplex uses
this to synchronize its own output. When the button is off, any external sync signal, if present, is ignored.
You should not turn this option on if no external sync signal is
present. If Genlock Enabled? is on but no external sync is available, the
Videoplex card will not produce output.
Synchronization-related display problems
The MPEG encoding process embeds presentation time stamp (PTS)
information in the MPEG file that an MPEG decoder uses to regulate
playback such that the audio and video portions remain synchronized.
If these time stamps are not present or are improperly specified in the
encoding process, playback can become unstable, with jittering or
jerky motion in the video.
A way to eliminate playback instability that results from bad or missing PTS information is to tell the decoder to ignore the time stamps.
Scala’s Optibase driver provides this capability, should you need to
make use of MPEG files that have not been encoded with good time
stamp information. Turn on (✓) the Disable PTS Synchronization?
button to solve playback problems that are the result of bad time
stamps.
223
7: Additional InfoChannel Designer 3 EXes
Optibase EX
The drawback to turning this option on is that without the synchronization information, the video and audio portions of longer MPEG
segments can drift out of sync with each other.
There are various possible reasons for MPEG image instability, and
there is no simple way to know whether a given file that is not playing
back correctly has PTS problems, other than to try this option. This
option should be otherwise left off.
Using and saving settings
Once you have made all the settings in the Optibase dialog that are
needed, you can click OK to close the dialog and store the settings for
use in this and future sessions.
Click Cancel to close the dialog, discarding any changes you made.
Using the Optibase menu
When the Optibase EX has been enabled, a new column appears in
the ICDesigner Main and Design List menus. The Optibase column
lets you create script events that control the Videoplex card. Click in
this column for a page or a special event to open the Optibase Digital
Video menu.
Optibase commands
The Optibase: pop-up lets you choose the command that this event
sends to the Videoplex card. There are five possible commands:
224
•
Play
•
Stop
•
Wait
•
Video
•
None
7: Additional InfoChannel Designer 3 EXes
Optibase EX
Play
The Play command lets you choose an MPEG file to play through the
Videoplex card MPEG decoder. Click the File: button to open the File
dialog, where you can choose a .MPG file to play. After you click OK
on the File dialog, you see the Optibase menu again, with the file
name on the File: button. When the event with this command is
encountered in the script, the MPEG file begins to play.
The Wait? option is available for the Play command. When Wait? is
on (✓), as it is by default, execution of the script pauses until playback
of the specified MPEG file completes. Then the events following the
Play event can proceed. If Wait? is off, script execution proceeds with
the events following the Play command as soon as the MPEG file
begins playing.
The Loops option is also available for the Play command. It allows you
to have the MPEG file automatically start playing again immediately
after it finishes, creating a video “loop”. The default is for the file to
play only once (Loops = 1). You can set this value control to a number
from 1 to 99, or the
(infinite) setting, which loops continuously
until the script stops or an Optibase: Stop command is received.
∞
Stop
Use the Stop command to stop play of an MPEG event started with a
preceding Play command.
Wait
The Wait command pauses script execution until an MPEG file currently playing finishes. Execution then continues normally with the
events following the Wait event after the MPEG playback finishes.
Use this event when you need certain events not to start until the end
of the MPEG, but the MPEG was started by a Play command with its
Wait? option turned off, so that intervening events could execute during MPEG play.
Video
The Video command exists to let you set its Passthrough? option. The
Videoplex card’s video input is normally routed directly to its output
(“passed through”) so that the card may be used easily in a chain of
225
7: Additional InfoChannel Designer 3 EXes
Windows Scripting EX
video equipment. When the Videoplex card is not playing MPEG digital video, any video signal appearing at the input is passed through to
the output. When MPEG playback begins, the card automatically
switches its output to the MPEG video instead, then switches back to
passthrough mode when the MPEG finishes. In this way, manual
switching between MPEG and external video passthrough modes
when working with both sources is avoided.
At times, however, you might want to block the external video input
from appearing at the Videoplex output. For example, it could be useful when you need to ensure that there is black (no signal) before the
beginning and after the end of an MPEG segment.
To control the passthrough status, use the Video command. The
Passthrough? option is on (✓) by default. To defeat the passthrough, so
that the only output of the card is its MPEG playback, insert a Video
command event with Passthrough? turned off.
None
Use the None command to remove a Play, Stop, Wait, or Video command.
Windows Scripting EX
The Windows Scripting EX allows you to take advantage of the power
and versatility of other scripting languages supported by Windows to
extend the capabilities of your ICDesigner scripts. It works by allowing you to launch external scripts written in languages such as
VBScript, JScript, and XML and providing a means of communication between these scripts and your ICDesigner scripts.
The Windows Scripting EX works with any Windows Scripting Host
(WSH)-supported language that is installed on the playback system.
The EX lets you make ICDesigner user variables available to the WSH
program for reading and writing. This enables data transfer between
the ICDesigner script and the WSH script. If the WSH script communicates with an external program or document such as a database,
its data is therefore accessible in turn to the ICDesigner script. This
226
7: Additional InfoChannel Designer 3 EXes
Windows Scripting EX
opens limitless possibilities for ICDesigner scripts to import and
export data to external application.
Using the Windows Scripting EX
You first need to create a script in a WSH-supported language that
accomplishes some useful function. The script should be saved in an
appropriate location accessible to the ICDesigner script, such as the
My Scripts folder.
If you intend to use the Windows Scripting EX, a Windows Scripting
EX event must appear as an event in your script. When the ICDesigner script executes this event, the Windows script is run.
Click the WinScript column for an event in your script to open the
Windows Scripting menu.
Click Select Windows Script: to open the File dialog, and navigate to
the WSH script. After you select the script and click OK, you see the
full path to the WSH script in the button.
227
7: Additional InfoChannel Designer 3 EXes
Windows Scripting EX
The Engine: pop-up automatically switches to the script type if its filename extension was one of the standard ones for that type of script. If
it does not, you should manually choose the appropriate engine. The
pop-up lists all the WSH scripting engines currently installed on the
system. Its list may include, but is not limited to, the following:
•
•
•
•
•
XML
VBScript
VBScript.Encode (encrypted VBScript)
JScript
JScript.Encode (encrypted JScript)
Sharing variables with the Windows script
The scrolling list on the left-hand side of the Windows Scripting
menu shows the names and types of all the user variables that have
been defined in the current ICDesigner script. Any of these variables
can be shared with the Windows script by moving them into the righthand list.
Move a variable to the Variables shared with Windows script list by
double-clicking it, or by selecting it and clicking the >> button. The
variables in this list are available for reading and writing by the Windows script.
To stop sharing an ICDesigner variable, double-click it in the righthand list to move it back to the left.
Using shared variables
Variables that have been shared with a Windows script can be manipulated and displayed just like other variables in ICDesigner within the
ICDesigner script.
Within the Windows script, use of the ICDesigner variables is essentially the same as using variables defined natively within the scripting
language.
The changes made by the Windows script to variable values are immediately available to the ICDesigner script, and vice versa.
228
7: Additional InfoChannel Designer 3 EXes
Windows Scripting EX
In VBScript, you read and write the value stored in an ICDesigner
variable by reading and writing the Value attribute:
iSomeVBVariable = ScalaInteger.Value
ScalaInteger.Value = 42
In VBScript, you don’t normally have to specify the “.Value” part
because VBScript supports the concept of a “default method”. When
a VBScript references an object without specifying the method/property, VBScript assumes you want to use the default method for that
object. In the case of ICDesigner variable objects, the default method
is the value property, so when the script shows this:
ScalaInteger = 42
It's actually a short form for this:
ScalaInteger.Value = 42
This distinction is important when you are using JScript because
JScript doesn’t have default methods. In JScript, you always have to
use “.Value”:
ScalaReal.Value
= 7.77;
ScalaInteger.Value = 777;
ICDesigner from the Windows script side
Apart from the variables that ICDesigner exports to a Windows
script's environment, ICDesigner also makes available the ScalaPlayer
object. The ScalaPlayer object is a special object that ICDesigner
makes available in the Windows Scripting environment. In VBScript
you can create it using:
CreateObject("ScalaPlayer.ScalaPlayer.1")
The ScalaPlayer object supports these methods:
Sleep(<time interval in ms>)
Puts the Windows Script to sleep for <time interval in ms> milliseconds. The function does not return until at least that amount of time
has passed, or ICDesigner playback is aborted (by hitting escape).
229
7: Additional InfoChannel Designer 3 EXes
File I/O EX
Log(<text string>)
Writes a string to the ICDesigner log.
DPrint(<text string>)
Similar to log, but writes to the Scala debug output monitor. This is
not generally useful to the end user and is mostly for internal testing
purposes.
Also available to Windows scripts launched through ICDesigner is the
ScalaFileLock object. It allows a Windows script to find media files
that belong to the ICDesigner script that launched the Windows
script. Any files that you can reference from ScalaScript, you can also
reference using the ScalaFileLock. In VBScript you can create one of
these objects using:
CreateObject("ScalaFileLock.ScalaFileLock.1")
This object has two methods:
LockScalaFile(<ScalaScript-style file name>)
This locks the file and also returns the Windows equivalent file name
(the file name in the format a Windows Script requires).
UnlockScalaFile
This unlocks the file.
File I/O EX
The File I/O EX provides numerous functions that make possible
input/output operations involved with loading and saving files under
script control. Because these functions are generally useful only to
advanced users with special requirements, they are not documented
here.
A brief description of each function is available in its help text (in the
Branch menu, scroll to the desired function in the Functions list, press
F1, and click on the function.)
230
7: Additional InfoChannel Designer 3 EXes
File I/O EX
The File I/O EX does not create a column in the Main or Design List
menus, and thus has no menu of its own.
You can find more complete descriptions of File I/O EX functions in
the “ScalaEX.txt” file, which you can read by choosing the shortcut
provided for it in the Windows Start menu. The file is also freely available in the Software Updates section of the Scala Web site,
http://www.scala.com.
231
8: Using the Multi-tile Editor
The button backdrops provided with InfoChannel Designer 3 give
you a wide variety of images that are particularly good for use as buttons. This is because they are special “multi-tile” files, which are
designed to be resized without becoming distorted. Unlike ordinary
clips, the pixels of which become elongated when the clip is enlarged,
multi-tile images use a unique multi-segment automatic tiling technique to allow them to expand and contract without changing the size
of the pixels in the image.
However, you are not limited to the button backdrops that ICDesigner provides. ICDesigner includes a tool that lets you create your
own button backdrops from any suitable image you have, and finetune the resulting multi-tile for best appearance. And multi-tiles are
not just for use with buttons. They can also be useful as text backdrops
that can be easily resized as the amount of text changes, and as economical page backgrounds.
How multi-tiles work
A multi-tile is a bitmap image file that begins life as an ordinary clip.
The file format used for multi-tiles, however, is extensible in such a
way that the image can behave differently when resized than a regular
clip does.
The object of multi-tiles is to make it possible to resize clip-art imagery without the distortions seen when stretching an ordinary bitmap.
When you resize a bitmap, such as a clip, all the pixels in the image are
elongated equally, resulting in an overall stretched appearance to the
clip image.
For example, if you start with a clip of a painting in a picture frame,
after resizing it to twice its original width, the left and right sides of the
frame appear to be twice the thickness of the top and bottom of the
frame. If the clip were made into a multi-tile, the frame could retain its
original proportions on all sides. The “framing” portions of an
234
8: Using the Multi-tile Editor
How multi-tiles work
image—the top, bottom, left and right sides—retain their original
proportions no matter how you resize the multi-tile as a whole.
as stretched clip
multi-tile source image
as expanded multi-tile
Making a multi-tile from an ordinary image is accomplished by using
the ICDesigner Multi-tile Editor to slice the source image into nine
tiling regions. The regions define how the various areas of the source
image are duplicated to fill the additional space when you make the
finished multi-tile wider or taller. There are three slices in each direction. The four corner regions never change size and are not duplicated
when the multi-tile is sized.
Left slice
Center slice
Right slice
nine multi-tile regions
Top slice
center-middle
region
Middle slice
Bottom slice
corner regions
The middle regions of the four outer slices are duplicated in the appropriate direction when the multi-tile is sized: the Top and Bottom middle regions are duplicated horizontally, and the Left and Right middle
regions are duplicated vertically. This ensures that the sides of the
image, where you would typically have features such as beveled edges,
235
8: Using the Multi-tile Editor
The Multi-tile Editor
shadows, etc., continue to fit with the corner regions and do not
change their proportions. The “center-middle” region is tiled, or
duplicated both horizontally and vertically as necessary to fill the internal area of the multi-tile at the desired size.
The process of creating a useful multi-tile is primarily a matter of
defining the slices so that the multi-tile looks good at any size. This
involves determining where the edges of each slice must be so that the
internal pattern, if any, is tiled without any ugly discontinuities. Properly adjusted, the edges line up with the image’s internal areas and
look smooth and consistent no matter how you resize it. Getting it
right can require some experimentation.
The Multi-tile Editor
You access the ICDesigner Multi-tile Editor through the Tools dropdown. On the Main menu, click Tools and choose Multi-tile Editor.
You see the Multi-tile Editor screen:
236
8: Using the Multi-tile Editor
The Multi-tile Editor
You create a multi-tile in the Multi-tile Editor by modifying a source
image. The source image can be any graphics file that ICDesigner recognizes, although for the purpose of creating a multi-tile, the image
ideally should be fairly small and contain some type of pattern that is
suited for tiling. Here is how the editor looks with a typical multi-tile
open:
Defining the multi-tile involves specifying the dimensions of the six
slices of the image file, plus a sizing increment called granularity.
Image areas
The Multi-tile Editor screen has two display areas. The large area to
the left is the Graphic Editor, showing an enlarged version of the
source image, and is where you actually define the slices. The name of
the currently open file is shown in the bar above this area. In the lower
right of the editor is a tabbed display section. It contains the Preview
panel, which shows a stretched version of the source image, using the
settings you have defined for it, and the Original panel, which shows
the image at its natural, unexpanded dimensions.
237
8: Using the Multi-tile Editor
The Multi-tile Editor
Slice controls
Above the Preview/Original panels are the buttons of the Numeric Editor, which control the vertical and horizontal slices and the way they
are tiled. Each of the six slice buttons displays two pixel values: the
first is an offset (the number of pixels from the top edge or left edge of
the source image) and the second is a width.
When you select one of the buttons, the corresponding slice is highlighted on the Graphic Editor’s enlarged image. Changing the
Numeric Editor values visibly changes the dimensions of the slice in
the editor. Similarly, clicking in the enlarged image selects a slice, and
dragging the graphic handles on the sides of the slice causes the pixel
values on the corresponding button to update. You can use either or
both methods to define your slices, whichever is most convenient.
Granularity
In ICDesigner, you can resize a clip arbitrarily to any pixel size. Multitiles, however, because of the unique way they work, are resized in discrete increments that may be larger than a single pixel. The Granularity value control specifies the increments by which the size of the
multi-tile can be changed. A large granularity limits the number of
possible sizes you can make the multi-tile; a small granularity lets you
resize more freely.
The control lets you adjust the horizontal and vertical granularity
independently, in pixels. Click the Granularity control to activate it.
This also highlights the granularity setting graphically on the enlarged
image, and you can adjust the setting using the handles just as with
slices.
Generally, you want the granularity to be small, such as 3 × 3. This
allows greater precision in sizing the multi-tile. The limiting factor in
specifying the granularity is the source image, and how you want it to
look when adjusted to its final size. You need a value that produces
results that look good when the multi-tile is sized.
238
8: Using the Multi-tile Editor
The Multi-tile Editor
With some source images, the exact granularity setting is not critical.
But others call for a particular granularity value. The two main reasons
for needing to specify a particular granularity value are:
•
to prevent discontinuities between the center-middle slices and
the Bottom and Right slices.
If the granularity is smaller than the size of the center-middle slice,
segments of the Center and Middle slices (in granularity-sized
increments) are used to complete any odd-sized area on the right
and bottom of the fill area. These segments might not match up
with portions of the central pattern that could be present in the
Bottom/Right slices.
•
to ensure that the pattern contained in the center-middle region is
always reproduced in its entirety, and is not cut off on the bottom
and right sides.
When the granularity is made equal to the size of the tile defined
by the Center and Middle slices, only whole center-middle tiles
can be displayed, and the pattern cannot be cut off.
If the source image contains a repeating pattern, the granularity should
generally match the size of the smallest unique portion of the pattern,
so that when duplicated, the slices fit together seamlessly and you get
the best sizing flexibility. You might also want to do this to prevent the
repeated part from appearing cut off on the bottom and right side of
the multi-tile, as it would when the multi-tile had a size that was not a
multiple of the size of the center-middle region.
The granularity values can range from 1 × 1 to a maximum equal to
the size of the center-middle region of the image.
Relationship between granularity and the center-middle region
The granularity of a multi-tile is not necessarily the same as the size of
the center-middle region. Aside from the fact that the granularity cannot be larger than the size of the center-middle region, the settings of
Granularity, Center, and Middle are independent.
239
8: Using the Multi-tile Editor
The Multi-tile Editor
The advantage of this independence is that it allows you to optimize
both the precision with which you can resize the multi-tile and the
quality of the resulting image in the multi-tile when it has been sized.
The center-middle region is used as the basic tile unit to fill the multitile; ICDesigner always reproduces the full tile or as much of a full tile
as possible in the space available. When the final size of the multi-tile
can’t be filled by complete tiles, partial tiles are used. The size of the
partial tiles can vary in granularity-sized increments. (The illustrations
on page 242 make this easier to see.)
Some multi-tile images have a large-scale pattern or shape in them and
thus look best with a large center-middle tile. However, the nature of
some large-scale patterns can allow a small granularity.
Some examples help to illustrate these different possibilities.
If the pattern filling the source image is a checkerboard, alternating
pixels of two different colors, the ideal dimensions of the center-middle region would be 2 pixels wide and 2 pixels high. Any other even
numbers would also work well. A setting that included an odd number, however, would disrupt the even checkerboard pattern, producing
an unattractive discontinuity at the boundaries of each slice. Any granularity setting would work equally well.
The “Ball-b”, “Balls-b”, and “Cheese-n” multi-tiles supplied with
ICDesigner in the ScalaArt:\ClipArt\GuideExamples folder illustrate
the very different effects possible when for the same source image, the
granularity and center-middle region settings are varied. The first two
use the same blue sphere as a source image.
Create a blank page and use Add from the Design menu to open
Ball-b.png into the page. Initially you see the source image, the plain
sphere. Grab a corner handle and make the multi-tile larger. Notice
how it appears to become a solid blue flat surface with rounded edges
and corners. This is because of two factors: 1) the granularity is as fine
as possible (1 × 1); and 2) the center and middle slices are just a pixel
wide, matching the granularity. (These settings were saved with the
multi-tile when it was created.)
240
8: Using the Multi-tile Editor
The Multi-tile Editor
The center and middle slices are what is duplicated to make the multitile larger, and because they are from the center of the sphere where
the colors are solid, the resulting multi-tile surface is solid and the
edges are smooth.
source image
enlarged multi-tile
Center slices are duplicated
to fill horizontal space
Granularity = 1 x 1
Center-Middle slice size = 1 x 1
Middle slices are duplicated
to fill vertical space
If you now import Balls-b.png, at first you see the same sphere. When
you make it larger, however, the results are very different. In this
multi-tile, the saved granularity and Center/Middle slice dimensions
also match, but now they are large. The entire square central area of
the sphere is duplicated, giving the multi-tile surface an upholstered
appearance. You can size it only in multiples of the granularity. If the
granularity were reduced, you would see breaks around the edges of
241
8: Using the Multi-tile Editor
The Multi-tile Editor
the multi-tile, because the edge slices of the sphere would not match
up with the Center/Middle slices.
source image
Granularity = 44 x 44
Center-Middle slice size = 44 x 44
enlarged multi-tile
three Center slices and two
Middle slices contain six
center-middle region “tiles”,
which match up with the
edge slices
Finally, import Cheese-n.png. It has a large-scale pattern, but one that
is designed to blend seamlessly with itself along the edges, so that
when tiled, the repetition of the pattern is not so obvious. With this
kind of pattern, you can generally use any convenient value for the
granularity. In this case, as in “Ball-b”, the granularity was saved as
1 × 1, so that you can size the multi-tile with complete freedom. However, the center-middle region is the entire face of the image. This
allows all of the Swiss-cheese pattern to show on the face of the multitile.
source image
enlarged multi-tile,
showing repeating
pattern
two center-middle tiles
Granularity = 1 x 1
Center-Middle slice size = 40 x 40
242
partial tiles expand in increments of Granularity setting
8: Using the Multi-tile Editor
Working in the Multi-tile Editor
Open
Click the Open icon in the Multi-tile Editor toolbar to open the File
dialog, where you can choose a source image in any
format, or an existing multi-tile (.PNG format).
ICDesigner Note
When you have chosen an image and clicked OK, you
The PNG format is not exclusive to ICDesigner multi-tile
see the Multi-tile Editor with the image you chose
files. It is a general-purpose
showing in the display areas, ready for editing. The
image file format like BMP
name of the image you opened appears in the bar
and TIFF. You might find clipart in the PNG format, which
below the toolbar.
you could use in ICDesigner
as clips, or source images for
multi-tiles. You can also open
a multi-tile PNG file into
another application that recognizes PNG files. In that
case, the application would
see the file as containing just
the source image.
Save
Click the Save icon in the Multi-tile Editor toolbar to
open the File dialog, where you can save a multi-tile
you have created or edited. You can save the multitile to any location, but using the folders provided is
recommended for the sake of organization.
Regardless of the format of the source image, multi-tiles are saved as
.PNG files.
Exit
Click Exit (or the close button) to exit the Multi-tile Editor and return
to the Main menu. You will be prompted to save any unsaved
changes.
Working in the Multi-tile Editor
The basic strategy to make a multi-tile is to make the framing slices
(Left, Right, Top, and Bottom) just wide enough to contain the parts
of the source image that form the borders of the image. The Center
and Middle slices then contain the areas of the image that can be
duplicated.
The trick is adjusting the slice edges so that they precisely match the
edges of the pattern that is to be repeated. The Center slice should be
exactly as wide as the pattern, and the Middle slice exactly as tall.
These slices can also be multiples of the width/height of the pattern. If
243
8: Using the Multi-tile Editor
Working in the Multi-tile Editor
the framing slices contain any of the central pattern, their edges should
be at the edges of the pattern. How this works becomes more obvious
when you try it for yourself.
Although you can use any image to make a multi-tile, for best results
you should use a source image created especially for this use. Typically
this is a rectangular graphic that has shading or other special treatment
of the edges and corners, with a central pattern that is designed to fit
together with itself seamlessly when tiled. This way, the tiling isn’t
apparent: the multi-tile interior looks like a single, unbroken surface
and the edges are continuous. Clip-art libraries, particularly those
intended for Web authoring, often contain graphics that have been
designed with this basic purpose in mind. You can also use an external
paint program or something similar to create such images.
Working with the source image
When you first open a plain image (one that is not already a multi-tile)
into the Multi-tile Editor, the Center and Middle
slices are set to occupy the entire image. If your image
ICDesigner Note
is nothing but a uniform pattern, the other slices
If you open a new image that is
the same size as the current
would be superfluous and you could simply adjust
image, the slice definitions for
the granularity and save this immediately to create a
the current image are retained.
multi-tile.
But assuming that your source image has some edge features that
should be preserved, you need to reduce the dimensions of the Center
and Middle slices, thereby increasing the dimensions of the Left,
Right, Top, and Bottom slices so that they enclose the borders of the
image.
Selecting slices
A given area of the image is usually a part of two slices, a horizontal
slice and a vertical slice. The bottom left corner of the image is part of
both the Bottom and Left slices, for example. You can always select
exactly the slice you want by clicking the corresponding button in the
Numeric Editor.
As a shortcut to using the buttons, you can click on the image itself in
the Graphic Editor. You switch between selection of a given area’s ver244
8: Using the Multi-tile Editor
Working in the Multi-tile Editor
tical slice and selection of its horizontal slice by clicking within the
selected slice. Whenever you click within a slice that is already
selected, the enlarged image changes from displaying horizontal to vertical slices, or vice versa. The place in the selected slice where you click
to change modes determines which of the three possible slices in the
other direction will be selected.
For example, if the Left slice is selected and you click in the lower part
of it, the Bottom slice becomes selected. If the Center slice is selected
and you click in the middle of it, the Middle slice becomes selected.
Use the dashed lines that indicate the boundaries of the other slices as
your guide.
Clicking in an unhighlighted area of the image, or in an area outside
the image, selects another slice without changing the horizontal/vertical display mode. If you click somewhere within some other slice, that
slice is selected. If you click somewhere that is not part of any slice, the
nearest slice is selected. For example, when the Bottom slice is highlighted, clicking anywhere in the Top slice or above the image selects
the Top slice.
Slice selection in the Graphic Editor becomes more clear once you
have worked with it a bit.
Adjusting slices
First, click on the enlarged image. For a newly-opened image, it highlights, and the entire image is enclosed in a box with graphic handles
on the left and right. The Center button also highlights, indicating
that you have selected the Center slice. When a slice is highlighted,
dashed lines indicate the boundaries of other slices, for reference.
Right now, you see what appears to be a dashed box around the entire
image, because the Top, Bottom, Left, and Right slices are all minimized around the outside of the image.
Drag both of the graphic handles toward the center of the image. The
offset and width values in the Center button change accordingly. The
boundaries of the adjacent slices also adjust so that their edges coincide. Think of the edges of all the adjacent slices as being attached, so
that as you adjust the slices, gaps and overlaps are prevented. Note that
245
8: Using the Multi-tile Editor
Working in the Multi-tile Editor
only the area of the current slice, within the solid box, remains highlighted.
If you now click again within the highlighted area, you select the Middle slice. The Middle slice is still the full height of the image, so it is
highlighted accordingly, and the handles now appear on the top and
the bottom of its bounding box. Drag these handles toward the middle of the image as well.
Separating the edges of the slices
By default, the edges of neighboring slices are “stuck together”: when
you move the right edge of the Middle slice, for example, the left edge
of the Right slice moves with it. Usually this is what you want, because
it helps ensure that the source image’s pattern continues to match
from slice to slice. However you can adjust the edges of all slices independently if you want.
To have independent control of the edge of a slice, hold down Ctrl
while dragging its handle. The edge of the neighboring slice remains
where it is while you position the selected slice edge as usual. Once
separated like this, the two edges remain independent until you move
one on top of the other again.
The capability to separate the slices can occasionally be useful, for
example if there is only one part of the source image that you wish to
constitute the repeated multi-tile pattern.
246
8: Using the Multi-tile Editor
Working in the Multi-tile Editor
The bevgrd-h.png multi-tile illustrates these ideas:
4-pixel-square center-middle
tile contains the repeating
pattern unit, matching the
Granularity setting
guide lines show how slice
edges are separated
Using the preview image
As you drag the handles, you notice the Preview image changing in
real time to reflect the settings you make. The example expands to fill
the preview box as best it can given the current settings. (If the source
image is large, it may not be possible to fit a stretched image completely in the Preview panel, and you see a portion of the image. With
a very large source image, the sample may even extend beyond the
edges of the box. In this case, you can drag the sample around in the
Preview panel to see the outer areas of the sample.)
Because the size of the box is limited, sometimes changing settings
causes the size of the sample to jump. But it always reflects how the
current slice and granularity settings you have made work together to
produce a stretched version of the source image.
247
8: Using the Multi-tile Editor
Working in the Multi-tile Editor
Observe the sample multi-tile carefully to see how your slice adjustments affect the stretched image. Because the feedback to all your
changes is immediate, it is easy to see where any problems are.
248
Appendix A: Function and variable reference
Standard ICDesigner functions
InfoChannel Designer 3 provides many standard functions and variables for general use. Their operation and basic syntax is similar to corresponding functions and variables in other programming languages.
When a variable or function is evaluated, it always produces a result or
return value. The return value can be a number, a string, or a logical
value. It can be placed into a variable or used as the basis for a comparison. The difference between functions and system variables is that
functions require one or more initial pieces of information (in parentheses) in order to get the return value. A system variable always has a
value, maintained by ICDesigner, which you can use at any time.
Numeric functions work on or with numeric values (including expressions). “String” functions work on or with string. Expressions are also
accepted.
ICDesigner Note
To make the text more easy to
follow, we show variable names
in SMALL CAPS, and functions
and logical operators in ALL
CAPS. However, you do not
have to use any capitalization
when you use variables, functions, or operators. You can
use all lowercase, or any mixture of upper and lowercase.
Numeric values expected by or returned by a function
or variable in ICDesigner are in most cases whole
numbers (“INT”: integers, including negative numbers), but in some cases can be floating point numbers (“REAL”: real numbers, which can have a
fractional portion). You can assign integer values to
real variables freely. If you supply a real value to an
integer variable, the integer portion is used and the
decimal portion is discarded. For functions, the value
supplied must match the type expected by the function, or an error is generated when the script runs.
Logical values in ICDesigner can be specified as TRUE or FALSE, but
they are also accepted, and are always displayed by ICDesigner, as ON
or OFF, which are synonymous with TRUE and FALSE.
Note that spaces in expressions are unnecessary and are ignored, but
are used in our examples for clarity.
250
Appendix A: Function and variable reference
Standard ICDesigner functions
Numeric functions
MIN (INT1,
INT2)
If INT1 is less than INT2, this function returns INT1. Otherwise, it
returns INT2.
MAX (INT1,
INT2)
If INT1 is greater than INT2, this function returns INT1. Otherwise, it returns INT2.
ABS (INT)
If INT is a negative number, this function returns -INT. Otherwise,
it returns INT.
SIGN (INT)
This function returns -1, 0, or 1, depending on whether INT is a
negative number, zero, or a positive number.
RANDOM (INTMIN,
INTMAX)
This function returns a random integer in the range INTMIN...
INTMAX.
SEED (INT)
This function provides a seed (starting point) for the random
number generator. You should always do this before using
RANDOM(), to avoid duplicate sequences of random numbers.
INT can be any number; using the system variable CLOCK is good
for this. This function always returns ON (true).
String functions
LENGTH (STR)
This function returns the number of characters in the string STR.
LEFT (STR,
INT)
This function returns the INT first characters of the string STR. If
the length of STR is less than or equal to INT, it returns the entire
string.
RIGHT (STR,
INT)
This function returns the INT last characters of string STR. If the
length of STR is less than or equal to INT, it returns the entire
string.
251
Appendix A: Function and variable reference
Standard ICDesigner functions
SUBSTRING (STR,
INTPOS, INTCHARS)
This function returns a portion of string STR starting at position
INTPOS and containing INTCHARS characters. INTPOS should be
in the range from 1 to LENGTH (STR). If INTCHARS is greater
than (LENGTH (STR) + 1) - INTPOS, SUBSTRING() returns as
many characters as possible. If INTPOS is greater than LENGTH
(STR), it returns an empty string (“”).
SEARCH (STR,
INT, T)
If T is a sub-string of STR starting at a position greater than or
equal to INT, this function returns the position of the first occurrence of T within STR. Otherwise, it returns 0.
CODE (STR)
This function returns the ANSI Latin-1 code of the first character
in the string STR. If STR is empty, it returns 0.
CHAR (CH)
This function returns a one-character string consisting of the
ANSI Latin-1 character defined by the code CH.
FORMAT (FMT,
INT)
This function formats integer numeric values for various output
conventions. By including a format string FMT that contains certain special characters, you can control the way the number INT is
displayed, regarding factors like fixed decimal point, leading and
trailing zeros, and sign.
252
#
reserves one digit column in the formatted string
.
includes a fixed decimal point in this position
0
includes leading or trailing zeros out to this column position
-
places minus sign in its own column
+
places sign in its own column, and uses + for positive values
<
left-aligns the columns instead of right-aligning
Appendix A: Function and variable reference
Standard ICDesigner functions
Examples:
Text entered in Design menu
Script output
ABC !(FORMAT (“####”,1234)) XYZ
ABC 1234 XYZ
ABC !(FORMAT (“####”,-34)) XYZ
ABC -34 XYZ
ABC !(FORMAT (“0###”,34)) XYZ
ABC 0034 XYZ
ABC !(FORMAT (“####”,4)) XYZ
ABC
ABC !(FORMAT (“####<”,4)) XYZ
ABC 4
ABC !(FORMAT (“####”,12345)) XYZ
ABC 12345 XYZ
ABC !(FORMAT (“#0.#0”,120)) XYZ
ABC 1.20 XYZ
ABC !(FORMAT (“#0.#0”,12)) XYZ
ABC 0.12 XYZ
ABC !(FORMAT (“#0.#0”,-12)) XYZ
ABC -0.12 XYZ
ABC !(FORMAT (“-#0.#0”,12)) XYZ
ABC - 0.12 XYZ
ABC !(FORMAT (“+0#.#0”,12)) XYZ
ABC +00.12 XYZ
4 XYZ
XYZ
The shaded examples show various ways of formatting with a
fixed decimal point. You can do decimal currency calculations and
display amounts properly by combining one of these formatting
approaches with integer amounts in the hundredths unit. For
example, to display amounts in dollars, store all amounts in cents
($1.20 = 120 cents), then display the amounts with two decimal
places as shown above.
You can use the FORMAT() function “implicitly” to display values embedded in a text element by including the formatting characters along with the variable. See “Formatting numbers to display
decimal values” on page 94 of chapter 3 for more information.
FORMATREAL (FMT,
REAL)
This function formats real number values for various output conventions. It uses the same format string special characters as
FORMAT(), described above, and these operate in the same way
to format the final string.
253
Appendix A: Function and variable reference
Standard ICDesigner functions
Expression evaluation functions
EVALSTRING (STR)
This function evaluates the string expression contained in the
variable STR and returns the result to a text variable. If STR did not
contain a valid expression, EVALSTRING() returns an empty
string (“”).
Example:
STR
= “LEFT(“HumanTouch”,5)”
= EVALSTRING (STR)
STR2
(STR2 contains “Human”)
EVALINT (STR)
This function evaluates the integer expression contained (as a string)
in the variable STR and returns the result to an integer variable. If
STR did not contain a valid expression, EVALINT() returns 0.
Example:
= “(6 * 5) - 25”
INT = EVALINT (STR)
STR
(INT contains 5)
EVALREAL (STR)
This function evaluates the real expression contained (as a string)
in the variable STR and returns the result to a real variable. If STR
did not contain a valid expression, EVALREAL() returns 0.
Example:
STR
= “10/3”
= EVALREAL (STR)
REAL
(REAL contains 3.3333)
EVALBOOL (STR)
This function evaluates the boolean (logical) expression contained
(as a string) in the variable STR and returns the result to a logical
variable. If STR did not contain a valid expression, EVALBOOL()
returns OFF (false).
Example:
= “NOT (5 = 10)”
BOOL = EVALBOOL (STR)
STR
254
(BOOL contains ON (true))
Appendix A: Function and variable reference
Standard ICDesigner functions
Conditional function
CONDITIONAL (LOG-EXP,
TRUE-EXP, FALSE-EXP)
This function evaluates the logical expression LOG-EXP, and on
the basis of that evaluation returns the value of either TRUE-EXP or
FALSE-EXP. If LOG-EXP is true, TRUE-EXP is evaluated and
returned; if LOG-EXP is false, FALSE-EXP is evaluated and returned.
TRUE-EXP and FALSE-EXP can be text, numeric, or logical expressions.
Example:
CONDITIONAL (COUNT<20,
“Counting...”, “Done!”)
This example returns “Counting...” if LOG-EXP is evaluated while
COUNT is less than 20, otherwise it returns “Done!”.
Type conversion function
VALUE (STR)
When STR is a string consisting of numeric digits, VALUE() converts STR to the corresponding integer. It returns 0 if STR does not
start with a number (leading white space is ignored). VALUE recognizes decimal (base 10) numbers by default, hexadecimal (base
16) when STR is prefixed with a dollar sign ($), and binary (base
2) when STR is prefixed with a percent sign (%).
Examples:
= VALUE (“015”)
= VALUE (“$0F”)
INT = VALUE (“%00001111”)
INT
INT
(INT contains 15)
(INT contains 15)
(INT contains 15)
System functions
GETENV (STR)
This function returns the contents of the DOS environment variable STR. If the variable is not defined, GETENV() returns an
empty string (“”).
255
Appendix A: Function and variable reference
Standard ICDesigner functions
EXISTS (PATH)
This function returns ON (true) if, and only if, a file exists as specified by Path. If no drive letter is included, the Path is assumed to
be relative to the folder containing the script using this function; if
a drive letter is included, then that absolute path is searched.
Example:
BOOL=
EXISTS (c:\config.sys)
(BOOL contains ON (true))
SYSTIME (MODE)
This function returns a value representing some portion of the
current date and time. You specify the units using MODE, which
can be any one of the following:
MODE you give
Range of values
year
2002, 2003, 2004...
month
1...12
day
1...31
hour
0...23
minute
0...59
second
0...59
weekday
1...7
Example:
INT
= SYSTIME (month)
(INT contains 6, assuming
the month is June)
VERSION (“ModuleName”)
REVISION (“ModuleName”)
Returns the version/revision number of a module (for example,
“player.book” or “branch.ex”). Use the module names as shown in
the Info panel of the ICDesigner Options dialog.
256
Appendix A: Function and variable reference
System variables
System variables
Time variables
TIME
This variable contains a string with the current time in the current
format (defined by the Timing EX settings in the ICDesigner
Options dialog).
DATE
This variable contains a string with the current date in the current
format (defined by the Timing EX settings in the ICDesigner
Options dialog).
WEEKDAY
This variable contains a string with the name of the current day of
the week in the current format (defined by the Timing EX settings
in the ICDesigner Options dialog).
CLOCK
This variable contains the number of milliseconds since this
ICDesigner session began.
Other system variables
PLATFORM
This variable contains the name of the OS platform. For Windows 2000, this returns “Win32”.
CPU
This variable contains the CPU name, such as “486” or “Pentium”.
MEMORY
This variable contains the total amount (not the amount free) of
RAM in bytes.
257
Appendix A: Function and variable reference
Sound function
Sound function
ICDesigner provides one function related to CD sound.
CD.LENGTHTRACK (TRACKNUM)
This function returns a string containing the length of the CD
track whose number is TRACKNUM. If TRACKNUM was not valid,
this function returns an empty string (“”).
Example:
STR
= CD.LENGTHTRACK (4)
(STR might contain “3:54”)
File I/O functions
The File I/O EX provides numerous functions that make possible
input/output operations involved with loading and saving files under
script control. Because these functions are generally useful only to
advanced users with special requirements, they are not documented
here. You can find descriptions of each of these functions in the
“ScalaEX.txt” file available in the Software Updates section of the
Scala Web site at http://www.scala.com.
Sound variables
ICDesigner makes certain variables related to sound available for use
in specialized scripts. These variables can be used for interactive music
projects, such as creating a “virtual CD player” as a script.
258
Appendix A: Function and variable reference
Sound variables
The CD variables are read-only, so you cannot assign values to them.
The Mixer variables, however, are read/write, so you can read their
current value or set a new value.
Name
Type
Description
Example
CD.TrackTime
text
Elapsed time of the current
CD track
“01:23”
CD.TrackLength
text
Total length of the current
CD track
“4:56”
CD.DiscTime
text
Time from beginning of
CD to current location
“23:45”
CD.DiscLength
text
Total playing time for the
entire CD
“54:32”
CD.Track
integer
Current track number
3
CD.MaxTracks
integer
Total number of tracks on
the current CD
13
CD.NumDrives
integer
Total number of CD drives
1
CD.FirstDrive
text
Letter of the first CD drive
“D”
Name
Type
Range
Description
Mixer.MasterVol
integer
0...255
Master Volume level
Mixer.MasterPan
integer
-255...255
Master Pan setting
Mixer.CDVol
integer
0...255
CD Volume level
Mixer.CDPan
integer
-255...255
CD Pan setting
Mixer.SampleVol
integer
0...255
Sample Volume level
Mixer.SamplePan
integer
-255...255
Sample Pan setting
Mixer.MIDIVol
integer
0...255
MIDI Volume level
Mixer.MIDIPan
integer
-255...255
MIDI Pan setting
Mixer.LineVol
integer
0...255
Line Volume level
Mixer.LinePan
integer
-255...255
Line Pan setting
Mixer.MicVol
integer
0...255
Mic Volume level
259
Appendix A: Function and variable reference
Operators
Operators
Arithmetic operators
=
Examples:
ICDesigner Reminder
In ICDesigner, “ON” = “TRUE”
and “OFF” = “FALSE”.
Assignment of value, equality comparison
=3
= (6 = 5)
N
L
+
Addition, string concatenation
Examples:
N
S
-
=3+2
= “Jig” + “&Saw”
=3-2
= -B
(N contains 1)
(if B contains -6, N contains 6)
N
=3*5
(N contains 15)
N
= 12 / 4
(N contains 3)
N
N
Multiplication
Example:
/
Division
Example:
mod
Modulo (remainder after integer division)
Example:
**
(N contains 5)
(S contains “Jig&Saw”)
Subtraction, negation
Examples:
*
(N contains 3)
(L contains OFF)
N
= 10 mod 3
(N contains 1)
Exponentiation
Example:
N
= 3 ** 2
(N contains 9)
Relational and logical operators
>
Greater than
Examples:
ICDesigner Reminder
ICDesigner is not casesensitive, so capitalization is
ignored in string comparisons.
260
<
= (10 > 10)
L = “abc” > “def ”
(L contains OFF)
(L contains OFF)
= (10 < 10)
= “abc” < “abc”
(L contains OFF)
(L contains OFF)
L
Less than
Examples:
L
L
Appendix A: Function and variable reference
Operators
Relational and logical operators (Continued)
>=
Greater than or equal to
Example:
L
L
<=
(L contains ON)
L
= (10 <> 10)
(L contains OFF)
L
= (3 >2) AND (1 > 10)
(L contains OFF)
= (3 >2) OR (1 > 10)
(L contains ON)
Logical “OR”
Example:
NOT
= (10 <= 10)
Logical “AND”
Example:
OR
L
Not equal to
Example:
AND
(L contains ON)
(L contains ON)
Less than or equal to
Example:
<>
= (10 >= 10)
= “ABC” >= “abc”
L
Logical “NOT”
Example:
L
= NOT (1 > 10)
(L contains ON)
261
Appendix B: Licensing issues
Because Scala InfoChannel Designer 3 lets you incorporate art, music,
sound, and video, it’s possible that some of the content you incorporate will need to be licensed. Your license for the ICDesigner software
does not require you to license productions you create with ICDesigner. However, this license does not cover free sub-licensing of any
content not supplied by Scala that you might choose to include in a
production. It is your responsibility to obtain the required licenses
from the content owners of any images, sounds, music, or video clips
you have included in your production.
In many cases, you obtain a license for content simply by purchasing it
in the form of a CD-ROM or other medium. For example, many
companies sell font, clip-art, sound-sample, and MIDI file CDROMs, and by purchasing the disc you receive a “blanket” license to
distribute any of the contents. However, each vendor of multimedia
content has its own licensing arrangements, and you might be
required to pay license fees for certain content on a per-use basis, to
include credit indicating the source of certain items, or to abide by any
of the licensor’s restrictions. You must read all of your license agreements carefully to know for sure.
Failure to obtain a license and/or fulfill its obligations could leave you
vulnerable to legal action by the licensors.
The “End User License Agreement” provides detailed explanation
about your rights and obligations when using ICDesigner. The Agreement is printed at the beginning of the ICDesigner “Basic Authoring”
User’s Guide, and is also displayed at the beginning of the installation
procedure for any Scala software.
GIF and TIFF files
It is possible that your production might include art or photos in the
GIF or TIFF-LZW formats. Algorithms that are needed to view the
files are licensed from Unisys Corporation. For licensing terms on GIF
263
Appendix B: Licensing issues
ICDesigner fonts, backgrounds and sounds
and TIFF(LZW), contact Unisys at LZW_INFO@unisys.com or
phone +1 215 986-3090.
It is your responsibility to find out if any of your GIF or TIFF images
do require licensing, and then follow the necessary steps in order to
obtain the licenses. Refer to the License Agreement section “Other
licenses needed” for more information about licensing.
ICDesigner fonts, backgrounds and sounds
The fonts, images, sound files and ICDesigner scripts on the CDROM are licensed by Scala for your use. Purchase and use of this software automatically gives you the right to redistribute any of this material with your own scripts.
TrueType fonts provided with ICDesigner
Although scripts using the TrueType fonts provided with ICDesigner
can be freely redistributed by the end user, the fonts themselves are not
licensed for redistribution or commercial use. Distributing a commercial product containing an InfoChannel Designer 3 script that uses
any of these fonts might require obtaining a license from the font
manufacturer, the same as for any other TrueType font.
The supplier of these fonts is Agfa® Monotype Corporation. You can
contact Agfa at:
Agfa Monotype Corp.
100 Challenger Road
Ridgefield Park, NJ 07660
Tel. +1-201-440-2500
Fax. +1-201-440-5733
Agfa’s Web site is http://www.agfa.com. Agfa fonts may be purchased
online at http://www.fonts.com.
264
Appendix B: Licensing issues
Media not provided by Scala
Media not provided by Scala
When you use fonts, images, sound files and other media that have
not been provided by Scala, but have been acquired in some other
way, it is the responsibility of you, the producer, to know and comply
with whatever licensing restrictions that the author of the media has
established.
TrueType font restrictions
TrueType fonts contain embedded information that is intended to
control how they may be installed on systems receiving the font with
documents.
There are three levels of control:
•
The font may have no restrictions, and may be freely installed on
another system
•
The font may be installable for “print and preview”, meaning that
it cannot be used except for the document with which it is distributed
•
The font may be restricted from any installation
In saving scripts, ICDesigner abides by this control information, and
will not include fonts in a saved or published script if there is no installation permitted. In the Select Font dialog in the Design Text menu,
the Not Embeddable button appears whenever you select a TrueType
font that contains restrictions on embedding in a document. Clicking
this button gives a fuller explanation of the embedding restriction.
ICDesigner never includes standard TrueType font files with a document; when fonts do allow some level of installation, ICDesigner
embeds and/or encrypts the font data.
However, the fact that ICDesigner may include font data with a saved
script does not confer distribution rights. As with other media, you are
always responsible for confirming the licensing requirements of any
fonts you include in a script.
265
Appendix B: Licensing issues
Using Scala trademarks
Getting information on TrueType fonts
At the time of this writing, Microsoft is making available a utility to
display information embedded in TrueType font files about its manufacturer and installation restrictions. The Font Properties Extension,
when installed on your system, provides several additional tabs in the
Properties sheet for the font. This utility should be available for download from the typography area of Microsoft’s Web site,
http://www.microsoft.com.
Using Scala trademarks
When using ICDesigner, you have the right to utilize the following
trademarks of Scala:
Scala® InfoChannel® Designer 3
There are, however, conditions and obligations attached to using Scala
trademarks.
Refer to the Scala Web site for information and file links regarding use
of Scala trademarks and logos in relation to your ICDesigner productions.
Understanding the license agreement
It is important that the end user license agreement at the beginning of
the “Basic Authoring” manual be read in full before you proceed with
distributing your ICDesigner production. A copy of the agreement is
included with the ICDesigner software.
Questions regarding the License Agreement can be addressed to Scala,
Inc., One East Uwchlan Ave. Suite 300, Exton, Pennsylvania 19341
USA, or contact your local Scala subsidiary office.
266
Appendix B: Licensing issues
Third party redistributable software
Third party redistributable software
To make the end user experience as seamless as possible, when publishing a script to CD-ROM you can include certain third-party software that ICDesigner scripts require, in case the intended playback
system does not already have it.
The AutoPlay setup utility checks for the presence of all required components, and notifies the user if any are missing on that system. The
setup utility can install DirectX 8.1 automatically if necessary, providing that its licensed distribution archive has been included on the CDROM.
If DirectX is necessary, it needs to be obtained separately. DirectX is
freely available from Microsoft and does not require a formal written
license agreement to distribute. However, you still need to agree to
Microsoft’s terms and conditions before you can redistribute its
DirectX archive on your CD-ROM.
ICDesigner does not include any third party software with scripts
published to Web Component, to File, or to Email.
Please see page 187 in chapter 6 of this manual for more information
on Microsoft components and where to acquire them.
267
Appendix C: The ScalaScript language
Unlike some multimedia authoring systems, Scala InfoChannel
Designer 3 allows you to produce scripts in a simple, graphical fashion. ICDesigner’s HumanTouch user interface presents multimedia
production options in a direct, visual way that does not require the
producer to have computer programming skills. However, whenever
you use ICDesigner to produce a script, you are in fact creating a type
of program. This program, in the form of statements in the ScalaScript
language, is what is stored on disk when you save a script.
This appendix is a brief introduction to ScalaScript, to help you decide
whether you should—or need not—know more about this side of
ICDesigner. Indeed, most ICDesigner users don’t need to know ScalaScript and may not even realize it is there. But for those with very specific goals, it can be useful, even vital. If you would like more detailed
information, an Adobe Acrobat file describing the fundamentals of
ScalaScript is provided in the Software Downloads section of the Scala
Web site at http://www.scala.com. Click on the “ScalaScript Descriptive Document” link to see it.
What is ScalaScript?
Strictly speaking, an InfoChannel Designer 3 script does not consist of
the images, sounds, and so on that appear when the script is run,
although we often refer to scripts this way. The script itself is actually a
a series of statements that describe the images, sounds, and other elements, along with specifications of how and when they appear, and
other aspects of the production. Each statement is a command in the
ScalaScript language, and in most cases corresponds directly to an element or option chosen through ICDesigner’s menus.
ICDesigner can save a script either in its normal way, which produces
a data file that may contain embedded clips or other data that was
pasted from another application, or as a text file consisting just of
ScalaScript commands by turning on the Save Script as Plain Text?
option. Even scripts that are saved with this option off, however, are
269
Appendix C: The ScalaScript language
What is ScalaScript?
!ScalaScript
EVENT
Sequence:
:"paint002.bmp"
EVENT
Group:
Picture("ScalaArt:\clipart\backgrounds\textures\paint002.bmp", Margin(10, 10, 0, 0),
Tabs(Explicit(80, 160, 240, 320, 400, 480, 560)), UserPalette(RGBPen(1, $0, $ffffff,
$999999, $555555, $712068, $df449c, $dc110e, $662200, $ff5a00, $ff9c00, $ffee00,
$8800, $dd00, $cccc, $66ff, $aa, $777777, $bbbbbb, $dddddd)));
Wait();
Sequence:
Text(62, 63, "This is some plain text on the first page.", Wrap(Off, Auto(549)));
Text(70, 181, "This is some styled text on the first page.", Face(On, Pen(6)),
Outline(On), Shadow(On), Font("SGaramond", 32), Italic(On), Wrap(Off, Auto(616)));
END
EVENT
Group:
Picture("ScalaArt:clipart\backgrounds\textures\natur002.bmp", Margin(10, 10, 0, 0),
Tabs(Explicit(80, 160, 240, 320, 400, 480, 560)), UserPalette(RGBPen(1, $0, $ffffff,
$54c5638, $555555, $712068, $df449c, $dc110e, $662200, $ff5a00, $ff9c00, $ffee00,
$8800, $dd00, $cccc, $66ff, $aa, $777777, $bbbbbb, $dddddd)));
Wait();
Sequence:
Clip(336, 21, "ScalaArt:\clipart\clips\people\baby2.bmp", Operation(On, Resize(178,
223)));
END
EVENT
Group:
Picture("ScalaArt:\backgrnd\textures\yello001.bmp", Margin(10, 10, 0, 0),
Tabs(Explicit(80, 160, 240, 320, 400, 480, 560)), UserPalette(RGBPen(1, $0, $ffffff,
$999999, $555555, $712068, $df449c, $dc110e, $662200, $ff5a00, $ff9c00, $ffee00,
$8800, $dd00, $cccc, $66ff, $aa, $777777, $bbbbbb, $dddddd)));
Wait();
END
END
270
Appendix C: The ScalaScript language
Why ScalaScript?
ultimately based in ScalaScript, and have the benefits of portability
and ease of distribution. Any normally-saved script can be viewed as
ScalaScript statements by re-saving with the option on.
You can see an example of what ScalaScript looks like by opening one
of the ICDesigner demo scripts (files with the .SCA extension), saving
it with the Save Script as Plain Text? option on, then loading it into a
word processor or text editor that can open plain ASCII text files.
Preceding is a simple ICDesigner script. See if you can figure out for
yourself what it will do!
As you see, ScalaScript commands are mostly English words, so that a
script file can be understood even by non-technical users. Many commands have additional parameters that specify, for example, the name
of a file or the length of a pause. Clicking buttons, loading files, moving objects, and changing values on the ICDesigner menus result in
commands with the corresponding parameters being written into the
ScalaScript file when you save the script. ICDesigner takes care of formulating the ScalaScript statements properly, so that you don’t have
to learn the details of the scripting language syntax.
Why ScalaScript?
What is the need for a human-readable format for ICDesigner scripts?
It might seem like an unnecessary intermediate state between HumanTouch authoring and the binary format of the script file that ICDesigner normally saves. There are several reasons a human-readable
form for scripts is valuable:
•
portability between different revisions and platforms
•
ease of distribution
•
editing and debugging
•
special circumstances
271
Appendix C: The ScalaScript language
Why ScalaScript?
Portability
A common problem with all types of software is ensuring compatibility of documents with future revisions of an application, and between
versions of the application on different platforms. Ideally, applications
and documents should keep users from having to think about these
things. Having a simple, standard, accessible file format like ScalaScript is a good way to minimize such difficulties.
Ease of distribution
The graphics and sound files used by multimedia productions are typically quite large. A ScalaScript file, however, does not have to contain
the graphics and sound files that appear in the script. Instead, it usually contains references to these files, which remain external to the
script file. This allows ScalaScript files themselves to be very compact.
And because they are plain ASCII text, they do not require any special
encoding/decoding steps for electronic transmission through standard
e-mail networks. Together, these two facts mean that it can be quick
and uncomplicated to transfer ScalaScript files from one place to
another electronically, or with low-capacity media such as floppy
disks.
Editing and debugging
Normally, you use ICDesigner’s HumanTouch GUI to create and edit
scripts. However, there are occasionally advantages to being able to see
and manipulate a script in its ScalaScript text format. There might be
situations in which editing is required, but ICDesigner is not available
to perform the editing with the HumanTouch GUI. In such a case,
someone knowledgeable in ScalaScript and in possession of a text editor can still edit a script saved as plain text.
Also, the process of understanding and debugging a more complex
script can often be easier when you can examine the underlying ScalaScript statements. People with programming backgrounds may simply
prefer this method of working.
In addition, there are some kinds of editing changes that can be more
conveniently made in a text-based format. Especially when a script is
272
Appendix C: The ScalaScript language
Using ScalaScript
long, making changes of a repetitive or pattern-based nature can be
accomplished much more quickly using a text search and replace function than by using menus.
Special circumstances
Although virtually all ICDesigner options and capabilities are available
through the HumanTouch GUI, there are certain situations in which
use of ScalaScript may be necessary. Some combinations of options or
effects might not be possible to specify using the ICDesigner menus.
Or there may be certain advanced features whose operation has not yet
been integrated into the current menu scheme. In such cases, those
who need to use these features can use ScalaScript to accomplish the
desired result. In fact, for this reason, many of the ICDesigner demo
scripts were created directly in ScalaScript.
Using ScalaScript
For the vast majority of ICDesigner producers and production tasks, a
script’s embodiment in the form of the ScalaScript language is completely automatic and transparent. Both producers and users can enjoy
the benefits of ICDesigner’s approach to multimedia without having
to know about ScalaScript.
For those who do make use of ScalaScript directly, in most cases it will
be for the purposes of occasional editing and special capabilities as
mentioned above. It is of course possible to create a script entirely
“manually” in ScalaScript, using it like any other computer programming language. However, this is neither intended nor necessary except
in special circumstances.
A hybrid approach using both menus and direct ScalaScript access is
perhaps ideal. You can use the menus for what they are best at: fast,
intuitive WYSIWYG design and layout of graphic and audio elements.
Then use ScalaScript for what it is best at: global editing, fine-tuning,
and advanced scripting techniques.
273
Appendix C: The ScalaScript language
Experimenting with ScalaScript
When should you use ScalaScript?
ICDesigner was designed with the overriding goal of offering a completely “point and click” approach to multimedia production, and it is
optimized for that approach. For this reason it should rarely be necessary for most people to use ScalaScript directly.
The time to think of ScalaScript is when there is an effect you need to
accomplish that appears to be within ICDesigner’s capabilities, but
which there seems to be no way to accomplish using the menus.
For example, ICDesigner does not currently provide a way to group
events in the List menu the way you can in the Main menu. However,
such grouping is possible through ScalaScript, and can be extremely
useful. The need to make extensive use of variables and complex
branching structures is also a classic case in which working directly in
ScalaScript can be the easier approach.
Even if you intend to create all your scripts using menus, ScalaScript
can prove useful. When a script you are producing using the menus
does not seem to be working right, and you do not understand why,
looking at the ScalaScript statements might help you discover the reason. You can then either edit the ScalaScript statements directly to fix
the problem, or return to the menus and use them to modify the script
based on your new understanding.
Experimenting with ScalaScript
The best way to get to know ScalaScript is to look at examples of it,
and to start editing and adding to the scripts. ICDesigner’s own demo
scripts are a logical starting point, especially because many of them use
ScalaScript-only techniques. Experimenting with them can be easy
and instructive.
Before you do any experimenting, however, be sure that you are not
working on the only copy of a script. Always save a copy of scripts you
want to play with under a name like TEST.SCA, and use that as your
subject. This will prevent you from inadvertently mangling good
scripts as you learn.
274
Appendix C: The ScalaScript language
Experimenting with ScalaScript
Here are some other guidelines for your exploration:
•
Don’t alter the existing punctuation
Unlike human languages, in computer languages every punctuation character is likely to be significant. Deleting a comma or a
semicolon can completely change the effect of a command or even
a series of commands. One thing you do not have to worry about
is “white space”: spaces, tabs, or carriage returns (produced by the
Enter key ↵). ICDesigner ignores white space, and inserts white
space in the script files only to make them more readable by
humans.
•
Add punctuation when necessary
If you want to add commands or parameters to commands, you
will need to use the right punctuation. If you use expressions, use
parentheses to make clear the order of operations. Be sure that for
a given command or expression, the number of open and closed
parentheses matches. In general, adding unnecessary punctuation,
especially parentheses, is less likely to cause problems than leaving
out necessary punctuation.
•
Don’t worry about capitalization
ScalaScript is not case-sensitive, so you do not have to capitalize
command and parameter names the way ICDesigner does, or capitalize anything at all. However, it does make the script more readable to capitalize consistently. ICDesigner will preserve any
capitalization you include in text strings, however: “This string
WILL stay capitalized just like this.”
•
Save ScalaScript scripts as plain text files
A script file is a simple text file, which you can edit with a text editor or any word processor that can load and save plain text files. A
file saved in a word processor’s own document format contains
formatting codes along with the text, and would not be recognized by ICDesigner as a script. Don’t forget to save the text file
with the file-type extension .SCA, so ICDesigner will see it as a
script.
275
Appendix C: The ScalaScript language
Experimenting with ScalaScript
Errors
When ICDesigner finds a command containing a mistake, it tries to
execute as much of it as possible, or to skip it and continue if the command is completely unintelligible. However, a particular error might
cause ICDesigner to get so confused that it cannot continue the script.
ICDesigner displays error information only when loading the script,
or after the script plays, never during the script.
Terminology
There are a few points of terminology about ScalaScript that should be
mentioned.
•
English keywords
Unlike ICDesigner’s menus, ScalaScript is strictly English-based,
so its commands—as with other programming languages—are
not translated for use in non–English-speaking countries. If you
are not familiar with English you may need to refer to a translating dictionary to match the translated terms in the menus with
the corresponding ScalaScript commands.
•
Events
“Events” are more broadly defined in ScalaScript than in the
menus. A ScalaScript event can correspond to an individual menu
event, like the appearance of a clip, but it can also refer to much
more. In ScalaScript, an event can be defined as any number of
other events, which can themselves be composed of other events,
in a hierarchical structure similar to a directory tree. The keywords EVENT and END define the boundaries of events that
consist of other events. ICDesigner uses indenting of command
lines to help show this structure.
•
Group
The “Group” keyword in ScalaScript is not related to the Group
option available for pages in the Main menu.
276
Appendix C: The ScalaScript language
Switching between menus and ScalaScript
Switching between menus and ScalaScript
It is perfectly all right to go back and forth, looking at a script in
the menus and then as ScalaScript commands. However, if you
actually will be editing the script in both modes, you should keep
two things in mind:
•
The menus cannot properly reflect advanced ScalaScript scripts
Not all events in scripts that use ScalaScript features inaccessible
through the menus will be visible when seen from the menus.
Some of the ICDesigner demo scripts, for example, are clearly
large and complex, but when seen from the menus, there appears
to be little there. This is a sign of a “hand-authored” script. Trying
to edit such a script using the menus is not likely to succeed.
•
Saving a script from within ICDesigner that you have written or
edited in ScalaScript form can change its formatting or even its contents
ICDesigner always formats a script in a certain way when it saves
it, including capitalizing keywords and indenting “nested” sections. If the script was created or edited as ScalaScript using a different formatting style—no indenting, for example—the script
will look different after it has been saved from the ICDesigner File
dialog than it did before. If the ScalaScript code was correct, the
formatting should be the only difference. Incorrect code, however,
may not remain after the script has been saved from the File dialog. In either case, the script should work the same.
277
Appendix D: Possible problems and errors
With any software as sophisticated as Scala InfoChannel Designer 3,
there will be times when the unexpected happens, or when ICDesigner will not do what you want. Following are some likely sources of
difficulty for ICDesigner users, both new and experienced, and suggestions on what you can do about them.
This appendix primarily covers possible problems in how you use
ICDesigner. General considerations and a wide variety of both general
and specific problems related to hardware, installation, and configuration are discussed in various areas of the Scala Web site:
http://www.scala.com/
Of particular interest to ICDesigner users is the location
http://www.scala.com/ic/config
Look there if you do not find answers to your questions here. You
should also be sure to read the ICDesigner Readme.txt file.
Problem:
I have sound events in my script, but I don’t hear anything
when the script runs.
Reasons and
possible solutions:
1. The sound card may not be properly connected to a working
audio system. Make sure all audio cables are plugged in, power
cables connected, and the amplifier or speakers are on and the
volume controls are not at zero.
2. A volume setting of zero (0) may have been set for the sound
source. In the initial Play panel for the source, check to see if the
volume was set to zero, or a subsequent Sample Volume, MIDI
Volume, or CD Volume event set the source volume to zero.
3. The Mixer settings may not be correct. Check the Volume settings in the Mixer panel of the Sound menu. Neither the volume setting for the sound source you are using (Sample, MIDI,
CD, Microphone or Line) nor the Master volume setting
should be at zero.
279
Appendix D: Possible problems and errors
Reasons and
possible solutions:
4. ICDesigner may not be able to find a sample file, MIDI file, or
CD track that it needs to play a sound. Ensure that all necessary
sample or MIDI files are present, in the locations specified in
the sound sources’ Play command panels. Insert a CD Read
Contents event to make sure that ICDesigner is looking in the
right table of contents for any CD tracks. Check that any other
external equipment, such CD-ROM drives, MIDI sound modules, microphones, etc. are connected, powered on, and have
access to the discs or other storage media required for sound
playback.
5. The sound card may not be installed and set up properly, or it
may not be compatible with ICDesigner. Check the instructions on sound card configuration and any troubleshooting
information in the sound card’s user guide.
I can’t paste items I placed in the Windows clipboard into
my ICDesigner production.
Reason and
possible solution:
280
Not all data types that you might be able to place on the Windows
clipboard in another application can be pasted into ICDesigner.
The only data types that ICDesigner currently accepts are bitmap
graphics and text. Attempting to paste data other than bitmap
images or text could have no effect, or might be only partially successful. Using the Paste as Clip? option in the Paste Special dialog
may work better. (It is possible to paste complete files cut or copied
from the Explorer; these are treated just like Added files.)
Appendix D: Possible problems and errors
Problem:
Wipe motion is not smooth.
Reasons and
possible solutions:
You are using wipes that require a large amount processing or graphics power. Rather than using a zoom, push, fly-on or alpha wipe, use
a reveal wipe. See chapter 12 of the “Basic Authoring” guide for more
on wipe smoothness.
In general, faster systems (using Pentium III or equivalent processors) with 128 megabytes or more of memory are much better able
to perform multimedia tasks smoothly. Using a high-performance
graphics card with 8 megabytes or more of video memory can also
dramatically improve speed and smoothness in wipes.
Also see the setup and troubleshooting sections of the Scala Web site
for information on video drivers and graphics card options.
Problem:
I type on the keyboard, but I don’t see characters appearing on the screen.
Reasons and
possible solutions:
1. The focus for input may be a menu control and not the page.
Click on the page.
2. There may not be a text cursor. Click on the background, or
double-click in an existing text element, then type.
3. The cursor may be outside the screen area. This could happen if
you dragged a long text element so that the cursor was offscreen, pressed Home or End while either end of a text element
was off screen, or while editing the element pressed Backspace
(⇐) enough times that you started deleting characters that were
off-screen. Select the element (using the arrow keys if necessary)
or the appropriate word wrap margin marker and drag the text
element so that the cursor is visible again, then type.
4. You may be in the Design Palette menu, which does not allow
typing on the background. Choose another Design menu, then
type.
281
Appendix D: Possible problems and errors
Problem:
I set a certain Duration for a page so that it would last as
long as a music track, but the next page doesn’t appear
until after the music is over.
Reason and
possible solution:
A Duration cannot make a page’s events take less time, or interrupt
its events; it can only add to the time taken by the page and all its
events (including wipes). Shorten the length of one or more of the
page’s events, or increase the speed of some wipes, so that the events
always complete before the music is over.
Problem:
I don’t see a column in the Main or Design List menus that
I expect.
Reasons and
possible solutions:
1. The EX that generates that column may be turned off. Go to
the ICDesigner Options dialog, and click that EX’s button in
the Optional EXes column of the EXes panel so that it is on (✓).
2. The EX that generates that column may not be installed. Once
the EX file has been installed, its column can appear.
3. The column may be too far to the right to be visible. Use the
horizontal scroll bar to scroll far enough to the right to reveal
the column. To keep that EX column always visible, you can
make one or more of the other columns narrower, or drag the
desired column to the left of others.
Problem:
My computer freezes when I try to use Add from Scanner/Camera.
Reason and
possible solution:
This is a problem with the TWAIN driver for your image device.
Scala software is designed to work with properly functioning
TWAIN drivers. Some drivers do not fully implement the TWAIN
specification, and cause the PC to lock up when ICDesigner tries to
access their devices through standard methods.
Consult the Web site for the manufacturer of your TWAIN device
to see if an updated, fully compliant TWAIN driver is available.
282
Appendix D: Possible problems and errors
Problem:
It takes a long time to set the same option for many pages
or events, entering and exiting the menus for each one.
Reason and
possible solution:
You are setting options for each page individually. If you want to
give many items the same setting, like a Pause in Seconds of 3, multiselect all the pages/events you want first, using Shift-click and/or
Ctrl-click, then open the Timing menu and set the pause—it will be
applied to all the items you selected. If you are already in the Timing
menu, you do not have to click Close for each item, then open the
menu again. Just click on a new item and set its pause.
Problem:
I can’t get accented characters in ICDesigner, or the characters I see on the screen don’t match the keys I am typing.
Reason and
possible solution:
You may not have the correct keyboard type selected for your system. In the Windows Control Panel folder, open the Keyboard
Properties sheet and switch to the Language tab. Select the name of
your country, or the country for which your keyboard was manufactured. You can test the layout you select in this dialog.
If your keyboard layout is one that does not feature accented characters, such as the one used in the United States and the Netherlands,
you can still type accented characters if you know their character
numbers (ANSI keycodes).
Refer to the character table in appendix C, and find the number for
the character you need. Then hold down the left Alt key and type
the character number with a leading zero, on the numeric keypad.
When you release the Alt key, the character appears. For example,
Alt + 0193 produces the accented capital “A” (Á). You can type any
character this way, regardless of the current Keyboard Layout selection.
283
Appendix D: Possible problems and errors
Errors
Errors
While working in the ICDesigner menus, or when loading scripts or
after playing them, you will sometimes see ICDesigner Error dialogs.
ICDesigner tries to tell you both what specifically went wrong (for
example, a file was not found, or ICDesigner ran out of memory) and
what ICDesigner was attempting to do when the error happened. If
there were multiple errors (for example, several necessary files were not
found when a script was played) the ICDesigner Error dialog provides
a Next button so you can step through the errors in sequence. For
multiple errors during a script load, you have the option Continue
Quietly, which suppresses any subsequent error messages. If the problem was related to a particular file, ICDesigner gives the file name,
usually as part of a full path.
Thus you should find the error messages self-explanatory. If you need
more information about why an error occurred, you can find helpful
material by consulting the Index and Glossary of this guide.
Startup error messages
There are some errors that can occur when ICDesigner tries to load,
and for some reason cannot finish loading. In most cases, an error that
you see before the main ICDesigner program starts indicates that
either the installation of the ICDesigner software was incomplete, or
that a required folder or some files were somehow deleted or renamed
after installation.
If you see error messages at startup, the safest and easiest thing to do is
to run the ICDesigner installation program again, so that you can be
sure all the necessary files have been installed in the right locations.
284
Index
A
Accented characters, typing 283
Actions for buttons 57
ActiveX
Needed for browser playback 154
Advanced features
Available through ScalaScript 273
Animation
Compression 214
MPEG 214
AnimGIF
Options in publishing as 178
Publishing as 179
Apply Preset 69
Arrow keys, using with buttons 82
Attachment, publishing script as e-mail 173
AutoPlay? option 164
Third party components needed 164
AVI
Choosing codecs for publishing 180
Publishing as 179
B
Backdrop, buttons 53, 65
And presets 69
Stretching from Shift option 67
Backgrounds
Changing under changing text 199
Backup log files 192
Billing EX 211
Bookmark
Returning to 60
With Go To 108
Boolean function 254
Border, effect on button backdrops 66
Boxed Hit Area? 67
Branch menu
Choosing loop type 100
Condition branches 97
Controlling script flow 98
Exiting sub-scripts 111
Expressions 88, 89
Functions 89
Go To 97, 105
Go To with bookmark 108
Go To, conditional 109
Operators 89
Repeat branches 97, 100
Show If Expression 99
Variables 88, 89
Branches, combining 98
Branching, advanced
Using ScalaScript 274
Branching, levels 95
285
Browser
Launched from button 61
Publishing script overview for 174
.BTN extension 77
Busy pointer image 83
Button states 54
Indicators 54
Buttons
Adding sound 63
Adjusting hit area 67
Button backdrops 65
Converting to normal element 53
Creating a Go To 106
Creating advanced 78
Creating simple 47
Editing 77
Exporting 77
Face and backdrop 53
Go To 58
Hotkeys 59
Invisible buttons 70
Leave Bookmark? 59
Loading clips 66
Mouse pointers, alternate 64
Predefined 69
Presets 69
Related options on Input menu 81
Select Action options 57
Setting variables 63
Shift? 66
Text as buttons 48
Types 52
Using keyboard to select 82
Using touch screen 82
Buttons menu - see Design Buttons menu
C
Case-sensitivity 250
CD audio, using 27–36
CD Eject 35
286
CD Next, Previous 36
CD Pan 36
CD Pause 36
CD Play 28
Time In 30
Time Out 32
Track In 29
Track Out 29
CD Play MSF 30
CD Read Contents 28, 36
CD Resume 36
CD sound, system variables 259
CD Stop 36
CD Sync 32
Relative to Track? 34
Sync Time 33
CD Volume 36
CD Wait? 36
CD-ROM drives, multi-unit 28
CD-ROM, publishing as stand-alone 162
Clipboard
And programs outside ICDesigner 280
Pasting data from other applications 280
Clipboard, copying schedule listing to 134
Clips as buttons 66
Codecs, DirectX AVI 180
Color depth
MPEG 218
Command: pop-up, Sound menu 14
Compression
Animation 214
Publishing to AVI 180
Condition branches 97
Conditional
Go To 109
Loops 104
Conditional function 255
Constants, defining 93
Content
Linked 161
Control panels, list 17
Copy to Linked Content Folder 160
Copyrights 266
Currency, formatting variables as 253
Current indicator, scheduled event 123
Cursor, missing or off-screen 281
D
Date information, getting into variables 256
Decimal point, displaying 253
Default schedule times 125
Delete button, Input menu 84
Demo scripts 274
Design Buttons menu 46–81
Boxed Hit Area? 67
Button states 54
Go To 58, 59
Hotkeys 59
Image button 66
Leave Bookmark? 59
Pointer button 64
Sound button 63
Variable button 63
Design List menu
Columns missing 282
DirectDraw, disabling for MPEG 218
DirectSound, disabling for MPEG 218
DirectX 8.1 187
Display Mode
MPEG EX 218
Optibase EX 221
Double Buffering, disabling for MPEG 219
Duration timing 282
E
E-mail, publishing as 172
Embedded variables
In log text 194
Text File EX 196–197
Emergency message page 199
Encrypting scripts 183
Enter key, using with buttons 82
Entries, schedule 122
Errors 276, 284
Event: pop-up 130, 131
Events
Defined in ScalaScript 276
Logging 194
Skipping with scheduling 115
.EXE file, for published script 162, 166
EXes
Additional 190
Billing 211
File I/O 230, 258
Launch 191
Log 192
MCI MPEG 214
Not installed 282
Optibase 220
Serial 200
Text File 195
Version variables 256
Windows Scripting 226
Exit from Script 111
Exiting script with button 61
Expired indicator, scheduled event 124
Expressions 88
Creating 89
Displaying values 94
Evaluation functions 254
Extension
Log file, changing 193
External variables 71
And sub-scripts 111
F
Fade In Time 19
Fade Out Time 22
Fade Time 23
File I/O EX 230, 258
287
File, publishing as 165
Font Properties Extension 266
Fonts
Including with published scripts 159
Licensing issues 159
FORMAT function 94
Format, video 179
Frame Rate, Publish as video 179
Frames Per Second, Publish as AnimGIF 182
Frames, CD audio 31
FTP upload
Web Component 158, 170
Functions 89, 250
Boolean 254
Conditional 255
Expression evaluation 254
File I/O 258
Numeric functions 251
String 251
System functions 255
Type conversion 255
G
Genlock, using 223
GIF files 263
Go To 97
Button example 48
Buttons 58
Buttons menu 58
Conditional 97
Reducing need for 110
Simple example 86
Using 105, 108
Go To: selector, Buttons menu 59
Granularity, multi-tile 238
Grouped pages
And Go To branches 98
Scheduling 129, 134
Use with sounds 21
With Text File EX 199
288
Grouping events 274
H
Hit area, buttons 67
Hotkeys 59
HTML Slides, publishing as 174
HTML Template Page option 171
HTML wrapper code for script 168
HumanTouch, limitations 273
I
IC.LOG file 192
Image: button 66
In/Out Times, scheduling daily 130
Include Fonts?
With published script 159
Include Wipes?
With published script 160
Infinite repeat, sound 18
InfoChannel Network 155
InfoChannel Player 155
Input events
Removing 84
Scope 84
Input menu 81–84
Busy Pointer Image button 83
Button Controls 81
Pointer Image: button 83
Slideshow controls 84
Internet service provider 169
Interrupt scheduling
Events 119
Invisible buttons 70
iplay
Installed by stand-alone CD 162
ISP, using 169
J
JScript scripts, running from ICDesigner 226
K
Keyboard
Language, setting 283
Solving problems 281
Using to select buttons 82
L
Launch EX 191
Leave Bookmark? 98
Buttons 59
Leave Bookmark? button 107
Level selector
Buttons menu 58
Go To 107
Licensing issues
Art 265
Fonts 159
GIF and TIFF 263
Scala trademarks 266
Scripts and images 263
TrueType fonts 265
Line volume control 38
Link Positions? 68
Link Sizes? 68
Linked content
Publishing scripts with 161
Use with TextFile EX 199
Linked Content folder
Publishing to 160
Locked script, appearance 184
Locking scripts 183
Log EX 192
Log file, Billing EX 213
Log files 192
Retrieving 193
Log menu 194
LOG.Days variable 193
LOG.PlayerTag variable 193
Logical expression 254
Logical values 250
Looping
Scripts, by default 114
Loops
Branching example 101
Choosing branch type 100
Exiting 105
With Go To 108
Infinite 103
Loops option, sampled sound 18
M
Main menu, columns missing 282
Main Script, InfoChannel Player 114
MAPI 172
MCI MPEG EX 214
MCI, and MPEG 218
Memory
Improving script smoothness 281
System variable 257
Microphone volume control 38
MIDI
Description 11
Using 24–27
MIDI files 24
MIDI Pause 26
MIDI Play 24
MIDI Resume 26
Minimized applications, launching 191
Mixer 12, 37–41
Pan 41
Volume 38
Mixer sliders, enabling and disabling 38
Mixer, system variables 259
Mouse buttons
Slideshow controls 84
Mouse? option 82
MPEG
Animation 214
MCI MPEG menu 215
MPG files 214
289
MPEG EX 214
Multi-tile Editor 234
Multi-tile illustrations 241
N
Nested loops 105
Network Manager 155
New CD! 28
Next: indicator, scheduled event 123
NTSC video
Options with Videoplex card 221
Numeric functions 251
O
ON/OFF 250
Operators 89, 260
Optibase EX 220
Menu 224
Options
MPEG 217
Options dialog
Working with EXes 190
Options, setting multiple 283
P
Page Preview, ScalaPrint 142
Pages
Grouping, use with sounds 21
Scheduling different types 116
Templates for Text File EX 196
PAL 221
Pan
Master 12, 41
Sampled sound 19
Password protection 183
Paste as Clip 280
Pause settings
Priority of Wait? 20, 22
290
Periodic scheduling 117
Possible problems 135
Platform independent publish medium 175
Playback
Third party components required 187
Player software 155
Player, InfoChannel 114
Players
Diagnosing problems with log files 192
Pointer
Busy image 83
Changing
Defaults 83
Design 82
For buttons 64
Pointer: selector 82
Possible problems 279
Columns 282
Keyboard 281
No accented characters 283
Pasting 280
Setting multiple options 283
Sound 279
Timing 282
Wipes 281
Predefined buttons 51, 69
Print icon 142
Printer Properties, choosing in
ScalaPrint 150
Printing scripts 140
Problems, diagnosing with log files 192
Project Name:, published script 162, 166
Protecting published scripts 183
Publication, completing 183
Publish button 156
Publish folder
Deleting contents 185
Publish Location, InfoChannel Network 157
Publish media
E-mail 156
File 156
HTML Slides 156
Stand-alone CD 156
Video 156
Web Component 155
Publish Script menu 156–186
Publish to Folder: 163, 166
Publishing
A script 183
As a file 165
As a Web component 168
As CD-ROM 162
As e-mail 172
As HTML slides 174
As single file 164, 167
As video 177
Determining location 163, 166
Linked content 161
Media supported 154
Steps after Publish menu 186
To the InfoChannel Network 157
Versus saving 155
Publishing scripts 154
Push buttons 52
R
Radio buttons 53, 72
README file
For published script 163, 167
Refresh rate
MPEG 218
Relative to Track? 34
Repeat branches 97
Repeat Until loop, example 104
Repeat While, Repeat Until 100
Repeat?
Schedule interval 131
Resolution
MPEG 218
Return to Bookmark 108
Reducing need for 110
Using with buttons 59
Return value 250
RS-232 devices, controlling with Serial
EX 200
S
Sample Pan 23
Sample rate 10
Sample Stop 22
Sample Volume 23
Sample Wait 21
Sampled sound, using 17–24
Save in Editable Form 269
Saving scripts
Instead of publishing 155
ScalaEX.txt file 258, 269
ScalaPrint 140
General panel options 143
Labeling panel options 147
Layout panel options 144
Margins panel options 149
Menu 142
Printer panel options 149
ScalaScript 269
Definition and use of 269
.SCB extension 160, 162, 166
_Scbfiles folder 160
Schedule column 120
Schedule menu 120–137
Schedules, pointless 123
Scheduling 114
As filter 118
Avoiding problems 135
Daily time controls 130
Entries 122
Grouped pages 129
Groups and sub-scripts 134
Interrupt 131
291
Interrupt events 119
Periodic 117
Possible problems 135
Relation to timing 120
Removing entries 122
Repeating an interrupt event 131
Start and end dates 124
Types 117
Verifying with log files 194
Weekly 128
Script advancement 84
Keyboard 84
Mouse 84
Script flow, with branches 98
Script Information box 157
Script language - see ScalaScript
Script, publishing 183
Script.txt file 231
Scripts
Editing using ScalaScript 272
Events skipped by scheduling 115
Logging events 194
Looping by default 114
Select state, button 56
Serial EX 200
Shift? option, Buttons menu 66
Show If Expression 97, 99
Simple MAPI (SMAPI) 172
Slides, HTML script overview 174
Slideshow Controls panel 84
Sound
Adding to several pages or events in a
row 43
Audio CDs 27
CD Eject 35
CD Next, Previous 36
CD Play event 28
CD Play MSF event 30
CD Read Contents 36
CD Sync 32
New CD! 28
292
Other CD events 36
CD audio
multiple CD drives 28
Combining and adjusting 12
Controlling different types 15
Defining several sound events 42
Looping 18
MIDI files 24
Mixer 37–41
Options 13
Pan 19
Sample Pan 23
Sample Play 17
Sample Stop 22
Sample Volume 23
Sample Wait? 21
Solving potential problems 279
Sources 10–12
Audio CDs 12
MIDI files 11
Samples 10
System function 258
System variables 258
Volume control 19
Wait? 20, 23
With buttons 63
Sound button 15
Sound files not found 280
Sound menu 14
Sound samples
16-bit to 8-bit conversion 13
Start/End dates, scheduling 124
Startup Image
For published scripts 163
String functions 251
Strings 250
Strings, converting to numbers 255
Sub-scripts
Exiting 111
Publishing as linked content 160
Scheduling 134
Using 110
Sync Time 33
Synchronization, MPEG audio and
video 223
System functions 255
System variables - see Variables
Type conversion functions 255
Type: pop-up 52
T
Variables 88, 257
Auto-update 94
Constants 93
Creating 89
Example 91
Deleting 93
Displaying values 94
Embedded in log text 194
Formatting 94
Sharing with Windows scripts 228
System
Toggle and radio buttons 70
Using 93
With interactive buttons 63
VBScript scripts, running from
ICDesigner 226
Versions, system variables 256
Video Format 179
Video, publishing as 177
Videoplex MPEG card, using 220
Viewing schedules 133
Volume control
Sound 12, 19, 38
Volume, set to zero 279
Technical support 7
Template Page option 171
Templates, Text File EX 196
Text Entry fields 73–77
Text File EX 195
Creating files for use with 195
Turning page on and off with text file 199
Third-party components required,
including 187
TIFF files 263
Time information
Getting into variables 256
Time variable, displaying 94
Time variables 257
Timing
Relation to scheduling 120
Solving problems 282
Toggle buttons 52, 71
Touch Screen? option 82
Trademarks, Scala 266
Transitions, button state 62
Troubleshooting 272
TRUE/FALSE 250
TrueType fonts
Licensing issues 265
Provided with InfoChannel 264
Publishing and distribution
restrictions 159
U
Uploading to Web server 157, 169
URL
Triggering with button 61
Web component script 169
V
293
W
Wait? 20, 23
MPEG animations 216, 225
Priority over Pause 20, 22
Sampled sounds 20
Wait? button and Wait event, distinction 21
Web authoring, including published
script 168
Web browser, starting from within script 191
Web component, publishing as 168
Web page
Setting up 169
Viewing from script 61
Web site, Scala 7, 190, 279
Week numbers, scheduling by 126
Weekly scheduling 128
Windows Scripting EX 226
Windows Scripting Host, languages
supported 226
WinScript column 227
Wipes
Including with published scripts 160
Solving smoothness problems 281
Word wrap, with Text File EX 198
X
XML scripts, running from ICDesigner 226
294