Faxing

Rosemary supports full page faxing of telecards and notecards. A new card class, StandardPaperSizeCard, has been added to support this feature. The user can specify whether a card should be faxed as a full page fax by checking the "reformat only the text to an 8 1/2 x 11" page in the faxing options window.

Added several methods to class Viewable to facilitate full page faxing. StandardPaperSizeObject returns an object that is already formatted to standard paper size. The default implementation returns nilObject. Viewable subclasses that can format to a full page should override this method. StandardPaperSizeVersion() returns the viewable's full size object with the viewable's text filled into the larger object's fields. Viewable subclasses need to override this method to do the appropriate thing. CanFormatToStandardPaper() returns true if the viewable's standard paper size object is not nilObject.

Rosemary allows you to edit the fax cover page. Tapping the new comments button in the fax options window allows the user to enter comments or delivery instructions for the fax. A new class, TextAnnotation, was created to handle the cover page comments. Added the attribute PrintJob_HasCoverPageComments so you can determine whether or not a particular print job has comments on the cover page. Created the class CoverPage that contains a field for the comments.

The abstract class FaxReceiveServer defines the interface for fax receive packages.

Faxing now renders the pixel data into a locked buffer instead of into the extra data of an object. This is because objects can't be locked in the new runtime. Created a new subclass of Pixels, NonRelocatablePixels, that stores pixels in a transient buffer.

The Rosemary Magic Cap API tries to avoid having multiple operations have the same name but different interfaces. Since Magic Cap doesn't do polymorphism, this is just plain confusing. Many operations have been removed or renamed to avoid this problem. Rename the Position() attribute to PagePosition() so that it doesn't conflict with other Position() interfaces.

Classes affected by these changes

Card
ContentProxy
CoverPage new
FaxOptionsWindow new
FaxServer
FaxWindow
ListCard
Modem
NonRelocatablePixels new
PrintJob
StandardPaperSizeCard new
Telecard
TextAnnotation new
TextField
ViewableTextContainer new

Filing

To speed up filing, the operation Object_CopyDeletableNear has been added. This makes the result of a copy operation deletable in one pass. This is quite a bit faster than calling CopyNear() followed by SetCanDeleteDeep(), since each of those calls has to go through the copy engine's deep reference collecting mechanism. Refer to the runtime section for more information about this call.

The performance of filing the original of entire stacks has also been improved.

Class FileWindow has been renamed FilingWindow.

Rosemary uses a new way to file into a folder in the main folder tray. A new operation, FolderTray_MakeReceiverWithCRCForCard, creates an instance of class FilingReceiverWithCRC which can be placed in a receiver list to specify a particular folder in a particular tray. To install a card into a particular folder, you should install into one of these objects instead of iMainFolderTray.

Made the filing window always reveal the default filing destination.

Classes affected by these changes

CanBeFiled new
Card
FileWindow obsolete
FilingChoice new
FilingWindow new
FolderTray
ObjectList
StackOfCards
SuggestionFilingList new
Task
TaskList

Flash memory

Magic Cap 1.0 had an incomplete implementation of support for flash memory PC cards. The classes for this unfinished feature have been removed from Rosemary.

Removed [Set]WritingEnabled(), MemoryMappedRead() and MemoryMappedWrite() methods of storage containers.

Classes affected by these changes

FlashMemoryServer obsolete
SonyFlashServer obsolete

Fonts

To support Japanese devices, new classes have been added which can support bitmap fonts with more than 32K of pixel data, can arrange glyphs (characters) by encodings other than Unicode, and can take advantage of fonts whose glyphs all have the same height and width. LargeBitmapFont is parallel to BitmapFont, but supports these new features. Class GlyphNumberTable provides an interface and default implementation to a glyph number table that may be overridden for a different encoding. BitmapGlyphData provides an abstract API for the operation DrawGlyphs(), which can be implemented based on different table layouts.

The class CompositeFont allows the combination of character ranges of two or more component fonts. For example, this allows the creation of a new font that combines a font with only Japanese characters with a font that contains Latin characters.

Added attributes for Font_ascent, Font_descent and Font_height so accessors don't have to reach into the fields of Font instances directly.

Fixed a lot of areas that were modifying memory when something was locked. Among these, replaced the operation DrawGlyphAt(), which has a locked pointer as part of the interface, with BlitGlyphs(), which takes an object instead.

Composite fonts use integer lists instead of buffers to read RangeEntry elements. The extra data of these fonts have been moved into integer lists as well.

Classes affected by these changes

BitmapFont
BitmapGlyphData new
CompositeFont new
Font
FontDescription
GlyphNumberTable new
LargeBitmapFont new